restructure metas and add augment service support
All checks were successful
/ test (push) Successful in 24s

This commit is contained in:
Erik 2026-03-11 17:27:46 +01:00
parent af672e6a3b
commit 7a37c0d5b0
156 changed files with 32527 additions and 14558 deletions

View file

@ -1,293 +0,0 @@
~~
~~ Nalicana's Test Quest Meta
~~ Talk to Nalicana → Gurog Ice Cave → Kill Battle Lord Gregor
~~ → Loot Mnemosyne → Return to Nalicana
~~
~~ NAV FILES REQUIRED (record in-game):
~~ nav_nalicana.nav - Start location → Nalicana at Asheron's Castle
~~ nal_to_cave.nav - Nalicana → Gurog Ice Cave → first room → locked door
~~ nal_to_tomb_portal.nav - Past door → Frozen Tomb portal
~~ nal_dungeon_run.nav - Frozen Tomb → maze (hug right) → Gregor's room
~~
~~ ============================================================
~~ STATE: Default - Init and go talk to Nalicana
~~ ============================================================
STATE: {Default}
IF: Death
DO: SetState {death}
IF: Always
DO: DoAll
Chat {/ub opt set VTank.PatchExpressionEngine true}
SetOpt {enablecombat} {false}
SetOpt {enablenav} {true}
SetOpt {enablelooting} {false}
SetOpt {enablebuffing} {true}
SetOpt {attackdistance} {0.0125}
Chat {/vt nav load nav_nalicana}
SetState {talk_nalicana}
~~ ============================================================
~~ STATE: talk_nalicana - Navigate to Nalicana, talk to get quest
~~ ============================================================
STATE: {talk_nalicana}
IF: Death
DO: SetState {death}
IF: All
Expr {testvar[navLoaded]}
NavEmpty
DO: DoAll
ClearWatchdog
Chat {/ub use Nalicana}
SetState {wait_nalicana_dialog}
IF: Always
DO: DoAll
DoExpr {touchvar[navLoaded]}
SetWatchdog 10.0 300.0 {stuck}
~~ ============================================================
~~ STATE: wait_nalicana_dialog - Wait for Nalicana's quest dialog
~~ ============================================================
STATE: {wait_nalicana_dialog}
IF: Death
DO: SetState {death}
~~ Got the quest dialog
IF: ChatMatch {Gurog have emerged}
DO: DoAll
DoExpr {echo[`Got quest from Nalicana!`,1]}
SetState {nav_to_cave}
~~ On cooldown
IF: ChatMatch {You have solved this quest too recently}
DO: DoAll
DoExpr {echo[`Quest on cooldown!`,1]}
SetState {done}
~~ Timeout - maybe already have quest, try going anyway
IF: SecsInStateGE 10
DO: SetState {nav_to_cave}
~~ ============================================================
~~ STATE: nav_to_cave - Travel to cave, kill gurogs, arrive at door
~~ ============================================================
STATE: {nav_to_cave}
IF: Death
DO: SetState {death}
IF: All
Expr {testvar[navLoaded2]}
NavEmpty
DO: DoAll
ClearWatchdog
SetOpt {enablecombat} {true}
SetOpt {enablelooting} {true}
SetState {wait_key}
IF: Always
DO: DoAll
DoExpr {touchvar[navLoaded2]}
Chat {/vt nav load nal_to_cave}
SetWatchdog 10.0 600.0 {stuck}
~~ ============================================================
~~ STATE: wait_key - At the door, wait for key from gurogs
~~ ============================================================
STATE: {wait_key}
IF: Death
DO: SetState {death}
IF: ItemCountGE 1 {Entryway Key}
DO: DoAll
DoExpr {echo[`Got Entryway Key!`,1]}
Chat {/ub use Entryway Key on Door}
SetState {wait_door}
~~ Keep fighting, wait for key
IF: SecsInStateGE 120
DO: DoAll
DoExpr {echo[`Key taking too long...`,1]}
SetState {wait_key}
~~ ============================================================
~~ STATE: wait_door - Wait for door unlock message
~~ ============================================================
STATE: {wait_door}
IF: Death
DO: SetState {death}
~~ Door unlocked
IF: ChatMatch {Door has been unlocked}
DO: DoAll
DoExpr {echo[`Door opened!`,1]}
SetOpt {enablecombat} {false}
SetOpt {enablelooting} {false}
SetState {nav_to_tomb_portal}
~~ Retry key use
IF: SecsInStateGE 5
DO: DoAll
Chat {/ub use Entryway Key on Door}
SetState {wait_door}
~~ ============================================================
~~ STATE: nav_to_tomb_portal - Navigate to Frozen Tomb portal
~~ Combat OFF during this nav
~~ ============================================================
STATE: {nav_to_tomb_portal}
IF: Death
DO: SetState {death}
IF: All
Expr {testvar[navLoaded3]}
NavEmpty
DO: DoAll
ClearWatchdog
SetState {enter_frozen_tomb}
IF: Always
DO: DoAll
DoExpr {touchvar[navLoaded3]}
Chat {/vt nav load nal_to_tomb_portal}
SetWatchdog 10.0 300.0 {stuck}
~~ ============================================================
~~ STATE: enter_frozen_tomb - Wait for portal transition
~~ ============================================================
STATE: {enter_frozen_tomb}
IF: Death
DO: SetState {death}
IF: ExitPortal
DO: DoAll
DoExpr {echo[`Inside Frozen Tomb!`,1]}
SetOpt {enablecombat} {true}
SetState {dungeon_run}
~~ If we walked right into it, may already be inside
IF: SecsInStateGE 10
DO: DoAll
SetOpt {enablecombat} {true}
SetState {dungeon_run}
~~ ============================================================
~~ STATE: dungeon_run - Navigate through Frozen Tomb to Gregor
~~ ============================================================
STATE: {dungeon_run}
IF: Death
DO: SetState {death}
IF: All
Expr {testvar[navLoaded4]}
NavEmpty
DO: DoAll
ClearWatchdog
SetOpt {enablelooting} {true}
SetState {kill_gregor}
IF: Always
DO: DoAll
DoExpr {touchvar[navLoaded4]}
Chat {/vt nav load nal_dungeon_run}
SetOpt {enablelooting} {false}
SetWatchdog 10.0 600.0 {stuck}
~~ ============================================================
~~ STATE: kill_gregor - Kill Battle Lord Gregor
~~ ============================================================
STATE: {kill_gregor}
IF: Death
DO: SetState {death}
~~ Gregor's death speech - he's dead, stop fighting
IF: ChatMatch {Killing me will not change anything}
DO: DoAll
DoExpr {echo[`Battle Lord Gregor defeated!`,1]}
SetOpt {enablecombat} {false}
SetState {wait_loot}
~~ Got the mnemosyne already
IF: ItemCountGE 1 {Battle Lord Gregor's Mnemosyne}
DO: DoAll
DoExpr {echo[`Got the Mnemosyne!`,1]}
SetOpt {enablecombat} {false}
SetOpt {enablelooting} {false}
SetState {return_nalicana}
IF: SecsInStateGE 600
DO: DoAll
DoExpr {echo[`Gregor fight timeout!`,1]}
SetState {stuck}
~~ ============================================================
~~ STATE: wait_loot - Wait for VTank to pick up mnemosyne
~~ ============================================================
STATE: {wait_loot}
IF: Death
DO: SetState {death}
IF: ItemCountGE 1 {Battle Lord Gregor's Mnemosyne}
DO: DoAll
DoExpr {echo[`Got the Mnemosyne! Returning to Nalicana.`,1]}
SetOpt {enablelooting} {false}
SetState {return_nalicana}
~~ Timeout waiting for loot
IF: SecsInStateGE 30
DO: DoAll
DoExpr {echo[`Mnemosyne not looted, check loot profile!`,1]}
SetOpt {enablelooting} {false}
SetState {return_nalicana}
~~ ============================================================
~~ STATE: return_nalicana - Nav back to Nalicana using nav_nalicana
~~ ============================================================
STATE: {return_nalicana}
IF: Death
DO: SetState {death}
IF: All
Expr {testvar[navLoaded5]}
NavEmpty
DO: DoAll
ClearWatchdog
SetState {turn_in}
IF: Always
DO: DoAll
DoExpr {touchvar[navLoaded5]}
Chat {/vt nav load nav_nalicana}
SetWatchdog 10.0 600.0 {stuck}
~~ ============================================================
~~ STATE: turn_in - Give mnemosyne to Nalicana
~~ ============================================================
STATE: {turn_in}
IF: Death
DO: SetState {death}
IF: Always
DO: DoAll
Chat {/ub givep Battle Lord Gregor's Mnemosyne to Nalicana}
Chat {/ub prepclick yes 3}
SetState {wait_turn_in}
~~ ============================================================
~~ STATE: wait_turn_in - Wait for turn-in dialog
~~ ============================================================
STATE: {wait_turn_in}
IF: Death
DO: SetState {death}
IF: ChatMatch {Lord Asheron should be able to learn much}
DO: DoAll
DoExpr {echo[`Nalicana's Test COMPLETE!`,1]}
SetState {done}
~~ Retry turn-in
IF: SecsInStateGE 10
DO: SetState {turn_in}
~~ ============================================================
~~ STATE: done - Quest complete
~~ ============================================================
STATE: {done}
IF: Always
DO: DoAll
DoExpr {echo[`Nalicana's Test quest finished.`,1]}
Chat {/mp}
~~ ============================================================
~~ STATE: stuck - Navigation stuck recovery
~~ ============================================================
STATE: {stuck}
IF: Death
DO: SetState {death}
IF: Always
DO: DoAll
Chat {/ub face}
DoExpr {echo[`Stuck! Check nav...`,1]}
~~ ============================================================
~~ STATE: death - Death recovery, recall and restart
~~ ============================================================
STATE: {death}
IF: ExitPortal
DO: DoAll
DoExpr {echo[`Died! Restarting...`,1]}
SetState {Default}

View file

@ -1,109 +0,0 @@
uTank2 NAV 1.2
4
18
4
-101.035883959134
-27.7356273174286
0.150020837783813
0
/ah
0
59.324442132314
-28.5358481725057
0.0500208298365275
0
0
59.3055089314779
-28.5401463190715
0.0500208298365275
0
0
59.2989932378133
-28.5247219721476
0.0500208298365275
0
0
59.2991608301799
-28.5027507781982
0.0583541631698608
0
6
-101.035883959134
-27.7356273174286
0.150020837783813
0
Sawato Meeting Hall Portal
14
True
59.2987999916077
-28.482691637675
0.0580708347260952
4
-101.035883959134
-27.7356273174286
0.150020837783813
0
/tell Time according to alex, cv
3
-101.035883959134
-27.7356273174286
0.150020837783813
0
10000
4
-101.035883959134
-27.7356273174286
0.150020837783813
0
/ub use Gateway
0
13.6430676460266
64.7994166374206
1.15502077738444
0
0
13.5994514783223
64.7994166374206
1.1736333211263
0
0
13.5750706036886
64.7994166374206
1.17639503479004
0
0
13.5309435844421
64.7073394457499
1.21768137613932
0
0
13.4500286897024
64.4615866204103
1.37660484313965
0
0
13.3368370691935
64.2607777277629
1.48141034444173
0
0
13.1944775263468
64.0820965131124
1.60867055257161
0
6
-101.035883959134
-27.7356273174286
0.150020837783813
0
Mountain Cavern Portal
14
True
13.1864875157674
64.0650895754496
1.62406241893768
0
-101.036203662554
-27.7340151468913
0.150020837783813
0

View file

@ -1,262 +0,0 @@
~~
~~ Empyrean Facility Aetheria Quest Meta
~~ Automates the 3-level Aetheria slot unlock dungeon
~~ Each level: kill wisps in 4 cardinal rooms, use Aligned Mana Stone at each fountain
~~ Then use stone at center fountain and take portal to next level
~~
~~ NAV FILES REQUIRED (record in-game, save to VTank folder):
~~ nav_empyrean.nav - Route TO the dungeon (already have this)
~~ emp_upper_north.nav - Upper level: start → north room fountain
~~ emp_upper_east.nav - Upper level: north room → east room fountain
~~ emp_upper_south.nav - Upper level: east room → south room fountain
~~ emp_upper_west.nav - Upper level: south room → west room fountain
~~ emp_upper_center.nav - Upper level: west room → center room fountain
~~ emp_middle_north.nav - Middle level: landing → north room fountain
~~ emp_middle_east.nav - Middle level: north room → east room fountain
~~ emp_middle_south.nav - Middle level: east room → south room fountain
~~ emp_middle_west.nav - Middle level: south room → west room fountain
~~ emp_middle_center.nav - Middle level: west room → center room fountain
~~ emp_lower_north.nav - Lower level: landing → north room fountain
~~ emp_lower_east.nav - Lower level: north room → east room fountain
~~ emp_lower_south.nav - Lower level: east room → south room fountain
~~ emp_lower_west.nav - Lower level: south room → west room fountain
~~ emp_lower_center.nav - Lower level: west room → center room fountain
~~
~~ ============================================================
~~ STATE: Default - One-time init and travel to dungeon
~~ ============================================================
STATE: {Default}
IF: Death
DO: SetState {death}
IF: Always
DO: DoAll
Chat {/ub opt set VTank.PatchExpressionEngine true}
SetOpt {enablecombat} {false}
SetOpt {enablenav} {true}
SetOpt {enablelooting} {false}
SetOpt {enablebuffing} {true}
SetOpt {attackdistance} {0.0125}
DoExpr {setvar[currentLevel,`upper`]}
DoExpr {setvar[currentRoom,`north`]}
DoExpr {setvar[roomsDone,0]}
Chat {/vt nav load nav_empyrean}
SetState {enter_dungeon}
~~ ============================================================
~~ STATE: enter_dungeon - Wait for nav to reach dungeon entrance
~~ ============================================================
STATE: {enter_dungeon}
IF: Death
DO: SetState {death}
IF: All
SecsInStateGE 3
NavEmpty
DO: DoAll
SetOpt {enablecombat} {true}
SetState {goto_room}
IF: Always
DO: DoAll
SetWatchdog 10.0 300.0 {stuck}
~~ ============================================================
~~ STATE: goto_room - Load nav for current level+room
~~ ============================================================
STATE: {goto_room}
IF: Death
DO: SetState {death}
IF: Always
DO: DoAll
ChatExpr {\/vt nav load emp_+getvar[currentLevel]+`_`+getvar[currentRoom]}
DoExpr {clearvar[navLoaded]}
SetState {arrive_room}
~~ ============================================================
~~ STATE: arrive_room - Wait for nav to finish (arrived at room)
~~ ============================================================
STATE: {arrive_room}
IF: Death
DO: SetState {death}
IF: All
Expr {testvar[navLoaded]}
NavEmpty
DO: DoAll
ClearWatchdog
SetState {kill_wisps}
IF: Always
DO: DoAll
DoExpr {touchvar[navLoaded]}
SetWatchdog 10.0 180.0 {stuck}
~~ ============================================================
~~ STATE: kill_wisps - Wait for all mobs in room to die
~~ ============================================================
STATE: {kill_wisps}
IF: Death
DO: SetState {death}
~~ All wisps dead — proceed to use stone
IF: All
SecsInStateGE 5
NoMobsInDist 4.0
DO: SetState {use_stone}
~~ Safety timeout: if stuck fighting for 5 minutes, try stone anyway
IF: SecsInStateGE 300
DO: SetState {use_stone}
IF: Always
DO: DoAll
SetWatchdog 10.0 300.0 {stuck}
~~ ============================================================
~~ STATE: use_stone - Use Aligned Mana Stone, wait for result
~~ ============================================================
STATE: {use_stone}
IF: Death
DO: SetState {death}
~~ Success: "A shiver moves across your body"
IF: ChatMatch {A shiver moves across your body}
DO: DoAll
DoExpr {echo[`Room complete! (`+getvar[currentLevel]+` `+getvar[currentRoom]+`)`,1]}
SetState {next_room}
~~ Already done: "you feel no change"
IF: ChatMatch {no change}
DO: DoAll
DoExpr {echo[`Room already done (`+getvar[currentLevel]+` `+getvar[currentRoom]+`)`,1]}
SetState {next_room}
~~ Retry stone every 5 seconds
IF: SecsInStateGE 5
DO: DoAll
Chat {/ub use Aligned Mana Stone}
SetState {use_stone}
~~ First attempt immediately
IF: Always
DO: DoAll
Chat {/ub use Aligned Mana Stone}
~~ ============================================================
~~ STATE: next_room - Advance to next room or center
~~ Route: north → east → south → west → center
~~ ============================================================
STATE: {next_room}
IF: Death
DO: SetState {death}
~~ From north → go east
IF: Expr {getvar[currentRoom]==`north`}
DO: DoAll
DoExpr {setvar[currentRoom,`east`]}
SetState {goto_room}
~~ From east → go south
IF: Expr {getvar[currentRoom]==`east`}
DO: DoAll
DoExpr {setvar[currentRoom,`south`]}
SetState {goto_room}
~~ From south → go west
IF: Expr {getvar[currentRoom]==`south`}
DO: DoAll
DoExpr {setvar[currentRoom,`west`]}
SetState {goto_room}
~~ From west → go to center
IF: Expr {getvar[currentRoom]==`west`}
DO: DoAll
DoExpr {setvar[currentRoom,`center`]}
SetState {goto_room}
~~ From center → level complete, use stone then take portal
IF: Expr {getvar[currentRoom]==`center`}
DO: SetState {use_stone_center}
~~ ============================================================
~~ STATE: use_stone_center - Use stone at center fountain, then portal
~~ ============================================================
STATE: {use_stone_center}
IF: Death
DO: SetState {death}
~~ Success at center fountain — got aetheria message
IF: ChatMatch {A shiver moves across your body}
DO: DoAll
DoExpr {echo[`Level complete! (`+getvar[currentLevel]+`)`,1]}
SetState {take_portal}
~~ Already done
IF: ChatMatch {no change}
DO: DoAll
DoExpr {echo[`Level already done (`+getvar[currentLevel]+`)`,1]}
SetState {take_portal}
~~ Retry stone every 5 seconds
IF: SecsInStateGE 5
DO: DoAll
Chat {/ub use Aligned Mana Stone}
SetState {use_stone_center}
~~ First attempt immediately
IF: Always
DO: DoAll
Chat {/ub use Aligned Mana Stone}
~~ ============================================================
~~ STATE: take_portal - Take portal to next level
~~ ============================================================
STATE: {take_portal}
IF: Death
DO: SetState {death}
~~ Upper level done → take Middle portal
IF: Expr {getvar[currentLevel]==`upper`}
DO: DoAll
DoExpr {setvar[currentLevel,`middle`]}
DoExpr {setvar[currentRoom,`north`]}
Chat {/ub use Empyrean Facility Middle Level}
SetState {portal_transition}
~~ Middle level done → take Lower portal
IF: Expr {getvar[currentLevel]==`middle`}
DO: DoAll
DoExpr {setvar[currentLevel,`lower`]}
DoExpr {setvar[currentRoom,`north`]}
Chat {/ub use Empyrean Facility Lower Level}
SetState {portal_transition}
~~ Lower level done → quest complete!
IF: Expr {getvar[currentLevel]==`lower`}
DO: DoAll
DoExpr {echo[`All 3 aetheria slots unlocked!`,1]}
SetState {quest_done}
~~ ============================================================
~~ STATE: portal_transition - Wait for portal entry/exit
~~ ============================================================
STATE: {portal_transition}
IF: Death
DO: SetState {death}
IF: ExitPortal
DO: DoAll
DoExpr {echo[`Arrived at `+getvar[currentLevel]+` level`,1]}
SetState {goto_room}
~~ Safety: if portal didn't work, retry
IF: SecsInStateGE 15
DO: SetState {take_portal}
~~ ============================================================
~~ STATE: quest_done - All 3 levels complete, recall out
~~ ============================================================
STATE: {quest_done}
IF: Always
DO: DoAll
DoExpr {echo[`Empyrean Facility quest COMPLETE! All aetheria slots unlocked.`,1]}
Chat {/mp}
~~ ============================================================
~~ STATE: stuck - Navigation stuck, try to recover
~~ ============================================================
STATE: {stuck}
IF: Death
DO: SetState {death}
IF: Always
DO: DoAll
Chat {/ub face}
DoExpr {echo[`Stuck! Trying to recover...`,1]}
SetState {goto_room}
~~ ============================================================
~~ STATE: death - Death recovery
~~ Re-enter dungeon from the beginning
~~ ============================================================
STATE: {death}
IF: ExitPortal
DO: DoAll
DoExpr {echo[`Died! Re-entering dungeon...`,1]}
Chat {/vt nav load nav_empyrean}
SetState {enter_dungeon}

View file

@ -1,8 +0,0 @@
uTank2 NAV 1.2
4
1
0
69.2693708399932
21.0462558110555
1.55835418701172
0

View file

@ -55,7 +55,7 @@ STATE: {stateBurdenPackSlots} ~~ {
DO: DoAll
DestroyView {main}
IF: Always
DO: CreateView {stateBurdenPackSlots} {<?xml version="1.0"?><view width="300" height="260" title="Burden and Pack Slots"><control type="layout"><control type="button" name="btnMightSeventhMule" left="10" top="10" width="250" height="25" text="Might of the Seventh Mule" actionexpr="setvar[Augment,`stateMightSeventhMule`]" setstate="nav_zaikhal" /><control type="button" name="btnShadowSeventhMule" left="10" top="40" width="250" height="25" text="Shadow of the Seventh Mule" actionexpr="setvar[Augment,`stateShadowSeventhMule`]" setstate="nav_zaikhal" /><control type="button" name="btnInfusedWarMagic" left="10" top="70" width="250" height="25" text="Infused War Magic" actionexpr="setvar[Augment,`stateInfusedWarMagic`]" setstate="nav_silyun" /><control type="button" name="btnInfusedLifeMagic" left="10" top="100" width="250" height="25" text="Infused Life Magic" actionexpr="setvar[Augment,`stateInfusedLifeMagic`]" setstate="nav_hebian_to" /><control type="button" name="btnInfusedItemMagic" left="10" top="130" width="250" height="25" text="Infused Item Magic" actionexpr="setvar[Augment,`stateInfusedItemMagic`]" setstate="nav_hebian_to" /><control type="button" name="btnInfusedCreatureMagic" left="10" top="160" width="250" height="25" text="Infused Creature Magic" actionexpr="setvar[Augment,`stateInfusedCreatureMagic`]" setstate="nav_cragstone" /><control type="button" name="btnInfusedVoidMagic" left="10" top="190" width="250" height="25" text="Infused Void Magic" actionexpr="setvar[Augment,`stateInfusedVoidMagic`]" setstate="nav_candeth_keep" /><control type="button" name="btnMain" left="10" top="220" width="250" height="25" text="Main" setstate="Default" /></control></view>}
DO: CreateView {stateBurdenPackSlots} {<?xml version="1.0"?><view width="300" height="260" title="Burden and Pack Slots"><control type="layout"><control type="button" name="btnMightSeventhMule" left="10" top="10" width="250" height="25" text="Might of the Seventh Mule" actionexpr="setvar[Augment,`stateMightSeventhMule`]" setstate="nav_zaikhal" /><control type="button" name="btnShadowSeventhMule" left="10" top="40" width="250" height="25" text="Shadow of the Seventh Mule" actionexpr="setvar[Augment,`stateShadowSeventhMule`]" setstate="nav_zaikhal" /><control type="button" name="btnInfusedWarMagic" left="10" top="70" width="250" height="25" text="Infused War Magic" actionexpr="setvar[Augment,`stateInfusedWarMagic`]" setstate="nav_silyun" /><control type="button" name="btnInfusedLifeMagic" left="10" top="100" width="250" height="25" text="Infused Life Magic" actionexpr="setvar[Augment,`stateInfusedLifeMagic`]" setstate="nav_hebianto" /><control type="button" name="btnInfusedItemMagic" left="10" top="130" width="250" height="25" text="Infused Item Magic" actionexpr="setvar[Augment,`stateInfusedItemMagic`]" setstate="nav_hebianto" /><control type="button" name="btnInfusedCreatureMagic" left="10" top="160" width="250" height="25" text="Infused Creature Magic" actionexpr="setvar[Augment,`stateInfusedCreatureMagic`]" setstate="nav_cragstone" /><control type="button" name="btnInfusedVoidMagic" left="10" top="190" width="250" height="25" text="Infused Void Magic" actionexpr="setvar[Augment,`stateInfusedVoidMagic`]" setstate="nav_candeth" /><control type="button" name="btnMain" left="10" top="220" width="250" height="25" text="Main" setstate="Default" /></control></view>}
~~ }
STATE: {stateDeathPenalties} ~~ {
IF: Always
@ -90,7 +90,7 @@ STATE: {stateInnateResistance} ~~ {
DO: DoAll
DestroyView {main}
IF: Always
DO: CreateView {stateInnateResistance} {<?xml version="1.0"?><view width="300" height="250" title="Innate Resistance"><control type="layout"><control type="button" name="btnEnhancementMaceTurner" left="10" top="10" width="250" height="25" text="Enhancement of the Mace Turner" actionexpr="setvar[Augment,`stateEnhancementMaceTurner`]" setstate="nav_hebian_to" /><control type="button" name="btnEnhancementBladeTurner" left="10" top="40" width="250" height="25" text="Enhancement of the Blade Turner" actionexpr="setvar[Augment,`stateEnhancementBladeTurner`]" setstate="nav_hebian_to" /><control type="button" name="btnEnhancementArrowTurner" left="10" top="70" width="250" height="25" text="Enhancement of the Arrow Turner" actionexpr="setvar[Augment,`stateEnhancementArrowTurner`]" setstate="nav_hebian_to" /><control type="button" name="btnStormEnhancement" left="10" top="100" width="250" height="25" text="Storm's Enhancement" actionexpr="setvar[Augment,`stateStormEnhancement`]" setstate="nav_hebian_to" /><control type="button" name="btnFieryEnhancement" left="10" top="130" width="250" height="25" text="Fiery Enhancement" actionexpr="setvar[Augment,`stateFieryEnhancement`]" setstate="nav_hebian_to" /><control type="button" name="btnIcyEnhancement" left="10" top="160" width="250" height="25" text="Icy Enhancement" actionexpr="setvar[Augment,`stateIcyEnhancement`]" setstate="nav_hebian_to" /><control type="button" name="btnCausticEnhancement" left="10" top="190" width="250" height="25" text="Caustic Enhancement" actionexpr="setvar[Augment,`stateCausticEnhancement`]" setstate="nav_hebian_to" /><control type="button" name="btnMain" left="10" top="220" width="250" height="25" text="Main" setstate="stateDefault" /></control></view>}
DO: CreateView {stateInnateResistance} {<?xml version="1.0"?><view width="300" height="250" title="Innate Resistance"><control type="layout"><control type="button" name="btnEnhancementMaceTurner" left="10" top="10" width="250" height="25" text="Enhancement of the Mace Turner" actionexpr="setvar[Augment,`stateEnhancementMaceTurner`]" setstate="nav_hebianto" /><control type="button" name="btnEnhancementBladeTurner" left="10" top="40" width="250" height="25" text="Enhancement of the Blade Turner" actionexpr="setvar[Augment,`stateEnhancementBladeTurner`]" setstate="nav_hebianto" /><control type="button" name="btnEnhancementArrowTurner" left="10" top="70" width="250" height="25" text="Enhancement of the Arrow Turner" actionexpr="setvar[Augment,`stateEnhancementArrowTurner`]" setstate="nav_hebianto" /><control type="button" name="btnStormEnhancement" left="10" top="100" width="250" height="25" text="Storm's Enhancement" actionexpr="setvar[Augment,`stateStormEnhancement`]" setstate="nav_hebianto" /><control type="button" name="btnFieryEnhancement" left="10" top="130" width="250" height="25" text="Fiery Enhancement" actionexpr="setvar[Augment,`stateFieryEnhancement`]" setstate="nav_hebianto" /><control type="button" name="btnIcyEnhancement" left="10" top="160" width="250" height="25" text="Icy Enhancement" actionexpr="setvar[Augment,`stateIcyEnhancement`]" setstate="nav_hebianto" /><control type="button" name="btnCausticEnhancement" left="10" top="190" width="250" height="25" text="Caustic Enhancement" actionexpr="setvar[Augment,`stateCausticEnhancement`]" setstate="nav_hebianto" /><control type="button" name="btnMain" left="10" top="220" width="250" height="25" text="Main" setstate="Default" /></control></view>}
~~ }
STATE: {stateRatings} ~~ {
IF: Always
@ -118,7 +118,7 @@ STATE: {stateSpellDuration} ~~ {
DO: DoAll
DestroyView {main}
IF: Always
DO: CreateView {stateSpellDuration} {<?xml version="1.0"?><view width="300" height="110" title="Spell Duration"><control type="layout"><control type="button" name="btnArchmageEndurance" left="10" top="10" width="250" height="25" text="Archmage's Endurance" actionexpr="setvar[Augment,`stateArchmageEndurance`]" setstate="nav_mayoi" /><control type="button" name="btnMain" left="10" top="40" width="250" height="25" text="Main" setstate="stateDefault" /></control></view>}
DO: CreateView {stateSpellDuration} {<?xml version="1.0"?><view width="300" height="110" title="Spell Duration"><control type="layout"><control type="button" name="btnArchmageEndurance" left="10" top="10" width="250" height="25" text="Archmage's Endurance" actionexpr="setvar[Augment,`stateArchmageEndurance`]" setstate="nav_mayoi" /><control type="button" name="btnMain" left="10" top="40" width="250" height="25" text="Main" setstate="Default" /></control></view>}
~~ }
STATE: {stateMightSeventhMule} ~~ {
IF: Always
@ -150,98 +150,84 @@ STATE: {stateInfusedLifeMagic} ~~ {
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateInfusedItemMagic} ~~ {
IF: Always
DO: Chat {/vt nav load nav_ganfo}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateInfusedCreatureMagic} ~~ {
IF: Always
DO: Chat {/vt nav load nav_gustuvlansdown}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateInfusedVoidMagic} ~~ {
IF: Always
DO: Chat {/vt nav load nav_morathe}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateClutchMiser} ~~ {
IF: Always
DO: Chat {/vt nav load nav_rohulabintludun}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateEnduringEnchantment} ~~ {
IF: Always
DO: Chat {/vt nav load nav_erikfestus}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateQuickLearner} ~~ {
IF: Always
DO: Chat {/vt nav load nav_rickarddumalia}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateAsheronsLesserBenediction} ~~ {
IF: Always
DO: Chat {/vt nav load nav_donatellolinante}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateInnateRenewal} ~~ {
IF: Always
DO: Chat {/vt nav load nav_alisondulane}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateReinforcementLugians} ~~ {
IF: Always
DO: Chat {/vt nav load nav_fiunluunere}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateBleearghFortitude} ~~ {
IF: Always
DO: Chat {/vt nav load nav_fiunruun}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateOswaldEnhancement} ~~ {
IF: Always
DO: Chat {/vt nav load nav_fiunbayaas}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateSiraluunBlessing} ~~ {
IF: Always
DO: Chat {/vt nav load nav_fiunriish}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateEnduringCalm} ~~ {
IF: Always
DO: Chat {/vt nav load nav_fiunvasherr}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateSteadfastWill} ~~ {
IF: Always
DO: Chat {/vt nav load nav_fiunnoress}
@ -254,28 +240,24 @@ STATE: {stateCriticalProtection} ~~ {
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateFrenzySlayer} ~~ {
IF: Always
DO: Chat {/vt nav load nav_neelanashua}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateIronSkin} ~~ {
IF: Always
DO: Chat {/vt nav load nav_emilyyarow}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateEyeRemorseless} ~~ {
IF: Always
DO: Chat {/vt nav load nav_anframmellow}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateHandRemorseless} ~~ {
IF: Always
DO: Chat {/vt nav load nav_alishiabintaldan}
@ -288,42 +270,36 @@ STATE: {stateEnhancementMaceTurner} ~~ {
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateEnhancementBladeTurner} ~~ {
IF: Always
DO: Chat {/vt nav load nav_ilinwis}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateEnhancementArrowTurner} ~~ {
IF: Always
DO: Chat {/vt nav load nav_kyujoru}
DO: Chat {/vt nav load nav_kyujorujen}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateStormEnhancement} ~~ {
IF: Always
DO: Chat {/vt nav load nav_enliyuo}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateFieryEnhancement} ~~ {
IF: Always
DO: Chat {/vt nav load nav_rikshenri}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateIcyEnhancement} ~~ {
IF: Always
DO: Chat {/vt nav load nav_lubao}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateCausticEnhancement} ~~ {
IF: Always
DO: Chat {/vt nav load nav_shujiomilao}
@ -352,42 +328,36 @@ STATE: {stateCiandrasFortune} ~~ {
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateCharmedSmith} ~~ {
IF: Always
DO: Chat {/vt nav load nav_lug}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateJibrilsEssence} ~~ {
IF: Always
DO: Chat {/vt nav load nav_joshunfelden}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateYoshisEssence} ~~ {
IF: Always
DO: Chat {/vt nav load nav_briennecarlus}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateCeldisethsEssence} ~~ {
IF: Always
DO: Chat {/vt nav load nav_burrellsammrun}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateKogasEssence} ~~ {
IF: Always
DO: Chat {/vt nav load nav_lenorturk}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateCiandrasEssence} ~~ {
IF: Always
DO: Chat {/vt nav load nav_robertcrow}
@ -400,21 +370,18 @@ STATE: {stateMasterSteelCircle} ~~ {
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateMasterFiveFoldPath} ~~ {
IF: Always
DO: Chat {/vt nav load nav_rahinabintzalanis}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateMasterFocusedEye} ~~ {
IF: Always
DO: Chat {/vt nav load nav_kilaf}
IF: NavEmpty
DO: SetState {Default}
~~ }
STATE: {stateJackTrades} ~~ {
IF: Always
DO: Chat {/vt nav load nav_ariannatheadept}
@ -429,7 +396,6 @@ STATE: {nav_silyun} ~~ {
IF: NavEmpty
DO: DoExpr {chatbox[\/vt setmetastate +getvar[Augment]]}
~~ }
STATE: {nav_hebianto} ~~ {
IF: Always
DO: Chat {/vt nav load nav_hebianto}
@ -438,7 +404,6 @@ STATE: {nav_hebianto} ~~ {
IF: NavEmpty
DO: DoExpr {chatbox[\/vt setmetastate +getvar[Augment]]}
~~ }
STATE: {nav_cragstone} ~~ {
IF: Always
DO: Chat {/vt nav load nav_cragstone}
@ -463,7 +428,6 @@ STATE: {nav_ab} ~~ {
IF: NavEmpty
DO: DoExpr {chatbox[\/vt setmetastate +getvar[Augment]]}
~~ }
STATE: {nav_bandit} ~~ {
IF: Always
DO: Chat {/vt nav load nav_bandit}
@ -472,7 +436,6 @@ STATE: {nav_bandit} ~~ {
IF: NavEmpty
DO: DoExpr {chatbox[\/vt setmetastate +getvar[Augment]]}
~~ }
STATE: {nav_sanamar} ~~ {
IF: Always
DO: Chat {/vt nav load nav_sanamar}
@ -481,7 +444,14 @@ STATE: {nav_sanamar} ~~ {
IF: NavEmpty
DO: DoExpr {chatbox[\/vt setmetastate +getvar[Augment]]}
~~ }
STATE: {nav_candeth} ~~ {
IF: Always
DO: Chat {/vt nav load nav_candeth}
IF: Always
DO: DestroyAllViews
IF: NavEmpty
DO: DoExpr {chatbox[\/vt setmetastate +getvar[Augment]]}
~~ }
STATE: {nav_mayoi} ~~ {
IF: Always
DO: Chat {/vt nav load nav_mayoi}

958
af/bore.af Normal file
View file

@ -0,0 +1,958 @@
~~ {
~~ 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 getgamemonthname getminutesuntilnight getgameyear uisetvisible uiviewvisible uiviewexists getgvar touchgvar getpvar touchpvar setgvar cleargvar setpvar clearpvar testgvar clearallgvars testpvar clearallpvars dictgetitem dictcreate dicthaskey dictadditem dictkeys dictremovekey dictvalues dictclear dictsize dictcopy listgetitem listpop listcreate listcontains listremove listadd listindexof listremoveat listinsert listlastindexof listclear listcopy listcount listreverse
~~
~~ File auto-generated by metaf, a program created by Eskarina of Morningthaw/Coldeve.
~~ Get metaf here: https://github.com/JJEII/metaf/
~~
~~ All recognized structural designators:
~~ STATE: DO:
~~ IF: NAV:
~~
~~ All recognized CONDITION (IF:) operation keywords:
~~ Never NavEmpty MobsInDist_Priority Not
~~ Always Death NeedToBuff PSecsInStateGE
~~ All VendorOpen NoMobsInDist SecsOnSpellGE
~~ Any VendorClosed BlockE BuPercentGE
~~ ChatMatch ItemCountLE CellE DistToRteGE
~~ MainSlotsLE ItemCountGE IntoPortal Expr
~~ SecsInStateGE MobsInDist_Name ExitPortal ChatCapture
~~
~~ All recognized ACTION (DO:) operation keywords:
~~ None EmbedNav ChatExpr SetOpt
~~ SetState CallState SetWatchdog CreateView
~~ Chat Return ClearWatchdog DestroyView
~~ DoAll DoExpr GetOpt DestroyAllViews
~~
~~ All recognized NAV types:
~~ circular follow
~~ linear once
~~
~~ All recognized NAV NODE types:
~~ flw vnd
~~ pnt ptl
~~ rcl tlk
~~ pau chk
~~ cht jmp
~~ prt (deprecated in VTank)
~~ }
STATE: {combat} ~~ {
IF: Always
DO: Chat {/vt opt set enablecombat true}
IF: SecsInStateGE 60
DO: SetState {ring_fail}
IF: NoMobsInDist 5
DO: SetState {hunt}
~~ }
STATE: {death} ~~ {
IF: Always
DO: Chat {/vt nav load death_pause}
IF: Always
DO: Chat {/vt opt set enablenav true}
IF: NavEmpty
DO: SetState {navbore}
~~ }
STATE: {hunt} ~~ {
IF: Always
DO: Chat {/vt opt set enablecombat false}
IF: Expr {getvar[lootTime] == 0}
DO: DoExpr {setvar[lootTime, 21600]}
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: Death
DO: DoAll
Chat {/a I died! But I will comeback!}
SetState {death}
IF: All
ItemCountLE 100 {Prismatic Taper}
NoMobsInDist 5
DO: DoAll
Chat {/a Out of tapers! Recomping.}
SetState {recomp}
IF: MainSlotsLE 4
DO: DoAll
Chat {/a Out of inventory slots! Recomping.}
SetState {recomp}
IF: All
Expr {getvar[serviceCheckInterval] > 0}
Expr {stopwatchelapsedseconds[getvar[serviceClock]]>=getvar[serviceCheckInterval]}
NoMobsInDist 5
DO: SetState {service_quest_refresh}
IF: Always
DO: SetWatchdog 3 120 {navbore}
IF: DistToRteGE 1000
DO: SetState {navbore}
IF: All
Expr {setvar[nearPortal, wobjectfindnearestbyobjectclass[14]]}
Expr {istrue[getvar[nearPortal]]}
Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[nearPortal]]]<=4}
Not Expr {wobjectgetname[getvar[nearPortal]]==Singularity Caul}
DO: DoAll
ChatExpr {\/me is to close to +wobjectgetname[getvar[nearPortal]]}
ChatExpr {\/me at +coordinatetostring[getplayercoordinates[]]}
IF: All
Any
Expr {getvar[mobsClose] == 0}
Expr {getvar[mobsClose] == 1}
MobsInDist_Name 1 6 {}
DO: SetState {combat}
IF: All
Expr {getvar[mobsClose] == 2}
MobsInDist_Name 2 6 {}
DO: SetState {combat}
IF: All
Expr {stopwatchelapsedseconds[getvar[lootclock]]>getvar[lootTime]}
DO: DoAll
Chat {/vt opt set enablecombat true}
SetState {loot}
IF: All
Expr {setvar[portal, wobjectfindnearestbyobjectclass[14]]}
Expr {istrue[getvar[portal]]}
Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[portal]]] <= 8}
Not Expr {wobjectgetname[getvar[portal]]==Singularity Caul}
Not Expr {wobjectgetname[getvar[portal]]#Destroyed.*}
Expr {wobjectisvalid[getvar[portal]]}
Expr {setvar[portalHeading, getheadingto[getvar[portal]]]}
Expr {setvar[playerHeading, getheading[wobjectgetplayer[]]]}
Expr {setvar[relativeAngle, abs[getvar[portalHeading] - getvar[playerHeading]]]}
Expr {setvar[relativeAngle, iif[getvar[relativeAngle] > 180, 360 - getvar[relativeAngle], getvar[relativeAngle]]]}
Expr {setvar[turnDirection, iif[randint[0,2] == 0, -90, 90]]}
Expr {getvar[relativeAngle] <= 11.25}
Expr {setvar[newHeading, abs[getvar[playerHeading] + getvar[turnDirection]]]}
DO: DoAll
Chat {/vt opt set enablenav false}
Chat {/vt opt set enablecombat false}
SetState {avoid_portal}
~~ }
STATE: {loot_rare} ~~ {
IF: Always
DO: DoAll
Chat {/vt opt set enablelooting true}
Chat {/vt opt set enablenav false}
IF: SecsInStateGE 30
DO: DoAll
Chat {/vt opt set enablelooting false}
Chat {/vt opt set enablenav true}
SetState {hunt}
~~ }
STATE: {Default} ~~ {
IF: Not Expr {testvar[portalAvoidAngle]}
DO: DoExpr {setvar[portalAvoidAngle, 11.25]}
IF: Not Expr {testvar[augInnateStrengthTarget]}
DO: DoExpr {setvar[augInnateStrengthTarget, 0]}
IF: Not Expr {testvar[augInnateEnduranceTarget]}
DO: DoExpr {setvar[augInnateEnduranceTarget, 0]}
IF: Not Expr {testvar[augInnateCoordinationTarget]}
DO: DoExpr {setvar[augInnateCoordinationTarget, 0]}
IF: Not Expr {testvar[augInnateQuicknessTarget]}
DO: DoExpr {setvar[augInnateQuicknessTarget, 0]}
IF: Not Expr {testvar[augInnateFocusTarget]}
DO: DoExpr {setvar[augInnateFocusTarget, 0]}
IF: Not Expr {testvar[augInnateSelfTarget]}
DO: DoExpr {setvar[augInnateSelfTarget, 0]}
IF: Not Expr {testvar[augResistBluntTarget]}
DO: DoExpr {setvar[augResistBluntTarget, 0]}
IF: Not Expr {testvar[augResistSlashTarget]}
DO: DoExpr {setvar[augResistSlashTarget, 0]}
IF: Not Expr {testvar[augResistPierceTarget]}
DO: DoExpr {setvar[augResistPierceTarget, 0]}
IF: Not Expr {testvar[augResistLightningTarget]}
DO: DoExpr {setvar[augResistLightningTarget, 0]}
IF: Not Expr {testvar[augResistFireTarget]}
DO: DoExpr {setvar[augResistFireTarget, 0]}
IF: Not Expr {testvar[augResistFrostTarget]}
DO: DoExpr {setvar[augResistFrostTarget, 0]}
IF: Not Expr {testvar[augResistAcidTarget]}
DO: DoExpr {setvar[augResistAcidTarget, 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 autocram true}
ChatExpr {\/vt nav load bore_circuit+getvar[navNumber]}
Chat {/vt opt set enablenav true}
Chat {/vt opt set buffprofile_prots 2}
Chat {/vt opt set buffprofile_banes 5}
Chat {/vt opt set enablelooting false}
Chat {/vt opt set navpriorityboost false}
Chat {/vt opt set lootpriorityboost true}
Chat {/vt opt set lootonlyrarecorpses true}
DoExpr {setvar[lootclock,stopwatchcreate[]]}
DoExpr {stopwatchstart[getvar[lootclock]]}
SetState {service_quest_refresh}
~~ }
STATE: {service_quest_refresh} ~~ {
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} ~~ {
IF: Always
DO: DoAll
DoExpr {setvar[pendingAugments,0]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[230]<5,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[229]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[297]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[296]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[295]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[294]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[328]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[231]<3,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[232]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[234]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[237]<2,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[238]<5,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augInnateStrengthTarget]>0,iif[getcharintprop[217]<10,iif[getcharintprop[218]<getvar[augInnateStrengthTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augInnateEnduranceTarget]>0,iif[getcharintprop[217]<10,iif[getcharintprop[219]<getvar[augInnateEnduranceTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augInnateCoordinationTarget]>0,iif[getcharintprop[217]<10,iif[getcharintprop[220]<getvar[augInnateCoordinationTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augInnateQuicknessTarget]>0,iif[getcharintprop[217]<10,iif[getcharintprop[221]<getvar[augInnateQuicknessTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augInnateFocusTarget]>0,iif[getcharintprop[217]<10,iif[getcharintprop[222]<getvar[augInnateFocusTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augInnateSelfTarget]>0,iif[getcharintprop[217]<10,iif[getcharintprop[223]<getvar[augInnateSelfTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augResistBluntTarget]>0,iif[getcharintprop[239]<2,iif[getcharintprop[242]<getvar[augResistBluntTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augResistSlashTarget]>0,iif[getcharintprop[239]<2,iif[getcharintprop[240]<getvar[augResistSlashTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augResistPierceTarget]>0,iif[getcharintprop[239]<2,iif[getcharintprop[241]<getvar[augResistPierceTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augResistLightningTarget]>0,iif[getcharintprop[239]<2,iif[getcharintprop[246]<getvar[augResistLightningTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augResistFireTarget]>0,iif[getcharintprop[239]<2,iif[getcharintprop[244]<getvar[augResistFireTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augResistFrostTarget]>0,iif[getcharintprop[239]<2,iif[getcharintprop[245]<getvar[augResistFrostTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augResistAcidTarget]>0,iif[getcharintprop[239]<2,iif[getcharintprop[243]<getvar[augResistAcidTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[233]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[309]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[310]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[298]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[299]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[235]<4,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[236]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[226]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[225]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[227]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[228]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[224]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[300]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[302]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[301]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[326]<1,1,getvar[pendingAugments]]]}
SetState {service_decide}
~~ }
STATE: {service_decide} ~~ {
IF: All
Expr {getqueststatus[`stipendtimer_0812`]==1}
DO: SetState {service_stipend}
IF: All
ItemCountGE 1 {Blank Augmentation Gem}
Expr {getvar[pendingAugments]==1}
DO: SetState {service_apply_augment}
IF: All
Expr {getqueststatus[`augmentationblankgemacquired`]==1}
Expr {getvar[pendingAugments]==1}
DO: SetState {service_bella_start}
IF: Always
DO: DoAll
DoExpr {setvar[serviceClock,stopwatchcreate[]]}
DoExpr {stopwatchstart[getvar[serviceClock]]}
SetState {hunt}
~~ }
STATE: {service_stipend} ~~ {
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 {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} ~~ {
IF: Death
DO: SetState {death}
IF: ExitPortal
DO: SetState {service_bella_mp_primary}
IF: Always
DO: Chat {/mp}
IF: SecsInStateGE 120
DO: SetState {service_reset_main}
~~ }
STATE: {service_bella_mp_primary} ~~ {
IF: Death
DO: SetState {death}
IF: Always
DO: DoAll
Chat {/vt nav load mp_primary}
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: ExitPortal
DO: DoAll
Chat {/vt nav load jaw_1}
SetState {service_bella_jaw_run}
IF: SecsInStateGE 300
DO: SetState {service_reset_main}
~~ }
STATE: {service_bella_jaw_run} ~~ {
IF: Death
DO: SetState {death}
IF: NavEmpty
DO: DoAll
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: SecsInStateGE 300
DO: SetState {service_reset_main}
~~ }
STATE: {service_bella_jaw_hunt} ~~ {
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 nav load to_fiun}
IF: SecsInStateGE 1200
DO: SetState {service_reset_main}
~~ }
STATE: {service_bella_turn_in_jaw} ~~ {
IF: Death
DO: SetState {death}
IF: ChatMatch {^Fiun Rehlyun.*}
DO: DoAll
Chat {/mp}
SetState {service_bella_mp_trans}
IF: SecsInStateGE 300
DO: SetState {service_reset_main}
~~ }
STATE: {service_bella_mp_trans} ~~ {
IF: Death
DO: SetState {death}
IF: ExitPortal
DO: DoAll
Chat {/vt nav load mp_secondary}
SetState {service_bella_mp_secondary}
IF: SecsInStateGE 120
DO: SetState {service_reset_main}
~~ }
STATE: {service_bella_mp_secondary} ~~ {
IF: Death
DO: SetState {death}
IF: ExitPortal
DO: DoAll
Chat {/vt opt set enablecombat true}
Chat {/vt nav load to_bella}
SetState {service_bella_kill_bella}
IF: SecsInStateGE 300
DO: SetState {service_reset_main}
~~ }
STATE: {service_bella_kill_bella} ~~ {
IF: Death
DO: SetState {death}
IF: ItemCountGE 1 {Blank Augmentation Gem}
DO: DoAll
Chat {/vt opt set enablelooting false}
Chat {/vt opt set enablecombat false}
SetState {service_bella_escape}
IF: SecsInStateGE 300
DO: SetState {service_reset_main}
~~ }
STATE: {service_bella_escape} ~~ {
IF: Death
DO: SetState {death}
IF: Always
DO: DoAll
Chat {/vt opt set enablelooting false}
Chat {/vt opt set enablecombat false}
IF: Always
DO: SetWatchdog 3 120 {service_reset_main}
IF: SecsInStateGE 1
DO: ChatExpr {\/ub setmotion forward 1}
IF: SecsInStateGE 4
DO: ChatExpr {\/ub setmotion forward 0}
IF: SecsInStateGE 6
DO: Chat {/vt opt set enablecombat false}
IF: SecsInStateGE 7
DO: Chat {/ah}
IF: SecsInStateGE 17
DO: SetState {service_apply_augment}
~~ }
STATE: {service_apply_augment} ~~ {
IF: Death
DO: SetState {death}
IF: ItemCountLE 0 {Blank Augmentation Gem}
DO: SetState {service_reset_main}
IF: Always
DO: DoAll
DoExpr {clearvar[augmentHub]}
DoExpr {clearvar[augmentHubLoaded]}
DoExpr {clearvar[augmentTargetLoaded]}
DoExpr {setvar[augmentStep,0]}
IF: Expr {getcharintprop[230]<5}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_husoon`]}
DoExpr {setvar[augmentItem,`Might of the Seventh Mule`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[229]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_dumidabintruminre`]}
DoExpr {setvar[augmentItem,`Shadow of the Seventh Mule`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[297]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_rapheldetante`]}
DoExpr {setvar[augmentItem,`Infused War Magic`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[296]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_akemifei`]}
DoExpr {setvar[augmentItem,`Infused Life Magic`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[295]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_ganfo`]}
DoExpr {setvar[augmentItem,`Infused Item Magic`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[294]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_gustuvlansdown`]}
DoExpr {setvar[augmentItem,`Infused Creature Magic`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[328]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_morathe`]}
DoExpr {setvar[augmentItem,`Infused Void Magic`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[231]<3}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_rohulabintludun`]}
DoExpr {setvar[augmentItem,`Clutch of the Miser`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[232]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_erikfestus`]}
DoExpr {setvar[augmentItem,`Enduring Enchantment`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[234]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_rickarddumalia`]}
DoExpr {setvar[augmentItem,`Quick Learner`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[237]<2}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_alisondulane`]}
DoExpr {setvar[augmentItem,`Innate Renewal`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[238]<5}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_nawamaraujio`]}
DoExpr {setvar[augmentItem,`Archmage's Endurance`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augInnateStrengthTarget]>0}
Expr {getcharintprop[217]<10}
Expr {getcharintprop[218]<getvar[augInnateStrengthTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_fiunluunere`]}
DoExpr {setvar[augmentItem,`Reinforcement of the Lugians`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augInnateEnduranceTarget]>0}
Expr {getcharintprop[217]<10}
Expr {getcharintprop[219]<getvar[augInnateEnduranceTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_fiunruun`]}
DoExpr {setvar[augmentItem,`Bleeargh's Fortitude`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augInnateCoordinationTarget]>0}
Expr {getcharintprop[217]<10}
Expr {getcharintprop[220]<getvar[augInnateCoordinationTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_fiunbayaas`]}
DoExpr {setvar[augmentItem,`Oswald's Enhancement`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augInnateQuicknessTarget]>0}
Expr {getcharintprop[217]<10}
Expr {getcharintprop[221]<getvar[augInnateQuicknessTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_fiunriish`]}
DoExpr {setvar[augmentItem,`Siraluun's Blessing`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augInnateFocusTarget]>0}
Expr {getcharintprop[217]<10}
Expr {getcharintprop[222]<getvar[augInnateFocusTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_fiunvasherr`]}
DoExpr {setvar[augmentItem,`Enduring Calm`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augInnateSelfTarget]>0}
Expr {getcharintprop[217]<10}
Expr {getcharintprop[223]<getvar[augInnateSelfTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_fiunnoress`]}
DoExpr {setvar[augmentItem,`Steadfast Will`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augResistBluntTarget]>0}
Expr {getcharintprop[239]<2}
Expr {getcharintprop[242]<getvar[augResistBluntTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_nawamaradia`]}
DoExpr {setvar[augmentItem,`Enhancement of the Mace Turner`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augResistSlashTarget]>0}
Expr {getcharintprop[239]<2}
Expr {getcharintprop[240]<getvar[augResistSlashTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_ilinwis`]}
DoExpr {setvar[augmentItem,`Enhancement of the Blade Turner`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augResistPierceTarget]>0}
Expr {getcharintprop[239]<2}
Expr {getcharintprop[241]<getvar[augResistPierceTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_kyujorujen`]}
DoExpr {setvar[augmentItem,`Enhancement of the Arrow Turner`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augResistLightningTarget]>0}
Expr {getcharintprop[239]<2}
Expr {getcharintprop[246]<getvar[augResistLightningTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_enliyuo`]}
DoExpr {setvar[augmentItem,`Storm's Enhancement`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augResistFireTarget]>0}
Expr {getcharintprop[239]<2}
Expr {getcharintprop[244]<getvar[augResistFireTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_rikshenri`]}
DoExpr {setvar[augmentItem,`Fiery Enhancement`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augResistFrostTarget]>0}
Expr {getcharintprop[239]<2}
Expr {getcharintprop[245]<getvar[augResistFrostTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_lubao`]}
DoExpr {setvar[augmentItem,`Icy Enhancement`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augResistAcidTarget]>0}
Expr {getcharintprop[239]<2}
Expr {getcharintprop[243]<getvar[augResistAcidTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_shujiomilao`]}
DoExpr {setvar[augmentItem,`Caustic Enhancement`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[233]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_piersantilinante`]}
DoExpr {setvar[augmentItem,`Critical Protection`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[309]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_neelanashua`]}
DoExpr {setvar[augmentItem,`Frenzy of the Slayer`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[310]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_emilyyarow`]}
DoExpr {setvar[augmentItem,`Iron Skin of the Invincible`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[298]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_anframmellow`]}
DoExpr {setvar[augmentItem,`Eye of the Remorseless`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[299]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_alishiabintaldan`]}
DoExpr {setvar[augmentItem,`Hand of the Remorseless`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[235]<4}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_kriscennis`]}
DoExpr {setvar[augmentItem,`Ciandra's Fortune`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[236]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_lug`]}
DoExpr {setvar[augmentItem,`Charmed Smith`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[226]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_joshunfelden`]}
DoExpr {setvar[augmentItem,`Jibril's Essence`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[225]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_briennecarlus`]}
DoExpr {setvar[augmentItem,`Yoshi's Essence`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[227]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_burrellsammrun`]}
DoExpr {setvar[augmentItem,`Celdiseth's Essence`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[228]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_lenorturk`]}
DoExpr {setvar[augmentItem,`Koga's Essence`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[224]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_robertcrow`]}
DoExpr {setvar[augmentItem,`Ciandra's Essence`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[300]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_carlitogallo`]}
DoExpr {setvar[augmentItem,`Master of the Steel Circle`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[302]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_rahinabintzalanis`]}
DoExpr {setvar[augmentItem,`Master of the Five Fold Path`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[301]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_kilaf`]}
DoExpr {setvar[augmentItem,`Master of the Focused Eye`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[326]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_ariannatheadept`]}
DoExpr {setvar[augmentItem,`Jack of All Trades`]}
SetState {service_apply_augment_nav}
IF: Always
DO: SetState {service_reset_main}
~~ }
STATE: {service_apply_augment_nav} ~~ {
IF: Death
DO: SetState {death}
IF: Not Expr {testvar[augmentStep]}
DO: DoExpr {setvar[augmentStep,0]}
IF: All
Expr {getvar[augmentStep]==0}
Any
Expr {getvar[augmentNav]==`nav_husoon`}
Expr {getvar[augmentNav]==`nav_dumidabintruminre`}
Expr {getvar[augmentNav]==`nav_rahinabintzalanis`}
Expr {getvar[augmentNav]==`nav_kilaf`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_zaikhal`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Any
Expr {getvar[augmentNav]==`nav_rapheldetante`}
Expr {getvar[augmentNav]==`nav_rickarddumalia`}
Expr {getvar[augmentNav]==`nav_carlitogallo`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_silyun`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Any
Expr {getvar[augmentNav]==`nav_akemifei`}
Expr {getvar[augmentNav]==`nav_ganfo`}
Expr {getvar[augmentNav]==`nav_nawamaradia`}
Expr {getvar[augmentNav]==`nav_ilinwis`}
Expr {getvar[augmentNav]==`nav_kyujorujen`}
Expr {getvar[augmentNav]==`nav_enliyuo`}
Expr {getvar[augmentNav]==`nav_rikshenri`}
Expr {getvar[augmentNav]==`nav_lubao`}
Expr {getvar[augmentNav]==`nav_shujiomilao`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_hebianto`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Any
Expr {getvar[augmentNav]==`nav_gustuvlansdown`}
Expr {getvar[augmentNav]==`nav_emilyyarow`}
Expr {getvar[augmentNav]==`nav_kriscennis`}
Expr {getvar[augmentNav]==`nav_joshunfelden`}
Expr {getvar[augmentNav]==`nav_briennecarlus`}
Expr {getvar[augmentNav]==`nav_burrellsammrun`}
Expr {getvar[augmentNav]==`nav_lenorturk`}
Expr {getvar[augmentNav]==`nav_robertcrow`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_cragstone`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Any
Expr {getvar[augmentNav]==`nav_rohulabintludun`}
Expr {getvar[augmentNav]==`nav_erikfestus`}
Expr {getvar[augmentNav]==`nav_anframmellow`}
Expr {getvar[augmentNav]==`nav_alishiabintaldan`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_ab`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Any
Expr {getvar[augmentNav]==`nav_alisondulane`}
Expr {getvar[augmentNav]==`nav_neelanashua`}
Expr {getvar[augmentNav]==`nav_ariannatheadept`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_bandit`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Any
Expr {getvar[augmentNav]==`nav_fiunluunere`}
Expr {getvar[augmentNav]==`nav_fiunruun`}
Expr {getvar[augmentNav]==`nav_fiunbayaas`}
Expr {getvar[augmentNav]==`nav_fiunriish`}
Expr {getvar[augmentNav]==`nav_fiunvasherr`}
Expr {getvar[augmentNav]==`nav_fiunnoress`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_fiun`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Expr {getvar[augmentNav]==`nav_piersantilinante`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_sanamar`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Expr {getvar[augmentNav]==`nav_lug`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_oolutangasrefuge`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Expr {getvar[augmentNav]==`nav_nawamaraujio`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_mayoi`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Expr {getvar[augmentNav]==`nav_morathe`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_candeth`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==1}
Expr {testvar[augmentHub]}
Not Expr {testvar[augmentHubLoaded]}
DO: DoAll
Chat {/vt opt set enablecombat false}
Chat {/vt opt set enablelooting false}
Chat {/vt opt set enablebuffing true}
DoExpr {touchvar[augmentHubLoaded]}
ChatExpr {\/vt nav load +getvar[augmentHub]}
Chat {/vt opt set enablenav true}
IF: All
Expr {getvar[augmentStep]==1}
Expr {testvar[augmentHubLoaded]}
NavEmpty
SecsInStateGE 2
DO: DoExpr {setvar[augmentStep,2]}
IF: All
Expr {getvar[augmentStep]==2}
Not Expr {testvar[augmentTargetLoaded]}
DO: DoAll
DoExpr {touchvar[augmentTargetLoaded]}
ChatExpr {\/vt nav load +getvar[augmentNav]}
Chat {/vt opt set enablenav true}
DoExpr {setvar[augmentStep,3]}
IF: All
Expr {getvar[augmentStep]==3}
Expr {testvar[augmentTargetLoaded]}
NavEmpty
SecsInStateGE 2
DO: SetState {service_use_augment}
IF: Always
DO: SetWatchdog 3 600 {service_reset_main}
~~ }
STATE: {service_use_augment} ~~ {
IF: Death
DO: SetState {death}
IF: Not Expr {testvar[augmentItem]}
DO: SetState {service_reset_main}
IF: Always
DO: SetWatchdog 3 120 {service_reset_main}
IF: SecsInStateGE 3
DO: Chat {/ub prepclick yes 10}
IF: SecsInStateGE 7
DO: ChatExpr {\/ub use +getvar[augmentItem]}
IF: SecsInStateGE 15
DO: SetState {service_reset_main}
~~ }
STATE: {service_reset_main} ~~ {
IF: Always
DO: DoAll
DoExpr {clearvar[questsRequested]}
DoExpr {clearvar[stipendNavLoaded]}
DoExpr {clearvar[augmentNav]}
DoExpr {clearvar[augmentHub]}
DoExpr {clearvar[augmentHubLoaded]}
DoExpr {clearvar[augmentTargetLoaded]}
DoExpr {clearvar[augmentStep]}
DoExpr {clearvar[augmentItem]}
DoExpr {setvar[serviceClock,stopwatchcreate[]]}
DoExpr {stopwatchstart[getvar[serviceClock]]}
SetState {Default}
~~ }
STATE: {avoid_portal} ~~ {
IF: SecsInStateGE 1
DO: ChatExpr {\/me portalHeading \= +getvar[portalHeading]}
IF: SecsInStateGE 2
DO: ChatExpr {\/me playerHeading \= +getvar[playerHeading]}
IF: SecsInStateGE 3
DO: ChatExpr {\/me relativeAngle \= +getvar[relativeAngle]}
IF: SecsInStateGE 4
DO: ChatExpr {\/me Portal detected ahead\! Avoiding now\!}
IF: SecsInStateGE 5
DO: ChatExpr {\/me is too close to +wobjectgetname[wobjectfindnearestbyobjectclass[14]]}
IF: SecsInStateGE 6
DO: ChatExpr {\/me at +coordinatetostring[getplayercoordinates[]]}
IF: SecsInStateGE 7
DO: ChatExpr {\/ub face +getvar[newHeading]}
IF: SecsInStateGE 9
DO: ChatExpr {\/ub setmotion forward 1}
IF: SecsInStateGE 11
DO: ChatExpr {\/ub setmotion forward 0}
IF: SecsInStateGE 12
DO: ChatExpr {\/ub face +getvar[playerHeading]}
IF: SecsInStateGE 14
DO: ChatExpr {\/ub setmotion forward 1}
IF: SecsInStateGE 16
DO: ChatExpr {\/ub setmotion forward 0}
IF: SecsInStateGE 17
DO: ChatExpr {\/mm nextwp}
IF: SecsInStateGE 18
DO: ChatExpr {\/vt opt set enablenav true}
IF: SecsInStateGE 19
DO: ChatExpr {\/vt setmetastate hunt}
~~ }
STATE: {navbore} ~~ {
IF: Always
DO: DoAll
Chat {/vt opt set enablecombat false}
Chat {/vt opt set lootonlyrarecorpses true}
IF: Always
DO: ChatExpr {\/vt nav load bore_route+getvar[navNumber]}
IF: Always
DO: Chat {/vt opt set enablebuffing true}
IF: Always
DO: SetWatchdog 3 300 {navbore}
IF: NavEmpty
DO: DoAll
ChatExpr {\/vt nav load bore_circuit+getvar[navNumber]}
SetState {hunt}
~~ }
STATE: {recomp} ~~ {
IF: NavEmpty
DO: SetState {navbore}
IF: Always
DO: SetWatchdog 3 300 {navbore}
IF: Always
DO: DoAll
Chat {/vt opt set enablecombat false}
Chat {/vt opt set enablebuffing false}
Chat {/vt nav load ah_rarecomp}
~~ }
STATE: {ring_fail} ~~ {
IF: Always
DO: DoAll
Chat {/vt opt set enablecombat false}
SetWatchdog 100 3 {hunt}
~~ }
STATE: {loot} ~~ {
IF: Always
DO: DoAll
Chat {/vt opt set enablelooting true}
Chat {/vt opt set lootonlyrarecorpses false}
Chat {/vt opt set lootpriorityboost false}
IF: SecsInStateGE 300
DO: DoAll
Chat {/vt opt set lootonlyrarecorpses true}
Chat {/vt opt set lootpriorityboost true}
Chat {/vt opt set enablelooting false}
DoExpr {setvar[lootclock,stopwatchcreate[]]}
DoExpr {stopwatchstart[getvar[lootclock]]}
SetState {hunt}
IF: All
Expr {setvar[portal, wobjectfindnearestbyobjectclass[14]]}
Expr {istrue[getvar[portal]]}
Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[portal]]] <= 8}
Not Expr {wobjectgetname[getvar[portal]]==Singularity Caul}
Not Expr {wobjectgetname[getvar[portal]]#Destroyed.*}
Expr {wobjectisvalid[getvar[portal]]}
Expr {setvar[portalHeading, getheadingto[getvar[portal]]]}
Expr {setvar[playerHeading, getheading[wobjectgetplayer[]]]}
Expr {setvar[relativeAngle, abs[getvar[portalHeading] - getvar[playerHeading]]]}
Expr {setvar[relativeAngle, iif[getvar[relativeAngle] > 180, 360 - getvar[relativeAngle], getvar[relativeAngle]]]}
Expr {setvar[turnDirection, iif[randint[0,2] == 0, -90, 90]]}
Expr {getvar[relativeAngle] <= 11.25}
Expr {setvar[newHeading, abs[getvar[playerHeading] + getvar[turnDirection]]]}
DO: DoAll
Chat {/vt opt set enablenav false}
Chat {/vt opt set lootonlyrarecorpses true}
Chat {/vt opt set lootpriorityboost true}
Chat {/vt opt set enablelooting false}
DoExpr {setvar[lootclock,stopwatchcreate[]]}
DoExpr {stopwatchstart[getvar[lootclock]]}
SetState {avoid_portal}
~~ }
~~========================= ONLY NAVS APPEAR BELOW THIS LINE =========================~~
NAV: nav0__stipend_nav once ~~ {
cht -101.597905190786 -96.6216093699137 2.08333134651184E-05 {/ah}
pnt 59.3590666453044 -28.7057823816935 0.0500208298365275
pnt 59.3771680514018 -28.7152192115784 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
pnt -101.605949529012 -96.519695186615 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}
~~ }

960
af/bore_enhanced.af Normal file
View file

@ -0,0 +1,960 @@
~~ {
~~ 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 getgamemonthname getminutesuntilnight getgameyear uisetvisible uiviewvisible uiviewexists getgvar touchgvar getpvar touchpvar setgvar cleargvar setpvar clearpvar testgvar clearallgvars testpvar clearallpvars dictgetitem dictcreate dicthaskey dictadditem dictkeys dictremovekey dictvalues dictclear dictsize dictcopy listgetitem listpop listcreate listcontains listremove listadd listindexof listremoveat listinsert listlastindexof listclear listcopy listcount listreverse
~~
~~ File auto-generated by metaf, a program created by Eskarina of Morningthaw/Coldeve.
~~ Get metaf here: https://github.com/JJEII/metaf/
~~
~~ All recognized structural designators:
~~ STATE: DO:
~~ IF: NAV:
~~
~~ All recognized CONDITION (IF:) operation keywords:
~~ Never NavEmpty MobsInDist_Priority Not
~~ Always Death NeedToBuff PSecsInStateGE
~~ All VendorOpen NoMobsInDist SecsOnSpellGE
~~ Any VendorClosed BlockE BuPercentGE
~~ ChatMatch ItemCountLE CellE DistToRteGE
~~ MainSlotsLE ItemCountGE IntoPortal Expr
~~ SecsInStateGE MobsInDist_Name ExitPortal ChatCapture
~~
~~ All recognized ACTION (DO:) operation keywords:
~~ None EmbedNav ChatExpr SetOpt
~~ SetState CallState SetWatchdog CreateView
~~ Chat Return ClearWatchdog DestroyView
~~ DoAll DoExpr GetOpt DestroyAllViews
~~
~~ All recognized NAV types:
~~ circular follow
~~ linear once
~~
~~ All recognized NAV NODE types:
~~ flw vnd
~~ pnt ptl
~~ rcl tlk
~~ pau chk
~~ cht jmp
~~ prt (deprecated in VTank)
~~ }
~~ /ub mexec setvar[navNumber,VILKETNUMMER]
STATE: {combat} ~~ {
IF: Always
DO: Chat {/vt opt set enablecombat true}
IF: SecsInStateGE 60
DO: SetState {ring_fail}
IF: NoMobsInDist 5
DO: SetState {hunt}
~~ }
STATE: {death} ~~ {
IF: Always
DO: Chat {/vt nav load death_pause}
IF: Always
DO: Chat {/vt opt set enablenav true}
IF: NavEmpty
DO: SetState {navbore}
~~ }
STATE: {hunt} ~~ {
IF: Always
DO: Chat {/vt opt set enablecombat false}
IF: Expr {getvar[lootTime] == 0}
DO: DoExpr {setvar[lootTime, 21600]}
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: Death
DO: DoAll
Chat {/a I died! But I will comeback!}
SetState {death}
IF: All
ItemCountLE 100 {Prismatic Taper}
NoMobsInDist 5
DO: DoAll
Chat {/a Out of tapers! Recomping.}
SetState {recomp}
IF: MainSlotsLE 4
DO: DoAll
Chat {/a Out of inventory slots! Recomping.}
SetState {recomp}
IF: All
Expr {getvar[serviceCheckInterval] > 0}
Expr {stopwatchelapsedseconds[getvar[serviceClock]]>=getvar[serviceCheckInterval]}
NoMobsInDist 5
DO: SetState {service_quest_refresh}
IF: Always
DO: SetWatchdog 3 120 {navbore}
IF: DistToRteGE 1000
DO: SetState {navbore}
IF: All
Expr {setvar[nearPortal, wobjectfindnearestbyobjectclass[14]]}
Expr {istrue[getvar[nearPortal]]}
Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[nearPortal]]]<=4}
Not Expr {wobjectgetname[getvar[nearPortal]]==Singularity Caul}
DO: DoAll
ChatExpr {\/me is to close to +wobjectgetname[getvar[nearPortal]]}
ChatExpr {\/me at +coordinatetostring[getplayercoordinates[]]}
IF: All
Any
Expr {getvar[mobsClose] == 0}
Expr {getvar[mobsClose] == 1}
MobsInDist_Name 1 6 {}
DO: SetState {combat}
IF: All
Expr {getvar[mobsClose] == 2}
MobsInDist_Name 2 6 {}
DO: SetState {combat}
IF: All
Expr {stopwatchelapsedseconds[getvar[lootclock]]>getvar[lootTime]}
DO: DoAll
Chat {/vt opt set enablecombat true}
SetState {loot}
IF: All
Expr {setvar[portal, wobjectfindnearestbyobjectclass[14]]}
Expr {istrue[getvar[portal]]}
Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[portal]]] <= 8}
Not Expr {wobjectgetname[getvar[portal]]==Singularity Caul}
Not Expr {wobjectgetname[getvar[portal]]#Destroyed.*}
Expr {wobjectisvalid[getvar[portal]]}
Expr {setvar[portalHeading, getheadingto[getvar[portal]]]}
Expr {setvar[playerHeading, getheading[wobjectgetplayer[]]]}
Expr {setvar[relativeAngle, abs[getvar[portalHeading] - getvar[playerHeading]]]}
Expr {setvar[relativeAngle, iif[getvar[relativeAngle] > 180, 360 - getvar[relativeAngle], getvar[relativeAngle]]]}
Expr {setvar[turnDirection, iif[randint[0,2] == 0, -90, 90]]}
Expr {getvar[relativeAngle] <= 11.25}
Expr {setvar[newHeading, abs[getvar[playerHeading] + getvar[turnDirection]]]}
DO: DoAll
Chat {/vt opt set enablenav false}
Chat {/vt opt set enablecombat false}
SetState {avoid_portal}
~~ }
STATE: {loot_rare} ~~ {
IF: Always
DO: DoAll
Chat {/vt opt set enablelooting true}
Chat {/vt opt set enablenav false}
IF: SecsInStateGE 30
DO: DoAll
Chat {/vt opt set enablelooting false}
Chat {/vt opt set enablenav true}
SetState {hunt}
~~ }
STATE: {Default} ~~ {
IF: Not Expr {testvar[portalAvoidAngle]}
DO: DoExpr {setvar[portalAvoidAngle, 11.25]}
IF: Not Expr {testvar[augInnateStrengthTarget]}
DO: DoExpr {setvar[augInnateStrengthTarget, 0]}
IF: Not Expr {testvar[augInnateEnduranceTarget]}
DO: DoExpr {setvar[augInnateEnduranceTarget, 0]}
IF: Not Expr {testvar[augInnateCoordinationTarget]}
DO: DoExpr {setvar[augInnateCoordinationTarget, 0]}
IF: Not Expr {testvar[augInnateQuicknessTarget]}
DO: DoExpr {setvar[augInnateQuicknessTarget, 0]}
IF: Not Expr {testvar[augInnateFocusTarget]}
DO: DoExpr {setvar[augInnateFocusTarget, 0]}
IF: Not Expr {testvar[augInnateSelfTarget]}
DO: DoExpr {setvar[augInnateSelfTarget, 0]}
IF: Not Expr {testvar[augResistBluntTarget]}
DO: DoExpr {setvar[augResistBluntTarget, 0]}
IF: Not Expr {testvar[augResistSlashTarget]}
DO: DoExpr {setvar[augResistSlashTarget, 0]}
IF: Not Expr {testvar[augResistPierceTarget]}
DO: DoExpr {setvar[augResistPierceTarget, 0]}
IF: Not Expr {testvar[augResistLightningTarget]}
DO: DoExpr {setvar[augResistLightningTarget, 0]}
IF: Not Expr {testvar[augResistFireTarget]}
DO: DoExpr {setvar[augResistFireTarget, 0]}
IF: Not Expr {testvar[augResistFrostTarget]}
DO: DoExpr {setvar[augResistFrostTarget, 0]}
IF: Not Expr {testvar[augResistAcidTarget]}
DO: DoExpr {setvar[augResistAcidTarget, 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 autocram true}
ChatExpr {\/vt nav load bore_circuit+getvar[navNumber]}
Chat {/vt opt set enablenav true}
Chat {/vt opt set buffprofile_prots 2}
Chat {/vt opt set buffprofile_banes 5}
Chat {/vt opt set enablelooting false}
Chat {/vt opt set navpriorityboost false}
Chat {/vt opt set lootpriorityboost true}
Chat {/vt opt set lootonlyrarecorpses true}
DoExpr {setvar[lootclock,stopwatchcreate[]]}
DoExpr {stopwatchstart[getvar[lootclock]]}
SetState {service_quest_refresh}
~~ }
STATE: {service_quest_refresh} ~~ {
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} ~~ {
IF: Always
DO: DoAll
DoExpr {setvar[pendingAugments,0]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[230]<5,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[229]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[297]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[296]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[295]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[294]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[328]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[231]<3,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[232]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[234]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[237]<2,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[238]<5,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augInnateStrengthTarget]>0,iif[getcharintprop[217]<10,iif[getcharintprop[218]<getvar[augInnateStrengthTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augInnateEnduranceTarget]>0,iif[getcharintprop[217]<10,iif[getcharintprop[219]<getvar[augInnateEnduranceTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augInnateCoordinationTarget]>0,iif[getcharintprop[217]<10,iif[getcharintprop[220]<getvar[augInnateCoordinationTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augInnateQuicknessTarget]>0,iif[getcharintprop[217]<10,iif[getcharintprop[221]<getvar[augInnateQuicknessTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augInnateFocusTarget]>0,iif[getcharintprop[217]<10,iif[getcharintprop[222]<getvar[augInnateFocusTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augInnateSelfTarget]>0,iif[getcharintprop[217]<10,iif[getcharintprop[223]<getvar[augInnateSelfTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augResistBluntTarget]>0,iif[getcharintprop[239]<2,iif[getcharintprop[242]<getvar[augResistBluntTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augResistSlashTarget]>0,iif[getcharintprop[239]<2,iif[getcharintprop[240]<getvar[augResistSlashTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augResistPierceTarget]>0,iif[getcharintprop[239]<2,iif[getcharintprop[241]<getvar[augResistPierceTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augResistLightningTarget]>0,iif[getcharintprop[239]<2,iif[getcharintprop[246]<getvar[augResistLightningTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augResistFireTarget]>0,iif[getcharintprop[239]<2,iif[getcharintprop[244]<getvar[augResistFireTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augResistFrostTarget]>0,iif[getcharintprop[239]<2,iif[getcharintprop[245]<getvar[augResistFrostTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getvar[augResistAcidTarget]>0,iif[getcharintprop[239]<2,iif[getcharintprop[243]<getvar[augResistAcidTarget],1,getvar[pendingAugments]],getvar[pendingAugments]],getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[233]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[309]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[310]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[298]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[299]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[235]<4,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[236]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[226]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[225]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[227]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[228]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[224]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[300]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[302]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[301]<1,1,getvar[pendingAugments]]]}
DoExpr {setvar[pendingAugments, iif[getcharintprop[326]<1,1,getvar[pendingAugments]]]}
SetState {service_decide}
~~ }
STATE: {service_decide} ~~ {
IF: All
Expr {getqueststatus[`stipendtimer_0812`]==1}
DO: SetState {service_stipend}
IF: All
ItemCountGE 1 {Blank Augmentation Gem}
Expr {getvar[pendingAugments]==1}
DO: SetState {service_apply_augment}
IF: All
Expr {getqueststatus[`augmentationblankgemacquired`]==1}
Expr {getvar[pendingAugments]==1}
DO: SetState {service_bella_start}
IF: Always
DO: DoAll
DoExpr {setvar[serviceClock,stopwatchcreate[]]}
DoExpr {stopwatchstart[getvar[serviceClock]]}
SetState {hunt}
~~ }
STATE: {service_stipend} ~~ {
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 {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} ~~ {
IF: Death
DO: SetState {death}
IF: ExitPortal
DO: SetState {service_bella_mp_primary}
IF: Always
DO: Chat {/mp}
IF: SecsInStateGE 120
DO: SetState {service_reset_main}
~~ }
STATE: {service_bella_mp_primary} ~~ {
IF: Death
DO: SetState {death}
IF: Always
DO: DoAll
Chat {/vt nav load mp_primary}
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: ExitPortal
DO: DoAll
Chat {/vt nav load jaw_1}
SetState {service_bella_jaw_run}
IF: SecsInStateGE 300
DO: SetState {service_reset_main}
~~ }
STATE: {service_bella_jaw_run} ~~ {
IF: Death
DO: SetState {death}
IF: NavEmpty
DO: DoAll
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: SecsInStateGE 300
DO: SetState {service_reset_main}
~~ }
STATE: {service_bella_jaw_hunt} ~~ {
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 nav load to_fiun}
IF: SecsInStateGE 1200
DO: SetState {service_reset_main}
~~ }
STATE: {service_bella_turn_in_jaw} ~~ {
IF: Death
DO: SetState {death}
IF: ChatMatch {^Fiun Rehlyun.*}
DO: DoAll
Chat {/mp}
SetState {service_bella_mp_trans}
IF: SecsInStateGE 300
DO: SetState {service_reset_main}
~~ }
STATE: {service_bella_mp_trans} ~~ {
IF: Death
DO: SetState {death}
IF: ExitPortal
DO: DoAll
Chat {/vt nav load mp_secondary}
SetState {service_bella_mp_secondary}
IF: SecsInStateGE 120
DO: SetState {service_reset_main}
~~ }
STATE: {service_bella_mp_secondary} ~~ {
IF: Death
DO: SetState {death}
IF: ExitPortal
DO: DoAll
Chat {/vt opt set enablecombat true}
Chat {/vt nav load to_bella}
SetState {service_bella_kill_bella}
IF: SecsInStateGE 300
DO: SetState {service_reset_main}
~~ }
STATE: {service_bella_kill_bella} ~~ {
IF: Death
DO: SetState {death}
IF: ItemCountGE 1 {Blank Augmentation Gem}
DO: DoAll
Chat {/vt opt set enablelooting false}
Chat {/vt opt set enablecombat false}
SetState {service_bella_escape}
IF: SecsInStateGE 300
DO: SetState {service_reset_main}
~~ }
STATE: {service_bella_escape} ~~ {
IF: Death
DO: SetState {death}
IF: Always
DO: DoAll
Chat {/vt opt set enablelooting false}
Chat {/vt opt set enablecombat false}
IF: Always
DO: SetWatchdog 3 120 {service_reset_main}
IF: SecsInStateGE 1
DO: ChatExpr {\/ub setmotion forward 1}
IF: SecsInStateGE 4
DO: ChatExpr {\/ub setmotion forward 0}
IF: SecsInStateGE 6
DO: Chat {/vt opt set enablecombat false}
IF: SecsInStateGE 7
DO: Chat {/ah}
IF: SecsInStateGE 17
DO: SetState {service_apply_augment}
~~ }
STATE: {service_apply_augment} ~~ {
IF: Death
DO: SetState {death}
IF: ItemCountLE 0 {Blank Augmentation Gem}
DO: SetState {service_reset_main}
IF: Always
DO: DoAll
DoExpr {clearvar[augmentHub]}
DoExpr {clearvar[augmentHubLoaded]}
DoExpr {clearvar[augmentTargetLoaded]}
DoExpr {setvar[augmentStep,0]}
IF: Expr {getcharintprop[230]<5}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_husoon`]}
DoExpr {setvar[augmentItem,`Might of the Seventh Mule`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[229]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_dumidabintruminre`]}
DoExpr {setvar[augmentItem,`Shadow of the Seventh Mule`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[297]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_rapheldetante`]}
DoExpr {setvar[augmentItem,`Infused War Magic`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[296]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_akemifei`]}
DoExpr {setvar[augmentItem,`Infused Life Magic`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[295]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_ganfo`]}
DoExpr {setvar[augmentItem,`Infused Item Magic`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[294]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_gustuvlansdown`]}
DoExpr {setvar[augmentItem,`Infused Creature Magic`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[328]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_morathe`]}
DoExpr {setvar[augmentItem,`Infused Void Magic`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[231]<3}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_rohulabintludun`]}
DoExpr {setvar[augmentItem,`Clutch of the Miser`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[232]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_erikfestus`]}
DoExpr {setvar[augmentItem,`Enduring Enchantment`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[234]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_rickarddumalia`]}
DoExpr {setvar[augmentItem,`Quick Learner`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[237]<2}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_alisondulane`]}
DoExpr {setvar[augmentItem,`Innate Renewal`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[238]<5}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_nawamaraujio`]}
DoExpr {setvar[augmentItem,`Archmage's Endurance`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augInnateStrengthTarget]>0}
Expr {getcharintprop[217]<10}
Expr {getcharintprop[218]<getvar[augInnateStrengthTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_fiunluunere`]}
DoExpr {setvar[augmentItem,`Reinforcement of the Lugians`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augInnateEnduranceTarget]>0}
Expr {getcharintprop[217]<10}
Expr {getcharintprop[219]<getvar[augInnateEnduranceTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_fiunruun`]}
DoExpr {setvar[augmentItem,`Bleeargh's Fortitude`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augInnateCoordinationTarget]>0}
Expr {getcharintprop[217]<10}
Expr {getcharintprop[220]<getvar[augInnateCoordinationTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_fiunbayaas`]}
DoExpr {setvar[augmentItem,`Oswald's Enhancement`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augInnateQuicknessTarget]>0}
Expr {getcharintprop[217]<10}
Expr {getcharintprop[221]<getvar[augInnateQuicknessTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_fiunriish`]}
DoExpr {setvar[augmentItem,`Siraluun's Blessing`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augInnateFocusTarget]>0}
Expr {getcharintprop[217]<10}
Expr {getcharintprop[222]<getvar[augInnateFocusTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_fiunvasherr`]}
DoExpr {setvar[augmentItem,`Enduring Calm`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augInnateSelfTarget]>0}
Expr {getcharintprop[217]<10}
Expr {getcharintprop[223]<getvar[augInnateSelfTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_fiunnoress`]}
DoExpr {setvar[augmentItem,`Steadfast Will`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augResistBluntTarget]>0}
Expr {getcharintprop[239]<2}
Expr {getcharintprop[242]<getvar[augResistBluntTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_nawamaradia`]}
DoExpr {setvar[augmentItem,`Enhancement of the Mace Turner`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augResistSlashTarget]>0}
Expr {getcharintprop[239]<2}
Expr {getcharintprop[240]<getvar[augResistSlashTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_ilinwis`]}
DoExpr {setvar[augmentItem,`Enhancement of the Blade Turner`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augResistPierceTarget]>0}
Expr {getcharintprop[239]<2}
Expr {getcharintprop[241]<getvar[augResistPierceTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_kyujorujen`]}
DoExpr {setvar[augmentItem,`Enhancement of the Arrow Turner`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augResistLightningTarget]>0}
Expr {getcharintprop[239]<2}
Expr {getcharintprop[246]<getvar[augResistLightningTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_enliyuo`]}
DoExpr {setvar[augmentItem,`Storm's Enhancement`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augResistFireTarget]>0}
Expr {getcharintprop[239]<2}
Expr {getcharintprop[244]<getvar[augResistFireTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_rikshenri`]}
DoExpr {setvar[augmentItem,`Fiery Enhancement`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augResistFrostTarget]>0}
Expr {getcharintprop[239]<2}
Expr {getcharintprop[245]<getvar[augResistFrostTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_lubao`]}
DoExpr {setvar[augmentItem,`Icy Enhancement`]}
SetState {service_apply_augment_nav}
IF: All
Expr {getvar[augResistAcidTarget]>0}
Expr {getcharintprop[239]<2}
Expr {getcharintprop[243]<getvar[augResistAcidTarget]}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_shujiomilao`]}
DoExpr {setvar[augmentItem,`Caustic Enhancement`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[233]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_piersantilinante`]}
DoExpr {setvar[augmentItem,`Critical Protection`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[309]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_neelanashua`]}
DoExpr {setvar[augmentItem,`Frenzy of the Slayer`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[310]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_emilyyarow`]}
DoExpr {setvar[augmentItem,`Iron Skin of the Invincible`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[298]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_anframmellow`]}
DoExpr {setvar[augmentItem,`Eye of the Remorseless`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[299]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_alishiabintaldan`]}
DoExpr {setvar[augmentItem,`Hand of the Remorseless`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[235]<4}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_kriscennis`]}
DoExpr {setvar[augmentItem,`Ciandra's Fortune`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[236]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_lug`]}
DoExpr {setvar[augmentItem,`Charmed Smith`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[226]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_joshunfelden`]}
DoExpr {setvar[augmentItem,`Jibril's Essence`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[225]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_briennecarlus`]}
DoExpr {setvar[augmentItem,`Yoshi's Essence`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[227]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_burrellsammrun`]}
DoExpr {setvar[augmentItem,`Celdiseth's Essence`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[228]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_lenorturk`]}
DoExpr {setvar[augmentItem,`Koga's Essence`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[224]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_robertcrow`]}
DoExpr {setvar[augmentItem,`Ciandra's Essence`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[300]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_carlitogallo`]}
DoExpr {setvar[augmentItem,`Master of the Steel Circle`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[302]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_rahinabintzalanis`]}
DoExpr {setvar[augmentItem,`Master of the Five Fold Path`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[301]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_kilaf`]}
DoExpr {setvar[augmentItem,`Master of the Focused Eye`]}
SetState {service_apply_augment_nav}
IF: Expr {getcharintprop[326]<1}
DO: DoAll
DoExpr {setvar[augmentNav,`nav_ariannatheadept`]}
DoExpr {setvar[augmentItem,`Jack of All Trades`]}
SetState {service_apply_augment_nav}
IF: Always
DO: SetState {service_reset_main}
~~ }
STATE: {service_apply_augment_nav} ~~ {
IF: Death
DO: SetState {death}
IF: Not Expr {testvar[augmentStep]}
DO: DoExpr {setvar[augmentStep,0]}
IF: All
Expr {getvar[augmentStep]==0}
Any
Expr {getvar[augmentNav]==`nav_husoon`}
Expr {getvar[augmentNav]==`nav_dumidabintruminre`}
Expr {getvar[augmentNav]==`nav_rahinabintzalanis`}
Expr {getvar[augmentNav]==`nav_kilaf`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_zaikhal`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Any
Expr {getvar[augmentNav]==`nav_rapheldetante`}
Expr {getvar[augmentNav]==`nav_rickarddumalia`}
Expr {getvar[augmentNav]==`nav_carlitogallo`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_silyun`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Any
Expr {getvar[augmentNav]==`nav_akemifei`}
Expr {getvar[augmentNav]==`nav_ganfo`}
Expr {getvar[augmentNav]==`nav_nawamaradia`}
Expr {getvar[augmentNav]==`nav_ilinwis`}
Expr {getvar[augmentNav]==`nav_kyujorujen`}
Expr {getvar[augmentNav]==`nav_enliyuo`}
Expr {getvar[augmentNav]==`nav_rikshenri`}
Expr {getvar[augmentNav]==`nav_lubao`}
Expr {getvar[augmentNav]==`nav_shujiomilao`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_hebianto`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Any
Expr {getvar[augmentNav]==`nav_gustuvlansdown`}
Expr {getvar[augmentNav]==`nav_emilyyarow`}
Expr {getvar[augmentNav]==`nav_kriscennis`}
Expr {getvar[augmentNav]==`nav_joshunfelden`}
Expr {getvar[augmentNav]==`nav_briennecarlus`}
Expr {getvar[augmentNav]==`nav_burrellsammrun`}
Expr {getvar[augmentNav]==`nav_lenorturk`}
Expr {getvar[augmentNav]==`nav_robertcrow`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_cragstone`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Any
Expr {getvar[augmentNav]==`nav_rohulabintludun`}
Expr {getvar[augmentNav]==`nav_erikfestus`}
Expr {getvar[augmentNav]==`nav_anframmellow`}
Expr {getvar[augmentNav]==`nav_alishiabintaldan`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_ab`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Any
Expr {getvar[augmentNav]==`nav_alisondulane`}
Expr {getvar[augmentNav]==`nav_neelanashua`}
Expr {getvar[augmentNav]==`nav_ariannatheadept`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_bandit`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Any
Expr {getvar[augmentNav]==`nav_fiunluunere`}
Expr {getvar[augmentNav]==`nav_fiunruun`}
Expr {getvar[augmentNav]==`nav_fiunbayaas`}
Expr {getvar[augmentNav]==`nav_fiunriish`}
Expr {getvar[augmentNav]==`nav_fiunvasherr`}
Expr {getvar[augmentNav]==`nav_fiunnoress`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_fiun`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Expr {getvar[augmentNav]==`nav_piersantilinante`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_sanamar`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Expr {getvar[augmentNav]==`nav_lug`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_oolutangasrefuge`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Expr {getvar[augmentNav]==`nav_nawamaraujio`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_mayoi`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==0}
Expr {getvar[augmentNav]==`nav_morathe`}
DO: DoAll
DoExpr {setvar[augmentHub,`nav_candeth`]}
DoExpr {setvar[augmentStep,1]}
IF: All
Expr {getvar[augmentStep]==1}
Expr {testvar[augmentHub]}
Not Expr {testvar[augmentHubLoaded]}
DO: DoAll
Chat {/vt opt set enablecombat false}
Chat {/vt opt set enablelooting false}
Chat {/vt opt set enablebuffing true}
DoExpr {touchvar[augmentHubLoaded]}
ChatExpr {\/vt nav load +getvar[augmentHub]}
Chat {/vt opt set enablenav true}
IF: All
Expr {getvar[augmentStep]==1}
Expr {testvar[augmentHubLoaded]}
NavEmpty
SecsInStateGE 2
DO: DoExpr {setvar[augmentStep,2]}
IF: All
Expr {getvar[augmentStep]==2}
Not Expr {testvar[augmentTargetLoaded]}
DO: DoAll
DoExpr {touchvar[augmentTargetLoaded]}
ChatExpr {\/vt nav load +getvar[augmentNav]}
Chat {/vt opt set enablenav true}
DoExpr {setvar[augmentStep,3]}
IF: All
Expr {getvar[augmentStep]==3}
Expr {testvar[augmentTargetLoaded]}
NavEmpty
SecsInStateGE 2
DO: SetState {service_use_augment}
IF: Always
DO: SetWatchdog 3 600 {service_reset_main}
~~ }
STATE: {service_use_augment} ~~ {
IF: Death
DO: SetState {death}
IF: Not Expr {testvar[augmentItem]}
DO: SetState {service_reset_main}
IF: Always
DO: SetWatchdog 3 120 {service_reset_main}
IF: SecsInStateGE 3
DO: Chat {/ub prepclick yes 10}
IF: SecsInStateGE 7
DO: ChatExpr {\/ub use +getvar[augmentItem]}
IF: SecsInStateGE 15
DO: SetState {service_reset_main}
~~ }
STATE: {service_reset_main} ~~ {
IF: Always
DO: DoAll
DoExpr {clearvar[questsRequested]}
DoExpr {clearvar[stipendNavLoaded]}
DoExpr {clearvar[augmentNav]}
DoExpr {clearvar[augmentHub]}
DoExpr {clearvar[augmentHubLoaded]}
DoExpr {clearvar[augmentTargetLoaded]}
DoExpr {clearvar[augmentStep]}
DoExpr {clearvar[augmentItem]}
DoExpr {setvar[serviceClock,stopwatchcreate[]]}
DoExpr {stopwatchstart[getvar[serviceClock]]}
SetState {Default}
~~ }
STATE: {avoid_portal} ~~ {
IF: SecsInStateGE 1
DO: ChatExpr {\/me portalHeading \= +getvar[portalHeading]}
IF: SecsInStateGE 2
DO: ChatExpr {\/me playerHeading \= +getvar[playerHeading]}
IF: SecsInStateGE 3
DO: ChatExpr {\/me relativeAngle \= +getvar[relativeAngle]}
IF: SecsInStateGE 4
DO: ChatExpr {\/me Portal detected ahead\! Avoiding now\!}
IF: SecsInStateGE 5
DO: ChatExpr {\/me is too close to +wobjectgetname[wobjectfindnearestbyobjectclass[14]]}
IF: SecsInStateGE 6
DO: ChatExpr {\/me at +coordinatetostring[getplayercoordinates[]]}
IF: SecsInStateGE 7
DO: ChatExpr {\/ub face +getvar[newHeading]}
IF: SecsInStateGE 9
DO: ChatExpr {\/ub setmotion forward 1}
IF: SecsInStateGE 11
DO: ChatExpr {\/ub setmotion forward 0}
IF: SecsInStateGE 12
DO: ChatExpr {\/ub face +getvar[playerHeading]}
IF: SecsInStateGE 14
DO: ChatExpr {\/ub setmotion forward 1}
IF: SecsInStateGE 16
DO: ChatExpr {\/ub setmotion forward 0}
IF: SecsInStateGE 17
DO: ChatExpr {\/mm nextwp}
IF: SecsInStateGE 18
DO: ChatExpr {\/vt opt set enablenav true}
IF: SecsInStateGE 19
DO: ChatExpr {\/vt setmetastate hunt}
~~ }
STATE: {navbore} ~~ {
IF: Always
DO: DoAll
Chat {/vt opt set enablecombat false}
Chat {/vt opt set lootonlyrarecorpses true}
IF: Always
DO: ChatExpr {\/vt nav load bore_route+getvar[navNumber]}
IF: Always
DO: Chat {/vt opt set enablebuffing true}
IF: Always
DO: SetWatchdog 3 300 {navbore}
IF: NavEmpty
DO: DoAll
ChatExpr {\/vt nav load bore_circuit+getvar[navNumber]}
SetState {hunt}
~~ }
STATE: {recomp} ~~ {
IF: NavEmpty
DO: SetState {navbore}
IF: Always
DO: SetWatchdog 3 300 {navbore}
IF: Always
DO: DoAll
Chat {/vt opt set enablecombat false}
Chat {/vt opt set enablebuffing false}
Chat {/vt nav load ah_rarecomp}
~~ }
STATE: {ring_fail} ~~ {
IF: Always
DO: DoAll
Chat {/vt opt set enablecombat false}
SetWatchdog 100 3 {hunt}
~~ }
STATE: {loot} ~~ {
IF: Always
DO: DoAll
Chat {/vt opt set enablelooting true}
Chat {/vt opt set lootonlyrarecorpses false}
Chat {/vt opt set lootpriorityboost false}
IF: SecsInStateGE 300
DO: DoAll
Chat {/vt opt set lootonlyrarecorpses true}
Chat {/vt opt set lootpriorityboost true}
Chat {/vt opt set enablelooting false}
DoExpr {setvar[lootclock,stopwatchcreate[]]}
DoExpr {stopwatchstart[getvar[lootclock]]}
SetState {hunt}
IF: All
Expr {setvar[portal, wobjectfindnearestbyobjectclass[14]]}
Expr {istrue[getvar[portal]]}
Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[portal]]] <= 8}
Not Expr {wobjectgetname[getvar[portal]]==Singularity Caul}
Not Expr {wobjectgetname[getvar[portal]]#Destroyed.*}
Expr {wobjectisvalid[getvar[portal]]}
Expr {setvar[portalHeading, getheadingto[getvar[portal]]]}
Expr {setvar[playerHeading, getheading[wobjectgetplayer[]]]}
Expr {setvar[relativeAngle, abs[getvar[portalHeading] - getvar[playerHeading]]]}
Expr {setvar[relativeAngle, iif[getvar[relativeAngle] > 180, 360 - getvar[relativeAngle], getvar[relativeAngle]]]}
Expr {setvar[turnDirection, iif[randint[0,2] == 0, -90, 90]]}
Expr {getvar[relativeAngle] <= 11.25}
Expr {setvar[newHeading, abs[getvar[playerHeading] + getvar[turnDirection]]]}
DO: DoAll
Chat {/vt opt set enablenav false}
Chat {/vt opt set lootonlyrarecorpses true}
Chat {/vt opt set lootpriorityboost true}
Chat {/vt opt set enablelooting false}
DoExpr {setvar[lootclock,stopwatchcreate[]]}
DoExpr {stopwatchstart[getvar[lootclock]]}
SetState {avoid_portal}
~~ }
~~========================= ONLY NAVS APPEAR BELOW THIS LINE =========================~~
NAV: nav0__stipend_nav once ~~ {
cht -101.597905190786 -96.6216093699137 2.08333134651184E-05 {/ah}
pnt 59.3590666453044 -28.7057823816935 0.0500208298365275
pnt 59.3771680514018 -28.7152192115784 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
pnt -101.605949529012 -96.519695186615 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}
~~ }

View file

@ -37,69 +37,22 @@
~~ prt (deprecated in VTank)
~~ }
~~ /ub mexec setvar[navNumber,VILKETNUMMER]
STATE: {combat} ~~ {
STATE: {Default} ~~ {
IF: Not Expr {testvar[navNumber]}
DO: DoExpr {setvar[navNumber, 1]}
IF: Not Expr {testvar[debugPortalRange]}
DO: DoExpr {setvar[debugPortalRange, 8]}
IF: Not Expr {testvar[debugAngle]}
DO: DoExpr {setvar[debugAngle, 20]}
IF: Always
DO: Chat {/vt opt set enablecombat true}
IF: SecsInStateGE 60
DO: SetState {ring_fail}
IF: NoMobsInDist 5
DO: SetState {hunt}
DO: DoAll
Chat {/vt opt set enablecombat false}
ChatExpr {\/vt nav load bore_circuit+getvar[navNumber]}
Chat {/vt opt set enablenav true}
Chat {/a [portal-debug] started}
SetState {watch_portal}
~~ }
STATE: {death} ~~ {
IF: Always
DO: Chat {/vt nav load death_pause}
IF: Always
DO: Chat {/vt opt set enablenav true}
IF: NavEmpty
DO: SetState {navbore}
~~ }
STATE: {hunt} ~~ {
IF: Always
DO: Chat {/vt opt set enablecombat false}
IF: Expr {getvar[lootTime] == 0}
DO: DoExpr {setvar[lootTime, 21600]}
IF: Death
DO: DoAll
Chat {/a I died! But I will comeback!}
SetState {death}
IF: All
ItemCountLE 100 {Prismatic Taper}
NoMobsInDist 5
DO: DoAll
Chat {/a Out of tapers! Recomping.}
SetState {recomp}
IF: MainSlotsLE 4
DO: DoAll
Chat {/a Out of inventory slots! Recomping.}
SetState {recomp}
IF: Always
DO: SetWatchdog 3 120 {navbore}
IF: DistToRteGE 1000
DO: SetState {navbore}
IF: All
Expr {setvar[nearPortal, wobjectfindnearestbyobjectclass[14]]}
Expr {istrue[getvar[nearPortal]]}
Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[nearPortal]]]<=4}
Not Expr {wobjectgetname[getvar[nearPortal]]==Singularity Caul}
DO: DoAll
ChatExpr {\/me is to close to +wobjectgetname[getvar[nearPortal]]}
ChatExpr {\/me at +coordinatetostring[getplayercoordinates[]]}
IF: All
Any
Expr {getvar[mobsClose] == 0}
Expr {getvar[mobsClose] == 1}
MobsInDist_Name 1 6 {}
DO: SetState {combat}
IF: All
Expr {getvar[mobsClose] == 2}
MobsInDist_Name 2 6 {}
DO: SetState {combat}
IF: All
Expr {stopwatchelapsedseconds[getvar[lootclock]]>getvar[lootTime]}
DO: DoAll
Chat {/vt opt set enablecombat true}
SetState {loot}
STATE: {watch_portal} ~~ {
IF: All
Expr {setvar[portal, wobjectfindnearestbyobjectclass[14]]}
Expr {istrue[getvar[portal]]}
@ -112,41 +65,16 @@ STATE: {hunt} ~~ {
Expr {setvar[relativeAngle, abs[getvar[portalHeading] - getvar[playerHeading]]]}
Expr {setvar[relativeAngle, iif[getvar[relativeAngle] > 180, 360 - getvar[relativeAngle], getvar[relativeAngle]]]}
Expr {setvar[turnDirection, iif[randint[0,2] == 0, -90, 90]]}
Expr {getvar[relativeAngle] <= 11.25}
Expr {getvar[relativeAngle] <= getvar[debugAngle]}
Expr {setvar[newHeading, abs[getvar[playerHeading] + getvar[turnDirection]]]}
DO: DoAll
Chat {/vt opt set enablenav false}
Chat {/vt opt set enablecombat false}
SetState {avoid_portal}
~~ }
STATE: {loot_rare} ~~ {
IF: SecsInStateGE 5
DO: SetState {watch_portal}
IF: Always
DO: DoAll
Chat {/vt opt set enablelooting true}
Chat {/vt opt set enablenav false}
IF: SecsInStateGE 30
DO: DoAll
Chat {/vt opt set enablelooting false}
Chat {/vt opt set enablenav true}
SetState {hunt}
~~ }
STATE: {Default} ~~ {
IF: Always
DO: DoAll
Chat {/ub opt set VTank.PatchExpressionEngine true}
Chat {/vt opt set autocram true}
ChatExpr {\/vt nav load bore_circuit+getvar[navNumber]}
Chat {/vt opt set enablenav true}
Chat {/vt opt set buffprofile_prots 2}
Chat {/vt opt set buffprofile_banes 5}
Chat {/vt opt set enablelooting false}
Chat {/vt opt set navpriorityboost false}
Chat {/vt opt set lootpriorityboost true}
Chat {/vt opt set lootonlyrarecorpses true}
DoExpr {setvar[lootclock,stopwatchcreate[]]}
DoExpr {stopwatchstart[getvar[lootclock]]}
SetState {hunt}
DO: SetWatchdog 1 120 {watch_portal}
~~ }
STATE: {avoid_portal} ~~ {
IF: SecsInStateGE 1
@ -178,74 +106,7 @@ STATE: {avoid_portal} ~~ {
IF: SecsInStateGE 18
DO: ChatExpr {\/vt opt set enablenav true}
IF: SecsInStateGE 19
DO: ChatExpr {\/vt setmetastate hunt}
~~ }
STATE: {navbore} ~~ {
IF: Always
DO: DoAll
Chat {/vt opt set enablecombat false}
IF: Always
DO: ChatExpr {\/vt nav load bore_route+getvar[navNumber]}
IF: Always
DO: Chat {/vt opt set enablebuffing true}
IF: Always
DO: SetWatchdog 3 300 {navbore}
IF: NavEmpty
DO: DoAll
ChatExpr {\/vt nav load bore_circuit+getvar[navNumber]}
SetState {hunt}
~~ }
STATE: {recomp} ~~ {
IF: NavEmpty
DO: SetState {navbore}
IF: Always
DO: SetWatchdog 3 300 {navbore}
IF: Always
DO: DoAll
Chat {/vt opt set enablecombat false}
Chat {/vt opt set enablebuffing false}
Chat {/vt nav load ah_rarecomp}
~~ }
STATE: {ring_fail} ~~ {
IF: Always
DO: DoAll
Chat {/vt opt set enablecombat false}
SetWatchdog 100 3 {hunt}
~~ }
STATE: {loot} ~~ {
IF: Always
DO: DoAll
Chat {/vt opt set enablelooting true}
Chat {/vt opt set lootonlyrarecorpses false}
Chat {/vt opt set lootpriorityboost false}
IF: SecsInStateGE 300
DO: DoAll
Chat {/vt opt set lootonlyrarecorpses true}
Chat {/vt opt set lootpriorityboost true}
Chat {/vt opt set enablelooting false}
DoExpr {setvar[lootclock,stopwatchcreate[]]}
DoExpr {stopwatchstart[getvar[lootclock]]}
SetState {hunt}
IF: All
Expr {setvar[portal, wobjectfindnearestbyobjectclass[14]]}
Expr {istrue[getvar[portal]]}
Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[portal]]] <= 8}
Not Expr {wobjectgetname[getvar[portal]]==Singularity Caul}
Not Expr {wobjectgetname[getvar[portal]]#Destroyed.*}
Expr {wobjectisvalid[getvar[portal]]}
Expr {setvar[portalHeading, getheadingto[getvar[portal]]]}
Expr {setvar[playerHeading, getheading[wobjectgetplayer[]]]}
Expr {setvar[relativeAngle, abs[getvar[portalHeading] - getvar[playerHeading]]]}
Expr {setvar[relativeAngle, iif[getvar[relativeAngle] > 180, 360 - getvar[relativeAngle], getvar[relativeAngle]]]}
Expr {setvar[turnDirection, iif[randint[0,2] == 0, -90, 90]]}
Expr {getvar[relativeAngle] <= 11.25}
Expr {setvar[newHeading, abs[getvar[playerHeading] + getvar[turnDirection]]]}
DO: DoAll
Chat {/vt opt set enablenav false}
Chat {/vt opt set lootonlyrarecorpses true}
Chat {/vt opt set lootpriorityboost true}
Chat {/vt opt set enablelooting false}
DoExpr {setvar[lootclock,stopwatchcreate[]]}
DoExpr {stopwatchstart[getvar[lootclock]]}
SetState {avoid_portal}
DO: ChatExpr {\/vt setmetastate watch_portal}
IF: Always
DO: SetWatchdog 1 30 {watch_portal}
~~ }

186
af/bore_quest.af Normal file
View file

@ -0,0 +1,186 @@
~~
~~ Bore Dungeon Quest Meta
~~ Navigates to the Bore dungeon, fights through to the boss,
~~ loots the quest item, returns to town to turn in.
~~ Includes death recovery.
~~
STATE: {Default}
IF: Death
DO: SetState {Death}
IF: ItemCountGE 1 {Bore Trophy}
DO: SetState {TurnIn}
IF: ItemCountLE 50 {Prismatic Taper}
DO: DoAll
Chat {Running low on tapers, restocking.}
SetState {Restock}
IF: Always
DO: DoAll
EmbedNav navToBore {Navigate to Bore dungeon entrance}
SetWatchdog 10.0 180.0 {Stuck}
STATE: {EnterDungeon}
IF: Death
DO: SetState {Death}
IF: IntoPortal
DO: SetState {InsideDungeon}
IF: SecsInStateGE 30
DO: SetState {Default}
STATE: {InsideDungeon}
IF: Death
DO: SetState {Death}
IF: ExitPortal
DO: DoAll
SetOpt {enablecombat} {true}
SetOpt {enablelooting} {true}
EmbedNav navDungeonRoute {Run through dungeon to boss}
SetWatchdog 10.0 120.0 {Stuck}
STATE: {BossRoom}
IF: Death
DO: SetState {Death}
IF: MobsInDist_Name 1 30.0 {Bore Boss}
DO: DoAll
SetOpt {enablecombat} {true}
SetState {Fighting}
IF: All
NavEmpty
NoMobsInDist 25.0
DO: SetState {LootBoss}
IF: Always
DO: None
STATE: {Fighting}
IF: Death
DO: SetState {Death}
IF: NoMobsInDist 25.0
DO: SetState {LootBoss}
IF: SecsInStateGE 300
DO: SetState {BossRoom}
STATE: {LootBoss}
IF: Death
DO: SetState {Death}
IF: ItemCountGE 1 {Bore Trophy}
DO: SetState {ExitDungeon}
IF: SecsInStateGE 30
DO: DoAll
Chat {No trophy found, exiting anyway.}
SetState {ExitDungeon}
IF: Always
DO: DoAll
SetOpt {enablelooting} {true}
None
STATE: {ExitDungeon}
IF: Death
DO: SetState {Death}
IF: All
NavEmpty
DO: DoAll
SetOpt {enablecombat} {false}
SetOpt {enablelooting} {false}
SetState {TurnIn}
IF: Always
DO: DoAll
EmbedNav navExitDungeon {Exit the dungeon}
SetWatchdog 10.0 120.0 {Stuck}
STATE: {TurnIn}
IF: Death
DO: SetState {Death}
IF: All
NavEmpty
DO: DoAll
Chat {/ub givep Bore Trophy to Bore Quest NPC}
Chat {/ub prepclick yes 3}
SetState {WaitTurnIn}
IF: Always
DO: DoAll
EmbedNav navToNPC {Go to turn-in NPC}
SetWatchdog 10.0 120.0 {Stuck}
STATE: {WaitTurnIn}
IF: ChatMatch {^Bore Quest NPC tells you,}
DO: SetState {TurnInComplete}
IF: ChatCapture {You have solved this quest too recently!} {}
DO: SetState {QuestCooldown}
IF: SecsInStateGE 15
DO: SetState {TurnIn}
STATE: {TurnInComplete}
IF: Always
DO: DoAll
Chat {Quest turn-in complete! Restarting.}
SetState {Default}
STATE: {QuestCooldown}
IF: Always
DO: DoAll
Chat {Quest on cooldown, waiting...}
SetState {Default}
STATE: {Restock}
IF: Death
DO: SetState {Death}
IF: All
NavEmpty
VendorOpen
DO: SetState {Selling}
IF: Always
DO: DoAll
EmbedNav navRestock {Go to vendor to restock}
SetWatchdog 10.0 120.0 {Stuck}
STATE: {Selling}
IF: VendorClosed
DO: SetState {Default}
IF: SecsInStateGE 30
DO: SetState {Default}
STATE: {Stuck}
IF: Always
DO: DoAll
Chat {/ub face}
SetState {Default}
STATE: {Death}
IF: ExitPortal
DO: SetState {Default}
~~ ============================================================
~~ NAV ROUTES
~~ ============================================================
NAV: navToBore once
~~ Route from lifestone to Bore dungeon entrance
rcl 0.0 0.0 0.0 {Lifestone Recall}
pnt 0.0 0.0 0.0
pnt 0.0 0.0 0.0
ptl 0.0 0.0 0.0 0.0 0.0 0.0 14 {Bore Dungeon}
NAV: navDungeonRoute once
~~ Route through dungeon to boss room
pnt 0.0 0.0 0.0
pnt 0.0 0.0 0.0
pnt 0.0 0.0 0.0
pnt 0.0 0.0 0.0
NAV: navExitDungeon once
~~ Route from boss room back to exit portal
pnt 0.0 0.0 0.0
pnt 0.0 0.0 0.0
ptl 0.0 0.0 0.0 0.0 0.0 0.0 14 {Exit Portal}
NAV: navToNPC once
~~ Route to quest turn-in NPC
rcl 0.0 0.0 0.0 {Lifestone Recall}
pnt 0.0 0.0 0.0
tlk 0.0 0.0 0.0 0.0 0.0 0.0 37 {Bore Quest NPC}
NAV: navRestock once
~~ Route to vendor for restocking tapers
rcl 0.0 0.0 0.0 {Lifestone Recall}
pnt 0.0 0.0 0.0
vnd 0.0 0.0 0.0 00000000 {Vendor}

217
af/empyrean_facility.af Normal file
View file

@ -0,0 +1,217 @@
~~ {
~~ 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 getgamemonthname getminutesuntilnight getgameyear uisetvisible uiviewvisible uiviewexists getgvar touchgvar getpvar touchpvar setgvar cleargvar setpvar clearpvar testgvar clearallgvars testpvar clearallpvars dictgetitem dictcreate dicthaskey dictadditem dictkeys dictremovekey dictvalues dictclear dictsize dictcopy listgetitem listpop listcreate listcontains listremove listadd listindexof listremoveat listinsert listlastindexof listclear listcopy listcount listreverse
~~
~~ File auto-generated by metaf, a program created by Eskarina of Morningthaw/Coldeve.
~~ Get metaf here: https://github.com/JJEII/metaf/
~~
~~ All recognized structural designators:
~~ STATE: DO:
~~ IF: NAV:
~~
~~ All recognized CONDITION (IF:) operation keywords:
~~ Never NavEmpty MobsInDist_Priority Not
~~ Always Death NeedToBuff PSecsInStateGE
~~ All VendorOpen NoMobsInDist SecsOnSpellGE
~~ Any VendorClosed BlockE BuPercentGE
~~ ChatMatch ItemCountLE CellE DistToRteGE
~~ MainSlotsLE ItemCountGE IntoPortal Expr
~~ SecsInStateGE MobsInDist_Name ExitPortal ChatCapture
~~
~~ All recognized ACTION (DO:) operation keywords:
~~ None EmbedNav ChatExpr SetOpt
~~ SetState CallState SetWatchdog CreateView
~~ Chat Return ClearWatchdog DestroyView
~~ DoAll DoExpr GetOpt DestroyAllViews
~~
~~ All recognized NAV types:
~~ circular follow
~~ linear once
~~
~~ All recognized NAV NODE types:
~~ flw vnd
~~ pnt ptl
~~ rcl tlk
~~ pau chk
~~ cht jmp
~~ prt (deprecated in VTank)
~~ }
STATE: {Default} ~~ {
IF: Death
DO: SetState {death}
IF: Always
DO: DoAll
Chat {/ub opt set VTank.PatchExpressionEngine true}
SetOpt {enablecombat} {false}
SetOpt {enablenav} {true}
SetOpt {enablelooting} {false}
SetOpt {enablebuffing} {true}
SetOpt {attackdistance} {0.0125}
DoExpr {setvar[currentLevel,`upper`]}
DoExpr {setvar[currentRoom,`north`]}
DoExpr {setvar[roomsDone,0]}
Chat {/vt nav load nav_empyrean}
SetState {enter_dungeon}
~~ }
STATE: {enter_dungeon} ~~ {
IF: Death
DO: SetState {death}
IF: All
SecsInStateGE 3
NavEmpty
DO: DoAll
SetOpt {enablecombat} {true}
SetState {goto_room}
IF: Always
DO: DoAll
SetWatchdog 10 300 {stuck}
~~ }
STATE: {goto_room} ~~ {
IF: Death
DO: SetState {death}
IF: Always
DO: DoAll
ChatExpr {\/vt nav load emp_+getvar[currentLevel]+`_`+getvar[currentRoom]}
DoExpr {clearvar[navLoaded]}
SetState {arrive_room}
~~ }
STATE: {arrive_room} ~~ {
IF: Death
DO: SetState {death}
IF: All
Expr {testvar[navLoaded]}
NavEmpty
DO: DoAll
ClearWatchdog
SetState {kill_wisps}
IF: Always
DO: DoAll
DoExpr {touchvar[navLoaded]}
SetWatchdog 10 180 {stuck}
~~ }
STATE: {kill_wisps} ~~ {
IF: Death
DO: SetState {death}
IF: All
SecsInStateGE 5
NoMobsInDist 4
DO: SetState {use_stone}
IF: SecsInStateGE 300
DO: SetState {use_stone}
IF: Always
DO: DoAll
SetWatchdog 10 300 {stuck}
~~ }
STATE: {use_stone} ~~ {
IF: Death
DO: SetState {death}
IF: ChatMatch {A shiver moves across your body}
DO: DoAll
DoExpr {echo[`Room complete! (`+getvar[currentLevel]+` `+getvar[currentRoom]+`)`,1]}
SetState {next_room}
IF: ChatMatch {no change}
DO: DoAll
DoExpr {echo[`Room already done (`+getvar[currentLevel]+` `+getvar[currentRoom]+`)`,1]}
SetState {next_room}
IF: SecsInStateGE 5
DO: DoAll
Chat {/ub use Aligned Mana Stone}
SetState {use_stone}
IF: Always
DO: DoAll
Chat {/ub use Aligned Mana Stone}
~~ }
STATE: {next_room} ~~ {
IF: Death
DO: SetState {death}
IF: Expr {getvar[currentRoom]==`north`}
DO: DoAll
DoExpr {setvar[currentRoom,`east`]}
SetState {goto_room}
IF: Expr {getvar[currentRoom]==`east`}
DO: DoAll
DoExpr {setvar[currentRoom,`south`]}
SetState {goto_room}
IF: Expr {getvar[currentRoom]==`south`}
DO: DoAll
DoExpr {setvar[currentRoom,`west`]}
SetState {goto_room}
IF: Expr {getvar[currentRoom]==`west`}
DO: DoAll
DoExpr {setvar[currentRoom,`center`]}
SetState {goto_room}
IF: Expr {getvar[currentRoom]==`center`}
DO: SetState {use_stone_center}
~~ }
STATE: {use_stone_center} ~~ {
IF: Death
DO: SetState {death}
IF: ChatMatch {A shiver moves across your body}
DO: DoAll
DoExpr {echo[`Level complete! (`+getvar[currentLevel]+`)`,1]}
SetState {take_portal}
IF: ChatMatch {no change}
DO: DoAll
DoExpr {echo[`Level already done (`+getvar[currentLevel]+`)`,1]}
SetState {take_portal}
IF: SecsInStateGE 5
DO: DoAll
Chat {/ub use Aligned Mana Stone}
SetState {use_stone_center}
IF: Always
DO: DoAll
Chat {/ub use Aligned Mana Stone}
~~ }
STATE: {take_portal} ~~ {
IF: Death
DO: SetState {death}
IF: Expr {getvar[currentLevel]==`upper`}
DO: DoAll
DoExpr {setvar[currentLevel,`middle`]}
DoExpr {setvar[currentRoom,`north`]}
Chat {/ub use Empyrean Facility Middle Level}
SetState {portal_transition}
IF: Expr {getvar[currentLevel]==`middle`}
DO: DoAll
DoExpr {setvar[currentLevel,`lower`]}
DoExpr {setvar[currentRoom,`north`]}
Chat {/ub use Empyrean Facility Lower Level}
SetState {portal_transition}
IF: Expr {getvar[currentLevel]==`lower`}
DO: DoAll
DoExpr {echo[`All 3 aetheria slots unlocked!`,1]}
SetState {quest_done}
~~ }
STATE: {portal_transition} ~~ {
IF: Death
DO: SetState {death}
IF: ExitPortal
DO: DoAll
DoExpr {echo[`Arrived at `+getvar[currentLevel]+` level`,1]}
SetState {goto_room}
IF: SecsInStateGE 15
DO: SetState {take_portal}
~~ }
STATE: {quest_done} ~~ {
IF: Always
DO: DoAll
DoExpr {echo[`Empyrean Facility quest COMPLETE! All aetheria slots unlocked.`,1]}
Chat {/mp}
~~ }
STATE: {stuck} ~~ {
IF: Death
DO: SetState {death}
IF: Always
DO: DoAll
Chat {/ub face}
DoExpr {echo[`Stuck! Trying to recover...`,1]}
SetState {goto_room}
~~ }
STATE: {death} ~~ {
IF: ExitPortal
DO: DoAll
DoExpr {echo[`Died! Re-entering dungeon...`,1]}
Chat {/vt nav load nav_empyrean}
SetState {enter_dungeon}
~~ }

218
af/follower.af Normal file
View file

@ -0,0 +1,218 @@
~~ {
~~ 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 getgamemonthname getminutesuntilnight getgameyear uisetvisible uiviewvisible uiviewexists getgvar touchgvar getpvar touchpvar setgvar cleargvar setpvar clearpvar testgvar clearallgvars testpvar clearallpvars dictgetitem dictcreate dicthaskey dictadditem dictkeys dictremovekey dictvalues dictclear dictsize dictcopy listgetitem listpop listcreate listcontains listremove listadd listindexof listremoveat listinsert listlastindexof listclear listcopy listcount listreverse
~~
~~ File auto-generated by metaf, a program created by Eskarina of Morningthaw/Coldeve.
~~ Get metaf here: https://github.com/JJEII/metaf/
~~
~~ All recognized structural designators:
~~ STATE: DO:
~~ IF: NAV:
~~
~~ All recognized CONDITION (IF:) operation keywords:
~~ Never NavEmpty MobsInDist_Priority Not
~~ Always Death NeedToBuff PSecsInStateGE
~~ All VendorOpen NoMobsInDist SecsOnSpellGE
~~ Any VendorClosed BlockE BuPercentGE
~~ ChatMatch ItemCountLE CellE DistToRteGE
~~ MainSlotsLE ItemCountGE IntoPortal Expr
~~ SecsInStateGE MobsInDist_Name ExitPortal ChatCapture
~~
~~ All recognized ACTION (DO:) operation keywords:
~~ None EmbedNav ChatExpr SetOpt
~~ SetState CallState SetWatchdog CreateView
~~ Chat Return ClearWatchdog DestroyView
~~ DoAll DoExpr GetOpt DestroyAllViews
~~
~~ All recognized NAV types:
~~ circular follow
~~ linear once
~~
~~ All recognized NAV NODE types:
~~ flw vnd
~~ pnt ptl
~~ rcl tlk
~~ pau chk
~~ cht jmp
~~ prt (deprecated in VTank)
~~ }
~~ Follower Meta: Follows group leader, responds to chat commands, death recovery
STATE: {Default} ~~ {
IF: Always
DO: DoAll
Chat {/vt opt set enablecombat false}
Chat {/vt opt set enablenav false}
Chat {/vt opt set enablebuffing true}
Chat {/vt opt set enablelooting false}
DoExpr {setvar[leaderName,]}
DoExpr {setvar[deathCount, 0]}
SetState {idle}
~~ }
STATE: {idle} ~~ {
~~ Wait for leader assignment via chat command
IF: ChatMatch {.+tells you, "follow me"}
DO: DoAll
DoExpr {setvar[leaderName, getregexmatch[(.+) tells you, 1]]}
ChatExpr {\/t +getvar[leaderName]+, Following you now\!}
SetState {following}
IF: ChatMatch {.+tells you, "follow (.+)"}
DO: DoAll
DoExpr {setvar[leaderName, getregexmatch[.+tells you, "follow (.+)", 1]]}
ChatExpr {\/t +getvar[leaderName]+, Following you now\!}
SetState {following}
IF: Death
DO: SetState {death_recovery}
IF: NeedToBuff
DO: SetState {buffing}
IF: Always
DO: Chat {/vt opt set enablecombat false}
~~ }
STATE: {following} ~~ {
~~ Main follow state - follow the leader
IF: Always
DO: Chat {/vt opt set enablecombat false}
IF: Always
DO: Chat {/vt opt set enablenav false}
IF: Always
DO: ChatExpr {\/ub follow +getvar[leaderName]}
~~ Death handling
IF: Death
DO: DoAll
DoExpr {setvar[deathCount, getvar[deathCount] + 1]}
ChatExpr {\/t +getvar[leaderName]+, I died\! Death count: +cstr[getvar[deathCount]]+. Recovering...}
SetState {death_recovery}
~~ Chat command: buff
IF: ChatMatch {.+tells you, "buff"}
DO: DoAll
Chat {/vt opt set enablebuffing true}
SetState {buffing}
~~ Chat command: recall
IF: ChatMatch {.+tells you, "recall"}
DO: DoAll
ChatExpr {\/t +getvar[leaderName]+, Recalling now\!}
SetState {recalling}
~~ Chat command: stop
IF: ChatMatch {.+tells you, "stop"}
DO: DoAll
ChatExpr {\/t +getvar[leaderName]+, Stopping follow\.}
DoExpr {setvar[leaderName,]}
Chat {/ub follow off}
SetState {idle}
~~ Chat command: combat on
IF: ChatMatch {.+tells you, "combat on"}
DO: DoAll
Chat {/vt opt set enablecombat true}
ChatExpr {\/t +getvar[leaderName]+, Combat enabled\!}
~~ Chat command: combat off
IF: ChatMatch {.+tells you, "combat off"}
DO: DoAll
Chat {/vt opt set enablecombat false}
ChatExpr {\/t +getvar[leaderName]+, Combat disabled\!}
~~ Need to rebuff
IF: NeedToBuff
DO: DoAll
Chat {/ub follow off}
SetState {buffing}
~~ Watchdog - if stuck for too long, try to recover
IF: Always
DO: SetWatchdog 3 300 {stuck_recovery}
~~ }
STATE: {buffing} ~~ {
~~ Buff up then return to following
IF: Always
DO: DoAll
Chat {/vt opt set enablebuffing true}
Chat {/vt opt set enablecombat false}
IF: Death
DO: DoAll
DoExpr {setvar[deathCount, getvar[deathCount] + 1]}
SetState {death_recovery}
IF: All
Not NeedToBuff
SecsInStateGE 5
DO: DoAll
Chat {/vt opt set enablebuffing true}
SetState {rejoin_leader}
IF: SecsInStateGE 120
DO: DoAll
Chat {/vt opt set enablebuffing true}
SetState {rejoin_leader}
~~ }
STATE: {death_recovery} ~~ {
~~ Wait at lifestone after death, then rebuff and rejoin
IF: Always
DO: DoAll
Chat {/vt opt set enablecombat false}
Chat {/vt opt set enablenav false}
Chat {/vt opt set enablebuffing false}
~~ Wait a few seconds at lifestone before doing anything
IF: SecsInStateGE 10
DO: DoAll
Chat {/vt opt set enablebuffing true}
SetState {death_rebuff}
~~ }
STATE: {death_rebuff} ~~ {
~~ Rebuff after death before rejoining
IF: Always
DO: Chat {/vt opt set enablebuffing true}
IF: Death
DO: DoAll
DoExpr {setvar[deathCount, getvar[deathCount] + 1]}
SetState {death_recovery}
IF: All
Not NeedToBuff
SecsInStateGE 10
DO: SetState {rejoin_leader}
IF: SecsInStateGE 180
DO: SetState {rejoin_leader}
~~ }
STATE: {rejoin_leader} ~~ {
~~ Rejoin the leader after buffing or death recovery
IF: Expr {getvar[leaderName] == 0}
DO: SetState {idle}
IF: Expr {cstr[getvar[leaderName]] == cstr[]}
DO: SetState {idle}
IF: Always
DO: DoAll
ChatExpr {\/t +getvar[leaderName]+, Rejoining you now\!}
ChatExpr {\/ub follow +getvar[leaderName]}
SetState {following}
~~ }
STATE: {recalling} ~~ {
~~ Recall to lifestone
IF: Always
DO: DoAll
Chat {/ub follow off}
Chat {/vt opt set enablecombat false}
Chat {/vt opt set enablenav false}
IF: SecsInStateGE 2
DO: Chat {/lifestone}
IF: Death
DO: DoAll
DoExpr {setvar[deathCount, getvar[deathCount] + 1]}
SetState {death_recovery}
IF: SecsInStateGE 15
DO: DoAll
ChatExpr {\/t +getvar[leaderName]+, Recalled to lifestone\. Tell me to follow you when ready\.}
SetState {idle}
~~ }
STATE: {stuck_recovery} ~~ {
~~ Try to recover from being stuck
IF: Always
DO: DoAll
Chat {/ub follow off}
Chat {/vt opt set enablecombat false}
ChatExpr {\/t +getvar[leaderName]+, I appear to be stuck\. Trying to recover\.}
IF: SecsInStateGE 3
DO: Chat {/lifestone}
IF: Death
DO: DoAll
DoExpr {setvar[deathCount, getvar[deathCount] + 1]}
SetState {death_recovery}
IF: SecsInStateGE 15
DO: DoAll
Chat {/vt opt set enablebuffing true}
SetState {death_rebuff}
~~ }

220
af/hunting.af Normal file
View file

@ -0,0 +1,220 @@
~~ {
~~ Hunting Meta - Solo lifestone grinding with death recovery, restock, and stuck detection
~~
~~ File auto-generated by metaf, a program created by Eskarina of Morningthaw/Coldeve.
~~ Get metaf here: https://github.com/JJEII/metaf/
~~
~~ All recognized structural designators:
~~ STATE: DO:
~~ IF: NAV:
~~
~~ All recognized CONDITION (IF:) operation keywords:
~~ Never NavEmpty MobsInDist_Priority Not
~~ Always Death NeedToBuff PSecsInStateGE
~~ All VendorOpen NoMobsInDist SecsOnSpellGE
~~ Any VendorClosed BlockE BuPercentGE
~~ ChatMatch ItemCountLE CellE DistToRteGE
~~ MainSlotsLE ItemCountGE IntoPortal Expr
~~ SecsInStateGE MobsInDist_Name ExitPortal ChatCapture
~~
~~ All recognized ACTION (DO:) operation keywords:
~~ None EmbedNav ChatExpr SetOpt
~~ SetState CallState SetWatchdog CreateView
~~ Chat Return ClearWatchdog DestroyView
~~ DoAll DoExpr GetOpt DestroyAllViews
~~
~~ All recognized NAV types:
~~ circular follow
~~ linear once
~~
~~ All recognized NAV NODE types:
~~ flw vnd
~~ pnt ptl
~~ rcl tlk
~~ pau chk
~~ cht jmp
~~ prt (deprecated in VTank)
~~ }
STATE: {Default} ~~ {
IF: Always
DO: DoAll
Chat {/vt opt set enablebuffing true}
Chat {/vt opt set enablenav true}
Chat {/vt opt set enablecombat true}
Chat {/vt opt set enablelooting true}
Chat {/vt opt set navpriorityboost false}
Chat {/vt opt set lootpriorityboost true}
Chat {/vt nav load hunt_circuit}
SetState {Hunt}
~~ }
STATE: {Hunt} ~~ {
IF: Death
DO: SetState {Death}
IF: All
ItemCountLE 20 {Prismatic Taper}
NoMobsInDist 5
DO: DoAll
Chat {/a Low on tapers, heading to vendor.}
SetState {Restock}
IF: All
ItemCountLE 20 {Scarab}
NoMobsInDist 5
DO: DoAll
Chat {/a Low on scarabs, heading to vendor.}
SetState {Restock}
IF: MainSlotsLE 3
DO: DoAll
Chat {/a Inventory full, heading to vendor.}
SetState {Restock}
IF: NeedToBuff
DO: DoAll
Chat {/vt opt set enablenav false}
Chat {/vt opt set enablecombat false}
SetState {Buffing}
IF: Always
DO: SetWatchdog 3 120 {Stuck}
IF: DistToRteGE 500
DO: SetState {Stuck}
IF: MobsInDist_Name 1 12 {}
DO: DoAll
Chat {/vt opt set enablecombat true}
IF: NoMobsInDist 12
DO: DoAll
Chat {/vt opt set enablecombat false}
IF: NavEmpty
DO: DoAll
Chat {/vt nav load hunt_circuit}
Chat {/vt opt set enablenav true}
~~ }
STATE: {Death} ~~ {
IF: Always
DO: DoAll
Chat {/vt opt set enablecombat false}
Chat {/vt opt set enablenav false}
Chat {/a I died! Recovering...}
IF: SecsInStateGE 5
DO: DoAll
Chat {/vt opt set enablebuffing true}
SetState {DeathRecovery}
~~ }
STATE: {DeathRecovery} ~~ {
IF: Always
DO: DoAll
Chat {/vt nav load ls_to_hunt}
Chat {/vt opt set enablenav true}
Chat {/vt opt set enablecombat false}
IF: NeedToBuff
DO: DoAll
Chat {/vt opt set enablenav false}
SetState {Buffing}
IF: NavEmpty
DO: DoAll
Chat {/vt nav load hunt_circuit}
Chat {/vt opt set enablecombat true}
SetState {Hunt}
IF: Always
DO: SetWatchdog 3 300 {Stuck}
~~ }
STATE: {Buffing} ~~ {
IF: Always
DO: DoAll
Chat {/vt opt set enablebuffing true}
Chat {/vt opt set enablecombat false}
Chat {/vt opt set enablenav false}
IF: All
Not NeedToBuff
NoMobsInDist 5
DO: DoAll
Chat {/vt opt set enablenav true}
Chat {/vt opt set enablecombat true}
SetState {Hunt}
IF: SecsInStateGE 180
DO: DoAll
Chat {/vt opt set enablenav true}
Chat {/vt opt set enablecombat true}
SetState {Hunt}
~~ }
STATE: {Restock} ~~ {
IF: Death
DO: SetState {Death}
IF: Always
DO: DoAll
Chat {/vt opt set enablecombat false}
Chat {/vt opt set enablelooting false}
Chat {/vt nav load hunt_to_vendor}
Chat {/vt opt set enablenav true}
IF: Always
DO: SetWatchdog 3 300 {Stuck}
IF: NavEmpty
DO: SetState {AtVendor}
~~ }
STATE: {AtVendor} ~~ {
IF: Death
DO: SetState {Death}
IF: VendorOpen
DO: DoAll
Chat {/vt opt set enablenav false}
IF: All
VendorClosed
ItemCountGE 200 {Prismatic Taper}
ItemCountGE 200 {Scarab}
DO: DoAll
Chat {/a Restocked, heading back to hunt.}
Chat {/vt nav load vendor_to_hunt}
Chat {/vt opt set enablenav true}
SetState {ReturnToHunt}
IF: SecsInStateGE 120
DO: DoAll
Chat {/a Vendor timeout, returning to hunt.}
Chat {/vt nav load vendor_to_hunt}
Chat {/vt opt set enablenav true}
SetState {ReturnToHunt}
~~ }
STATE: {ReturnToHunt} ~~ {
IF: Death
DO: SetState {Death}
IF: Always
DO: DoAll
Chat {/vt opt set enablecombat false}
IF: Always
DO: SetWatchdog 3 300 {Stuck}
IF: NeedToBuff
DO: DoAll
Chat {/vt opt set enablenav false}
SetState {Buffing}
IF: NavEmpty
DO: DoAll
Chat {/vt nav load hunt_circuit}
Chat {/vt opt set enablecombat true}
Chat {/vt opt set enablelooting true}
SetState {Hunt}
~~ }
STATE: {Stuck} ~~ {
IF: Always
DO: DoAll
Chat {/a I appear to be stuck, attempting recovery.}
Chat {/vt opt set enablenav false}
Chat {/vt opt set enablecombat false}
IF: SecsInStateGE 3
DO: DoAll
Chat {/vt nav load ls_to_hunt}
Chat {/vt opt set enablenav true}
SetState {StuckRecovery}
~~ }
STATE: {StuckRecovery} ~~ {
IF: Death
DO: SetState {Death}
IF: Always
DO: SetWatchdog 3 300 {Stuck}
IF: NeedToBuff
DO: DoAll
Chat {/vt opt set enablenav false}
SetState {Buffing}
IF: NavEmpty
DO: DoAll
Chat {/vt nav load hunt_circuit}
Chat {/vt opt set enablecombat true}
Chat {/vt opt set enablelooting true}
SetState {Hunt}
~~ }

View file

@ -55,7 +55,6 @@ STATE: {go_to_chests} ~~ {
SetWatchdog 10 300 {recall}
IF: NavEmpty
DO: SetState {LootChest}
~~ }
STATE: {LootChest} ~~ {
IF: All

View file

@ -63,7 +63,6 @@ STATE: {go_to_chests} ~~ {
SetWatchdog 10 300 {recall}
IF: NavEmpty
DO: SetState {Check}
~~ }
STATE: {LootChest} ~~ {
IF: Always

190
af/motes_converted.af Normal file
View file

@ -0,0 +1,190 @@
~~ {
~~ 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 getgamemonthname getminutesuntilnight getgameyear uisetvisible uiviewvisible uiviewexists getgvar touchgvar getpvar touchpvar setgvar cleargvar setpvar clearpvar testgvar clearallgvars testpvar clearallpvars dictgetitem dictcreate dicthaskey dictadditem dictkeys dictremovekey dictvalues dictclear dictsize dictcopy listgetitem listpop listcreate listcontains listremove listadd listindexof listremoveat listinsert listlastindexof listclear listcopy listcount listreverse
~~
~~ File auto-generated by metaf, a program created by Eskarina of Morningthaw/Coldeve.
~~ Get metaf here: https://github.com/JJEII/metaf/
~~
~~ All recognized structural designators:
~~ STATE: DO:
~~ IF: NAV:
~~
~~ All recognized CONDITION (IF:) operation keywords:
~~ Never NavEmpty MobsInDist_Priority Not
~~ Always Death NeedToBuff PSecsInStateGE
~~ All VendorOpen NoMobsInDist SecsOnSpellGE
~~ Any VendorClosed BlockE BuPercentGE
~~ ChatMatch ItemCountLE CellE DistToRteGE
~~ MainSlotsLE ItemCountGE IntoPortal Expr
~~ SecsInStateGE MobsInDist_Name ExitPortal ChatCapture
~~
~~ All recognized ACTION (DO:) operation keywords:
~~ None EmbedNav ChatExpr SetOpt
~~ SetState CallState SetWatchdog CreateView
~~ Chat Return ClearWatchdog DestroyView
~~ DoAll DoExpr GetOpt DestroyAllViews
~~
~~ All recognized NAV types:
~~ circular follow
~~ linear once
~~
~~ All recognized NAV NODE types:
~~ flw vnd
~~ pnt ptl
~~ rcl tlk
~~ pau chk
~~ cht jmp
~~ prt (deprecated in VTank)
~~ }
STATE: {Default} ~~ {
IF: Not Expr {testvar[batchThreshold]}
DO: DoExpr {setvar[batchThreshold, 50]}
IF: Not Expr {testvar[maxHandInRetries]}
DO: DoExpr {setvar[maxHandInRetries, 120]}
IF: Not Expr {testvar[beachNav]}
DO: DoExpr {setvar[beachNav, `beach_fort`]}
IF: Not Expr {testvar[returnNav]}
DO: DoExpr {setvar[returnNav, `return`]}
IF: All
ChatCapture {(^(\[[A-z]+?\] |)You|.*\<Tell:IIDString:.+:(?<who>[^\<]*)\>.+\<\\Tell\>) .*, \"diamond (?<num>[0-9]+)\"$} {}
Expr {cnumber[getvar[capturegroup_num]]>0}
DO: DoAll
ChatExpr {\/ub give +getvar[capturegroup_num]+` Diamond Scarab to `+getvar[capturegroup_who]}
Chat {/a [motes] Diamond request fulfilled.}
SetState {Default}
IF: ItemCountGE 1 {Pyreal Nugget}
DO: DoAll
DoExpr {setvar[isProcessing, 1]}
DoExpr {setvar[handInRetries, 0]}
ChatExpr {\/vt nav load +getvar[beachNav]}
Chat {/vt opt set enablenav true}
Chat {/vt opt set enablebuffing true}
SetState {go_to_beach}
IF: All
ItemCountGE 50 {Pyreal Sliver}
ItemCountLE 0 {Pyreal Nugget}
DO: DoAll
DoExpr {setvar[isProcessing, 1]}
Chat {/a [motes] Starting batch: sliver -> nugget.}
SetState {nugget}
IF: All
ItemCountGE 50 {Pyreal Mote}
ItemCountLE 49 {Pyreal Sliver}
ItemCountLE 0 {Pyreal Nugget}
DO: DoAll
DoExpr {setvar[isProcessing, 1]}
Chat {/a [motes] Starting batch: mote -> sliver.}
SetState {sliver}
IF: Always
DO: DoAll
DoExpr {setvar[isProcessing, 0]}
DoExpr {clearvar[handInRetries]}
Chat {/vt opt set enablebuffing false}
Chat {/vt opt set enablenav false}
~~ }
STATE: {go_to_beach} ~~ {
IF: Death
DO: SetState {Default}
IF: NavEmpty
DO: DoAll
Chat {/a [motes] Arrived at beach turn-in.}
SetState {at_beach}
IF: SecsInStateGE 300
DO: DoAll
Chat {/a [motes] Timeout reaching beach. Resetting.}
SetState {Default}
IF: Always
DO: DoAll
Chat {/vt opt set enablenav true}
Chat {/vt opt set enablebuffing true}
~~ }
STATE: {at_beach} ~~ {
IF: Death
DO: SetState {Default}
IF: ItemCountGE 1 {Pyreal Nugget}
DO: SetState {hand_in_nugget}
IF: ItemCountLE 0 {Pyreal Nugget}
DO: DoAll
Chat {/a [motes] Beach turn-in complete. Returning.}
ChatExpr {\/vt nav load +getvar[returnNav]}
Chat {/vt opt set enablenav true}
SetState {go_return}
~~ }
STATE: {go_return} ~~ {
IF: Death
DO: SetState {Default}
IF: NavEmpty
DO: DoAll
Chat {/a [motes] Return nav complete. Idle.}
SetState {Default}
IF: SecsInStateGE 300
DO: DoAll
Chat {/a [motes] Timeout on return nav. Resetting.}
SetState {Default}
IF: Always
DO: Chat {/vt opt set enablenav true}
~~ }
STATE: {hand_in_nugget} ~~ {
IF: Death
DO: SetState {Default}
IF: ItemCountLE 0 {Pyreal Nugget}
DO: DoAll
DoExpr {clearvar[handInRetries]}
SetState {at_beach}
IF: Expr {getvar[handInRetries]>=getvar[maxHandInRetries]}
DO: DoAll
Chat {/a [motes] Max hand-in retries reached. Returning.}
DoExpr {clearvar[handInRetries]}
ChatExpr {\/vt nav load +getvar[returnNav]}
SetState {go_return}
IF: All
ItemCountGE 1 {Pyreal Nugget}
SecsInStateGE 1
DO: DoAll
DoExpr {setvar[handInRetries, getvar[handInRetries]+1]}
Chat {/ub give Pyreal Nugget to Feruza ibn Salaq}
SetState {hand_in_nugget}
IF: Always
DO: SetWatchdog 1 90 {Default}
~~ }
STATE: {nugget} ~~ {
IF: Death
DO: SetState {Default}
IF: ItemCountGE 2 {Pyreal Sliver}
DO: SetState {make_nugget}
IF: ItemCountLE 1 {Pyreal Sliver}
DO: DoAll
Chat {/a [motes] Sliver -> nugget stage complete.}
SetState {Default}
IF: Always
DO: SetWatchdog 1 120 {Default}
~~ }
STATE: {make_nugget} ~~ {
IF: Death
DO: SetState {Default}
IF: Always
DO: DoAll
Chat {/ub use Pyreal Sliver on Pyreal Sliver}
SetState {nugget}
~~ }
STATE: {sliver} ~~ {
IF: Death
DO: SetState {Default}
IF: ItemCountGE 2 {Pyreal Mote}
DO: SetState {make_sliver}
IF: ItemCountLE 1 {Pyreal Mote}
DO: DoAll
Chat {/a [motes] Mote -> sliver stage complete.}
SetState {Default}
IF: Always
DO: SetWatchdog 1 120 {Default}
~~ }
STATE: {make_sliver} ~~ {
IF: Death
DO: SetState {Default}
IF: Always
DO: DoAll
Chat {/ub use Pyreal Mote on Pyreal Mote}
SetState {sliver}
~~ }

258
af/nalicana_test.af Normal file
View file

@ -0,0 +1,258 @@
~~ {
~~ 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 getgamemonthname getminutesuntilnight getgameyear uisetvisible uiviewvisible uiviewexists getgvar touchgvar getpvar touchpvar setgvar cleargvar setpvar clearpvar testgvar clearallgvars testpvar clearallpvars dictgetitem dictcreate dicthaskey dictadditem dictkeys dictremovekey dictvalues dictclear dictsize dictcopy listgetitem listpop listcreate listcontains listremove listadd listindexof listremoveat listinsert listlastindexof listclear listcopy listcount listreverse
~~
~~ File auto-generated by metaf, a program created by Eskarina of Morningthaw/Coldeve.
~~ Get metaf here: https://github.com/JJEII/metaf/
~~
~~ All recognized structural designators:
~~ STATE: DO:
~~ IF: NAV:
~~
~~ All recognized CONDITION (IF:) operation keywords:
~~ Never NavEmpty MobsInDist_Priority Not
~~ Always Death NeedToBuff PSecsInStateGE
~~ All VendorOpen NoMobsInDist SecsOnSpellGE
~~ Any VendorClosed BlockE BuPercentGE
~~ ChatMatch ItemCountLE CellE DistToRteGE
~~ MainSlotsLE ItemCountGE IntoPortal Expr
~~ SecsInStateGE MobsInDist_Name ExitPortal ChatCapture
~~
~~ All recognized ACTION (DO:) operation keywords:
~~ None EmbedNav ChatExpr SetOpt
~~ SetState CallState SetWatchdog CreateView
~~ Chat Return ClearWatchdog DestroyView
~~ DoAll DoExpr GetOpt DestroyAllViews
~~
~~ All recognized NAV types:
~~ circular follow
~~ linear once
~~
~~ All recognized NAV NODE types:
~~ flw vnd
~~ pnt ptl
~~ rcl tlk
~~ pau chk
~~ cht jmp
~~ prt (deprecated in VTank)
~~ }
STATE: {Default} ~~ {
IF: Death
DO: SetState {death}
IF: Always
DO: DoAll
Chat {/ub opt set VTank.PatchExpressionEngine true}
SetOpt {enablecombat} {false}
SetOpt {enablenav} {true}
SetOpt {enablelooting} {false}
SetOpt {enablebuffing} {true}
SetOpt {attackdistance} {0.0125}
Chat {/vt nav load nav_nalicana}
SetState {talk_nalicana}
~~ }
STATE: {talk_nalicana} ~~ {
IF: Death
DO: SetState {death}
IF: All
Expr {testvar[navLoaded]}
NavEmpty
DO: DoAll
ClearWatchdog
Chat {/ub use Nalicana}
SetState {wait_nalicana_dialog}
IF: Always
DO: DoAll
DoExpr {touchvar[navLoaded]}
SetWatchdog 10 300 {stuck}
~~ }
STATE: {wait_nalicana_dialog} ~~ {
IF: Death
DO: SetState {death}
IF: ChatMatch {Gurog have emerged}
DO: DoAll
DoExpr {echo[`Got quest from Nalicana!`,1]}
SetState {nav_to_cave}
IF: ChatMatch {You have solved this quest too recently}
DO: DoAll
DoExpr {echo[`Quest on cooldown!`,1]}
SetState {done}
IF: SecsInStateGE 10
DO: SetState {nav_to_cave}
~~ }
STATE: {nav_to_cave} ~~ {
IF: Death
DO: SetState {death}
IF: All
Expr {testvar[navLoaded2]}
NavEmpty
DO: DoAll
ClearWatchdog
SetOpt {enablecombat} {true}
SetOpt {enablelooting} {true}
SetState {wait_key}
IF: Always
DO: DoAll
DoExpr {touchvar[navLoaded2]}
Chat {/vt nav load nal_to_cave}
SetWatchdog 10 600 {stuck}
~~ }
STATE: {wait_key} ~~ {
IF: Death
DO: SetState {death}
IF: ItemCountGE 1 {Entryway Key}
DO: DoAll
DoExpr {echo[`Got Entryway Key!`,1]}
Chat {/ub use Entryway Key on Door}
SetState {wait_door}
IF: SecsInStateGE 120
DO: DoAll
DoExpr {echo[`Key taking too long...`,1]}
SetState {wait_key}
~~ }
STATE: {wait_door} ~~ {
IF: Death
DO: SetState {death}
IF: ChatMatch {Door has been unlocked}
DO: DoAll
DoExpr {echo[`Door opened!`,1]}
SetOpt {enablecombat} {false}
SetOpt {enablelooting} {false}
SetState {nav_to_tomb_portal}
IF: SecsInStateGE 5
DO: DoAll
Chat {/ub use Entryway Key on Door}
SetState {wait_door}
~~ }
STATE: {nav_to_tomb_portal} ~~ {
IF: Death
DO: SetState {death}
IF: All
Expr {testvar[navLoaded3]}
NavEmpty
DO: DoAll
ClearWatchdog
SetState {enter_frozen_tomb}
IF: Always
DO: DoAll
DoExpr {touchvar[navLoaded3]}
Chat {/vt nav load nal_to_tomb_portal}
SetWatchdog 10 300 {stuck}
~~ }
STATE: {enter_frozen_tomb} ~~ {
IF: Death
DO: SetState {death}
IF: ExitPortal
DO: DoAll
DoExpr {echo[`Inside Frozen Tomb!`,1]}
SetOpt {enablecombat} {true}
SetState {dungeon_run}
IF: SecsInStateGE 10
DO: DoAll
SetOpt {enablecombat} {true}
SetState {dungeon_run}
~~ }
STATE: {dungeon_run} ~~ {
IF: Death
DO: SetState {death}
IF: All
Expr {testvar[navLoaded4]}
NavEmpty
DO: DoAll
ClearWatchdog
SetOpt {enablelooting} {true}
SetState {kill_gregor}
IF: Always
DO: DoAll
DoExpr {touchvar[navLoaded4]}
Chat {/vt nav load nal_dungeon_run}
SetOpt {enablelooting} {false}
SetWatchdog 10 600 {stuck}
~~ }
STATE: {kill_gregor} ~~ {
IF: Death
DO: SetState {death}
IF: ChatMatch {Killing me will not change anything}
DO: DoAll
DoExpr {echo[`Battle Lord Gregor defeated!`,1]}
SetOpt {enablecombat} {false}
SetState {wait_loot}
IF: ItemCountGE 1 {Battle Lord Gregor's Mnemosyne}
DO: DoAll
DoExpr {echo[`Got the Mnemosyne!`,1]}
SetOpt {enablecombat} {false}
SetOpt {enablelooting} {false}
SetState {return_nalicana}
IF: SecsInStateGE 600
DO: DoAll
DoExpr {echo[`Gregor fight timeout!`,1]}
SetState {stuck}
~~ }
STATE: {wait_loot} ~~ {
IF: Death
DO: SetState {death}
IF: ItemCountGE 1 {Battle Lord Gregor's Mnemosyne}
DO: DoAll
DoExpr {echo[`Got the Mnemosyne! Returning to Nalicana.`,1]}
SetOpt {enablelooting} {false}
SetState {return_nalicana}
IF: SecsInStateGE 30
DO: DoAll
DoExpr {echo[`Mnemosyne not looted, check loot profile!`,1]}
SetOpt {enablelooting} {false}
SetState {return_nalicana}
~~ }
STATE: {return_nalicana} ~~ {
IF: Death
DO: SetState {death}
IF: All
Expr {testvar[navLoaded5]}
NavEmpty
DO: DoAll
ClearWatchdog
SetState {turn_in}
IF: Always
DO: DoAll
DoExpr {touchvar[navLoaded5]}
Chat {/vt nav load nav_nalicana}
SetWatchdog 10 600 {stuck}
~~ }
STATE: {turn_in} ~~ {
IF: Death
DO: SetState {death}
IF: Always
DO: DoAll
Chat {/ub givep Battle Lord Gregor's Mnemosyne to Nalicana}
Chat {/ub prepclick yes 3}
SetState {wait_turn_in}
~~ }
STATE: {wait_turn_in} ~~ {
IF: Death
DO: SetState {death}
IF: ChatMatch {Lord Asheron should be able to learn much}
DO: DoAll
DoExpr {echo[`Nalicana's Test COMPLETE!`,1]}
SetState {done}
IF: SecsInStateGE 10
DO: SetState {turn_in}
~~ }
STATE: {done} ~~ {
IF: Always
DO: DoAll
DoExpr {echo[`Nalicana's Test quest finished.`,1]}
Chat {/mp}
~~ }
STATE: {stuck} ~~ {
IF: Death
DO: SetState {death}
IF: Always
DO: DoAll
Chat {/ub face}
DoExpr {echo[`Stuck! Check nav...`,1]}
~~ }
STATE: {death} ~~ {
IF: ExitPortal
DO: DoAll
DoExpr {echo[`Died! Restarting...`,1]}
SetState {Default}
~~ }

View file

@ -0,0 +1,47 @@
~~ {
~~ 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 getgamemonthname getminutesuntilnight getgameyear uisetvisible uiviewvisible uiviewexists getgvar touchgvar getpvar touchpvar setgvar cleargvar setpvar clearpvar testgvar clearallgvars testpvar clearallpvars dictgetitem dictcreate dicthaskey dictadditem dictkeys dictremovekey dictvalues dictclear dictsize dictcopy listgetitem listpop listcreate listcontains listremove listadd listindexof listremoveat listinsert listlastindexof listclear listcopy listcount listreverse
~~
~~ File auto-generated by metaf, a program created by Eskarina of Morningthaw/Coldeve.
~~ Get metaf here: https://github.com/JJEII/metaf/
~~
~~ All recognized structural designators in a NAV-ONLY file:
~~ NAV:
~~
~~ All recognized NAV types:
~~ circular follow
~~ linear once
~~
~~ All recognized NAV NODE types:
~~ flw vnd
~~ pnt ptl
~~ rcl tlk
~~ pau chk
~~ cht jmp
~~ prt (deprecated in VTank)
~~
~~
~~ REMEMBER THAT NAV-ONLY FILES MUST CONTAIN EXACTLY ONE NAV!
~~ }
NAV: nav0 once ~~ {
pnt 0.697347180048625 13.4823081334432 0.516687520345052
pnt 0.666687456766764 13.503111521403 0.516687520345052
pnt 0.646260070800781 13.5503058433533 0.516687520345052
pnt 0.639286915461222 13.6518357594808 0.516687520345052
pnt 0.638853899637858 13.6711349487305 0.516687520345052
pnt 0.619450457890828 13.8956347147624 0.516687520345052
pnt 0.617654943466187 13.9232676823934 0.516687520345052
pnt 0.623617633183797 13.9128150304159 0.516687520345052
pnt 0.626908508936564 13.9084334055583 0.516687520345052
pnt 0.641702699661255 13.9089775721232 0.521687507629395
pnt 0.639892339706421 13.9309638977051 0.533354187011719
pnt 0.639045921961466 13.9339604695638 0.533354187011719
pnt 0.632732566197713 13.9385066986084 0.533354187011719
pnt 0.62224858601888 13.9390266418457 0.533354187011719
pnt 0.603840287526449 13.9379925409953 0.540843137105306
pnt 0.586502106984456 13.936896387736 0.551687494913737
pnt 0.585404109954834 13.9124701182048 0.553354136149089
cht 0.585082006454468 13.9138682047526 0.553354136149089 {/ub give Blank Augmentation Gem to Dumida bint Ruminre}
~~ }

1378
af/neftet.af Normal file

File diff suppressed because it is too large Load diff

31
af/recallls.af Normal file
View file

@ -0,0 +1,31 @@
~~ {
~~ 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 getgamemonthname getminutesuntilnight getgameyear uisetvisible uiviewvisible uiviewexists getgvar touchgvar getpvar touchpvar setgvar cleargvar setpvar clearpvar testgvar clearallgvars testpvar clearallpvars dictgetitem dictcreate dicthaskey dictadditem dictkeys dictremovekey dictvalues dictclear dictsize dictcopy listgetitem listpop listcreate listcontains listremove listadd listindexof listremoveat listinsert listlastindexof listclear listcopy listcount listreverse
~~
~~ File auto-generated by metaf, a program created by Eskarina of Morningthaw/Coldeve.
~~ Get metaf here: https://github.com/JJEII/metaf/
~~
~~ All recognized structural designators in a NAV-ONLY file:
~~ NAV:
~~
~~ All recognized NAV types:
~~ circular follow
~~ linear once
~~
~~ All recognized NAV NODE types:
~~ flw vnd
~~ pnt ptl
~~ rcl tlk
~~ pau chk
~~ cht jmp
~~ prt (deprecated in VTank)
~~
~~
~~ REMEMBER THAT NAV-ONLY FILES MUST CONTAIN EXACTLY ONE NAV!
~~ }
NAV: nav0 once ~~ {
pau 59.3695845603943 -28.744246006012 0.0500250021616618 5000
cht 59.3695845603943 -28.744246006012 0.0500250021616618 {/ah}
~~ }

53
af/to_bella.af Normal file
View file

@ -0,0 +1,53 @@
~~ {
~~ 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 getgamemonthname getminutesuntilnight getgameyear uisetvisible uiviewvisible uiviewexists getgvar touchgvar getpvar touchpvar setgvar cleargvar setpvar clearpvar testgvar clearallgvars testpvar clearallpvars dictgetitem dictcreate dicthaskey dictadditem dictkeys dictremovekey dictvalues dictclear dictsize dictcopy listgetitem listpop listcreate listcontains listremove listadd listindexof listremoveat listinsert listlastindexof listclear listcopy listcount listreverse
~~
~~ File auto-generated by metaf, a program created by Eskarina of Morningthaw/Coldeve.
~~ Get metaf here: https://github.com/JJEII/metaf/
~~
~~ All recognized structural designators in a NAV-ONLY file:
~~ NAV:
~~
~~ All recognized NAV types:
~~ circular follow
~~ linear once
~~
~~ All recognized NAV NODE types:
~~ flw vnd
~~ pnt ptl
~~ rcl tlk
~~ pau chk
~~ cht jmp
~~ prt (deprecated in VTank)
~~
~~
~~ REMEMBER THAT NAV-ONLY FILES MUST CONTAIN EXACTLY ONE NAV!
~~ }
NAV: nav0 once ~~ {
pnt -101.390033086141 -34.0253916422526 -0.0249791661898295
cht -101.328641001383 -33.2287128210068 -0.149979162216187 {/ub jumpsw 300}
pnt -101.366710281372 -34.0219579060872 -0.149979162216187
pnt -101.366858164469 -33.8953051884969 -0.149979162216187
pnt -101.321553548177 -33.9012914657593 -0.149979162216187
pnt -101.323536745707 -33.8343835830688 -0.149979162216187
pnt -101.353078460693 -33.8121692021688 -0.149979162216187
pnt -101.404804865519 -33.7821842829386 -0.149979162216187
pnt -101.424748166402 -33.7638031005859 -0.149979162216187
pnt -101.445881970723 -33.7280899047852 -0.149979162216187
pnt -101.451853593191 -33.690558942159 -0.149979162216187
pnt -101.449750614166 -33.6623808542887 -0.149979162216187
pnt -101.438445281982 -33.6300983428955 -0.149979162216187
pnt -101.423911094666 -33.6047841389974 -0.149979162216187
pnt -101.403232828776 -33.5813950856527 -0.149979162216187
pnt -101.376367441813 -33.5687754631042 -0.149979162216187
pnt -101.333241081238 -33.5651614507039 -0.149979162216187
pnt -101.326871236165 -33.5639857610067 -0.149979162216187
pnt -101.326964759827 -33.5253623962402 -0.149979162216187
pnt -101.32373790741 -33.4787105560303 -0.164920441309611
pnt -101.323082987467 -33.4038849989573 -0.174979162216187
pnt -101.324518013 -33.3609972953796 -0.163745148976644
pnt -101.325564702352 -33.3339033285777 -0.149979162216187
pnt -101.328641001383 -33.2287128210068 -0.149979162216187
~~ }

55
af/to_fiun.af Normal file
View file

@ -0,0 +1,55 @@
~~ {
~~ 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 getgamemonthname getminutesuntilnight getgameyear uisetvisible uiviewvisible uiviewexists getgvar touchgvar getpvar touchpvar setgvar cleargvar setpvar clearpvar testgvar clearallgvars testpvar clearallpvars dictgetitem dictcreate dicthaskey dictadditem dictkeys dictremovekey dictvalues dictclear dictsize dictcopy listgetitem listpop listcreate listcontains listremove listadd listindexof listremoveat listinsert listlastindexof listclear listcopy listcount listreverse
~~
~~ File auto-generated by metaf, a program created by Eskarina of Morningthaw/Coldeve.
~~ Get metaf here: https://github.com/JJEII/metaf/
~~
~~ All recognized structural designators in a NAV-ONLY file:
~~ NAV:
~~
~~ All recognized NAV types:
~~ circular follow
~~ linear once
~~
~~ All recognized NAV NODE types:
~~ flw vnd
~~ pnt ptl
~~ rcl tlk
~~ pau chk
~~ cht jmp
~~ prt (deprecated in VTank)
~~
~~
~~ REMEMBER THAT NAV-ONLY FILES MUST CONTAIN EXACTLY ONE NAV!
~~ }
NAV: nav0 once ~~ {
pau 59.3259333292643 -28.520225016276 0.0500208298365275 2000
cht 59.3259333292643 -28.520225016276 0.0500208298365275 {/ah}
pau 59.3259333292643 -28.520225016276 0.0500208298365275 10000
pnt 59.3297518730164 -28.7442257563273 0.0500208298365275
pnt 59.3718955357869 -28.729271697998 0.0500208298365275
ptl 59.3259333292643 -28.520225016276 0.0500208298365275 59.3936458587647 -28.7256083488464 0.0508250035345554 14 {Portal to Town Network}
pnt -101.626594352722 -96.6541770299276 2.08333134651184E-05
pnt -101.65105082194 -96.684996064504 2.08333134651184E-05
pnt -101.656385644277 -96.6919414202372 2.08333134651184E-05
pnt -101.658911323547 -96.7065850257873 2.08333134651184E-05
pnt -101.657806046804 -96.7835428237915 2.08333134651184E-05
pnt -101.657771333059 -96.819224357605 2.08333134651184E-05
pnt -101.657725207011 -96.8666128794352 2.08333134651184E-05
pnt -101.669049962362 -96.9007548014323 2.08333134651184E-05
pnt -101.680845673879 -96.9425307591756 2.08333134651184E-05
pnt -101.683536847432 -96.9889544169108 2.08333134651184E-05
pnt -101.690975729624 -97.0222402572632 2.08333134651184E-05
pnt -101.70106344223 -97.0450640996297 2.08333134651184E-05
pnt -101.711457236608 -97.0529806772868 2.08333134651184E-05
ptl 59.3259333292643 -28.520225016276 0.0500208298365275 -101.725833336512 -97.0584083557129 -0.000262499845121056 14 {Fiun Outpost}
pnt -56.7886938095093 95.8784626324971 -0.000395833204189936
pnt -56.8631035486857 95.8860682805379 -0.000395833204189936
pnt -56.9247075398763 95.8729653358459 -0.000395833204189936
pnt -56.9869157632192 95.8636669476827 -0.000395833204189936
cht 59.3259333292643 -28.520225016276 0.0500208298365275 {/ub give Insatiable Eater Jaw to Fiun Rehlyun}
pau 59.3259333292643 -28.520225016276 0.0500208298365275 10000
~~ }

View file

@ -1,216 +0,0 @@
uTank2 NAV 1.2
4
39
0
59.3238444010417
-28.5963200251261
0.0500208298365275
0
0
59.3491148948669
-28.6641467094421
0.0500208298365275
0
0
59.3766745567322
-28.7037879625956
0.0500208298365275
0
6
-20.1567346890767
69.6993536631266
0.317356459299723
0
Portal to Town Network
14
True
59.3936458587647
-28.7256083488464
0.0508250035345554
0
-101.624867598216
-96.6313321431478
2.08333134651184E-05
0
0
-101.650300121307
-96.5992829958598
2.08333134651184E-05
0
0
-101.658966318766
-96.5680073897044
2.08333134651184E-05
0
0
-101.658739980062
-96.5141520659129
2.08333134651184E-05
0
0
-101.658615048726
-96.4844156901042
2.08333134651184E-05
0
0
-101.644858868917
-96.4508747021357
2.08333134651184E-05
0
0
-101.62797349294
-96.4283237934113
2.08333134651184E-05
0
0
-101.62197488149
-96.3871853431066
2.08333134651184E-05
0
6
-20.1567346890767
69.6993536631266
0.317356459299723
0
Stonehold Portal
14
True
-101.616920820872
-96.3639541665713
-0.000262499845121056
0
-21.6851238250732
68.6658351103465
0.325020853678385
0
0
-21.6289395014445
68.6506710529327
0.325020853678385
0
0
-21.5721336364746
68.6411833763123
0.325020853678385
0
0
-21.5097707430522
68.6396075884501
0.325020853678385
0
0
-21.453425470988
68.6498824437459
0.325020853678385
0
0
-21.3994089126587
68.6714050134023
0.325020853678385
0
0
-21.3288564682007
68.724674542745
0.317972977956136
0
0
-21.2169948577881
68.7905727068583
0.301200071970622
0
0
-21.1142587741216
68.8473822593689
0.311114470163981
0
0
-20.9858016173045
68.9242629051209
0.327141539255778
0
0
-20.9161176522573
68.964368057251
0.349729251861572
0
0
-20.8470240910848
69.0071477254232
0.368622779846191
0
0
-20.7915863672892
69.0421974182129
0.388323815663656
0
0
-20.7150138537089
69.1274105707804
0.403556219736735
0
0
-20.6669180552165
69.2083913803101
0.381966876983643
0
0
-20.6537384033203
69.2881316184998
0.362513001759847
0
0
-20.645511341095
69.3518469174703
0.34843692779541
0
0
-20.5783939361572
69.4900629202525
0.308775520324707
0
0
-20.5159432093302
69.594264793396
0.289700126647949
0
0
-20.4655660629272
69.6328755378723
0.284651343027751
0
0
-20.346146206061
69.6796534538269
0.291088676452637
0
0
-20.2466309626897
69.7156423886617
0.311803499857585
0
0
-20.2082561810811
69.7301380475362
0.316519196828206
0
0
-20.1890452543894
69.7202436765035
0.316567325592041
0
0
-20.1567623615265
69.6993715286255
0.317355791727702
0
6
-20.1567346890767
69.6993536631266
0.317356459299723
0
Desolation Beach Portal
14
True
-20.1682483355204
69.6802124977112
0.32122278213501

View file

@ -1,44 +0,0 @@
uTank2 NAV 1.2
4
8
0
-70.5150861899058
87.4011634190877
0.333354187011719
0
0
-70.5137316226959
87.4172266642253
0.333354187011719
0
0
-70.5388644059499
87.4116279602051
0.333354187011719
0
8
-70.5349495887756
87.4159286499023
0.333354187011719
0
8
-70.5355544408162
87.4350578943888
0.341687488555908
0
0
-70.5217122077942
87.4340560277303
0.350020853678385
0
0
-70.4775682767232
87.4305627187093
0.351791667938232
0
4
-70.4775682767232
87.4305627187093
0.351791667938232
0
/ub give Blank Augmentation Gem to Donatello Linante

View file

@ -1,3 +0,0 @@
uTank2 NAV 1.2
1
0

View file

@ -1,3 +0,0 @@
uTank2 NAV 1.2
1
0

View file

@ -1,3 +0,0 @@
uTank2 NAV 1.2
1
0

View file

@ -1,3 +0,0 @@
uTank2 NAV 1.2
1
0

View file

@ -1,80 +0,0 @@
uTank2 NAV 1.2
4
13
0
59.3238444010417
-28.5963200251261
0.0500208298365275
0
0
59.3491148948669
-28.6641467094421
0.0500208298365275
0
0
59.3766745567322
-28.7037879625956
0.0500208298365275
0
6
-101.621842416128
-96.3862769524256
2.08333134651184E-05
0
Portal to Town Network
14
True
59.3936458587647
-28.7256083488464
0.0508250035345554
0
-101.624867598216
-96.6313321431478
2.08333134651184E-05
0
0
-101.650300121307
-96.5992829958598
2.08333134651184E-05
0
0
-101.658966318766
-96.5680073897044
2.08333134651184E-05
0
0
-101.658739980062
-96.5141520659129
2.08333134651184E-05
0
0
-101.658615048726
-96.4844156901042
2.08333134651184E-05
0
0
-101.644858868917
-96.4508747021357
2.08333134651184E-05
0
0
-101.62797349294
-96.4283237934113
2.08333134651184E-05
0
0
-101.62197488149
-96.3871853431066
2.08333134651184E-05
0
6
-101.621842416128
-96.3862769524256
2.08333134651184E-05
0
Stonehold Portal
14
True
-101.616920820872
-96.3639541665713
-0.000262499845121056

View file

@ -1,15 +0,0 @@
uTank2 NAV 1.2
4
2
3
59.3695845603943
-28.744246006012
0.0500250021616618
0
5000
4
59.3695845603943
-28.744246006012
0.0500250021616618
0
/ls

File diff suppressed because it is too large Load diff

View file

@ -11,7 +11,7 @@ n
n
n
n
153
156
i
1
i
@ -149,8 +149,8 @@ stateBurdenPackSlots
s
x
ba
1656
<?xml version="1.0"?><view width="300" height="260" title="Burden and Pack Slots"><control type="layout"><control type="button" name="btnMightSeventhMule" left="10" top="10" width="250" height="25" text="Might of the Seventh Mule" actionexpr="setvar[Augment,`stateMightSeventhMule`]" setstate="nav_zaikhal" /><control type="button" name="btnShadowSeventhMule" left="10" top="40" width="250" height="25" text="Shadow of the Seventh Mule" actionexpr="setvar[Augment,`stateShadowSeventhMule`]" setstate="nav_zaikhal" /><control type="button" name="btnInfusedWarMagic" left="10" top="70" width="250" height="25" text="Infused War Magic" actionexpr="setvar[Augment,`stateInfusedWarMagic`]" setstate="nav_silyun" /><control type="button" name="btnInfusedLifeMagic" left="10" top="100" width="250" height="25" text="Infused Life Magic" actionexpr="setvar[Augment,`stateInfusedLifeMagic`]" setstate="nav_hebian_to" /><control type="button" name="btnInfusedItemMagic" left="10" top="130" width="250" height="25" text="Infused Item Magic" actionexpr="setvar[Augment,`stateInfusedItemMagic`]" setstate="nav_hebian_to" /><control type="button" name="btnInfusedCreatureMagic" left="10" top="160" width="250" height="25" text="Infused Creature Magic" actionexpr="setvar[Augment,`stateInfusedCreatureMagic`]" setstate="nav_cragstone" /><control type="button" name="btnInfusedVoidMagic" left="10" top="190" width="250" height="25" text="Infused Void Magic" actionexpr="setvar[Augment,`stateInfusedVoidMagic`]" setstate="nav_candeth_keep" /><control type="button" name="btnMain" left="10" top="220" width="250" height="25" text="Main" setstate="Default" /></control></view>s
1649
<?xml version="1.0"?><view width="300" height="260" title="Burden and Pack Slots"><control type="layout"><control type="button" name="btnMightSeventhMule" left="10" top="10" width="250" height="25" text="Might of the Seventh Mule" actionexpr="setvar[Augment,`stateMightSeventhMule`]" setstate="nav_zaikhal" /><control type="button" name="btnShadowSeventhMule" left="10" top="40" width="250" height="25" text="Shadow of the Seventh Mule" actionexpr="setvar[Augment,`stateShadowSeventhMule`]" setstate="nav_zaikhal" /><control type="button" name="btnInfusedWarMagic" left="10" top="70" width="250" height="25" text="Infused War Magic" actionexpr="setvar[Augment,`stateInfusedWarMagic`]" setstate="nav_silyun" /><control type="button" name="btnInfusedLifeMagic" left="10" top="100" width="250" height="25" text="Infused Life Magic" actionexpr="setvar[Augment,`stateInfusedLifeMagic`]" setstate="nav_hebianto" /><control type="button" name="btnInfusedItemMagic" left="10" top="130" width="250" height="25" text="Infused Item Magic" actionexpr="setvar[Augment,`stateInfusedItemMagic`]" setstate="nav_hebianto" /><control type="button" name="btnInfusedCreatureMagic" left="10" top="160" width="250" height="25" text="Infused Creature Magic" actionexpr="setvar[Augment,`stateInfusedCreatureMagic`]" setstate="nav_cragstone" /><control type="button" name="btnInfusedVoidMagic" left="10" top="190" width="250" height="25" text="Infused Void Magic" actionexpr="setvar[Augment,`stateInfusedVoidMagic`]" setstate="nav_candeth" /><control type="button" name="btnMain" left="10" top="220" width="250" height="25" text="Main" setstate="Default" /></control></view>s
stateBurdenPackSlots
i
1
@ -404,8 +404,8 @@ stateInnateResistance
s
x
ba
1705
<?xml version="1.0"?><view width="300" height="250" title="Innate Resistance"><control type="layout"><control type="button" name="btnEnhancementMaceTurner" left="10" top="10" width="250" height="25" text="Enhancement of the Mace Turner" actionexpr="setvar[Augment,`stateEnhancementMaceTurner`]" setstate="nav_hebian_to" /><control type="button" name="btnEnhancementBladeTurner" left="10" top="40" width="250" height="25" text="Enhancement of the Blade Turner" actionexpr="setvar[Augment,`stateEnhancementBladeTurner`]" setstate="nav_hebian_to" /><control type="button" name="btnEnhancementArrowTurner" left="10" top="70" width="250" height="25" text="Enhancement of the Arrow Turner" actionexpr="setvar[Augment,`stateEnhancementArrowTurner`]" setstate="nav_hebian_to" /><control type="button" name="btnStormEnhancement" left="10" top="100" width="250" height="25" text="Storm's Enhancement" actionexpr="setvar[Augment,`stateStormEnhancement`]" setstate="nav_hebian_to" /><control type="button" name="btnFieryEnhancement" left="10" top="130" width="250" height="25" text="Fiery Enhancement" actionexpr="setvar[Augment,`stateFieryEnhancement`]" setstate="nav_hebian_to" /><control type="button" name="btnIcyEnhancement" left="10" top="160" width="250" height="25" text="Icy Enhancement" actionexpr="setvar[Augment,`stateIcyEnhancement`]" setstate="nav_hebian_to" /><control type="button" name="btnCausticEnhancement" left="10" top="190" width="250" height="25" text="Caustic Enhancement" actionexpr="setvar[Augment,`stateCausticEnhancement`]" setstate="nav_hebian_to" /><control type="button" name="btnMain" left="10" top="220" width="250" height="25" text="Main" setstate="stateDefault" /></control></view>s
1693
<?xml version="1.0"?><view width="300" height="250" title="Innate Resistance"><control type="layout"><control type="button" name="btnEnhancementMaceTurner" left="10" top="10" width="250" height="25" text="Enhancement of the Mace Turner" actionexpr="setvar[Augment,`stateEnhancementMaceTurner`]" setstate="nav_hebianto" /><control type="button" name="btnEnhancementBladeTurner" left="10" top="40" width="250" height="25" text="Enhancement of the Blade Turner" actionexpr="setvar[Augment,`stateEnhancementBladeTurner`]" setstate="nav_hebianto" /><control type="button" name="btnEnhancementArrowTurner" left="10" top="70" width="250" height="25" text="Enhancement of the Arrow Turner" actionexpr="setvar[Augment,`stateEnhancementArrowTurner`]" setstate="nav_hebianto" /><control type="button" name="btnStormEnhancement" left="10" top="100" width="250" height="25" text="Storm's Enhancement" actionexpr="setvar[Augment,`stateStormEnhancement`]" setstate="nav_hebianto" /><control type="button" name="btnFieryEnhancement" left="10" top="130" width="250" height="25" text="Fiery Enhancement" actionexpr="setvar[Augment,`stateFieryEnhancement`]" setstate="nav_hebianto" /><control type="button" name="btnIcyEnhancement" left="10" top="160" width="250" height="25" text="Icy Enhancement" actionexpr="setvar[Augment,`stateIcyEnhancement`]" setstate="nav_hebianto" /><control type="button" name="btnCausticEnhancement" left="10" top="190" width="250" height="25" text="Caustic Enhancement" actionexpr="setvar[Augment,`stateCausticEnhancement`]" setstate="nav_hebianto" /><control type="button" name="btnMain" left="10" top="220" width="250" height="25" text="Main" setstate="Default" /></control></view>s
stateInnateResistance
i
1
@ -608,8 +608,8 @@ stateSpellDuration
s
x
ba
433
<?xml version="1.0"?><view width="300" height="110" title="Spell Duration"><control type="layout"><control type="button" name="btnArchmageEndurance" left="10" top="10" width="250" height="25" text="Archmage's Endurance" actionexpr="setvar[Augment,`stateArchmageEndurance`]" setstate="nav_mayoi" /><control type="button" name="btnMain" left="10" top="40" width="250" height="25" text="Main" setstate="stateDefault" /></control></view>s
428
<?xml version="1.0"?><view width="300" height="110" title="Spell Duration"><control type="layout"><control type="button" name="btnArchmageEndurance" left="10" top="10" width="250" height="25" text="Archmage's Endurance" actionexpr="setvar[Augment,`stateArchmageEndurance`]" setstate="nav_mayoi" /><control type="button" name="btnMain" left="10" top="40" width="250" height="25" text="Main" setstate="Default" /></control></view>s
stateSpellDuration
i
1
@ -1138,7 +1138,7 @@ i
i
0
s
/vt nav load nav_kyujoru
/vt nav load nav_kyujorujen
s
stateEnhancementArrowTurner
i
@ -1854,6 +1854,50 @@ i
i
0
s
/vt nav load nav_candeth
s
nav_candeth
i
1
i
15
i
0
TABLE
2
k
v
n
n
0
s
nav_candeth
i
7
i
7
i
0
TABLE
2
k
v
n
n
1
s
e
s
chatbox[\/vt setmetastate +getvar[Augment]]
s
nav_candeth
i
1
i
2
i
0
s
/vt nav load nav_mayoi
s
nav_mayoi

8778
met/bore.met Normal file

File diff suppressed because it is too large Load diff

737
met/bore_portal_debug.met Normal file
View file

@ -0,0 +1,737 @@
1
CondAct
5
CType
AType
CData
AData
State
n
n
n
n
n
23
i
21
i
7
TABLE
2
K
V
n
n
1
i
26
TABLE
2
k
v
n
n
1
s
e
s
testvar[navNumber]
TABLE
2
k
v
n
n
1
s
e
s
setvar[navNumber, 1]
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[debugPortalRange]
TABLE
2
k
v
n
n
1
s
e
s
setvar[debugPortalRange, 8]
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[debugAngle]
TABLE
2
k
v
n
n
1
s
e
s
setvar[debugAngle, 20]
s
Default
i
1
i
3
i
0
TABLE
2
K
V
n
n
5
i
2
s
/vt opt set enablecombat false
i
8
TABLE
2
k
v
n
n
1
s
e
s
\/vt nav load bore_circuit+getvar[navNumber]
i
2
s
/vt opt set enablenav true
i
2
s
/a [portal-debug] started
i
1
s
watch_portal
s
Default
i
2
i
3
TABLE
2
K
V
n
n
13
i
26
TABLE
2
k
v
n
n
1
s
e
s
setvar[portal, wobjectfindnearestbyobjectclass[14]]
i
26
TABLE
2
k
v
n
n
1
s
e
s
istrue[getvar[portal]]
i
26
TABLE
2
k
v
n
n
1
s
e
s
coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[portal]]] <= 8
i
21
TABLE
2
K
V
n
n
1
i
26
TABLE
2
k
v
n
n
1
s
e
s
wobjectgetname[getvar[portal]]==Singularity Caul
i
21
TABLE
2
K
V
n
n
1
i
26
TABLE
2
k
v
n
n
1
s
e
s
wobjectgetname[getvar[portal]]#Destroyed.*
i
26
TABLE
2
k
v
n
n
1
s
e
s
wobjectisvalid[getvar[portal]]
i
26
TABLE
2
k
v
n
n
1
s
e
s
setvar[portalHeading, getheadingto[getvar[portal]]]
i
26
TABLE
2
k
v
n
n
1
s
e
s
setvar[playerHeading, getheading[wobjectgetplayer[]]]
i
26
TABLE
2
k
v
n
n
1
s
e
s
setvar[relativeAngle, abs[getvar[portalHeading] - getvar[playerHeading]]]
i
26
TABLE
2
k
v
n
n
1
s
e
s
setvar[relativeAngle, iif[getvar[relativeAngle] > 180, 360 - getvar[relativeAngle], getvar[relativeAngle]]]
i
26
TABLE
2
k
v
n
n
1
s
e
s
setvar[turnDirection, iif[randint[0,2] == 0, -90, 90]]
i
26
TABLE
2
k
v
n
n
1
s
e
s
getvar[relativeAngle] <= getvar[debugAngle]
i
26
TABLE
2
k
v
n
n
1
s
e
s
setvar[newHeading, abs[getvar[playerHeading] + getvar[turnDirection]]]
TABLE
2
K
V
n
n
3
i
2
s
/vt opt set enablenav false
i
2
s
/vt opt set enablecombat false
i
1
s
avoid_portal
s
watch_portal
i
6
i
1
i
5
s
watch_portal
s
watch_portal
i
1
i
9
i
0
TABLE
2
k
v
n
n
3
s
s
s
watch_portal
s
r
d
1
s
t
d
120
s
watch_portal
i
6
i
8
i
1
TABLE
2
k
v
n
n
1
s
e
s
\/me portalHeading \= +getvar[portalHeading]
s
avoid_portal
i
6
i
8
i
2
TABLE
2
k
v
n
n
1
s
e
s
\/me playerHeading \= +getvar[playerHeading]
s
avoid_portal
i
6
i
8
i
3
TABLE
2
k
v
n
n
1
s
e
s
\/me relativeAngle \= +getvar[relativeAngle]
s
avoid_portal
i
6
i
8
i
4
TABLE
2
k
v
n
n
1
s
e
s
\/me Portal detected ahead\! Avoiding now\!
s
avoid_portal
i
6
i
8
i
5
TABLE
2
k
v
n
n
1
s
e
s
\/me is too close to +wobjectgetname[wobjectfindnearestbyobjectclass[14]]
s
avoid_portal
i
6
i
8
i
6
TABLE
2
k
v
n
n
1
s
e
s
\/me at +coordinatetostring[getplayercoordinates[]]
s
avoid_portal
i
6
i
8
i
7
TABLE
2
k
v
n
n
1
s
e
s
\/ub face +getvar[newHeading]
s
avoid_portal
i
6
i
8
i
9
TABLE
2
k
v
n
n
1
s
e
s
\/ub setmotion forward 1
s
avoid_portal
i
6
i
8
i
11
TABLE
2
k
v
n
n
1
s
e
s
\/ub setmotion forward 0
s
avoid_portal
i
6
i
8
i
12
TABLE
2
k
v
n
n
1
s
e
s
\/ub face +getvar[playerHeading]
s
avoid_portal
i
6
i
8
i
14
TABLE
2
k
v
n
n
1
s
e
s
\/ub setmotion forward 1
s
avoid_portal
i
6
i
8
i
16
TABLE
2
k
v
n
n
1
s
e
s
\/ub setmotion forward 0
s
avoid_portal
i
6
i
8
i
17
TABLE
2
k
v
n
n
1
s
e
s
\/mm nextwp
s
avoid_portal
i
6
i
8
i
18
TABLE
2
k
v
n
n
1
s
e
s
\/vt opt set enablenav true
s
avoid_portal
i
6
i
8
i
19
TABLE
2
k
v
n
n
1
s
e
s
\/vt setmetastate watch_portal
s
avoid_portal
i
1
i
9
i
0
TABLE
2
k
v
n
n
3
s
s
s
watch_portal
s
r
d
1
s
t
d
30
s
avoid_portal

12024
met/neftet.met Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,12 +1,24 @@
uTank2 NAV 1.2
4
8
10
3
-20.6627984364827
-41.8583373387655
2.08333134651184E-05
0
2000
4
-20.6627984364827
-41.8583373387655
2.08333134651184E-05
0
/ah
3
-20.6627984364827
-41.8583373387655
2.08333134651184E-05
0
10000
0
59.3589282353719
-28.5375727335612

View file

@ -1,6 +1,6 @@
uTank2 NAV 1.2
4
34
37
4
59.5416052500407
-28.4145641962687
@ -37,6 +37,24 @@ uTank2 NAV 1.2
0.0500208298365275
0
14000
3
59.5416052500407
-28.4145641962687
0.0500208298365275
0
2000
4
59.5416052500407
-28.4145641962687
0.0500208298365275
0
/vt opt set enablecombat false
3
59.5416052500407
-28.4145641962687
0.0500208298365275
0
2000
4
59.5416052500407
-28.4145641962687

View file

@ -1,6 +1,6 @@
uTank2 NAV 1.2
4
16
18
2
-66.9188193003337
-87.4330533027649
@ -13,12 +13,24 @@ uTank2 NAV 1.2
0.200020837783813
0
10000
3
-66.9188193003337
-87.4330533027649
0.200020837783813
0
2000
4
-66.9188193003337
-87.4330533027649
0.200020837783813
0
/ah
3
-66.9188193003337
-87.4330533027649
0.200020837783813
0
10000
0
59.3654500325521
-28.5106864929199

View file

@ -1,12 +1,24 @@
uTank2 NAV 1.2
4
30
32
3
0.290325609842936
12.8991326014201
0.505020840962728
0
2000
4
0.290325609842936
12.8991326014201
0.505020840962728
0
/ah
3
0.290325609842936
12.8991326014201
0.505020840962728
0
10000
0
59.3391182581584
-28.5698016484578

View file

@ -1,12 +1,24 @@
uTank2 NAV 1.2
4
49
51
3
69.2576966335376
21.0394041061401
1.55835838317871
0
2000
4
69.2576966335376
21.0394041061401
1.55835838317871
0
/ah
3
69.2576966335376
21.0394041061401
1.55835838317871
0
10000
0
59.33140001297
-28.5141708374023

View file

@ -1,6 +1,12 @@
uTank2 NAV 1.2
4
39
41
3
59.0599030017853
-28.8052037556966
0.0500208298365275
0
2000
4
59.0599030017853
-28.8052037556966
@ -12,6 +18,12 @@ uTank2 NAV 1.2
-28.8052037556966
0.0500208298365275
0
10000
3
59.0599030017853
-28.8052037556966
0.0500208298365275
0
5000
0
59.3230046590169

View file

@ -1,12 +1,24 @@
uTank2 NAV 1.2
4
59
61
3
-7.01842756271362
85.16130250295
0.370020866394043
0
2000
4
-7.01842756271362
85.16130250295
0.370020866394043
0
/ah
3
-7.01842756271362
85.16130250295
0.370020866394043
0
10000
0
59.3384010632833
-28.6191628138224

View file

@ -1,6 +1,24 @@
uTank2 NAV 1.2
4
20
24
3
-100.944974994659
-15.6830624977748
2.08333134651184E-05
0
2000
4
-100.944974994659
-15.6830624977748
2.08333134651184E-05
0
/vt opt set enablecombat false
3
-100.944974994659
-15.6830624977748
2.08333134651184E-05
0
2000
4
-100.944974994659
-15.6830624977748
@ -12,6 +30,12 @@ uTank2 NAV 1.2
-15.6830624977748
2.08333134651184E-05
0
10000
3
-100.944974994659
-15.6830624977748
2.08333134651184E-05
0
22000
4
-100.944974994659

View file

@ -1,6 +1,24 @@
uTank2 NAV 1.2
4
5
9
3
59.3687468528748
-28.5195071538289
0.0500208298365275
0
2000
4
59.3687468528748
-28.5195071538289
0.0500208298365275
0
/vt opt set enablecombat false
3
59.3687468528748
-28.5195071538289
0.0500208298365275
0
2000
4
59.3687468528748
-28.5195071538289
@ -12,6 +30,12 @@ uTank2 NAV 1.2
-28.5195071538289
0.0500208298365275
0
10000
3
59.3687468528748
-28.5195071538289
0.0500208298365275
0
15000
4
59.3687468528748

View file

@ -1,6 +1,24 @@
uTank2 NAV 1.2
4
19
23
3
-100.944974994659
-15.6830624977748
2.08333134651184E-05
0
2000
4
-100.944974994659
-15.6830624977748
2.08333134651184E-05
0
/vt opt set enablecombat false
3
-100.944974994659
-15.6830624977748
2.08333134651184E-05
0
2000
4
-100.944974994659
-15.6830624977748
@ -12,6 +30,12 @@ uTank2 NAV 1.2
-15.6830624977748
2.08333134651184E-05
0
10000
3
-100.944974994659
-15.6830624977748
2.08333134651184E-05
0
20000
0
-100.925855763753

View file

@ -1,12 +1,36 @@
uTank2 NAV 1.2
4
20
24
3
-101.708302195867
-96.4694164276123
2.08333134651184E-05
0
2000
4
-101.708302195867
-96.4694164276123
2.08333134651184E-05
0
/vt opt set enablecombat false
3
-101.708302195867
-96.4694164276123
2.08333134651184E-05
0
2000
4
-101.708302195867
-96.4694164276123
2.08333134651184E-05
0
/ah
3
-101.708302195867
-96.4694164276123
2.08333134651184E-05
0
10000
0
59.3255796750387
-28.5361920038859

Some files were not shown because too many files have changed in this diff Show more