void FilterTargets(std::list<Unit*>& unitList) { if (!GetCaster()->ToPlayer()->GetGroup()) { unitList.clear(); unitList.push_back(GetCaster()); } else { unitList.remove(GetTargetUnit()); std::list<Unit*> tempTargets; for (std::list<Unit*>::const_iterator itr = unitList.begin(); itr != unitList.end(); ++itr) if ((*itr)->GetTypeId() == TYPEID_PLAYER && GetCaster()->IsInRaidWith(*itr)) tempTargets.push_back(*itr); if (tempTargets.empty()) { unitList.clear(); FinishCast(SPELL_FAILED_DONT_REPORT); return; } Unit* target = SelectRandomContainerElement(tempTargets); unitList.clear(); unitList.push_back(target); } }
void FilterTargets(std::list<WorldObject*>& targets) { if (!GetCaster()->ToPlayer()->GetGroup()) { targets.clear(); targets.push_back(GetCaster()); } else { targets.remove(GetExplTargetUnit()); std::list<Unit*> tempTargets; for (std::list<WorldObject*>::const_iterator itr = targets.begin(); itr != targets.end(); ++itr) if ((*itr)->GetTypeId() == TYPEID_PLAYER && GetCaster()->IsInRaidWith((*itr)->ToUnit())) tempTargets.push_back((*itr)->ToUnit()); if (tempTargets.empty()) { targets.clear(); FinishCast(SPELL_FAILED_DONT_REPORT); return; } Unit* target = Trinity::Containers::SelectRandomContainerElement(tempTargets); targets.clear(); targets.push_back(target); } }
void FilterTargets(std::list<Unit*>& unitList) { Unit* unit_to_add = NULL; for (std::list<Unit*>::iterator itr = unitList.begin() ; itr != unitList.end(); ++itr) { if ((*itr)->GetTypeId() == TYPEID_UNIT && (*itr)->GetOwnerGUID() == GetCaster()->GetGUID() && (*itr)->ToCreature()->GetCreatureTemplate()->type == CREATURE_TYPE_UNDEAD) { unit_to_add = (*itr); break; } } unitList.clear(); if (unit_to_add) unitList.push_back(unit_to_add); else { // Pet not found - remove cooldown if (Player* modOwner = GetCaster()->GetSpellModOwner()) modOwner->RemoveSpellCooldown(GetSpellInfo()->Id, true); FinishCast(SPELL_FAILED_NO_PET); } }
void FilterTargets(std::list<WorldObject*>& targets) { targets.remove(GetExplTargetWorldObject()); if (targets.empty()) FinishCast(SPELL_FAILED_NO_VALID_TARGETS); }
void SelectTarget(std::list<WorldObject*>& targetList) { if (!GetCaster()) return; if (targetList.empty()) { FinishCast(SPELL_FAILED_NO_VALID_TARGETS); return; } //Select the two targets. std::list<WorldObject*> targets = targetList; targetList.remove_if(OnlyTriggerInFrontPredicate(GetCaster())); //See if we intersect with any players. for (auto object : targets) if (object->GetTypeId() == TYPEID_PLAYER) for (auto trigger : targetList) if (object->IsInBetween(GetCaster(), trigger, 2.0f)) { const SpellInfo* damageSpell = sSpellMgr->GetSpellInfo(SPELL_THROW_DAMAGE); GetCaster()->DealDamage(object->ToPlayer(), damageSpell->GetEffect(EFFECT_0)->BasePoints, 0, SPELL_DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, damageSpell); } }
void FilterTargets(std::list<WorldObject*>& targets) { if (targets.empty()) { FinishCast(SPELL_FAILED_NO_VALID_TARGETS); return; } // get a list of players with mana std::list<WorldObject*> _targets; for (std::list<WorldObject*>::iterator itr = targets.begin(); itr != targets.end(); ++itr) if ((*itr)->ToUnit()->getPowerType() == POWER_MANA) _targets.push_back(*itr); if (_targets.empty()) return; // pick a random target and kiss him if (WorldObject* _target = SkyMistCore::Containers::SelectRandomContainerElement(_targets)) { // correctly fill "targets" for the visual effect targets.clear(); targets.push_back(_target); if (Unit* caster = GetCaster()) caster->CastSpell(_target->ToUnit(), SPELL_MISTRESS_KISS_DEBUFF, true); } }
void FilterTargets(std::list<Unit*>& unitList) { if (!GetCaster()->ToPlayer()->GetGroup()) { unitList.clear(); unitList.push_back(GetCaster()); } else { unitList.remove(GetTargetUnit()); std::list<Unit*> tempTargets; for (std::list<Unit*>::const_iterator itr = unitList.begin(); itr != unitList.end(); ++itr) if ((*itr)->GetTypeId() == TYPEID_PLAYER && GetCaster()->IsInRaidWith(*itr)) tempTargets.push_back(*itr); if (tempTargets.empty()) { unitList.clear(); FinishCast(SPELL_FAILED_DONT_REPORT); return; } std::list<Unit*>::const_iterator it2 = tempTargets.begin(); std::advance(it2, urand(0, tempTargets.size() - 1)); unitList.clear(); unitList.push_back(*it2); } }
void FilterTargets(std::list<WorldObject*>& targets) { Creature* caster = GetCaster()->ToCreature(); if (!caster) return; if (WorldObject* tank = caster->AI()->SelectTarget(SELECT_TARGET_TOPAGGRO)) targets.remove(tank); if (targets.size() < 2) { FinishCast(SPELL_FAILED_NO_VALID_TARGETS); return; } Trinity::Containers::RandomResize(targets, 2); _targets.push_back(targets.front()->GetGUID()); _targets.push_back(targets.back()->GetGUID()); }
void FilterTargets(std::list<WorldObject*>& targets) { if (targets.empty() || GetCaster()->GetVehicleBase()) FinishCast(SPELL_FAILED_OUT_OF_RANGE); }
void FilterTargets(std::list<WorldObject*>& targets) { if (targets.empty()) FinishCast(SPELL_FAILED_OUT_OF_RANGE); }
void FilterTargets(std::list<WorldObject*>& targets) { targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SABER_LASH_IMMUNITY)); if (targets.size() <= 1) FinishCast(SPELL_FAILED_DONT_REPORT); }