Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- -----------------------------------------------------|
- Script Data: |
- |
- Scripted By YouarexD |
- |
- SDComplete : 00% |
- |
- Released on EmuDevs.com |
- |
- -----------------------------------------------------| |
- */
- enum Spells
- {
- SPELL_COUNTDOWN = 99516, // Phase One
- SPELL_MAGMA_RIFT = 99840, // Phase One
- SPELL_TOXIN_RAIN = 99333, // Phase One
- SPELL_HAND_OF_RAGNAROS = 98237, // Phase One
- SPELL_MAGMA_BEAT = 98313, // Phase One
- SPELL_BURNING_WOUND = 99399, // Phase One
- SPELL_BLADE_DANCE = 105784, // Phase Two
- SPELL_LIGHTNING_BOMB = 109541, // Phase Two
- SPELL_FEEDBACK = 108934, // Phase Two
- SPELL_SHOCKWAVE = 108046, // Phase Two
- SPELL_MENTAL_WITHRAWAL = 104322, // Phase Two
- SPELL_FINGER_OF_DEATH = 31984, // Phase Three
- };
- enum Events
- {
- EVENT_NONE,
- EVENT_COUNTDOWN,
- EVENT_MAGMA_RIFT,
- EVENT_TOXIN_RAIN,
- EVENT_HAND_OF_RAGNAROS,
- EVENT_MAGMA_BEAT,
- EVENT_BURNING_WOUND,
- EVENT_BLADE_DANCE,
- EVENT_LIGHTNING_BOMB,
- EVENT_FEEDBACK,
- EVENT_SHOCKWAVE,
- EVENT_MENTAL_WITHRAWAL,
- EVENT_FINGER_OF_DEATH,
- EVENT_SPAWN_CREATURE,
- EVENT_CHECK
- };
- class boss_Todesschwinge : public CreatureScript
- {
- public:
- boss_Todesschwinge() : CreatureScript("boss_Todesschwinge") { }
- struct boss_TodesschwingeAI : public ScriptedAI
- {
- boss_TodesschwingeAI(Creature* creature) : ScriptedAI(creature), Summons(me)
- {
- }
- SummonList Summons;
- void Reset() OVERRIDE
- {
- events.Reset();
- phase = 1;
- Summons.DespawnAll();
- }
- void EnterCombat(Unit* /* who */) OVERRIDE
- {
- events.ScheduleEvent(EVENT_COUNTDOWN, 30000);
- events.ScheduleEvent(EVENT_MAGMA_RIFT, 26000);
- events.ScheduleEvent(EVENT_TOXIN_RAIN, 22000);
- events.ScheduleEvent(EVENT_HAND_OF_RAGNAROS, 40000);
- events.ScheduleEvent(EVENT_MAGMA_BEAT, 18000);
- events.ScheduleEvent(EVENT_BURNING_WOUND, 10000);
- events.ScheduleEvent(EVENT_SPAWN_CREATURE, 45000);
- events.ScheduleEvent(EVENT_CHECK, 1500);
- me->MonsterYell("Dies ist der Anfang vom Ende!", LANG_UNIVERSAL, NULL);
- DoZoneInCombat();
- }
- void JustDied(Unit* /* victim */) OVERRIDE
- {
- me->MonsterYell("Wie konnte das passieren? Das ist unmög....lich....", LANG_UNIVERSAL, NULL);
- Summons.DespawnAll();
- }
- void JustSummoned(Creature* summoned)
- {
- summoned->SetInCombatWithZone();
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- summoned->AI()->AttackStart(target);
- switch (summoned->GetEntry())
- {
- Summons.Summon(summoned);
- }
- }
- void SummonedCreatureDespawn(Creature* summon)
- {
- Summons.Despawn(summon);
- }
- void UpdateAI(uint32 diff) OVERRIDE
- {
- if (!UpdateVictim())
- return;
- events.Update(diff);
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_CHECK:
- if (phase == 1 && me->GetHealthPct() <= 60)
- {
- me->MonsterYell("Ich werde gegen Euch nicht verlieren!", LANG_UNIVERSAL, NULL);
- events.Reset();
- events.ScheduleEvent(EVENT_BLADE_DANCE, 45000);
- events.ScheduleEvent(EVENT_LIGHTNING_BOMB, 20000);
- events.ScheduleEvent(EVENT_FEEDBACK, 75000);
- events.ScheduleEvent(EVENT_SHOCKWAVE, 36000);
- events.ScheduleEvent(EVENT_MENTAL_WITHRAWAL, 16000);
- phase = 2;
- }
- if (phase == 2 && me->GetHealthPct() <= 15)
- {
- me->MonsterYell("Es reicht mir!", LANG_UNIVERSAL, NULL);
- events.Reset();
- events.ScheduleEvent(EVENT_FINGER_OF_DEATH, 1800);
- events.ScheduleEvent(EVENT_BURNING_WOUND, 10000);
- events.ScheduleEvent(EVENT_SPAWN_CREATURE, 45000);
- phase = 3;
- }
- events.ScheduleEvent(EVENT_CHECK, 1500);
- break;
- case EVENT_COUNTDOWN:
- if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- DoCast(target, SPELL_COUNTDOWN);
- events.ScheduleEvent(EVENT_COUNTDOWN, 30000);
- break;
- case EVENT_MAGMA_RIFT:
- if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- DoCast(target, SPELL_MAGMA_RIFT);
- events.ScheduleEvent(EVENT_MAGMA_RIFT, 26000);
- break;
- case EVENT_TOXIN_RAIN:
- DoCastVictim(SPELL_TOXIN_RAIN);
- events.ScheduleEvent(EVENT_TOXIN_RAIN, 22000);
- break;
- case EVENT_HAND_OF_RAGNAROS:
- if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- DoCast(target, SPELL_HAND_OF_RAGNAROS);
- me->MonsterYell("Spührt meine MACHT!", LANG_UNIVERSAL, NULL);
- events.ScheduleEvent(EVENT_HAND_OF_RAGNAROS, 40000);
- break;
- case EVENT_MAGMA_BEAT:
- DoCastVictim(SPELL_MAGMA_BEAT);
- events.ScheduleEvent(EVENT_MAGMA_BEAT, 18000);
- break;
- case EVENT_BLADE_DANCE:
- if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- DoCast(target, SPELL_BLADE_DANCE);
- me->MonsterYell("Stribt!", LANG_UNIVERSAL, NULL);
- events.ScheduleEvent(EVENT_BLADE_DANCE, 45000);
- break;
- case EVENT_LIGHTNING_BOMB:
- if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- DoCast(target, SPELL_LIGHTNING_BOMB);
- events.ScheduleEvent(EVENT_LIGHTNING_BOMB, 20000);
- break;
- case EVENT_FEEDBACK:
- DoCast(me, SPELL_FEEDBACK);
- events.ScheduleEvent(EVENT_FEEDBACK, 75000);
- break;
- case EVENT_SHOCKWAVE:
- if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- DoCast(target, SPELL_SHOCKWAVE);
- me->MonsterYell("Schweigt!", LANG_UNIVERSAL, NULL);
- events.ScheduleEvent(EVENT_SHOCKWAVE, 36000);
- break;
- case EVENT_MENTAL_WITHRAWAL:
- if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- DoCast(target, SPELL_MENTAL_WITHRAWAL);
- events.ScheduleEvent(EVENT_MENTAL_WITHRAWAL, 16000);
- break;
- case EVENT_FINGER_OF_DEATH:
- if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- DoCast(target, SPELL_FINGER_OF_DEATH);
- events.ScheduleEvent(EVENT_FINGER_OF_DEATH, 1200);
- break;
- case EVENT_SPAWN_CREATURE:
- me->SummonCreature(100001, -13210.62f, 260.21f, 21.85f, 1.1f, TEMPSUMMON_DEAD_DESPAWN, 8000);
- me->SummonCreature(100001, -13206.60f, 316.95f, 21.85f, 4.8f, TEMPSUMMON_DEAD_DESPAWN, 8000);
- me->SummonCreature(100001, -13167.76f, 297.79f, 21.85f, 3.6f, TEMPSUMMON_DEAD_DESPAWN, 8000);
- me->SummonCreature(100001, -13167.98f, 248.54f, 21.85f, 2.3f, TEMPSUMMON_DEAD_DESPAWN, 8000);
- me->SummonCreature(100001, -13246.93f, 289.71f, 21.85f, 6.0f, TEMPSUMMON_DEAD_DESPAWN, 8000);
- events.ScheduleEvent(EVENT_SPAWN_CREATURE, 45000);
- break;
- case EVENT_BURNING_WOUND:
- DoCastVictim(SPELL_BURNING_WOUND);
- events.ScheduleEvent(EVENT_BURNING_WOUND, 10000);
- me->MonsterYell("Verbrennt!", LANG_UNIVERSAL, NULL);
- break;
- }
- }
- DoMeleeAttackIfReady();
- }
- private:
- EventMap events;
- uint8 phase;
- };
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new boss_TodesschwingeAI(creature);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement