aboutsummaryrefslogtreecommitdiff
path: root/src/game/Creature.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Creature.cpp')
-rw-r--r--src/game/Creature.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp
index 29ed9983cd2..4b6e8186801 100644
--- a/src/game/Creature.cpp
+++ b/src/game/Creature.cpp
@@ -1107,15 +1107,24 @@ void Creature::SelectLevel(const CreatureInfo *cinfo)
//damage
float damagemod = 1.0f;//_GetDamageMod(rank);
+ float mindmg = stats->GenerateMinDmg(cinfo);
+ float maxdmg = stats->GenerateMaxDmg(cinfo);
+ float attackpower = stats->GenerateAttackPower(cinfo);
- SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, cinfo->mindmg * damagemod);
- SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, cinfo->maxdmg * damagemod);
+ SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, mindmg * damagemod);
+ SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, maxdmg * damagemod);
- SetFloatValue(UNIT_FIELD_MINRANGEDDAMAGE,cinfo->minrangedmg * damagemod);
- SetFloatValue(UNIT_FIELD_MAXRANGEDDAMAGE,cinfo->maxrangedmg * damagemod);
+ SetModifierValue(UNIT_MOD_ATTACK_POWER, BASE_VALUE, attackpower * damagemod);
- SetModifierValue(UNIT_MOD_ATTACK_POWER, BASE_VALUE, cinfo->attackpower * damagemod);
+ // ranged damage
+ float minrangeddmg = stats->GenerateRangedDmg(cinfo) / 2.5f;
+ float maxrangeddmg = stats->GenerateRangedDmg(cinfo) - mindmg;
+ float rangedattackpower = (minrangeddmg + maxrangeddmg) / 2 * 0.3;
+ SetFloatValue(UNIT_FIELD_MINRANGEDDAMAGE, minrangeddmg * damagemod);
+ SetFloatValue(UNIT_FIELD_MAXRANGEDDAMAGE, maxrangeddmg * damagemod);
+
+ SetModifierValue(UNIT_MOD_ATTACK_POWER_RANGED, BASE_VALUE, rangedattackpower * damagemod);
}
float Creature::_GetHealthMod(int32 Rank)