Example #1
0
        void JustDied(Unit* attacker)
        {
            Talk(TALK_DEATH);
            _JustDied();

            pInstance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
            pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_NULLIFICATION_BARRIER_PLAYERS);
            pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_INVERSION);

            if (GameObject* inversionGob = pInstance->instance->GetGameObject(pInstance->GetData64(GOB_INVERSION)))
                inversionGob->Delete();

            if (GameObject* cancelGob = pInstance->instance->GetGameObject(pInstance->GetData64(GOB_CANCEL)))
                cancelGob->Delete();

            if (Creature* lorewalkerCho = GetClosestCreatureWithEntry(me, 61348, 100.0f, true))
            {
                if (lorewalkerCho->AI())
                {
                    if (lorewalkerCho->GetPositionX() >= 3994.0f && lorewalkerCho->GetPositionX() <= 3996.0f &&
                            lorewalkerCho->GetPositionY() >= 1339.0f && lorewalkerCho->GetPositionY() <= 1341.0f &&
                            lorewalkerCho->GetPositionZ() >= 460.0f && lorewalkerCho->GetPositionZ() <= 463.0f)
                    {
                        lorewalkerCho->AI()->Talk(9);
                        lorewalkerCho->AI()->DoAction(ACTION_CONTINUE_ESCORT);
                    }
                }
            }
        }
            void JustDied(Unit* attacker)
            {
                me->CastSpell(me, SPELL_RELEASE_SPIRIT, false);

                events.Reset();
                pInstance->SetBossState(DATA_GARAJAL, DONE);
                pInstance->SaveToDB();

                pInstance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);

                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_VOODOO_DOLL_VISUAL);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_VOODOO_DOLL_SHARE);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_CLONE_VISUAL);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_CROSSED_OVER);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_LIFE_FRAGILE_THREAD);

                if (Creature* lorewalkerCho = GetClosestCreatureWithEntry(me, 61348, 200.0f, true))
                {
                    if (lorewalkerCho->AI())
                    {
                        {
                            lorewalkerCho->AI()->DoAction(ACTION_CONTINUE_ESCORT);
                            lorewalkerCho->AI()->DoAction(ACTION_RUN);
                        }
                    }
                }
            }
Example #3
0
            void JustReachedHome()
            {
                _JustReachedHome();
                if (pInstance)
                    pInstance->SetBossState(DATA_STONE_GUARD, FAIL);
                me->RemoveAurasDueToSpell(SPELL_AMETHYST_PETRIFICATION);
                me->RemoveAurasDueToSpell(SPELL_JADE_PETRIFICATION);
                me->RemoveAurasDueToSpell(SPELL_COBALT_PETRIFICATION);
                me->RemoveAurasDueToSpell(SPELL_JASPER_PETRIFICATION);

                for (uint32 entry: guardiansEntry)
                {
                    if (pInstance)
                    {
                        if (Creature* gardian = me->GetMap()->GetCreature(pInstance->GetData64(entry)))
                        {
                            pInstance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, gardian);
                            gardian->RemoveAurasDueToSpell(SPELL_AMETHYST_PETRIFICATION);
                            gardian->RemoveAurasDueToSpell(SPELL_JADE_PETRIFICATION);
                            gardian->RemoveAurasDueToSpell(SPELL_COBALT_PETRIFICATION);
                            gardian->RemoveAurasDueToSpell(SPELL_JASPER_PETRIFICATION);
                        }
                    }
                }

                if (pInstance)
                {
                    pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_JASPER_CHAINS);
                    pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_TOTALY_PETRIFIED);
                    pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_COBALT_PETRIFICATION_BAR);
                    pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_JASPER_PETRIFICATION_BAR);
                    pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_JADE_PETRIFICATION_BAR);
                    pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_AMETHYST_PETRIFICATION_BAR);
                }
            }
