[Cleanup] Make use of std::abs where possible. (#2739)

# Notes
- Resolves https://github.com/EQEmu/Server/issues/338
This commit is contained in:
Alex King
2023-01-15 17:02:13 -05:00
committed by GitHub
parent eed45e5250
commit 00658632de
3 changed files with 33 additions and 29 deletions
+23 -19
View File
@@ -285,33 +285,37 @@ int64 Mob::GetActDoTDamage(uint16 spell_id, int64 value, Mob* target, bool from_
int64 Mob::GetExtraSpellAmt(uint16 spell_id, int64 extra_spell_amt, int64 base_spell_dmg)
{
if (RuleB(Spells, FlatItemExtraSpellAmt)) {
if (RuleB(Spells, ItemExtraSpellAmtCalcAsPercent))
return abs(base_spell_dmg)*extra_spell_amt/100;
else
if (RuleB(Spells, ItemExtraSpellAmtCalcAsPercent)) {
return std::abs(base_spell_dmg) * extra_spell_amt / 100;
} else {
return extra_spell_amt;
}
}
int total_cast_time = 0;
if (spells[spell_id].recast_time >= spells[spell_id].recovery_time)
total_cast_time = spells[spell_id].recast_time + spells[spell_id].cast_time;
else
if (spells[spell_id].recast_time >= spells[spell_id].recovery_time) {
total_cast_time = spells[spell_id].recast_time + spells[spell_id].cast_time;
} else {
total_cast_time = spells[spell_id].recovery_time + spells[spell_id].cast_time;
if (total_cast_time > 0 && total_cast_time <= 2500)
extra_spell_amt = extra_spell_amt*25/100;
else if (total_cast_time > 2500 && total_cast_time < 7000)
extra_spell_amt = extra_spell_amt*(167*((total_cast_time - 1000)/1000)) / 1000;
else
extra_spell_amt = extra_spell_amt * total_cast_time / 7000;
//Confirmed with parsing 10/9/21 ~Kayen
if (extra_spell_amt * 2 > abs(base_spell_dmg)) {
extra_spell_amt = abs(base_spell_dmg) / 2;
}
if (RuleB(Spells, ItemExtraSpellAmtCalcAsPercent))
return abs(base_spell_dmg)*extra_spell_amt/100;
if (total_cast_time > 0 && total_cast_time <= 2500) {
extra_spell_amt = extra_spell_amt * 25 / 100;
} else if (total_cast_time > 2500 && total_cast_time < 7000) {
extra_spell_amt = extra_spell_amt * (167 * ((total_cast_time - 1000) / 1000)) / 1000;
} else {
extra_spell_amt = extra_spell_amt * total_cast_time / 7000;
}
//Confirmed with parsing 10/9/21 ~Kayen
if (extra_spell_amt * 2 > std::abs(base_spell_dmg)) {
extra_spell_amt = std::abs(base_spell_dmg) / 2;
}
if (RuleB(Spells, ItemExtraSpellAmtCalcAsPercent)) {
return std::abs(base_spell_dmg) * extra_spell_amt / 100;
}
return extra_spell_amt;
}