add neftet, aetheria, nalicana test metas and metaf converter
This commit is contained in:
parent
db0e55b8bb
commit
feced6d4c3
37 changed files with 35832 additions and 0 deletions
293
Nalicanas Test/nalicana_test.af
Normal file
293
Nalicanas Test/nalicana_test.af
Normal file
|
|
@ -0,0 +1,293 @@
|
|||
~~
|
||||
~~ 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}
|
||||
1624
Nalicanas Test/nalicana_test.met
Normal file
1624
Nalicanas Test/nalicana_test.met
Normal file
File diff suppressed because it is too large
Load diff
262
aetheria/empyrean_facility.af
Normal file
262
aetheria/empyrean_facility.af
Normal 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}
|
||||
1280
aetheria/empyrean_facility.met
Normal file
1280
aetheria/empyrean_facility.met
Normal file
File diff suppressed because it is too large
Load diff
12925
metaf_monolithic.py
Normal file
12925
metaf_monolithic.py
Normal file
File diff suppressed because it is too large
Load diff
728
neftet/neftet.af
Normal file
728
neftet/neftet.af
Normal file
|
|
@ -0,0 +1,728 @@
|
|||
~~ {
|
||||
~~ 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 getgameyear
|
||||
~~ }
|
||||
|
||||
~~
|
||||
~~ Merged Neftet meta (leader + follower)
|
||||
~~ Variables set by external launcher:
|
||||
~~ isLeader - 1 for leader, 0 for follower
|
||||
~~ followTarget - leader character name (follower only)
|
||||
~~ navRoute - main hunting route (leader only, e.g. neftet_route)
|
||||
~~ navRoute2 - alternate route after flower/prickly pickup (leader only, e.g. neftet_route2)
|
||||
~~ navWaitFollow - return-to-start route (both roles, e.g. neftet_wait_follow / neftet_wait_follow2)
|
||||
~~ (navCloseStopRangeDefault removed - hardcoded to 0.00825 for both roles)
|
||||
~~
|
||||
|
||||
~~
|
||||
~~ 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: {death} ~~ {
|
||||
IF: ExitPortal
|
||||
DO: Chat {/vt opt set enablebuffing false}
|
||||
IF: ExitPortal
|
||||
DO: Chat {/vt opt set enablenav true}
|
||||
IF: ExitPortal
|
||||
DO: Chat {/vt opt set enablelooting false}
|
||||
IF: ExitPortal
|
||||
DO: Chat {/vt opt set enablecombat false}
|
||||
IF: Always
|
||||
DO: EmbedNav nav0__death_pause_nav {death_pause.nav}
|
||||
IF: NavEmpty
|
||||
DO: SetState {turn_in_quests}
|
||||
IF: Always
|
||||
DO: SetWatchdog 5 60 {stuck}
|
||||
~~ }
|
||||
STATE: {Default} ~~ {
|
||||
~~ One-time login setup state. Runs once when the character logs in.
|
||||
~~ Leader: enable settings, load nav route, create fellowship, init flower/prickly vars.
|
||||
~~ Follower: enable settings, set navpriorityboost. Both transition to Hunt.
|
||||
IF: All
|
||||
Expr {getvar[isLeader]}
|
||||
DO: DoAll
|
||||
Chat {/ub opt set VTank.PatchExpressionEngine true}
|
||||
Chat {/vt opt set enablecombat true}
|
||||
Chat {/vt opt set enablelooting true}
|
||||
Chat {/vt opt set enablebuffing true}
|
||||
Chat {/vt opt set enablenav true}
|
||||
Chat {/vt opt set navpriorityboost false}
|
||||
ChatExpr {\/vt nav load +getvar[navRoute]}
|
||||
Chat {/ub fellow create Sawato Rockstyle}
|
||||
DoExpr {setvar[pickFlowers, 1]}
|
||||
DoExpr {setvar[pokePricklys, 1]}
|
||||
DoExpr {setvar[pickupRange, 10]}
|
||||
DoExpr {setvar[ammoType, cond[getinvcount[Wrapped Bundle of Quarrelshafts]>0, 1, cond[getinvcount[Wrapped Bundle of Arrowshafts]>0, 2, 0]]]}
|
||||
SetState {Hunt}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]==0}
|
||||
DO: DoAll
|
||||
Chat {/ub opt set VTank.PatchExpressionEngine true}
|
||||
Chat {/vt opt set enablecombat true}
|
||||
Chat {/vt opt set enablelooting true}
|
||||
Chat {/vt opt set enablebuffing true}
|
||||
Chat {/vt opt set enablenav true}
|
||||
Chat {/vt opt set navpriorityboost true}
|
||||
DoExpr {setvar[ammoType, cond[getinvcount[Wrapped Bundle of Quarrelshafts]>0, 1, cond[getinvcount[Wrapped Bundle of Arrowshafts]>0, 2, 0]]]}
|
||||
SetState {Hunt}
|
||||
~~ }
|
||||
STATE: {Hunt} ~~ {
|
||||
~~ Main hunting/monitoring loop. Both roles enter here after setup or returning from side tasks.
|
||||
~~ Leader: loads navRoute, hunts along route, flower/prickly pickup, DistToRteGE, toggle commands.
|
||||
~~ Listens for #alexgillarkillar tells and auto-recruits sender to fellowship.
|
||||
~~ Follower: issues /ub follow once when leader is in range, leader-leave detection via ChatCapture.
|
||||
~~ If not in fellowship and leader nearby, sends #alexgillarkillar tell every 5s.
|
||||
IF: All
|
||||
Expr {getvar[isLeader]}
|
||||
DO: DoAll
|
||||
Chat {/vt opt set navpriorityboost false}
|
||||
ChatExpr {\/vt nav load +getvar[navRoute]}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]==0}
|
||||
Expr {wobjectfindnearestbynameandobjectclass[24, getvar[followTarget]]!=0}
|
||||
DO: ChatExpr {\/ub follow +getvar[followTarget]}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]==0}
|
||||
Expr {getfellowshipstatus[]==0}
|
||||
Expr {wobjectfindnearestbynameandobjectclass[24, getvar[followTarget]]!=0}
|
||||
SecsInStateGE 5
|
||||
DO: DoAll
|
||||
ChatExpr {\/t +getvar[followTarget]+`\, #alexgillarkillar`}
|
||||
SetState {Hunt}
|
||||
IF: All
|
||||
Expr {getcharquadprop[6]>=1500000}
|
||||
Expr {getcharintprop[333]>=5}
|
||||
Expr {getcharintprop[334]>=5}
|
||||
Expr {getcharintprop[335]>=5}
|
||||
Expr {getcharintprop[336]>=5}
|
||||
Expr {getcharintprop[338]>=5}
|
||||
Expr {getcharintprop[339]>=5}
|
||||
Expr {getcharintprop[340]>=5}
|
||||
Expr {getcharintprop[342]>=5}
|
||||
Expr {getcharintprop[343]>=5}
|
||||
Expr {getcharintprop[365]>=10}
|
||||
Any
|
||||
Expr {getcharintprop[333]<10}
|
||||
Expr {getcharintprop[335]<10}
|
||||
DO: SetState {seer_cap}
|
||||
IF: All
|
||||
Expr {getcharquadprop[6]>=1500000}
|
||||
Any
|
||||
Expr {getcharintprop[333]<5}
|
||||
Expr {getcharintprop[334]<5}
|
||||
Expr {getcharintprop[335]<5}
|
||||
Expr {getcharintprop[336]<5}
|
||||
Expr {getcharintprop[338]<5}
|
||||
Expr {getcharintprop[339]<5}
|
||||
Expr {getcharintprop[340]<5}
|
||||
Expr {getcharintprop[342]<5}
|
||||
Expr {getcharintprop[343]<5}
|
||||
Expr {getcharintprop[365]<10}
|
||||
DO: SetState {lum_cap}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]}
|
||||
Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[8]]]<=getvar[pickupRange]}
|
||||
Expr {wobjectgetname[wobjectfindnearestbyobjectclass[8]]==Prickly Pear}
|
||||
Expr {getvar[pokePricklys]==1}
|
||||
DO: SetState {picking_flowers}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]}
|
||||
Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[8]]]<=getvar[pickupRange]}
|
||||
Expr {wobjectgetname[wobjectfindnearestbyobjectclass[8]]==Desert Flower}
|
||||
Expr {getvar[pickFlowers]==1}
|
||||
DO: SetState {picking_flowers}
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: Always
|
||||
DO: SetWatchdog 10 600 {stuck}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]}
|
||||
ChatMatch {^\[Fellowship\].*(say|says), \"#toggle_flowers\"$}
|
||||
DO: CallState {toggle_flowers} {Hunt}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]}
|
||||
ChatMatch {^\[Fellowship\].*(say|says), \"#toggle_pricklys\"$}
|
||||
DO: CallState {toggle_pricklys} {Hunt}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]}
|
||||
ChatCapture {(^(\[[A-z]+?\] |)You|.*\<Tell:IIDString:.+:(?<who>[^\<]*)\>.+\<\\Tell\>) .*, \"#alexgillarkillar\"$} {}
|
||||
DO: ChatExpr {\/ub fellow recruit +getvar[capturegroup_who]}
|
||||
IF: All
|
||||
ItemCountLE 100 {Prismatic Taper}
|
||||
NoMobsInDist 5
|
||||
DO: DoAll
|
||||
Chat {/fellowship Out of tapers! Recomping.}
|
||||
SetState {recomp}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]}
|
||||
DistToRteGE 1000
|
||||
DO: SetState {turn_in_quests}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]}
|
||||
DistToRteGE 100
|
||||
DO: SetState {stuck}
|
||||
IF: All
|
||||
ItemCountLE 10 {Mana Scarab}
|
||||
NoMobsInDist 5
|
||||
DO: DoAll
|
||||
Chat {/fellowship Out of mana scarabs. Recomping.}
|
||||
SetState {recomp_mana_scarab}
|
||||
IF: All
|
||||
Expr {getvar[ammoType]==1}
|
||||
Any
|
||||
ItemCountLE 10 {Wrapped Bundle of Deadly Prismatic Arrowheads}
|
||||
ItemCountLE 10 {Wrapped Bundle of Quarrelshafts}
|
||||
NoMobsInDist 5
|
||||
DO: DoAll
|
||||
Chat {/fellowship Low on xbow ammo. Recomping.}
|
||||
SetState {recomp_missile}
|
||||
IF: All
|
||||
Expr {getvar[ammoType]==2}
|
||||
Any
|
||||
ItemCountLE 10 {Wrapped Bundle of Deadly Prismatic Arrowheads}
|
||||
ItemCountLE 10 {Wrapped Bundle of Arrowshafts}
|
||||
NoMobsInDist 5
|
||||
DO: DoAll
|
||||
Chat {/fellowship Low on bow ammo. Recomping.}
|
||||
SetState {recomp_missile}
|
||||
IF: All
|
||||
MainSlotsLE 4
|
||||
NoMobsInDist 5
|
||||
DO: SetState {give_keys}
|
||||
IF: All
|
||||
ItemCountGE 1000 {A'nekshay Token}
|
||||
NoMobsInDist 5
|
||||
DO: DoAll
|
||||
Chat {/fellowship Turning in A'nekshay Tokens.}
|
||||
SetState {go_to_atokens}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]==0}
|
||||
ChatCapture {(?<who>\w[\w ]*\w) has left your Fellowship} {}
|
||||
Expr {getvar[capturegroup_who]==getvar[followTarget]}
|
||||
DO: DoAll
|
||||
Chat {/ub fellow quit}
|
||||
SetState {turn_in_quests}
|
||||
~~ }
|
||||
STATE: {picking_flowers} ~~ {
|
||||
~~ Leader-only: flower/prickly pickup. Follower never reaches this state.
|
||||
IF: Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[8]]]<=getvar[pickupRange]+3}
|
||||
DO: DoAll
|
||||
DoExpr {setvar[ObjectClose, 1]}
|
||||
EmbedNav nav1__pickup_nav {pickup.nav}
|
||||
IF: All
|
||||
Expr {getvar[ObjectClose]==1}
|
||||
Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[8]]]>getvar[pickupRange]+4}
|
||||
DO: DoAll
|
||||
DoExpr {setvar[ObjectClose, 0]}
|
||||
SetState {Reset}
|
||||
IF: All
|
||||
Expr {getvar[ObjectClose]==1}
|
||||
SecsInStateGE 3
|
||||
DO: DoAll
|
||||
DoExpr {setvar[ObjectClose, 0]}
|
||||
SetState {Reset}
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: Always
|
||||
DO: SetWatchdog 5 120 {stuck}
|
||||
~~ }
|
||||
STATE: {give_keys} ~~ {
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
Chat {/vt opt set enablecombat false}
|
||||
Chat {/vt opt set enablebuffing false}
|
||||
Chat {/vt nav load ah_give_keys}
|
||||
IF: Always
|
||||
DO: SetWatchdog 3 300 {Default}
|
||||
IF: NavEmpty
|
||||
DO: SetState {stuck}
|
||||
~~ }
|
||||
STATE: {go_to_atokens} ~~ {
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: All
|
||||
Expr {testvar[goATokensNavLoaded]}
|
||||
NavEmpty
|
||||
DO: DoAll
|
||||
DoExpr {clearvar[goATokensNavLoaded]}
|
||||
SetState {hand_over_atokens}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
DoExpr {setvar[goATokensNavLoaded, 1]}
|
||||
Chat {/vt opt set enablecombat false}
|
||||
Chat {/vt opt set enablebuffing false}
|
||||
Chat {/vt nav load anekshey_tokens_to_proms}
|
||||
Chat {/vt opt set enablenav true}
|
||||
SetWatchdog 5 300 {stuck}
|
||||
~~ }
|
||||
STATE: {go_to_start} ~~ {
|
||||
~~ Loads navWaitFollow to rendezvous point. Re-enables combat/looting/buffing, then goes to Hunt.
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
Chat {/vt opt set enablecombat true}
|
||||
Chat {/vt opt set enablelooting true}
|
||||
Chat {/vt opt set enablebuffing true}
|
||||
ChatExpr {\/vt nav load +getvar[navWaitFollow]}
|
||||
SetWatchdog 5 300 {stuck}
|
||||
IF: All
|
||||
SecsInStateGE 3
|
||||
NavEmpty
|
||||
DO: SetState {Hunt}
|
||||
~~ }
|
||||
STATE: {hand_over_atokens} ~~ {
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: Expr {getvar[atokenRetries]>=40}
|
||||
DO: DoAll
|
||||
Chat {/f A'nekshay token hand-over failed after 40 retries. Bailing.}
|
||||
DoExpr {clearvar[atokenRetries]}
|
||||
SetState {turn_in_quests}
|
||||
IF: ItemCountGE 20 {A'nekshay Token}
|
||||
DO: DoAll
|
||||
DoExpr {setvar[atokenRetries, getvar[atokenRetries]+1]}
|
||||
Chat {/ub give 20 A'nekshay Token to Higashiyama Akako}
|
||||
Chat {/ub prepclick yes 5}
|
||||
SetState {wait_atokens}
|
||||
IF: ItemCountLE 19 {A'nekshay Token}
|
||||
DO: DoAll
|
||||
DoExpr {clearvar[atokenRetries]}
|
||||
SetState {turn_in_quests}
|
||||
~~ }
|
||||
STATE: {Reset} ~~ {
|
||||
~~ Reset: go to turn_in_quests to restart the loop.
|
||||
IF: Always
|
||||
DO: SetState {turn_in_quests}
|
||||
~~ }
|
||||
STATE: {recomp} ~~ {
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
Chat {/vt opt set enablecombat false}
|
||||
Chat {/vt opt set enablebuffing false}
|
||||
Chat {/vt nav load ah_recomp}
|
||||
Chat {/vt opt set enablenav true}
|
||||
IF: Always
|
||||
DO: SetWatchdog 3 300 {Default}
|
||||
IF: NavEmpty
|
||||
DO: SetState {stuck}
|
||||
~~ }
|
||||
STATE: {recomp_mana_scarab} ~~ {
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
Chat {/vt opt set enablecombat false}
|
||||
Chat {/vt opt set enablebuffing false}
|
||||
Chat {/vt opt set NavCloseStopRange 0.00425}
|
||||
Chat {/vt nav load recomp_gilly}
|
||||
IF: SecsInStateGE 300
|
||||
DO: DoAll
|
||||
Chat {/vt opt set NavCloseStopRange 0.00825}
|
||||
SetState {turn_in_quests}
|
||||
IF: NavEmpty
|
||||
DO: DoAll
|
||||
Chat {/vt opt set NavCloseStopRange 0.00825}
|
||||
SetState {stuck}
|
||||
~~ }
|
||||
STATE: {recomp_missile} ~~ {
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
Chat {/vt opt set enablecombat false}
|
||||
Chat {/vt opt set enablebuffing false}
|
||||
Chat {/vt nav load recomp_laurana}
|
||||
IF: Always
|
||||
DO: SetWatchdog 3 300 {stuck}
|
||||
IF: NavEmpty
|
||||
DO: SetState {stuck}
|
||||
~~ }
|
||||
STATE: {stuck} ~~ {
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
Chat {/f #turn_in_quests}
|
||||
SetState {turn_in_quests}
|
||||
~~ }
|
||||
STATE: {toggle_flowers} ~~ {
|
||||
~~ Leader-only: toggled via CallState from Hunt.
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
DoExpr {setvar[pickFlowers, getvar[pickFlowers]^1]}
|
||||
ChatExpr {\/f Pick flowers\: +cstr[(getvar[pickFlowers])]}
|
||||
Return
|
||||
~~ }
|
||||
STATE: {toggle_pricklys} ~~ {
|
||||
~~ Leader-only: toggled via CallState from Hunt.
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
DoExpr {setvar[pokePricklys, getvar[pokePricklys]^1]}
|
||||
ChatExpr {\/f Poke pricklys\: +cstr[(getvar[pokePricklys])]}
|
||||
Return
|
||||
~~ }
|
||||
STATE: {turn_in_quests} ~~ {
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
Chat {/vt nav load neftet_quests}
|
||||
Chat {/vt opt set enablenav true}
|
||||
Chat {/vt opt set enablecombat false}
|
||||
Chat {/vt opt set enablebuffing false}
|
||||
Chat {/vt opt set NavCloseStopRange 0.008}
|
||||
IF: NavEmpty
|
||||
DO: SetState {go_to_start}
|
||||
IF: Always
|
||||
DO: SetWatchdog 5 120 {turn_in_quests}
|
||||
~~ }
|
||||
STATE: {wait_atokens} ~~ {
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: ChatMatch {Higashiyama Akako gives you 10 Promissory Notes}
|
||||
DO: SetState {hand_over_atokens}
|
||||
IF: Always
|
||||
DO: SetWatchdog 0 3 {hand_over_atokens}
|
||||
~~ }
|
||||
|
||||
STATE: {lum_cap} ~~ {
|
||||
~~ Luminance aura auto-purchase: disable combat, navigate to Nalicana area, then buy auras.
|
||||
~~ Uses nav_nalicana to get to token pickup position. Returns to Default when done.
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: All
|
||||
Expr {testvar[lumCapNavLoaded]}
|
||||
NavEmpty
|
||||
DO: DoAll
|
||||
DoExpr {clearvar[lumCapNavLoaded]}
|
||||
SetState {lum_pick_aura}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
DoExpr {setvar[lumCapNavLoaded, 1]}
|
||||
Chat {/vt opt set enablecombat false}
|
||||
Chat {/vt opt set enablelooting false}
|
||||
Chat {/vt opt set enablebuffing true}
|
||||
Chat {/vt opt set enablenav true}
|
||||
Chat {/vt nav load nav_nalicana}
|
||||
SetWatchdog 5 300 {stuck}
|
||||
~~ }
|
||||
STATE: {lum_pick_aura} ~~ {
|
||||
~~ Compute cheapest aura to buy. "Cheapest first": find lowest rank among non-maxed auras.
|
||||
~~ Standard auras (cap 5): cost = (rank+2)*50000. AllSkills (cap 10): cost = (rank+1)*100000.
|
||||
~~ Aura IDs: 333=Valor, 334=Protection, 335=Glory, 336=Temperance, 338=AethericVision,
|
||||
~~ 343=Craftsman, 339=ManaFlow, 340=ManaInfusion, 342=Purity, 365=AllSkills
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
DoExpr {setvar[lumMinRank, 999]}
|
||||
DoExpr {setvar[lumMinRank, iif[getcharintprop[333]<5&&getcharintprop[333]<getvar[lumMinRank],getcharintprop[333],getvar[lumMinRank]]]}
|
||||
DoExpr {setvar[lumMinRank, iif[getcharintprop[334]<5&&getcharintprop[334]<getvar[lumMinRank],getcharintprop[334],getvar[lumMinRank]]]}
|
||||
DoExpr {setvar[lumMinRank, iif[getcharintprop[335]<5&&getcharintprop[335]<getvar[lumMinRank],getcharintprop[335],getvar[lumMinRank]]]}
|
||||
DoExpr {setvar[lumMinRank, iif[getcharintprop[336]<5&&getcharintprop[336]<getvar[lumMinRank],getcharintprop[336],getvar[lumMinRank]]]}
|
||||
DoExpr {setvar[lumMinRank, iif[getcharintprop[338]<5&&getcharintprop[338]<getvar[lumMinRank],getcharintprop[338],getvar[lumMinRank]]]}
|
||||
DoExpr {setvar[lumMinRank, iif[getcharintprop[343]<5&&getcharintprop[343]<getvar[lumMinRank],getcharintprop[343],getvar[lumMinRank]]]}
|
||||
DoExpr {setvar[lumMinRank, iif[getcharintprop[339]<5&&getcharintprop[339]<getvar[lumMinRank],getcharintprop[339],getvar[lumMinRank]]]}
|
||||
DoExpr {setvar[lumMinRank, iif[getcharintprop[340]<5&&getcharintprop[340]<getvar[lumMinRank],getcharintprop[340],getvar[lumMinRank]]]}
|
||||
DoExpr {setvar[lumMinRank, iif[getcharintprop[342]<5&&getcharintprop[342]<getvar[lumMinRank],getcharintprop[342],getvar[lumMinRank]]]}
|
||||
DoExpr {setvar[lumMinRank, iif[getcharintprop[365]<10&&getcharintprop[365]<getvar[lumMinRank],getcharintprop[365],getvar[lumMinRank]]]}
|
||||
SetState {lum_select_token}
|
||||
~~ }
|
||||
STATE: {lum_select_token} ~~ {
|
||||
~~ Select which token to pick up based on lumMinRank. First match at lowest rank wins.
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: All
|
||||
Expr {getcharintprop[333]<5}
|
||||
Expr {getcharintprop[333]==getvar[lumMinRank]}
|
||||
Expr {getcharquadprop[6]>=(getcharintprop[333]+2)*50000}
|
||||
DO: DoAll
|
||||
DoExpr {setvar[lumToken, `Token of the Aura of Valor`]}
|
||||
SetState {lum_pickup_token}
|
||||
IF: All
|
||||
Expr {getcharintprop[334]<5}
|
||||
Expr {getcharintprop[334]==getvar[lumMinRank]}
|
||||
Expr {getcharquadprop[6]>=(getcharintprop[334]+2)*50000}
|
||||
DO: DoAll
|
||||
DoExpr {setvar[lumToken, `Token of the Aura of Protection`]}
|
||||
SetState {lum_pickup_token}
|
||||
IF: All
|
||||
Expr {getcharintprop[335]<5}
|
||||
Expr {getcharintprop[335]==getvar[lumMinRank]}
|
||||
Expr {getcharquadprop[6]>=(getcharintprop[335]+2)*50000}
|
||||
DO: DoAll
|
||||
DoExpr {setvar[lumToken, `Token of the Aura of Glory`]}
|
||||
SetState {lum_pickup_token}
|
||||
IF: All
|
||||
Expr {getcharintprop[336]<5}
|
||||
Expr {getcharintprop[336]==getvar[lumMinRank]}
|
||||
Expr {getcharquadprop[6]>=(getcharintprop[336]+2)*50000}
|
||||
DO: DoAll
|
||||
DoExpr {setvar[lumToken, `Token of the Aura of Temperance`]}
|
||||
SetState {lum_pickup_token}
|
||||
IF: All
|
||||
Expr {getcharintprop[338]<5}
|
||||
Expr {getcharintprop[338]==getvar[lumMinRank]}
|
||||
Expr {getcharquadprop[6]>=(getcharintprop[338]+2)*50000}
|
||||
DO: DoAll
|
||||
DoExpr {setvar[lumToken, `Token of the Aura of Aetheric Vision`]}
|
||||
SetState {lum_pickup_token}
|
||||
IF: All
|
||||
Expr {getcharintprop[343]<5}
|
||||
Expr {getcharintprop[343]==getvar[lumMinRank]}
|
||||
Expr {getcharquadprop[6]>=(getcharintprop[343]+2)*50000}
|
||||
DO: DoAll
|
||||
DoExpr {setvar[lumToken, `Token of the Aura of the Craftsman`]}
|
||||
SetState {lum_pickup_token}
|
||||
IF: All
|
||||
Expr {getcharintprop[339]<5}
|
||||
Expr {getcharintprop[339]==getvar[lumMinRank]}
|
||||
Expr {getcharquadprop[6]>=(getcharintprop[339]+2)*50000}
|
||||
DO: DoAll
|
||||
DoExpr {setvar[lumToken, `Token of the Aura of Mana Flow`]}
|
||||
SetState {lum_pickup_token}
|
||||
IF: All
|
||||
Expr {getcharintprop[340]<5}
|
||||
Expr {getcharintprop[340]==getvar[lumMinRank]}
|
||||
Expr {getcharquadprop[6]>=(getcharintprop[340]+2)*50000}
|
||||
DO: DoAll
|
||||
DoExpr {setvar[lumToken, `Token of the Aura of Mana Infusion`]}
|
||||
SetState {lum_pickup_token}
|
||||
IF: All
|
||||
Expr {getcharintprop[342]<5}
|
||||
Expr {getcharintprop[342]==getvar[lumMinRank]}
|
||||
Expr {getcharquadprop[6]>=(getcharintprop[342]+2)*50000}
|
||||
DO: DoAll
|
||||
DoExpr {setvar[lumToken, `Token of the Aura of Purity`]}
|
||||
SetState {lum_pickup_token}
|
||||
IF: All
|
||||
Expr {getcharintprop[365]<10}
|
||||
Expr {getcharintprop[365]==getvar[lumMinRank]}
|
||||
Expr {getcharquadprop[6]>=(getcharintprop[365]+1)*100000}
|
||||
DO: DoAll
|
||||
DoExpr {setvar[lumToken, `Token of the Aura of the World`]}
|
||||
SetState {lum_pickup_token}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
Chat {/f All Nalicana auras maxed or can't afford. Heading back.}
|
||||
SetState {turn_in_quests}
|
||||
~~ }
|
||||
STATE: {lum_pickup_token} ~~ {
|
||||
~~ Pick up the selected token from the ground spawn. Wait for it to appear in inventory.
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: Expr {getitemcountininventorybyname[getvar[lumToken]]>=1}
|
||||
DO: SetState {lum_give_token}
|
||||
IF: SecsInStateGE 30
|
||||
DO: DoAll
|
||||
Chat {/f Failed to pick up token. Retrying...}
|
||||
SetState {lum_pickup_token}
|
||||
IF: Not Expr {getitemcountininventorybyname[getvar[lumToken]]>=1}
|
||||
DO: DoAll
|
||||
ChatExpr {\/ub use +getvar[lumToken]}
|
||||
SetWatchdog 5 120 {Default}
|
||||
~~ }
|
||||
STATE: {lum_give_token} ~~ {
|
||||
~~ Give the token to Nalicana. Prepclick yes for confirmation dialog.
|
||||
~~ Chat responses:
|
||||
~~ Success: "You feel a surge of energy pass through you as the Light empowers your being"
|
||||
~~ Already maxed: "You cannot increase your Aura of ... any further."
|
||||
~~ Can't afford: "Nalicana tells you, "You do not have enough Luminance.""
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: ChatMatch {You do not have enough Luminance}
|
||||
DO: DoAll
|
||||
Chat {/f Not enough luminance. Heading back.}
|
||||
SetState {turn_in_quests}
|
||||
IF: ChatMatch {You cannot increase}
|
||||
DO: SetState {lum_wait_spawn}
|
||||
IF: ChatMatch {You feel a surge of energy}
|
||||
DO: SetState {lum_wait_spawn}
|
||||
IF: SecsInStateGE 15
|
||||
DO: SetState {lum_give_token}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
Chat {/ub prepclick yes 5}
|
||||
ChatExpr {\/ub givep +getvar[lumToken]+` to Nalicana`}
|
||||
SetWatchdog 5 120 {Default}
|
||||
~~ }
|
||||
STATE: {lum_wait_spawn} ~~ {
|
||||
~~ Wait 20s for next token to spawn, then nav back to pickup position via nav_nalicanareset.
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: All
|
||||
Expr {testvar[lumNavLoaded]}
|
||||
NavEmpty
|
||||
DO: DoAll
|
||||
DoExpr {clearvar[lumNavLoaded]}
|
||||
SetState {lum_pick_aura}
|
||||
IF: SecsInStateGE 60
|
||||
DO: DoAll
|
||||
DoExpr {clearvar[lumNavLoaded]}
|
||||
SetState {lum_pick_aura}
|
||||
IF: SecsInStateGE 20
|
||||
DO: DoAll
|
||||
DoExpr {setvar[lumNavLoaded,1]}
|
||||
Chat {/vt nav load nav_nalicanareset}
|
||||
IF: Always
|
||||
DO: None
|
||||
~~ }
|
||||
|
||||
STATE: {seer_cap} ~~ {
|
||||
~~ Seer aura auto-purchase: disable combat, navigate to Liam of Gelid.
|
||||
~~ Uses nav_liamofgelid to get to token area. Returns to Default when done.
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: All
|
||||
Expr {testvar[seerCapNavLoaded]}
|
||||
NavEmpty
|
||||
DO: DoAll
|
||||
DoExpr {clearvar[seerCapNavLoaded]}
|
||||
SetState {seer_pay}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
DoExpr {setvar[seerCapNavLoaded, 1]}
|
||||
Chat {/vt opt set enablecombat false}
|
||||
Chat {/vt opt set enablelooting false}
|
||||
Chat {/vt opt set enablebuffing true}
|
||||
Chat {/vt opt set enablenav true}
|
||||
Chat {/vt nav load nav_liamofgelid}
|
||||
SetWatchdog 5 300 {stuck}
|
||||
~~ }
|
||||
STATE: {seer_pay} ~~ {
|
||||
~~ Give Trade Note (250,000) to Liam of Gelid. Required once per character, harmless to retry.
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: SecsInStateGE 5
|
||||
DO: SetState {seer_pick_aura}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
Chat {/ub prepclick yes 5}
|
||||
Chat {/ub givep 1 Trade Note (250,000) to Liam of Gelid}
|
||||
~~ }
|
||||
STATE: {seer_pick_aura} ~~ {
|
||||
~~ Compute cheapest seer aura. Seer cost = (rank+7)*50000.
|
||||
~~ Properties: 333=Destruction (Damage Rating), 335=Retribution (Crit Damage). Both cap at 10 total.
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
DoExpr {setvar[lumMinRank, 999]}
|
||||
DoExpr {setvar[lumMinRank, iif[getcharintprop[333]<10&&getcharintprop[333]<getvar[lumMinRank],getcharintprop[333],getvar[lumMinRank]]]}
|
||||
DoExpr {setvar[lumMinRank, iif[getcharintprop[335]<10&&getcharintprop[335]<getvar[lumMinRank],getcharintprop[335],getvar[lumMinRank]]]}
|
||||
SetState {seer_select_token}
|
||||
~~ }
|
||||
STATE: {seer_select_token} ~~ {
|
||||
~~ Select seer token. Cheapest first between Destruction (333) and Retribution (335).
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: All
|
||||
Expr {getcharintprop[333]<10}
|
||||
Expr {getcharintprop[333]==getvar[lumMinRank]}
|
||||
Expr {getcharquadprop[6]>=(getcharintprop[333]+7)*50000}
|
||||
DO: DoAll
|
||||
DoExpr {setvar[lumToken, `Dericost Token of the Aura of Destruction`]}
|
||||
SetState {seer_pickup_token}
|
||||
IF: All
|
||||
Expr {getcharintprop[335]<10}
|
||||
Expr {getcharintprop[335]==getvar[lumMinRank]}
|
||||
Expr {getcharquadprop[6]>=(getcharintprop[335]+7)*50000}
|
||||
DO: DoAll
|
||||
DoExpr {setvar[lumToken, `Dericost Token of the Aura of Retribution`]}
|
||||
SetState {seer_pickup_token}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
Chat {/f All seer auras maxed or can't afford. Heading back.}
|
||||
SetState {turn_in_quests}
|
||||
~~ }
|
||||
STATE: {seer_pickup_token} ~~ {
|
||||
~~ Pick up the selected seer token from the ground spawn near Liam.
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: Expr {getitemcountininventorybyname[getvar[lumToken]]>=1}
|
||||
DO: SetState {seer_give_token}
|
||||
IF: SecsInStateGE 30
|
||||
DO: DoAll
|
||||
Chat {/f Failed to pick up seer token. Retrying...}
|
||||
SetState {seer_pickup_token}
|
||||
IF: Not Expr {getitemcountininventorybyname[getvar[lumToken]]>=1}
|
||||
DO: DoAll
|
||||
ChatExpr {\/ub use +getvar[lumToken]}
|
||||
SetWatchdog 5 120 {Default}
|
||||
~~ }
|
||||
STATE: {seer_give_token} ~~ {
|
||||
~~ Give seer token to Liam of Gelid. Prepclick yes for confirmation dialog.
|
||||
~~ Success: "has been augmented"
|
||||
~~ Can't afford: "You do not have enough Luminance"
|
||||
~~ Already maxed: "You cannot increase"
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: ChatMatch {You do not have enough Luminance}
|
||||
DO: DoAll
|
||||
Chat {/f Not enough luminance for seer aura. Heading back.}
|
||||
SetState {turn_in_quests}
|
||||
IF: ChatMatch {You cannot increase}
|
||||
DO: SetState {seer_wait_spawn}
|
||||
IF: ChatMatch {has been augmented}
|
||||
DO: SetState {seer_wait_spawn}
|
||||
IF: SecsInStateGE 15
|
||||
DO: SetState {seer_give_token}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
Chat {/ub prepclick yes 5}
|
||||
ChatExpr {\/ub givep +getvar[lumToken]+` to Liam of Gelid`}
|
||||
SetWatchdog 5 120 {Default}
|
||||
~~ }
|
||||
STATE: {seer_wait_spawn} ~~ {
|
||||
~~ Wait 20s for next seer token to spawn, then loop back. No reset nav needed.
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: SecsInStateGE 20
|
||||
DO: SetState {seer_pick_aura}
|
||||
IF: Always
|
||||
DO: None
|
||||
~~ }
|
||||
|
||||
~~========================= ONLY NAVS APPEAR BELOW THIS LINE =========================~~
|
||||
|
||||
NAV: nav0__death_pause_nav once ~~ {
|
||||
pau 47.1262349446615 26.1864453474681 0.225020837783813 5000
|
||||
~~ }
|
||||
NAV: nav1__pickup_nav circular ~~ {
|
||||
cht 6.85679616481066 -19.8018191655477 2.08332513769468E-05 {/vt mexec actiontryuseitem[wobjectfindnearestbyobjectclass[8]]}
|
||||
pau 6.85679616481066 -19.8018191655477 2.08332513769468E-05 10000
|
||||
~~ }
|
||||
5042
neftet/neftet.met
Normal file
5042
neftet/neftet.met
Normal file
File diff suppressed because it is too large
Load diff
6685
src/metaf.cs
Normal file
6685
src/metaf.cs
Normal file
File diff suppressed because one or more lines are too long
6685
src/metaf_temp/Program.cs
Normal file
6685
src/metaf_temp/Program.cs
Normal file
File diff suppressed because one or more lines are too long
BIN
src/metaf_temp/bin/Debug/net8.0/metaf_temp
Normal file
BIN
src/metaf_temp/bin/Debug/net8.0/metaf_temp
Normal file
Binary file not shown.
23
src/metaf_temp/bin/Debug/net8.0/metaf_temp.deps.json
Normal file
23
src/metaf_temp/bin/Debug/net8.0/metaf_temp.deps.json
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v8.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v8.0": {
|
||||
"metaf_temp/1.0.0": {
|
||||
"runtime": {
|
||||
"metaf_temp.dll": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"metaf_temp/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
src/metaf_temp/bin/Debug/net8.0/metaf_temp.dll
Normal file
BIN
src/metaf_temp/bin/Debug/net8.0/metaf_temp.dll
Normal file
Binary file not shown.
BIN
src/metaf_temp/bin/Debug/net8.0/metaf_temp.exe
Normal file
BIN
src/metaf_temp/bin/Debug/net8.0/metaf_temp.exe
Normal file
Binary file not shown.
BIN
src/metaf_temp/bin/Debug/net8.0/metaf_temp.pdb
Normal file
BIN
src/metaf_temp/bin/Debug/net8.0/metaf_temp.pdb
Normal file
Binary file not shown.
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"runtimeOptions": {
|
||||
"tfm": "net8.0",
|
||||
"framework": {
|
||||
"name": "Microsoft.NETCore.App",
|
||||
"version": "8.0.0"
|
||||
},
|
||||
"configProperties": {
|
||||
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
|
||||
}
|
||||
}
|
||||
}
|
||||
10
src/metaf_temp/metaf_temp.csproj
Normal file
10
src/metaf_temp/metaf_temp.csproj
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
|
||||
BIN
src/metaf_temp/obj/Debug/net8.0/apphost
Normal file
BIN
src/metaf_temp/obj/Debug/net8.0/apphost
Normal file
Binary file not shown.
BIN
src/metaf_temp/obj/Debug/net8.0/apphost.exe
Normal file
BIN
src/metaf_temp/obj/Debug/net8.0/apphost.exe
Normal file
Binary file not shown.
22
src/metaf_temp/obj/Debug/net8.0/metaf_temp.AssemblyInfo.cs
Normal file
22
src/metaf_temp/obj/Debug/net8.0/metaf_temp.AssemblyInfo.cs
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("metaf_temp")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0b053cc34b0b483c93075146de4c506ac26a7fe3")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("metaf_temp")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("metaf_temp")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
// Generated by the MSBuild WriteCodeFragment class.
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
554bfbb3c846e6124921ae1bde05dc39653456f45384b3a8ec3b65bdce2c4a8c
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
is_global = true
|
||||
build_property.TargetFramework = net8.0
|
||||
build_property.TargetFrameworkIdentifier = .NETCoreApp
|
||||
build_property.TargetFrameworkVersion = v8.0
|
||||
build_property.TargetPlatformMinVersion =
|
||||
build_property.UsingMicrosoftNETSdkWeb =
|
||||
build_property.ProjectTypeGuids =
|
||||
build_property.InvariantGlobalization =
|
||||
build_property.PlatformNeutralAssembly =
|
||||
build_property.EnforceExtendedAnalyzerRules =
|
||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||
build_property.RootNamespace = metaf_temp
|
||||
build_property.ProjectDir = C:\Users\erikn\source\repos\metaf\src\metaf_temp\
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
build_property.EffectiveAnalysisLevelStyle = 8.0
|
||||
build_property.EnableCodeStyleSeverity =
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
// <auto-generated/>
|
||||
global using System;
|
||||
global using System.Collections.Generic;
|
||||
global using System.IO;
|
||||
global using System.Linq;
|
||||
global using System.Net.Http;
|
||||
global using System.Threading;
|
||||
global using System.Threading.Tasks;
|
||||
BIN
src/metaf_temp/obj/Debug/net8.0/metaf_temp.assets.cache
Normal file
BIN
src/metaf_temp/obj/Debug/net8.0/metaf_temp.assets.cache
Normal file
Binary file not shown.
|
|
@ -0,0 +1 @@
|
|||
e81717eb7ea8ce2e7f05628b43c684ba25c9665a62f3da3769ab2534cd948156
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
/mnt/c/Users/enihlen/source/repos/metaf/src/metaf_temp/bin/Debug/net8.0/metaf_temp
|
||||
/mnt/c/Users/enihlen/source/repos/metaf/src/metaf_temp/bin/Debug/net8.0/metaf_temp.deps.json
|
||||
/mnt/c/Users/enihlen/source/repos/metaf/src/metaf_temp/bin/Debug/net8.0/metaf_temp.runtimeconfig.json
|
||||
/mnt/c/Users/enihlen/source/repos/metaf/src/metaf_temp/bin/Debug/net8.0/metaf_temp.dll
|
||||
/mnt/c/Users/enihlen/source/repos/metaf/src/metaf_temp/bin/Debug/net8.0/metaf_temp.pdb
|
||||
/mnt/c/Users/enihlen/source/repos/metaf/src/metaf_temp/obj/Debug/net8.0/metaf_temp.GeneratedMSBuildEditorConfig.editorconfig
|
||||
/mnt/c/Users/enihlen/source/repos/metaf/src/metaf_temp/obj/Debug/net8.0/metaf_temp.AssemblyInfoInputs.cache
|
||||
/mnt/c/Users/enihlen/source/repos/metaf/src/metaf_temp/obj/Debug/net8.0/metaf_temp.AssemblyInfo.cs
|
||||
/mnt/c/Users/enihlen/source/repos/metaf/src/metaf_temp/obj/Debug/net8.0/metaf_temp.csproj.CoreCompileInputs.cache
|
||||
/mnt/c/Users/enihlen/source/repos/metaf/src/metaf_temp/obj/Debug/net8.0/metaf_temp.sourcelink.json
|
||||
/mnt/c/Users/enihlen/source/repos/metaf/src/metaf_temp/obj/Debug/net8.0/metaf_temp.dll
|
||||
/mnt/c/Users/enihlen/source/repos/metaf/src/metaf_temp/obj/Debug/net8.0/refint/metaf_temp.dll
|
||||
/mnt/c/Users/enihlen/source/repos/metaf/src/metaf_temp/obj/Debug/net8.0/metaf_temp.pdb
|
||||
/mnt/c/Users/enihlen/source/repos/metaf/src/metaf_temp/obj/Debug/net8.0/metaf_temp.genruntimeconfig.cache
|
||||
/mnt/c/Users/enihlen/source/repos/metaf/src/metaf_temp/obj/Debug/net8.0/ref/metaf_temp.dll
|
||||
C:\Users\erikn\source\repos\metaf\src\metaf_temp\bin\Debug\net8.0\metaf_temp.exe
|
||||
C:\Users\erikn\source\repos\metaf\src\metaf_temp\bin\Debug\net8.0\metaf_temp.deps.json
|
||||
C:\Users\erikn\source\repos\metaf\src\metaf_temp\bin\Debug\net8.0\metaf_temp.runtimeconfig.json
|
||||
C:\Users\erikn\source\repos\metaf\src\metaf_temp\bin\Debug\net8.0\metaf_temp.dll
|
||||
C:\Users\erikn\source\repos\metaf\src\metaf_temp\bin\Debug\net8.0\metaf_temp.pdb
|
||||
C:\Users\erikn\source\repos\metaf\src\metaf_temp\obj\Debug\net8.0\metaf_temp.GeneratedMSBuildEditorConfig.editorconfig
|
||||
C:\Users\erikn\source\repos\metaf\src\metaf_temp\obj\Debug\net8.0\metaf_temp.AssemblyInfoInputs.cache
|
||||
C:\Users\erikn\source\repos\metaf\src\metaf_temp\obj\Debug\net8.0\metaf_temp.AssemblyInfo.cs
|
||||
C:\Users\erikn\source\repos\metaf\src\metaf_temp\obj\Debug\net8.0\metaf_temp.csproj.CoreCompileInputs.cache
|
||||
C:\Users\erikn\source\repos\metaf\src\metaf_temp\obj\Debug\net8.0\metaf_temp.sourcelink.json
|
||||
C:\Users\erikn\source\repos\metaf\src\metaf_temp\obj\Debug\net8.0\metaf_temp.dll
|
||||
C:\Users\erikn\source\repos\metaf\src\metaf_temp\obj\Debug\net8.0\refint\metaf_temp.dll
|
||||
C:\Users\erikn\source\repos\metaf\src\metaf_temp\obj\Debug\net8.0\metaf_temp.pdb
|
||||
C:\Users\erikn\source\repos\metaf\src\metaf_temp\obj\Debug\net8.0\metaf_temp.genruntimeconfig.cache
|
||||
C:\Users\erikn\source\repos\metaf\src\metaf_temp\obj\Debug\net8.0\ref\metaf_temp.dll
|
||||
BIN
src/metaf_temp/obj/Debug/net8.0/metaf_temp.dll
Normal file
BIN
src/metaf_temp/obj/Debug/net8.0/metaf_temp.dll
Normal file
Binary file not shown.
|
|
@ -0,0 +1 @@
|
|||
49d97fe915326648caaacbe39fb31e95d275eea089d9076874fe2a43b966c817
|
||||
BIN
src/metaf_temp/obj/Debug/net8.0/metaf_temp.pdb
Normal file
BIN
src/metaf_temp/obj/Debug/net8.0/metaf_temp.pdb
Normal file
Binary file not shown.
|
|
@ -0,0 +1 @@
|
|||
{"documents":{"C:\\Users\\erikn\\source\\repos\\metaf\\*":"https://raw.githubusercontent.com/JJEII/metaf/0b053cc34b0b483c93075146de4c506ac26a7fe3/*"}}
|
||||
BIN
src/metaf_temp/obj/Debug/net8.0/ref/metaf_temp.dll
Normal file
BIN
src/metaf_temp/obj/Debug/net8.0/ref/metaf_temp.dll
Normal file
Binary file not shown.
BIN
src/metaf_temp/obj/Debug/net8.0/refint/metaf_temp.dll
Normal file
BIN
src/metaf_temp/obj/Debug/net8.0/refint/metaf_temp.dll
Normal file
Binary file not shown.
73
src/metaf_temp/obj/metaf_temp.csproj.nuget.dgspec.json
Normal file
73
src/metaf_temp/obj/metaf_temp.csproj.nuget.dgspec.json
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"C:\\Users\\erikn\\source\\repos\\metaf\\src\\metaf_temp\\metaf_temp.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"C:\\Users\\erikn\\source\\repos\\metaf\\src\\metaf_temp\\metaf_temp.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\Users\\erikn\\source\\repos\\metaf\\src\\metaf_temp\\metaf_temp.csproj",
|
||||
"projectName": "metaf_temp",
|
||||
"projectPath": "C:\\Users\\erikn\\source\\repos\\metaf\\src\\metaf_temp\\metaf_temp.csproj",
|
||||
"packagesPath": "C:\\Users\\erikn\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\erikn\\source\\repos\\metaf\\src\\metaf_temp\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\erikn\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net8.0"
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net8.0": {
|
||||
"targetAlias": "net8.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
},
|
||||
"SdkAnalysisLevel": "10.0.100"
|
||||
},
|
||||
"frameworks": {
|
||||
"net8.0": {
|
||||
"targetAlias": "net8.0",
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
16
src/metaf_temp/obj/metaf_temp.csproj.nuget.g.props
Normal file
16
src/metaf_temp/obj/metaf_temp.csproj.nuget.g.props
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\erikn\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="C:\Users\erikn\.nuget\packages\" />
|
||||
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
2
src/metaf_temp/obj/metaf_temp.csproj.nuget.g.targets
Normal file
2
src/metaf_temp/obj/metaf_temp.csproj.nuget.g.targets
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
|
||||
79
src/metaf_temp/obj/project.assets.json
Normal file
79
src/metaf_temp/obj/project.assets.json
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
{
|
||||
"version": 3,
|
||||
"targets": {
|
||||
"net8.0": {}
|
||||
},
|
||||
"libraries": {},
|
||||
"projectFileDependencyGroups": {
|
||||
"net8.0": []
|
||||
},
|
||||
"packageFolders": {
|
||||
"C:\\Users\\erikn\\.nuget\\packages\\": {},
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
|
||||
},
|
||||
"project": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\Users\\erikn\\source\\repos\\metaf\\src\\metaf_temp\\metaf_temp.csproj",
|
||||
"projectName": "metaf_temp",
|
||||
"projectPath": "C:\\Users\\erikn\\source\\repos\\metaf\\src\\metaf_temp\\metaf_temp.csproj",
|
||||
"packagesPath": "C:\\Users\\erikn\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\erikn\\source\\repos\\metaf\\src\\metaf_temp\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\erikn\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net8.0"
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net8.0": {
|
||||
"targetAlias": "net8.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
},
|
||||
"SdkAnalysisLevel": "10.0.100"
|
||||
},
|
||||
"frameworks": {
|
||||
"net8.0": {
|
||||
"targetAlias": "net8.0",
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.102/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
8
src/metaf_temp/obj/project.nuget.cache
Normal file
8
src/metaf_temp/obj/project.nuget.cache
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "qDgiRjqgdeo=",
|
||||
"success": true,
|
||||
"projectFilePath": "C:\\Users\\erikn\\source\\repos\\metaf\\src\\metaf_temp\\metaf_temp.csproj",
|
||||
"expectedPackageFiles": [],
|
||||
"logs": []
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue