Changeset 136 for trunk/src/game/StatSystem.cpp
- Timestamp:
- 11/19/08 13:39:20 (17 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/game/StatSystem.cpp
r102 r136 667 667 UpdateMaxHealth(); 668 668 UpdateAttackPowerAndDamage(); 669 UpdateAttackPowerAndDamage(true); 669 670 670 671 for(int i = POWER_MANA; i < MAX_POWERS; ++i) … … 710 711 void Creature::UpdateAttackPowerAndDamage(bool ranged) 711 712 { 713 //automatically update weapon damage after attack power modification 712 714 if(ranged) 713 return; 714 715 //automatically update weapon damage after attack power modification 716 UpdateDamagePhysical(BASE_ATTACK); 715 UpdateDamagePhysical(RANGED_ATTACK); 716 else 717 { 718 UpdateDamagePhysical(BASE_ATTACK); 719 UpdateDamagePhysical(OFF_ATTACK); 720 } 717 721 } 718 722 719 723 void Creature::UpdateDamagePhysical(WeaponAttackType attType) 720 724 { 721 if(attType > BASE_ATTACK) 722 return; 723 724 UnitMods unitMod = UNIT_MOD_DAMAGE_MAINHAND; 725 726 float att_speed = float(GetAttackTime(BASE_ATTACK))/1000.0f; 725 UnitMods unitMod; 726 switch(attType) 727 { 728 case BASE_ATTACK: 729 default: 730 unitMod = UNIT_MOD_DAMAGE_MAINHAND; 731 break; 732 case OFF_ATTACK: 733 unitMod = UNIT_MOD_DAMAGE_OFFHAND; 734 break; 735 case RANGED_ATTACK: 736 unitMod = UNIT_MOD_DAMAGE_RANGED; 737 break; 738 } 739 740 float att_speed = float(GetAttackTime(attType))/1000.0f; 727 741 728 742 float base_value = GetModifierValue(unitMod, BASE_VALUE) + GetTotalAttackPowerValue(attType)/ 14.0f * att_speed; … … 731 745 float total_pct = GetModifierValue(unitMod, TOTAL_PCT); 732 746 733 float weapon_mindamage = GetWeaponDamageRange( BASE_ATTACK, MINDAMAGE);734 float weapon_maxdamage = GetWeaponDamageRange( BASE_ATTACK, MAXDAMAGE);747 float weapon_mindamage = GetWeaponDamageRange(attType, MINDAMAGE); 748 float weapon_maxdamage = GetWeaponDamageRange(attType, MAXDAMAGE); 735 749 736 750 float mindamage = ((base_value + weapon_mindamage) * base_pct + total_value) * total_pct ; 737 751 float maxdamage = ((base_value + weapon_maxdamage) * base_pct + total_value) * total_pct ; 738 752 739 SetStatFloatValue(UNIT_FIELD_MINDAMAGE, mindamage); 740 SetStatFloatValue(UNIT_FIELD_MAXDAMAGE, maxdamage); 753 switch(attType) 754 { 755 case BASE_ATTACK: 756 default: 757 SetStatFloatValue(UNIT_FIELD_MINDAMAGE,mindamage); 758 SetStatFloatValue(UNIT_FIELD_MAXDAMAGE,maxdamage); 759 break; 760 case OFF_ATTACK: 761 SetStatFloatValue(UNIT_FIELD_MINOFFHANDDAMAGE,mindamage); 762 SetStatFloatValue(UNIT_FIELD_MAXOFFHANDDAMAGE,maxdamage); 763 break; 764 case RANGED_ATTACK: 765 SetStatFloatValue(UNIT_FIELD_MINRANGEDDAMAGE,mindamage); 766 SetStatFloatValue(UNIT_FIELD_MAXRANGEDDAMAGE,maxdamage); 767 break; 768 } 741 769 } 742 770