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/SmartScripts | |
| parent | 826b3cf09e1638c27f6d47bef35cc041f4a17381 (diff) | |
Entities/GO: Add forceRespawnTimer support to DespawnOrUnsummon. Use it in SAI.
Diffstat (limited to 'src/server/game/AI/SmartScripts')
| -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 | 
