Browse Source

【需求】MMO-22439:山海残卷权重改成属性

meijun 3 years ago
parent
commit
c3cb7c54d3

BIN
Library/Debug/UnityEngine.dll


+ 27 - 3
XmdsCommon/Plugin/XmdsProperties.cs

@@ -1612,6 +1612,10 @@ namespace XmdsCommon.Plugin
 		public int monsterDef;				// 猎妖防
 		public int monsterDef;				// 猎妖防
 		public int monsterAtkPer;           // 猎妖攻百分比
 		public int monsterAtkPer;           // 猎妖攻百分比
 		public int monsterDefPer;			// 猎妖防百分比
 		public int monsterDefPer;			// 猎妖防百分比
+
+        //内部属性, CardWeight
+        public int[] cardWeight = new int[(int)CardType.Max+1];
+
 		public int MaxMonsterAttack { get { return CUtils.CastInt(monsterAtk * (1 + monsterAtkPer * 0.0001f)); } }
 		public int MaxMonsterAttack { get { return CUtils.CastInt(monsterAtk * (1 + monsterAtkPer * 0.0001f)); } }
 		public int MaxMonsterDef { get { return CUtils.CastInt(monsterDef * (1 + monsterDefPer * 0.0001f)); } }
 		public int MaxMonsterDef { get { return CUtils.CastInt(monsterDef * (1 + monsterDefPer * 0.0001f)); } }
 
 
@@ -1719,6 +1723,11 @@ namespace XmdsCommon.Plugin
 			ret.monsterAtkPer = this.monsterAtkPer;
 			ret.monsterAtkPer = this.monsterAtkPer;
 			ret.monsterDefPer = this.monsterDefPer;
 			ret.monsterDefPer = this.monsterDefPer;
 
 
+            for(int i = 0; i < cardWeight.Length; i++)
+            {
+                ret.cardWeight[i] = this.cardWeight[i];
+            }
+
 			return ret;
 			return ret;
         }
         }
 
 
@@ -1804,7 +1813,12 @@ namespace XmdsCommon.Plugin
 			this.monsterDef += prop.monsterDef;
 			this.monsterDef += prop.monsterDef;
 			this.monsterAtkPer += prop.monsterAtkPer;
 			this.monsterAtkPer += prop.monsterAtkPer;
 			this.monsterDefPer += prop.monsterDefPer;
 			this.monsterDefPer += prop.monsterDefPer;
-		}
+
+            for (int i = 0; i < cardWeight.Length; i++)
+            {
+                this.cardWeight[i] += prop.cardWeight[i];
+            }
+        }
 
 
         public void WriteExternal(IOutputStream output)
         public void WriteExternal(IOutputStream output)
         {
         {
@@ -1879,7 +1893,12 @@ namespace XmdsCommon.Plugin
 			output.PutS32(this.monsterDef);
 			output.PutS32(this.monsterDef);
 			output.PutS32(this.monsterAtkPer);
 			output.PutS32(this.monsterAtkPer);
 			output.PutS32(this.monsterDefPer);
 			output.PutS32(this.monsterDefPer);
-		}
+
+            //for (int i = 0; i < cardWeight.Length; i++)
+            //{
+            //    output.PutS32(this.cardWeight[i]);
+            //}
+        }
 
 
         public void ReadExternal(IInputStream input)
         public void ReadExternal(IInputStream input)
         {
         {
@@ -1954,7 +1973,12 @@ namespace XmdsCommon.Plugin
 			this.monsterDef = input.GetS32();
 			this.monsterDef = input.GetS32();
 			this.monsterAtkPer = input.GetS32();
 			this.monsterAtkPer = input.GetS32();
 			this.monsterDefPer = input.GetS32();
 			this.monsterDefPer = input.GetS32();
-		}
+
+            //for (int i = 0; i < cardWeight.Length; i++)
+            //{
+            //    this.cardWeight[i] = input.GetS32();
+            //}
+        }
 	}
 	}
 
 
     #endregion
     #endregion

+ 3 - 0
XmdsCommonServer/Plugin/Base/JSGXmdsComInterface.cs

@@ -22,6 +22,9 @@ namespace XmdsCommon.JSGModule.Interface
 		void OnHitDamage(XmdsVirtual attacker, AttackSource source, int damage, DamageType damageType);                 // 收到攻击
 		void OnHitDamage(XmdsVirtual attacker, AttackSource source, int damage, DamageType damageType);                 // 收到攻击
 		void Dispose();
 		void Dispose();
 
 
