Entities/GO: Add forceRespawnTimer support to DespawnOrUnsummon. Use it in SAI.

This commit is contained in:
Treeston
2018-02-14 02:23:55 +01:00
parent 826b3cf09e
commit 264d4e1d30
4 changed files with 19 additions and 17 deletions

View File

@@ -411,7 +411,7 @@ void GameObject::Update(uint32 diff)
if (m_despawnDelay > diff)
m_despawnDelay -= diff;
else
DespawnOrUnsummon();
DespawnOrUnsummon(0ms, m_despawnRespawnTime);
}
switch (m_lootState)
@@ -826,17 +826,21 @@ void GameObject::AddUniqueUse(Player* player)
m_unique_users.insert(player->GetGUID());
}
void GameObject::DespawnOrUnsummon(Milliseconds const& delay)
void GameObject::DespawnOrUnsummon(Milliseconds const& delay, Seconds const& forceRespawnTime)
{
if (delay > Milliseconds::zero())
if (delay > 0ms)
{
if (!m_despawnDelay || m_despawnDelay > delay.count())
{
m_despawnDelay = delay.count();
m_despawnRespawnTime = forceRespawnTime;
}
}
else
{
if (m_goData && m_respawnDelayTime)
SaveRespawnTime(m_respawnDelayTime);
uint32 const respawnDelay = (forceRespawnTime > 0s) ? forceRespawnTime.count() : m_respawnDelayTime;
if (m_goData && respawnDelay)
SaveRespawnTime(respawnDelay);
Delete();
}
}