Esempio n. 1
0
 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;
 }
Esempio n. 2
0
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);
        }
    }
}