Scripts/The Slave Pens: Fix up Mennu the Betrayer and add Rokmar the Cracker & Quagmirran.
This commit is contained in:
1 parent
e0138abaac
commit
113735690a
6 files changed
+316
-37
No files matched your search
@@ -0,0 +1,13 @@
|
||||
UPDATE `creature_template` SET `AIName` = '', `ScriptName`= 'boss_rokmar_the_crackler' WHERE entry=17991;
|
||||
DELETE FROM creature_ai_scripts WHERE creature_id=17991;
|
||||
UPDATE `creature_template` SET `AIName` = '', `ScriptName`= 'boss_mennu_the_betrayer' WHERE entry=17941;
|
||||
DELETE FROM creature_ai_scripts WHERE creature_id=17941;
|
||||
DELETE FROM creature_ai_texts WHERE entry BETWEEN -98 AND -93;
|
||||
UPDATE `creature_template` SET `AIName` = '', `ScriptName`= 'boss_quagmirran' WHERE entry=17942;
|
||||
DELETE FROM creature_ai_scripts WHERE creature_id=17942;
|
||||
|
||||
-- Add missing spelldifficulty_dbc values
|
||||
DELETE FROM `spelldifficulty_dbc` WHERE `id` IN (31956,34780);
|
||||
INSERT INTO `spelldifficulty_dbc` (`id`,`spellid0`,`spellid1`) VALUES
|
||||
(31956,31956,39005), -- Rokmar the Crackler
|
||||
(34780,34780,39340); -- Quagmirran
|
||||
@@ -575,7 +575,7 @@ void AddSC_boss_grandmaster_vorpil();
|
||||
void AddSC_boss_murmur();
|
||||
void AddSC_instance_shadow_labyrinth();
|
||||
|
||||
//Black Temple
|
||||
// Black Temple
|
||||
void AddSC_black_temple();
|
||||
void AddSC_boss_illidan();
|
||||
void AddSC_boss_shade_of_akama();
|
||||
@@ -588,7 +588,7 @@ void AddSC_boss_najentus();
|
||||
void AddSC_boss_illidari_council();
|
||||
void AddSC_instance_black_temple();
|
||||
|
||||
//Coilfang Reservoir - Serpent Shrine Cavern
|
||||
// Coilfang Reservoir - Serpent Shrine Cavern
|
||||
void AddSC_boss_fathomlord_karathress();
|
||||
void AddSC_boss_hydross_the_unstable();
|
||||
void AddSC_boss_lady_vashj();
|
||||
@@ -597,22 +597,24 @@ void AddSC_boss_morogrim_tidewalker();
|
||||
void AddSC_instance_serpentshrine_cavern();
|
||||
void AddSC_boss_the_lurker_below();
|
||||
|
||||
//Coilfang Reservoir - The Steam Vault
|
||||
// Coilfang Reservoir - The Steam Vault
|
||||
void AddSC_boss_hydromancer_thespia();
|
||||
void AddSC_boss_mekgineer_steamrigger();
|
||||
void AddSC_boss_warlord_kalithresh();
|
||||
void AddSC_instance_steam_vault();
|
||||
|
||||
//Coilfang Reservoir - The Slave Pens
|
||||
// Coilfang Reservoir - The Slave Pens
|
||||
void AddSC_instance_the_slave_pens();
|
||||
void AddSC_boss_mennu_the_betrayer();
|
||||
void AddSC_boss_rokmar_the_crackler();
|
||||
void AddSC_boss_quagmirran();
|
||||
|
||||
//Coilfang Reservoir - The Underbog
|
||||
// Coilfang Reservoir - The Underbog
|
||||
void AddSC_instance_the_underbog();
|
||||
void AddSC_boss_hungarfen();
|
||||
void AddSC_boss_the_black_stalker();
|
||||
|
||||
//Gruul's Lair
|
||||
// Gruul's Lair
|
||||
void AddSC_boss_gruul();
|
||||
void AddSC_boss_high_king_maulgar();
|
||||
void AddSC_instance_gruuls_lair();
|
||||
@@ -1111,7 +1113,8 @@ void AddOutlandScripts()
|
||||
AddSC_boss_murmur();
|
||||
AddSC_instance_shadow_labyrinth();
|
||||
|
||||
AddSC_black_temple(); //Black Temple
|
||||
// Black Temple
|
||||
AddSC_black_temple();
|
||||
AddSC_boss_illidan();
|
||||
AddSC_boss_shade_of_akama();
|
||||
AddSC_boss_supremus();
|
||||
@@ -1122,23 +1125,35 @@ void AddOutlandScripts()
|
||||
AddSC_boss_najentus();
|
||||
AddSC_boss_illidari_council();
|
||||
AddSC_instance_black_temple();
|
||||
AddSC_boss_fathomlord_karathress(); //CR Serpent Shrine Cavern
|
||||
|
||||
// Coilfang Reservoir - Serpent Shrine Cavern
|
||||
AddSC_boss_fathomlord_karathress();
|
||||
AddSC_boss_hydross_the_unstable();
|
||||
AddSC_boss_lady_vashj();
|
||||
AddSC_boss_leotheras_the_blind();
|
||||
AddSC_boss_morogrim_tidewalker();
|
||||
AddSC_instance_serpentshrine_cavern();
|
||||
AddSC_boss_the_lurker_below();
|
||||
AddSC_boss_hydromancer_thespia(); //CR Steam Vault
|
||||
|
||||
// Coilfang Reservoir - The Steam Vault
|
||||
AddSC_instance_steam_vault();
|
||||
AddSC_boss_hydromancer_thespia();
|
||||
AddSC_boss_mekgineer_steamrigger();
|
||||
AddSC_boss_warlord_kalithresh();
|
||||
AddSC_instance_steam_vault();
|
||||
AddSC_instance_the_slave_pens(); //The Slave Pens
|
||||
|
||||
// Coilfang Reservoir - The Slave Pens
|
||||
AddSC_instance_the_slave_pens();
|
||||
AddSC_boss_mennu_the_betrayer();
|
||||
AddSC_boss_hungarfen(); //CR Underbog
|
||||
AddSC_boss_the_black_stalker();
|
||||
AddSC_boss_rokmar_the_crackler();
|
||||
AddSC_boss_quagmirran();
|
||||
|
||||
// Coilfang Reservoir - The Underbog
|
||||
AddSC_instance_the_underbog();
|
||||
AddSC_boss_gruul(); //Gruul's Lair
|
||||
AddSC_boss_hungarfen();
|
||||
AddSC_boss_the_black_stalker();
|
||||
|
||||
// Gruul's Lair
|
||||
AddSC_boss_gruul();
|
||||
AddSC_boss_high_king_maulgar();
|
||||
AddSC_instance_gruuls_lair();
|
||||
AddSC_boss_broggok(); //HC Blood Furnace
|
||||
|
||||
@@ -45,6 +45,8 @@ set(scripts_STAT_SRCS
|
||||
Outland/CoilfangReservoir/TheSlavePens/instance_the_slave_pens.cpp
|
||||
Outland/CoilfangReservoir/TheSlavePens/the_slave_pens.h
|
||||
Outland/CoilfangReservoir/TheSlavePens/boss_mennu_the_betrayer.cpp
|
||||
Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp
|
||||
Outland/CoilfangReservoir/TheSlavePens/boss_quagmirran.cpp
|
||||
Outland/CoilfangReservoir/TheUnderbog/instance_the_underbog.cpp
|
||||
Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp
|
||||
Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp
|
||||
|
||||
+21
-23
@@ -17,7 +17,7 @@
|
||||
|
||||
/* ScriptData
|
||||
SDName: boss_mennu_the_betrayer
|
||||
SD%Complete: 100%
|
||||
SD%Complete: 95%
|
||||
SDComment:
|
||||
SDCategory: Coilfang Reservoir, The Slave Pens
|
||||
EndScriptData */
|
||||
@@ -35,11 +35,11 @@ enum Say
|
||||
|
||||
enum Spells
|
||||
{
|
||||
SPELL_TAINTED_STONESKIN_TOTEM = 31985,
|
||||
SPELL_TAINTED_EARTHGRAB_TOTEM = 31981,
|
||||
SPELL_CORRUPTED_NOVA_TOTEM = 31991,
|
||||
SPELL_MENNUS_HEALING_WARD = 34980,
|
||||
SPELL_LIGHTNING_BOLT = 35010
|
||||
SPELL_TAINTED_STONESKIN_TOTEM = 31985, // every 30 sec if health below 100%
|
||||
SPELL_TAINTED_EARTHGRAB_TOTEM = 31981, // ?
|
||||
SPELL_CORRUPTED_NOVA_TOTEM = 31991, // ?
|
||||
SPELL_MENNUS_HEALING_WARD = 34980, // every 14 - 25 sec
|
||||
SPELL_LIGHTNING_BOLT = 35010 // every 14 - 19 sec
|
||||
};
|
||||
|
||||
enum Events
|
||||
@@ -47,7 +47,8 @@ enum Events
|
||||
EVENT_TAINTED_STONESKIN_TOTEM = 1,
|
||||
EVENT_TAINTED_EARTHGRAB_TOTEM = 2,
|
||||
EVENT_CORRUPTED_NOVA_TOTEM = 3,
|
||||
EVENT_LIGHTNING_BOLT = 4
|
||||
EVENT_MENNUS_HEALING_WARD = 4,
|
||||
EVENT_LIGHTNING_BOLT = 5
|
||||
};
|
||||
|
||||
class boss_mennu_the_betrayer : public CreatureScript
|
||||
@@ -62,7 +63,6 @@ class boss_mennu_the_betrayer : public CreatureScript
|
||||
void Reset() OVERRIDE
|
||||
{
|
||||
_Reset();
|
||||
healingWardDropped = false;
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) OVERRIDE
|
||||
@@ -74,10 +74,11 @@ class boss_mennu_the_betrayer : public CreatureScript
|
||||
void EnterCombat(Unit* /*who*/) OVERRIDE
|
||||
{
|
||||
_EnterCombat();
|
||||
events.ScheduleEvent(EVENT_TAINTED_STONESKIN_TOTEM, 18000);
|
||||
events.ScheduleEvent(EVENT_TAINTED_EARTHGRAB_TOTEM, 19000);
|
||||
events.ScheduleEvent(EVENT_CORRUPTED_NOVA_TOTEM, 20000);
|
||||
events.ScheduleEvent(EVENT_LIGHTNING_BOLT, urand(5000, 8000));
|
||||
events.ScheduleEvent(EVENT_TAINTED_STONESKIN_TOTEM, 30000);
|
||||
events.ScheduleEvent(EVENT_TAINTED_EARTHGRAB_TOTEM, 20000);
|
||||
events.ScheduleEvent(EVENT_CORRUPTED_NOVA_TOTEM, 60000);
|
||||
events.ScheduleEvent(EVENT_MENNUS_HEALING_WARD, urand(14000, 25000));
|
||||
events.ScheduleEvent(EVENT_LIGHTNING_BOLT, urand(14000, 19000));
|
||||
Talk(SAY_AGGRO);
|
||||
}
|
||||
|
||||
@@ -101,7 +102,9 @@ class boss_mennu_the_betrayer : public CreatureScript
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_TAINTED_STONESKIN_TOTEM:
|
||||
DoCast(me, SPELL_TAINTED_STONESKIN_TOTEM);
|
||||
if (HealthBelowPct(100))
|
||||
DoCast(me, SPELL_TAINTED_STONESKIN_TOTEM);
|
||||
events.ScheduleEvent(EVENT_TAINTED_STONESKIN_TOTEM, 30000);
|
||||
break;
|
||||
case EVENT_TAINTED_EARTHGRAB_TOTEM:
|
||||
DoCast(me, SPELL_TAINTED_EARTHGRAB_TOTEM);
|
||||
@@ -109,26 +112,21 @@ class boss_mennu_the_betrayer : public CreatureScript
|
||||
case EVENT_CORRUPTED_NOVA_TOTEM:
|
||||
DoCast(me, SPELL_CORRUPTED_NOVA_TOTEM);
|
||||
break;
|
||||
case EVENT_MENNUS_HEALING_WARD:
|
||||
DoCast(me, SPELL_MENNUS_HEALING_WARD);
|
||||
events.ScheduleEvent(EVENT_MENNUS_HEALING_WARD, urand(14000, 25000));
|
||||
break;
|
||||
case EVENT_LIGHTNING_BOLT:
|
||||
DoCastVictim(SPELL_LIGHTNING_BOLT, true);
|
||||
events.ScheduleEvent(EVENT_LIGHTNING_BOLT, urand(7000, 11000));
|
||||
events.ScheduleEvent(EVENT_LIGHTNING_BOLT, urand(14000, 25000));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (HealthBelowPct(60) && !healingWardDropped)
|
||||
{
|
||||
DoCast(me, SPELL_MENNUS_HEALING_WARD);
|
||||
healingWardDropped = true;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
private:
|
||||
bool healingWardDropped;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const OVERRIDE
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
SDName: boss_quagmirran
|
||||
SD%Complete: 100%
|
||||
SDComment:
|
||||
SDCategory: Coilfang Reservoir, The Slave Pens
|
||||
EndScriptData */
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "the_slave_pens.h"
|
||||
|
||||
enum Spells
|
||||
{
|
||||
SPELL_ACID_SPRAY = 38153,
|
||||
SPELL_CLEAVE = 40504,
|
||||
SPELL_UPPERCUT = 32055,
|
||||
SPELL_POISON_BOLT_VOLLEY = 34780 // 39340
|
||||
};
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_ACID_SPRAY = 1,
|
||||
EVENT_CLEAVE = 2,
|
||||
EVENT_UPPERCUT = 3,
|
||||
EVENT_POISON_BOLT_VOLLEY = 4
|
||||
};
|
||||
|
||||
class boss_quagmirran : public CreatureScript
|
||||
{
|
||||
public:
|
||||
boss_quagmirran() : CreatureScript("boss_quagmirran") { }
|
||||
|
||||
struct boss_quagmirranAI : public BossAI
|
||||
{
|
||||
boss_quagmirranAI(Creature* creature) : BossAI(creature, DATA_QUAGMIRRAN) { }
|
||||
|
||||
void Reset() OVERRIDE
|
||||
{
|
||||
_Reset();
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) OVERRIDE
|
||||
{
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) OVERRIDE
|
||||
{
|
||||
_EnterCombat();
|
||||
events.ScheduleEvent(EVENT_ACID_SPRAY, 25000);
|
||||
events.ScheduleEvent(EVENT_CLEAVE, 9000);
|
||||
events.ScheduleEvent(EVENT_UPPERCUT, 20000);
|
||||
events.ScheduleEvent(EVENT_POISON_BOLT_VOLLEY, 31000);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/) OVERRIDE { }
|
||||
|
||||
void UpdateAI(uint32 diff) OVERRIDE
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_ACID_SPRAY:
|
||||
DoCastAOE(SPELL_ACID_SPRAY);
|
||||
events.ScheduleEvent(EVENT_ACID_SPRAY, urand(20000, 25000));
|
||||
break;
|
||||
case EVENT_CLEAVE:
|
||||
DoCastVictim(SPELL_CLEAVE, true);
|
||||
events.ScheduleEvent(EVENT_CLEAVE, urand(18000, 34000));
|
||||
break;
|
||||
case EVENT_UPPERCUT:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 10.0f, true))
|
||||
DoCast(target, SPELL_UPPERCUT);
|
||||
events.ScheduleEvent(EVENT_UPPERCUT, 22000);
|
||||
break;
|
||||
case EVENT_POISON_BOLT_VOLLEY:
|
||||
DoCast(me, SPELL_POISON_BOLT_VOLLEY);
|
||||
events.ScheduleEvent(EVENT_POISON_BOLT_VOLLEY, 24000);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const OVERRIDE
|
||||
{
|
||||
return new boss_quagmirranAI(creature);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_quagmirran()
|
||||
{
|
||||
new boss_quagmirran();
|
||||
}
|
||||
+127
@@ -0,0 +1,127 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
SDName: boss_rokmar_the_crackler
|
||||
SD%Complete: 100%
|
||||
SDComment:
|
||||
SDCategory: Coilfang Reservoir, The Slave Pens
|
||||
EndScriptData */
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "the_slave_pens.h"
|
||||
|
||||
enum Spells
|
||||
{
|
||||
SPELL_GRIEVOUS_WOUND = 31956,
|
||||
SPELL_ENSNARING_MOSS = 31948,
|
||||
SPELL_WATER_SPIT = 35008,
|
||||
SPELL_FRENZY = 34970
|
||||
};
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_GRIEVOUS_WOUND = 1,
|
||||
EVENT_ENSNARING_MOSS = 2,
|
||||
EVENT_WATER_SPIT = 3
|
||||
};
|
||||
|
||||
class boss_rokmar_the_crackler : public CreatureScript
|
||||
{
|
||||
public:
|
||||
boss_rokmar_the_crackler() : CreatureScript("boss_rokmar_the_crackler") { }
|
||||
|
||||
struct boss_rokmar_the_cracklerAI : public BossAI
|
||||
{
|
||||
boss_rokmar_the_cracklerAI(Creature* creature) : BossAI(creature, DATA_MENNU_THE_BETRAYER) { }
|
||||
|
||||
void Reset() OVERRIDE
|
||||
{
|
||||
_Reset();
|
||||
rokmarFrenzy = false;
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) OVERRIDE
|
||||
{
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) OVERRIDE
|
||||
{
|
||||
_EnterCombat();
|
||||
events.ScheduleEvent(EVENT_GRIEVOUS_WOUND, 10000);
|
||||
events.ScheduleEvent(EVENT_ENSNARING_MOSS, 20000);
|
||||
events.ScheduleEvent(EVENT_WATER_SPIT, 14000);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/) OVERRIDE { }
|
||||
|
||||
void UpdateAI(uint32 diff) OVERRIDE
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_GRIEVOUS_WOUND:
|
||||
DoCastVictim(SPELL_GRIEVOUS_WOUND, true);
|
||||
events.ScheduleEvent(EVENT_GRIEVOUS_WOUND, urand(20000, 30000));
|
||||
break;
|
||||
case EVENT_ENSNARING_MOSS:
|
||||
DoCastAOE(SPELL_ENSNARING_MOSS);
|
||||
events.ScheduleEvent(EVENT_ENSNARING_MOSS, urand(20000, 30000));
|
||||
break;
|
||||
case EVENT_WATER_SPIT:
|
||||
DoCastAOE(SPELL_WATER_SPIT);
|
||||
events.ScheduleEvent(EVENT_WATER_SPIT, urand(14000, 18000));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (HealthBelowPct(10) && !rokmarFrenzy)
|
||||
{
|
||||
DoCast(me, SPELL_FRENZY);
|
||||
rokmarFrenzy = true;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
private:
|
||||
bool rokmarFrenzy;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const OVERRIDE
|
||||
{
|
||||
return new boss_rokmar_the_cracklerAI(creature);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_rokmar_the_crackler()
|
||||
{
|
||||
new boss_rokmar_the_crackler();
|
||||
}
|
||||
Reference in new issue
Block a user