Example #4
0
        bool OnGossipSelect(Player *player, Creature *npc, uint32 sender, uint32 uiAction)
        {
            InstanceScript* instance = npc->GetInstanceScript();

            if (sender != GOSSIP_SENDER_MAIN)
            {
                player->CLOSE_GOSSIP_MENU();
                return true;
            }

            switch (uiAction)
            {
            case 1:
                {
                    instance->SetData(DATA_BUFF, 4);
                    instance->DoRemoveAurasDueToSpellOnPlayers(73828);
                    instance->DoRemoveAurasDueToSpellOnPlayers(73762);
                    instance->DoRemoveAurasDueToSpellOnPlayers(73824);
                    instance->DoRemoveAurasDueToSpellOnPlayers(73825);
                    player->CLOSE_GOSSIP_MENU();
                }
                break;
            case 2:
                instance->SetData(DATA_BUFF, 3);
                instance->DoCastSpellOnPlayers(73762);
                player->CLOSE_GOSSIP_MENU();
                break;
            case 3:
                instance->SetData(DATA_BUFF, 2);
                instance->DoCastSpellOnPlayers(73824);
                player->CLOSE_GOSSIP_MENU();
                break;
            case 4:
                instance->SetData(DATA_BUFF, 1);
                instance->DoCastSpellOnPlayers(73825);
                player->CLOSE_GOSSIP_MENU();
                break;
            case 5:
                instance->SetData(DATA_BUFF, 0);
                instance->DoCastSpellOnPlayers(73828);
                player->CLOSE_GOSSIP_MENU();
                break;
            case 6: //Close
                {
                    player->CLOSE_GOSSIP_MENU();
                    return true;
                }

            default:
                player->CLOSE_GOSSIP_MENU();
                return true;
            }
            return true;
        }
Example #5
0
        void JustDied(Unit* /*pKiller*/)
        {
            DoScriptText(SAY_DEATH, me);

            if(pInstance)
            {
                pInstance->SetData(DATA_KRYSTALLUS_EVENT, DONE);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_STONED);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_GROUND_SLAM);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_GROUND_SLAM_TRIGGERED);
            }
        }
 void SummonedCreatureDespawn(Creature* pSummoned)
 {
     switch (pSummoned->GetEntry())
     {
         case NPC_LIGHT_ESSENCE:
             m_pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_LIGHT_ESSENCE_HELPER);
             break;
         case NPC_DARK_ESSENCE:
             m_pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_DARK_ESSENCE_HELPER);
             break;
     }
     Summons.Despawn(pSummoned);
 }
        void ClearInstance()
        {
            // Remove phase shift
            if (pInstance)
            {
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_TWILIGHT_SHIFT);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_TWILIGHT_TORMENT_VESPERON);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_TWILIGHT_TORMENT_SARTHARION);
            }

            summons.DespawnAll();
            RemoveTwilightPortal();
        }
Example #8
0
        void JustDied(Unit* /*killer*/) override
        {
            Talk(SAY_DEATH);

            instance->SetBossState(DATA_LOKEN, DONE);
            instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_PULSING_SHOCKWAVE_AURA);
        }
Example #9
0
        void EnterEvadeMode()
        {
            // Remove all auras from the Legs and unset them in combat.
            for (uint8 i = 0; i <= 3; ++i)
                if (Unit* Leg = vehicle->GetPassenger(i))
                {
                    Leg->RemoveAllAuras();
                    Leg->DeleteThreatList();
                    Leg->CombatStop(false);

                    if (instance)
                        instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, Leg); // Remove
                }

            DespawnCreatures(NPC_PHEROMONE_TRAIL);
            me->RemoveAllAuras();
            Reset();
            me->DeleteThreatList();
            me->CombatStop(false);
            me->GetMotionMaster()->MoveTargetedHome();

            if (instance)
            {
                instance->SetData(DATA_GARALON, FAIL);
                instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); // Remove
                instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_PHEROMONES_AURA); // Remove Pheromones.
            }

            _EnterEvadeMode();
        }
        void Reset()
        {
            phase = PHASE_NULL;

            if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == POINT_MOTION_TYPE)
                me->GetMotionMaster()->MovementExpired();

            if(Creature* nefarianHelperheroic = me->FindNearestCreature(NPC_NEFARIAN_HELPER_HEROIC, 150.0f, true))
                nefarianHelperheroic->DespawnOrUnsummon(100);

            // Gongs respawn
            std::list<Creature*> gongs;
            me->GetCreatureListWithEntryInGrid(gongs, NPC_GONG, 200.0f);
            for (std::list<Creature*>::iterator itr = gongs.begin(); itr != gongs.end(); ++itr)
                if (!(*itr)->isAlive())
                    (*itr)->Respawn();

            if (instance)
            {
                instance->SetBossState(DATA_ATRAMEDES, NOT_STARTED);
                instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_NOISY);
            }

            me->RemoveByteFlag(UNIT_FIELD_BYTES_1, 3, 0x02);
            me->RemoveUnitMovementFlag(MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_FLYING);

            _Reset();
        }
