aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none>2009-08-18 17:44:17 -0500
committermegamage <none@none>2009-08-18 17:44:17 -0500
commitcfd24129d3a3b29516ce7160f136c74bf2f44185 (patch)
tree63a04f410b8976adca49edf60a6062c1ff10b78b /src
parent0ca72750436e1ec1f28fae6f2441ce37c6696097 (diff)
*Fix a crash by looting player's corpse when the bg is unloaded.
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/Map.cpp1
-rw-r--r--src/game/Player.cpp5
2 files changed, 4 insertions, 2 deletions
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) );