diff options
author | xinef1 <w.szyszko2@gmail.com> | 2017-02-05 23:42:31 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2017-02-05 23:42:31 +0100 |
commit | 14dfc377b48bc909894396e65d4e4ce89d9708b6 (patch) | |
tree | 4c4a44bbbbd26e1266f1ffead2ce16890035e335 /src/server | |
parent | 075f0e26ccaea835f1b3b771b717e9edef0d0b59 (diff) |
Core/Misc: Various crash fixes (#19059)
* Replaced some FindPlayer calls with GetPlayer
Fixed some more crashes
* Correction
Diffstat (limited to 'src/server')
22 files changed, 80 insertions, 61 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 95a04a29cda..8acbc9bea45 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -461,7 +461,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (IsUnit(*itr)) if (Vehicle* vehicle = (*itr)->ToUnit()->GetVehicleKit()) for (SeatMap::iterator it = vehicle->Seats.begin(); it != vehicle->Seats.end(); ++it) - if (Player* player = ObjectAccessor::FindPlayer(it->second.Passenger.Guid)) + if (Player* player = ObjectAccessor::GetPlayer(*(*itr), it->second.Passenger.Guid)) player->AreaExploredOrEventHappens(e.action.quest.quest); if (IsPlayer(*itr)) @@ -538,7 +538,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u } case SMART_ACTION_INVOKER_CAST: { - Unit* tempLastInvoker = GetLastInvoker(); + Unit* tempLastInvoker = GetLastInvoker(unit); if (!tempLastInvoker) break; @@ -791,7 +791,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u // Special handling for vehicles if (Vehicle* vehicle = unit->GetVehicleKit()) for (SeatMap::iterator it = vehicle->Seats.begin(); it != vehicle->Seats.end(); ++it) - if (Player* player = ObjectAccessor::FindPlayer(it->second.Passenger.Guid)) + if (Player* player = ObjectAccessor::GetPlayer(*unit, it->second.Passenger.Guid)) player->GroupEventHappens(e.action.quest.quest, GetBaseObject()); break; } @@ -935,7 +935,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u else if (IsUnit(*itr)) // Special handling for vehicles if (Vehicle* vehicle = (*itr)->ToUnit()->GetVehicleKit()) for (SeatMap::iterator seatItr = vehicle->Seats.begin(); seatItr != vehicle->Seats.end(); ++seatItr) - if (Player* player = ObjectAccessor::FindPlayer(seatItr->second.Passenger.Guid)) + if (Player* player = ObjectAccessor::GetPlayer(*(*itr), seatItr->second.Passenger.Guid)) player->KilledMonsterCredit(e.action.killedMonster.creature); } @@ -3782,14 +3782,14 @@ void SmartScript::SetScript9(SmartScriptHolder& e, uint32 entry) } } -Unit* SmartScript::GetLastInvoker() +Unit* SmartScript::GetLastInvoker(Unit* invoker) { - WorldObject* lookupRoot = me; - if (!lookupRoot) - lookupRoot = go; - - if (lookupRoot) - return ObjectAccessor::GetUnit(*lookupRoot, mLastInvoker); - - return ObjectAccessor::FindPlayer(mLastInvoker); + // Look for invoker only on map of base object... Prevents multithreaded crashes + if (WorldObject* baseObject = GetBaseObject()) + return ObjectAccessor::GetUnit(*baseObject, mLastInvoker); + // used for area triggers invoker cast + else if (invoker) + return ObjectAccessor::GetUnit(*invoker, mLastInvoker); + + return nullptr; } diff --git a/src/server/game/AI/SmartScripts/SmartScript.h b/src/server/game/AI/SmartScripts/SmartScript.h index ce9879ff236..7113bda92cf 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.h +++ b/src/server/game/AI/SmartScripts/SmartScript.h @@ -244,7 +244,7 @@ class TC_GAME_API SmartScript //TIMED_ACTIONLIST (script type 9 aka script9) void SetScript9(SmartScriptHolder& e, uint32 entry); - Unit* GetLastInvoker(); + Unit* GetLastInvoker(Unit* invoker = nullptr); ObjectGuid mLastInvoker; typedef std::unordered_map<uint32, uint32> CounterMap; CounterMap mCounterList; diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp index 1e58b6cd3cf..c858314dc16 100644 --- a/src/server/game/Combat/ThreatManager.cpp +++ b/src/server/game/Combat/ThreatManager.cpp @@ -422,7 +422,8 @@ void ThreatManager::doAddThreat(Unit* victim, float threat) { float redirectThreat = CalculatePct(threat, redirectThreadPct); threat -= redirectThreat; - _addThreat(redirectTarget, redirectThreat); + if (ThreatCalcHelper::isValidProcess(redirectTarget, GetOwner())) + _addThreat(redirectTarget, redirectThreat); } } diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index fa8a17234fd..bf13095942e 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -1347,7 +1347,7 @@ void LFGMgr::TeleportPlayer(Player* player, bool out, bool fromOpcode /*= false* @param[in] guid Group guid @param[in] dungeonId Dungeonid */ -void LFGMgr::FinishDungeon(ObjectGuid gguid, const uint32 dungeonId) +void LFGMgr::FinishDungeon(ObjectGuid gguid, const uint32 dungeonId, Map const* currMap) { uint32 gDungeonId = GetDungeon(gguid); if (gDungeonId != dungeonId) @@ -1391,7 +1391,7 @@ void LFGMgr::FinishDungeon(ObjectGuid gguid, const uint32 dungeonId) } Player* player = ObjectAccessor::FindPlayer(guid); - if (!player) + if (!player || player->FindMap() != currMap) { TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %s, Player: %s not found in world", gguid.ToString().c_str(), guid.ToString().c_str()); continue; diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h index dfa42a317ee..96f5b2373ff 100644 --- a/src/server/game/DungeonFinding/LFGMgr.h +++ b/src/server/game/DungeonFinding/LFGMgr.h @@ -28,6 +28,7 @@ class Group; class Player; class Quest; +class Map; namespace lfg { @@ -303,7 +304,7 @@ class TC_GAME_API LFGMgr // World.cpp /// Finish the dungeon for the given group. All check are performed using internal lfg data - void FinishDungeon(ObjectGuid gguid, uint32 dungeonId); + void FinishDungeon(ObjectGuid gguid, uint32 dungeonId, Map const* currMap); /// Loads rewards for random dungeons void LoadRewards(); /// Loads dungeons from dbc and adds teleport coords diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index d90a5873f92..7610c9981c5 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1851,7 +1851,7 @@ void WorldObject::AddObjectToRemoveList() map->AddObjectToRemoveList(this); } -TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropertiesEntry const* properties /*= NULL*/, uint32 duration /*= 0*/, Unit* summoner /*= NULL*/, uint32 spellId /*= 0*/, uint32 vehId /*= 0*/) +TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropertiesEntry const* properties /*= nullptr*/, uint32 duration /*= 0*/, Unit* summoner /*= nullptr*/, uint32 spellId /*= 0*/, uint32 vehId /*= 0*/) { uint32 mask = UNIT_MASK_SUMMON; if (properties) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index f47634b8f56..86eefa043cd 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2148,6 +2148,9 @@ void Player::RemoveFromWorld() UnsummonPetTemporaryIfAny(); ClearComboPoints(); ClearComboPointHolders(); + ObjectGuid lootGuid = GetLootGUID(); + if (!lootGuid.IsEmpty()) + m_session->DoLootRelease(lootGuid); sOutdoorPvPMgr->HandlePlayerLeaveZone(this, m_zoneUpdateId); sBattlefieldMgr->HandlePlayerLeaveZone(this, m_zoneUpdateId); } @@ -23629,7 +23632,7 @@ bool Player::IsAtGroupRewardDistance(WorldObject const* pRewardSource) const if (!player || IsAlive()) player = this; - if (player->GetMap()->IsDungeon()) + if (pRewardSource->GetMap()->IsDungeon()) return true; return pRewardSource->GetDistance(player) <= sWorld->getFloatConfig(CONFIG_GROUP_XP_DISTANCE); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 7f56f670e70..1a55f14cfb5 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -11295,7 +11295,7 @@ void Unit::ClearComboPointHolders() { ObjectGuid guid = *m_ComboPointHolders.begin(); - Player* player = ObjectAccessor::FindPlayer(guid); + Player* player = ObjectAccessor::GetPlayer(*this, guid); if (player && player->GetComboTarget() == GetGUID()) // recheck for safe player->ClearComboPoints(); // remove also guid from m_ComboPointHolders; else diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 617a955fea0..d931343b5e2 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -986,21 +986,18 @@ void Group::GroupLoot(Loot* loot, WorldObject* pLootedObject) Player* member = itr->GetSource(); if (!member || !member->GetSession()) continue; - if (i->AllowedForPlayer(member)) + if (member->IsAtGroupRewardDistance(pLootedObject) && i->AllowedForPlayer(member)) { - if (member->IsAtGroupRewardDistance(pLootedObject)) - { - r->totalPlayersRolling++; + r->totalPlayersRolling++; - if (member->GetPassOnGroupLoot()) - { - r->playerVote[member->GetGUID()] = PASS; - r->totalPass++; - // can't broadcast the pass now. need to wait until all rolling players are known. - } - else - r->playerVote[member->GetGUID()] = NOT_EMITED_YET; + if (member->GetPassOnGroupLoot()) + { + r->playerVote[member->GetGUID()] = PASS; + r->totalPass++; + // can't broadcast the pass now. need to wait until all rolling players are known. } + else + r->playerVote[member->GetGUID()] = NOT_EMITED_YET; } } @@ -1072,13 +1069,10 @@ void Group::GroupLoot(Loot* loot, WorldObject* pLootedObject) if (!member || !member->GetSession()) continue; - if (i->AllowedForPlayer(member)) + if (member->IsAtGroupRewardDistance(pLootedObject) && i->AllowedForPlayer(member)) { - if (member->IsAtGroupRewardDistance(pLootedObject)) - { - r->totalPlayersRolling++; - r->playerVote[member->GetGUID()] = NOT_EMITED_YET; - } + r->totalPlayersRolling++; + r->playerVote[member->GetGUID()] = NOT_EMITED_YET; } } @@ -1133,8 +1127,7 @@ void Group::NeedBeforeGreed(Loot* loot, WorldObject* lootedObject) if (!playerToRoll || !playerToRoll->GetSession()) continue; - bool allowedForPlayer = i->AllowedForPlayer(playerToRoll); - if (allowedForPlayer && playerToRoll->IsAtGroupRewardDistance(lootedObject)) + if (playerToRoll->IsAtGroupRewardDistance(lootedObject) && i->AllowedForPlayer(playerToRoll)) { r->totalPlayersRolling++; if (playerToRoll->GetPassOnGroupLoot()) @@ -1209,8 +1202,7 @@ void Group::NeedBeforeGreed(Loot* loot, WorldObject* lootedObject) if (!playerToRoll || !playerToRoll->GetSession()) continue; - bool allowedForPlayer = i->AllowedForPlayer(playerToRoll); - if (allowedForPlayer && playerToRoll->IsAtGroupRewardDistance(lootedObject)) + if (playerToRoll->IsAtGroupRewardDistance(lootedObject) && i->AllowedForPlayer(playerToRoll)) { r->totalPlayersRolling++; r->playerVote[playerToRoll->GetGUID()] = NOT_EMITED_YET; diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp index 3adc0ec9166..1e740b33bb9 100644 --- a/src/server/game/Handlers/LootHandler.cpp +++ b/src/server/game/Handlers/LootHandler.cpp @@ -394,7 +394,8 @@ void WorldSession::HandleLootMasterGiveOpcode(WorldPacket& recvData) return; } - Player* target = ObjectAccessor::FindPlayer(target_playerguid); + // player on other map + Player* target = ObjectAccessor::GetPlayer(*_player, target_playerguid); if (!target) { _player->SendLootError(lootguid, LOOT_ERROR_PLAYER_NOT_FOUND); diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 2f738b64910..daf6dea438b 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -982,7 +982,7 @@ void WorldSession::HandleInspectOpcode(WorldPacket& recvData) TC_LOG_DEBUG("network", "WORLD: Received CMSG_INSPECT"); - Player* player = ObjectAccessor::FindPlayer(guid); + Player* player = ObjectAccessor::GetPlayer(*_player, guid); if (!player) { TC_LOG_DEBUG("network", "CMSG_INSPECT: No player found from %s", guid.ToString().c_str()); @@ -1018,7 +1018,7 @@ void WorldSession::HandleInspectHonorStatsOpcode(WorldPacket& recvData) ObjectGuid guid; recvData >> guid; - Player* player = ObjectAccessor::FindPlayer(guid); + Player* player = ObjectAccessor::GetPlayer(*_player, guid); if (!player) { @@ -1455,7 +1455,7 @@ void WorldSession::HandleQueryInspectAchievements(WorldPacket& recvData) recvData >> guid.ReadAsPacked(); TC_LOG_DEBUG("network", "CMSG_QUERY_INSPECT_ACHIEVEMENTS [%s] Inspected Player [%s]", _player->GetGUID().ToString().c_str(), guid.ToString().c_str()); - Player* player = ObjectAccessor::FindPlayer(guid); + Player* player = ObjectAccessor::GetPlayer(*_player, guid); if (!player) return; diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index 89f6e78cc6d..98d15158abb 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -697,7 +697,7 @@ void WorldSession::HandlePetSpellAutocastOpcode(WorldPacket& recvPacket) if (!_player->GetGuardianPet() && !_player->GetCharm()) return; - if (ObjectAccessor::FindPlayer(guid)) + if (guid.IsPlayer()) return; Creature* pet=ObjectAccessor::GetCreatureOrPetOrVehicle(*_player, guid); diff --git a/src/server/game/Handlers/VehicleHandler.cpp b/src/server/game/Handlers/VehicleHandler.cpp index 0cdf22e2bd0..17af33cb270 100644 --- a/src/server/game/Handlers/VehicleHandler.cpp +++ b/src/server/game/Handlers/VehicleHandler.cpp @@ -130,7 +130,7 @@ void WorldSession::HandleEnterPlayerVehicle(WorldPacket &data) ObjectGuid guid; data >> guid; - if (Player* player = ObjectAccessor::FindPlayer(guid)) + if (Player* player = ObjectAccessor::GetPlayer(*_player, guid)) { if (!player->GetVehicleKit()) return; @@ -138,6 +138,9 @@ void WorldSession::HandleEnterPlayerVehicle(WorldPacket &data) return; if (!player->IsWithinDistInMap(_player, INTERACTION_DISTANCE)) return; + // Dont' allow players to enter player vehicle on arena + if (!_player->FindMap() || _player->FindMap()->IsBattleArena()) + return; _player->EnterVehicle(player); } diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index f4f91c16dc5..75245573e49 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -651,7 +651,7 @@ void InstanceScript::UpdateEncounterState(EncounterCreditType type, uint32 credi if (Group* grp = player->GetGroup()) if (grp->isLFGGroup()) { - sLFGMgr->FinishDungeon(grp->GetGUID(), dungeonId); + sLFGMgr->FinishDungeon(grp->GetGUID(), dungeonId, instance); return; } } diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 27d784a8110..d2bc9cdfb51 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -3512,6 +3512,11 @@ void BattlegroundMap::RemoveAllPlayers() player->TeleportTo(player->GetBattlegroundEntryPoint()); } +Player* Map::GetPlayer(ObjectGuid const& guid) +{ + return ObjectAccessor::GetPlayer(this, guid); +} + Corpse* Map::GetCorpse(ObjectGuid const& guid) { return _objectsStore.Find<Corpse>(guid); diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index c87726bba57..600594d0861 100644 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -451,8 +451,9 @@ class TC_GAME_API Map : public GridRefManager<NGridType> void UpdateIteratorBack(Player* player); - TempSummon* SummonCreature(uint32 entry, Position const& pos, SummonPropertiesEntry const* properties = NULL, uint32 duration = 0, Unit* summoner = NULL, uint32 spellId = 0, uint32 vehId = 0); - void SummonCreatureGroup(uint8 group, std::list<TempSummon*>* list = NULL); + TempSummon* SummonCreature(uint32 entry, Position const& pos, SummonPropertiesEntry const* properties = nullptr, uint32 duration = 0, Unit* summoner = nullptr, uint32 spellId = 0, uint32 vehId = 0); + void SummonCreatureGroup(uint8 group, std::list<TempSummon*>* list = nullptr); + Player* GetPlayer(ObjectGuid const& guid); Corpse* GetCorpse(ObjectGuid const& guid); Creature* GetCreature(ObjectGuid const& guid); GameObject* GetGameObject(ObjectGuid const& guid); diff --git a/src/server/game/Maps/MapScripts.cpp b/src/server/game/Maps/MapScripts.cpp index c3a933a753b..300c7fa38e5 100644 --- a/src/server/game/Maps/MapScripts.cpp +++ b/src/server/game/Maps/MapScripts.cpp @@ -295,7 +295,7 @@ void Map::ScriptsProcess() switch (step.sourceGUID.GetHigh()) { case HighGuid::Item: // as well as HighGuid::Container - if (Player* player = HashMapHolder<Player>::Find(step.ownerGUID)) + if (Player* player = GetPlayer(step.ownerGUID)) source = player->GetItemByGuid(step.sourceGUID); break; case HighGuid::Unit: @@ -306,7 +306,7 @@ void Map::ScriptsProcess() source = GetPet(step.sourceGUID); break; case HighGuid::Player: - source = HashMapHolder<Player>::Find(step.sourceGUID); + source = GetPlayer(step.sourceGUID); break; case HighGuid::Transport: case HighGuid::GameObject: @@ -338,7 +338,7 @@ void Map::ScriptsProcess() target = GetPet(step.targetGUID); break; case HighGuid::Player: // empty GUID case also - target = HashMapHolder<Player>::Find(step.targetGUID); + target = GetPlayer(step.targetGUID); break; case HighGuid::Transport: case HighGuid::GameObject: diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index a30fa83e32b..d93f5fd4de4 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -946,8 +946,9 @@ bool Aura::CanBeSaved() const if (IsPassive()) return false; + // Check if aura is single target, not only spell info if (GetCasterGUID() != GetOwner()->GetGUID()) - if (GetSpellInfo()->IsSingleTarget()) + if (GetSpellInfo()->IsSingleTarget() || IsSingleTarget()) return false; // Can't be saved - aura handler relies on calculated amount and changes it @@ -962,6 +963,18 @@ bool Aura::CanBeSaved() const if (HasEffectType(SPELL_AURA_CONTROL_VEHICLE)) return false; + // do not save bind sight auras + if (HasEffectType(SPELL_AURA_BIND_SIGHT)) + return false; + + // no charming auras (taking direct control) + if (HasEffectType(SPELL_AURA_MOD_POSSESS) || HasEffectType(SPELL_AURA_MOD_POSSESS_PET)) + return false; + + // no charming auras can be saved + if (HasEffectType(SPELL_AURA_MOD_CHARM) || HasEffectType(SPELL_AURA_AOE_CHARM)) + return false; + // Incanter's Absorbtion - considering the minimal duration and problems with aura stacking // we skip saving this aura // Also for some reason other auras put as MultiSlot crash core on keeping them after restart, diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index a6bdeeba9d0..ad58119547c 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -391,8 +391,7 @@ bool SpellEffectInfo::IsFarUnitTargetEffect() const return (Effect == SPELL_EFFECT_SUMMON_PLAYER) || (Effect == SPELL_EFFECT_SUMMON_RAF_FRIEND) || (Effect == SPELL_EFFECT_RESURRECT) - || (Effect == SPELL_EFFECT_RESURRECT_NEW) - || (Effect == SPELL_EFFECT_SKIN_PLAYER_CORPSE); + || (Effect == SPELL_EFFECT_RESURRECT_NEW); } bool SpellEffectInfo::IsFarDestTargetEffect() const diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp index 3475ecc05ba..2dadbecbfbe 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp @@ -204,7 +204,7 @@ public: { if (Group* group = players.begin()->GetSource()->GetGroup()) if (group->isLFGGroup()) - sLFGMgr->FinishDungeon(group->GetGUID(), 287); + sLFGMgr->FinishDungeon(group->GetGUID(), 287, me->GetMap()); } } diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp index 03bc38f2bbe..3102b7461d5 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp @@ -576,7 +576,7 @@ public: { if (Group* group = players.begin()->GetSource()->GetGroup()) if (group->isLFGGroup()) - sLFGMgr->FinishDungeon(group->GetGUID(), 285); + sLFGMgr->FinishDungeon(group->GetGUID(), 285, me->GetMap()); } } diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp index d2571e9d1d5..702496500ec 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp @@ -201,7 +201,7 @@ public: { if (Group* group = players.begin()->GetSource()->GetGroup()) if (group->isLFGGroup()) - sLFGMgr->FinishDungeon(group->GetGUID(), 286); + sLFGMgr->FinishDungeon(group->GetGUID(), 286, me->GetMap()); } _JustDied(); |