From 18e01b77424f9a4da5f4a75f5e7763948e6b5648 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Tue, 27 Jun 2017 01:07:32 -0400 Subject: [PATCH] TC: Core/Loot: Fixed quest loot. Also missed changeover to objectguid. --- Game/Loot/Loot.cs | 51 ++++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/Game/Loot/Loot.cs b/Game/Loot/Loot.cs index 9096bc63d..9fd6bb757 100644 --- a/Game/Loot/Loot.cs +++ b/Game/Loot/Loot.cs @@ -259,7 +259,7 @@ namespace Game.Loots void FillNotNormalLootFor(Player player, bool presentAtLooting) { - ulong plguid = player.GetGUID().GetCounter(); + ObjectGuid plguid = player.GetGUID(); var questItemList = PlayerQuestItems.LookupByKey(plguid); if (questItemList.Empty()) @@ -315,7 +315,7 @@ namespace Game.Loots return null; - PlayerFFAItems[player.GetGUID().GetCounter()] = ql; + PlayerFFAItems[player.GetGUID()] = ql; return ql; } @@ -330,8 +330,8 @@ namespace Game.Loots { LootItem item = quest_items[i]; - if (!item.is_looted && (item.AllowedForPlayer(player) || (item.follow_loot_rules && player.GetGroup() != null - && ((player.GetGroup().GetLootMethod() == LootMethod.MasterLoot && player.GetGroup().GetLooterGuid() == player.GetGUID()) || player.GetGroup().GetLootMethod() != LootMethod.MasterLoot)))) + if (!item.is_looted && (item.AllowedForPlayer(player) || (item.follow_loot_rules && player.GetGroup() && ((player.GetGroup().GetLootMethod() == LootMethod.MasterLoot + && player.GetGroup().GetMasterLooterGuid() == player.GetGUID()) || player.GetGroup().GetLootMethod() != LootMethod.MasterLoot)))) { ql.Add(new QuestItem(i)); @@ -351,7 +351,7 @@ namespace Game.Loots if (ql.Empty()) return null; - PlayerQuestItems[player.GetGUID().GetCounter()] = ql; + PlayerQuestItems[player.GetGUID()] = ql; return ql; } @@ -381,7 +381,7 @@ namespace Game.Loots if (ql.Empty()) return null; - PlayerNonQuestNonFFAConditionalItems[player.GetGUID().GetCounter()] = ql; + PlayerNonQuestNonFFAConditionalItems[player.GetGUID()] = ql; return ql; } @@ -423,7 +423,7 @@ namespace Game.Loots Player player = Global.ObjAccessor.FindPlayer(PlayersLooting[i]); if (player) { - var pql = PlayerQuestItems.LookupByKey(player.GetGUID().GetCounter()); + var pql = PlayerQuestItems.LookupByKey(player.GetGUID()); if (!pql.Empty()) { byte j; @@ -496,7 +496,7 @@ namespace Game.Loots if (lootSlot >= items.Count) { uint questSlot = (uint)(lootSlot - items.Count); - var questItems = PlayerQuestItems.LookupByKey(player.GetGUID().GetCounter()); + var questItems = PlayerQuestItems.LookupByKey(player.GetGUID()); if (!questItems.Empty()) { QuestItem qitem2 = questItems.Find(p => p.index == questSlot); @@ -514,7 +514,7 @@ namespace Game.Loots is_looted = item.is_looted; if (item.freeforall) { - var questItemList = PlayerFFAItems.LookupByKey(player.GetGUID().GetCounter()); + var questItemList = PlayerFFAItems.LookupByKey(player.GetGUID()); if (!questItemList.Empty()) { foreach (var c in questItemList) @@ -531,7 +531,7 @@ namespace Game.Loots } else if (!item.conditions.Empty()) { - var questItemList = PlayerNonQuestNonFFAConditionalItems.LookupByKey(player.GetGUID().GetCounter()); + var questItemList = PlayerNonQuestNonFFAConditionalItems.LookupByKey(player.GetGUID()); if (!questItemList.Empty()) { foreach (var iter in questItemList) @@ -556,7 +556,7 @@ namespace Game.Loots public uint GetMaxSlotInLootFor(Player player) { - var questItemList = PlayerQuestItems.LookupByKey(player.GetGUID().GetCounter()); + var questItemList = PlayerQuestItems.LookupByKey(player.GetGUID()); return (uint)(items.Count + questItemList.Count); } @@ -578,7 +578,7 @@ namespace Game.Loots public bool hasItemFor(Player player) { var lootPlayerQuestItems = GetPlayerQuestItems(); - var q_list = lootPlayerQuestItems.LookupByKey(player.GetGUID().GetCounter()); + var q_list = lootPlayerQuestItems.LookupByKey(player.GetGUID()); if (!q_list.Empty()) { foreach (var qi in q_list) @@ -590,7 +590,7 @@ namespace Game.Loots } var lootPlayerFFAItems = GetPlayerFFAItems(); - var ffa_list = lootPlayerFFAItems.LookupByKey(player.GetGUID().GetCounter()); + var ffa_list = lootPlayerFFAItems.LookupByKey(player.GetGUID()); if (!ffa_list.Empty()) { foreach (var fi in ffa_list) @@ -602,7 +602,7 @@ namespace Game.Loots } var lootPlayerNonQuestNonFFAConditionalItems = GetPlayerNonQuestNonFFAConditionalItems(); - var conditional_list = lootPlayerNonQuestNonFFAConditionalItems.LookupByKey(player.GetGUID().GetCounter()); + var conditional_list = lootPlayerNonQuestNonFFAConditionalItems.LookupByKey(player.GetGUID()); if (!conditional_list.Empty()) { foreach (var ci in conditional_list) @@ -715,16 +715,17 @@ namespace Game.Loots LootSlotType slotType = permission == PermissionTypes.Owner ? LootSlotType.Owner : LootSlotType.AllowLoot; var lootPlayerQuestItems = GetPlayerQuestItems(); - var q_list = lootPlayerQuestItems.LookupByKey(viewer.GetGUID().GetCounter()); + var q_list = lootPlayerQuestItems.LookupByKey(viewer.GetGUID()); if (!q_list.Empty()) { - foreach (var qi in q_list) + for (var i = 0; i < q_list.Count; ++i) { + QuestItem qi = q_list[i]; LootItem item = quest_items[qi.index]; if (!qi.is_looted && !item.is_looted) { LootItemData lootItem = new LootItemData(); - lootItem.LootListID = (byte)(items.Count + qi.index + 1); + lootItem.LootListID = (byte)(items.Count + i + 1); lootItem.Quantity = item.count; lootItem.Loot = new ItemInstance(item); @@ -758,7 +759,7 @@ namespace Game.Loots } var lootPlayerFFAItems = GetPlayerFFAItems(); - var ffa_list = lootPlayerFFAItems.LookupByKey(viewer.GetGUID().GetCounter()); + var ffa_list = lootPlayerFFAItems.LookupByKey(viewer.GetGUID()); if (!ffa_list.Empty()) { foreach (var fi in ffa_list) @@ -777,7 +778,7 @@ namespace Game.Loots } var lootPlayerNonQuestNonFFAConditionalItems = GetPlayerNonQuestNonFFAConditionalItems(); - var conditional_list = lootPlayerNonQuestNonFFAConditionalItems.LookupByKey(viewer.GetGUID().GetCounter()); + var conditional_list = lootPlayerNonQuestNonFFAConditionalItems.LookupByKey(viewer.GetGUID()); if (!conditional_list.Empty()) { foreach (var ci in conditional_list) @@ -852,9 +853,9 @@ namespace Game.Loots public ObjectGuid GetGUID() { return _GUID; } public void SetGUID(ObjectGuid guid) { _GUID = guid; } - public MultiMap GetPlayerQuestItems() { return PlayerQuestItems; } - public MultiMap GetPlayerFFAItems() { return PlayerFFAItems; } - public MultiMap GetPlayerNonQuestNonFFAConditionalItems() { return PlayerNonQuestNonFFAConditionalItems; } + public MultiMap GetPlayerQuestItems() { return PlayerQuestItems; } + public MultiMap GetPlayerFFAItems() { return PlayerFFAItems; } + public MultiMap GetPlayerNonQuestNonFFAConditionalItems() { return PlayerNonQuestNonFFAConditionalItems; } public List items = new List(); public List quest_items = new List(); @@ -867,9 +868,9 @@ namespace Game.Loots public ObjectGuid containerID; List PlayersLooting = new List(); - MultiMap PlayerQuestItems = new MultiMap(); - MultiMap PlayerFFAItems = new MultiMap(); - MultiMap PlayerNonQuestNonFFAConditionalItems = new MultiMap(); + MultiMap PlayerQuestItems = new MultiMap(); + MultiMap PlayerFFAItems = new MultiMap(); + MultiMap PlayerNonQuestNonFFAConditionalItems = new MultiMap(); // All rolls are registered here. They need to know, when the loot is not valid anymore LootValidatorRefManager i_LootValidatorRefManager = new LootValidatorRefManager();