示例#1
0
        void Reset()
        {
            RemoveSummons();
            me->SetDisplayId(me->GetNativeDisplayId());
            me->ClearUnitState(UNIT_STAT_ROOT | UNIT_STAT_STUNNED);
            me->SetHomePosition(746.71f, 661.02f, 411.69f, 4.6f);

            bEventInProgress = false;
            bEvent = false;
            bSummonArmy = false;
            bDeathArmyDone = false;
            bEventInBattle = false;
            bFight = false;

            if (GameObject* pGO = GameObject::GetGameObject(*me, pInstance->GetData64(DATA_MAIN_GATE1)))
                pInstance->HandleGameObject(pGO->GetGUID(), true);

            uiPhase = PHASE_UNDEAD;

            uiIcyTouchTimer = urand(5000, 9000);
            uiIcyTouch1Timer = urand(15000, 15000);
            uiPlagueStrikeTimer = urand(10000, 13000);
            uiPlagueStrike1Timer = urand(14000, 14000);
            uiDeathRespiteTimer = urand(17000, 17000);
            uiObliterateTimer = urand(17000, 19000);
            uiObliterate1Timer = urand(15000, 15000);
            uiDesecrationTimer = urand(15000, 16000);
            uiDesecration1Timer = urand(22000, 22000);
            uiDeathArmyCheckTimer = 7000;
            uiResurrectTimer = 4000;
            uiGhoulExplodeTimer = 8000;
            uiDeathBiteTimer = urand (2000, 4000);
            uiMarkedDeathTimer = urand (5000, 7000);
            uiIntroTimer = 5000;
        }
示例#2
0
            void Reset()
            {
                RemoveSummons();

                SoulSeverTimer = 7000;
                WailOfDarknessTimer = 1000;
            }
        void Reset()
        {
            Achievement = true;
            RemoveSummons();
            _Reset();

            instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_WORD_OF_SHAME);
        }
示例#4
0
        void JustDied(Unit* /*killer*/)
        {
            me->SummonCreature(BOSS_COMMANDER_ULTHOK, 59.185f, 802.251f, 805.730f, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 60480000);
            DoScriptText(SAY_DEATH, me);
            RemoveSummons();

            if (instance)
                instance->SetData(DATA_LADY_NAZJAR_EVENT, DONE);
        }
        void JustDied(Unit * /*killer*/)
        {
            Talk(SAY_DEATH);
            RemoveSummons();

            instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_WORD_OF_SHAME);
            if (Achievement && IsHeroic())
                instance->DoCompleteAchievement(ACHIEVEMENT_TO_THE_GROUND);
        }
示例#6
0
 void Reset()
 {
     phase = 1;
     count = 0;
     nextsummon = 1000;
     QuestInProgress = false;
     PlayerGUID = 0;
     RemoveSummons();
 }
示例#7
0
        void JustDied(Unit* /*killer*/)
        {
            //DoScriptText(SAY_DEATH, me);
            //DoScriptText(SAY_WIN_ERUNAK, erunak);
            RemoveSummons();
            erunak->setFaction(35);

            if (instance)
                instance->SetData(DATA_ERUNAK_STONESPEAKER_EVENT, DONE);
        }
        void JustDied(Unit* /*pKiller*/)
        {
            DoScriptText(SAY_DEATH, me);
            DoScriptText(SAY_WIN_ERUNAK, pErunak);
            RemoveSummons();
            pErunak->setFaction(35);

            if (pInstance)
                pInstance->SetData(DATA_ERUNAK_STONESPEAKER_EVENT, DONE);
        }
示例#9
0
 void JustDied(Unit * /*pKiller*/)
 {
     if (PlayerGUID)
         if (Player *pPlayer = Unit::GetPlayer(*me, PlayerGUID))
             if (pPlayer->GetQuestStatus(14154) == QUEST_STATUS_INCOMPLETE)
             {
                 pPlayer->FailQuest(14154);
                 RemoveSummons();
             }
 }
            void Reset ()
            {
                DustTailTimer = 15000;
                ScentOfBloodTimer = 13000;
                ViscousPoisonTimer = 7000;
                WhirlwindTimer = 35000;

                Rage = false;
                RemoveSummons();
            }
示例#11
0
        void JustDied(Unit* /*pKiller*/)
        {
            DoCastAOE(SPELL_PLAY_MOVIE, true);
            me->SummonCreature(BOSS_COMMANDER_ULTHOK, 53.106316f, 802.355957f, 805.731812f, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN);
            DoScriptText(SAY_DEATH, me);
            RemoveSummons();

            if (pInstance)
                pInstance->SetData(DATA_LADY_NAZJAR_EVENT, DONE);
        }
        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);
        }
