|
|
@@ -25,7 +25,7 @@ public class CombatHeroInfo
|
|
|
public EncryptionLong hp = new EncryptionLong();
|
|
|
public EncryptionLong defense = new EncryptionLong();
|
|
|
public EncryptionLong attack = new EncryptionLong();
|
|
|
-
|
|
|
+ protected Map<HeroAttributeType, float> attributeValue = new Map<HeroAttributeType, float>();
|
|
|
|
|
|
// public long
|
|
|
public EncryptionFloat attSpeed
|
|
|
@@ -171,10 +171,12 @@ public class CombatHeroInfo
|
|
|
/// 最后伤害减少
|
|
|
/// </summary>
|
|
|
public float finallyHarmReduce;
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 最终伤害增加 buff伤害除外
|
|
|
/// </summary>
|
|
|
public float finallyHarmAdd;
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 1=英雄 2=小怪 3=精英怪 4=boss
|
|
|
/// </summary>
|
|
|
@@ -204,7 +206,6 @@ public class CombatHeroInfo
|
|
|
/// </summary>
|
|
|
public int TaoismSkillId;
|
|
|
|
|
|
-
|
|
|
|
|
|
public float GetAttSpeed
|
|
|
{
|
|
|
@@ -395,17 +396,25 @@ public class CombatHeroInfo
|
|
|
switch (VARIABLE.Key)
|
|
|
{
|
|
|
case 1:
|
|
|
- hp += VARIABLE.Value;
|
|
|
+ ComputeHeroAttributeType((int)HeroAttributeType.HP, VARIABLE.Value);
|
|
|
+ // hp += VARIABLE.Value;
|
|
|
break;
|
|
|
case 2:
|
|
|
- defense += VARIABLE.Value;
|
|
|
+ ComputeHeroAttributeType((int)HeroAttributeType.DEF, VARIABLE.Value);
|
|
|
+ // defense += VARIABLE.Value;
|
|
|
break;
|
|
|
case 3:
|
|
|
- attack += VARIABLE.Value;
|
|
|
+ ComputeHeroAttributeType((int)HeroAttributeType.ATT, VARIABLE.Value);
|
|
|
+ // attack += VARIABLE.Value;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if (isMonster)
|
|
|
+ {
|
|
|
+ AddAttributeValue();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -431,12 +440,9 @@ public class CombatHeroInfo
|
|
|
protected void CalAttribute()
|
|
|
{
|
|
|
CalBasicAttribute();
|
|
|
-
|
|
|
-
|
|
|
// skillId = modelConfig.skillID;
|
|
|
modelName = modelConfig.model;
|
|
|
isGpu = modelConfig.isUseGpu;
|
|
|
-
|
|
|
heroType = modelConfig.heroType;
|
|
|
}
|
|
|
|
|
|
@@ -476,4 +482,82 @@ public class CombatHeroInfo
|
|
|
CombatHeroInfo combatHeroInfo = (CombatHeroInfo)MemberwiseClone();
|
|
|
return combatHeroInfo;
|
|
|
}
|
|
|
+
|
|
|
+ protected void ComputeHeroAttributeType(int shuxingID, float value)
|
|
|
+ {
|
|
|
+ HeroAttributeType heroAttributeType = (HeroAttributeType)shuxingID;
|
|
|
+ if (attributeValue.TryGetValue(heroAttributeType, out float oldValue))
|
|
|
+ {
|
|
|
+ attributeValue[heroAttributeType] = oldValue + value;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ attributeValue.Add(heroAttributeType, value);
|
|
|
+ }
|
|
|
+
|
|
|
+ // attributeValue.Add((HeroAttributeType)shuxingID,);
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void AddAttributeValue()
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ for (attributeValue.Begin(); attributeValue.Next();)
|
|
|
+ {
|
|
|
+ HeroAttributeType heroAttributeType = attributeValue.Key;
|
|
|
+ float value = attributeValue.Value;
|
|
|
+ switch (heroAttributeType)
|
|
|
+ {
|
|
|
+ case HeroAttributeType.HP:
|
|
|
+ hp.Value += (int)value;
|
|
|
+ break;
|
|
|
+ case HeroAttributeType.ATT:
|
|
|
+ attack.Value += (int)value;
|
|
|
+ break;
|
|
|
+ case HeroAttributeType.DEF:
|
|
|
+ defense.Value += (int)value;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case HeroAttributeType.Gold:
|
|
|
+ Metal += value;
|
|
|
+ break;
|
|
|
+ case HeroAttributeType.Wood:
|
|
|
+ Wood += value;
|
|
|
+ break;
|
|
|
+ case HeroAttributeType.Fire:
|
|
|
+ Fire += value;
|
|
|
+ break;
|
|
|
+ case HeroAttributeType.Water:
|
|
|
+ Water += value;
|
|
|
+ break;
|
|
|
+ case HeroAttributeType.Earth:
|
|
|
+ Earth += value;
|
|
|
+ break;
|
|
|
+ case HeroAttributeType.Shields:
|
|
|
+ Shield.Value += (int)value;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (attributeValue.Begin(); attributeValue.Next();)
|
|
|
+ {
|
|
|
+ HeroAttributeType heroAttributeType = attributeValue.Key;
|
|
|
+ float value = attributeValue.Value;
|
|
|
+ switch (heroAttributeType)
|
|
|
+ {
|
|
|
+ case HeroAttributeType.HP_BL:
|
|
|
+ hp.Value += (long)(hp.Value * (value / 100f));
|
|
|
+ break;
|
|
|
+ case HeroAttributeType.ATT_BL:
|
|
|
+ attack.Value += (long)(attack.Value * (value / 100f));
|
|
|
+ break;
|
|
|
+ case HeroAttributeType.DEF_BL:
|
|
|
+ defense.Value += (long)(defense.Value * (value / 100f));
|
|
|
+ break;
|
|
|
+ case HeroAttributeType.ShengShi_BL:
|
|
|
+ shenshi.Value += (long)(shenshi.Value * (value / 100f));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ attributeValue.Clear();
|
|
|
+ }
|
|
|
}
|