aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/SpellEffects.cpp22
-rw-r--r--src/game/Unit.cpp4
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)