aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDiscover- <amort11@hotmail.com>2011-10-26 00:11:06 +0100
committerkaelima <kaelima@live.se>2011-10-26 00:11:06 +0100
commita620a763a96425d10dd8ea7ae58703048ed2ee54 (patch)
tree6ee41bbaa5846bb326ef60839d32088852e34e27 /src
parent80720358f0c88b0333193c2dbd35d9b2e7feb3ea (diff)
Scripts/Howling Fjord: Fix quest Of Keys and Cages
Closes #3540
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/World/go_scripts.cpp78
1 files changed, 71 insertions, 7 deletions
diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp
index cdeac03d76e..866b6c38d5c 100644
--- a/src/server/scripts/World/go_scripts.cpp
+++ b/src/server/scripts/World/go_scripts.cpp
@@ -1176,14 +1176,76 @@ public:
class go_massive_seaforium_charge : public GameObjectScript
{
-public:
- go_massive_seaforium_charge() : GameObjectScript("go_massive_seaforium_charge") { }
+ public:
+ go_massive_seaforium_charge() : GameObjectScript("go_massive_seaforium_charge") { }
- bool OnGossipHello(Player* /*player*/, GameObject* go)
- {
- go->SetLootState(GO_JUST_DEACTIVATED);
- return true;
- }
+ bool OnGossipHello(Player* /*player*/, GameObject* go)
+ {
+ go->SetLootState(GO_JUST_DEACTIVATED);
+ return true;
+ }
+};
+
+/*######
+## go_gjalerbron_cage
+######*/
+
+enum OfKeysAndCages
+{
+ QUEST_OF_KEYS_AND_CAGES = 11231,
+ 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)
+ {
+ if (player->GetQuestStatus(QUEST_OF_KEYS_AND_CAGES) == QUEST_STATUS_INCOMPLETE)
+ {
+ if (Creature* prisoner = go->FindNearestCreature(NPC_GJALERBRON_PRISONER, 5.0f))
+ {
+ go->UseDoorOrButton();
+
+ if (player)
+ player->KilledMonsterCredit(NPC_GJALERBRON_PRISONER, 0);
+
+ prisoner->AI()->Talk(SAY_FREE);
+ prisoner->ForcedDespawn(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)
+ {
+ if (player->GetQuestStatus(QUEST_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)
+ {
+ go->UseDoorOrButton();
+ player->KilledMonsterCredit(NPC_GJALERBRON_PRISONER, (*itr)->GetGUID());
+ (*itr)->ForcedDespawn(6000);
+ (*itr)->AI()->Talk(SAY_FREE);
+ }
+ }
+ return false;
+ }
};
void AddSC_go_scripts()
@@ -1224,4 +1286,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;
}