+		/** 重载卡牌权重信息 */
+		void ReloadCardSkillWeight();
+
 		//技能数据变更
 		//技能数据变更
 		void OnSkillDataChange(GameSkill info);
 		void OnSkillDataChange(GameSkill info);
 		void OnInitOver(GameSkill gs, IJSGCardSkill cardSkill);
 		void OnInitOver(GameSkill gs, IJSGCardSkill cardSkill);

+ 2 - 0
XmdsCommonServer/Plugin/CardSkill/Base/JSGCardModuleBase.cs

@@ -71,6 +71,8 @@ namespace XmdsCommonServer.Plugin.CardSkill
 		public virtual void OnInitOver(GameSkill info, IJSGCardSkill cardSkill) { }
 		public virtual void OnInitOver(GameSkill info, IJSGCardSkill cardSkill) { }
 		public virtual void TriggerSkillLoadStrength(CardSkillData skillData, int sameNums) { }
 		public virtual void TriggerSkillLoadStrength(CardSkillData skillData, int sameNums) { }
 
 
+		public virtual void ReloadCardSkillWeight() { }
+
 		public void Dispose()
 		public void Dispose()
 		{
 		{
 			this.mClearCardTime = CommonLang.CUtils.localTimeMS + XmdsConfig.Instance.CARD_OUTBATTLE_VALID_TIME;
 			this.mClearCardTime = CommonLang.CUtils.localTimeMS + XmdsConfig.Instance.CARD_OUTBATTLE_VALID_TIME;

+ 2 - 0
XmdsCommonServer/Plugin/CardSkill/Def/JSGOtherCardModule.cs

@@ -32,6 +32,8 @@ namespace XmdsCommonSkill.Plugin.CardSkill
 			//throw new NotImplementedException();
 			//throw new NotImplementedException();
 		}
 		}
 
 
+		public void ReloadCardSkillWeight() { }
+
 		NextCardStrengthenInfo IJSCardSkillModule.AddNextStrengthInfo(CardType type, CardStrengthenType strenghType, int value1, int value2, int validTime, int validTimes, byte needSames, DamageType dmgType, CardLayerRule layerRules)
 		NextCardStrengthenInfo IJSCardSkillModule.AddNextStrengthInfo(CardType type, CardStrengthenType strenghType, int value1, int value2, int validTime, int validTimes, byte needSames, DamageType dmgType, CardLayerRule layerRules)
 		{
 		{
 			return null;
 			return null;

+ 14 - 1
XmdsCommonServer/Plugin/CardSkill/PlayerCardSkill/JSGCardInterface.cs

@@ -203,7 +203,7 @@ namespace XmdsCommonSkill.Plugin.CardSkill
 		public CardType type;
 		public CardType type;
 		public int skillId;
 		public int skillId;
 		public short skilLv;
 		public short skilLv;
-		public int weight;
+		private int weight;
 		public DamageType dmgType = DamageType.None;			//技能是否有伤害
 		public DamageType dmgType = DamageType.None;			//技能是否有伤害
 
 
 		public CardSkillData(int skillId, CardType type)
 		public CardSkillData(int skillId, CardType type)
@@ -211,6 +211,19 @@ namespace XmdsCommonSkill.Plugin.CardSkill
 			this.skillId = skillId;
 			this.skillId = skillId;
 			this.type = type;
 			this.type = type;
 		}
 		}
+
+		public void setWeight(XmdsVirtual unit)
+        {
+			if(this.type < CardType.Max)
+            {
+				this.weight = unit.MirrorProp.cardWeight[(int)this.type];
+            }
+        }
+
+		public int GetWeight()
+        {
+			return this.weight;
+        }
 	}
 	}
 
 
 	//触发卡牌技能延时数据
 	//触发卡牌技能延时数据

+ 8 - 2
XmdsCommonServer/Plugin/CardSkill/PlayerCardSkill/JSGCardRateModule.cs

