aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2012-12-31 21:14:54 +0100
committerShauren <shauren.trinity@gmail.com>2012-12-31 21:14:54 +0100
commitfefee58de7d8c72ba6b34d7f84ee2d626dad59ce (patch)
treed407b75bcbe4de844c4d4f4e71f6ff292cd670e4
parent4082a411acd05cfa027bad8c794cb9d307842900 (diff)
Core/Scripts: Added ai method to temporarily despawn a boss when it enters evade mode (respawns after 30 seconds)
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedCreature.cpp14
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedCreature.h1
2 files changed, 15 insertions, 0 deletions
diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp
index ac74cacf2c5..c1ea712e4e6 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp
+++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp
@@ -585,6 +585,20 @@ void BossAI::UpdateAI(uint32 const diff)
DoMeleeAttackIfReady();
}
+void BossAI::_DespawnAtEvade()
+{
+ uint32 corpseDelay = me->GetCorpseDelay();
+ uint32 respawnDelay = me->GetRespawnDelay();
+
+ me->SetCorpseDelay(1);
+ me->SetRespawnDelay(29);
+
+ me->DespawnOrUnsummon();
+
+ me->SetCorpseDelay(corpseDelay);
+ me->SetRespawnDelay(respawnDelay);
+}
+
// WorldBossAI - for non-instanced bosses
WorldBossAI::WorldBossAI(Creature* creature) :
diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.h b/src/server/game/AI/ScriptedAI/ScriptedCreature.h
index 2a221d04404..52bfc24f578 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedCreature.h
+++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.h
@@ -308,6 +308,7 @@ class BossAI : public ScriptedAI
void _EnterCombat();
void _JustDied();
void _JustReachedHome() { me->setActive(false); }
+ void _DespawnAtEvade();
bool CheckInRoom()
{