Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ScriptPCH.h"
- /*
- * Script Name: Grim Batol
- * Author: Your Name
- * Version: 0.1
- */
- enum Spells
- {
- // General Umbriss
- SPELL_GENERAL_UMBRISS_MODGUD_MALICE = 74634,
- SPELL_GENERAL_UMBRISS_BLITZ_PRIMING = 74670,
- SPELL_GENERAL_UMBRISS_FRENZY = 74699,
- SPELL_GENERAL_UMBRISS_GROUND_SIEGE = 74752,
- // Forgemaster Throngus
- SPELL_FORGEMASTER_THRONGUS_CAVE_IN = 94973,
- SPELL_FORGEMASTER_THRONGUS_LAVA_BARRAGE = 74522,
- SPELL_FORGEMASTER_THRONGUS_SUPERHEATED_FLAMES = 74562,
- // Drahga Shadowburner
- SPELL_DRAHGA_SHADOWBURNER_BURNING_SHADOWBOLT = 75245,
- SPELL_DRAHGA_SHADOWBURNER_INVOCATION_OF_FLAME_AURA = 74562,
- SPELL_DRAHGA_SHADOWBURNER_SHADOW_BREATH = 74525,
- SPELL_DRAHGA_SHADOWBURNER_SUPERNOVA = 74521,
- SPELL_DRAHGA_SHADOWBURNER_VALIONAS_FLAME_AOE = 75273
- };
- enum Events
- {
- // General Umbriss
- EVENT_GENERAL_UMBRISS_MODGUD_MALICE = 1,
- EVENT_GENERAL_UMBRISS_BLITZ_PRIMING = 2,
- EVENT_GENERAL_UMBRISS_FRENZY = 3,
- EVENT_GENERAL_UMBRISS_GROUND_SIEGE = 4,
- // Forgemaster Throngus
- EVENT_FORGEMASTER_THRONGUS_CAVE_IN = 5,
- EVENT_FORGEMASTER_THRONGUS_LAVA_BARRAGE = 6,
- EVENT_FORGEMASTER_THRONGUS_SUPERHEATED_FLAMES = 7,
- // Drahga Shadowburner
- EVENT_DRAHGA_SHADOWBURNER_BURNING_SHADOWBOLT = 8,
- EVENT_DRAHGA_SHADOWBURNER_INVOCATION_OF_FLAME_AURA = 9,
- EVENT_DRAHGA_SHADOWBURNER_SHADOW_BREATH = 10,
- EVENT_DRAHGA_SHADOWBURNER_SUPERNOVA = 11,
- EVENT_DRAHGA_SHADOWBURNER_VALIONAS_FLAME_AOE = 12
- };
- class grim_batol : public InstanceScript
- {
- public:
- grim_batol() : InstanceScript("grim_batol") { }
- void OnCreatureCreate(Creature* creature) override
- {
- switch (creature->GetEntry())
- {
- case BOSS_GENERAL_UMBRISS:
- creature->SetReactState(REACT_PASSIVE);
- break;
- case BOSS_FORGEMASTER_THRONGUS:
- creature->SetReactState(REACT_PASSIVE);
- break;
- case BOSS_DRAHGA_SHADOWBURNER:
- creature->SetReactState(REACT_PASSIVE);
- break;
- }
- }
- void OnUnitDeath(Unit* unit) override
- {
- Creature* creature = unit->ToCreature();
- if (!creature)
- return;
- switch (creature->GetEntry())
- {
- case BOSS_GENERAL_UMBRISS:
- HandleGameObject(instance->GetData64(DATA_GENERAL_UMBRISS_DOOR), true);
- break;
- case BOSS_FORGEMASTER_THRONGUS:
- HandleGameObject(instance->GetData64(DATA_FORGEMASTER_THRONGUS_DOOR), true);
- break;
- case BOSS_DRAHGA_SHADOWBURNER:
- HandleGameObject(instance->GetData64(DATA_DRAHGA_SHADOWBURNER_DOOR), true);
- break;
- }
- }
- void OnGameObjectCreate(GameObject* go) override
- {
- switch (go->GetEntry())
- {
- case GO_GENERAL_UMBRISS_DOOR:
- HandleGameObject(NULL, false, go);
- break;
- case GO_FORGEMASTER_THRONGUS_DOOR:
- HandleGameObject(NULL, false, go);
- break;
- case GO_DRAHGA_SHADOWBURNER_DOOR:
- HandleGameObject(NULL, false, go);
- break;
- }
- }
- void SetData(uint32 type, uint32 data) override
- {
- switch (type)
- {
- case DATA_GENERAL_UMBRISS_EVENT:
- if (data == IN_PROGRESS)
- {
- if (Creature* generalUmbriss = instance->GetCreature(DATA_GENERAL_UMBRISS))
- {
- generalUmbriss->SetReactState(REACT_AGGRESSIVE);
- generalUmbriss->AI()->DoZoneInCombat(generalUmbriss);
- events.ScheduleEvent(EVENT_GENERAL_UMBRISS_MODGUD_MALICE, urand(5000, 8000));
- events.ScheduleEvent(EVENT_GENERAL_UMBRISS_BLITZ_PRIMING, urand(10000, 12000));
- events.ScheduleEvent(EVENT_GENERAL_UMBRISS_FRENZY, urand(15000, 20000));
- events.ScheduleEvent(EVENT_GENERAL_UMBRISS_GROUND_SIEGE, urand(25000, 30000));
- }
- }
- break;
- case DATA_FORGEMASTER_THRONGUS_EVENT:
- if (data == IN_PROGRESS)
- {
- if (Creature* forgemasterThrongus = instance->GetCreature(DATA_FORGEMASTER_THRONGUS))
- {
- forgemasterThrongus->SetReactState(REACT_AGGRESSIVE);
- forgemasterThrongus->AI()->DoZoneInCombat(forgemasterThrongus);
- events.ScheduleEvent(EVENT_FORGEMASTER_THRONGUS_CAVE_IN, urand(3000, 10000));
- events.ScheduleEvent(EVENT_FORGEMASTER_THRONGUS_LAVA_BARRAGE, urand(10000, 15000));
- events.ScheduleEvent(EVENT_FORGEMASTER_THRONGUS_SUPERHEATED_FLAMES, urand(15000, 20000));
- }
- }
- break;
- case DATA_DRAHGA_SHADOWBURNER_EVENT:
- if (data == IN_PROGRESS)
- {
- if (Creature* drahgaShadowburner = instance->GetCreature(DATA_DRAHGA_SHADOWBURNER))
- {
- drahgaShadowburner->SetReactState(REACT_AGGRESSIVE);
- drahgaShadowburner->AI()->DoZoneInCombat(drahgaShadowburner);
- events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_BURNING_SHADOWBOLT, urand(3000, 5000));
- events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_INVOCATION_OF_FLAME_AURA, urand(10000, 15000));
- events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_SHADOW_BREATH, urand(15000, 20000));
- events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_SUPERNOVA, urand(20000, 25000));
- events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_VALIONAS_FLAME_AOE, urand(25000, 30000));
- }
- }
- break;
- }
- }
- void Update(uint32 diff) override
- {
- events.Update(diff);
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- // General Umbriss
- case EVENT_GENERAL_UMBRISS_MODGUD_MALICE:
- if (Creature* generalUmbriss = instance->GetCreature(DATA_GENERAL_UMBRISS))
- generalUmbriss->AI()->DoCastAOE(SPELL_GENERAL_UMBRISS_MODGUD_MALICE);
- events.ScheduleEvent(EVENT_GENERAL_UMBRISS_MODGUD_MALICE, urand(10000, 12000));
- break;
- case EVENT_GENERAL_UMBRISS_BLITZ_PRIMING:
- if (Creature* generalUmbriss = instance->GetCreature(DATA_GENERAL_UMBRISS))
- generalUmbriss->AI()->DoCastAOE(SPELL_GENERAL_UMBRISS_BLITZ_PRIMING);
- events.ScheduleEvent(EVENT_GENERAL_UMBRISS_BLITZ_PRIMING, urand(15000, 20000));
- break;
- case EVENT_GENERAL_UMBRISS_FRENZY:
- if (Creature* generalUmbriss = instance->GetCreature(DATA_GENERAL_UMBRISS))
- generalUmbriss->AI()->DoCastAOE(SPELL_GENERAL_UMBRISS_FRENZY);
- events.ScheduleEvent(EVENT_GENERAL_UMBRISS_FRENZY, urand(25000, 30000));
- break;
- case EVENT_GENERAL_UMBRISS_GROUND_SIEGE:
- if (Creature* generalUmbriss = instance->GetCreature(DATA_GENERAL_UMBRISS))
- generalUmbriss->AI()->DoCastAOE(SPELL_GENERAL_UMBRISS_GROUND_SIEGE);
- events.ScheduleEvent(EVENT_GENERAL_UMBRISS_GROUND_SIEGE, urand(35000, 40000));
- break;
- // Forgemaster Throngus
- case EVENT_FORGEMASTER_THRONGUS_CAVE_IN:
- if (Creature* forgemasterThrongus = instance->GetCreature(DATA_FORGEMASTER_THRONGUS))
- forgemasterThrongus->AI()->DoCastAOE(SPELL_FORGEMASTER_THRONGUS_CAVE_IN);
- events.ScheduleEvent(EVENT_FORGEMASTER_THRONGUS_CAVE_IN, urand(10000, 15000));
- break;
- case EVENT_FORGEMASTER_THRONGUS_LAVA_BARRAGE:
- if (Creature* forgemasterThrongus = instance->GetCreature(DATA_FORGEMASTER_THRONGUS))
- forgemasterThrongus->AI()->DoCastAOE(SPELL_FORGEMASTER_THRONGUS_LAVA_BARRAGE);
- events.ScheduleEvent(EVENT_FORGEMASTER_THRONGUS_LAVA_BARRAGE, urand(15000, 20000));
- break;
- case EVENT_FORGEMASTER_THRONGUS_SUPERHEATED_FLAMES:
- if (Creature* forgemasterThrongus = instance->GetCreature(DATA_FORGEMASTER_THRONGUS))
- forgemasterThrongus->AI()->DoCastAOE(SPELL_FORGEMASTER_THRONGUS_SUPERHEATED_FLAMES);
- events.ScheduleEvent(EVENT_FORGEMASTER_THRONGUS_SUPERHEATED_FLAMES, urand(20000, 25000));
- break;
- // Drahga Shadowburner
- case EVENT_DRAHGA_SHADOWBURNER_BURNING_SHADOWBOLT:
- if (Creature* drahgaShadowburner = instance->GetCreature(DATA_DRAHGA_SHADOWBURNER))
- drahgaShadowburner->AI()->DoCastAOE(SPELL_DRAHGA_SHADOWBURNER_BURNING_SHADOWBOLT);
- events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_BURNING_SHADOWBOLT, urand(8000, 10000));
- break;
- case EVENT_DRAHGA_SHADOWBURNER_INVOCATION_OF_FLAME_AURA:
- if (Creature* drahgaShadowburner = instance->GetCreature(DATA_DRAHGA_SHADOWBURNER))
- drahgaShadowburner->AI()->DoCastAOE(SPELL_DRAHGA_SHADOWBURNER_INVOCATION_OF_FLAME_AURA);
- events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_INVOCATION_OF_FLAME_AURA, urand(15000, 20000));
- break;
- case EVENT_DRAHGA_SHADOWBURNER_SHADOW_BREATH:
- if (Creature* drahgaShadowburner = instance->GetCreature(DATA_DRAHGA_SHADOWBURNER))
- drahgaShadowburner->AI()->DoCastAOE(SPELL_DRAHGA_SHADOWBURNER_SHADOW_BREATH);
- events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_SHADOW_BREATH, urand(20000, 25000));
- break;
- case EVENT_DRAHGA_SHADOWBURNER_SUPERNOVA:
- if (Creature* drahgaShadowburner = instance->GetCreature(DATA_DRAHGA_SHADOWBURNER))
- drahgaShadowburner->AI()->DoCastAOE(SPELL_DRAHGA_SHADOWBURNER_SUPERNOVA);
- events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_SUPERNOVA, urand(25000, 30000));
- break;
- case EVENT_DRAHGA_SHADOWBURNER_VALIONAS_FLAME_AOE:
- if (Creature* drahgaShadowburner = instance->GetCreature(DATA_DRAHGA_SHADOWBURNER))
- drahgaShadowburner->AI()->DoCastAOE(SPELL_DRAHGA_SHADOWBURNER_VALIONAS_FLAME_AOE);
- events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_VALIONAS_FLAME_AOE, urand(30000, 35000));
- break;
- }
- }
- }
- };
- void AddSC_grim_batol()
- {
- new grim_batol();
- }
Advertisement
Add Comment
Please, Sign In to add comment