From 0bd01fe9323f05dc90106b418117e6012742c0c3 Mon Sep 17 00:00:00 2001 From: mrhoribu <15917743+mrhoribu@users.noreply.github.com> Date: Sat, 12 Sep 2026 22:29:51 -0400 Subject: [PATCH 1/2] fix(eloot): v2.11.9 stuck indefinitely trying to store loot while stunned The stun check in single_drag used an exception (raise/rescue-retry) to restart the container loop, with no attempt cap and no logging on any of that path. If stunned? stayed true (e.g. repeated stuns during a heavy fight), eloot would spin silently forever with no way to tell it apart from a genuine hang, requiring a manual kill/reload. Swap it for the existing wait_while { stunned? } idiom used elsewhere in this codebase, with a debug message so it's visible when it happens. Co-Authored-By: Claude Sonnet 5 --- scripts/eloot.lic | 59 +++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 30 deletions(-) diff --git a/scripts/eloot.lic b/scripts/eloot.lic index bd46dee7a..962b13e19 100644 --- a/scripts/eloot.lic +++ b/scripts/eloot.lic @@ -15,9 +15,12 @@ game: Gemstone tags: loot required: Lich >= 5.15.0 - version: 2.11.8 + version: 2.11.9 Improvements: Major_change.feature_addition.bugfix + v2.11.9 (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 v2.11.8 (2026-09-09) - fix: eloot could pause and wait for you to clear space by hand when the locksmith pool handed back a box and your containers were already full. It now sells off @@ -3919,38 +3922,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 From 71de17ae3ebda5fff500cfa206e84fcffde23d33 Mon Sep 17 00:00:00 2001 From: mrhoribu <15917743+mrhoribu@users.noreply.github.com> Date: Sat, 12 Sep 2026 22:41:34 -0400 Subject: [PATCH 2/2] fix(eloot): v2.11.9 massive boulders skinned with the wrong tool type Loot.skin routes krynch, stone mastiff, krag dweller, and cavern urchin to the blunt-weapon skinner since a blade doesn't work on their hides, but left massive boulder out of that list despite it being the same kind of stone-hided creature, so it fell through to the regular skinner. Co-Authored-By: Claude Sonnet 5 --- scripts/eloot.lic | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/eloot.lic b/scripts/eloot.lic index 962b13e19..565f97407 100644 --- a/scripts/eloot.lic +++ b/scripts/eloot.lic @@ -21,6 +21,8 @@ v2.11.9 (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.8 (2026-09-09) - fix: eloot could pause and wait for you to clear space by hand when the locksmith pool handed back a box and your containers were already full. It now sells off @@ -5838,8 +5840,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)