[9120] Implement option to use delay in ForcedDespawn for creature

Signed-off-by: NoFantasy <nofantasy@nf.no>
This commit is contained in:
NoFantasy 2010-01-07 20:18:22 +01:00
parent a2e92cdb4e
commit 9c48e32bb7
3 changed files with 30 additions and 4 deletions

View file

@ -105,6 +105,12 @@ bool AssistDelayEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/)
return true; return true;
} }
bool ForcedDespawnDelayEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/)
{
m_owner.ForcedDespawn();
return true;
}
Creature::Creature() : Creature::Creature() :
Unit(), i_AI(NULL), Unit(), i_AI(NULL),
lootForPickPocketed(false), lootForBody(false), m_groupLootTimer(0), lootingGroupLeaderGUID(0), lootForPickPocketed(false), lootForBody(false), m_groupLootTimer(0), lootingGroupLeaderGUID(0),
@ -1294,9 +1300,19 @@ void Creature::Respawn()
} }
} }
void Creature::ForcedDespawn() void Creature::ForcedDespawn(uint32 timeMSToDespawn)
{ {
if (timeMSToDespawn)
{
ForcedDespawnDelayEvent *pEvent = new ForcedDespawnDelayEvent(*this);
m_Events.AddEvent(pEvent, m_Events.CalculateTime(timeMSToDespawn));
return;
}
if (isAlive())
setDeathState(JUST_DIED); setDeathState(JUST_DIED);
RemoveCorpse(); RemoveCorpse();
SetHealth(0); // just for nice GM-mode view SetHealth(0); // just for nice GM-mode view
} }

View file

@ -538,7 +538,7 @@ class MANGOS_DLL_SPEC Creature : public Unit
void RemoveCorpse(); void RemoveCorpse();
bool isDeadByDefault() const { return m_isDeadByDefault; }; bool isDeadByDefault() const { return m_isDeadByDefault; };
void ForcedDespawn(); void ForcedDespawn(uint32 timeMSToDespawn = 0);
time_t const& GetRespawnTime() const { return m_respawnTime; } time_t const& GetRespawnTime() const { return m_respawnTime; }
time_t GetRespawnTimeEx() const; time_t GetRespawnTimeEx() const;
@ -660,4 +660,14 @@ class AssistDelayEvent : public BasicEvent
Unit& m_owner; Unit& m_owner;
}; };
class ForcedDespawnDelayEvent : public BasicEvent
{
public:
ForcedDespawnDelayEvent(Creature& owner) : BasicEvent(), m_owner(owner) { }
bool Execute(uint64 e_time, uint32 p_time);
private:
Creature& m_owner;
};
#endif #endif

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "9119" #define REVISION_NR "9120"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__