Mercurial > wow > askmrrobot
comparison Gear.lua @ 73:304d7ebb8e30 v29
small bug fixes for item upgrades, gear swapping
| author | yellowfive |
|---|---|
| date | Tue, 17 Nov 2015 20:52:06 -0800 |
| parents | 6abc0858b45e |
| children | 0515882856f1 |
comparison
equal
deleted
inserted
replaced
| 72:55598ba0d435 | 73:304d7ebb8e30 |
|---|---|
| 38 | 38 |
| 39 -- given a table of items (keyed or indexed doesn't matter) find closest match to item, or nil if none are a match | 39 -- given a table of items (keyed or indexed doesn't matter) find closest match to item, or nil if none are a match |
| 40 local function findMatchingItemFromTable(item, list, bestLink, bestItem, bestDiff, bestLoc, usedItems, tableType) | 40 local function findMatchingItemFromTable(item, list, bestLink, bestItem, bestDiff, bestLoc, usedItems, tableType) |
| 41 if not list then return nil end | 41 if not list then return nil end |
| 42 | 42 |
| 43 local found = false | |
| 43 for k,v in pairs(list) do | 44 for k,v in pairs(list) do |
| 44 local listItem = Amr.ParseItemLink(v) | 45 local listItem = Amr.ParseItemLink(v) |
| 45 if listItem then | 46 if listItem then |
| 46 local diff = countItemDifferences(item, listItem) | 47 local diff = countItemDifferences(item, listItem) |
| 47 if diff < bestDiff then | 48 if diff < bestDiff then |
| 50 if not usedItems[key] then | 51 if not usedItems[key] then |
| 51 bestLink = v | 52 bestLink = v |
| 52 bestItem = listItem | 53 bestItem = listItem |
| 53 bestDiff = diff | 54 bestDiff = diff |
| 54 bestLoc = string.format("%s_%s", tableType, k) | 55 bestLoc = string.format("%s_%s", tableType, k) |
| 56 found = true | |
| 55 end | 57 end |
| 56 end | 58 end |
| 57 if diff == 0 then break end | 59 if found then break end |
| 58 end | 60 end |
| 59 end | 61 end |
| 60 | 62 |
| 61 return bestLink, bestItem, bestDiff, bestLoc | 63 return bestLink, bestItem, bestDiff, bestLoc |
| 62 end | 64 end |
| 504 local bestLink = nil | 506 local bestLink = nil |
| 505 local bestDiff = 1000 | 507 local bestDiff = 1000 |
| 506 | 508 |
| 507 -- find the best matching item | 509 -- find the best matching item |
| 508 | 510 |
| 511 -- inventory | |
| 512 bestItem, bestDiff, bestLink = scanBagForItem(item, BACKPACK_CONTAINER, bestItem, bestDiff, bestLink) | |
| 513 for bagId = 1, NUM_BAG_SLOTS do | |
| 514 bestItem, bestDiff, bestLink = scanBagForItem(item, bagId, bestItem, bestDiff, bestLink) | |
| 515 end | |
| 516 | |
| 509 -- equipped items, but skip slots we have just equipped (to avoid e.g. just moving 2 of the same item back and forth between mh oh weapon slots) | 517 -- equipped items, but skip slots we have just equipped (to avoid e.g. just moving 2 of the same item back and forth between mh oh weapon slots) |
| 510 for slotNum = 1, #Amr.SlotIds do | 518 for slotNum = 1, #Amr.SlotIds do |
| 511 local slotId = Amr.SlotIds[slotNum] | 519 local slotId = Amr.SlotIds[slotNum] |
| 512 if not _pendingEquip.doneSlots[slotId] then | 520 if not _pendingEquip.doneSlots[slotId] then |
| 513 local itemLink = GetInventoryItemLink("player", slotId) | 521 local itemLink = GetInventoryItemLink("player", slotId) |
| 523 end | 531 end |
| 524 end | 532 end |
| 525 end | 533 end |
| 526 end | 534 end |
| 527 | 535 |
| 528 -- inventory | |
| 529 bestItem, bestDiff, bestLink = scanBagForItem(item, BACKPACK_CONTAINER, bestItem, bestDiff, bestLink) | |
| 530 for bagId = 1, NUM_BAG_SLOTS do | |
| 531 bestItem, bestDiff, bestLink = scanBagForItem(item, bagId, bestItem, bestDiff, bestLink) | |
| 532 end | |
| 533 | |
| 534 -- bank | 536 -- bank |
| 535 bestItem, bestDiff, bestLink = scanBagForItem(item, BANK_CONTAINER, bestItem, bestDiff, bestLink) | 537 bestItem, bestDiff, bestLink = scanBagForItem(item, BANK_CONTAINER, bestItem, bestDiff, bestLink) |
| 536 for bagId = NUM_BAG_SLOTS + 1, NUM_BAG_SLOTS + NUM_BANKBAGSLOTS do | 538 for bagId = NUM_BAG_SLOTS + 1, NUM_BAG_SLOTS + NUM_BANKBAGSLOTS do |
| 537 bestItem, bestDiff, bestLink = scanBagForItem(item, bagId, bestItem, bestDiff, bestLink) | 539 bestItem, bestDiff, bestLink = scanBagForItem(item, bagId, bestItem, bestDiff, bestLink) |
| 538 end | 540 end |
| 686 _pendingEquip = { | 688 _pendingEquip = { |
| 687 tries = _pendingEquip and _pendingEquip.spec == spec and _pendingEquip.tries or 0, | 689 tries = _pendingEquip and _pendingEquip.spec == spec and _pendingEquip.tries or 0, |
| 688 spec = spec, | 690 spec = spec, |
| 689 itemsToEquip = itemsToEquip, | 691 itemsToEquip = itemsToEquip, |
| 690 remaining = remaining, | 692 remaining = remaining, |
| 691 doneSlots = {}, | 693 doneSlots = _pendingEquip and _pendingEquip.spec == spec and _pendingEquip.doneSlots or {}, |
| 692 nextSlot = firstSlot | 694 nextSlot = firstSlot |
| 693 } | 695 } |
| 694 | 696 |
| 695 -- starting item | 697 -- starting item |
| 696 for slotId, item in pairs(_pendingEquip.itemsToEquip) do | 698 for slotId, item in pairs(_pendingEquip.itemsToEquip) do |
