add neftet, aetheria, nalicana test metas and metaf converter

This commit is contained in:
Erik 2026-03-07 21:35:59 +01:00
parent db0e55b8bb
commit feced6d4c3
37 changed files with 35832 additions and 0 deletions

View file

@ -0,0 +1,262 @@
~~
~~ 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}