Unit* SelectAttackTarget() const override { if (Creature* charmer = GetCharmer()) { if (Unit* target = charmer->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0, CharmedPlayerTargetSelectPred())) return target; if (Unit* target = charmer->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true, -SPELL_CHAINS)) return target; } return nullptr; }
void TemporarySummon::RemoveAuraFromOwner() { // creature is dead and we have to remove the charmer aura if exist uint32 const& spellId = GetUInt32Value(UNIT_CREATED_BY_SPELL); if (spellId) { if (Unit* charmer = GetCharmer()) { charmer->RemoveAurasDueToSpell(spellId); charmer->ResetControlState(false); } else if (Unit* owner = GetOwner()) { owner->RemoveAurasDueToSpell(spellId); } } }