示例#13
0
            void JustDied(Unit* /*Kill*/)
            {
                RemoveSummons();
                Talk(SAY_DEATH);
                instance->SetData(DATA_TEMPLE_GUARDIAN_ANHUUR, DONE);
                instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);

                GameObject* Bridge = me->FindNearestGameObject(GO_ANHUUR_BRIDGE, 200);
                if (Bridge)
                    Bridge->SetGoState(GO_STATE_ACTIVE);
            }
            void JustDied(Unit* /*Kill*/)
            {
                RemoveSummons();
                //Talk(SAY_DEATH);
                if (pInstance)
                    pInstance->SetData(DATA_TEMPLE_GUARDIAN_ANHUUR_EVENT, DONE);

                GameObject* Bridge = me->FindNearestGameObject(GO_ANHUUR_BRIDGE, 200);
                if (Bridge)
                    Bridge->SetGoState(GO_STATE_ACTIVE);
            }
示例#15
0
 void Reset()
 {
     _Reset();
     instance->SetData(DATA_TEMPLE_GUARDIAN_ANHUUR, NOT_STARTED);
     Phase = PHASE_NORMAL;
     PhaseCount = 0;
     FlameCount = 2;
     RemoveSummons();
     me->RemoveAurasDueToSpell(SPELL_SHIELD_OF_LIGHT);
     me->RemoveAurasDueToSpell(SPELL_DIVINE_RECKONING);
     instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
 }
 void DamageTaken(Unit* pKiller, uint32 &damage)
 {
     if (Phase == PHASE_WAITING)
     {
         DivineReckoningTimer = 8000;
         SearingFlameTimer = 5000;
         LeverActivated = 0;
         me->RemoveAurasDueToSpell(SPELL_REVERBERATING_HYMN);
         Phase = PHASE_NORMAL;
         RemoveSummons();
     }
 }
            void Reset()
            {
                if (pInstance)
                    pInstance->SetData(DATA_TEMPLE_GUARDIAN_ANHUUR_EVENT, NOT_STARTED);

                Phase = PHASE_NORMAL;
                PhaseCount = 0;
                FlameCount = 2;
                DivineReckoningTimer = 8000;
                SearingFlameTimer = 5000;
                RemoveSummons();
                me->RemoveAurasDueToSpell(SPELL_SHIELD_OF_LIGHT);
                me->RemoveAurasDueToSpell(SPELL_REVERBERATING_HYMN);
            }
        void Reset() override
        {
            Achievement = true;
            RemoveSummons();

            DesecrationTimer = 7500;
            MaleficStrikeTimer = 6000;
            SummonAddsTimer = 40000;
            PowerCheckTimer = 1000;
            me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true);
            me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_GRIP, true);

            if (pInstance)
                pInstance->SetData(BOSS_COMMANDER_SPRINGVALE, NOT_STARTED);
        }
示例#19
0
        void Reset()
        {
            _Reset();
            RemoveSummons();
            me->SetDisplayId(me->GetNativeDisplayId());
            me->ClearUnitState(UNIT_STAT_ROOT | UNIT_STAT_STUNNED);
            
            Map* pMap = me->GetMap();
            if (pMap && pMap->IsDungeon() && !bStartCombat)
            {
                bReset = true;
                Map::PlayerList const &players = pMap->GetPlayers();
                for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                {
                    if(itr->getSource() && itr->getSource()->isAlive() && !itr->getSource()->isGameMaster())
                        bReset = false;
                }
            }
            else
                bReset = true;

                   
            ResetEncounter();
           
            //me->SummonCreature(28859,me->GetPositionX(),me->GetPositionY(),me->GetPositionZ(),0,TEMsummon_CORPSE_DESPAWN);
            //uiState=IDLE;
            bEventInProgress = false;
            bEvent = false;
            bSummonArmy = false;
            bDeathArmyDone = false;        
                   
            uiPhase = PHASE_UNDEAD;

            uiIcyTouchTimer = urand(5000,9000);
            uiIcyTouch1Timer = urand(15000,15000);
            uiPlagueStrikeTimer = urand(10000,13000);
            uiPlagueStrike1Timer = urand(14000,14000);
            uiDeathRespiteTimer = urand(17000,17000);
            uiObliterateTimer = urand(17000,19000);
            uiObliterate1Timer = urand(15000,15000);
            uiDesecration = urand(15000,16000);
            uiDesecration1 = urand(22000,22000);
            uiDeathArmyCheckTimer = 7000;
            uiResurrectTimer = 4000;
            uiGhoulExplodeTimer = 8000;
            uiDeathBiteTimer = urand (2000,4000);
            uiMarkedDeathTimer = urand (5000,7000);
        }
