diff options
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 | 
