aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.cpp3
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.h5
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp4
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.h1
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