137 {
139 if (!creatureTarget)
140 return;
141
145
148
150 return;
151
152 bool shouldDie = true;
153 std::list<Creature*> hounds;
155
156
157 if (!hounds.empty())
158 {
159
160 if (std::find_if(hounds.begin(), hounds.end(), [creatureTarget](
Creature const* hound)
161 {
162 return creatureTarget != hound && creatureTarget->IsWithinLOSInMap(hound) && hound->IsAlive() && hound->IsInCombat() && !hound->HasAura(SPELL_PLAY_DEAD);
163 }) != hounds.end())
164 {
165 shouldDie = false;
166 }
167 }
168
169 if (!shouldDie)
170 {
172 {
176 }
177 }
178 else
179 {
182 }
183 }
@ REACT_AGGRESSIVE
Definition Unit.h:568
Definition CreatureAI.h:69
void DespawnOrUnsummon(Milliseconds msTimeToDespawn=0ms, Seconds forcedRespawnTimer=0s)
Definition Creature.cpp:2126
CreatureAI * AI() const
Definition Creature.h:143
virtual void RemoveDynamicFlag(uint32 flag)
Definition Object.h:126
static void Kill(Unit *killer, Unit *victim, bool durabilityLoss=true, WeaponAttackType attackType=BASE_ATTACK, SpellInfo const *spellProto=nullptr, Spell const *spell=nullptr)
Definition Unit.cpp:13938
void RemoveUnitFlag2(UnitFlags2 flags)
Definition Unit.h:755
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:5157
bool IsInCombat() const
Definition Unit.h:935
void GetCreaturesWithEntryInRange(std::list< Creature * > &creatureList, float radius, uint32 entry)
Definition Object.cpp:3061
@ SPELL_FULL_HEALTH
Definition molten_core.cpp:36
@ SPELL_FIRE_NOVA_VISUAL
Definition molten_core.cpp:37
@ EMOTE_IGNITE
Definition molten_core.cpp:28
@ NPC_CORE_HOUND
Definition molten_core.h:63