153 {
155 if (!creatureTarget)
156 {
157 return;
158 }
159
163
166
168 {
169 return;
170 }
171
172 bool shouldDie = true;
173 std::list<Creature*> hounds;
175
176
177 if (!hounds.empty())
178 {
179
180 if (std::find_if(hounds.begin(), hounds.end(), [creatureTarget](
Creature const* hound)
181 {
182 return creatureTarget != hound && creatureTarget->IsWithinLOSInMap(hound) && hound->IsAlive() && hound->IsInCombat() && !hound->HasAura(SPELL_PLAY_DEAD);
183 }) != hounds.end())
184 {
185 shouldDie = false;
186 }
187 }
188
189 if (!shouldDie)
190 {
192 {
196 }
197 }
198 else
199 {
202 }
203 }
@ REACT_AGGRESSIVE
Definition: Unit.h:1025
@ SPELL_FULL_HEALTH
Definition: molten_core.cpp:35
@ SPELL_FIRE_NOVA_VISUAL
Definition: molten_core.cpp:36
@ EMOTE_IGNITE
Definition: molten_core.cpp:27
@ NPC_CORE_HOUND
Definition: molten_core.h:64
Definition: CreatureAI.h:70
void DespawnOrUnsummon(Milliseconds msTimeToDespawn, Seconds forcedRespawnTimer)
Definition: Creature.cpp:2108
CreatureAI * AI() const
Definition: Creature.h:135
virtual void RemoveDynamicFlag(uint32 flag)
Definition: Object.h:118
void GetCreaturesWithEntryInRange(std::list< Creature * > &creatureList, float radius, uint32 entry)
Definition: Object.cpp:3015
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:17862
void RemoveUnitFlag2(UnitFlags2 flags)
Definition: Unit.h:1488
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition: Unit.cpp:4835
bool IsInCombat() const
Definition: Unit.h:1688