void HandleEffect(SpellEffIndex /* effIndex */) { uint32 spellId = 0; if (GetCaster()->HasAura(SPELL_UNRELENTING_ASSAULT_RANK_1)) spellId = SPELL_UNRELENTING_ASSAULT_TRIGGER_1; else if (GetCaster()->HasAura(SPELL_UNRELENTING_ASSAULT_RANK_2)) spellId = SPELL_UNRELENTING_ASSAULT_TRIGGER_2; if (!spellId) return; if (Player* target = GetHitPlayer()) if (target->HasUnitState(UNIT_STATE_CASTING)) target->CastSpell(target, spellId, true); }
void HandleEffect(SpellEffIndex /*effIndex*/) { uint32 spellId = 0; if (GetCaster()->HasAura(SPELL_WARRIOR_UNRELENTING_ASSAULT_RANK_1)) spellId = SPELL_WARRIOR_UNRELENTING_ASSAULT_TRIGGER_1; else if (GetCaster()->HasAura(SPELL_WARRIOR_UNRELENTING_ASSAULT_RANK_2)) spellId = SPELL_WARRIOR_UNRELENTING_ASSAULT_TRIGGER_2; if (!spellId) return; if (Player* target = GetHitPlayer()) if (target->IsNonMeleeSpellCast(false, false, true)) // UNIT_STATE_CASTING should not be used here, it's present during a tick for instant casts target->CastSpell(target, spellId, true); }
void HandleScriptEffect(SpellEffIndex /* effIndex */) { if (Player* player = GetHitPlayer()) { if (Group* group = player->GetGroup()) { for (GroupReference* itr = group->GetFirstMember(); itr != NULL; itr = itr->next()) if (Player* member = itr->GetSource()) if (member->IsWithinDistInMap(player, 20.0f) && !member->isDead()) member->CastSpell(member, SPELL_TELEPORT_SINGLE_IN_GROUP, true); } else player->CastSpell(player, SPELL_TELEPORT_SINGLE, true); } }
void HandleResidue() { Player* target = GetHitPlayer(); if (!target) return; if (target->HasAura(SPELL_GREEN_BLIGHT_RESIDUE)) return; uint32 questId = target->GetMap()->Is25ManRaid() ? QUEST_RESIDUE_RENDEZVOUS_25 : QUEST_RESIDUE_RENDEZVOUS_10; if (target->GetQuestStatus(questId) != QUEST_STATUS_INCOMPLETE) return; target->CastSpell(target, SPELL_GREEN_BLIGHT_RESIDUE, TRIGGERED_FULL_MASK); }
void HandleScript(SpellEffIndex /*effIndex*/) { if (Player* pTarget = GetHitPlayer()) { uint8 gender = pTarget->getGender(); uint32 spellId = SPELL_TRICK_BUFF; switch (urand(0, 5)) { case 1: spellId = gender ? SPELL_LEPER_GNOME_COSTUME_FEMALE : SPELL_LEPER_GNOME_COSTUME_MALE; break; case 2: spellId = gender ? SPELL_PIRATE_COSTUME_FEMALE : SPELL_PIRATE_COSTUME_MALE; break; case 3: spellId = gender ? SPELL_GHOST_COSTUME_FEMALE : SPELL_GHOST_COSTUME_MALE; break; case 4: spellId = gender ? SPELL_NINJA_COSTUME_FEMALE : SPELL_NINJA_COSTUME_MALE; break; case 5: spellId = SPELL_SKELETON_COSTUME; break; } GetCaster()->CastSpell(pTarget, spellId, true, NULL); } }
void HandleDummy(SpellEffIndex /*effIndex*/) { Unit* caster = GetCaster(); Player* player = GetHitPlayer(); if (!player) return; player->ExitVehicle(); float horizontalSpeed = 3.0f; float verticalSpeed = 40.0f; player->KnockbackFrom(caster->GetPositionX(), caster->GetPositionY(), horizontalSpeed, verticalSpeed); caster->CastSpell(player, SPELL_PARACHUTE, true); std::list<Creature*> explosionBunnys; caster->GetCreatureListWithEntryInGrid(explosionBunnys, NPC_ALLIANCE_LUMBERBOAT_EXPLOSIONS, 90.0f); for (std::list<Creature*>::const_iterator itr = explosionBunnys.begin(); itr != explosionBunnys.end(); ++itr) (*itr)->CastSpell((*itr), SPELL_TORPEDO_EXPLOSION, true); }
void HandleScriptEffect(SpellEffIndex /*effIndex*/) { if (Player* target = GetHitPlayer()) { // check presence if (target->HasAuraType(SPELL_AURA_TRANSFORM)) return; uint32 spellId = 0; if (target->getGender() == GENDER_MALE) spellId = RAND<uint32>(SPELL_WINTER_WONDERVOLT_RED_MAN, SPELL_WINTER_WONDERVOLT_GREEN_MAN); else spellId = RAND<uint32>(SPELL_WINTER_WONDERVOLT_RED_WOMEN, SPELL_WINTER_WONDERVOLT_GREEN_WOMEN); // cast target->CastSpell(target, spellId, true); return; } }
void HandleScriptEffect(SpellEffIndex /* effIndex */) { if (Player* player = GetHitPlayer()) { for (uint8 i = 0; i < 21; ++i) { if (player->HasAura(FetchIngredients[i][0])) { player->CastSpell(player, SPELL_THROW_INGREDIENT); player->RemoveAura(FetchIngredients[i][0]); if (player->HasAura(FetchIngredients[i][1])) { player->RemoveAura(FetchIngredients[i][1]); player->DestroyItemCount(FetchIngredients[i][2], 1, true); if (i < 15) { if (Creature* finklestein = GetClosestCreatureWithEntry(player, NPC_FINKLESTEIN, 25.0f)) finklestein->AI()->SetData(1, 1); return; } else { if (player->GetQuestStatus(QUEST_THE_ALCHEMIST_APPRENTICE_DAILY) == QUEST_STATUS_INCOMPLETE) { player->RemoveAura(SPELL_ALCHEMIST_APPRENTICE_INVISBUFF); player->CastSpell(player, SPELL_KILL_CREDIT); } } } else { RemoveItems(player); player->RemoveAura(SPELL_ALCHEMIST_APPRENTICE_INVISBUFF); if (Creature* finklestein = GetClosestCreatureWithEntry(player, NPC_FINKLESTEIN, 25.0f)) finklestein->AI()->Talk(SAY_RUINED, player); return; } } } } }
void AfterHitEffect() { if (Player* target = GetHitPlayer()) { switch(GetSpellInfo()->Id) { case 34140: if(target->GetQuestStatus(10305) == QUEST_STATUS_INCOMPLETE) target->CompleteQuest(10305); break; case 34142: if(target->GetQuestStatus(10306) == QUEST_STATUS_INCOMPLETE) target->CompleteQuest(10306); break; case 34144: if(target->GetQuestStatus(10307) == QUEST_STATUS_INCOMPLETE) target->CompleteQuest(10307); break; case 34141: if(target->GetQuestStatus(10182) == QUEST_STATUS_INCOMPLETE) target->CompleteQuest(10182); break; } } }
void HandleScript(SpellEffIndex /*effIndex*/) { Unit* target = GetHitPlayer(); if (!target) return; if (!target->GetVehicle()) return; switch (target->GetMap()->GetDifficulty()) { case RAID_DIFFICULTY_10MAN_NORMAL: target->RemoveAura(SpellMgr::CalculateSpellEffectAmount(GetSpellInfo(), EFFECT_0)); break; case RAID_DIFFICULTY_25MAN_NORMAL: target->RemoveAura(SpellMgr::CalculateSpellEffectAmount(GetSpellInfo(), EFFECT_1)); break; default: break; } }
void HandleScript(SpellEffIndex /*effIndex*/) { Unit* caster = GetCaster(); float angle = 0.0f; float x, y, z; if (Player* target = GetHitPlayer()) { caster->AttackStop(); caster->SetOrientation(caster->GetAngle(target)); caster->SetFacingTo(caster->GetAngle(target)); caster->CastSpell(caster, SPELL_DEVASTATING_SLAM, false); // HACK: Need better way for pos calculation for (uint8 i = 0; i <= 50; ++i) { angle = float(rand_norm()) * static_cast<float>(M_PI * 35.0f / 180.0f) - static_cast<float>(M_PI * 17.5f / 180.0f); caster->GetClosePoint(x, y, z, 4.0f, frand(-2.5f, 50.0f), angle); caster->CastSpell(x, y, z, SPELL_DEVASTATING_SLAM_DAMAGE, true); } } }
void HandleScript(SpellEffIndex /*effIndex*/) { if (Player* target = GetHitPlayer()) target->CastSpell(GetCaster(), SPELL_RIDE_WG_VEHICLE, false); }
void HandleScript(SpellEffIndex /*effIndex*/) { if (Player* target = GetHitPlayer()) target->RemoveAura(uint32(GetEffectValue())); }
void HandleScript(SpellEffIndex /*effIndex*/) { Unit* caster = GetCaster(); if (Player* target = GetHitPlayer()) caster->CastSpell(target, uint32(GetEffectValue()), true); }
void HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); if (Player* player = GetHitPlayer()) player->SendMovieStart(MOVIE_AREA_LADY_NAZJAR); }
void Launch() { if (!GetCaster()->ToCreature() || !GetExplTargetDest()) return; float x, y, z; x = GetExplTargetDest()->GetPositionX(); y = GetExplTargetDest()->GetPositionY(); z = GetExplTargetDest()->GetPositionZ(); GetCaster()->ToCreature()->m_Events.AddEvent(new StartLaunchEvent(x, y, z, GetHitPlayer()->GetGUID()), GetCaster()->ToCreature()->m_Events.CalculateTime(2500)); }
void HandleApplyTouch() { if (Player* target = GetHitPlayer()) target->CastSpell(target, SPELL_FLAME_TOUCHED, true); }
void Launch() { if (!GetCaster()->ToCreature() || !GetExplTargetDest()) return; GetCaster()->ToCreature()->m_Events.AddEvent(new StartLaunchEvent(*GetExplTargetDest(), GetHitPlayer()->GetGUID()), GetCaster()->ToCreature()->m_Events.CalculateTime(2500)); }
void SpellTheLichKingPlayMovieSpellScript::HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); if (Player* player = GetHitPlayer()) player->SendMovieStart(MOVIE_FALL_OF_THE_LICH_KING); }
void HandleScriptEffect(SpellEffIndex /*effIndex*/) { if (GetHitPlayer()) GetCaster()->GetInstanceScript()->SetData(DATA_ICE_SHARDS_HIT, 1); }
void HandleEffect(SpellEffIndex /*effIndex*/) { if (Player* player = GetHitPlayer()) if (player->GetAuraCount(SPELL_OSCILLATION_FIELD) == 5 && player->GetQuestStatus(QUEST_GAUGING_THE_RESONANT_FREQUENCY) == QUEST_STATUS_INCOMPLETE) player->CompleteQuest(QUEST_GAUGING_THE_RESONANT_FREQUENCY); }