diff --git a/scripts/eloot.lic b/scripts/eloot.lic index d0e95870c..4099136e3 100644 --- a/scripts/eloot.lic +++ b/scripts/eloot.lic @@ -15,9 +15,14 @@ game: Gemstone tags: loot required: Lich >= 5.15.0 - version: 2.11.9 + version: 2.11.10 Improvements: Major_change.feature_addition.bugfix + v2.11.10 (2026-09-12) + - fix: eloot could get stuck indefinitely trying to store a looted item while stunned + during a heavy fight, requiring a manual restart + - fix: massive boulders were being skinned with a regular blade instead of a blunt + weapon like their fellow stone-hided creatures v2.11.9 (2026-09-14) - fix: selling in the Hinterwilds (Coldriver Village) no longer walks you to Icemule Trace. The town has no pawnshop, and several sell paths routed to the nearest one @@ -3964,38 +3969,34 @@ module ELoot # Inventory methods end overflow_keys.each { |key| containers << StowList.stow_list[key] } - begin - containers.each_with_index do |bag, index| - if stunned? - ELoot.wait_rt - raise - end - next if bag && ELoot.data.sacks_full.keys.include?(bag.name) - - if bag.nil? - case index - when 0 - # Skip if item-specific container not set (this is normal) - when 1 - ELoot.msg(type: "yellow", text: " No default container identified. This shouldn't happen.") - ELoot.msg(type: "yellow", text: " Check your STOW settings. Exiting") - exit - else - # Overflow container not identified (this is normal if not all overflow containers are set) - overflow_num = index - 1 - ELoot.msg(type: "info", text: " Skipping overflow container #{overflow_num}. No container identified.") - end + containers.each_with_index do |bag, index| + if stunned? + ELoot.msg(type: "debug", text: "single_drag: character stunned, waiting for it to clear") + wait_while { stunned? } + end + next if bag && ELoot.data.sacks_full.keys.include?(bag.name) + + if bag.nil? + case index + when 0 + # Skip if item-specific container not set (this is normal) + when 1 + ELoot.msg(type: "yellow", text: " No default container identified. This shouldn't happen.") + ELoot.msg(type: "yellow", text: " Check your STOW settings. Exiting") + exit else - result = Inventory.store_item(bag, item) - if result - ELoot.box_phase(item) if phase_thing - stored = true - break - end + # Overflow container not identified (this is normal if not all overflow containers are set) + overflow_num = index - 1 + ELoot.msg(type: "info", text: " Skipping overflow container #{overflow_num}. No container identified.") + end + else + result = Inventory.store_item(bag, item) + if result + ELoot.box_phase(item) if phase_thing + stored = true + break end end - rescue - retry end # If item wasn't stored, pause and address @@ -5884,8 +5885,8 @@ module ELoot # Room looting return if objs.empty? - blunts = objs.find_all { |obj| obj.name =~ /krynch|stone mastiff|krag dweller|cavern urchin/i } - normals = objs.reject { |obj| obj.name =~ /krynch|stone mastiff|krag dweller|cavern urchin/i } + blunts = objs.find_all { |obj| obj.name =~ /krynch|stone mastiff|krag dweller|cavern urchin|massive boulder/i } + normals = objs.reject { |obj| obj.name =~ /krynch|stone mastiff|krag dweller|cavern urchin|massive boulder/i } skin_obj_types(normals, :normal) skin_obj_types(blunts, :blunt)