looks like happens because in line basepoints[0] = GetAttackTime(BASE_ATTACK) * int32(ap*0.022f + 0.044f * holy) / 1000; - GetAttackTime is uint32 and if holy is negative it may not like * after
.maybe this should fix it :
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 98a55c2..f028171 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -6282,8 +6282,9 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
{
triggered_spell_id = 25742;
float ap = GetTotalAttackPowerValue(BASE_ATTACK);
- int32 holy = SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_HOLY) +
- pVictim->SpellBaseDamageBonusTaken(SPELL_SCHOOL_MASK_HOLY);
+ int32 holy = SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_HOLY);
+ if (holy < 0)
+ holy = 0;
basepoints[0] = GetAttackTime(BASE_ATTACK) * int32(ap*0.022f + 0.044f * holy) / 1000;
break;
}
@@ -9307,7 +9308,7 @@ uint32 Unit::SpellDamageBonusTaken(Unit *pCaster, SpellEntry const *spellProto,
TakenTotal+= int32(TakenAdvertisedBenefit * (CastingTime / 3500.0f) * DotFactor * LvlPenalty);
}
- float tmpDamage = (pdamage + TakenTotal * int32(stack)) * TakenTotalMod;
+ float tmpDamage = (int32(pdamage) + TakenTotal * int32(stack)) * TakenTotalMod;
return tmpDamage > 0 ? uint32(tmpDamage) : 0;
SpellBaseDamageBonusTaken shouldnt be called because it's auras are used anyway in MeleeDamageBonusTaken