Skip to content
Outlands Hub

Razor script

Brewing-Bro

by nev0r · 487 lines
Download

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