diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/DungeonFinding/LFGMgr.cpp | 11 | ||||
| -rw-r--r-- | src/server/game/DungeonFinding/LFGMgr.h | 2 | ||||
| -rw-r--r-- | src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp | 20 | ||||
| -rw-r--r-- | src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp | 7 | ||||
| -rw-r--r-- | src/server/scripts/Northrend/Naxxramas/naxxramas.h | 12 |
5 files changed, 26 insertions, 26 deletions
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index b88d04c65e..b48138a8ba 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -688,7 +688,7 @@ namespace lfg // xinef: dont check compatibile dungeons for already running group (bind problems) if (!isContinue) { - GetCompatibleDungeons(dungeons, players, joinData.lockmap); + GetCompatibleDungeons(dungeons, players, joinData.lockmap, rDungeonId); if (dungeons.empty()) joinData.result = grp ? LFG_JOIN_PARTY_NOT_MEET_REQS : LFG_JOIN_NOT_MEET_REQS; } @@ -1485,7 +1485,7 @@ namespace lfg @param[in] players Set of players to check their dungeon restrictions @param[out] lockMap Map of players Lock status info of given dungeons (Empty if dungeons is not empty) */ - void LFGMgr::GetCompatibleDungeons(LfgDungeonSet& dungeons, LfgGuidSet const& players, LfgLockPartyMap& lockMap) + void LFGMgr::GetCompatibleDungeons(LfgDungeonSet& dungeons, LfgGuidSet const& players, LfgLockPartyMap& lockMap, bool isRDF) { lockMap.clear(); for (LfgGuidSet::const_iterator it = players.begin(); it != players.end() && !dungeons.empty(); ++it) @@ -1496,6 +1496,9 @@ namespace lfg { uint32 dungeonId = (it2->first & 0x00FFFFFF); // Compare dungeon ids + if (it2->second == LFG_LOCKSTATUS_RAID_LOCKED && isRDF) + continue; + LfgDungeonSet::iterator itDungeon = dungeons.find(dungeonId); if (itDungeon != dungeons.end()) { @@ -1762,10 +1765,8 @@ namespace lfg else { // RDF removes all binds to that map - if (randomDungeon && !sInstanceSaveMgr->PlayerIsPermBoundToInstance(player->GetGUID(), dungeon->map, player->GetDungeonDifficulty())) - { + if (randomDungeon) sInstanceSaveMgr->PlayerUnbindInstance(player->GetGUID(), dungeon->map, player->GetDungeonDifficulty(), true); - } } playersTeleported.push_back(player); diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h index 426f0c679a..e52bbda7dd 100644 --- a/src/server/game/DungeonFinding/LFGMgr.h +++ b/src/server/game/DungeonFinding/LFGMgr.h @@ -589,7 +589,7 @@ namespace lfg void DecreaseKicksLeft(ObjectGuid guid); void SetState(ObjectGuid guid, LfgState state); void SetCanOverrideRBState(ObjectGuid guid, bool val); - void GetCompatibleDungeons(LfgDungeonSet& dungeons, LfgGuidSet const& players, LfgLockPartyMap& lockMap); + void GetCompatibleDungeons(LfgDungeonSet& dungeons, LfgGuidSet const& players, LfgLockPartyMap& lockMap, bool isRDF = false); void _SaveToDB(ObjectGuid guid); LFGDungeonData const* GetLFGDungeon(uint32 id); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp index efe7c6956f..200a3962c7 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp @@ -683,22 +683,18 @@ public: }; }; -class at_thaddius_entrance : public AreaTriggerScript +class at_thaddius_entrance : public OnlyOnceAreaTriggerScript { public: - at_thaddius_entrance() : AreaTriggerScript("at_thaddius_entrance") { } + at_thaddius_entrance() : OnlyOnceAreaTriggerScript("at_thaddius_entrance") { } - bool OnTrigger(Player* player, AreaTrigger const* /*areaTrigger*/) override + bool _OnTrigger(Player* player, const AreaTrigger* /*trigger*/) override { - InstanceScript* instance = player->GetInstanceScript(); - if (!instance || instance->GetData(DATA_THADDIUS_INTRO) || instance->GetBossState(BOSS_THADDIUS) == DONE) - return true; - - if (Creature* thaddius = instance->GetCreature(DATA_THADDIUS_BOSS)) - thaddius->AI()->Talk(SAY_GREET); - - instance->SetData(DATA_THADDIUS_INTRO, 1); - return true; + if (InstanceScript* instance = player->GetInstanceScript()) + if (instance->GetBossState(BOSS_THADDIUS) != DONE) + if (Creature* thaddius = instance->GetCreature(DATA_THADDIUS_BOSS)) + thaddius->AI()->Talk(SAY_GREET); + return false; } }; diff --git a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp index 77af6636bd..1530cab2e2 100644 --- a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp +++ b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp @@ -547,12 +547,17 @@ public: } case DONE: { + if (!horsemanKilled) // if no horsemen are found, assume wing is cleared + { + ActivateWingPortal(DATA_HORSEMAN_PORTAL); + break; + } + _events.RescheduleEvent(EVENT_AND_THEY_WOULD_ALL_GO_DOWN_TOGETHER, 15s); if (horsemanKilled != HorsemanCount) return false; - // all horsemans are killed if (Creature* cr = GetCreature(DATA_BARON_RIVENDARE_BOSS)) cr->CastSpell(cr, SPELL_THE_FOUR_HORSEMAN_CREDIT, true); diff --git a/src/server/scripts/Northrend/Naxxramas/naxxramas.h b/src/server/scripts/Northrend/Naxxramas/naxxramas.h index 6f47c4fa1c..4b790f1cca 100644 --- a/src/server/scripts/Northrend/Naxxramas/naxxramas.h +++ b/src/server/scripts/Northrend/Naxxramas/naxxramas.h @@ -75,17 +75,15 @@ enum NaxxramasData DATA_DANCE_FAIL = 301, DATA_SPORE_KILLED = 302, DATA_FRENZY_REMOVED = 303, - DATA_THADDIUS_INTRO = 304, - DATA_CHARGES_CROSSED = 305, - DATA_HUNDRED_CLUB = 306, - DATA_ABOMINATION_KILLED = 307, + DATA_CHARGES_CROSSED = 304, + DATA_HUNDRED_CLUB = 305, + DATA_ABOMINATION_KILLED = 306, }; enum NaxxramasPersistentData { - PERSISTENT_DATA_THADDIUS_INTRO = 0, - PERSISTENT_DATA_KELTHUZAD_DIALOG = 1, - PERSISTENT_DATA_IMMORTAL_FAIL = 2, + PERSISTENT_DATA_KELTHUZAD_DIALOG = 0, + PERSISTENT_DATA_IMMORTAL_FAIL = 1, PERSISTENT_DATA_COUNT }; |
