diff options
9 files changed, 351 insertions, 22 deletions
diff --git a/sql/updates/world/2011_06_04_00_world_creature_loot_template.sql b/sql/updates/world/2011_06_04_00_world_creature_loot_template.sql new file mode 100644 index 00000000000..ff72ecd3454 --- /dev/null +++ b/sql/updates/world/2011_06_04_00_world_creature_loot_template.sql @@ -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); diff --git a/sql/updates/world/2011_06_04_00_world_creature_template.sql b/sql/updates/world/2011_06_04_00_world_creature_template.sql new file mode 100644 index 00000000000..1155ac4b7e3 --- /dev/null +++ b/sql/updates/world/2011_06_04_00_world_creature_template.sql @@ -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; diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp index e68f6adef90..0293c350649 100755 --- a/src/server/game/Scripting/ScriptLoader.cpp +++ b/src/server/game/Scripting/ScriptLoader.cpp @@ -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(); diff --git a/src/server/scripts/Northrend/CMakeLists.txt b/src/server/scripts/Northrend/CMakeLists.txt index 04d906519a0..3e1f500ebce 100644 --- a/src/server/scripts/Northrend/CMakeLists.txt +++ b/src/server/scripts/Northrend/CMakeLists.txt @@ -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 diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp index bd9b478a035..52277ee420d 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.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(); } diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp new file mode 100644 index 00000000000..f594087aefb --- /dev/null +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp @@ -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(); +} diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp index 3bf34c42c03..d4d03a9c819 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp @@ -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() diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp index 3672152bee9..0c7b47e703f 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp @@ -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 diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h index 4ece06807cf..60c13002935 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h @@ -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 |