diff options
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartAI.cpp | 3 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartAI.h | 5 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 4 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 1 |
4 files changed, 9 insertions, 4 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index 6bf18bea890..bc9b214d2a9 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -95,7 +95,7 @@ void SmartAI::UpdateDespawn(const uint32 diff) mDespawnState++; } else - me->DespawnOrUnsummon(); + me->DespawnOrUnsummon(0, Seconds(mRespawnTime)); } else mDespawnTime -= diff; } @@ -532,6 +532,7 @@ bool SmartAI::AssistPlayerInCombatAgainst(Unit* who) void SmartAI::JustRespawned() { mDespawnTime = 0; + mRespawnTime = 0; mDespawnState = 0; mEscortState = SMART_ESCORT_NONE; me->SetVisible(true); diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h index 3ebcf719fbb..2c3fdd89040 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.h +++ b/src/server/game/AI/SmartScripts/SmartAI.h @@ -185,11 +185,13 @@ class TC_GAME_API SmartAI : public CreatureAI uint32 mEscortQuestID; - void SetDespawnTime (uint32 t) + void SetDespawnTime (uint32 t, uint32 r = 0) { mDespawnTime = t; + mRespawnTime = r; mDespawnState = t ? 1 : 0; } + void StartDespawn() { mDespawnState = 2; } void OnSpellClick(Unit* clicker, bool& result) override; @@ -226,6 +228,7 @@ class TC_GAME_API SmartAI : public CreatureAI bool AssistPlayerInCombatAgainst(Unit* who); uint32 mDespawnTime; + uint32 mRespawnTime; uint32 mDespawnState; void UpdateDespawn(const uint32 diff); uint32 mEscortInvokerCheckTimer; diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 6b160a45d30..9bfa1e2aa64 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1237,11 +1237,11 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u { if (target->IsAlive() && IsSmart(target)) { - ENSURE_AI(SmartAI, target->AI())->SetDespawnTime(e.action.forceDespawn.delay + 1); // Next tick + ENSURE_AI(SmartAI, target->AI())->SetDespawnTime(e.action.forceDespawn.delay + 1, e.action.forceDespawn.respawn); // Next tick ENSURE_AI(SmartAI, target->AI())->StartDespawn(); } else - target->DespawnOrUnsummon(e.action.forceDespawn.delay); + target->DespawnOrUnsummon(e.action.forceDespawn.delay, Seconds(e.action.forceDespawn.respawn)); } else if (GameObject* goTarget = (*itr)->ToGameObject()) goTarget->SetRespawnTime(e.action.forceDespawn.delay + 1); diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 171e7e4643a..c09216ef7b2 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -777,6 +777,7 @@ struct SmartAction struct { uint32 delay; + uint32 respawn; } forceDespawn; struct |