diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2018-02-14 02:23:55 +0100 |
|---|---|---|
| committer | Treeston <treeston.mmoc@gmail.com> | 2018-02-14 02:24:13 +0100 |
| commit | 264d4e1d30debcf6feacee3d29982875672a7bbe (patch) | |
| tree | 3ad8ceb5821a5778770685ca17e01eca3be703f3 /src/server/game/AI | |
| parent | 826b3cf09e1638c27f6d47bef35cc041f4a17381 (diff) | |
Entities/GO: Add forceRespawnTimer support to DespawnOrUnsummon. Use it in SAI.
Diffstat (limited to 'src/server/game/AI')
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 18 | ||||
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 1 |
2 files changed, 8 insertions, 11 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index b3e7c9d5e5c..2bef3d3ef7b 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1032,22 +1032,18 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u case SMART_ACTION_FORCE_DESPAWN: { // there should be at least a world update tick before despawn, to avoid breaking linked actions - int32 const respawnDelay = std::max<int32>(e.action.forceDespawn.delay, 1); + Milliseconds despawnDelay(e.action.forceDespawn.delay); + if (despawnDelay <= 0ms) + despawnDelay = 1ms; + + Seconds forceRespawnTimer(e.action.forceDespawn.forceRespawnTimer); for (WorldObject* target : targets) { if (Creature* creature = target->ToCreature()) - { - if (SmartAI* smartAI = CAST_AI(SmartAI, creature->AI())) - { - smartAI->SetDespawnTime(respawnDelay); - smartAI->StartDespawn(); - } - else - creature->DespawnOrUnsummon(respawnDelay); - } + creature->DespawnOrUnsummon(despawnDelay, forceRespawnTimer); else if (GameObject* goTarget = target->ToGameObject()) - goTarget->DespawnOrUnsummon(Milliseconds(respawnDelay)); + goTarget->DespawnOrUnsummon(despawnDelay, forceRespawnTimer); } break; } diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 15ca8f11f7f..2eeeece124c 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -776,6 +776,7 @@ struct SmartAction struct { uint32 delay; + uint32 forceRespawnTimer; } forceDespawn; struct |