@@ -128,7 +128,7 @@ namespace CommonAI.ZoneServer.JSGModule
 		{
 		{
 			if (data.isPrecent)
 			if (data.isPrecent)
 			{
 			{
-				return CUtils.CastInt(data.value * XmdsUnitProp.PER * playerCardSkill[(int)cardType].weight);
+				return CUtils.CastInt(data.value * XmdsUnitProp.PER * playerCardSkill[(int)cardType].GetWeight());
 			}
 			}
 
 
 			return data.value;
 			return data.value;
@@ -153,7 +153,7 @@ namespace CommonAI.ZoneServer.JSGModule
 		{
 		{
 			for (int i = 0; i <= (int)CardType.Max; i++)
 			for (int i = 0; i <= (int)CardType.Max; i++)
 			{
 			{
-				this.cardWeight[i] = cardSkill[i].weight;
+				this.cardWeight[i] = cardSkill[i].GetWeight();
 				this.weightFlag[i] = false;
 				this.weightFlag[i] = false;
 				this.doubleRate[i] = 0;
 				this.doubleRate[i] = 0;
 			}
 			}
@@ -200,6 +200,12 @@ namespace CommonAI.ZoneServer.JSGModule
 				totalWeight += this.cardWeight[i];
 				totalWeight += this.cardWeight[i];
 			}
 			}
 
 
+			if(totalWeight <= 0)
+            {
+				log.Warn("概率出问题了!");
+				return new GenCardData((CardType)(GlobalData.gRandom.Next() % ((int)CardType.Max)), 1);
+			}
+
 			int randValue = GlobalData.gRandom.Next() % totalWeight;
 			int randValue = GlobalData.gRandom.Next() % totalWeight;
 			for (int i = 0; i < (int)CardType.Max; i++)
 			for (int i = 0; i < (int)CardType.Max; i++)
 			{
 			{

+ 35 - 16
XmdsCommonServer/Plugin/CardSkill/PlayerCardSkill/JSGPlayerCardModule.cs

@@ -63,9 +63,7 @@ namespace XmdsCommonSkill.Plugin.CardSkill
 				log.Error("XmdsPlayerCardSkill init 四象系统技能数量错误 : " + owner.mUnit.Parent.GetSceneID() + ", " + owner.mUnit.PlayerUUID + ", " + prop.ServerData.CardSkills.UnitSkills.Count);
 				log.Error("XmdsPlayerCardSkill init 四象系统技能数量错误 : " + owner.mUnit.Parent.GetSceneID() + ", " + owner.mUnit.PlayerUUID + ", " + prop.ServerData.CardSkills.UnitSkills.Count);
 				return false;
 				return false;
 			}
 			}
-
+			
-			int totalWeight = 0;
-			String extInfo = "";
 			for (int i = 0; i <= (int)CardType.Max; i++)
 			for (int i = 0; i <= (int)CardType.Max; i++)
 			{
 			{
 				GameSkill gs = prop.ServerData.CardSkills.UnitSkills[i];
 				GameSkill gs = prop.ServerData.CardSkills.UnitSkills[i];
@@ -73,16 +71,12 @@ namespace XmdsCommonSkill.Plugin.CardSkill
 				if(!this.InitSkillData(mPlayerCardSkill[i], gs))
 				if(!this.InitSkillData(mPlayerCardSkill[i], gs))
 				{
 				{
 					return false;
 					return false;
-				}
+				}				
-
-				totalWeight += gs.TalentSkillLevel1;
-				extInfo = extInfo + ", " + gs.TalentSkillLevel1;
 			}
 			}
 
 
-			String uniqueInfo = owner.mUnit.IsPlayer ? owner.mUnit.PlayerUUID : (owner.mUnit.Parent.GetSceneID() + "_" + owner.mInfo.ID);
+			this.ReloadCardSkillWeight();
-			log.Info("初始化卡牌:" + uniqueInfo + ", 总权重:" + totalWeight + ", " + extInfo);
-			this.mIsFuncOpen = totalWeight > 0;
 			this.ReSet(true, notifyClient);
 			this.ReSet(true, notifyClient);
+			String uniqueInfo = mOwner.mUnit.IsPlayer ? mOwner.mUnit.PlayerUUID : (mOwner.mUnit.Parent.GetSceneID() + "_" + mOwner.mInfo.ID);
 			mCardRateModule.initUniqueInfo(uniqueInfo);
 			mCardRateModule.initUniqueInfo(uniqueInfo);
 			return true;
 			return true;
 		}
 		}
@@ -121,7 +115,11 @@ namespace XmdsCommonSkill.Plugin.CardSkill
 			}
 			}
 
 
 			cardSkillData.skilLv = (short)gs.SkillLevel;
 			cardSkillData.skilLv = (short)gs.SkillLevel;
-			cardSkillData.weight = gs.TalentSkillLevel1;
+			//if(cardSkillData.type < CardType.Max)
+			//{
+			//	cardSkillData.setWeight(this.mOwner);
+			//}
+			
 			return true;
 			return true;
 		}
 		}
 
 
