[11888] Implement FLAG_DESPAWN_ON_EVADE for creature_linking.

Thanks to Xfurry for testing

Signed-off-by: Schmoozerd <schmoozerd@scriptdev2.com>
This commit is contained in:
Schmoozerd 2012-01-25 23:25:40 +01:00
parent df9e0ebf6a
commit f25e14fd9f
3 changed files with 6 additions and 3 deletions

View file

@ -172,7 +172,7 @@ bool CreatureLinkingMgr::IsLinkingEntryValid(uint32 slaveEntry, CreatureLinkingI
enum EventMask enum EventMask
{ {
EVENT_MASK_ON_AGGRO = FLAG_AGGRO_ON_AGGRO, EVENT_MASK_ON_AGGRO = FLAG_AGGRO_ON_AGGRO,
EVENT_MASK_ON_EVADE = FLAG_RESPAWN_ON_EVADE, EVENT_MASK_ON_EVADE = FLAG_RESPAWN_ON_EVADE | FLAG_DESPAWN_ON_EVADE,
EVENT_MASK_ON_DIE = FLAG_DESPAWN_ON_DEATH | FLAG_SELFKILL_ON_DEATH | FLAG_RESPAWN_ON_DEATH | FLAG_FOLLOW, EVENT_MASK_ON_DIE = FLAG_DESPAWN_ON_DEATH | FLAG_SELFKILL_ON_DEATH | FLAG_RESPAWN_ON_DEATH | FLAG_FOLLOW,
EVENT_MASK_ON_RESPAWN = FLAG_RESPAWN_ON_RESPAWN | FLAG_DESPAWN_ON_RESPAWN | FLAG_FOLLOW, EVENT_MASK_ON_RESPAWN = FLAG_RESPAWN_ON_RESPAWN | FLAG_DESPAWN_ON_RESPAWN | FLAG_FOLLOW,
EVENT_MASK_TRIGGER_TO = FLAG_TO_AGGRO_ON_AGGRO | FLAG_TO_RESPAWN_ON_EVADE | FLAG_FOLLOW, EVENT_MASK_TRIGGER_TO = FLAG_TO_AGGRO_ON_AGGRO | FLAG_TO_RESPAWN_ON_EVADE | FLAG_FOLLOW,
@ -374,6 +374,8 @@ void CreatureLinkingHolder::ProcessSlave(CreatureLinkingEvent eventType, Creatur
} }
break; break;
case LINKING_EVENT_EVADE: case LINKING_EVENT_EVADE:
if (flag & FLAG_DESPAWN_ON_EVADE && pSlave->isAlive())
pSlave->ForcedDespawn();
if (flag & FLAG_RESPAWN_ON_EVADE && !pSlave->isAlive()) if (flag & FLAG_RESPAWN_ON_EVADE && !pSlave->isAlive())
pSlave->Respawn(); pSlave->Respawn();
break; break;

View file

@ -62,6 +62,7 @@ enum CreatureLinkingFlags
FLAG_TO_AGGRO_ON_AGGRO = 0x0002, FLAG_TO_AGGRO_ON_AGGRO = 0x0002,
FLAG_RESPAWN_ON_EVADE = 0x0004, FLAG_RESPAWN_ON_EVADE = 0x0004,
FLAG_TO_RESPAWN_ON_EVADE = 0x0008, FLAG_TO_RESPAWN_ON_EVADE = 0x0008,
FLAG_DESPAWN_ON_EVADE = 0x1000,
FLAG_DESPAWN_ON_DEATH = 0x0010, FLAG_DESPAWN_ON_DEATH = 0x0010,
FLAG_SELFKILL_ON_DEATH = 0x0020, FLAG_SELFKILL_ON_DEATH = 0x0020,
FLAG_RESPAWN_ON_DEATH = 0x0040, FLAG_RESPAWN_ON_DEATH = 0x0040,
@ -75,7 +76,7 @@ enum CreatureLinkingFlags
FLAG_CANT_SPAWN_IF_BOSS_DEAD = 0x0400, FLAG_CANT_SPAWN_IF_BOSS_DEAD = 0x0400,
FLAG_CANT_SPAWN_IF_BOSS_ALIVE = 0x0800, FLAG_CANT_SPAWN_IF_BOSS_ALIVE = 0x0800,
LINKING_FLAG_INVALID = 0x1000, // TODO adjust when other flags are implemented LINKING_FLAG_INVALID = 0x2000, // TODO adjust when other flags are implemented
}; };
// Structure holding the information for an entry // Structure holding the information for an entry

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 "11887" #define REVISION_NR "11888"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__