aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp253
-rw-r--r--src/server/scripts/Northrend/zone_dragonblight.cpp34
-rw-r--r--src/server/scripts/Northrend/zone_icecrown.cpp241
-rw-r--r--src/server/scripts/World/go_scripts.cpp67
4 files changed, 0 insertions, 595 deletions
diff --git a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp
index caf000fd124..5993b677292 100644
--- a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp
+++ b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp
@@ -24,8 +24,6 @@ SDCategory: Dustwallow Marsh
EndScriptData */
/* ContentData
-npc_stinky
-go_blackhoof_cage
EndContentData */
#include "ScriptMgr.h"
@@ -37,99 +35,6 @@ EndContentData */
#include "WorldSession.h"
/*######
-## npc_risen_husk_spirit
-######*/
-
-enum HauntingWitchHill
-{
- // Quest
- QUEST_WHATS_HAUNTING_WITCH_HILL = 11180,
-
- // General spells
- SPELL_SUMMON_RESTLESS_APPARITION = 42511,
- SPELL_WITCH_HILL_INFORMATION_CREDIT = 42512,
-
- // Risen Husk specific
- SPELL_CONSUME_FLESH = 37933,
- NPC_RISEN_HUSK = 23555,
-
- // Risen Spirit specific
- SPELL_INTANGIBLE_PRESENCE = 43127,
- NPC_RISEN_SPIRIT = 23554,
-
- // Events
- EVENT_CONSUME_FLESH = 1,
- EVENT_INTANGIBLE_PRESENCE = 2,
-};
-
-class npc_risen_husk_spirit : public CreatureScript
-{
- public:
- npc_risen_husk_spirit() : CreatureScript("npc_risen_husk_spirit") { }
-
- struct npc_risen_husk_spiritAI : public ScriptedAI
- {
- npc_risen_husk_spiritAI(Creature* creature) : ScriptedAI(creature) { }
-
- void Reset() override
- {
- events.Reset();
- if (me->GetEntry() == NPC_RISEN_HUSK)
- events.ScheduleEvent(EVENT_CONSUME_FLESH, 5000);
- else if (me->GetEntry() == NPC_RISEN_SPIRIT)
- events.ScheduleEvent(EVENT_INTANGIBLE_PRESENCE, 5000);
- }
-
- void JustDied(Unit* killer) override
- {
- if (killer->GetTypeId() == TYPEID_PLAYER)
- {
- if (killer->ToPlayer()->GetQuestStatus(QUEST_WHATS_HAUNTING_WITCH_HILL) == QUEST_STATUS_INCOMPLETE)
- {
- DoCast(me, SPELL_SUMMON_RESTLESS_APPARITION, true);
- DoCast(killer, SPELL_WITCH_HILL_INFORMATION_CREDIT, true);
- }
- }
- }
-
- void UpdateAI(uint32 diff) override
- {
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_CONSUME_FLESH:
- DoCastVictim(SPELL_CONSUME_FLESH);
- events.ScheduleEvent(EVENT_CONSUME_FLESH, 15000);
- break;
- case EVENT_INTANGIBLE_PRESENCE:
- DoCastVictim(SPELL_INTANGIBLE_PRESENCE);
- events.ScheduleEvent(EVENT_INTANGIBLE_PRESENCE, 15000);
- break;
- default:
- break;
- }
- }
-
- DoMeleeAttackIfReady();
- }
-
- private:
- EventMap events;
- };
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_risen_husk_spiritAI(creature);
- }
-};
-
-/*######
## npc_lady_jaina_proudmoore
######*/
@@ -366,132 +271,6 @@ public:
};
-/*######
-## npc_stinky
-######*/
-
-enum Stinky
-{
- QUEST_STINKYS_ESCAPE_H = 1270,
- QUEST_STINKYS_ESCAPE_A = 1222,
- SAY_QUEST_ACCEPTED = 0,
- SAY_STAY_1 = 1,
- SAY_STAY_2 = 2,
- SAY_STAY_3 = 3,
- SAY_STAY_4 = 4,
- SAY_STAY_5 = 5,
- SAY_STAY_6 = 6,
- SAY_QUEST_COMPLETE = 7,
- SAY_ATTACKED_1 = 8,
- EMOTE_DISAPPEAR = 9
-};
-
-class npc_stinky : public CreatureScript
-{
-public:
- npc_stinky() : CreatureScript("npc_stinky") { }
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_stinkyAI(creature);
- }
-
- bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest) override
- {
- if (quest->GetQuestId() == QUEST_STINKYS_ESCAPE_H || quest->GetQuestId() == QUEST_STINKYS_ESCAPE_A)
- {
- if (npc_stinkyAI* pEscortAI = CAST_AI(npc_stinky::npc_stinkyAI, creature->AI()))
- {
- creature->setFaction(FACTION_ESCORT_N_NEUTRAL_ACTIVE);
- creature->SetStandState(UNIT_STAND_STATE_STAND);
- creature->AI()->Talk(SAY_QUEST_ACCEPTED);
- pEscortAI->Start(false, false, player->GetGUID());
- }
- }
- return true;
- }
-
- struct npc_stinkyAI : public npc_escortAI
- {
- npc_stinkyAI(Creature* creature) : npc_escortAI(creature) { }
-
- void WaypointReached(uint32 waypointId) override
- {
- Player* player = GetPlayerForEscort();
- if (!player)
- return;
-
- switch (waypointId)
- {
- case 7:
- Talk(SAY_STAY_1, player);
- break;
- case 11:
- Talk(SAY_STAY_2, player);
- break;
- case 25:
- Talk(SAY_STAY_3, player);
- break;
- case 26:
- Talk(SAY_STAY_4, player);
- break;
- case 27:
- Talk(SAY_STAY_5, player);
- break;
- case 28:
- Talk(SAY_STAY_6, player);
- me->SetStandState(UNIT_STAND_STATE_KNEEL);
- break;
- case 29:
- me->SetStandState(UNIT_STAND_STATE_STAND);
- break;
- case 37:
- Talk(SAY_QUEST_COMPLETE, player);
- me->SetSpeed(MOVE_RUN, 1.2f, true);
- me->SetWalk(false);
- if (player->GetQuestStatus(QUEST_STINKYS_ESCAPE_H))
- player->GroupEventHappens(QUEST_STINKYS_ESCAPE_H, me);
- if (player->GetQuestStatus(QUEST_STINKYS_ESCAPE_A))
- player->GroupEventHappens(QUEST_STINKYS_ESCAPE_A, me);
- break;
- case 39:
- Talk(EMOTE_DISAPPEAR);
- break;
- }
- }
-
- void EnterCombat(Unit* who) override
- {
- Talk(SAY_ATTACKED_1, who);
- }
-
- void Reset() override { }
-
- void JustDied(Unit* /*killer*/) override
- {
- Player* player = GetPlayerForEscort();
- if (player && HasEscortState(STATE_ESCORT_ESCORTING))
- {
- if (player->GetQuestStatus(QUEST_STINKYS_ESCAPE_H))
- player->FailQuest(QUEST_STINKYS_ESCAPE_H);
-
- if (player->GetQuestStatus(QUEST_STINKYS_ESCAPE_A))
- player->FailQuest(QUEST_STINKYS_ESCAPE_A);
- }
- }
-
- void UpdateAI(uint32 uiDiff) override
- {
- npc_escortAI::UpdateAI(uiDiff);
-
- if (!UpdateVictim())
- return;
-
- DoMeleeAttackIfReady();
- }
- };
-};
-
enum SpellScripts
{
SPELL_OOZE_ZAP = 42489,
@@ -631,41 +410,9 @@ class spell_energize_aoe : public SpellScriptLoader
}
};
-/*######
-## go_blackhoof_cage
-######*/
-
-enum PrisonersOfTheGrimTotems
-{
- NPC_THERAMORE_PRISONER = 23720,
- SAY_FREE = 0,
-};
-
-class go_blackhoof_cage : public GameObjectScript
-{
-public:
- go_blackhoof_cage() : GameObjectScript("go_blackhoof_cage") { }
-
- bool OnGossipHello(Player* player, GameObject* go) override
- {
- go->UseDoorOrButton();
- if (Creature* prisoner = go->FindNearestCreature(NPC_THERAMORE_PRISONER, 1.0f))
- {
- if (player)
- player->KilledMonsterCredit(NPC_THERAMORE_PRISONER);
-
- prisoner->AI()->Talk(SAY_FREE); // We also emote cry here (handled in creature_text.emote)
- prisoner->DespawnOrUnsummon(6000);
- }
- return true;
- }
-};
-
void AddSC_dustwallow_marsh()
{
- new npc_stinky();
new spell_ooze_zap();
new spell_ooze_zap_channel_end();
new spell_energize_aoe();
- new go_blackhoof_cage();
}
diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp
index e42bdc2b4f0..96ef8361841 100644
--- a/src/server/scripts/Northrend/zone_dragonblight.cpp
+++ b/src/server/scripts/Northrend/zone_dragonblight.cpp
@@ -24,7 +24,6 @@ SDCategory: Dragonblight
EndScriptData */
/* ContentData
-npc_alexstrasza_wr_gate
EndContentData */
#include "ScriptMgr.h"
@@ -366,38 +365,6 @@ enum AlexstraszaWrGate
MOVIE_ID_GATES = 14
};
-#define GOSSIP_ITEM_WHAT_HAPPENED "Alexstrasza, can you show me what happened here?"
-
-class npc_alexstrasza_wr_gate : public CreatureScript
-{
-public:
- npc_alexstrasza_wr_gate() : CreatureScript("npc_alexstrasza_wr_gate") { }
-
- bool OnGossipHello(Player* player, Creature* creature) override
- {
- if (creature->IsQuestGiver())
- player->PrepareQuestMenu(creature->GetGUID());
-
- if (player->GetQuestRewardStatus(QUEST_RETURN_TO_AG_A) || player->GetQuestRewardStatus(QUEST_RETURN_TO_AG_H))
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_WHAT_HAPPENED, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
-
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
- return true;
- }
-
- bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override
- {
- player->PlayerTalkClass->ClearMenus();
- if (action == GOSSIP_ACTION_INFO_DEF+1)
- {
- player->CLOSE_GOSSIP_MENU();
- player->SendMovieStart(MOVIE_ID_GATES);
- }
-
- return true;
- }
-};
-
/*######
## Quest Strengthen the Ancients (12096|12092)
######*/
@@ -736,7 +703,6 @@ class npc_torturer_lecraft : public CreatureScript
void AddSC_dragonblight()
{
new npc_commander_eligor_dawnbringer();
- new npc_alexstrasza_wr_gate();
new spell_q12096_q12092_dummy();
new spell_q12096_q12092_bark();
new npc_wyrmrest_defender();
diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp
index 9e2cb0cf18b..7f29a6621bd 100644
--- a/src/server/scripts/Northrend/zone_icecrown.cpp
+++ b/src/server/scripts/Northrend/zone_icecrown.cpp
@@ -210,52 +210,6 @@ public:
};
/*######
-## npc_vereth_the_cunning
-######*/
-
-enum VerethTheCunning
-{
- NPC_GEIST_RETURN_BUNNY_KC = 31049,
- NPC_LITHE_STALKER = 30894,
- SPELL_SUBDUED_LITHE_STALKER = 58151,
-};
-
-class npc_vereth_the_cunning : public CreatureScript
-{
-public:
- npc_vereth_the_cunning() : CreatureScript("npc_vereth_the_cunning") { }
-
- struct npc_vereth_the_cunningAI : public ScriptedAI
- {
- npc_vereth_the_cunningAI(Creature* creature) : ScriptedAI(creature) { }
-
- void MoveInLineOfSight(Unit* who) override
-
- {
- ScriptedAI::MoveInLineOfSight(who);
-
- if (who->GetEntry() == NPC_LITHE_STALKER && me->IsWithinDistInMap(who, 10.0f))
- {
- if (Unit* owner = who->GetCharmer())
- {
- if (who->HasAura(SPELL_SUBDUED_LITHE_STALKER))
- {
- owner->ToPlayer()->KilledMonsterCredit(NPC_GEIST_RETURN_BUNNY_KC);
- who->ToCreature()->DisappearAndDie();
-
- }
- }
- }
- }
- };
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_vereth_the_cunningAI(creature);
- }
-};
-
-/*######
* npc_tournament_training_dummy
######*/
enum TournamentDummy
@@ -881,207 +835,12 @@ class npc_frostbrood_skytalon : public CreatureScript
}
};
-/*######
-## The Flesh Giant Champion - Id: 13235
-######*/
-enum FleshGiant
-{
- QUEST_FLESH_GIANT_CHAMPION = 13235,
-
- NPC_MORBIDUS = 30698,
- NPC_LICH_KING = 31301,
- NPC_OLAKIN = 31428,
- NPC_DHAKAR = 31306,
-
- FACTION_HOSTILE = 14,
- FACTION_BASIC = 2102,
-
- EVENT_INTRO = 1,
- EVENT_LK_SAY_1 = 2,
- EVENT_LK_SAY_2 = 3,
- EVENT_LK_SAY_3 = 4,
- EVENT_LK_SAY_4 = 5,
- EVENT_LK_SAY_5 = 6,
- EVENT_OUTRO = 7,
- EVENT_START = 8,
-
- SPELL_SIMPLE_TELEPORT = 64195,
-
- SAY_DHAKAR_START = 0,
- SAY_LK_1 = 0,
- SAY_LK_2 = 1,
- SAY_LK_3 = 2,
- SAY_LK_4 = 3,
- SAY_LK_5 = 4,
- SAY_OLAKIN_PAY = 0
-};
-
-class npc_margrave_dhakar : public CreatureScript
-{
- public:
- npc_margrave_dhakar() : CreatureScript("npc_margrave_dhakar") { }
-
- struct npc_margrave_dhakarAI : public ScriptedAI
- {
- npc_margrave_dhakarAI(Creature* creature) : ScriptedAI(creature) , _summons(me) { }
-
- void Reset() override
- {
- me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
- me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
-
- _events.Reset();
- _summons.DespawnAll();
- }
-
- void sGossipSelect(Player* player, uint32 sender, uint32 action) override
- {
- if (player->GetQuestStatus(QUEST_FLESH_GIANT_CHAMPION) == QUEST_STATUS_INCOMPLETE && !player->IsInCombat())
- {
- if (me->GetCreatureTemplate()->GossipMenuId == sender && !action)
- {
- _events.ScheduleEvent(EVENT_INTRO, 1000);
- me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
- }
- }
- }
-
- void UpdateAI(uint32 diff) override
- {
- _events.Update(diff);
-
- while (uint32 eventId = _events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_INTRO:
- {
- Talk(SAY_DHAKAR_START);
- me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
-
- if (Creature* morbidus = me->FindNearestCreature(NPC_MORBIDUS, 50.0f, true))
- {
- if (Creature* lichKing = me->SummonCreature(NPC_LICH_KING, morbidus->GetPositionX() + 10.0f, morbidus->GetPositionY(), morbidus->GetPositionZ()))
- {
- _lichKingGuid = lichKing->GetGUID();
- lichKing->SetFacingTo(morbidus->GetOrientation());
- lichKing->CastSpell(lichKing, SPELL_SIMPLE_TELEPORT, true);
- }
- }
-
- _events.ScheduleEvent(EVENT_LK_SAY_1, 5000);
- break;
- }
- case EVENT_LK_SAY_1:
- {
- if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _lichKingGuid))
- lichKing->AI()->Talk(SAY_LK_1);
- _events.ScheduleEvent(EVENT_LK_SAY_2, 5000);
- break;
- }
- case EVENT_LK_SAY_2:
- {
- if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _lichKingGuid))
- lichKing->AI()->Talk(SAY_LK_2);
- _events.ScheduleEvent(EVENT_LK_SAY_3, 5000);
- break;
- }
- case EVENT_LK_SAY_3:
- {
- if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _lichKingGuid))
- lichKing->AI()->Talk(SAY_LK_3);
- _events.ScheduleEvent(EVENT_LK_SAY_4, 5000);
- break;
- }
- case EVENT_LK_SAY_4:
- {
- if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _lichKingGuid))
- lichKing->AI()->Talk(SAY_LK_4);
- _events.ScheduleEvent(EVENT_OUTRO, 12000);
- break;
- }
- case EVENT_LK_SAY_5:
- {
- if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _lichKingGuid))
- lichKing->AI()->Talk(SAY_LK_5);
- _events.ScheduleEvent(EVENT_OUTRO, 8000);
- break;
- }
- case EVENT_OUTRO:
- {
- if (Creature* olakin = me->FindNearestCreature(NPC_OLAKIN, 50.0f, true))
- olakin->AI()->Talk(SAY_OLAKIN_PAY);
-
- if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _lichKingGuid))
- lichKing->DespawnOrUnsummon(0);
-
- _events.ScheduleEvent(EVENT_START, 5000);
- break;
- }
- case EVENT_START:
- {
- if (Creature* morbidus = me->FindNearestCreature(NPC_MORBIDUS, 50.0f, true))
- {
- morbidus->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_ATTACKABLE_1 | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_DISABLE_MOVE);
- morbidus->setFaction(FACTION_HOSTILE);
- }
-
- break;
- }
- }
- }
-
- DoMeleeAttackIfReady();
- }
-
- private:
- EventMap _events;
- SummonList _summons;
- ObjectGuid _lichKingGuid;
- };
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_margrave_dhakarAI(creature);
- }
-};
-
-class npc_morbidus : public CreatureScript
-{
- public:
- npc_morbidus() : CreatureScript("npc_morbidus") { }
-
- struct npc_morbidusAI : public ScriptedAI
- {
- npc_morbidusAI(Creature* creature) : ScriptedAI(creature) { }
-
- void Reset() override
- {
- if (Creature* dhakar = me->FindNearestCreature(NPC_DHAKAR, 50.0f, true))
- dhakar->AI()->Reset();
-
- // this will prevent the event to start without morbidus being alive
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- me->SetReactState(REACT_PASSIVE);
- me->setFaction(FACTION_BASIC);
- }
- };
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_morbidusAI(creature);
- }
-};
-
void AddSC_icecrown()
{
new npc_squire_david;
new npc_argent_valiant;
new npc_guardian_pavilion;
- new npc_vereth_the_cunning;
new npc_tournament_training_dummy;
new npc_blessed_banner();
new npc_frostbrood_skytalon();
- new npc_margrave_dhakar();
- new npc_morbidus();
}
diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp
index ceaa7533d93..0549a8739dd 100644
--- a/src/server/scripts/World/go_scripts.cpp
+++ b/src/server/scripts/World/go_scripts.cpp
@@ -40,8 +40,6 @@ go_dragonflayer_cage
go_tadpole_cage
go_amberpine_outhouse
go_hive_pod
-go_gjalerbron_cage
-go_large_gjalerbron_cage
go_veil_skith_cage
EndContentData */
@@ -1039,69 +1037,6 @@ class go_massive_seaforium_charge : public GameObjectScript
}
};
-/*######
-## go_gjalerbron_cage
-######*/
-
-enum OfKeysAndCages
-{
- QUEST_ALLIANCE_OF_KEYS_AND_CAGES = 11231,
- QUEST_HORDE_OF_KEYS_AND_CAGES = 11265,
- NPC_GJALERBRON_PRISONER = 24035,
- SAY_FREE = 0,
-};
-
-class go_gjalerbron_cage : public GameObjectScript
-{
- public:
- go_gjalerbron_cage() : GameObjectScript("go_gjalerbron_cage") { }
-
- bool OnGossipHello(Player* player, GameObject* go) override
- {
- go->UseDoorOrButton();
- if ((player->GetTeamId() == TEAM_ALLIANCE && player->GetQuestStatus(QUEST_ALLIANCE_OF_KEYS_AND_CAGES) == QUEST_STATUS_INCOMPLETE) ||
- (player->GetTeamId() == TEAM_HORDE && player->GetQuestStatus(QUEST_HORDE_OF_KEYS_AND_CAGES) == QUEST_STATUS_INCOMPLETE))
- {
- if (Creature* prisoner = go->FindNearestCreature(NPC_GJALERBRON_PRISONER, 5.0f))
- {
- player->KilledMonsterCredit(NPC_GJALERBRON_PRISONER);
-
- prisoner->AI()->Talk(SAY_FREE);
- prisoner->DespawnOrUnsummon(6000);
- }
- }
- return true;
- }
-};
-
-/*########
-## go_large_gjalerbron_cage
-#####*/
-
-class go_large_gjalerbron_cage : public GameObjectScript
-{
- public:
- go_large_gjalerbron_cage() : GameObjectScript("go_large_gjalerbron_cage") { }
-
- bool OnGossipHello(Player* player, GameObject* go) override
- {
- go->UseDoorOrButton();
- if ((player->GetTeamId() == TEAM_ALLIANCE && player->GetQuestStatus(QUEST_ALLIANCE_OF_KEYS_AND_CAGES) == QUEST_STATUS_INCOMPLETE) ||
- (player->GetTeamId() == TEAM_HORDE && player->GetQuestStatus(QUEST_HORDE_OF_KEYS_AND_CAGES) == QUEST_STATUS_INCOMPLETE))
- {
- std::list<Creature*> prisonerList;
- GetCreatureListWithEntryInGrid(prisonerList, go, NPC_GJALERBRON_PRISONER, INTERACTION_DISTANCE);
- for (std::list<Creature*>::const_iterator itr = prisonerList.begin(); itr != prisonerList.end(); ++itr)
- {
- player->KilledMonsterCredit(NPC_GJALERBRON_PRISONER, (*itr)->GetGUID());
- (*itr)->DespawnOrUnsummon(6000);
- (*itr)->AI()->Talk(SAY_FREE);
- }
- }
- return false;
- }
-};
-
/*########
#### go_veil_skith_cage
#####*/
@@ -1222,8 +1157,6 @@ void AddSC_go_scripts()
new go_amberpine_outhouse();
new go_hive_pod();
new go_massive_seaforium_charge();
- new go_gjalerbron_cage();
- new go_large_gjalerbron_cage();
new go_veil_skith_cage();
new go_frostblade_shrine();
new go_midsummer_bonfire();