Esempio n. 1
0
        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);
        }
Esempio n. 2
0
            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);
            }
Esempio n. 3
0
 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);
     }
 }
Esempio n. 4
0
            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);
            }
Esempio n. 5
0
 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);
        }
Esempio n. 7
0
        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;
            }
        }
Esempio n. 8
0
 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;
                 }
             }
          }
      }
  }
Esempio n. 9
0
        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;
				}	
            }
        }
Esempio n. 10
0
            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;
                }
            }
Esempio n. 11
0
            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);
 }
Esempio n. 13
0
 void HandleScript(SpellEffIndex /*effIndex*/)
 {
     if (Player* target = GetHitPlayer())
         target->RemoveAura(uint32(GetEffectValue()));
 }
Esempio n. 14
0
 void HandleScript(SpellEffIndex /*effIndex*/)
 {
     Unit* caster = GetCaster();
     if (Player* target = GetHitPlayer())
         caster->CastSpell(target, uint32(GetEffectValue()), true);
 }
Esempio n. 15
0
 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);
 }
Esempio n. 18
0
            void Launch()
            {
                if (!GetCaster()->ToCreature() || !GetExplTargetDest())
                    return;

                GetCaster()->ToCreature()->m_Events.AddEvent(new StartLaunchEvent(*GetExplTargetDest(), GetHitPlayer()->GetGUID()), GetCaster()->ToCreature()->m_Events.CalculateTime(2500));
            }
Esempio n. 19
0
void SpellTheLichKingPlayMovieSpellScript::HandleScript(SpellEffIndex effIndex)
{
    PreventHitDefaultEffect(effIndex);
    if (Player* player = GetHitPlayer())
        player->SendMovieStart(MOVIE_FALL_OF_THE_LICH_KING);
}
Esempio n. 20
0
 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);
 }