diff --git a/scripts/eloot.lic b/scripts/eloot.lic
index e670d866a..8087fd9eb 100644
--- a/scripts/eloot.lic
+++ b/scripts/eloot.lic
@@ -15,9 +15,20 @@
game: Gemstone
tags: loot
required: Lich >= 5.12.9
- version: 2.7.0
+ version: 2.7.1
Improvements:
Major_change.feature_addition.bugfix
+ v2.7.1 (2026-01-27)
+ - replaced overflow_container and secondary_overflow with single overflow_containers setting (comma-separated)
+ - added configurable "Trash to Dump" section, instead of hardcoded herb/food/junk
+ - bugfix inbetween script(s) added erroneous commas between script parameters
+ - allow custom bank withdraw amount
+ - bugfix when trying to store box in non-group disk
+ - bugfix in box_loot_ground locked box message
+ - bugfix in single_drag_box cycling thru all group disks even when use_disk_group was false
+ - bugfix for eonake gauntlet missing XML to properly match
+ - bugfix for in_region check if already in destination room
+ - reset sacks full when using --sellable/type/sell CLI
v2.7.0 (2026-01-19)
- added ground looting of boxes
- added support for group disks when looting boxes
@@ -622,8 +633,7 @@ module ELoot # UI Setup
loot_phase: { default: false },
use_disk: { default: true },
loot_defensive: { default: false },
- overflow_container: { default: '' },
- secondary_overflow: { default: '' },
+ overflow_containers: { default: '' },
coin_hand_name: { default: '' },
charm_name: { default: '' },
sigil_determination_on_fail: { default: false },
@@ -743,6 +753,7 @@ module ELoot # UI Setup
sell_aspect: { default: false },
sell_keep_silver: { default: 0 },
sell_deposit_coinhand: { default: false },
+ trash_dump_types: { default: ["herb", "junk", "food"] },
},
skin: {
skin_enable: { default: false },
@@ -802,7 +813,8 @@ module ELoot # UI Setup
gem_everything_list: { default: false },
gem_only_list: { default: false },
gem_horde_container: { default: '' },
- gem_horde_containers: { default: ['default', 'gem', 'overflow1', 'overflow2'] },
+ gem_horde_containers: { default: ['default', 'gem'] },
+ gem_horde_use_overflow: { default: false },
gem_locker: { default: '' },
gem_locker_name: { default: '' },
gem_horde_locker_che: { default: false },
@@ -855,7 +867,8 @@ module ELoot # UI Setup
alchemy_everything_list: { default: false },
alchemy_only_list: { default: false },
alchemy_horde_container: { default: '' },
- alchemy_horde_containers: { default: ['default', 'reagent', 'overflow1', 'overflow2'] },
+ alchemy_horde_containers: { default: ['default', 'reagent'] },
+ alchemy_horde_use_overflow: { default: false },
alchemy_locker: { default: '' },
alchemy_locker_name: { default: '' },
alchemy_horde_locker_che: { default: false },
@@ -948,11 +961,9 @@ module ELoot # UI Setup
0001
20240411
- FalseTrue100Use town locksmithTrueTrueFalsestart510True
01Display box contentsTrueTrueFalsestart510True
11Always check pool (?)TrueTrueFalsestart510True
- 10TrueFalsestart1010Locksmith Withdraw Amount03
+ 10TrueFalsestart1010Bank Withdraw Amount03
TrueTrueHow much to withdraw from the bank before going to the town locksmith.start10105locksmith_withdraw_amount_adjustment
04Default to using locksmith when gem bounty activeTrueTrueFalse510True
022TrueFalseLocksmithing00
@@ -1061,7 +1072,7 @@ module ELoot # UI Setup
Share silversTrueTrueFalsestart55True20
TrueTruestart305300sell_keep_silver_adjustmentTrue312
TrueFalseOther Settings002FalseTrue3
- 3TrueFalseSelling3FalseTrueTrueinTrueFalseTrueFalse10150150TrueFalse50TrueFalsecenter5525Add80TrueTrueTruestart5
+ TrueFalse100TrueFalse5525TrueAlchemyTrueTrueFalsestart5True00FoodTrueTrueFalsestartTrue10Locksmith TrapsTrueTrueFalsestartTrue20BoxTrueTrueFalsestartTrue30HerbTrueTrueFalsestart5True01ReagentTrueTrueFalsestartTrue11WandTrueTrueFalsestartTrue21BreakableTrueTrueFalsestartTrue31ClothingTrueTrueFalsestart5True02JunkTrueTrueFalsestartTrue12LockpickTrueTrueFalsestartTrue22TrueFalseTrash to Dump (?)Will attempt to TRASH type after selling is done, requires type to be enabled for selling to dumpFalseTrue43TrueFalseSelling3FalseTrueTrueinTrueFalseTrueFalse10150150TrueFalse50TrueFalsecenter5525Add80TrueTrueTruestart5
00Delete80TrueTrueTrueend520
TrueTrueTrueEnter exclusion (e.g. uncut diamond)10200TrueTrue5555TrueinTrueFalseTrueTruesell_exclude_storeFalse0True
fixedExclusion0013TrueFalseExclusions (?)
@@ -1099,9 +1110,8 @@ module ELoot # UI Setup
00TrueFalseend10Entry Verb01TrueFalseend10Exit Verb
0214TrueFalsestartstart1520
04TrueFalseGeneral SettingsFalseTrue0TrueFalse50TrueFalseTrueDefaultTrueTrueFalsestart101010True
- 00First OverflowTrueTrueFalsestart55True
- 20Second OverflowTrueTrueFalsestart55True
- 30GemTrueTrueFalsestart55True
+ 00Use All Overflow ContainersTrueTrueFalsestart55True
+ 20GemTrueTrueFalsestart55True
10TrueFalseOnly Hoard Gems from these ContainersFalseTrue1
TrueFalse50TrueFalseHoard all gems except those excluded belowTrueTrueFalsestart1010True
00ONLY hoard gems listed belowTrueTrueFalsestart1010True
@@ -1128,9 +1138,8 @@ module ELoot # UI Setup
0214Hoard reagents in a house locker?TrueTrueFalsestartend201010True
13TrueFalsestartstart152004
TrueFalseGeneral SettingsFalseTrue0TrueFalse50TrueFalseTrueDefaultTrueTrueFalsestart101010True
- 00First OverflowTrueTrueFalsestart55True
- 20Second OverflowTrueTrueFalsestart55True
- 30ReagentTrueTrueFalsestart55True
+ 00Use All Overflow ContainersTrueTrueFalsestart55True
+ 20ReagentTrueTrueFalsestart55True
10TrueFalseOnly Hoard Alchemy Ingredients from these ContainersFalseTrue1
TrueFalse50TrueFalseHoard all alchemy ingredients except those excluded belowTrueTrueFalsestart1010True
00ONLY hoard alchemy ingredients listed belowTrueTrueFalsestart1010True
@@ -1302,6 +1311,9 @@ module ELoot # UI Setup
elsif obj.class == Gtk::Entry
obj.text = @settings[key].strip
obj.signal_connect('changed') { on_update(obj) }
+ elsif obj.class == Gtk::TextView
+ obj.buffer.text = @settings[key].to_s.strip
+ obj.buffer.signal_connect('changed') { on_update(obj) }
elsif obj.class == Gtk::SpinButton
obj.value = @settings[key]
obj.adjustment.value = @settings[key]
@@ -1501,6 +1513,8 @@ module ELoot # UI Setup
end
elsif obj.class == Gtk::Entry
@settings[key] = obj.text.strip
+ elsif obj.class == Gtk::TextView
+ @settings[key] = obj.buffer.text.strip
elsif obj.class == Gtk::SpinButton
@settings[key] = obj.buffer.text
end
@@ -1757,6 +1771,58 @@ module ELoot # Profile loading/saving and settings
@@data = Data.new(settings)
end
+ def self.migrate_overflow_settings(settings)
+ migrated_settings = false
+ # Migration helper: Convert old overflow_container and secondary_overflow to new overflow_containers format
+ if settings.key?(:overflow_container) || settings.key?(:secondary_overflow)
+ containers = []
+ containers << settings[:overflow_container].to_s.strip unless settings[:overflow_container].to_s.strip.empty?
+ containers << settings[:secondary_overflow].to_s.strip unless settings[:secondary_overflow].to_s.strip.empty?
+
+ unless containers.empty?
+ settings[:overflow_containers] = containers.join(', ')
+ ELoot.msg(text: " Migrated old overflow container settings to new format: #{settings[:overflow_containers]}")
+ end
+
+ # Remove old keys
+ settings.delete(:overflow_container)
+ settings.delete(:secondary_overflow)
+ migrated_settings = true
+ end
+
+ # Migration: Convert old gem/alchemy hoarding overflow checkboxes to new use_overflow boolean
+ ['gem', 'alchemy'].each do |type|
+ containers_key = "#{type}_horde_containers".to_sym
+ use_overflow_key = "#{type}_horde_use_overflow".to_sym
+
+ # Check if the old format with overflow1/overflow2 is present in the containers array
+ if settings[containers_key] && settings[containers_key].is_a?(Array)
+ old_containers = settings[containers_key]
+
+ # Check if overflow1 or overflow2 are in the array
+ has_overflow = old_containers.include?('overflow1') || old_containers.include?('overflow2')
+
+ if has_overflow
+ # Set the new use_overflow boolean to true
+ settings[use_overflow_key] = true
+
+ # Remove overflow1 and overflow2 from the array
+ settings[containers_key] = old_containers.reject { |c| c == 'overflow1' || c == 'overflow2' }
+
+ ELoot.msg(text: " Migrated #{type} hoarding overflow settings: enabled 'Use All Overflow Containers'")
+ migrated_settings = true
+ elsif !settings.key?(use_overflow_key)
+ # If the key doesn't exist and no old overflows were found, set to false
+ settings[use_overflow_key] = false
+ migrated_settings = true
+ end
+ end
+ end
+
+ ELoot.save_profile() if migrated_settings
+ settings
+ end
+
def self.load_defaults()
default_hash = {
:loot_types => ["alchemy", "armor", "box", "breakable", "clothing", "collectible", "food", "gem", "jewelry", "lockpick", "lm trap", "magic", "reagent", "scroll", "skin", "uncommon", "valuable", "wand"],
@@ -1767,8 +1833,7 @@ module ELoot # Profile loading/saving and settings
:coin_hand_name => "",
:sigil_determination_on_fail => false,
:charm_name => "",
- :overflow_container => "",
- :secondary_overflow => "",
+ :overflow_containers => "",
:sell_loot_types => ["alchemy", "armor", "breakable", "clothing", "food", "gem", "jewelry", "lockpick", "magic", "reagent", "scroll", "skin", "uncommon", "valuable", "wand", "box", "lm trap"],
:sell_container => ["default", "overflow", "box", "collectible", "forageable", "gem", "herb", "lockpick", "potion", "reagent", "scroll", "skin", "treasure", "trinket", "wand"],
:sell_exclude => [],
@@ -1791,6 +1856,7 @@ module ELoot # Profile loading/saving and settings
:sell_shroud => false,
:sell_aspect => false,
:sell_keep_silver => 0,
+ :trash_dump_types => ["herb", "junk", "food"],
:skin_enable => false,
:skin_kneel => false,
:skin_604 => false,
@@ -1824,6 +1890,8 @@ module ELoot # Profile loading/saving and settings
filename = File.join(DATA_DIR, XMLData.game, name, "eloot.yaml")
if File.exist?(filename) && name == Char.name
settings_hash = YAML.load_file(filename)
+ # Migrate old overflow settings to new format
+ settings_hash = ELoot.migrate_overflow_settings(settings_hash)
elsif !File.exist?(filename) && name != Char.name
ELoot.msg(type: "error", text: " ELoot.load_profile: Attempt to load a profile that does not exist.")
elsif !File.exist?(filename) && name == Char.name
@@ -2026,11 +2094,26 @@ module ELoot # Sets Inventory
# Remove any extra keys and repopulate them
ReadyList.ready_list.delete_if { |k, _| [:skin_weapon, :skin_weapon_blunt, :skin_sheath, :skin_sheath_blunt].include?(k) }
- StowList.stow_list.delete_if { |k, _| [:overflow_container, :secondary_overflow, :appraisal_container].include?(k) }
+ # Remove old overflow container keys (they may use sequential numbering now)
+ StowList.stow_list.delete_if { |k, _| k.to_s.start_with?('overflow_container') || k == :appraisal_container }
+
+ # Find the stow containers we need: overflow, appraisal
+ # Parse comma-separated overflow containers and add them dynamically
+ overflow_list = ELoot.data.settings[:overflow_containers].to_s.split(',').map(&:strip).reject(&:empty?)
+ overflow_list.each_with_index do |container_name, index|
+ # Create a unique key for each overflow container
+ key = index == 0 ? :overflow_container : "overflow_container_#{index + 1}".to_sym
+ # Temporarily set the setting for this specific container so ensure_items can find it
+ temp_settings_key = "overflow_temp_#{index}".to_sym
+ ELoot.data.settings[temp_settings_key] = container_name
+ ELoot.ensure_items(key: temp_settings_key, list: StowList.stow_list)
+ # Move the found item to the proper key
+ if StowList.stow_list[temp_settings_key]
+ StowList.stow_list[key] = StowList.stow_list.delete(temp_settings_key)
+ end
+ ELoot.data.settings.delete(temp_settings_key)
+ end
- # Find the stow containers we need: stow, overflow, appraisal
- ELoot.ensure_items(key: 'overflow_container', list: StowList.stow_list)
- ELoot.ensure_items(key: 'secondary_overflow', list: StowList.stow_list)
ELoot.ensure_items(key: 'appraisal_container', list: StowList.stow_list)
# Find skin sheaths
@@ -2090,10 +2173,10 @@ module ELoot # Sets Inventory
container_array << StowList.default
end
- # Handle overflow containers
+ # Handle overflow containers - dynamically find all overflow container keys
if ELoot.data.settings[:sell_container].include?("overflow")
- [:overflow_container, :secondary_overflow].each do |key|
- ELoot.ensure_items(key: key, list: StowList.stow_list)
+ overflow_keys = StowList.stow_list.keys.select { |k| k.to_s.start_with?('overflow_container') }
+ overflow_keys.each do |key|
container = StowList.stow_list[key]
container_array << container if container
end
@@ -2107,8 +2190,6 @@ module ELoot # Sets Inventory
need_exit = false
checks = [
- [:overflow_container, StowList.stow_list[:overflow_container], "primary overflow container"],
- [:secondary_overflow, StowList.stow_list[:secondary_overflow], "secondary overflow container"],
[:appraisal_container, StowList.stow_list[:appraisal_container], "appraisal container"],
[:skin_sheath, ReadyList.ready_list[:skin_sheath], "bladed skinning sheath", :skin_enable],
[:skin_sheath_blunt, ReadyList.ready_list[:skin_sheath_blunt], "blunt skinning sheath", :skin_enable],
@@ -2118,13 +2199,26 @@ module ELoot # Sets Inventory
[:charm_name, ELoot.data.charm, "fossil charm"],
]
+ # Dynamically add overflow container checks
+ overflow_list = ELoot.data.settings[:overflow_containers].to_s.split(',').map(&:strip).reject(&:empty?)
+ overflow_list.each_with_index do |container_name, index|
+ key = index == 0 ? :overflow_container : "overflow_container_#{index + 1}".to_sym
+ label = index == 0 ? "primary overflow container" : "overflow container #{index + 1}"
+ # For validation, we check against the overflow_containers setting (comma-separated list)
+ # but we look up the actual found object in StowList
+ if !container_name.empty?
+ checks << [:overflow_containers, StowList.stow_list[key], label]
+ end
+ end
+
checks.each do |setting_key, found_obj, label, conditional_key|
# Only check if setting is non-empty and optional condition (like :skin_enable) is satisfied
- next if ELoot.data.settings[setting_key].to_s.empty?
+ next if setting_key != :overflow_containers && ELoot.data.settings[setting_key].to_s.empty?
next if conditional_key && !ELoot.data.settings[conditional_key]
if found_obj.nil?
- ELoot.msg(text: " Not able to find the #{label}: #{ELoot.data.settings[setting_key]}")
+ container_name = setting_key == :overflow_containers ? label.split(' ').last : ELoot.data.settings[setting_key]
+ ELoot.msg(text: " Not able to find the #{label}: #{container_name}")
need_exit = true
end
end
@@ -2184,9 +2278,22 @@ module ELoot # Regional bounty Selling
self.by_town(tag).find { |k, _v| k.downcase.include?(town.downcase) }.last
end
- def self.in_region(place) # Determine if the bounty town is within the characters region
+ # Determine if the bounty town is within the characters region
+ # vaalor ferry, west cart, east cart, RR boot
+ def self.in_region(place)
ELoot.msg(type: "debug", text: "place: #{place}")
- # vaalor ferry, west cart, east cart, RR boot
+
+ bounty_town = Bounty.town.eql?("Cold River") ? "Hinterwilds" : Bounty.town
+ place = self.tag_for_town(bounty_town, place).id
+
+ # Early return if already at destination
+ return place if Room.current.eql?(Room[place])
+
+ # Calculate path once
+ path = Room.current.path_to(Room[place])
+ return nil unless path
+
+ # Lazy evaluation - only compute boundaries if we need to check them
boundaries = [
Map.ids_from_uid(14001002).first, # Ta'Vaalor Ferry
Map.ids_from_uid(13002021).first, # Western Spine Mine Cart
@@ -2204,12 +2311,8 @@ module ELoot # Regional bounty Selling
Map.ids_from_uid(7133026).first, # Portmaster - Icemule Trace
]
- bounty_town = Bounty.town == "Cold River" ? "Hinterwilds" : Bounty.town
-
- place = self.tag_for_town(bounty_town, place).id
- path = Room.current.path_to(Room[place])
-
- return place if path && boundaries.none? { |fence| path.include?(fence) }
+ # Use array intersection instead of iterating through each boundary
+ (path & boundaries).empty? ? place : nil
end
def self.furrier
@@ -2637,7 +2740,7 @@ module ELoot # Game utility type methods
end
unless ELoot.data.gauntlet.nil?
- lines = ELoot.get_command("look ##{ELoot.data.gauntlet.id}", /You are currently wearing the eonake gauntlet/, silent: true, quiet: true)
+ lines = ELoot.get_command("look ##{ELoot.data.gauntlet.id}", /You are currently wearing the eonake gauntlet<\/a>/, silent: true, quiet: true)
if lines.any? { |l| l =~ /(right|left) hand/ }
gauntlet_hand = Regexp.last_match(1)
end
@@ -3345,8 +3448,12 @@ module ELoot # Inventory methods
return unless ELoot.data.settings[:keep_closed]
Inventory.open_single_container(StowList.stow_list[:default])
- Inventory.open_single_container(StowList.stow_list[:overflow_container])
- Inventory.open_single_container(StowList.stow_list[:secondary_overflow])
+
+ # Dynamically open all overflow containers
+ overflow_keys = StowList.stow_list.keys.select { |k| k.to_s.start_with?('overflow_container') }
+ overflow_keys.each do |key|
+ Inventory.open_single_container(StowList.stow_list[key])
+ end
containers = Array.new
item.each { |loot|
@@ -3433,14 +3540,19 @@ module ELoot # Inventory methods
return if item&.name == "Empty"
return if Inventory.single_drag_box(item)
- # Try sacks in order of priority: item-specific, default, overflow, secondary overflow
+ # Try sacks in order of priority: item-specific, default, overflow containers (in order)
containers = [
StowList.stow_list[item.type.to_sym],
- StowList.stow_list[:default],
- StowList.stow_list[:overflow_container],
- StowList.stow_list[:secondary_overflow]
+ StowList.stow_list[:default]
]
+ # Dynamically add all overflow containers in order
+ overflow_keys = StowList.stow_list.keys.select { |k| k.to_s.start_with?('overflow_container') }.sort_by do |k|
+ # Sort by extracting number from key (overflow_container = 0, overflow_container_2 = 2, etc.)
+ k.to_s.match(/overflow_container_?(\d*)$/)[1].to_i
+ end
+ overflow_keys.each { |key| containers << StowList.stow_list[key] }
+
begin
containers.each_with_index do |bag, index|
if stunned?
@@ -3451,14 +3563,16 @@ module ELoot # Inventory methods
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
- when 2
- ELoot.msg(type: "info", text: " Skipping primary overflow. No container identified.")
- when 3
- ELoot.msg(type: "info", text: " Skipping secondary overflow. No container identified.")
+ 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
else
result = Inventory.store_item(bag, item)
@@ -3501,7 +3615,9 @@ module ELoot # Inventory methods
ELoot.wait_for_disk unless ELoot.data.disk.nil?
# sort to prioritize characters disk
- disks = Group.disks.sort_by { |d| d.name == Char.name ? 0 : 1 }
+ disks = Group.disks
+ disks = disks.select { |d| d.name == Char.name } unless ELoot.data.settings[:use_disk_group]
+ disks.sort_by! { |d| d.name == Char.name ? 0 : 1 }
disks.each do |disk|
next if ELoot.data.disk_full[disk.name] # make sure its not full
next unless Disk.find_by_name(disk.name) # skip the disk unless its present
@@ -3580,7 +3696,10 @@ module ELoot # Inventory methods
lines = ELoot.get_command("_drag ##{item.id} ##{bag.id}", ELoot.data.put_regex)
end
- return true if lines.any? { |l| l =~ /You are unable to handle|That is not yours|Hey, that belongs to|Get what|I could not find what you were referring/ }
+ lines.each do |line|
+ return false if line.match?(/Hey, that belongs to/)
+ return true if line.match?(/You are unable to handle|That is not yours|Get what|I could not find what you were referring/)
+ end
if lines.any? { |l| l =~ /put something that you can't hold/ }
ELoot.unlootable(item)
@@ -4245,8 +4364,17 @@ module ELoot # Gem and Reagent hoarding
ELoot.data.items_to_hoard = []
obj_type = ELoot.data.hoard_type == 'alchemy' ? 'reagent' : ELoot.data.hoard_type
+ # Get containers from the container_settings array
item_containers = ELoot.data.container_settings.filter_map { |key| StowList.stow_list[key.to_sym] }
+ # If use_overflow is enabled, dynamically add all overflow containers
+ use_overflow_key = "#{ELoot.data.hoard_type}_horde_use_overflow".to_sym
+ if ELoot.data.settings[use_overflow_key]
+ overflow_keys = StowList.stow_list.keys.select { |k| k.to_s.start_with?('overflow_container') }
+ overflow_containers = overflow_keys.filter_map { |key| StowList.stow_list[key] }
+ item_containers.concat(overflow_containers)
+ end
+
item_containers.each do |container|
next unless container
@@ -4563,7 +4691,7 @@ module ELoot # Room looting
box_list.each do |box|
line = ELoot.get_res("open ##{box.id}", /open|locked/)
- next if line&.match?(/That is locked/)
+ next if line&.match?(/It appears to be locked/)
quiet_msg = ELoot.data.settings[:display_box_contents] ? false : true
ELoot.get_command("look in ##{box.id}", ELoot.data.look_regex, silent: quiet_msg, quiet: quiet_msg)
@@ -5733,8 +5861,8 @@ module ELoot # Sells the loot
end
def self.dump_herbs_junk
- # Determine which types of loot we are supposed to dump
- dump_stuff = ["herb", "junk", "food"].select { |type| ELoot.data.settings[:sell_loot_types].include?(type) }
+ # Determine which types of loot we are supposed to dump based on trash_dump_types setting
+ dump_stuff = ELoot.data.settings[:trash_dump_types].select { |type| ELoot.data.settings[:sell_loot_types].include?(type) }
alchemy_regex = /^(some ground|flask of pure water|some powdered|some mashed|handful of sea salt|spirit shard|tincture of)/
# Collect items to dump
@@ -6134,7 +6262,7 @@ module ELoot # Sells the loot
ELoot.data.settings[:between].each do |i|
tokens = i.split(/\s+/)
if (tokens.size > 1)
- Script.run(tokens[0], tokens[1..-1].join(", "))
+ Script.run(tokens[0], tokens[1..-1].join(" "))
else
Script.run(tokens[0])
end
@@ -6251,7 +6379,7 @@ module ELoot # Sells the loot
pool_count = handle_full_pool(worker) { return true if deposit }
return if pool_count > 99
else
- total_tips = Sell.locksmith_determine_tip(pool_count + 1, boxes.length) + 15_000
+ total_tips = Sell.locksmith_determine_tip(pool_count + 1, boxes.length) + ELoot.data.settings[:locksmith_withdraw_amount]
ELoot.silver_withdraw(total_tips)
ELoot.go2(original_pool)
worker = ELoot.find_worker
@@ -6835,10 +6963,15 @@ module ELoot # Starts the script
type = Regexp.last_match(1)
things = Regexp.last_match(2)
+ ELoot.data.sacks_full = []
+ ELoot::Sell.box_in_hand(false)
+
ELoot::Sell.custom_sellable(things) if type == 'sellable'
ELoot::Sell.custom_type(things) if type == 'type'
ELoot::Sell.custom_list(things) if type == 'sell'
+ ELoot.data.sacks_full = []
+
ELoot.go2(ELoot.data.start_room)
ELoot::Sell.breakdown
when /settings|setup/i