mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Ruby Sanctum:
- Scripted General Zarithrian - Flame walls will now open after killing saviana and baltharus - Fixed savianas timers - Fixed some typos (baltarhus -> baltharus)
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
SET @ENTRY := 39946;
|
||||
UPDATE `creature_template` SET `lootid`=@ENTRY WHERE `entry`=39746;
|
||||
UPDATE `creature_template` SET `lootid`=@ENTRY+1 WHERE `entry`=39751;
|
||||
UPDATE `creature_template` SET `lootid`=@ENTRY+2 WHERE `entry`=39747;
|
||||
DELETE FROM `creature_loot_template` WHERE `entry` BETWEEN @ENTRY AND @ENTRY+2;
|
||||
INSERT INTO `creature_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
|
||||
(@ENTRY,49426,100,1,0,1,1),
|
||||
(@ENTRY+1,49426,100,1,0,1,1),
|
||||
(@ENTRY+2,49426,100,1,0,1,1);
|
||||
12
sql/updates/world/2011_06_04_00_world_creature_template.sql
Normal file
12
sql/updates/world/2011_06_04_00_world_creature_template.sql
Normal file
@@ -0,0 +1,12 @@
|
||||
DELETE FROM `creature_text` WHERE `entry`=39746;
|
||||
INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
|
||||
(39746,0,0, 'Alexstrasza has chosen capable allies.... A pity that I must END YOU!',14,0,100,0,0,17512, 'Baltharus the Warborn'),
|
||||
(39746,1,0, 'You thought you stood a chance?',14,0,50,0,0,17513, 'General Zarithrian'),
|
||||
(39746,1,1, 'It''s for the best.',14,0,50,0,0,17514, 'General Zarithrian'),
|
||||
(39746,2,0, 'Turn them to ash, minions!',14,0,100,0,0,17516, 'General Zarithrian'),
|
||||
(39746,3,0, 'HALION! I...',14,0,100,0,0,17515, 'General Zarithrian');
|
||||
|
||||
UPDATE `creature_template` SET `ScriptName`= 'npc_baltharus_the_warborn_clone' WHERE `ScriptName`= 'npc_baltarhus_the_warborn_clone';
|
||||
UPDATE `creature_template` SET `InhabitType`=3 WHERE `entry`=39794;
|
||||
UPDATE `creature_template` SET `ScriptName`= 'boss_general_zarithrian' WHERE `entry`=39746;
|
||||
UPDATE `creature_template` SET `ScriptName`= 'npc_onyx_flamecaller' WHERE `entry`=39814;
|
||||
@@ -484,6 +484,7 @@ void AddSC_instance_ruby_sanctum(); // Ruby Sanctum
|
||||
void AddSC_ruby_sanctum();
|
||||
void AddSC_boss_baltharus_the_warborn();
|
||||
void AddSC_boss_saviana_ragefire();
|
||||
void AddSC_boss_general_zarithrian();
|
||||
|
||||
void AddSC_dalaran();
|
||||
void AddSC_borean_tundra();
|
||||
@@ -1183,6 +1184,7 @@ void AddNorthrendScripts()
|
||||
AddSC_ruby_sanctum();
|
||||
AddSC_boss_baltharus_the_warborn();
|
||||
AddSC_boss_saviana_ragefire();
|
||||
AddSC_boss_general_zarithrian();
|
||||
|
||||
AddSC_dalaran();
|
||||
AddSC_borean_tundra();
|
||||
|
||||
@@ -49,6 +49,7 @@ set(scripts_STAT_SRCS
|
||||
Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
|
||||
Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
|
||||
Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp
|
||||
Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp
|
||||
Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h
|
||||
Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp
|
||||
Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
|
||||
|
||||
@@ -221,14 +221,14 @@ class boss_baltharus_the_warborn : public CreatureScript
|
||||
}
|
||||
};
|
||||
|
||||
class npc_baltarhus_the_warborn_clone : public CreatureScript
|
||||
class npc_baltharus_the_warborn_clone : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_baltarhus_the_warborn_clone() : CreatureScript("npc_baltarhus_the_warborn_clone") { }
|
||||
npc_baltharus_the_warborn_clone() : CreatureScript("npc_baltharus_the_warborn_clone") { }
|
||||
|
||||
struct npc_baltarhus_the_warborn_cloneAI : public ScriptedAI
|
||||
struct npc_baltharus_the_warborn_cloneAI : public ScriptedAI
|
||||
{
|
||||
npc_baltarhus_the_warborn_cloneAI(Creature* creature) : ScriptedAI(creature)
|
||||
npc_baltharus_the_warborn_cloneAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
_instance = (InstanceScript*)creature->GetInstanceScript();
|
||||
}
|
||||
@@ -251,8 +251,8 @@ class npc_baltarhus_the_warborn_clone : public CreatureScript
|
||||
{
|
||||
// This is here because DamageTaken wont trigger if the damage is deadly.
|
||||
if (_instance)
|
||||
if (Creature* baltarhus = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_BALTHARUS_THE_WARBORN)))
|
||||
killer->Kill(baltarhus);
|
||||
if (Creature* baltharus = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_BALTHARUS_THE_WARBORN)))
|
||||
killer->Kill(baltharus);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 const diff)
|
||||
@@ -295,7 +295,7 @@ class npc_baltarhus_the_warborn_clone : public CreatureScript
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
{
|
||||
return GetRubySanctumAI<npc_baltarhus_the_warborn_cloneAI>(creature);
|
||||
return GetRubySanctumAI<npc_baltharus_the_warborn_cloneAI>(creature);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -384,7 +384,7 @@ class spell_baltharus_enervating_brand_trigger : public SpellScriptLoader
|
||||
void AddSC_boss_baltharus_the_warborn()
|
||||
{
|
||||
new boss_baltharus_the_warborn();
|
||||
new npc_baltarhus_the_warborn_clone();
|
||||
new npc_baltharus_the_warborn_clone();
|
||||
new spell_baltharus_enervating_brand();
|
||||
new spell_baltharus_enervating_brand_trigger();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,292 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2011 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/>.
|
||||
*/
|
||||
|
||||
#include "ScriptPCH.h"
|
||||
#include "ScriptedEscortAI.h"
|
||||
#include "ruby_sanctum.h"
|
||||
|
||||
enum Texts
|
||||
{
|
||||
SAY_AGGRO = 0, // Alexstrasza has chosen capable allies.... A pity that I must END YOU!
|
||||
SAY_KILL = 1, // You thought you stood a chance? - It's for the best.
|
||||
SAY_ADDS = 2, // Turn them to ash, minions!
|
||||
SAY_DEATH = 3, // HALION! I...
|
||||
};
|
||||
|
||||
enum Spells
|
||||
{
|
||||
// General Zarithrian
|
||||
SPELL_INTIMIDATING_ROAR = 74384,
|
||||
SPELL_CLEAVE_ARMOR = 74367,
|
||||
// Zarithrian Spawn Stalker
|
||||
SPELL_SUMMON_FLAMECALLER = 74398,
|
||||
// Onyx Flamecaller
|
||||
SPELL_BLAST_NOVA = 74392,
|
||||
SPELL_LAVA_GOUT = 74394,
|
||||
};
|
||||
|
||||
enum Events
|
||||
{
|
||||
// General Zarithrian
|
||||
EVENT_CLEAVE = 1,
|
||||
EVENT_INTIDMDATING_ROAR = 2,
|
||||
EVENT_SUMMON_ADDS = 3,
|
||||
// Onyx Flamecaller
|
||||
EVENT_BLAST_NOVA = 4,
|
||||
EVENT_LAVA_GOUT = 5,
|
||||
};
|
||||
|
||||
uint32 const MAX_PATH_FLAMECALLER_WAYPOINTS = 12;
|
||||
|
||||
Position const FlamecallerWaypoints[MAX_PATH_FLAMECALLER_WAYPOINTS*2] =
|
||||
{
|
||||
// East
|
||||
{3042.971f, 419.8809f, 86.94320f, 0.0f},
|
||||
{3043.971f, 419.8809f, 86.94320f, 0.0f},
|
||||
{3044.885f, 428.8281f, 86.19320f, 0.0f},
|
||||
{3045.494f, 434.7930f, 85.56398f, 0.0f},
|
||||
{3045.900f, 438.7695f, 84.81398f, 0.0f},
|
||||
{3045.657f, 456.8290f, 85.95601f, 0.0f},
|
||||
{3043.657f, 459.0790f, 87.20601f, 0.0f},
|
||||
{3042.157f, 460.5790f, 87.70601f, 0.0f},
|
||||
{3040.907f, 462.0790f, 88.45601f, 0.0f},
|
||||
{3038.907f, 464.0790f, 89.20601f, 0.0f},
|
||||
{3025.907f, 478.0790f, 89.70601f, 0.0f},
|
||||
{3003.832f, 501.2510f, 89.47303f, 0.0f},
|
||||
// West
|
||||
{3062.596f, 636.9980f, 82.50338f, 0.0f},
|
||||
{3062.514f, 624.9980f, 83.70634f, 0.0f},
|
||||
{3062.486f, 620.9980f, 84.33134f, 0.0f},
|
||||
{3062.445f, 613.9930f, 84.45634f, 0.0f},
|
||||
{3062.445f, 613.9930f, 84.45634f, 0.0f},
|
||||
{3059.208f, 610.6501f, 85.39581f, 0.0f},
|
||||
{3055.958f, 606.9001f, 86.14581f, 0.0f},
|
||||
{3046.458f, 596.4001f, 86.89581f, 0.0f},
|
||||
{3043.958f, 593.4001f, 87.64581f, 0.0f},
|
||||
{3040.458f, 589.9001f, 88.39581f, 0.0f},
|
||||
{3034.458f, 583.1501f, 88.89581f, 0.0f},
|
||||
{3014.970f, 561.8073f, 88.83527f, 0.0f},
|
||||
};
|
||||
|
||||
class boss_general_zarithrian : public CreatureScript
|
||||
{
|
||||
public:
|
||||
boss_general_zarithrian() : CreatureScript("boss_general_zarithrian") { }
|
||||
|
||||
struct boss_general_zarithrianAI : public BossAI
|
||||
{
|
||||
boss_general_zarithrianAI(Creature* creature) : BossAI(creature, DATA_GENERAL_ZARITHRIAN)
|
||||
{
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
_EnterCombat();
|
||||
Talk(SAY_AGGRO);
|
||||
events.ScheduleEvent(EVENT_CLEAVE, 15000);
|
||||
events.ScheduleEvent(EVENT_INTIDMDATING_ROAR, 42000);
|
||||
events.ScheduleEvent(EVENT_SUMMON_ADDS, 40000);
|
||||
}
|
||||
|
||||
void JustReachedHome()
|
||||
{
|
||||
_JustReachedHome();
|
||||
instance->SetBossState(DATA_GENERAL_ZARITHRIAN, FAIL);
|
||||
}
|
||||
|
||||
// Override to not set adds in combat yet.
|
||||
void JustSummoned(Creature* summon)
|
||||
{
|
||||
summons.Summon(summon);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
_JustDied();
|
||||
Talk(SAY_DEATH);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* victim)
|
||||
{
|
||||
if (victim->GetTypeId() == TYPEID_PLAYER)
|
||||
Talk(SAY_KILL);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 const diff)
|
||||
{
|
||||
// Cant use room boundary, the gameobject is spawned on same position as the boss.
|
||||
if (!UpdateVictim() || me->GetPositionX() > 3060.0f)
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (me->HasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_SUMMON_ADDS:
|
||||
{
|
||||
if (Creature* stalker1 = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ZARITHIAN_SPAWN_STALKER_1)))
|
||||
stalker1->AI()->DoCast(stalker1, SPELL_SUMMON_FLAMECALLER);
|
||||
if (Creature* stalker2 = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ZARITHIAN_SPAWN_STALKER_2)))
|
||||
stalker2->AI()->DoCast(stalker2, SPELL_SUMMON_FLAMECALLER);
|
||||
Talk(SAY_ADDS);
|
||||
events.ScheduleEvent(EVENT_SUMMON_ADDS, 42000);
|
||||
break;
|
||||
}
|
||||
case EVENT_INTIDMDATING_ROAR:
|
||||
DoCast(me, SPELL_INTIMIDATING_ROAR, true);
|
||||
events.ScheduleEvent(EVENT_INTIDMDATING_ROAR, 42000);
|
||||
case EVENT_CLEAVE:
|
||||
DoCastVictim(SPELL_CLEAVE_ARMOR);
|
||||
events.ScheduleEvent(EVENT_CLEAVE, 15000);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
{
|
||||
return GetRubySanctumAI<boss_general_zarithrianAI>(creature);
|
||||
}
|
||||
};
|
||||
|
||||
class npc_onyx_flamecaller : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_onyx_flamecaller() : CreatureScript("npc_onyx_flamecaller") { }
|
||||
|
||||
struct npc_onyx_flamecallerAI : public npc_escortAI
|
||||
{
|
||||
npc_onyx_flamecallerAI(Creature* creature) : npc_escortAI(creature)
|
||||
{
|
||||
_instance = creature->GetInstanceScript();
|
||||
npc_escortAI::SetDespawnAtEnd(false);
|
||||
}
|
||||
|
||||
void Reset()
|
||||
{
|
||||
_lavaGoutCount = 0;
|
||||
me->setActive(true);
|
||||
AddWaypoints();
|
||||
Start(true, true);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_BLAST_NOVA, urand(20000, 30000));
|
||||
_events.ScheduleEvent(EVENT_LAVA_GOUT, 5000);
|
||||
}
|
||||
|
||||
void EnterEvadeMode()
|
||||
{
|
||||
// Prevent EvadeMode
|
||||
}
|
||||
|
||||
void IsSummonedBy(Unit* /*summoner*/)
|
||||
{
|
||||
// Let Zarithrian count as summoner. _instance cant be null since we got GetRubySanctumAI
|
||||
if (Creature* zarithrian = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_GENERAL_ZARITHRIAN)))
|
||||
zarithrian->AI()->JustSummoned(me);
|
||||
}
|
||||
|
||||
void WaypointReached(uint32 pointId)
|
||||
{
|
||||
if (pointId == MAX_PATH_FLAMECALLER_WAYPOINTS || pointId == MAX_PATH_FLAMECALLER_WAYPOINTS*2)
|
||||
{
|
||||
DoZoneInCombat();
|
||||
SetEscortPaused(true);
|
||||
}
|
||||
}
|
||||
|
||||
void AddWaypoints()
|
||||
{
|
||||
if (me->GetPositionY() < 500.0f)
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_PATH_FLAMECALLER_WAYPOINTS; i++)
|
||||
AddWaypoint(i, FlamecallerWaypoints[i].GetPositionX(), FlamecallerWaypoints[i].GetPositionY(), FlamecallerWaypoints[i].GetPositionZ());
|
||||
}
|
||||
else
|
||||
{
|
||||
for (uint8 i = 0, j = MAX_PATH_FLAMECALLER_WAYPOINTS; j < MAX_PATH_FLAMECALLER_WAYPOINTS*2; j++, i++)
|
||||
AddWaypoint(i, FlamecallerWaypoints[j].GetPositionX(), FlamecallerWaypoints[j].GetPositionY(), FlamecallerWaypoints[j].GetPositionZ());
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateEscortAI(uint32 const diff)
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
_events.Update(diff);
|
||||
|
||||
if (me->HasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = _events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_BLAST_NOVA:
|
||||
DoCastAOE(SPELL_BLAST_NOVA);
|
||||
_events.ScheduleEvent(EVENT_BLAST_NOVA, urand(20000, 30000));
|
||||
break;
|
||||
case EVENT_LAVA_GOUT:
|
||||
if (_lavaGoutCount >= 3)
|
||||
{
|
||||
_lavaGoutCount = 0;
|
||||
_events.ScheduleEvent(EVENT_LAVA_GOUT, 8000);
|
||||
break;
|
||||
}
|
||||
DoCastVictim(SPELL_LAVA_GOUT);
|
||||
_lavaGoutCount++;
|
||||
_events.ScheduleEvent(EVENT_LAVA_GOUT, 1500);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
private:
|
||||
EventMap _events;
|
||||
bool _movementComplete;
|
||||
InstanceScript* _instance;
|
||||
uint8 _lavaGoutCount;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
{
|
||||
return GetRubySanctumAI<npc_onyx_flamecallerAI>(creature);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_general_zarithrian()
|
||||
{
|
||||
new boss_general_zarithrian();
|
||||
new npc_onyx_flamecaller();
|
||||
}
|
||||
@@ -75,15 +75,15 @@ class boss_saviana_ragefire : public CreatureScript
|
||||
{
|
||||
_Reset();
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
events.ScheduleEvent(EVENT_ENRAGE, 20000, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_FLAME_BREATH, 30000, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_FLIGHT, 50000);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
_EnterCombat();
|
||||
Talk(SAY_AGGRO);
|
||||
events.ScheduleEvent(EVENT_ENRAGE, 20000, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_FLAME_BREATH, 14000, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_FLIGHT, 60000);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/)
|
||||
@@ -212,7 +212,7 @@ class spell_saviana_conflagration_init : public SpellScriptLoader
|
||||
{
|
||||
PreventHitDefaultEffect(effIndex);
|
||||
GetCaster()->CastSpell(GetHitUnit(), SPELL_FLAME_BEACON, true);
|
||||
GetCaster()->CastSpell(GetHitUnit(), SPELL_CONFLAGRATION_2, true);
|
||||
GetCaster()->CastSpell(GetHitUnit(), SPELL_CONFLAGRATION_2, false);
|
||||
}
|
||||
|
||||
void Register()
|
||||
|
||||
@@ -28,7 +28,7 @@ DoorData const doorData[] =
|
||||
class instance_ruby_sanctum : public InstanceMapScript
|
||||
{
|
||||
public:
|
||||
instance_ruby_sanctum() : InstanceMapScript("instance_ruby_sanctum", 724) { }
|
||||
instance_ruby_sanctum() : InstanceMapScript(RSScriptName, 724) { }
|
||||
|
||||
struct instance_ruby_sanctum_InstanceMapScript : public InstanceScript
|
||||
{
|
||||
@@ -44,6 +44,7 @@ class instance_ruby_sanctum : public InstanceMapScript
|
||||
XerestraszaGUID = 0;
|
||||
BaltharusSharedHealth = 0;
|
||||
FlameWallsGUID = 0;
|
||||
memset(ZarithianSpawnStalkerGUID, 0, 2*sizeof(uint64));
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* creature)
|
||||
@@ -68,6 +69,12 @@ class instance_ruby_sanctum : public InstanceMapScript
|
||||
case NPC_XERESTRASZA:
|
||||
XerestraszaGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_ZARITHIAN_SPAWN_STALKER:
|
||||
if (!ZarithianSpawnStalkerGUID[0])
|
||||
ZarithianSpawnStalkerGUID[0] = creature->GetGUID();
|
||||
else
|
||||
ZarithianSpawnStalkerGUID[1] = creature->GetGUID();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -116,6 +123,10 @@ class instance_ruby_sanctum : public InstanceMapScript
|
||||
return CrystalChannelTargetGUID;
|
||||
case DATA_XERESTRASZA:
|
||||
return XerestraszaGUID;
|
||||
case DATA_ZARITHIAN_SPAWN_STALKER_1:
|
||||
return ZarithianSpawnStalkerGUID[0];
|
||||
case DATA_ZARITHIAN_SPAWN_STALKER_2:
|
||||
return ZarithianSpawnStalkerGUID[1];
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -134,12 +145,9 @@ class instance_ruby_sanctum : public InstanceMapScript
|
||||
{
|
||||
if (state == DONE && GetBossState(DATA_SAVIANA_RAGEFIRE) == DONE)
|
||||
{
|
||||
// GO_FLAME_WALLS
|
||||
if (GameObject* flameWalls = instance->GetGameObject(FlameWallsGUID))
|
||||
{
|
||||
flameWalls->SetUInt32Value(GAMEOBJECT_LEVEL, 0);
|
||||
flameWalls->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
HandleGameObject(FlameWallsGUID, true, flameWalls);
|
||||
|
||||
if (Creature* zarithrian = instance->GetCreature(GeneralZarithrianGUID))
|
||||
zarithrian->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
}
|
||||
@@ -150,15 +158,17 @@ class instance_ruby_sanctum : public InstanceMapScript
|
||||
if (state == DONE && GetBossState(DATA_BALTHARUS_THE_WARBORN) == DONE)
|
||||
{
|
||||
if (GameObject* flameWalls = instance->GetGameObject(FlameWallsGUID))
|
||||
{
|
||||
flameWalls->SetUInt32Value(GAMEOBJECT_LEVEL, 0);
|
||||
flameWalls->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
HandleGameObject(FlameWallsGUID, true, flameWalls);
|
||||
|
||||
if (Creature* zarithrian = instance->GetCreature(GeneralZarithrianGUID))
|
||||
zarithrian->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DATA_GENERAL_ZARITHRIAN:
|
||||
if (GameObject* flameWalls = instance->GetGameObject(FlameWallsGUID))
|
||||
HandleGameObject(FlameWallsGUID, state != IN_PROGRESS, flameWalls);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -242,6 +252,7 @@ class instance_ruby_sanctum : public InstanceMapScript
|
||||
uint64 XerestraszaGUID;
|
||||
uint64 FlameWallsGUID;
|
||||
uint32 BaltharusSharedHealth;
|
||||
uint64 ZarithianSpawnStalkerGUID[2];
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const
|
||||
|
||||
@@ -37,6 +37,8 @@ enum DataTypes
|
||||
DATA_XERESTRASZA = 4,
|
||||
DATA_CRYSTAL_CHANNEL_TARGET = 5,
|
||||
DATA_BALTHARUS_SHARED_HEALTH = 6,
|
||||
DATA_ZARITHIAN_SPAWN_STALKER_1 = 7,
|
||||
DATA_ZARITHIAN_SPAWN_STALKER_2 = 8,
|
||||
};
|
||||
|
||||
enum SharedActions
|
||||
|
||||
Reference in New Issue
Block a user