aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <none@none>2010-09-14 16:56:30 +0200
committerShauren <none@none>2010-09-14 16:56:30 +0200
commit74ca173923c53982b25a1e443fbd060990fda36c (patch)
tree05798403e00bbc88105cdacf72fae0b18ca64aa3
parent61bbd284de251aa3b46872c431174720a118ed9c (diff)
Core/Loot: Fixed currency items being automatically distributed to players outside the instance, now if player is outside he will still be able to claim his emblems but will have to loot it manually
Closes issue #4005. --HG-- branch : trunk
-rw-r--r--src/server/game/Loot/LootMgr.cpp12
-rw-r--r--src/server/game/Loot/LootMgr.h2
2 files changed, 9 insertions, 5 deletions
diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp
index 85f0cd869ee..a0fc3156c07 100644
--- a/src/server/game/Loot/LootMgr.cpp
+++ b/src/server/game/Loot/LootMgr.cpp
@@ -437,8 +437,8 @@ bool Loot::FillLoot(uint32 lootId, LootStore const& store, Player* lootOwner, bo
roundRobinPlayer = lootOwner->GetGUID();
for (GroupReference *itr = pGroup->GetFirstMember(); itr != NULL; itr = itr->next())
- if (Player* pl = itr->getSource())
- FillNotNormalLootFor(pl);
+ if (Player* pl = itr->getSource()) // should actually be looted object instead of lootOwner but looter has to be really close so doesnt really matter
+ FillNotNormalLootFor(pl, pl->IsAtGroupRewardDistance(lootOwner));
for (uint8 i = 0; i < items.size(); ++i)
{
@@ -449,12 +449,12 @@ bool Loot::FillLoot(uint32 lootId, LootStore const& store, Player* lootOwner, bo
}
// ... for personal loot
else
- FillNotNormalLootFor(lootOwner);
+ FillNotNormalLootFor(lootOwner, true);
return true;
}
-void Loot::FillNotNormalLootFor(Player* pl)
+void Loot::FillNotNormalLootFor(Player* pl, bool withCurrency)
{
uint32 plguid = pl->GetGUIDLow();
@@ -470,6 +470,10 @@ void Loot::FillNotNormalLootFor(Player* pl)
if (qmapitr == PlayerNonQuestNonFFAConditionalItems.end())
FillNonQuestNonFFAConditionalLoot(pl);
+ // if not auto-processed player will have to come and pick it up manually
+ if (!withCurrency)
+ return;
+
// Process currency items
uint32 max_slot = GetMaxSlotInLootFor(pl);
uint32 itemId = 0;
diff --git a/src/server/game/Loot/LootMgr.h b/src/server/game/Loot/LootMgr.h
index f057c19ce41..b8b415438e7 100644
--- a/src/server/game/Loot/LootMgr.h
+++ b/src/server/game/Loot/LootMgr.h
@@ -333,7 +333,7 @@ struct Loot
bool hasOverThresholdItem() const;
private:
- void FillNotNormalLootFor(Player* player);
+ void FillNotNormalLootFor(Player* player, bool withCurrency);
QuestItemList* FillFFALoot(Player* player);
QuestItemList* FillQuestLoot(Player* player);
QuestItemList* FillNonQuestNonFFAConditionalLoot(Player* player);