diff options
author | megamage <none@none> | 2009-08-12 08:01:06 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-08-12 08:01:06 -0500 |
commit | cd78172c7d04e96bb1392cd6729d333b49518923 (patch) | |
tree | 96bb71d80b75aa36d99e78bf28c1ad1643a0f8b5 | |
parent | 1bdc65e5ee06e13d7b898feccdcbec49ba1299f0 (diff) |
*Do not allow to enter frostwyrm wing before killing all previous bosses. If you do not like it, simply do not apply the sql.
--HG--
branch : trunk
-rw-r--r-- | sql/FULL/world_scripts_full.sql | 3 | ||||
-rw-r--r-- | sql/updates/4927_world_scripts_naxx.sql | 2 | ||||
-rw-r--r-- | src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp | 19 | ||||
-rw-r--r-- | src/game/InstanceData.h | 1 |
4 files changed, 25 insertions, 0 deletions
diff --git a/sql/FULL/world_scripts_full.sql b/sql/FULL/world_scripts_full.sql index 8db3c149db8..463d7a506b0 100644 --- a/sql/FULL/world_scripts_full.sql +++ b/sql/FULL/world_scripts_full.sql @@ -1187,3 +1187,6 @@ INSERT INTO `creature_ai_scripts` VALUES /* EOF */ UPDATE `creature_template` SET `ScriptName` = 'npc_skywing' WHERE entry=22424; + +DELETE FROM areatrigger_scripts WHERE entry = 4156; +INSERT INTO areatrigger_scripts VALUES (4156, 'at_naxxramas_frostwyrm_wing'); diff --git a/sql/updates/4927_world_scripts_naxx.sql b/sql/updates/4927_world_scripts_naxx.sql new file mode 100644 index 00000000000..cfb9e68b7f1 --- /dev/null +++ b/sql/updates/4927_world_scripts_naxx.sql @@ -0,0 +1,2 @@ +DELETE FROM areatrigger_scripts WHERE entry = 4156; +INSERT INTO areatrigger_scripts VALUES (4156, 'at_naxxramas_frostwyrm_wing');
\ No newline at end of file diff --git a/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp b/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp index 1215604a3f6..b00a64af78e 100644 --- a/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp +++ b/src/bindings/scripts/scripts/zone/naxxramas/instance_naxxramas.cpp @@ -183,6 +183,20 @@ struct TRINITY_DLL_DECL instance_naxxramas : public InstanceData } }; +bool AreaTrigger_at_naxxramas_frostwyrm_wing(Player *player, AreaTriggerEntry *at) +{ + if(player->isGameMaster()) + return false; + + InstanceData *data = player->GetInstanceData(); + if(data) + for(uint32 i = BOSS_ANUBREKHAN; i < BOSS_SAPPHIRON; ++i) + if(data->GetBossState(i) != DONE) + return true; + + return false; +} + InstanceData* GetInstanceData_instance_naxxramas(Map* map) { return new instance_naxxramas(map); @@ -195,4 +209,9 @@ void AddSC_instance_naxxramas() newscript->Name = "instance_naxxramas"; newscript->GetInstanceData = &GetInstanceData_instance_naxxramas; newscript->RegisterSelf(); + + newscript = new Script; + newscript->Name = "at_naxxramas_frostwyrm_wing"; + newscript->pAreaTrigger = &AreaTrigger_at_naxxramas_frostwyrm_wing; + newscript->RegisterSelf(); } diff --git a/src/game/InstanceData.h b/src/game/InstanceData.h index fac766c761e..d06043ff07d 100644 --- a/src/game/InstanceData.h +++ b/src/game/InstanceData.h @@ -150,6 +150,7 @@ class TRINITY_DLL_SPEC InstanceData : public ZoneScript void DoRespawnGameObject(uint64 uiGuid, uint32 uiTimeToDespawn = MINUTE); virtual bool SetBossState(uint32 id, EncounterState state); + EncounterState GetBossState(uint32 id) const { return id < bosses.size() ? bosses[id].state : TO_BE_DECIDED; } const BossBoundaryMap * GetBossBoundary(uint32 id) const { return id < bosses.size() ? &bosses[id].boundary : NULL; } protected: void SetBossNumber(uint32 number) { bosses.resize(number); } |