diff options
author | Kandera <KanderaDev@gmail.com> | 2012-07-09 11:12:59 -0400 |
---|---|---|
committer | Kandera <KanderaDev@gmail.com> | 2012-07-09 11:12:59 -0400 |
commit | d5836422ac821aa7fce0f49c4276a076257e76b3 (patch) | |
tree | a48d350ce33b53a5326a19697253f3bf4664203c /src | |
parent | 8f6d8c352c9134ad41308d6c669ec1314cff81c1 (diff) |
Core/Loot: couple of small changes to loot.
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Loot/LootMgr.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp index 6df73c2ef69..dea69e4622f 100755 --- a/src/server/game/Loot/LootMgr.cpp +++ b/src/server/game/Loot/LootMgr.cpp @@ -514,7 +514,7 @@ QuestItemList* Loot::FillQuestLoot(Player* player) { LootItem &item = quest_items[i]; - if ((!item.is_looted && item.AllowedForPlayer(player)) || (item.follow_loot_rules && player->GetGroup() && player->GetGroup()->GetLootMethod() == MASTER_LOOT && player->GetGroup()->GetLooterGuid() == player->GetGUID())) + if (!item.is_looted && (item.AllowedForPlayer(player) || (item.follow_loot_rules && player->GetGroup() && (player->GetGroup()->GetLootMethod() == MASTER_LOOT && player->GetGroup()->GetLooterGuid() == player->GetGUID()) || player->GetGroup()->GetLootMethod() != MASTER_LOOT ))) { ql->push_back(QuestItem(i)); @@ -522,11 +522,10 @@ QuestItemList* Loot::FillQuestLoot(Player* player) // player's quest vector // // increase once if one looter only, looter-times if free for all - if (item.freeforall && !item.is_blocked) - { + if (item.freeforall || !item.is_blocked) ++unlootedCount; + if (!player->GetGroup() || (player->GetGroup()->GetLootMethod() != GROUP_LOOT || player->GetGroup()->GetLootMethod() != ROUND_ROBIN)) item.is_blocked = true; - } if (items.size() + ql->size() == MAX_NR_LOOT_ITEMS) break; @@ -549,7 +548,7 @@ QuestItemList* Loot::FillNonQuestNonFFAConditionalLoot(Player* player, bool pres for (uint8 i = 0; i < items.size(); ++i) { LootItem &item = items[i]; - if (!item.is_looted && !item.freeforall && (item.AllowedForPlayer(player)) || (item.follow_loot_rules && player->GetGroup() && player->GetGroup()->GetLootMethod() == MASTER_LOOT && player->GetGroup()->GetLooterGuid() == player->GetGUID())) + if (!item.is_looted && (item.AllowedForPlayer(player) || (item.follow_loot_rules && player->GetGroup() && (player->GetGroup()->GetLootMethod() == MASTER_LOOT && player->GetGroup()->GetLooterGuid() == player->GetGUID()) || player->GetGroup()->GetLootMethod() != MASTER_LOOT ))) { if (presentAtLooting) item.AddAllowedLooter(player); @@ -892,7 +891,6 @@ ByteBuffer& operator<<(ByteBuffer& b, LootView const& lv) } LootSlotType slotType = lv.permission == OWNER_PERMISSION ? LOOT_SLOT_TYPE_OWNER : LOOT_SLOT_TYPE_ALLOW_LOOT; - LootSlotType partySlotType = lv.permission == MASTER_PERMISSION ? LOOT_SLOT_TYPE_MASTER : (lv.permission == GROUP_PERMISSION ? LOOT_SLOT_TYPE_ROLL_ONGOING : slotType); QuestItemMap const& lootPlayerQuestItems = l.GetPlayerQuestItems(); QuestItemMap::const_iterator q_itr = lootPlayerQuestItems.find(lv.viewer->GetGUIDLow()); if (q_itr != lootPlayerQuestItems.end()) @@ -913,8 +911,12 @@ ByteBuffer& operator<<(ByteBuffer& b, LootView const& lv) b << uint8(LOOT_SLOT_TYPE_MASTER); break; case GROUP_PERMISSION: + case ROUND_ROBIN_PERMISSION: if (!item.is_blocked) + { b << uint8(LOOT_SLOT_TYPE_ALLOW_LOOT); + item.is_blocked == true; + } else b << uint8(LOOT_SLOT_TYPE_ROLL_ONGOING); break; @@ -968,8 +970,12 @@ ByteBuffer& operator<<(ByteBuffer& b, LootView const& lv) b << uint8(LOOT_SLOT_TYPE_MASTER); break; case GROUP_PERMISSION: + case ROUND_ROBIN_PERMISSION: if (!item.is_blocked) + { b << uint8(LOOT_SLOT_TYPE_ALLOW_LOOT); + item.is_blocked == true; + } else b << uint8(LOOT_SLOT_TYPE_ROLL_ONGOING); break; |