mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 00:18:43 +01:00
Allow BossAI::_DespawnAtEvade to work on creatures other than the boss itself (optional argument).
This commit is contained in:
@@ -547,7 +547,7 @@ void BossAI::UpdateAI(uint32 diff)
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
void BossAI::_DespawnAtEvade(uint32 delayToRespawn)
|
||||
void BossAI::_DespawnAtEvade(uint32 delayToRespawn, Creature* who)
|
||||
{
|
||||
if (delayToRespawn < 2)
|
||||
{
|
||||
@@ -555,18 +555,28 @@ void BossAI::_DespawnAtEvade(uint32 delayToRespawn)
|
||||
delayToRespawn = 2;
|
||||
}
|
||||
|
||||
uint32 corpseDelay = me->GetCorpseDelay();
|
||||
uint32 respawnDelay = me->GetRespawnDelay();
|
||||
if (!who)
|
||||
who = me;
|
||||
|
||||
me->SetCorpseDelay(1);
|
||||
me->SetRespawnDelay(delayToRespawn - 1);
|
||||
if (TempSummon* whoSummon = who->ToTempSummon())
|
||||
{
|
||||
TC_LOG_WARN("scripts", "_DespawnAtEvade called on a temporary summon.");
|
||||
whoSummon->UnSummon();
|
||||
return;
|
||||
}
|
||||
|
||||
me->DespawnOrUnsummon();
|
||||
uint32 corpseDelay = who->GetCorpseDelay();
|
||||
uint32 respawnDelay = who->GetRespawnDelay();
|
||||
|
||||
me->SetCorpseDelay(corpseDelay);
|
||||
me->SetRespawnDelay(respawnDelay);
|
||||
who->SetCorpseDelay(1);
|
||||
who->SetRespawnDelay(delayToRespawn - 1);
|
||||
|
||||
if (instance)
|
||||
who->DespawnOrUnsummon();
|
||||
|
||||
who->SetCorpseDelay(corpseDelay);
|
||||
who->SetRespawnDelay(respawnDelay);
|
||||
|
||||
if (instance && who == me)
|
||||
instance->SetBossState(_bossId, FAIL);
|
||||
}
|
||||
|
||||
|
||||
@@ -367,7 +367,7 @@ class TC_GAME_API BossAI : public ScriptedAI
|
||||
void _EnterCombat();
|
||||
void _JustDied();
|
||||
void _JustReachedHome() { me->setActive(false); }
|
||||
void _DespawnAtEvade(uint32 delayToRespawn = 30);
|
||||
void _DespawnAtEvade(uint32 delayToRespawn = 30, Creature* who = nullptr);
|
||||
|
||||
void TeleportCheaters();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user