# I have taken a relatively basic process and over-complicated it once again... but I think it turned out well! Nice to work on a short script for a change.
# This will work as a hotkey to automatically click the nearest dungeon gate and exit to last visited town (if run when next to a gate)
# Otherwise, it will also buff you, heal you, cure you and generally just keep you alive while you travel to the nearest dungeon exit gate
# Can also be used as a general dungeon traversing script, as long as you do not come within 2 tiles of a dungeon gate!
# As such, it will also optionally carve corpses, pickup gold, pickup dungeon junk and anything else along the way...
# You can also opt to launch your own Razor recall script after gating (I have one you can download) or else the script will complete upon dungeon exit
# I hope you enjoy these QOL scripts as much as I do! If there are any issues or questions, I can be contacted at dan@danstockman.com
# Thanks for trying out my scripts and good luck out there!
/////////
//////// Lord Glaciers Chill DUNGEON ESCAPE n GATE - UO OUTLANDS RAZOR SCRIPT - version 1.0.1
///////
////// UO Outlands Razor script - Released January4, 2026
///// Compiled by DanStock. (aka. Lord Glacier)
////
///
///////////////////////
// CHANGE LOG: //
///////////////////////
# Jan 5 2026 - version 1.0.1: Adjustments to the order of things
# Jan 4 2026 - version 1.0.0: Public script release!
/////////////////
// TIPS: //
/////////////////
// Disclaimer: I AM NOT AN EXPERT! I have only played Outlands for 2 years now (with 90% of the first year spent harvesting - main PVM account is only at 16 links)
// This is also the first and only MMO I have played since I last logged out of my OSI accounts on Great Lakes shard back in 2003.
// So take any of my advice with that in mind - I am still a noob. If you have 30+ links and millions of gold, there is probably a better way to do things, but this works for me at my stage!
// I have zero prior experience scripting and I have made these primarily for my own benefit!! I am learning as I go...
// Mostly, I make these scripts in order to play on my Asus ROG Ally handheld - but I have come to enjoy the challenge of making them work for as many builds as possible.
// I do not really use Discord (I only installed it to join Outlands - then discovered I had an older account already). Lots of people message me there, but I rarely check it (sorry).
// That being said, I do my best to fix reported bugs (dan@danstockman.com) but usually do not have time to respond to requests for custom stuff (but appreciate any ideas, for sure!)
// Since I do not personally use all aspects of the script (and do all my editing in Notepad on my PC at work lol) some bugs take longer for me to find - but I am always adjusting and updating! Thanks for being patient!
// If you see me out in Avadon, my apologies if I dont respond (its a pain to type on the ROG Ally), but to do enjoy hearing that people use my scripts. Appreciate the support! GOOD LUCK OUT THERE :)
# I have taken a relatively basic process and over-complicated it once again... but I think it turned out well! Nice to work on a short script for a change.
# This will work as a hotkey to automatically click the nearest dungeon gate and exit to last visited town (if run when next to a gate)
# Otherwise, it will also buff you, heal you, cure you and generally just keep you alive while you travel to the nearest dungeon exit gate
# Can also be used as a general dungeon traversing script, as long as you do not come within 2 tiles of a dungeon gate!
# As such, it will also optionally carve corpses, pickup gold, pickup dungeon junk and anything else along the way...
# You can also opt to launch your own Razor recall script after gating (I have one you can download) or else the script will complete upon dungeon exit
# I hope you enjoy these QOL scripts as much as I do! If there are any issues or questions, I can be contacted at dan@danstockman.com
# Thanks for trying out my scripts and good luck out there!
###############################
### USER VARIABLES: ###
###############################
//////////////////////////
// AFTER GATE: //
//////////////////////////
@setvar! LaunchRecallScriptAfterGating 0
# Option to launch a Razor Recall script after gating
# Otherwise script will stop after dungeon exit
// Type the name of your Recall Razor script here:
if LaunchRecallScriptAfterGating = 1
createlist DIYRecallScriptList
pushlist DIYRecallScriptList "YOUR RAZOR SCRIPT NAME HERE"
endif
//////////////////////////
// DEFENSIVE: //
//////////////////////////
@setvar! EnableAutoParalyzePouch 1
@setvar! EnableCastHeal 0
@setvar! EnableCastGreaterHeal 0
@setvar! CastGreaterHealHPdiff 40
@setvar! CastHealHPdiff 60
@setvar! CastEmergencyHealHPdiff 80
@setvar! EnableCastCure 0
@setvar! MinimumManaToApplyBuffs 40
@setvar! EnableMagicReflection 0
@setvar! EnableBless 0
@setvar! EnableReactiveArmour 0
@setvar! EnableProtection 0
@setvar! EnableArchProtection 0
//////////////////////////
// POTIONS: //
//////////////////////////
@setvar! EnableHealPotion 1
@setvar! EnableCurePotion 1
@setvar! EnableRefreshPotion 0
@setvar! HealPotionHPdiff 30
@setvar! RefreshPotionSPdiff 10
# Adjust HP diff set points for Heal and Refresh potion
# Cure pots will be used as needed (if enabled)
@setvar! EnableStrengthPotion 0
@setvar! EnableAgilityPotion 0
@setvar! EnableMagicResistPotion 0
# Strength, Agility and Resist potions will auto-buff when effects wear off (if enabled) *
// * If Alchemy skill is greater than 0.0 but less than or equal to 1.0 the script will take your next STRENGTH potion BEFORE the effect wears off!
// For example, with an Alchemy skill of 1.0 your buff duration will be 2m 05s and a new strength potion is available after 2 mins
// Taking your next potion during the extra 5 second buffer will keep your HP at 120 (instead of a temporary drop and HP of 100/120)
if skill 'Alchemy' >= 80
@setvar! HealingPotionCooldown 7000
else
@setvar! HealingPotionCooldown 10000
endif
# This only affects your optional cooldown bars (script uses other checks to verify heal pots are available)
@setvar! EnablePanaceaAbility 0
@setvar! EnableUsePotionKegs 0
# Will auto fill empty bottles from potion kegs if counts drop below set amount
if EnableUsePotionKegs = 1
@setvar! HealingPotionAmount 5
@setvar! CurePotionAmount 5
@setvar! RefreshPotionAmount 5
@setvar! StrengthPotionAmount 1
@setvar! AgilityPotionAmount 1
@setvar! ResistPotionAmount 1
@setvar! ExplosionPotionAmount 5
@setvar! PoisonPotionAmount 0
endif
@setvar! EnableEatMagicMushrooms 0
@setvar! EatMushroomManadiff 30
@setvar! MagicMushroomCooldown 60000
@setvar! EnableMagicMushroomMaker 0
@setvar! MakeMushroomAmount 5
# Will automatically make mushrooms when you run out (to set amount)
//////////////////////////
// UTILITY: //
//////////////////////////
@setvar! EnableOverheadMessages 1
# Overhead messages can be turned off
@setvar! EnableAutoCarving 0
# Will automatically carve nearby corpses when found (requires SKINNING KNIFE)
@setvar! EnableEatingFood 0
# Will eat food if not buffed (requires delecatable FOOD TRAYS)
@setvar! EnableGoldVacuum 0
# Will automatically pickup discarded GOLD COINS nearby (2 tiles)
# WARNING: This can cause you to grab large stacks of gold (and weigh you down) if you are not careful!
@setvar! EnableDungeonCleanup 0
# Will automatically pickup discarded resources (regs, ingots, boards, etc.) nearby (2 tiles)
@setvar! EnableDropGoldWhenOverweight 0
@setvar! DropGoldAmount 250
# Will drop set amount of gold repeatedly when overweight until no longer impeded
@setvar! EnableWeightWarningMessage 0
@setvar! GreenWarningDiffWeight 50
@setvar! YellowWarningDiffWeight 25
@setvar! RedWeightLimitDiffWeight 10
# Will display overhead warnings that change colour as they approach your carry weight limit (Green, Yellow and Red)
/////////////////////////
// END OF VARIABLES! //
/////////////////////////
################ EDIT BELOW THIS LINE AT YOUR OWN RISK! ##### EDIT BELOW THIS LINE AT YOUR OWN RISK! ##### EDIT BELOW THIS LINE AT YOUR OWN RISK! ##### EDIT BELOW THIS LINE AT YOUR OWN RISK! ################
///////////////////////
// TIMER SETUPS: //
///////////////////////
if not timerexists "PotionKegTimer"
createtimer "PotionKegTimer"
settimer "PotionKegTimer" 2000
endif
if not timerexists "GoldRadar"
createtimer "GoldRadar"
settimer "GoldRadar" 3500
endif
if not timerexists "OverheadManaMessageTimer"
createtimer "OverheadManaMessageTimer"
settimer "OverheadManaMessageTimer" 3500
endif
if not timerexists "DungeonEscape"
createtimer "DungeonEscape"
settimer "DungeonEscape" 15000
endif
if not timerexists "aidsMessageTimer"
createtimer "aidsMessageTimer"
settimer "aidsMessageTimer" 5000
endif
if not timerexists "GETCLOSER"
createtimer "GETCLOSER"
settimer "GETCLOSER" 4500
endif
if not timerexists "GATEHERE"
createtimer "GATEHERE"
settimer "GATEHERE" 4500
endif
if not timerexists "RUNAWAY"
createtimer "RUNAWAY"
settimer "RUNAWAY" 4500
endif
if not timerexists 'MissingRegsTimer'
createtimer 'MissingRegsTimer'
settimer 'MissingRegsTimer' 4500
endif
if not timerexists 'EatFoodMessageTimer'
createtimer 'EatFoodMessageTimer'
settimer 'EatFoodMessageTimer' 4500
endif
if not timerexists 'PopPouchMessageTimer'
createtimer 'PopPouchMessageTimer'
settimer 'PopPouchMessageTimer' 4500
endif
if not timerexists 'PotionKegTimer'
createtimer 'PotionKegTimer'
settimer 'PotionKegTimer' 3500
endif
if not timerexists 'WhitePotionMessageTimer'
createtimer 'WhitePotionMessageTimer'
settimer 'WhitePotionMessageTimer' 4500
endif
if not timerexists 'BluePotionMessageTimer'
createtimer 'BluePotionMessageTimer'
settimer 'BluePotionMessageTimer' 4500
endif
if not timerexists 'BlackPotionMessageTimer'
createtimer 'BlackPotionMessageTimer'
settimer 'BlackPotionMessageTimer' 4500
endif
if not timerexists 'PurplePotionMessageTimer'
createtimer 'PurplePotionMessageTimer'
settimer 'PurplePotionMessageTimer' 15000
endif
if not timerexists 'OrangePotionMessageTimer'
createtimer 'OrangePotionMessageTimer'
settimer 'OrangePotionMessageTimer' 4500
endif
if not timerexists 'YellowPotionMessageTimer'
createtimer 'YellowPotionMessageTimer'
settimer 'YellowPotionMessageTimer' 11000
endif
if not timerexists 'RedPotionMessageTimer'
createtimer 'RedPotionMessageTimer'
settimer 'RedPotionMessageTimer' 4500
endif
if not timerexists 'HealPotionTimer'
createtimer 'HealPotionTimer'
settimer 'HealPotionTimer' 4500
endif
if not timerexists 'spellTimer'
createtimer 'spellTimer'
settimer 'spellTimer' 4500
endif
if not timerexists 'MagicReflectTimer'
createtimer 'MagicReflectTimer'
settimer 'MagicReflectTimer' 4500
endif
if not timerexists 'ReactiveArmorTimer'
createtimer 'ReactiveArmorTimer'
settimer 'ReactiveArmorTimer' 4500
endif
if not timerexists 'OverweightMessageTimer'
createtimer 'OverweightMessageTimer'
settimer 'OverweightMessageTimer' 4500
endif
if not timerexists 'WeightTimer'
createtimer 'WeightTimer'
settimer 'WeightTimer' 4500
endif
if not timerexists 'MushroomTimer'
createtimer 'MushroomTimer'
settimer 'MushroomTimer' 4500
endif
if not timerexists 'DungeonCleanupRadar'
createtimer 'DungeonCleanupRadar'
settimer 'DungeonCleanupRadar' 4500
endif
if not timerexists 'SkinningTimer'
createtimer 'SkinningTimer'
settimer 'SkinningTimer' 4500
endif
clearignore
////////////////////////
// SCRIPT START: //
////////////////////////
while not dead
clearsysmsg
while not gumpexists 3899019871 and findtype "blue moongate" ground 0 1 2 as EscapeGate
dclick EscapeGate
wait 500
endwhile
if gumpexists 3899019871 and findtype "blue moongate" ground 0 1 2 as EscapeGate
while gumpexists 3899019871 and findtype "blue moongate" ground 0 1 2 as EscapeGate
gumpresponse 2 3899019871
wait 250
endwhile
wait 1500
if LaunchRecallScriptAfterGating = 1
foreach RecallScript in DIYRecallScriptList
script RecallScript
endfor
else
stop
endif
endif
while not gumpexists 3899019871 and findtype 30528 ground 2091 1 1 as EscapeGate
dclick EscapeGate
wait 500
endwhile
if gumpexists 3899019871 and findtype 30528 ground 2091 1 1 as EscapeGate
while gumpexists 3899019871 and findtype 30528 ground 2091 1 1 as EscapeGate
gumpresponse 2 3899019871
wait 250
endwhile
wait 1500
if LaunchRecallScriptAfterGating = 1
foreach RecallScript in DIYRecallScriptList
script RecallScript
endfor
else
stop
endif
endif
while not gumpexists 3773199800 and findtype "blue moongate" ground -1 1 2 as EscapeGate
dclick EscapeGate
wait 500
endwhile
if gumpexists 3773199800 and findtype "blue moongate" ground -1 1 2 as EscapeGate
while gumpexists 3773199800 and findtype "blue moongate" ground -1 1 2 as EscapeGate
gumpresponse 2 3773199800
wait 250
endwhile
wait 1500
if LaunchRecallScriptAfterGating = 1
foreach RecallScript in DIYRecallScriptList
script RecallScript
endfor
else
stop
endif
endif
while not gumpexists 3899019871 and findtype "moongate" ground -1 -1 2 as EscapeGate
dclick EscapeGate
wait 500
endwhile
if gumpexists 3899019871 and findtype "moongate" ground -1 -1 2 as EscapeGate
while gumpexists 3899019871 and findtype "moongate" ground -1 -1 2 as EscapeGate
gumpresponse 2 3899019871
wait 250
endwhile
wait 1500
if LaunchRecallScriptAfterGating = 1
foreach RecallScript in DIYRecallScriptList
script RecallScript
endfor
else
stop
endif
endif
if findtype "moongate" ground -1 1 12 or findtype "blue moongate" ground -1 1 12 as EscapeGate
if timer "GETCLOSER" > 4500
if EnableOverheadMessages = 1
overhead "[ GET CLOSER! ]" 253
else
overhead " ● " 253
endif
settimer "GETCLOSER" 0
endif
if timer "GATEHERE" > 500
overhead " ▼ " 253 EscapeGate
settimer "GATEHERE" 0
endif
else
if timer "RUNAWAY" > 4500
if EnableOverheadMessages = 1
overhead "[ GET TO A GATE... ]" 2118
else
overhead " ● " 2118
endif
settimer "RUNAWAY" 0
endif
endif
if followers > 0 and timer "DungeonEscape" > 15000
say "All follow me" 2234
settimer "DungeonEscape" 0
endif
if targetexists
hotkey 'cancel current target'
endif
if insysmsg "world is saving"
settimer "WorldSaveTimer" 0
if EnableOverheadMessages = 1
overhead "[ WORLD SAVING... ]" 253
endif
while timer "WorldSaveTimer" < 4500
if insysmsg "save complete"
break
endif
wait 100
endwhile
if EnableOverheadMessages = 1
overhead "[ SAVE COMPLETE! ]" 253
endif
endif
if dead
break
endif
if EnableAutoParalyzePouch = 1
if paralyzed
if findtype "pouch" self
yell "[pouch"
else
if EnableOverheadMessages = 1
overhead "[ NO MORE POUCHES! ]" 337
endif
endif
endif
endif
if EnableDropGoldWhenOverweight = 1
if weight > maxweight
if timer OverweightMessageTimer > 4500
overhead "[ OVERWEIGHT! ]" 34
settimer OverweightMessageTimer 0
endif
if DropGoldAmount != 0
clearignore
wait 250
if findtype "wooden box" self as lockbox
if findtype "copper key" self as key
clearignore
getlabel lockbox lockboxlabel
wait 100
if "items" in lockboxlabel
// Do nothing
else
dclick key
wft 1500
target lockbox
if EnableOverheadMessages = 1
overhead "[loot box unlocked]" 84
endif
wait 500
if insysmsg "It appears to be locked."
dclick key
wft 1500
target lockbox
wait 250
endif
endif
elseif EnableOverheadMessages = 1
overhead "[ NO LOCKBOX KEY! ]" 337
endif
endif
while weight > maxweight
if findtype "gold coin" self as easycomeeasygo
lift easycomeeasygo DropGoldAmount
droprelloc 0 0
getlabel backpack packdesc
if EnableOverheadMessages = 1
overhead "[ DROPPING GOLD... ]" 149
endif
wait 250
if insysmsg "cannot drop anything"
drop backpack -1 -1 -1
break
endif
wait 250
else
break
endif
if diffhits > 15
break
endif
endwhile
endif
endif
endif
if diffhits > 0 and not bandaging
if skill 'healing' > 0
if findtype 'clean bandage%s%' self
if targetexists
hotkey 'cancel current target'
endif
hotkey 'Bandage Self'
if EnableOverheadMessages = 1
if timer aidsMessageTimer > 5000
overhead "[ BANDAGING... ]" 88
settimer aidsMessageTimer 0
endif
endif
wait 500
else
if timer aidsMessageTimer > 5000 and EnableOverheadMessages = 1
overhead "[ OUT OF BANDAGES! ]" 337
settimer aidsMessageTimer 0
endif
endif
endif
endif
if EnableStrengthPotion = 1
if not findbuff "Strength Potion Usage Cooldown"
if findtype "White Potion" self
dclicktype "White Potion"
if EnableOverheadMessages = 1 and timer WhitePotionMessageTimer > 4500
overhead "[ STRENGTH POTION ]" 956
settimer WhitePotionMessageTimer 0
endif
wait 250
else
if timer WhitePotionMessageTimer > 4500
overhead "[ NO STRENGTH POTS! ]" 337
settimer WhitePotionMessageTimer 0
endif
endif
endif
endif
if EnableHealPotion = 1 and diffhits >= 20
if findtype "Yellow Potion" self as HealPot
getlabel HealPot HealPotlabel
if "next" in HealPotlabel
// Do nothing
else
@setvar! HealPotionCheck 0
if counttype 3852 self as HealPotCount
@setvar! HealPotionCheck HealPotCount
endif
clearsysmsg
dclicktype 3852
getlabel backpack backpackdesc
wait 250
if HealPotionCheck != counttype 3852 self or insysmsg "potion satchel used"
settimer 'HealPotionTimer' 0
cooldown "Healing Potion" HealingPotionCooldown
if EnableOverheadMessages = 1 and timer 'YellowPotionMessageTimer' > 4500
if insysmsg "potion satchel used"
overhead '[ FREE HEAL POTION ]' 253
else
overhead "[ HEAL POTION ]" 253
endif
settimer 'YellowPotionMessageTimer' 0
endif
clearsysmsg
endif
endif
else
if timer 'YellowPotionMessageTimer' > 4500
overhead "[ NO HEAL POTS! ]" 337
settimer 'YellowPotionMessageTimer' 0
endif
endif
endif
if not findtype 3972 self or not findtype 3973 self or not findtype 3974 self or not findtype 3981 self
@setvar! missingGreaterHealRegs 1
else
@setvar! missingGreaterHealRegs 0
endif
if not findtype 3972 self or not findtype 3973 self or not findtype 3974 self
@setvar! missingHealRegs 1
else
@setvar! missingHealRegs 0
endif
if skill 'magery' >= 40 and diffhits >= CastHealHPdiff and mana >= 4 and EnableCastHeal = 1 and not casting and missingHealRegs != 1
cast 'heal'
while not casting
if targetexists
hotkey 'cancel current target'
endif
cast 'heal'
endwhile
while not targetexists
if insysmsg "Your concentration is disturbed"
interrupt
@setvar! SpellInterrupted 1
break
endif
endwhile
if SpellInterrupted = 0
target 'self'
endif
elseif skill 'magery' >= 40 and diffhits >= CastEmergencyHealHPdiff and mana >= 4 and EnableCastHeal = 1 and not casting and missingHealRegs != 1
cast 'heal'
while not casting
if targetexists
hotkey 'cancel current target'
endif
cast 'heal'
endwhile
while not targetexists
if insysmsg "Your concentration is disturbed"
interrupt
@setvar! SpellInterrupted 1
break
endif
endwhile
if SpellInterrupted = 0
target 'self'
endif
elseif skill 'magery' >= 60 and diffhits >= CastGreaterHealHPdiff and mana >= 11 and EnableCastGreaterHeal = 1 and not casting and missingGreaterHealRegs != 1
cast 'greater heal'
while not casting
cast 'greater heal'
endwhile
@settimer! spellTimer 0
@setvar! spellCD 800
while not targetexists
if insysmsg "Your concentration is disturbed"
interrupt
@setvar! SpellInterrupted 1
break
endif
if timer spellTimer < spellCD
if EnableCurePotion = 1
while poisoned and casting and not targetexists
if findtype "Orange Potion" self
dclicktype "Orange Potion"
if EnableOverheadMessages = 1 and timer 'orangeMessageTimer' > 3500
overhead "[ CURE POTION ]" 44
settimer 'orangeMessageTimer' 0
endif
wait 500
else
if timer 'orangeMessageTimer' > 5000 and EnableOverheadMessages = 1
overhead "[ NO CURE POTS! ]" 337
settimer 'orangeMessageTimer' 0
endif
break
endif
endwhile
endif
if diffhits >= HealPotionHPdiff and EnableHealPotion = 1 and casting and not targetexists
if findtype "Yellow Potion" self as hPot
getlabel hPot potLabel
if "next" in potLabel
#do nothing
else
@setvar! ch 0
if counttype 3852 self as c
@setvar! ch c
endif
if insysmsg "potion satchel used"
endif
dclicktype 3852
getlabel backpack packdesc
wait 250
if ch != counttype 3852 self or insysmsg "potion satchel used"
settimer 'HealPotionTimer' 0
cooldown "Healing Potion" 11000
if EnableOverheadMessages = 1
overhead "[ HEAL POTION ]" 253
endif
if diffhits < ActivateAutoHealHPdiff
interrupt
endif
endif
endif
else
if timer 'yellowMessageTimer' > 5000 and EnableOverheadMessages = 1
overhead "[ NO HEAL POTS! ]" 337
settimer 'yellowMessageTimer' 0
endif
endif
endif
endif
endwhile
if SpellInterrupted = 0
target 'self'
endif
endif
if EnableRefreshPotion = 1 and diffstam > RefreshPotionSPdiff
if findtype "Red Potion" self
dclicktype "Red Potion"
if EnableOverheadMessages = 1 and timer RedPotionMessageTimer > 4500
overhead "[ REFRESH POTION ]" 37
settimer RedPotionMessageTimer 0
endif
wait 250
else
if timer RedPotionMessageTimer > 4500
overhead "[ NO REFRESH POTS! ]" 337
settimer RedPotionMessageTimer 0
endif
endif
endif
if EnableCurePotion = 1
while poisoned
if findtype "Orange Potion" self
dclicktype "Orange Potion"
if EnableOverheadMessages = 1 and timer 'OrangePotionMessageTimer' > 3500
overhead "[ CURE POTION ]" 44
settimer 'OrangePotionMessageTimer' 0
endif
wait 250
else
if timer 'OrangePotionMessageTimer' > 5000
overhead "[ NO CURE POTS! ]" 337
settimer 'OrangePotionMessageTimer' 0
endif
if diffhits >= 30 or not findtype 3972 self or not findtype 3973 self
break
endif
endif
endwhile
endif
if EnableAgilityPotion = 1 and not findbuff "Agility"
if findtype "Blue Potion" self
dclicktype "Blue Potion"
if EnableOverheadMessages = 1 and timer BluePotionMessageTimer > 4500
overhead "[ AGILITY POTION ]" 93
settimer BluePotionMessageTimer 0
endif
wait 250
else
if timer BluePotionMessageTimer > 4500
overhead "[ NO AGILITY POTS! ]" 337
settimer BluePotionMessageTimer 0
endif
endif
endif
if EnableMagicResistPotion = 1 and not findbuff "Magic Resist"
if findtype "Black Potion" self
dclicktype "Black Potion"
if EnableOverheadMessages = 1 and timer BlackPotionMessageTimer > 4500
overhead "[ RESIST POTION ]" 1109
settimer BlackPotionMessageTimer 0
endif
wait 250
else
if timer BlackPotionMessageTimer > 4500
overhead "[ NO RESIST POTS! ]" 337
settimer BlackPotionMessageTimer 0
endif
endif
endif
if EnableUsePotionKegs = 1 and findtype 'empty bottle%s%' self and findtype 'keg' self
if not timerexists PotionKegTimer
createtimer PotionKegTimer
settimer PotionKegTimer 5000
endif
@setvar! PotionStockCheck 0
while PotionStockCheck < 8 and findtype 'empty bottle%s%' self
if PotionStockCheck = 0 and ExplosionPotionAmount != 0
@setvar! PotionType 3853
@setvar! KegColour 419
@setvar! PotionAmounttoFill ExplosionPotionAmount
@setvar! PotionStockCheck 1
elseif PotionStockCheck = 1 and HealingPotionAmount != 0
@setvar! PotionType 3852
@setvar! KegColour 253
@setvar! PotionAmounttoFill HealingPotionAmount
@setvar! PotionStockCheck 2
elseif PotionStockCheck = 2 and CurePotionAmount != 0
@setvar! PotionType 3847
@setvar! KegColour 44
@setvar! PotionAmounttoFill CurePotionAmount
@setvar! PotionStockCheck 3
elseif PotionStockCheck = 3 and RefreshPotionAmount != 0
@setvar! PotionType 3851
@setvar! KegColour 37
@setvar! PotionAmounttoFill RefreshPotionAmount
@setvar! PotionStockCheck 4
elseif PotionStockCheck = 4 and StrengthPotionAmount != 0
@setvar! PotionType 3849
@setvar! KegColour 956
@setvar! PotionAmounttoFill StrengthPotionAmount
@setvar! PotionStockCheck 5
elseif PotionStockCheck = 5 and AgilityPotionAmount != 0
@setvar! PotionType 3848
@setvar! KegColour 93
@setvar! PotionAmounttoFill AgilityPotionAmount
@setvar! PotionStockCheck 6
elseif PotionStockCheck = 6 and ResistPotionAmount != 0
@setvar! PotionType 3846
@setvar! KegColour 1109
@setvar! PotionAmounttoFill ResistPotionAmount
@setvar! PotionStockCheck 7
elseif PotionStockCheck = 7 and PoisonPotionAmount != 0
@setvar! PotionType 3850
@setvar! KegColour 363
@setvar! PotionAmounttoFill PoisonPotionAmount
@setvar! PotionStockCheck 8
else
break
endif
while counttype PotionType self < PotionAmounttoFill
if not findtype 'empty bottle%s%' self
if EnableOverheadMessages = 1 and timer 'PotionKegTimer' > 5000
overhead "[ NO EMPTY BOTTLES... ]" 337
settimer 'PotionKegTimer' 0
endif
break
endif
if findtype 'keg' self KegColour as myKeg
dclick myKeg
wait 250
if EnableOverheadMessages = 1
if timer 'PotionKegTimer' > 2000
overhead '[ FILLING POTS... ]' KegColour
settimer 'PotionKegTimer' 0
endif
endif
else
if EnableOverheadMessages = 1 and timer 'PotionKegTimer' > 5000
overhead "[ NO KEG TO USE... ]" KegColour
settimer 'PotionKegTimer' 0
endif
break
endif
endwhile
if counttype PotionType self < PotionAmounttoFill and not findtype 'empty bottle%s%' self
if EnableOverheadMessages = 1 and timer 'PotionKegTimer' > 5000
overhead "[ NO EMPTY BOTTLES... ]" 337
settimer 'PotionKegTimer' 0
endif
break
endif
endwhile
endif
if EnablePanaceaAbility = 1
if findbuff "bleed" or findbuff "diseased"
if not findbuff "panacea potion cooldown"
if findtype "Orange Potion" self
dclicktype "Orange Potion"
wait 500
if findbuff "panacea potion cooldown" and EnableOverheadMessages = 1
overhead "[ PANACEA ACTIVATED ]" 55
endif
endif
endif
endif
endif
if EnableSpellbookCheck = 1 and not findtype "spellbook" hand
if findtype "spellbook" self as mySpellbook
for 5
if findtype "spellbook" self as mySpellbook
getlabel mySpellbook mySpellbooklabel
if "Aspect" in mySpellbooklabel
break
elseif "unidentified" in mySpellbooklabel
ignore mySpellbook
elseif "[blessed" in mySpellbooklabel
ignore mySpellbook
elseif "spells" in mySpellbooklabel
ignore mySpellbook
else
break
endif
endif
endfor
dclick mySpellbook
clearignore
wait 500
else
if timer "SpellbookCheck" > 5000 and EnableOverheadMessages = 1
overhead "[ NO SPELLBOOK! ]" 337
settimer "SpellbookCheck" 0
endif
endif
endif
if EnableEatMagicMushrooms = 1
if diffmana > EatMushroomManadiff and MakeMushroomAmount > 0 and timer MushroomTimer > MagicMushroomCooldown
if counttype 29012 backpack
dclicktype 29012 backpack
getlabel backpack packdesc
wait 250
if insysmsg "You consume a magic mushroom"
settimer MushroomTimer 0
cooldown "Mushroom" MagicMushroomCooldown
if EnableOverheadMessages = 1
overhead "[ EATING SHROOMS... ]" 13
endif
endif
elseif EnableOverheadMessages = 1
overhead "[ OUT OF SHROOMS! ]" 337
endif
endif
endif
if EnableMagicReflection = 1 and skill 'magery' >= 70 and not findbuff "Magic Reflection" and mana >= MinimumManaToApplyBuffs and timer MagicReflectTimer > 15000 and findtype 3972 self and findtype 3974 self and findtype 3981 self
cast 'Magic Reflection'
while not casting
getlabel backpack packdesc
wait 250
if insysmsg "that spell will not" or insysmsg "that spell is already"
settimer MagicReflectTimer 0
break
endif
if targetexists
hotkey 'cancel current target'
endif
cast 'Magic Reflection'
endwhile
while casting
if diffhits >= 50
interrupt
@setvar! CastingWasInterrupted 1
break
endif
if EnableCurePotion = 1
while poisoned and casting and not targetexists
if findtype "Orange Potion" self
dclicktype "Orange Potion"
if EnableOverheadMessages = 1 and timer 'OrangePotionMessageTimer' > 3500
overhead "[ CURE POTION ]" 44
settimer 'OrangePotionMessageTimer' 0
endif
wait 500
else
if timer 'OrangePotionMessageTimer' > 5000 and EnableOverheadMessages = 1
overhead "[ NO CURE POTS! ]" 337
settimer 'OrangePotionMessageTimer' 0
endif
break
endif
endwhile
endif
if diffhits >= HealPotionHPdiff and EnableHealPotion = 1 and casting and not targetexists
if findtype "Yellow Potion" self as hPot
getlabel hPot potLabel
if "next" in potLabel
#do nothing
else
@setvar! ch 0
if counttype 3852 self as c
@setvar! ch c
endif
if insysmsg "potion satchel used"
endif
dclicktype 3852
getlabel backpack packdesc
wait 250
if ch != counttype 3852 self or insysmsg "potion satchel used"
settimer 'YellowPotionMessageTimer' 0
cooldown "Healing Potion" 11000
if EnableOverheadMessages = 1 and timer 'YellowPotionMessageTimer' > 4500
if insysmsg "potion satchel used"
overhead '[ FREE HEAL POTION ]' 253
else
overhead "[ HEAL POTION ]" 253
endif
settimer 'YellowPotionMessageTimer' 0
endif
endif
endif
else
if timer 'YellowPotionMessageTimer' > 4500 and EnableOverheadMessages = 1
overhead "[ NO HEAL POTS! ]" 337
settimer 'YellowPotionMessageTimer' 0
endif
endif
endif
endwhile
wait 500
endif
if EnableReactiveArmour = 1 and skill 'magery' >= 30 and not findbuff "Reactive Armor" and mana >= MinimumManaToApplyBuffs and timer ReactiveArmorTimer > 15000 and findtype 3980 self and findtype 3972 self and findtype 3981 self
cast 'Reactive Armor'
while not casting
getlabel backpack packdesc
wait 250
if insysmsg "that spell will not" or insysmsg "that spell is already"
settimer ReactiveArmorTimer 0
break
endif
if targetexists
hotkey 'cancel current target'
endif
cast 'Reactive Armor'
endwhile
while casting
endwhile
getlabel backpack packdesc
wait 250
endif
if EnableProtection = 1 and skill 'magery' >= 40 and not findbuff "Protection" and mana >= MinimumManaToApplyBuffs and findtype 3980 self and findtype 3972 self and findtype 3973 self
cast 'Protection'
while not casting
if targetexists
hotkey 'cancel current target'
endif
cast 'Protection'
endwhile
while casting
endwhile
wait 250
endif
if EnableArchProtection = 1 and skill 'magery' >= 60 and not findbuff "Protection" and mana >= MinimumManaToApplyBuffs and findtype 3980 self and findtype 3972 self and findtype 3973 self and findtype 3974 self
cast 'Arch Protection'
while not casting
if targetexists
hotkey 'cancel current target'
endif
cast 'Arch Protection'
wait 50
endwhile
while not targetexists and casting
endwhile
wft 550
target 'self'
wait 250
endif
if EnableBless = 1 and skill 'magery' >= 50 and not findbuff "Cunning" and mana >= MinimumManaToApplyBuffs and findtype 3972 self and findtype 3974 self
cast 'Bless'
while not casting
if targetexists
hotkey 'cancel current target'
endif
cast 'Bless'
wait 50
endwhile
while not targetexists
wait 100
endwhile
wft 1000
target 'self'
wait 250
endif
if not findbuff 'food satisfaction' and findtype "tray" self and EnableEatingFood = 1
if findtype "tray" self as Food
if EnableOverheadMessages = 1
overhead "[ EATING FOOD... ]" 88
endif
dclick Food
wait 500
else
if timer EatFoodMessageTimer > 4000
if EnableOverheadMessages = 1
overhead "[ NO FOOD FOUND ]" 337
settimer EatFoodMessageTimer 0
endif
endif
endif
endif
if EnableGoldVacuum = 1
if findtype "gold coin" ground -1 -1 12 as droppedmoney and timer "GoldRadar" > 3500
overhead " ▼ " 149 droppedmoney
settimer "GoldRadar" 0
endif
while findtype "gold coin" ground -1 -1 2 as droppedmoney
overhead " ▲ " 149
hotkey "Grab Item"
wft 2500
target droppedmoney
wait 250
if dead
replay
endif
if insysmsg "Invalid or inaccessible item"
wait 500
@ignore droppedmoney
endif
wait 250
endwhile
endif
if EnableDungeonCleanup = 1
while findtype "iron ingot%s|board%s|cut up leather|3972|3962|3963|3980|3976|3973|3974|3981" ground -1 -1 2 as item
if EnableOverheadMessages = 1
if timer "DungeonCleanup" > 1500
overhead '[ CLEANUP... ]' 420
settimer "DungeonCleanup" 0
endif
else
if timer "DungeonCleanup" > 1500
overhead ' ▲ ' 420
settimer "DungeonCleanup" 0
endif
endif
hotkey "Grab Item"
wft 1000
target item
wait 500
if dead
replay
endif
endwhile
if findtype "iron ingot%s|board%s|cut up leather|3972|3962|3963|3980|3976|3973|3974|3981" ground -1 -1 15 as dungeonjunk and timer "DungeonCleanupRadar" > 3500
overhead "▼" 420 dungeonjunk
settimer "DungeonCleanupRadar" 0
endif
endif
if diffhits >= HealPotionHPdiff and EnableHealPotion = 1
if findtype "Yellow Potion" self as hPot
getlabel hPot potLabel
if "next" in potLabel
#do nothing
else
@setvar! ch 0
if counttype 3852 self as c
@setvar! ch c
endif
if insysmsg "potion satchel used"
endif
dclicktype 3852
getlabel backpack packdesc
wait 250
if ch != counttype 3852 self or insysmsg "potion satchel used"
settimer 'HealPotionTimer' 0
cooldown "Healing Potion" 11000
if EnableOverheadMessages = 1 and timer 'YellowPotionMessageTimer' > 4500
if insysmsg "potion satchel used"
overhead '[ FREE HEAL POTION ]' 253
else
overhead "[ HEAL POTION ]" 253
endif
settimer 'YellowPotionMessageTimer' 0
endif
endif
endif
else
if timer 'YellowPotionMessageTimer' > 4500 and EnableOverheadMessages = 1
overhead "[ NO HEAL POTS! ]" 337
settimer 'YellowPotionMessageTimer' 0
endif
endif
endif
if EnableAutoCarving = 1
while findtype "corpse" ground -1 -1 2 as deadbody
if findtype 11552 self
if targetexists
hotkey 'cancel current target'
endif
while not targetexists
skill 'forensicevaluation'
endwhile
if targetexists and find deadbody ground -1 -1 2
target 'self'
@ignore deadbody
wait 500
endif
if insysmsg "You dont see anything nearby"
clearsysmsg
break
else
if EnableOverheadMessages = 1 and timer SkinningTimer > 3000
overhead "[ SKINNING... ]" 333
settimer SkinningTimer 0
endif
break
endif
else
if EnableOverheadMessages = 1 and timer SkinningTimer > 15000
overhead "[ NO SKINNING KNIFE ]" 337
settimer SkinningTimer 0
endif
break
endif
endwhile
endif
if counttype 29012 self = 0 and EnableMagicMushroomMaker = 1
while counttype 29012 self < MakeMushroomAmount and mana > 3
if timer 'MushroomMakerTimer' > 4500
overhead "[ MAKING SHROOMS... ]" 419
settimer 'MushroomMakerTimer' 0
endif
if not casting
cast 'create food'
endif
if diffhits > 15
break
endif
endwhile
endif
if EnableWeightWarningMessage = 1
if diffweight < GreenWarningDiffWeight and diffweight > YellowWarningDiffWeight and timer "WeightTimer" > 6000
if EnableOverheadMessages = 1
overhead "[ WEIGHT WARNING... ]" 77
settimer "WeightTimer" 0
else
overhead " ▄ " 77
settimer "WeightTimer" 0
endif
elseif diffweight < YellowWarningDiffWeight and diffweight > RedWeightLimitDiffWeight and timer "WeightTimer" > 6000
if EnableOverheadMessages = 1
overhead "[ WEIGHT WARNING! ]" 153
settimer "WeightTimer" 0
else
overhead " ▄ " 153
settimer "WeightTimer" 0
endif
elseif diffweight < RedWeightLimitDiffWeight and timer "WeightTimer" > 3500
if EnableOverheadMessages = 1
overhead "[ WEIGHT LIMIT REACHED! ]" 37
settimer "WeightTimer" 0
else
overhead " ● " 37
settimer "WeightTimer" 0
endif
endif
endif
if dead
break
endif
if dead
stop
endif
endwhile
////////////////////////
// SCRIPT FINISH //
////////////////////////
// Thank you for using my scripts! I can be contacted via email here: dan@danstockman.com
// Good luck out there and say hello if you see me in Avadon (Lord Glacier) - please don't PK me lol