@@ -227,12 +225,33 @@ namespace XmdsCommonSkill.Plugin.CardSkill
 				if(data != null && data.skillId == info.SkillID)
 				if(data != null && data.skillId == info.SkillID)
 				{
 				{
 					data.skilLv = (short)info.SkillLevel;
 					data.skilLv = (short)info.SkillLevel;
-					data.weight = info.TalentSkillLevel1;
 					break;
 					break;
 				}
 				}
 			}
 			}
 		}
 		}
 
 
+		public override void ReloadCardSkillWeight()
+        {
+			int totalWeight = 0;
+			String extInfo = "";
+			for (int i = 0; i < (int)CardType.Max; i++)
+			{
+				CardSkillData data = mPlayerCardSkill[i];
+				if (data != null)
+				{
+					totalWeight += this.mOwner.MirrorProp.cardWeight[i];
+					data.setWeight(this.mOwner);
+
+					extInfo = extInfo + ", " + this.mOwner.MirrorProp.cardWeight[i];
+				}
+			}
+
+			String uniqueInfo = mOwner.mUnit.IsPlayer ? mOwner.mUnit.PlayerUUID : (mOwner.mUnit.Parent.GetSceneID() + "_" + mOwner.mInfo.ID);
+			log.Info("卡牌权重信息:" + uniqueInfo + ", 总权重:" + totalWeight + ", " + extInfo);
+			this.mIsFuncOpen = totalWeight > 0;
+		}
+
+
 		public override void OnInitOver(GameSkill info, IJSGCardSkill cardSkill)
 		public override void OnInitOver(GameSkill info, IJSGCardSkill cardSkill)
 		{
 		{
 			for (int i = 0; i < mPlayerCardSkill.Length; i++)
 			for (int i = 0; i < mPlayerCardSkill.Length; i++)
@@ -241,10 +260,10 @@ namespace XmdsCommonSkill.Plugin.CardSkill
 				if (data != null && data.skillId/100000 == info.SkillID/100000)
 				if (data != null && data.skillId/100000 == info.SkillID/100000)
 				{					
 				{					
 					this.InitSkillData(mPlayerCardSkill[i], info, cardSkill);
 					this.InitSkillData(mPlayerCardSkill[i], info, cardSkill);
-					if(info.TalentSkillLevel1 > 0 && !this.mIsFuncOpen)
+					//if(info.TalentSkillLevel1 > 0 && !this.mIsFuncOpen)
-					{
+					//{
-						this.mIsFuncOpen = true;
+					//	this.mIsFuncOpen = true;
-					}
+					//}
 					break;
 					break;
 				}
 				}
 			}
 			}

+ 1 - 0
XmdsCommonServer/Plugin/XmdsVirtual/XmdsVirtual.Message.cs

@@ -88,6 +88,7 @@ namespace XmdsCommonServer.Plugin
                 InitBaseData(mProp.ServerData.Prop);
                 InitBaseData(mProp.ServerData.Prop);
                 //刷新属性.
                 //刷新属性.
                 UnitPropRefresh(MirrorProp);
                 UnitPropRefresh(MirrorProp);
+                this.mCardModule.ReloadCardSkillWeight();
                 SyncBattlePropsFields(PlayerBattlePropChangeEventB2C.MASK_ALL);
                 SyncBattlePropsFields(PlayerBattlePropChangeEventB2C.MASK_ALL);
             }
             }
             else
             else

+ 7 - 1
XmdsServerCS/XmdsServerEdgeJS/XmdsPlayerUtil.cs

@@ -360,7 +360,13 @@ namespace XmdsServerEdgeJS
 				prop.monsterAtkPer = (input.MonsterAtkPer != null) ? (int)input.MonsterAtkPer : 0;
 				prop.monsterAtkPer = (input.MonsterAtkPer != null) ? (int)input.MonsterAtkPer : 0;
 				prop.monsterDefPer = (input.MonsterDefPer != null) ? (int)input.MonsterDefPer : 0;
 				prop.monsterDefPer = (input.MonsterDefPer != null) ? (int)input.MonsterDefPer : 0;
 
 
-				return prop;
+                //卡牌权重属性
+                prop.cardWeight[(int)CardType.QingLong] = input.SHCQingLong != null ? (int)input.SHCQingLong : 0;
+                prop.cardWeight[(int)CardType.ZhuQue] = input.SHCZhuQue != null ? (int)input.SHCZhuQue : 0;
+                prop.cardWeight[(int)CardType.BaiHu] = input.SHCBaiHu != null ? (int)input.SHCBaiHu : 0;
+                prop.cardWeight[(int)CardType.XuanWu] = input.SHCXuanWu != null ? (int)input.SHCXuanWu : 0;
+
+                return prop;
             }
             }
             catch (Exception err)
             catch (Exception err)
             {
             {