示例#20
0
 void SummonedCreatureDespawn(Creature* summon)
 {
     switch (summon->GetEntry())
     {
         case 39720: // Astral Rain
             AstralRain = false;
             break;
         case 39721: // Celestial Call
             CelestialCall = false;
             break;
         case 39722: // Veil of Sky
             VeilOfSky = false;
             break;
     }
     RemoveSummons();
 }
            void Reset()
            {
                if(pInstance)
                   pInstance->SetData(DATA_EARTHRAGER_PTAH_EVENT, NOT_STARTED);

                Phase = PHASE_NORMAL;
                SpawnCount = 3;
                Phased = false;
                PhaseCount = 0;
                FlameBoltTimer = 7000;
                RagingSmashTimer = 4000;
                EarthSpikeTimer = 12000;
                RemoveSummons();
                me->SetUInt32Value(UNIT_NPC_EMOTESTATE,0);
                me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
            }
示例#22
0
        void Reset()
        {
            me->SetReactState(REACT_AGGRESSIVE);
            RemoveSummons();

            Phase = PHASE_NORMAL;

            FenixTimer = 9000;
            PlagueOfAgesTimer = 7000;
            FiftyLashingsTimer = 10000;
            HeavensFuryTimer = 12000;

            FenixSummoned = false;
            Phased = false;

            me->RemoveAurasDueToSpell(SPELL_REPENTANCE_AURA);
        }
示例#23
0
        void Reset()
        {
            RemoveSummons();
            me->SetDisplayId(me->GetNativeDisplayId());
            me->ClearUnitState(UNIT_STAT_ROOT | UNIT_STAT_STUNNED);
            me->SetReactState(REACT_PASSIVE);
            me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE);

            bEventInProgress = false;
            bEvent = false;
            bSummonArmy = false;
            bDeathArmyDone = false;
            bFight = false;

            if (GameObject* pGO = GameObject::GetGameObject(*me, pInstance->GetData64(DATA_MAIN_GATE1)))
                pInstance->HandleGameObject(pGO->GetGUID(),true);
            if (GameObject* pGO = GameObject::GetGameObject(*me, pInstance->GetData64(DATA_MAIN_GATE1)))
                pInstance->HandleGameObject(pGO->GetGUID(),false);


            if (bEventInBattle)
            {
                me->GetMotionMaster()->MovePoint(1,743.396f, 635.411f, 411.575f);
                // me->setFaction(14);
                // me->SetReactState(REACT_AGGRESSIVE);
                // me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
            }

            uiPhase = PHASE_UNDEAD;

            uiIcyTouchTimer = urand(5000,9000);
            uiIcyTouch1Timer = urand(15000,15000);
            uiPlagueStrikeTimer = urand(10000,13000);
            uiPlagueStrike1Timer = urand(14000,14000);
            uiDeathRespiteTimer = urand(17000,17000);
            uiObliterateTimer = urand(17000,19000);
            uiObliterate1Timer = urand(15000,15000);
            uiDesecrationTimer = urand(15000,16000);
            uiDesecration1Timer = urand(22000,22000);
            uiDeathArmyCheckTimer = 7000;
            uiResurrectTimer = 4000;
            uiGhoulExplodeTimer = 8000;
            uiDeathBiteTimer = urand (2000,4000);
            uiMarkedDeathTimer = urand (5000,7000);
            uiIntroTimer = 5000;
        }
示例#24
0
 void Reset()
 {
     RemoveSummons();
     SupernovaTimer = 15000+rand()%5000;
     AstralRainTimer = 10000;
     CelestialCallPhase3Timer = 25000;
     CelestialCallPhase2Timer = 25000;
     CelestialCallPhase1Timer = 25000;
     VeilOfSkyPhase3Timer = 20000;
     VeilOfSkyPhase2Timer = 20000;
     VeilOfSkyPhase1Timer = 20000;
     Phased = false;
     AstralRain = true;
     VeilOfSky = true;
     CelestialCall = true;
     Phase = 0;
 }
示例#25
0
            void SummonHelpers()
            {
                RemoveSummons();
                me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);

                Creature* cr = NULL;
                if (cr = me->SummonCreature(NPC_RIGGER_GIZELTON, *me))
                {
                    cr->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
                    summons[0] = cr->GetGUID();
                }
                if (cr = me->SummonCreature(NPC_CARAVAN_KODO, *me))
                    summons[1] = cr->GetGUID();
                if (cr = me->SummonCreature(NPC_CARAVAN_KODO, *me))
                    summons[2] = cr->GetGUID();

                SummonsFollow();
            }
            void JustDied(Unit* /*Kill*/)
            {
                RemoveSummons();
                Talk(SAY_DEATH);
                if (pInstance)
                    pInstance->SetData(DATA_TEMPLE_GUARDIAN_ANHUUR, DONE);

                GameObject* Door1 = me->FindNearestGameObject(202307, 200);
                if (Door1)
                    Door1->SetGoState(GO_STATE_ACTIVE);

                GameObject* Bridge = me->FindNearestGameObject(GO_ANHUUR_BRIDGE, 200);
                if (Bridge)
                    Bridge->SetGoState(GO_STATE_ACTIVE);
                
                GameObject* Door = me->FindNearestGameObject(GO_ANHUUR_BRIDGE_WALL, 200);
				if (Door)
					Door->RemoveFromWorld();
            }
示例#27
0
        void Reset()
        {
            Phased = false;
            RemoveSummons();

            Phase = PHASE_NORMAL;

            SpawnCount = 20;
            PhaseCount = 0;

            CurseBloodTimer = urand(8000, 13000);
            ForceGripTimer = 22000;
            SummonGravityWellTimer = urand(11000,16000);
            SummonDevoutTimer = urand(19000,27000);

            me->RemoveAurasDueToSpell(DUNGEON_MODE(SPELL_ENERGY_SHIELD_N,SPELL_ENERGY_SHIELD_H));

            me->GetMotionMaster()->MoveTargetedHome();
        }
示例#28
0
            void UpdateAI(const uint32 diff)
            {
                if (!UpdateVictim() && !me->HasAura(SPELL_SHIELD_OF_LIGHT))
                    return;

                if ((me->HealthBelowPct(34) && Phase == PHASE_NORMAL && PhaseCount == 1) ||
                    (me->HealthBelowPct(67) && Phase == PHASE_NORMAL && PhaseCount == 0))
                {
                    ChangePhase();
                }

                if (Phase == PHASE_SHIELD && FlameCount == 0)
                {
                    me->RemoveAurasDueToSpell(SPELL_SHIELD_OF_LIGHT);
                    FlameCount = 2;
                }

                if (!me->HasUnitState(UNIT_STAT_CASTING) && Phase == PHASE_SHIELD)
                {
                    Phase = PHASE_NORMAL;
                    RemoveSummons();
                }

                events.Update(diff);

                while (uint32 eventId = events.ExecuteEvent())
                {
                    switch (eventId)
                    {
                        case EVENT_REKOCKING:
                            if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
                                DoCast(target, SPELL_DIVINE_RECKONING);
                            events.ScheduleEvent(EVENT_REKOCKING, urand(15000, 18000));
                            break;
                        case EVENT_FLAMES:
                            if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
                                target->CastSpell(target, SPELL_SEARING_FLAME_SUMM, true);
                            events.ScheduleEvent(EVENT_FLAMES, 8000);
                            break;
                    }
                }
                DoMeleeAttackIfReady();
            }
示例#29
0
            void UpdateAI(const uint32 diff)
            {
                if (!UpdateVictim())
                    return;

                if ((me->HealthBelowPct(34) && Phase == PHASE_NORMAL && PhaseCount == 1) || (me->HealthBelowPct(67) && Phase == PHASE_NORMAL && PhaseCount == 0))
                {
                    ChangePhase();
                }

                if (Phase == PHASE_SHIELD && FlameCount == 0)
                {
                    me->RemoveAurasDueToSpell(SPELL_SHIELD_OF_LIGHT);
                    FlameCount = 2;
                }

                if (!me->HasUnitState(UNIT_STATE_CASTING) && Phase == PHASE_SHIELD)
                {
                    Phase = PHASE_NORMAL;
                    RemoveSummons();
                }

                if (me->HasAura(SPELL_SHIELD_OF_LIGHT))
                    return;

                if (DivineReckoningTimer <= diff && Phase == PHASE_NORMAL)
                {
                    if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
                        DoCast(target, SPELL_DIVINE_RECKONING);
                    DivineReckoningTimer = urand(15000, 18000);
                }
                else DivineReckoningTimer -= diff;

                if (SearingFlameTimer <= diff && Phase == PHASE_NORMAL)
                {
                    if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
                        target->CastSpell(target, SPELL_SEARING_FLAME_SUMM, true);
                    SearingFlameTimer = 8000;
                }
                else SearingFlameTimer -= diff;

                DoMeleeAttackIfReady();
            }
示例#30
0
        void Reset()
        {
            Phased = false;
            RemoveSummons();

            Phase = PHASE_NORMAL;

            SpawnCount = 6;
            PhaseCount = 0;

            //FlameBoltTimer = urand(15000,27000);
            SmashTimer = urand(4000, 10000);
            SummonPointTimer = urand(11000,16000);

            me->RemoveAurasDueToSpell(SPELL_VORTEX_DUST);
            me->RemoveAurasDueToSpell(SPELL_DUST_MOVE);

            me->GetMotionMaster()->MoveTargetedHome();
        }