diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/World/go_scripts.cpp | 47 |
1 files changed, 25 insertions, 22 deletions
diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index 866b6c38d5c..37da71a1a72 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -1192,9 +1192,10 @@ class go_massive_seaforium_charge : public GameObjectScript enum OfKeysAndCages { - QUEST_OF_KEYS_AND_CAGES = 11231, - NPC_GJALERBRON_PRISONER = 24035, - SAY_FREE = 0, + 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 @@ -1204,7 +1205,8 @@ class go_gjalerbron_cage : public GameObjectScript bool OnGossipHello(Player* player, GameObject* go) { - if (player->GetQuestStatus(QUEST_OF_KEYS_AND_CAGES) == QUEST_STATUS_INCOMPLETE) + 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)) { @@ -1228,24 +1230,25 @@ class go_gjalerbron_cage : public GameObjectScript 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; - } + go_large_gjalerbron_cage() : GameObjectScript("go_large_gjalerbron_cage") { } + + bool OnGossipHello(Player* player, GameObject* go) + { + 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) + { + go->UseDoorOrButton(); + player->KilledMonsterCredit(NPC_GJALERBRON_PRISONER, (*itr)->GetGUID()); + (*itr)->ForcedDespawn(6000); + (*itr)->AI()->Talk(SAY_FREE); + } + } + return false; + } }; void AddSC_go_scripts() |