Example #11
0
 void JustDied(Unit* killer)
 {
     summons.clear();
     BossAI::JustDied(killer);
     Talk(SAY_DEATH);
     instance->SetBossState(DATA_MOROES, DONE);
     instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_GARROTE);
 }
        void Reset()
        {
            summons.DespawnAll();
            IntervalHealthAmount = 1;

            instance->SetData(DATA_VEXALLUS_EVENT, NOT_STARTED);
            instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_ENERGY_FEEDBACK);
        }
Example #13
0
			void JustDied(Unit* )
			{
				if (pInstance)
				{
					pInstance->SetData(EVENT_TORAVON, DONE);
					pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_WHITEOUT);
				}
			}
 void JustDied(Unit* killer)
 {
     _JustDied();
     summons.DespawnAll();
     me->MonsterYell(SAY_DEATH, 0, 0);
     DoPlaySoundToSet(me, SOU_DEATH);
     instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_BLAZE_OF_GLORY);
 }
Example #15
0
 void JustDied(Unit* killer)
 {
     if (instance)
     {
         instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_ESSENCE_OF_THE_RED);
         instance->SetData(DATA_SINESTRA_EVENT, DONE);
     }
 }
 void JustDied(Unit* /*Killer*/)
 {
     if (pInstance)
     {
         pInstance->SetData(DATA_AMANITAR_EVENT, DONE);
         pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_MINI);
     }
 }
            void Reset()
            {
                _Reset();

                if (pInstance->GetBossState(DATA_GARAJAL) != DONE)
                    pInstance->SetBossState(DATA_GARAJAL, NOT_STARTED);

                pInstance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);

                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_VOODOO_DOLL_VISUAL);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_VOODOO_DOLL_SHARE);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_CLONE_VISUAL);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_CROSSED_OVER);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_LIFE_FRAGILE_THREAD);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_SOUL_CUT_DAMAGE);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_SOUL_CUT_SUICIDE);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_BANISHMENT);

                events.ScheduleEvent(EVENT_SECONDARY_ATTACK,        urand(5000, 10000));
                events.ScheduleEvent(EVENT_SUMMON_TOTEM,            urand(27500, 32500));
                events.ScheduleEvent(EVENT_SUMMON_SHADOWY_MINION,   urand(10000, 15000));
                events.ScheduleEvent(EVENT_BANISHMENT,              90000);
                events.ScheduleEvent(EVENT_VOODOO_DOLL,             2500);
                events.ScheduleEvent(EVENT_FINAL_DESTINATION,       360000); // 6 min

                me->AddAura(SPELL_STRONG_MOJO, me);
                me->CastSpell(me, SPELL_TAP_THE_SPIRIT_WORLD, true);
            }
        void ClearInstance()
        {
            summons.DespawnAll();
            // Remove phase shift
            if (pInstance)
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_TWILIGHT_SHIFT);

            RemoveTwilightPortal();
        }
Example #19
0
 void SummonedCreatureDespawn(Creature* summoned)
 {
     switch (summoned->GetEntry())
     {
     case NPC_LIGHT_ESSENCE:
         m_pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_LIGHT_ESSENCE_HELPER);
         m_pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_POWERING_UP_HELPER);
         break;
     case NPC_DARK_ESSENCE:
         m_pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_DARK_ESSENCE_HELPER);
         m_pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_POWERING_UP_HELPER);
         break;
     case NPC_BULLET_CONTROLLER:
         me->_Events.AddEvent(new OrbsDespawner(me), me->_Events.CalculateTime(100));
         break;
     }
     Summons.Despawn(summoned);
 }
            void Reset()
            {
                killtimer =0;
                events.Reset();
                _Reset();
                summons.DespawnAll();

                instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_BLAZE_OF_GLORY);

            }
        void JustDied(Unit* /*pKiller*/) override
        {
            //me->SummonCreature(BOSS_COMMANDER_ULTHOK, 59.185f, 802.251f, 805.730f, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 8640000);
            Talk(SAY_DEATH);
            RemoveSummons();
            pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_WORD_OF_SHAME);

            if (pInstance)
                pInstance->SetData(BOSS_COMMANDER_SPRINGVALE, DONE);
        }
