diff options
-rw-r--r-- | src/game/SpellEffects.cpp | 22 | ||||
-rw-r--r-- | src/game/Unit.cpp | 4 |
2 files changed, 16 insertions, 10 deletions
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index af7d2ee8a98..2ee6c7032b3 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -4042,18 +4042,24 @@ void Spell::EffectTaunt(uint32 /*i*/) { // this effect use before aura Taunt apply for prevent taunt already attacking target // for spell as marked "non effective at already attacking target" - if(unitTarget && unitTarget->GetTypeId() != TYPEID_PLAYER) + if(!unitTarget || !unitTarget->CanHaveThreatList() + || unitTarget->getVictim() == m_caster) { - if(unitTarget->getVictim()==m_caster) - { - SendCastResult(SPELL_FAILED_DONT_REPORT); - return; - } + SendCastResult(SPELL_FAILED_DONT_REPORT); + return; } // Also use this effect to set the taunter's threat to the taunted creature's highest value - if(unitTarget->CanHaveThreatList() && unitTarget->getThreatManager().getCurrentVictim()) - unitTarget->getThreatManager().addThreat(m_caster,unitTarget->getThreatManager().getCurrentVictim()->getThreat()); + if(unitTarget->getThreatManager().getCurrentVictim()) + { + float myThreat = unitTarget->getThreatManager().getThreat(m_caster); + float itsThreat = unitTarget->getThreatManager().getCurrentVictim()->getThreat(); + if(itsThreat > myThreat) + unitTarget->getThreatManager().addThreat(m_caster, itsThreat - myThreat); + } + + if(((Creature*)unitTarget)->IsAIEnabled) + ((Creature*)unitTarget)->AI()->AttackStart(m_caster); } void Spell::EffectWeaponDmg(uint32 i) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 468859726e1..218ccf1437c 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -10120,7 +10120,7 @@ void Unit::TauntApply(Unit* taunter) if (((Creature*)this)->IsAIEnabled) ((Creature*)this)->AI()->AttackStart(taunter); - m_ThreatManager.tauntApply(taunter); + //m_ThreatManager.tauntApply(taunter); } //====================================================================== @@ -10146,7 +10146,7 @@ void Unit::TauntFadeOut(Unit *taunter) return; } - m_ThreatManager.tauntFadeOut(taunter); + //m_ThreatManager.tauntFadeOut(taunter); target = m_ThreatManager.getHostilTarget(); if (target && target != taunter) |