From cfd24129d3a3b29516ce7160f136c74bf2f44185 Mon Sep 17 00:00:00 2001 From: megamage Date: Tue, 18 Aug 2009 17:44:17 -0500 Subject: *Fix a crash by looting player's corpse when the bg is unloaded. --HG-- branch : trunk --- src/game/Map.cpp | 1 + src/game/Player.cpp | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/game/Map.cpp b/src/game/Map.cpp index 132a61a4f8d..65e45ba62b8 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -1107,6 +1107,7 @@ void Map::RemoveAllPlayers() { if(HavePlayers()) { + // this is happening for bg sLog.outError("Map::UnloadAll: there are still players in the instance at unload, should not happen!"); for(MapRefManager::iterator itr = m_mapRefManager.begin(); itr != m_mapRefManager.end(); ++itr) diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 333b5c426d9..1fc04b4051f 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -7818,8 +7818,9 @@ void Player::SendLoot(uint64 guid, LootType loot_type) bones->lootForBody = true; uint32 pLevel = bones->loot.gold; bones->loot.clear(); - if(GetBattleGround()->GetTypeID() == BATTLEGROUND_AV) - loot->FillLoot(1, LootTemplates_Creature, this, true); + if(BattleGround *bg = GetBattleGround()) + if(bg->GetTypeID() == BATTLEGROUND_AV) + loot->FillLoot(1, LootTemplates_Creature, this, true); // It may need a better formula // Now it works like this: lvl10: ~6copper, lvl70: ~9silver bones->loot.gold = (uint32)( urand(50, 150) * 0.016f * pow( ((float)pLevel)/5.76f, 2.5f) * sWorld.getRate(RATE_DROP_MONEY) ); -- cgit v1.2.3