Example #22
0
        void JustDied(Unit* /*killer*/)
        {
            Talk(SAY_DEATH);

            if (instance)
            {
                instance->SetData(TYPE_LOKEN, DONE);
                instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_PULSING_SHOCKWAVE_AURA);
            }
        }
Example #23
0
        void JustDied(Unit* /*Killer*/)
        {
            _JustDied();
            DoScriptText(SAY_DEATH, me);

            if (pInstance)
            {
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_POSITIVE_CHARGE);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_NEGATIVE_CHARGE);
            }
        }
Example #24
0
        void JustDied(Unit* /*killer*/)
        {
            if (pInstance)
            {
                pInstance->SetData(DATA_INFINITE_EVENT, DONE);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_CORRUPTING_BLIGHT);

                if (!bEscaped)
                    pInstance->DoCompleteAchievement(ACHIEV_CULLING_OF_TIME);
            }
        }
Example #25
0
        void JustDied(Unit* /*victim*/) {
            DoScriptText(SAY_DEATH, me);

            if (pInstance)
                pInstance->SetData(TYPE_MOROES, DONE);

            DeSpawnAdds();

            //remove aura from spell Garrote when Moroes dies
            if (pInstance)
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_GARROTE);
        }
        void Reset()
        {
            events.Reset();
            summons.DespawnAll();
            me->SetMeleeDamageSchool(SPELL_SCHOOL_NATURE);

            if (pInstance)
            {
                pInstance->SetData(DATA_AMANITAR_EVENT, NOT_STARTED);
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_MINI);
            }
        }
        void SummonedCreatureDies(Creature *summon, Unit*)
        {
            if (!isSartharion)
                ClearInstance();
            else if (pInstance)
            {
                pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_TWILIGHT_TORMENT_SARTHARION);
                pInstance->SetData(DATA_CLEAR_PORTAL, 1);
            }

            events.ScheduleEvent(EVENT_MINIBOSS_OPEN_PORTAL, 30000);
        }
Example #28
0
        void JustDied(Unit* /*killer*/)
        {
            if(!IsHeroic())
                Talk(SAY_DEATH);
            else
                Talk(SAY_DEATH_H);
            removeCorruption();
            summons.DespawnAll();

            if (instance)
            {
                instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_CORRUPTION_SICKNESS);
                instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_CORRUPTION_ABSOLUTE);
                instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_CORRUPTION_ABSOLUTE_TRIGGERED);
                instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_CORRUPTION_MALFORMATION);
                instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_CORRUPTION_MALFORMATION_TRIGGERED);
                instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_CORRUPTION_SICKNESS_TRIGGERED);
                instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_RIDE_VEHICLE_HARDCODED);

                instance->SetBossState(DATA_CHOGALL, DONE);
                instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); // Remove
            }

            if(Creature* trigger = me->FindNearestCreature(NPC_CHOGALL_COG_TRIGGER, 200.0f, true))
                trigger->DisappearAndDie();

            if (me->GetMap()->IsHeroic())
                if (GameObject* sinestraDoor = me->FindNearestGameObject(GO_CHOGALL_FLOOR, 200.0f))
                    sinestraDoor->SetGoState(GO_STATE_ACTIVE);

            _JustDied();
        }
Example #29
0
        void JustDied(Unit* /*killer*/)
        {
            Talk(SAY_DEATH);

            if (instance)
                instance->SetData(TYPE_MOROES, DONE);

            DeSpawnAdds();

            //remove aura from spell Garrote when Moroes dies
            if (instance)
                instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_GARROTE);
        }
Example #30
0
 void UpdateAI(const uint32 diff)
 {
     if(me->HealthBelowPct(10))
     {
         me->setFaction(35);
         me->SummonGameObject(DUNGEON_MODE(GO_OZUMAT_CHEST_NORMAL,GO_OZUMAT_CHEST_HEROIC),-125.950981f, 983.343201f, 230.335464f, 3.635565f,0,0,0,0,9000000);
         Neptulon->SetVisible(false);
         me->CombatStop();
         if(pInstance)
             pInstance->DoRemoveAurasDueToSpellOnPlayers(76133);
         me->SetVisible(false);
     }
 }