|  | @@ -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();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |