diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2018-02-14 02:23:55 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-06-20 22:10:08 +0200 |
| commit | 168be492f5924d306a90e7f8dfd86a6c547da3d7 (patch) | |
| tree | a7b44f58a5debcc2ff3cea489db836af7dcd72dd /src/server/game/AI/SmartScripts | |
| parent | 19ed9c971f3a016ac4760149610a86724e04f1f6 (diff) | |
Entities/GO: Add forceRespawnTimer support to DespawnOrUnsummon. Use it in SAI.
(cherry picked from commit 264d4e1d30debcf6feacee3d29982875672a7bbe)
Diffstat (limited to 'src/server/game/AI/SmartScripts')
| -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 | 18 | ||||
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 2 |
4 files changed, 10 insertions, 18 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index 364013eaea3..c617fc6b315 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -518,7 +518,6 @@ void SmartAI::InitializeAI() GetScript()->OnInitialize(me); mDespawnTime = 0; - mRespawnTime = 0; mDespawnState = 0; _escortState = SMART_ESCORT_NONE; @@ -962,7 +961,7 @@ void SmartAI::UpdateDespawn(uint32 diff) mDespawnState++; } else - me->DespawnOrUnsummon(0, Seconds(mRespawnTime)); + me->DespawnOrUnsummon(); } else mDespawnTime -= diff; diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h index 54266d065cd..4871c0ff0ce 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.h +++ b/src/server/game/AI/SmartScripts/SmartAI.h @@ -178,13 +178,11 @@ class TC_GAME_API SmartAI : public CreatureAI void QuestReward(Player* player, Quest const* quest, LootItemType type, uint32 opt) override; void OnGameEvent(bool start, uint16 eventId) override; - void SetDespawnTime (uint32 t, uint32 r = 0) + void SetDespawnTime (uint32 t) { mDespawnTime = t; - mRespawnTime = r; mDespawnState = t ? 1 : 0; } - void StartDespawn() { mDespawnState = 2; } void OnSpellClick(Unit* clicker, bool& result) override; @@ -233,7 +231,6 @@ class TC_GAME_API SmartAI : public CreatureAI uint32 mInvincibilityHpLevel; uint32 mDespawnTime; - uint32 mRespawnTime; uint32 mDespawnState; // Vehicle conditions diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 976491c65be..87de7423f74 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1043,22 +1043,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 a5166ea0463..424e1c92f2f 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -810,7 +810,7 @@ struct SmartAction struct { uint32 delay; - uint32 respawn; + uint32 forceRespawnTimer; } forceDespawn; struct |
