Bapeth's Butler by barryroser
Related: Snippetbuffchestdecode mapitemslootparagon chestrecycleresearch materialsshipship cratesort
Description from the author:
# Bapeths Butler
#
# Nov 22nd 2025 - Added 3rd loot chest, added empty ship crate trashbarrel action if a trashbarrel is nearby
#
# What it does:
# "Casts Bless and Protection on your main character" - Create an entry in the Razor Friends tab called "Friends" and add your main character
# "Expedite Shipping Crates" - Sorts and Stores items - Use the unlockable ship crate location in your house and make sure it is within 2 tiles of this character
# "Item ID and Recycle" - Identifies items in the "Magic Recycler" and recycles them - Make sure to select your recycler settings on this character
# "Paragon Chest Opener" - Paragon chests that are placed in "Main Loot Container" will be auto-opened and loot sorted
# "Decode all map types" - Maps that are placed in the "Main Loot Container" will be auto decoded and sorted
# "Decode Research Materials" - Research Materials that are placed in "Second Loot Container" will be auto decoded and sorted
#
# When you run the script for the first time you will be asked to "Select two containers" - "Main Loot Container" and "Second Loot Container"
# These containers are for storing loot as well as depositing Paragon Chest/Maps/Research Mats for auto picking and decoding
#
# If you ever need to reset storage items, tomes, containers etc.. delete the variables in "Script Options"
# The "Script Options" tab can be found in the top left of razor while the "Scripts" tab is focused
#
# "Auto Loot Control"
# This script uses razor "Auto-Queue Object Delay" setting
# Make sure this setting is turned ON in the razor Options tab > Targeting & Queues sub-tab
# And set "object delay to 503" AUTO SORTING SHIP CRATES WILL BE SLOW IF YOU DONT DO THIS
#
# "In Game Paragon Chest Menu"
# "Continuous Lockpicking" and "Continuous Remove Trap" must be checked in the lockpicking gump menu
# This gump menu appears when you attempt to open a chest
#
# "Spam Reduction"
# Options tab > Targeting & Queues subtab > Uncheck "Attack/Target name overhead"
# Filters tab > Text & Messages subtab > Check "Filter Repeating Razor Messages" ONLY
#
# "***IMPORTANT***"
#
# This script should be used on an ALT account with an ALT character with the following skills:
#
# "120 Item ID" For IDing the Magic Recycler Container
# "100 Magery" For Bless and Protection
# "120 Inscription" For longer lasting Bless and Protection buffs
# "120 Detect Hidden" For Removing Paragon Chest Traps
# "120 Lockpicking" For lockpicking Paragon Chest Locks
# "120 Cartography" For decoding maps
#
# Create a cooldown named "Aspect"
# Set Trigger drop down menu to "Overhead Message"
# Set cooldown to "30"
# Set Trigger text to "aspect armor activated"
#
# "Eldritch Aspect" For enhancing Magery Buffs
# "Harvest Aspect" So you dont die opening Pargon Chests
# The higher level your Eldritch the longer the buffs last - Enhance this further by using Inscription mastery chain links
# Harvest will need to be Tier 8 in order to get the Greater Paragon chest from 1% to 0% chance to trigger a trap
# Alternatively you can use "Chest success/Progress" mastery chain links to get the chance to 0%
# Wear Heavy Armor to protect against traps if you have low harvest
# Use a Chaos, Order, or Heater Shield to further protect yourself
# The script will auto detect your shield
# To avoid the shield being sorted or recycled please use "any accessory dye" on it
#
# Items this script uses are as follows:
#
# Character Items:
# "Iron Lockpicks" x2
# "Avarite Trap Removal Tools" x2
# "Agapite Spyglass or higher" x3
# "Reagents in an Avarhide Wizards Satchel"
# Set your storage shelf to restock these items and the script will auto stock periodically
#
# Storage Items:
# "Three secured containers of any kind" - locked down and secured in your house/inn room
# "A lore page tome"
# "A rare cloth tome"
# "A dyes tome"
# "An arcane rune tome"
# "A treasure map tome"
# "A ship upgrade tome"
# "A skill mastery tome"
# "A collectible card tome"
# "An ore map tome"
# "A skinning map tome"
# "A lumber map tome"
# "A fishing map tome"
# "A storage shelf"
# "A bank deposit box"
# "A garden shelf"
# "A resource stockpile" (Set this to accept Aspect Items)
# "A magic item recycler"
# "A magic item vault"
# "A repair bench"
# "A flooring rack"
# All of these items should be locked down/secured in your inn room or house and within 2 tiles of your character
# Do not put any of these items inside containers although it may work with some of them in containers
#
# Script starts here
if not varexist lootchestdump
overhead "Set First Container" 88
hotkey "Cancel Current Target"
setlasttarget
wft 1000
while targetexists
//donothing
endwhile
@setvar "lootchestdump" lasttarget
overhead "Loot Container Set" 77
endif
if not varexist lootchestdump2
overhead "Set Second Loot Container" 88
hotkey "Cancel Current Target"
setlasttarget
wft 1000
while targetexists
//donothing
endwhile
@setvar "lootchestdump2" lasttarget
overhead "Loot Container Set" 77
endif
if not varexist lootchestdump3
overhead "Set Third Loot Container" 88
hotkey "Cancel Current Target"
setlasttarget
wft 1000
while targetexists
//donothing
endwhile
@setvar "lootchestdump3" lasttarget
overhead "Loot Container Set" 77
endif
if not varexist lorepagetome
if findtype "book" ground 2910 -1 2 as book
@setvar "lorepagetome" book
endif
endif
if not varexist rareclothtome
if findtype "book" ground 1495 -1 2 as book
@setvar "rareclothtome" book
endif
endif
if not varexist flooringrack
if findtype "carpet rack" ground -1 -1 2 as book
@setvar "flooringrack" book
endif
endif
if not varexist dyestome
if findtype "book" ground 1494 -1 2 as book
@setvar "dyestome" book
endif
endif
if not varexist arcanerunetome
if findtype "book" ground 2085 -1 2 as book
@setvar "arcanerunetome" book
endif
endif
if not varexist treasuremaptome
if findtype "book" ground 2990 -1 2 as book
@setvar "treasuremaptome" book
endif
endif
if not varexist shipupgradetome
if findtype "book" ground 2877 -1 2 as book
@setvar "shipupgradetome" book
endif
endif
if not varexist skillmasterytome
if findtype "book" ground 2963 -1 2 as book
@setvar "skillmasterytome" book
endif
endif
if not varexist collectablecardtome
if findtype "book" ground 2141 -1 2 as book
@setvar "collectablecardtome" book
endif
endif
if not varexist oremaptome
if findtype "book" ground 2796 -1 2 as book
@setvar "oremaptome" book
endif
endif
if not varexist skinningmaptome
if findtype "book" ground 2651 -1 2 as book
@setvar "skinningmaptome" book
endif
endif
if not varexist lumbermaptome
if findtype "book" ground 2799 -1 2 as book
@setvar "lumbermaptome" book
endif
endif
if not varexist fishingmaptome
if findtype "book" ground 2722 -1 2 as book
@setvar "fishingmaptome" book
endif
endif
if not varexist myshelf
if findtype "storage shelf" ground -1 -1 2 as shelf
@setvar "myshelf" shelf
endif
endif
if not varexist repbench
if findtype "repair bench" ground -1 -1 2 as rbench
@setvar "repbench" rbench
endif
endif
if not varexist gardenshelf
if findtype "barrel planter shelf|garden shelf" ground -1 -1 2 as gshelf
@setvar "gardenshelf" gshelf
endif
endif
if not varexist respile
if findtype "resource container" ground -1 -1 2 as pile
@setvar "respile" pile
endif
endif
if not varexist magicrecycler
if findtype "magic item recycler|ornate elven chest" ground -1 -1 2 as recycle
@setvar "magicrecycler" recycle
endif
endif
if not varexist magicchest
if findtype "sm magic item vault|magic item chest" ground -1 -1 2 as mchest
@setvar "magicchest" mchest
endif
endif
if not timerexists bapbutler
createtimer bapbutler
settimer bapbutler 17500
elseif timer bapbutler >= 17500
say "I exist to serve thee..." 88
settimer bapbutler 0
endif
if skill "Magery" >= 40 and mana >= 10
if timerexists reactive and not findbuff "Reactive Armor"
if timer reactive > 30000
cast "Reactive Armor"
endif
endif
if findbuff "Reactive Armor" and timerexists reactive
removetimer reactive
endif
if not findbuff "Reactive Armor" and not timerexists reactive
createtimer reactive
endif
endif
if not timerexists shelfrestock
createtimer shelfrestock
settimer shelfrestock 25000
endif
if timer shelfrestock >= 25000
settimer shelfrestock 0
dclick "myshelf"
waitforgump 3232825965 500
gumpresponse 7
waitforgump 3232825965 500
gumpclose 3232825965
endif
// Magery Buffer
if skill "Magery" >= 60 and mana >= 20
if not timerexists bufftimer
createtimer bufftimer
settimer bufftimer 15000
endif
if timer bufftimer >= 15000
clearsysmsg
hotkey "Clear Target Queue"
hotkey "Next Friend Target"
getlabel backpack ping
if insysmsg "No one matching that"
//donothing
else
@setvar "BuffTarget" lasttarget
skill "Begging"
wft 1000
target "BuffTarget"
getlabel backpack ping
if insysmsg "Target cannot be seen"
pause 1000
elseif insysmsg "Perhaps just asking them would work better."
if findlayer self innertorso as checkaspect
getlabel checkaspect desc
if "eldritch" in desc
//donothing
else
if cooldown "Aspect"
while cooldown "Aspect"
//donothing
endwhile
getlabel backpack ping
endif
say "[AspectArmor Eldritch"
endif
endif
settimer bufftimer 0
say "Blessings and Protection..." 78
cast "bless"
dclick "myshelf"
waitforgump 3232825965 500
gumpresponse 7
waitforgump 3232825965 500
gumpclose 3232825965
wft 2500
target "BuffTarget"
hotkey "Clear Target Queue"
pause 350
cast "arch protection"
wft 2500
target "BuffTarget"
hotkey "Clear Target Queue"
endif
endif
endif
endif
// Item Id and Recycler
if skill "Item ID" = 120
if not timerexists recycletimer
createtimer recyclertimer
settimer recycletimer 25000
endif
if timer recycletimer >= 25000
settimer recycletimer 0
if gumpexists 4045111101
gumpclose 4045111101
getlabel backpack ping
endif
menu magicchest 0
getlabel backpack ping
pause 500
clearsysmsg
while not insysmsg "What do you wish to appraise"
skill "itemidentification"
endwhile
wft 1000
target "magicrecycler"
getlabel backpack ping
pause 500
dclick "magicrecycler"
waitforgump 4045111101 500
gumpresponse 10
waitforgump 4045111101 500
pause 500
if ingump "Begin" 4045111101
gumpresponse 6
waitforgump 4045111101 500
pause 500
endif
if ingump "Confirm" 4045111101
gumpresponse 6
waitforgump 4045111101 500
pause 500
getlabel backpack ping
endif
gumpclose 4045111101
menu magicchest 0
wft 1000
target "magicrecycler"
endif
endif
// Ship Crate Expediter
if findtype 3645|3644 ground -1 -1 2 as shipcrate
hotkey 'Set Grab Item HotBag'
wft 1000
target backpack
pause 300
dclick shipcrate
getlabel backpack ping
menu respile 0
wft 1000
target shipcrate
while findtype "doubloon|gold coin|void orb|research materials|spell hue deed|black market goods|redline bottle" shipcrate as chest1dump
drop backpack
lift chest1dump 60000
drop lootchestdump -1 -1 0
while queued
//donothing
endwhile
endwhile
while findtype "8454|8455|27612|2463|bag of gems|2508|7710|3712|3648|3650|3708|3648|2475|3649|29833|29832" shipcrate as chest2dump
drop backpack
lift chest2dump 60000
drop lootchestdump2 -1 -1 0
while queued
//donothing
endwhile
endwhile
while findtype "red envelope|hunting permit|15178|card|soul jar|candy corn|colonial marks" shipcrate as chest3dump
drop backpack
lift chest3dump 60000
drop lootchestdump3 -1 -1 0
while queued
//donothing
endwhile
endwhile
while findtype "chain link|20099|31303|31165|tribal ruins|electric ankh|54230|44985|glass display|20049|Pig Iron|broken shield|blackrock fragment|gargish fragment|11753|18705|55247|49482|53694|54570|53696|53876|50612|55420|53280|53473|54831|50278|49528|bottle set|entrail bucket|mounted stalaghorn|sea glass bulb|juggling daggers|st patricks cross|divination orb|mirror display|murder of crows|charmed cobra|prodigy fiddle|wilting rose belljar|scale of balance|screaming mandrake|statue of the siren|the final hour|55204|specimen jars|shattered weapon|bird cage|widows grief|54684|27612|49223|54591|54601|54718|7408|19948|58325|19959|19822|49730|49729|19944|19949|47613|47612|47611|47610|47611|3986|3966|cathedral tapestry|Darkscale tapestry|large painting|landscape painting|portrait painting|figurine|statue|20291|44987|49730|47107|18653|45127|20103|47103|29363|47105|29361|43453|5899|47109|45250|41509|43447|18657|4025|51308|45156|51304|45214|28769|28799|28803|28765|45211|45248|51259|45220|51328|45218|3842|51327|45222|45241|51336|11858|51375|45282|54722|45255|45246|28795|44983|45235|45251|45238|51258|51314|28761|45236|51260|54718|18400|58325|45252|18656|47111|3839|45239|45242|45254|45281|45247|42241|45216|28775|2594|51321|3838|51318|5901|5905|45259|5903|48407|51302|4248|27611|15296|43166|5359|5981|4026|3985|25359|17686|3836|17087|5356|29030|24434|22336|29036|3843|29025|51098|29034|8826|51094|576|3827|22326|45315|3891|2539|39898|39896|39892|39918|39911|39916|39897|39905|39891|39917|39912|39909|39889|31047|31017|31049|31019|31055|31051|31053|31025|31027|31031|31041|54717|31021|31011|31023|31029|31043|31003|31035|31033|31045|31037|31002|20006|31169|31006|30999|31012|31009|30996|7109|7107|31128|31188|20014|31014|31004|31142|31001|31000|37181|31010|30998|31172|30988|30997|31038|31141|7947|20008|31005|31191|31008|31007|30994|30993|31182|30989|20012|31186|31178|31015|30991|20010|20016|31184|31190|30990|30995|31176|31180|30992|31130|5207|7031|7026|7034|7033|7027|7035|7029|5078|5063|5059|5105|5060|5138|5129|5201|5142|5143|5076|5106|7610|5139|5090|5103|5132|7177|5061|7181|7179|3920|5042|5127|5117|5185|5125|3938|5177|3937|5044|5121|3915|3909|3568|3932|5123|5144|5119|5056|5135|5187|5074|5089|3934|3913|3917|3721|5075|5046|5049|7170|5146|5205|5203|5115|5204|5040|5179|5070|5182|5085|5181|3719|7173|5131|3911|5101|7175|7169|3713|5112|22187|9917|3859|3862|3878|3865|3856|3873|3877|3834|3742|3762|3740|3763|10245|3572|3573|3571|3885|7127|4225|12686|19985|19981|19984|19982|19983|19991|19989|19986|19987|19988|19994|19995|19992|19993|19990|19980|19977|19976|19978|7154|19979|43423|7154|4225|7127|3861|24343|3821" shipcrate as bitem
hotkey 'Grab Item'
target bitem
while queued
//donothing
endwhile
if insysmsg "That container cannot hold"
break
endif
endwhile
getlabel backpack ping
//Dumping all items
menu respile 0
wft 1000
target 'self'
menu gardenshelf 0
wft 1000
target 'self'
menu flooringrack 0
wft 1000
target 'self'
menu rareclothtome 0
menu lorepagetome 0
menu dyestome 0
menu arcanerunetome 0
menu treasuremaptome 0
menu shipupgradetome 0
menu skillmasterytome 0
menu collectablecardtome 0
menu oremaptome 0
menu skinningmaptome 0
menu lumbermaptome 0
menu fishingmaptome 0
menu magicrecycler 1
getlabel backpack ping
hotkey 'Grab Item'
wft 1000
target shipcrate
while queued
//donothing
endwhile
getlabel backpack ping
menu myshelf 0
wft 1000
target self
getlabel backpack ping
gumpclose 3232825965
menu myshelf 1
getlabel shipcrate desc
if "0 items, 0 stones" in desc and findtype 3703 ground 0 -1 2 as trashbarrel
drop backpack
lift shipcrate
drop trashbarrel
while queued
//donothing
endwhile
getlabel shipcrate desc
endif
endif
//Treasure Map Decoder
if skill "Cartography" >= 120 and findtype "spyglass" backpack
if not timerexists mapdecodetimer
createtimer mapdecodetimer
settimer mapdecodetimer 5000
endif
if timer mapdecodetimer >= 5000
clearsysmsg
settimer mapdecodetimer 0
if findtype "spyglass" backpack as spygls
dclick lootchestdump
gumpclose 1520869851
gumpclose 3367641484
gumpclose 3473029237
gumpclose 1332805401
gumpclose 2589357942
getlabel backpack ping
if findtype "Map" "lootchestdump" as map
drop backpack
lift map
drop backpack
while queued
//donothing
endwhile
dclick spygls
wft 1000
target map
getlabel backpack ping
for 5000
gumpresponse 4
getlabel backpack ping
pause 200
if insysmsg "You have reached the maximum accuracy possible"
break
endif
if not findtype "spyglass" backpack
dclick "myshelf"
waitforgump 3232825965 1000
gumpresponse 7
waitforgump 3232825965 1000
gumpclose 3232825965
dclick map
getlabel backpack ping
if not findtype "spyglass" backpack
overhead "I have no spyglass..." 38
replay
endif
endif
endfor
getlabel map color
if "treasure" in color
menu treasuremaptome 0
elseif "ore" in color
menu oremaptome 0
elseif "skinning" in color
menu skinningmaptome 0
elseif "lumber" in color
menu lumbermaptome 0
elseif "fishing" in color
menu fishingmaptome 0
endif
gumpclose 1520869851
gumpclose 3367641484
gumpclose 3473029237
gumpclose 1332805401
gumpclose 2589357942
endif
endif
endif
endif
//Research Materials Decoder
if skill "Cartography" = 120 or skill "Detect" = 120 or skill "Item ID" = 120
if not timerexists researchmatdecode
createtimer researchmatdecode
settimer researchmatdecode 1000
endif
if timer researchmatdecode >= 1000
clearsysmsg
settimer researchmatdecode 0
gumpclose 709455756
if findtype "research materials" "lootchestdump2" as rmdecode
drop backpack
lift rmdecode 1
drop backpack
while queued
//donothing
endwhile
dclick rmdecode
waitforgump 709455756 1000
gumpresponse 2
getlabel backpack ping
if insysmsg "You must have"
waitforgump 709455756 1000
gumpresponse 3
getlabel backpack ping
else
menu lorepagetome 0
endif
if insysmsg "You must have"
waitforgump 709455756 1000
gumpresponse 4
getlabel backpack ping
else
menu lorepagetome 0
endif
endif
endif
endif
// Paragon Chest opener
if skill "Lockpicking" = 120 and skill "Detect" = 120 and findtype "lockpicks" backpack and findtype "drill" backpack
if not timerexists paragontimer
createtimer paragontimer
settimer paragontimer 5000
endif
if timer paragontimer >= 5000
settimer paragontimer 0
gumpclose 736038070
clearsysmsg
@clearignore
if findtype "Heater Shield|Chaos shield|Order shield" backpack as ParagonBlastProtection
if not findlayer self lefthand
dclick ParagonBlastProtection
getlabel backpack ping
endif
endif
dclick lootchestdump
getlabel backpack ping
while findtype 3712|3648|3650|3708|3648|2475|3649|29833|29832 "lootchestdump" as ParagonChest
drop backpack
lift ParagonChest
drop backpack
while queued
//donothing
endwhile
dclick ParagonChest
getlabel backpack ping
if gumpexists 736038070 and findlayer self innertorso as checkaspect
getlabel checkaspect desc
if "harvest" in desc
//donothing
else
if cooldown "Aspect"
while cooldown "Aspect"
//donothing
endwhile
getlabel backpack ping
endif
say "[AspectArmor Harvest"
endif
endif
if gumpexists 736038070 and not ingump "Cleared Of Traps" 736038070
while gumpexists 736038070
gumpresponse 7
waitforgump 736038070 1000
if insysmsg "You attempt to remove traps"
clearsysmsg
break
endif
if insysmsg "That appears to be devoid"
clearsysmsg
break
endif
endwhile
overhead "*disarming*" 1060 ParagonChest
while not dead
if not findtype "drill" backpack
dclick "myshelf"
waitforgump 3232825965 1000
gumpresponse 7
waitforgump 3232825965 1000
gumpclose 3232825965
dclick ParagonChest
waitforgump 736038070 1000
gumpresponse 7
getlabel backpack ping
if not findtype "drill" backpack
overhead "I have no Trap Tools..." 38
replay
endif
endif
if insysmsg "You make some progress towards clearing it of traps"
overhead "*clink*" 810 ParagonChest
endif
if insysmsg "You have successfully cleared it of traps"
overhead "*tick*" 2091 ParagonChest
break
endif
if ingump "Cleared Of Traps" 736038070
overhead "*tick*" 2091 ParagonChest
break
endif
endwhile
waitforgump 736038070 1000
endif
if gumpexists 736038070 and ingump "Cleared Of Traps" 736038070
while gumpexists 736038070
gumpresponse 4
waitforgump 736038070 1000
if insysmsg "You attempt to pick the lock"
clearsysmsg
break
endif
if insysmsg "It appears to be unlocked"
clearsysmsg
break
endif
endwhile
overhead "*picking*" 1060 ParagonChest
while not dead
if not findtype "lockpicks" backpack
dclick "myshelf"
waitforgump 3232825965 1000
gumpresponse 7
waitforgump 3232825965 1000
gumpclose 3232825965
dclick ParagonChest
waitforgump 736038070 1000
gumpresponse 7
getlabel backpack ping
if not findtype "lockpicks" backpack
overhead "I have no Lockpicks..." 38
replay
endif
endif
if insysmsg "You make some progress on the lock"
overhead "*click*" 810 ParagonChest
endif
if insysmsg "You successfully pick the lock"
overhead "*pop*" 2091 ParagonChest
break
endif
endwhile
gumpclose 736038070
endif
getlabel backpack ping
while findtype "doubloon|gold coin|void orb|research materials|spell hue deed|black market goods|redline bottle" backpack as chest1dump
drop backpack
lift chest1dump 60000
drop lootchestdump -1 -1 0
while queued
//donothing
endwhile
endwhile
while findtype "15178|card|soul jar|candy corn|colonial marks|27612|eggplant seeds|bag of gems|17619|17617|2508|7710|2463" backpack as chest2dump
drop backpack
lift chest2dump 60000
drop lootchestdump2 -1 -1 0
while queued
//donothing
endwhile
endwhile
menu respile 0
wft 1000
target 'self'
menu gardenshelf 0
wft 1000
target 'self'
menu flooringrack 0
wft 1000
target 'self'
menu rareclothtome 0
menu dyestome 0
menu lorepagetome 0
menu arcanerunetome 0
menu treasuremaptome 0
menu shipupgradetome 0
menu skillmasterytome 0
menu collectablecardtome 0
menu oremaptome 0
menu skinningmaptome 0
menu lumbermaptome 0
menu fishingmaptome 0
menu magicrecycler 1
drop backpack
lift ParagonChest
drop lootchestdump2 0
while queued
//donothing
endwhile
getlabel backpack ping
@ignore ParagonChest
gumpclose 736038070
endwhile
endif
endif
loopThis script performs several automated functions. It casts Bless and Protection on your main character; to enable this, create an entry in the Razor Friends tab named “Friends” and add your main character to the list. It expedites shipping crates by sorting and storing items using the unlockable ship crate location in your house, which must be within two tiles of this character. It identifies and recycles items placed in the Magic Recycler based on your selected recycler settings. Paragon chests placed in “lootdumpchest” are automatically opened and their loot sorted. All map types placed in “lootdumpchest” are automatically decoded and organized. Research Materials placed in “lootdumpchest2” are also automatically decoded and sorted.








