Brewing-Bot for UO Outlands - Processes kettles and casks within range - No mandatory setup, an optional setup section can be found below - Make sure to carry all items you want to be added to your kettles and casks in your backpack -…
Brewing-Bro.razor
1# This is an automated backup - check out https://outlands.uorazorscripts.com/script/0c5c62c3-c05e-4ede-a64d-4322d9ffb52b for latest2# Automation by Jaseowns3## Script: Brewing-Bro4## Created by: nev0r#05#############################################6 7//////////////////////////////8//9// Brewing-Bot for UO Outlands10// - Processes kettles and casks within range11// - No mandatory setup, an optional setup section can be found below12// - Make sure to carry all items you want to be added to your kettles and casks in your backpack13// - 'READ BEFORE USE:' server system messages are needed to determine necessary actions, make sure they are not filtered for scripts: 14// Razor -> Filters -> Text&Messages ->15// - 'Uncheck Filter repeating system messages'16// - 'Enable text filter' and 'Filter system messages' (list entry sub-menu) can be checked, however 'Ignore filtered messages in overhead and scripts' (list entry sub-menu) has to be unchecked17//18//////////////////////////////19 20######## MANUAL SETUP ########21 22# brewingRange: 1 - 1823 # Amout of tiles around character that will be searched for brewing equipment. If there are no unprocessed items left within this range the script will terminate.24 # Note: to actually work the kettle and cask you need to be in a range of 2 tiles, maximal visual range is 18 tiles25 setvar! brewingRange 226 27# brewingSkipOverheadInfo: 0 ... Overhead On, 1 ... Overhead Off28 # Display status information above kettles and casks29 setvar! brewingSkipOverheadInfo 030 31# brewingDebugMode: 0 ... Off, 1 ... On32 # Display additional status information in our journal for easier debugging33 setvar! brewingDebugMode 034 35###### END MANUAL SETUP ######36 37//////////////////////////////38// 39// Changelog:40// - 09-Dec-2024: Added overhead info above unprocessed kettles and casks outside 2 tiles range, and possibility to continue brewing session in case script did not finish41// - 22-Oct-2026: Add ignore for casks within 2 tile radius that cannot be seen42//43//////////////////////////////44 45if timerexists brewingRestartTimer46 if timer brewingRestartTimer < 1000047 unsetvar brewingDone48 endif49 removetimer brewingRestartTimer 50endif51 52if not varexist brewingDone or brewingDone = 153 setvar! brewingDone 054 @clearignore55 clearsysmsg56else57 settimer brewingRestartTimer 058 overhead "|* Resuming brewing *|" cBeer59 sysmsg "|* Resuming brewing *|" cBeer60 overhead "|* Replay to start fresh *|" cLightOrange61 sysmsg "|* Replay within 10s to start fresh *|" cLightOrange62endif63 64setvar! brewingMinWaitForServerResponse 20065setvar! brewingMaxWaitForServerResponse 100066setvar! brewingWaitForObjectDelay 60067if not timerexists brewingObjectDelayTimer68 settimer brewingObjectDelayTimer brewingWaitForObjectDelay69endif70 71setvar! brewingKettleGumpID 280325637772setvar! brewingCaskGumpID 287498172273 74setvar! cBeer 172075setvar! cGreen 6876setvar! cLightBlue 10077setvar! cLightOrange 14578setvar! cRed 3379setvar! cWhite 115080 81removelist brewingEmptyCaskList82createlist brewingEmptyCaskList83 84while findtype "brewing kettle|brewing barrel" ground -1 -1 brewingRange85 86 if brewingDebugMode > 087 settimer brewingDebugTimer 088 endif89 90 target cancel91 92 if not timerexists brewingOverheadTimer93 overhead "|* Brewing *|" cBeer94 settimer brewingOverheadTimer 095 elseif not findtype "brewing kettle|brewing barrel" ground -1 -1 2 and timer brewingOverheadTimer > 200096 overhead "|* Searching equipment *|" cBeer97 if brewingSkipOverheadInfo = 098 createlist brewingUnfinishedEquipmentList99 while 10 > index and findtype "brewing kettle|brewing barrel" ground -1 -1 brewingRange as localEquipment100 overhead "Pending" cLightOrange localEquipment101 overhead " � " cLightOrange localEquipment102 pushlist brewingUnfinishedEquipmentList localEquipment103 @ignore localEquipment104 endwhile105 @unignore brewingUnfinishedEquipmentList106 removelist brewingUnfinishedEquipmentList107 endif108 settimer brewingOverheadTimer 0109 continue110 elseif timer brewingOverheadTimer > 2000111 overhead "|* Brewing *|" cBeer112 settimer brewingOverheadTimer 0113 endif114 115 //Refill water containers in proximity if we are next to a water tile (currently once per script execution)116 if findtype "water" ground -1 -1 2117 while findtype "water" ground -1 -1 2 and findtype 3703|3707|3715|4090|5344|5453 ground -1 -1 2 as localWaterContainer118 while timer brewingObjectDelayTimer < brewingWaitForObjectDelay119 endwhile120 dclick localWaterContainer121 if brewingDebugMode > 0122 sysmsg "[Brewing] Trying to refill water containers (Timer: {{brewingDebugTimer}} ms)" cLightBlue 123 endif124 settimer brewingObjectDelayTimer 0125 @ignore localWaterContainer126 endwhile127 while findtype "water" ground -1 -1 2 and findtype 3703|3707|3715|4090|5344|5453 backpack as localWaterContainer128 while timer brewingObjectDelayTimer < brewingWaitForObjectDelay129 endwhile130 dclick localWaterContainer131 if brewingDebugMode > 0132 sysmsg "[Brewing] Trying to refill water containers (Timer: {{brewingDebugTimer}} ms)" cLightBlue133 endif134 settimer brewingObjectDelayTimer 0135 @ignore localWaterContainer136 endwhile137 endif138 139 //Casks140 if findtype "brewing barrel" ground -1 -1 2 as localCask and not inlist brewingEmptyCaskList localCask141 142 getlabel localCask localCaskLabel143 144 if "%)" in localCaskLabel 145 @ignore localCask146 147 elseif "(needs mixture)" in localCaskLabel148 pushlist brewingEmptyCaskList localCask149 150 else151 gumpclose brewingCaskGumpID152 while timer brewingObjectDelayTimer < brewingWaitForObjectDelay153 endwhile154 dclick localCask 155 settimer brewingObjectDelayTimer 0156 waitforgump brewingCaskGumpID brewingMaxWaitForServerResponse157 158 if not gumpexists brewingCaskGumpID159 wait brewingMaxWaitForServerResponse160 if not gumpexists brewingCaskGumpID161 continue162 endif163 endif 164 165 if gumpexists brewingCaskGumpID and "complete)" in localCaskLabel 166 if insysmsg "You collect 10 cleansing brew from the brewing cask."167 endif168 gumpresponse 13 brewingCaskGumpID169 settimer brewingWaitTimer 0170 waitforgump brewingCaskGumpID brewingMaxWaitForServerResponse171 getlabel backpack pingCheck172 pushlist brewingEmptyCaskList localCask173 while timer brewingWaitTimer < brewingMinWaitForServerResponse174 endwhile175 if brewingDebugMode > 0176 if insysmsg "You collect 10 cleansing brew from the brewing cask."177 sysmsg "[Brewing] Cleansing brew collected (Cask: {{localCask}}, Timer: {{brewingDebugTimer}} ms)" cLightBlue178 else179 sysmsg "[Brewing] Cleansing brew pickup failed (Cask: {{localCask}}, Timer: {{brewingDebugTimer}} ms)" cLightBlue180 endif181 endif182 183 //Refill cask184 else185 186 //Hops187 if gumpexists brewingCaskGumpID and ingump "Add Hops (0/1)" 2874981722 and not ingump "Add Kettle Mixture (0/1)" 2874981722188 if findtype 6818 backpack as localHops189 if insysmsg "This cask does not currently require hops." or insysmsg "You must wait for this to finish brewing." or insysmsg "You are too far away to use that item."190 endif191 while not targetexists192 gumpresponse 11 brewingCaskGumpID193 waitforgump brewingCaskGumpID brewingMaxWaitForServerResponse194 if insysmsg "This cask does not currently require hops." or insysmsg "You must wait for this to finish brewing." or insysmsg "You are too far away to use that item."195 break196 endif197 endwhile198 if targetexists199 target localHops200 settimer brewingWaitTimer 0201 waitforgump brewingCaskGumpID brewingMaxWaitForServerResponse202 getlabel backpack pingCheck203 while timer brewingWaitTimer < brewingMinWaitForServerResponse204 endwhile205 if brewingDebugMode > 0206 overhead "Hops" cGreen localCask207 sysmsg "[Brewing] Adding hops" cLightBlue208 endif209 endif210 else211 overhead "|* Not enough hops *|" cRed212 endif213 endif214 215 //Jar of Honey216 if gumpexists brewingCaskGumpID and counttype 2540 backpack >= 10 and not ingump "Add Jar of Honey (10/10)" 2874981722 and not ingump "Add Hops (0/1)" 2874981722217 while not ingump "Add Jar of Honey (10/10)" 2874981722 and findtype 2540 backpack as localJarOfHoney218 if insysmsg "This cask does not currently require jars of honey." or insysmsg "You must wait for this to finish brewing." or insysmsg "You are too far away to use that item."219 endif220 while not targetexists221 gumpresponse 12 brewingCaskGumpID222 waitforgump brewingCaskGumpID brewingMaxWaitForServerResponse223 if insysmsg "This cask does not currently require jars of honey." or insysmsg "You must wait for this to finish brewing." or insysmsg "You are too far away to use that item."224 break225 endif226 endwhile227 if targetexists228 target localJarOfHoney229 settimer brewingWaitTimer 0230 waitforgump brewingCaskGumpID brewingMaxWaitForServerResponse231 while find localJarOfHoney backpack and timer brewingWaitTimer < brewingMaxWaitForServerResponse232 endwhile233 else234 break235 endif236 endwhile237 if brewingDebugMode > 0 and not ingump "Add Jar of Honey (10/10)" 2874981722238 sysmsg "[Brewing] Honey failed" cRed239 elseif brewingDebugMode > 0240 overhead "Honey" cBeer localCask241 sysmsg "[Brewing] Honey added" cLightBlue242 endif243 elseif counttype 2540 backpack < 10244 overhead "|* Not enough honey *|" cRed245 endif246 247 if brewingDebugMode > 0 and ingump "Add Jar of Honey (10/10)" 2874981722248 overhead "Done" cGreen localCask249 overhead " � " cGreen localCask250 sysmsg "[Brewing] Cask done (Serial: {{localCask}}, Timer: {{brewingDebugTimer}})" cLightBlue 251 elseif brewingDebugMode > 0252 overhead "Fail" cRed localCask253 overhead " � " cRed localCask254 sysmsg "[Brewing] Cask refill failed (Serial: {{localCask}}, Timer: {{brewingDebugTimer}})" cLightBlue 255 endif256 @ignore localCask257 258 endif259 endif260 261 //Kettle 262 elseif findtype "brewing kettle" ground -1 -1 2 as localKettle263 264 getlabel localKettle localKettleLabel265 266 if "%)" in localKettleLabel267 @ignore localKettle268 269 else270 gumpclose brewingKettleGumpID271 while timer brewingObjectDelayTimer < brewingWaitForObjectDelay272 endwhile273 dclick localKettle274 settimer brewingObjectDelayTimer 0275 waitforgump brewingKettleGumpID brewingMaxWaitForServerResponse276 277 if not gumpexists brewingKettleGumpID278 wait brewingMaxWaitForServerResponse279 if not gumpexists brewingKettleGumpID280 continue281 endif282 endif 283 284 //Transfer mixture to cask285 if gumpexists brewingKettleGumpID and "complete)" in localKettleLabel and list brewingEmptyCaskList > 0286 if poplist brewingEmptyCaskList front as localEmptyCask287 if insysmsg "You transfer the mixture to a brewing cask." or insysmsg "You must wait for this to finish brewing." or insysmsg "You are too far away to use that item." or insysmsg "Target cannot be seen."288 endif289 while not targetexists290 gumpresponse 13 brewingKettleGumpID291 waitforgump brewingKettleGumpID brewingMaxWaitForServerResponse292 if insysmsg "You must wait for this to finish brewing." or insysmsg "You are too far away to use that item."293 break294 endif295 endwhile296 if targetexists297 target localEmptyCask298 settimer brewingWaitTimer 0299 waitforgump brewingKettleGumpID brewingMaxWaitForServerResponse300 getlabel backpack pingCheck301 while timer brewingWaitTimer < brewingMinWaitForServerResponse302 endwhile303 304 if insysmsg "Target cannot be seen."305 overhead "|* Cask not visible *|" cRed306 overhead "Not visible" cRed localEmptyCask307 overhead " �� " cRed localEmptyCask308 @ignore localEmptyCask309 310 elseif insysmsg "You transfer the mixture to a brewing cask."311 @unignore localEmptyCask312 if brewingDebugMode > 0313 overhead "Mixture" cWhite localEmptyCask314 sysmsg "[Brewing] Adding mixture (Cask: {{localEmptyCask}}, Timer: {{brewingDebugTimer}} ms)" cLightBlue315 endif316 else317 pushlist brewingEmptyCaskList localEmptyCask front318 endif319 endif320 endif321 endif322 323 //Refill kettle324 if gumpexists brewingKettleGumpID and ingump "(0.0% Complete)" 2803256377325 326 //Barley327 if gumpexists brewingKettleGumpID and ingump "Add Barley (0/1)" 2803256377328 if findtype 49557 backpack as localBarley329 if insysmsg "This kettle does not currently require barley." or insysmsg "You must wait for this to finish brewing." or insysmsg "You are too far away to use that item."330 endif331 while not targetexists332 gumpresponse 10 brewingKettleGumpID333 waitforgump brewingKettleGumpID brewingMaxWaitForServerResponse334 if insysmsg "This kettle does not currently require barley." or insysmsg "You must wait for this to finish brewing." or insysmsg "You are too far away to use that item."335 break336 endif337 endwhile338 if targetexists339 target localBarley340 settimer brewingWaitTimer 0341 waitforgump brewingKettleGumpID brewingMaxWaitForServerResponse342 getlabel backpack pingCheck343 while timer brewingWaitTimer < brewingMinWaitForServerResponse344 endwhile345 if brewingDebugMode > 0346 overhead "Barley" cGreen localKettle347 sysmsg "[Brewing] Adding barley" cLightBlue348 endif349 endif350 else351 overhead "|* Not enough barley *|" cRed352 endif353 endif354 355 //Water356 if gumpexists brewingKettleGumpID and ingump "Add Water (0/250)" 2803256377 and not ingump "Add Barley (0/1)" 2803256377357 createlist brewingFullWateringCanList358 if insysmsg "You do not see any nearby water containers to fill this from."359 endif360 while findtype 25570|56416|56417 backpack as localWateringCan361 getlabel localWateringCan localWateringCanLabel362 if "250/250" in localWateringCanLabel363 pushlist brewingFullWateringCanList localWateringCan364 @ignore localWateringCan365 else366 while timer brewingObjectDelayTimer < brewingWaitForObjectDelay367 endwhile368 dclick localWateringCan369 settimer brewingWaitTimer 0370 settimer brewingObjectDelayTimer 0371 getlabel backpack pingCheck372 while timer brewingWaitTimer < brewingMinWaitForServerResponse373 if insysmsg "You completely fill the watering can."374 break375 elseif insysmsg "You do not see any nearby water containers to fill this from."376 @ignore localWateringCan377 break378 endif 379 endwhile380 endif381 endwhile382 @unignore brewingFullWateringCanList383 if list brewingFullWateringCanList = 0384 overhead "|* No water supply *|" cRed385 elseif poplist brewingFullWateringCanList front as localFullWateringCan386 if insysmsg "This kettle does not currently require water." or insysmsg "You must wait for this to finish brewing." or insysmsg "You are too far away to use that item."387 endif388 while find localFullWateringCan backpack and not targetexists389 gumpresponse 11 brewingKettleGumpID390 waitforgump brewingKettleGumpID brewingMaxWaitForServerResponse391 if insysmsg "This kettle does not currently require water." or insysmsg "You must wait for this to finish brewing." or insysmsg "You are too far away to use that item." 392 break393 endif394 endwhile395 if targetexists and find localFullWateringCan backpack396 target localFullWateringCan397 settimer brewingWaitTimer 0398 waitforgump brewingKettleGumpID brewingMaxWaitForServerResponse399 getlabel backpack pingCheck400 while timer brewingWaitTimer < brewingMinWaitForServerResponse401 endwhile 402 if brewingDebugMode > 0403 overhead "Water" cLightBlue localKettle404 sysmsg "[Brewing] Adding water" cLightBlue405 endif406 endif407 endif408 removelist brewingFullWateringCanList409 endif410 411 //Garlic412 if gumpexists brewingKettleGumpID and counttype 3972 self >= 10 and not ingump "Add Garlic (10/10)" 2803256377 and not ingump "Add Water (0/250)" 2803256377413 if not findtype 3972 backpack 0 10 and findtype 3972 self 0 10 as localGarlic414 while timer brewingObjectDelayTimer < brewingWaitForObjectDelay415 endwhile416 @drop backpack -1 -1 -1417 lift localGarlic 10418 settimer brewingObjectDelayTimer 0419 @drop backpack -1 -1 -1420 settimer brewingWaitTimer 0421 while not find localGarlic backpack 0 10 and timer brewingWaitTimer < brewingMaxWaitForServerResponse422 endwhile423 endif424 while not ingump "Add Garlic (10/10)" 2803256377 and findtype 3972 backpack as localGarlic425 if insysmsg "This kettle does not currently require garlic." or insysmsg "You must wait for this to finish brewing." or insysmsg "You are too far away to use that item." or insysmsg "That item must be in your backpack in order to be used."426 endif427 while not targetexists428 gumpresponse 12 brewingKettleGumpID429 waitforgump brewingKettleGumpID brewingMaxWaitForServerResponse430 if insysmsg "This kettle does not currently require garlic." or insysmsg "You must wait for this to finish brewing." or insysmsg "You are too far away to use that item." or insysmsg "That item must be in your backpack in order to be used."431 break432 endif433 endwhile434 if targetexists435 target localGarlic436 settimer brewingWaitTimer 0437 waitforgump brewingKettleGumpID brewingMaxWaitForServerResponse438 while find localGarlic backpack and timer brewingWaitTimer < brewingMaxWaitForServerResponse439 endwhile440 else441 break442 endif443 endwhile444 if brewingDebugMode > 0 and not ingump "Add Garlic (10/10)" 2803256377445 sysmsg "[Brewing] Garlic failed" cRed446 elseif brewingDebugMode > 0447 overhead "Garlic" cWhite localKettle448 sysmsg "[Brewing] Garlic added" cLightBlue449 endif450 elseif counttype 3972 self < 10451 overhead "|* Not enough garlic *|" cRed452 endif453 454 if brewingDebugMode > 0 and ingump "Add Garlic (10/10)" 2803256377455 overhead "Done" cGreen localKettle456 overhead " � " cGreen localKettle457 sysmsg "[Brewing] Kettle done (Serial: {{localKettle}}, Timer: {{brewingDebugTimer}})" cLightBlue 458 elseif brewingDebugMode > 0459 overhead "Fail" cRed localKettle460 overhead " � " cRed localKettle461 sysmsg "[Brewing] Kettle refill failed (Serial: {{localKettle}}, Timer: {{brewingDebugTimer}})" cLightBlue462 endif463 endif464 @ignore localKettle465 466 endif467 endif468 469 if list brewingEmptyCaskList > 0 and not findtype "brewing kettle" ground -1 -1 brewingRange470 overhead "|* Not enough mixtures *|" cRed471 @ignore brewingEmptyCaskList472 endif473 474endwhile475 476gumpclose brewingKettleGumpID477gumpclose brewingCaskGumpID478 479removetimer brewingDebugTimer480removetimer brewingOverheadTimer481removetimer brewingWaitTimer482 483removelist brewingEmptyCaskList484 485@clearignore486setvar! brewingDone 1487overhead "|* Brewing Done *|" cBeer