~~ ~~ 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}