diff --git a/af/lockandkey.af b/af/lockandkey.af new file mode 100644 index 0000000..11b00a2 --- /dev/null +++ b/af/lockandkey.af @@ -0,0 +1,448 @@ +~~ +~~ lockandkey.af - Portal Bot with Stipend & Partial Bella Services +~~ +~~ A portal summoning bot that: +~~ - Listens for tells containing "primary" or "secondary" to summon portals +~~ - Collects stipend on timer (with backoff) +~~ - Runs partial bella (jaw turn-in only, no kill bella) +~~ - Returns home via ah_recall after services +~~ +~~ Portal Spells: +~~ Summon Primary Portal I = spell 157 +~~ Summon Secondary Portal I = spell 2648 +~~ + +~~ { +~~ FOR AUTO-COMPLETION ASSISTANCE: testvar getvar setvar touchvar clearallvars clearvar getcharintprop getchardoubleprop getcharquadprop getcharboolprop getcharstringprop getisspellknown getcancastspell_hunt getcancastspell_buff getcharvital_base getcharvital_current getcharvital_buffedmax getcharskill_traininglevel getcharskill_base getcharskill_buffed getplayerlandcell getplayercoordinates coordinategetns coordinategetwe coordinategetz coordinatetostring coordinateparse coordinatedistancewithz coordinatedistanceflat wobjectgetphysicscoordinates wobjectgetname wobjectgetobjectclass wobjectgettemplatetype wobjectgetisdooropen wobjectfindnearestmonster wobjectfindnearestdoor wobjectfindnearestbyobjectclass wobjectfindininventorybytemplatetype wobjectfindininventorybyname wobjectfindininventorybynamerx wobjectgetselection wobjectgetplayer wobjectfindnearestbynameandobjectclass actiontryselect actiontryuseitem actiontryapplyitem actiontrygiveitem actiontryequipanywand actiontrycastbyid actiontrycastbyidontarget chatbox chatboxpaste statushud statushudcolored uigetcontrol uisetlabel isfalse istrue iif randint cstr strlen getobjectinternaltype cstrf stopwatchcreate stopwatchstart stopwatchstop stopwatchelapsedseconds cnumber floor ceiling round abs getworldname getitemcountininventorybyname getheading getitemcountininventorybynamerx getheadingto actiontrygiveprofile vitae getfellowshipstatus getfellowshipname getfellowshipisopen getfellowshipisleader getfellowshipleaderid getfellowshipcanrecruit getfellowid getfellowshipcount getfellowshiplocked getfellowname getfellowshipisfull sin cos tan sqrt asin acos atan atan2 sinh cosh tanh vtsetmetastate getregexmatch echo chr ord wobjectgetid wobjectgethealth wobjectfindbyid wobjectgetintprop wobjectfindnearestbytemplatetype wobjectgetopencontainer testquestflag getquestktprogress isrefreshingquests getquestktrequired getqueststatus getisday getgamehour getgamehourname getisnight getgameday getgameticks getminutesuntilday getgamemonth getplayerlandblock wobjectisvalid getitemcountbytemplatetype ifthen +~~ } + +STATE: {Default} +~~ Init variables then transition to service check + IF: Not Expr {testvar[bellaStartAttempts]} + DO: DoExpr {setvar[bellaStartAttempts, 0]} + IF: Not Expr {testvar[bellaMpPrimaryAttempts]} + DO: DoExpr {setvar[bellaMpPrimaryAttempts, 0]} + IF: Not Expr {testvar[bellaTurnInAttempts]} + DO: DoExpr {setvar[bellaTurnInAttempts, 0]} + IF: Not Expr {testvar[bellaJawRunRecoverAttempts]} + DO: DoExpr {setvar[bellaJawRunRecoverAttempts, 0]} + IF: Not Expr {testvar[bellaBackoffSeconds]} + DO: DoExpr {setvar[bellaBackoffSeconds, 86400]} + IF: Not Expr {testvar[stipendBackoffSeconds]} + DO: DoExpr {setvar[stipendBackoffSeconds, 86400]} + IF: Not Expr {testvar[disableBellaServices]} + DO: DoExpr {setvar[disableBellaServices, 0]} + IF: Not Expr {testvar[serviceCheckInterval]} + DO: DoExpr {setvar[serviceCheckInterval, 43200]} + IF: Not Expr {testvar[serviceClock]} + DO: DoAll + DoExpr {setvar[serviceClock,stopwatchcreate[]]} + DoExpr {stopwatchstart[getvar[serviceClock]]} + IF: Always + DO: DoAll + Chat {/ub opt set VTank.PatchExpressionEngine true} + Chat {/vt opt set enablecombat false} + Chat {/vt opt set enablelooting false} + Chat {/vt opt set enablenav false} + Chat {/vt opt set enablebuffing true} + SetState {service_quest_refresh} +~~ } + +STATE: {idle} +~~ Main loop: listen for portal tells, check service timer, handle buffs + IF: Death + DO: SetState {death} + IF: NeedToBuff + DO: SetState {buffing} + ~~ Listen for tells containing "primary" + IF: ChatCapture {(^(\[[A-z]+?\] |)You|.*\[^\<]*)\>.+\<\\Tell\>) .*, ".*primary.*"$} {} + DO: SetState {summon_primary} + ~~ Listen for tells containing "secondary" + IF: ChatCapture {(^(\[[A-z]+?\] |)You|.*\[^\<]*)\>.+\<\\Tell\>) .*, ".*secondary.*"$} {} + DO: SetState {summon_secondary} + ~~ Periodic service check + IF: All + Expr {testvar[serviceClock]} + Expr {stopwatchelapsedseconds[getvar[serviceClock]]>=getvar[serviceCheckInterval]} + DO: SetState {service_quest_refresh} + IF: Always + DO: None + +STATE: {summon_primary} +~~ Face 180, equip wand, cast Summon Primary Portal I (157) with retries + IF: Death + DO: SetState {death} + IF: Always + DO: DoAll + Chat {/vt opt set enablecombat false} + Chat {/ub face 180} + DoExpr {actiontryequipanywand[]} + IF: SecsInStateGE 4 + DO: DoExpr {actiontrycastbyid[157]} + IF: SecsInStateGE 7 + DO: DoExpr {actiontrycastbyid[157]} + IF: SecsInStateGE 10 + DO: DoExpr {actiontrycastbyid[157]} + IF: SecsInStateGE 17 + DO: SetState {idle} + +STATE: {summon_secondary} +~~ Face 90, equip wand, cast Summon Secondary Portal I (2648) with retries + IF: Death + DO: SetState {death} + IF: Always + DO: DoAll + Chat {/vt opt set enablecombat false} + Chat {/ub face 90} + DoExpr {actiontryequipanywand[]} + IF: SecsInStateGE 4 + DO: DoExpr {actiontrycastbyid[2648]} + IF: SecsInStateGE 7 + DO: DoExpr {actiontrycastbyid[2648]} + IF: SecsInStateGE 10 + DO: DoExpr {actiontrycastbyid[2648]} + IF: SecsInStateGE 17 + DO: SetState {idle} + +STATE: {buffing} +~~ Wait for buffs to complete, then return to idle + IF: Death + DO: SetState {death} + IF: Not NeedToBuff + DO: SetState {idle} + IF: SecsInStateGE 120 + DO: SetState {idle} + +STATE: {service_quest_refresh} +~~ Request quest status refresh, wait for completion + IF: Death + DO: SetState {death} + IF: Always + DO: DoAll + Chat {/myquests} + DoExpr {touchvar[questsRequested]} + IF: All + Expr {testvar[questsRequested]} + Expr {isrefreshingquests[]==0} + SecsInStateGE 2 + DO: SetState {service_pending_eval} + IF: SecsInStateGE 8 + DO: SetState {service_pending_eval} + +STATE: {service_pending_eval} +~~ Check if bella jaw quest is ready (no augment application for portal bot) + IF: Always + DO: SetState {service_decide} + +STATE: {service_decide} +~~ Decide which services to run: stipend, partial bella, or return to idle + ~~ Reset bella backoff if timer expired + IF: All + Expr {getvar[disableBellaServices]==1} + Expr {testvar[bellaBackoffClock]} + Expr {stopwatchelapsedseconds[getvar[bellaBackoffClock]]>=getvar[bellaBackoffSeconds]} + DO: DoAll + DoExpr {setvar[disableBellaServices, 0]} + DoExpr {setvar[bellaStartAttempts, 0]} + DoExpr {setvar[bellaMpPrimaryAttempts, 0]} + DoExpr {setvar[bellaTurnInAttempts, 0]} + DoExpr {setvar[bellaJawRunRecoverAttempts, 0]} + DoExpr {clearvar[bellaBackoffClock]} + ~~ Stipend: first run (no backoff clock) + IF: All + Expr {getqueststatus[`stipendtimer_0812`]==1} + Not Expr {testvar[stipendBackoffClock]} + DO: SetState {service_stipend} + ~~ Stipend: backoff expired + IF: All + Expr {getqueststatus[`stipendtimer_0812`]==1} + Expr {testvar[stipendBackoffClock]} + Expr {stopwatchelapsedseconds[getvar[stipendBackoffClock]]>=getvar[stipendBackoffSeconds]} + DO: DoAll + DoExpr {clearvar[stipendBackoffClock]} + SetState {service_stipend} + ~~ Partial bella: jaw quest ready + services not disabled + IF: All + Expr {getvar[disableBellaServices]!=1} + Expr {getqueststatus[`insatiableeaterjaw`]==1} + DO: SetState {service_bella_start} + ~~ Nothing to do, return to idle + IF: Always + DO: DoAll + DoExpr {setvar[serviceClock,stopwatchcreate[]]} + DoExpr {stopwatchstart[getvar[serviceClock]]} + SetState {idle} + +STATE: {service_stipend} +~~ Run stipend collection nav, start backoff clock + IF: Death + DO: SetState {death} + IF: Always + DO: SetWatchdog 3 600 {service_reset_main} + IF: Always + DO: DoAll + Chat {/vt opt set enablecombat false} + Chat {/vt opt set enablelooting false} + Chat {/vt opt set enablenav true} + DoExpr {setvar[stipendBackoffClock, stopwatchcreate[]]} + DoExpr {stopwatchstart[getvar[stipendBackoffClock]]} + DoExpr {touchvar[stipendNavLoaded]} + EmbedNav nav0__stipend_nav {stipend.nav} + IF: All + Expr {testvar[stipendNavLoaded]} + NavEmpty + SecsInStateGE 2 + DO: SetState {service_reset_main} + +STATE: {service_bella_start} +~~ Enter marketplace for bella jaw run + IF: Death + DO: SetState {death} + IF: Always + DO: DoExpr {setvar[bellaStartAttempts,getvar[bellaStartAttempts]+1]} + IF: Expr {getvar[bellaStartAttempts]>=3} + DO: SetState {service_bella_backoff} + IF: Always + DO: DoAll + Chat {/vt opt set enablecombat false} + Chat {/vt opt set enablelooting false} + Chat {/vt opt set enablenav false} + Chat {/vt opt set enablebuffing true} + IF: SecsInStateGE 2 + DO: DoAll + Chat {/a [bella] starting marketplace entry} + Chat {/vt opt set enablenav false} + Chat {/mp} + IF: ExitPortal + DO: DoAll + DoExpr {setvar[bellaStartAttempts, 0]} + SetState {service_bella_mp_primary} + IF: SecsInStateGE 120 + DO: SetState {service_bella_start} + +STATE: {service_bella_mp_primary} +~~ Navigate through marketplace primary path to jaw dungeon portal + IF: Death + DO: SetState {death} + IF: Always + DO: DoExpr {setvar[bellaMpPrimaryAttempts,getvar[bellaMpPrimaryAttempts]+1]} + IF: Expr {getvar[bellaMpPrimaryAttempts]>=3} + DO: SetState {service_bella_backoff} + IF: Always + DO: DoAll + Chat {/vt opt set enablebuffing true} + Chat {/vt opt set enablenav true} + Chat {/vt opt set enablecombat false} + Chat {/vt opt set enablelooting false} + Chat {/vt opt set NavPriorityBoost false} + Chat {/vt opt set navclosestoprange 0.008} + IF: Expr {getplayerlandblock[]==23855104} + DO: Chat {/vt nav load mp_primary} + IF: All + Expr {getplayerlandblock[]!=23855104} + SecsInStateGE 30 + DO: DoAll + Chat {/a [bella] wrong mp_primary landblock, restarting marketplace entry} + SetState {service_bella_start} + IF: ExitPortal + DO: DoAll + Chat {/vt opt set enablenav false} + DoExpr {setvar[bellaMpPrimaryAttempts, 0]} + SetState {service_bella_jaw_run} + IF: SecsInStateGE 60 + DO: DoAll + Chat {/a [bella] mp_primary timed out, restarting marketplace entry} + SetState {service_bella_start} + +STATE: {service_bella_jaw_run} +~~ Run jaw dungeon nav + IF: Death + DO: SetState {death} + IF: Expr {getplayerlandblock[]==9830400} + DO: DoAll + Chat {/vt opt set enablenav true} + Chat {/vt nav load jaw_1} + IF: All + Expr {getplayerlandblock[]!=9830400} + SecsInStateGE 30 + DO: DoAll + Chat {/a [bella] wrong jaw_run landblock, restarting marketplace entry} + SetState {service_bella_start} + IF: All + Expr {getplayerlandblock[]==9830400} + SecsInStateGE 30 + NavEmpty + DO: DoAll + DoExpr {setvar[bellaStartAttempts, 0]} + DoExpr {setvar[bellaJawRunRecoverAttempts, 0]} + Chat {/vt nav load jaw_1_hunt} + Chat {/vt opt set enablecombat true} + Chat {/vt opt set enablelooting true} + Chat {/vt opt set lootonlyrarecorpses false} + SetState {service_bella_jaw_hunt} + IF: All + SecsInStateGE 300 + Expr {getvar[bellaJawRunRecoverAttempts]<3} + DO: DoAll + DoExpr {chatbox[`/a [bella] jaw_run stuck, recall retry `+cstr[getvar[bellaJawRunRecoverAttempts]+1]+`/3`]} + DoExpr {setvar[bellaJawRunRecoverAttempts,getvar[bellaJawRunRecoverAttempts]+1]} + Chat {/vt nav load nav_portal_recall} + SetState {service_bella_jaw_run_recover} + IF: All + SecsInStateGE 300 + Expr {getvar[bellaJawRunRecoverAttempts]>=3} + DO: SetState {service_bella_backoff} + +STATE: {service_bella_jaw_run_recover} +~~ Recovery wait for jaw run stuck + IF: Death + DO: SetState {death} + IF: SecsInStateGE 20 + DO: SetState {service_bella_jaw_run} + +STATE: {service_bella_jaw_hunt} +~~ Hunt for jaw drop + IF: Death + DO: SetState {death} + IF: ExitPortal + DO: DoAll + Chat {/vt opt set enablenav true} + SetState {service_bella_turn_in_jaw} + IF: ItemCountGE 1 {Insatiable Eater Jaw} + DO: DoAll + Chat {/vt opt set enablecombat false} + Chat {/vt nav load to_fiun} + IF: SecsInStateGE 1200 + DO: SetState {service_bella_start} + +STATE: {service_bella_turn_in_jaw} +~~ Turn in jaw to Fiun NPC, then return home (partial bella - no mp_trans/secondary/kill) + IF: Death + DO: SetState {death} + ~~ Jaw accepted: return home instead of continuing to mp_secondary + IF: ChatMatch {^.*One who obtains such as this is truly worthy of that which we would teach\. The highest peak of the deadliest isle contains that which you seek.*$} + DO: DoAll + Chat {/a [bella] jaw turned in, returning home (partial bella)} + DoExpr {setvar[bellaTurnInAttempts, 0]} + SetState {service_reset_main} + IF: All + SecsInStateGE 300 + ItemCountGE 1 {Insatiable Eater Jaw} + Expr {getvar[bellaTurnInAttempts]<3} + DO: DoAll + DoExpr {chatbox[`/a [bella] jaw turn-in timed out, retry `+cstr[getvar[bellaTurnInAttempts]+1]+`/3`]} + DoExpr {setvar[bellaTurnInAttempts,getvar[bellaTurnInAttempts]+1]} + Chat {/vt nav load to_fiun} + SetState {service_bella_turn_in_jaw} + IF: All + SecsInStateGE 300 + ItemCountGE 1 {Insatiable Eater Jaw} + Expr {getvar[bellaTurnInAttempts]>=3} + DO: SetState {service_bella_backoff} + ~~ Jaw already gone (consumed by NPC), just go home + IF: SecsInStateGE 300 + DO: DoAll + DoExpr {setvar[bellaTurnInAttempts, 0]} + SetState {service_reset_main} + +STATE: {service_bella_backoff} +~~ Disable bella services for 24h, return home + IF: Always + DO: DoAll + Chat {/a [bella] backoff tripped, disabling bella services for 24h} + Chat {/vt opt set enablecombat false} + Chat {/vt opt set enablenav true} + DoExpr {setvar[disableBellaServices, 1]} + DoExpr {setvar[bellaStartAttempts, 0]} + DoExpr {setvar[bellaMpPrimaryAttempts, 0]} + DoExpr {setvar[bellaTurnInAttempts, 0]} + DoExpr {setvar[bellaJawRunRecoverAttempts, 0]} + DoExpr {setvar[bellaBackoffClock,stopwatchcreate[]]} + DoExpr {stopwatchstart[getvar[bellaBackoffClock]]} + SetState {service_reset_main} + +STATE: {service_reset_main} +~~ Clear service vars, load ah_recall to return home, then go to idle + IF: Death + DO: SetState {death} + IF: Always + DO: SetWatchdog 3 600 {service_reset_main_stuck} + IF: Always + DO: DoAll + DoExpr {clearvar[questsRequested]} + DoExpr {clearvar[stipendNavLoaded]} + Chat {/vt opt set enablecombat false} + Chat {/vt opt set enablelooting false} + Chat {/vt opt set enablenav true} + Chat {/vt opt set enablebuffing true} + DoExpr {setvar[serviceClock,stopwatchcreate[]]} + DoExpr {stopwatchstart[getvar[serviceClock]]} + DoExpr {touchvar[resetNavLoaded]} + Chat {/vt nav load ah_recall} + IF: All + Expr {testvar[resetNavLoaded]} + NavEmpty + SecsInStateGE 2 + DO: DoAll + DoExpr {clearvar[resetNavLoaded]} + ClearWatchdog + Chat {/vt opt set enablenav false} + SetState {idle} + +STATE: {service_reset_main_stuck} +~~ Fallback if ah_recall nav gets stuck + IF: Always + DO: DoAll + Chat {/ah} + SetState {service_reset_main_wait} + +STATE: {service_reset_main_wait} +~~ Wait for /ah recall, then retry reset + IF: Death + DO: SetState {death} + IF: ExitPortal + DO: SetState {service_reset_main} + IF: SecsInStateGE 30 + DO: SetState {service_reset_main} + +STATE: {death} +~~ Death recovery: wait for portal exit, recall home + IF: Always + DO: DoAll + Chat {/vt opt set enablecombat false} + Chat {/vt opt set enablelooting false} + IF: ExitPortal + DO: DoAll + Chat {/ah} + SetState {death_wait_recall} + IF: SecsInStateGE 30 + DO: DoAll + Chat {/ah} + SetState {death_wait_recall} + +STATE: {death_wait_recall} +~~ Wait for /ah recall portal exit, then return to idle + IF: Death + DO: SetState {death} + IF: ExitPortal + DO: SetState {idle} + IF: SecsInStateGE 60 + DO: SetState {idle} + +~~========================= ONLY NAVS APPEAR BELOW THIS LINE =========================~~ + +NAV: nav0__stipend_nav once + pau 47.1262349446615 26.1864453474681 0.225020837783813 2000 + cht -101.597905190786 -96.6216093699137 2.08333134651184E-05 {/ah} + pau 47.1262349446615 26.1864453474681 0.225020837783813 15000 + pnt 59.3590666453044 -28.7057823816935 0.0500208298365275 + ptl -101.597905190786 -96.6216093699137 2.08333134651184E-05 59.3936458587647 -28.7256083488464 0.0508250035345554 14 {Portal to Town Network} + pnt -101.615851815542 -96.6388638178507 2.08333134651184E-05 + pnt -101.657751337687 -96.5832635879517 2.08333134651184E-05 + pnt -101.658352184296 -96.5325949986776 2.08333134651184E-05 + ptl -101.597905190786 -96.6216093699137 2.08333134651184E-05 -101.588099161784 -96.5166525046031 -0.000262499845121056 14 {Portal to Arwic} + pnt 56.6498762130737 33.416518386205 0.175020837783813 + pnt 56.655900033315 33.5368880271912 0.175020837783813 + pnt 56.7470087051392 33.5495386441549 0.175020837783813 + pnt 56.7795230229696 33.6337207794189 0.175020837783813 + tlk -101.597905190786 -96.6216093699137 2.08333134651184E-05 56.7816291809082 33.6455291748047 0.175020843744278 37 {Monroe} diff --git a/met/lockandkey.met b/met/lockandkey.met new file mode 100644 index 0000000..75b47f0 --- /dev/null +++ b/met/lockandkey.met @@ -0,0 +1,2916 @@ +1 +CondAct +5 +CType +AType +CData +AData +State +n +n +n +n +n +92 +i +21 +i +7 +TABLE +2 +K +V +n +n +1 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +testvar[bellaStartAttempts] +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaStartAttempts, 0] +s +Default +i +21 +i +7 +TABLE +2 +K +V +n +n +1 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +testvar[bellaMpPrimaryAttempts] +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaMpPrimaryAttempts, 0] +s +Default +i +21 +i +7 +TABLE +2 +K +V +n +n +1 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +testvar[bellaTurnInAttempts] +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaTurnInAttempts, 0] +s +Default +i +21 +i +7 +TABLE +2 +K +V +n +n +1 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +testvar[bellaJawRunRecoverAttempts] +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaJawRunRecoverAttempts, 0] +s +Default +i +21 +i +7 +TABLE +2 +K +V +n +n +1 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +testvar[bellaBackoffSeconds] +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaBackoffSeconds, 86400] +s +Default +i +21 +i +7 +TABLE +2 +K +V +n +n +1 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +testvar[stipendBackoffSeconds] +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[stipendBackoffSeconds, 86400] +s +Default +i +21 +i +7 +TABLE +2 +K +V +n +n +1 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +testvar[disableBellaServices] +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[disableBellaServices, 0] +s +Default +i +21 +i +7 +TABLE +2 +K +V +n +n +1 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +testvar[serviceCheckInterval] +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[serviceCheckInterval, 43200] +s +Default +i +21 +i +3 +TABLE +2 +K +V +n +n +1 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +testvar[serviceClock] +TABLE +2 +K +V +n +n +2 +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[serviceClock,stopwatchcreate[]] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +stopwatchstart[getvar[serviceClock]] +s +Default +i +1 +i +3 +i +0 +TABLE +2 +K +V +n +n +6 +i +2 +s +/ub opt set VTank.PatchExpressionEngine true +i +2 +s +/vt opt set enablecombat false +i +2 +s +/vt opt set enablelooting false +i +2 +s +/vt opt set enablenav false +i +2 +s +/vt opt set enablebuffing true +i +1 +s +service_quest_refresh +s +Default +i +8 +i +1 +i +0 +s +death +s +idle +i +15 +i +1 +i +0 +s +buffing +s +idle +i +28 +i +1 +TABLE +2 +k +v +n +n +2 +s +p +s +(^(\[[A-z]+?\] |)You|.*\[^\<]*)\>.+\<\\Tell\>) .*, ".*primary.*"$ +s +c +s + +s +summon_primary +s +idle +i +28 +i +1 +TABLE +2 +k +v +n +n +2 +s +p +s +(^(\[[A-z]+?\] |)You|.*\[^\<]*)\>.+\<\\Tell\>) .*, ".*secondary.*"$ +s +c +s + +s +summon_secondary +s +idle +i +2 +i +1 +TABLE +2 +K +V +n +n +2 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +testvar[serviceClock] +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +stopwatchelapsedseconds[getvar[serviceClock]]>=getvar[serviceCheckInterval] +s +service_quest_refresh +s +idle +i +1 +i +0 +i +0 +i +0 +s +idle +i +8 +i +1 +i +0 +s +death +s +summon_primary +i +1 +i +3 +i +0 +TABLE +2 +K +V +n +n +3 +i +2 +s +/vt opt set enablecombat false +i +2 +s +/ub face 180 +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +actiontryequipanywand[] +s +summon_primary +i +6 +i +7 +i +4 +TABLE +2 +k +v +n +n +1 +s +e +s +actiontrycastbyid[157] +s +summon_primary +i +6 +i +7 +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +actiontrycastbyid[157] +s +summon_primary +i +6 +i +7 +i +10 +TABLE +2 +k +v +n +n +1 +s +e +s +actiontrycastbyid[157] +s +summon_primary +i +6 +i +1 +i +17 +s +idle +s +summon_primary +i +8 +i +1 +i +0 +s +death +s +summon_secondary +i +1 +i +3 +i +0 +TABLE +2 +K +V +n +n +3 +i +2 +s +/vt opt set enablecombat false +i +2 +s +/ub face 90 +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +actiontryequipanywand[] +s +summon_secondary +i +6 +i +7 +i +4 +TABLE +2 +k +v +n +n +1 +s +e +s +actiontrycastbyid[2648] +s +summon_secondary +i +6 +i +7 +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +actiontrycastbyid[2648] +s +summon_secondary +i +6 +i +7 +i +10 +TABLE +2 +k +v +n +n +1 +s +e +s +actiontrycastbyid[2648] +s +summon_secondary +i +6 +i +1 +i +17 +s +idle +s +summon_secondary +i +8 +i +1 +i +0 +s +death +s +buffing +i +21 +i +1 +TABLE +2 +K +V +n +n +1 +i +15 +i +0 +s +idle +s +buffing +i +6 +i +1 +i +120 +s +idle +s +buffing +i +8 +i +1 +i +0 +s +death +s +service_quest_refresh +i +1 +i +3 +i +0 +TABLE +2 +K +V +n +n +2 +i +2 +s +/myquests +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +touchvar[questsRequested] +s +service_quest_refresh +i +2 +i +1 +TABLE +2 +K +V +n +n +3 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +testvar[questsRequested] +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +isrefreshingquests[]==0 +i +6 +i +2 +s +service_pending_eval +s +service_quest_refresh +i +6 +i +1 +i +8 +s +service_pending_eval +s +service_quest_refresh +i +1 +i +1 +i +0 +s +service_decide +s +service_pending_eval +i +2 +i +3 +TABLE +2 +K +V +n +n +3 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +getvar[disableBellaServices]==1 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +testvar[bellaBackoffClock] +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +stopwatchelapsedseconds[getvar[bellaBackoffClock]]>=getvar[bellaBackoffSeconds] +TABLE +2 +K +V +n +n +6 +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[disableBellaServices, 0] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaStartAttempts, 0] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaMpPrimaryAttempts, 0] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaTurnInAttempts, 0] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaJawRunRecoverAttempts, 0] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +clearvar[bellaBackoffClock] +s +service_decide +i +2 +i +1 +TABLE +2 +K +V +n +n +2 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +getqueststatus[`stipendtimer_0812`]==1 +i +21 +TABLE +2 +K +V +n +n +1 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +testvar[stipendBackoffClock] +s +service_stipend +s +service_decide +i +2 +i +3 +TABLE +2 +K +V +n +n +3 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +getqueststatus[`stipendtimer_0812`]==1 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +testvar[stipendBackoffClock] +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +stopwatchelapsedseconds[getvar[stipendBackoffClock]]>=getvar[stipendBackoffSeconds] +TABLE +2 +K +V +n +n +2 +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +clearvar[stipendBackoffClock] +i +1 +s +service_stipend +s +service_decide +i +2 +i +1 +TABLE +2 +K +V +n +n +2 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +getvar[disableBellaServices]!=1 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +getqueststatus[`insatiableeaterjaw`]==1 +s +service_bella_start +s +service_decide +i +1 +i +3 +i +0 +TABLE +2 +K +V +n +n +3 +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[serviceClock,stopwatchcreate[]] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +stopwatchstart[getvar[serviceClock]] +i +1 +s +idle +s +service_decide +i +8 +i +1 +i +0 +s +death +s +service_stipend +i +1 +i +9 +i +0 +TABLE +2 +k +v +n +n +3 +s +s +s +service_reset_main +s +r +d +3 +s +t +d +600 +s +service_stipend +i +1 +i +3 +i +0 +TABLE +2 +K +V +n +n +7 +i +2 +s +/vt opt set enablecombat false +i +2 +s +/vt opt set enablelooting false +i +2 +s +/vt opt set enablenav true +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[stipendBackoffClock, stopwatchcreate[]] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +stopwatchstart[getvar[stipendBackoffClock]] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +touchvar[stipendNavLoaded] +i +4 +ba +1199 +stipend.nav +14 +uTank2 NAV 1.2 +4 +14 +3 +47.1262349446615 +26.1864453474681 +0.225020837783813 +0 +2000 +4 +-101.597905190786 +-96.6216093699137 +2.08333134651184E-05 +0 +/ah +3 +47.1262349446615 +26.1864453474681 +0.225020837783813 +0 +15000 +0 +59.3590666453044 +-28.7057823816935 +0.0500208298365275 +0 +6 +-101.597905190786 +-96.6216093699137 +2.08333134651184E-05 +0 +Portal to Town Network +14 +True +59.3936458587647 +-28.7256083488464 +0.0508250035345554 +0 +-101.615851815542 +-96.6388638178507 +2.08333134651184E-05 +0 +0 +-101.657751337687 +-96.5832635879517 +2.08333134651184E-05 +0 +0 +-101.658352184296 +-96.5325949986776 +2.08333134651184E-05 +0 +6 +-101.597905190786 +-96.6216093699137 +2.08333134651184E-05 +0 +Portal to Arwic +14 +True +-101.588099161784 +-96.5166525046031 +-0.000262499845121056 +0 +56.6498762130737 +33.416518386205 +0.175020837783813 +0 +0 +56.655900033315 +33.5368880271912 +0.175020837783813 +0 +0 +56.7470087051392 +33.5495386441549 +0.175020837783813 +0 +0 +56.7795230229696 +33.6337207794189 +0.175020837783813 +0 +7 +-101.597905190786 +-96.6216093699137 +2.08333134651184E-05 +0 +Monroe +37 +True +56.7816291809082 +33.6455291748047 +0.175020843744278 +s +service_stipend +i +2 +i +1 +TABLE +2 +K +V +n +n +3 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +testvar[stipendNavLoaded] +i +7 +i +0 +i +6 +i +2 +s +service_reset_main +s +service_stipend +i +8 +i +1 +i +0 +s +death +s +service_bella_start +i +1 +i +7 +i +0 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaStartAttempts,getvar[bellaStartAttempts]+1] +s +service_bella_start +i +26 +i +1 +TABLE +2 +k +v +n +n +1 +s +e +s +getvar[bellaStartAttempts]>=3 +s +service_bella_backoff +s +service_bella_start +i +1 +i +3 +i +0 +TABLE +2 +K +V +n +n +4 +i +2 +s +/vt opt set enablecombat false +i +2 +s +/vt opt set enablelooting false +i +2 +s +/vt opt set enablenav false +i +2 +s +/vt opt set enablebuffing true +s +service_bella_start +i +6 +i +3 +i +2 +TABLE +2 +K +V +n +n +3 +i +2 +s +/a [bella] starting marketplace entry +i +2 +s +/vt opt set enablenav false +i +2 +s +/mp +s +service_bella_start +i +20 +i +3 +i +0 +TABLE +2 +K +V +n +n +2 +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaStartAttempts, 0] +i +1 +s +service_bella_mp_primary +s +service_bella_start +i +6 +i +1 +i +120 +s +service_bella_start +s +service_bella_start +i +8 +i +1 +i +0 +s +death +s +service_bella_mp_primary +i +1 +i +7 +i +0 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaMpPrimaryAttempts,getvar[bellaMpPrimaryAttempts]+1] +s +service_bella_mp_primary +i +26 +i +1 +TABLE +2 +k +v +n +n +1 +s +e +s +getvar[bellaMpPrimaryAttempts]>=3 +s +service_bella_backoff +s +service_bella_mp_primary +i +1 +i +3 +i +0 +TABLE +2 +K +V +n +n +6 +i +2 +s +/vt opt set enablebuffing true +i +2 +s +/vt opt set enablenav true +i +2 +s +/vt opt set enablecombat false +i +2 +s +/vt opt set enablelooting false +i +2 +s +/vt opt set NavPriorityBoost false +i +2 +s +/vt opt set navclosestoprange 0.008 +s +service_bella_mp_primary +i +26 +i +2 +TABLE +2 +k +v +n +n +1 +s +e +s +getplayerlandblock[]==23855104 +s +/vt nav load mp_primary +s +service_bella_mp_primary +i +2 +i +3 +TABLE +2 +K +V +n +n +2 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +getplayerlandblock[]!=23855104 +i +6 +i +30 +TABLE +2 +K +V +n +n +2 +i +2 +s +/a [bella] wrong mp_primary landblock, restarting marketplace entry +i +1 +s +service_bella_start +s +service_bella_mp_primary +i +20 +i +3 +i +0 +TABLE +2 +K +V +n +n +3 +i +2 +s +/vt opt set enablenav false +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaMpPrimaryAttempts, 0] +i +1 +s +service_bella_jaw_run +s +service_bella_mp_primary +i +6 +i +3 +i +60 +TABLE +2 +K +V +n +n +2 +i +2 +s +/a [bella] mp_primary timed out, restarting marketplace entry +i +1 +s +service_bella_start +s +service_bella_mp_primary +i +8 +i +1 +i +0 +s +death +s +service_bella_jaw_run +i +26 +i +3 +TABLE +2 +k +v +n +n +1 +s +e +s +getplayerlandblock[]==9830400 +TABLE +2 +K +V +n +n +2 +i +2 +s +/vt opt set enablenav true +i +2 +s +/vt nav load jaw_1 +s +service_bella_jaw_run +i +2 +i +3 +TABLE +2 +K +V +n +n +2 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +getplayerlandblock[]!=9830400 +i +6 +i +30 +TABLE +2 +K +V +n +n +2 +i +2 +s +/a [bella] wrong jaw_run landblock, restarting marketplace entry +i +1 +s +service_bella_start +s +service_bella_jaw_run +i +2 +i +3 +TABLE +2 +K +V +n +n +3 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +getplayerlandblock[]==9830400 +i +6 +i +30 +i +7 +i +0 +TABLE +2 +K +V +n +n +7 +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaStartAttempts, 0] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaJawRunRecoverAttempts, 0] +i +2 +s +/vt nav load jaw_1_hunt +i +2 +s +/vt opt set enablecombat true +i +2 +s +/vt opt set enablelooting true +i +2 +s +/vt opt set lootonlyrarecorpses false +i +1 +s +service_bella_jaw_hunt +s +service_bella_jaw_run +i +2 +i +3 +TABLE +2 +K +V +n +n +2 +i +6 +i +300 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +getvar[bellaJawRunRecoverAttempts]<3 +TABLE +2 +K +V +n +n +4 +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +chatbox[`/a [bella] jaw_run stuck, recall retry `+cstr[getvar[bellaJawRunRecoverAttempts]+1]+`/3`] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaJawRunRecoverAttempts,getvar[bellaJawRunRecoverAttempts]+1] +i +2 +s +/vt nav load nav_portal_recall +i +1 +s +service_bella_jaw_run_recover +s +service_bella_jaw_run +i +2 +i +1 +TABLE +2 +K +V +n +n +2 +i +6 +i +300 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +getvar[bellaJawRunRecoverAttempts]>=3 +s +service_bella_backoff +s +service_bella_jaw_run +i +8 +i +1 +i +0 +s +death +s +service_bella_jaw_run_recover +i +6 +i +1 +i +20 +s +service_bella_jaw_run +s +service_bella_jaw_run_recover +i +8 +i +1 +i +0 +s +death +s +service_bella_jaw_hunt +i +20 +i +3 +i +0 +TABLE +2 +K +V +n +n +2 +i +2 +s +/vt opt set enablenav true +i +1 +s +service_bella_turn_in_jaw +s +service_bella_jaw_hunt +i +12 +i +3 +TABLE +2 +k +v +n +n +2 +s +n +s +Insatiable Eater Jaw +s +c +i +1 +TABLE +2 +K +V +n +n +2 +i +2 +s +/vt opt set enablecombat false +i +2 +s +/vt nav load to_fiun +s +service_bella_jaw_hunt +i +6 +i +1 +i +1200 +s +service_bella_start +s +service_bella_jaw_hunt +i +8 +i +1 +i +0 +s +death +s +service_bella_turn_in_jaw +i +4 +i +3 +s +^.*One who obtains such as this is truly worthy of that which we would teach\. The highest peak of the deadliest isle contains that which you seek.*$ +TABLE +2 +K +V +n +n +3 +i +2 +s +/a [bella] jaw turned in, returning home (partial bella) +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaTurnInAttempts, 0] +i +1 +s +service_reset_main +s +service_bella_turn_in_jaw +i +2 +i +3 +TABLE +2 +K +V +n +n +3 +i +6 +i +300 +i +12 +TABLE +2 +k +v +n +n +2 +s +n +s +Insatiable Eater Jaw +s +c +i +1 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +getvar[bellaTurnInAttempts]<3 +TABLE +2 +K +V +n +n +4 +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +chatbox[`/a [bella] jaw turn-in timed out, retry `+cstr[getvar[bellaTurnInAttempts]+1]+`/3`] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaTurnInAttempts,getvar[bellaTurnInAttempts]+1] +i +2 +s +/vt nav load to_fiun +i +1 +s +service_bella_turn_in_jaw +s +service_bella_turn_in_jaw +i +2 +i +1 +TABLE +2 +K +V +n +n +3 +i +6 +i +300 +i +12 +TABLE +2 +k +v +n +n +2 +s +n +s +Insatiable Eater Jaw +s +c +i +1 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +getvar[bellaTurnInAttempts]>=3 +s +service_bella_backoff +s +service_bella_turn_in_jaw +i +6 +i +3 +i +300 +TABLE +2 +K +V +n +n +2 +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaTurnInAttempts, 0] +i +1 +s +service_reset_main +s +service_bella_turn_in_jaw +i +1 +i +3 +i +0 +TABLE +2 +K +V +n +n +11 +i +2 +s +/a [bella] backoff tripped, disabling bella services for 24h +i +2 +s +/vt opt set enablecombat false +i +2 +s +/vt opt set enablenav true +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[disableBellaServices, 1] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaStartAttempts, 0] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaMpPrimaryAttempts, 0] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaTurnInAttempts, 0] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaJawRunRecoverAttempts, 0] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[bellaBackoffClock,stopwatchcreate[]] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +stopwatchstart[getvar[bellaBackoffClock]] +i +1 +s +service_reset_main +s +service_bella_backoff +i +8 +i +1 +i +0 +s +death +s +service_reset_main +i +1 +i +9 +i +0 +TABLE +2 +k +v +n +n +3 +s +s +s +service_reset_main_stuck +s +r +d +3 +s +t +d +600 +s +service_reset_main +i +1 +i +3 +i +0 +TABLE +2 +K +V +n +n +10 +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +clearvar[questsRequested] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +clearvar[stipendNavLoaded] +i +2 +s +/vt opt set enablecombat false +i +2 +s +/vt opt set enablelooting false +i +2 +s +/vt opt set enablenav true +i +2 +s +/vt opt set enablebuffing true +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +setvar[serviceClock,stopwatchcreate[]] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +stopwatchstart[getvar[serviceClock]] +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +touchvar[resetNavLoaded] +i +2 +s +/vt nav load ah_recall +s +service_reset_main +i +2 +i +3 +TABLE +2 +K +V +n +n +3 +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +testvar[resetNavLoaded] +i +7 +i +0 +i +6 +i +2 +TABLE +2 +K +V +n +n +4 +i +7 +TABLE +2 +k +v +n +n +1 +s +e +s +clearvar[resetNavLoaded] +i +10 +TABLE +2 +k +v +n +n +0 +i +2 +s +/vt opt set enablenav false +i +1 +s +idle +s +service_reset_main +i +1 +i +3 +i +0 +TABLE +2 +K +V +n +n +2 +i +2 +s +/ah +i +1 +s +service_reset_main_wait +s +service_reset_main_stuck +i +8 +i +1 +i +0 +s +death +s +service_reset_main_wait +i +20 +i +1 +i +0 +s +service_reset_main +s +service_reset_main_wait +i +6 +i +1 +i +30 +s +service_reset_main +s +service_reset_main_wait +i +1 +i +3 +i +0 +TABLE +2 +K +V +n +n +2 +i +2 +s +/vt opt set enablecombat false +i +2 +s +/vt opt set enablelooting false +s +death +i +20 +i +3 +i +0 +TABLE +2 +K +V +n +n +2 +i +2 +s +/ah +i +1 +s +death_wait_recall +s +death +i +6 +i +3 +i +30 +TABLE +2 +K +V +n +n +2 +i +2 +s +/ah +i +1 +s +death_wait_recall +s +death +i +8 +i +1 +i +0 +s +death +s +death_wait_recall +i +20 +i +1 +i +0 +s +idle +s +death_wait_recall +i +6 +i +1 +i +60 +s +idle +s +death_wait_recall