Add viridian_rise meta with recorded circuit/run/getin navs
Some checks failed
/ test (push) Failing after 1s
Some checks failed
/ test (push) Failing after 1s
Lean hunting meta based on neftet.af: fellowship leader/follower support, gas-cloud dodge, group-wide runback on fellow death, group recomp via the shared ah_recomp hub nav, and death recovery via Viridian Rise Recall. Includes the vr_circuit, vr_run, and vr_getin routes recorded in-game. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
49db8d1900
commit
fb9342fcd5
8 changed files with 1810 additions and 75 deletions
187
af/viridian_rise.af
Normal file
187
af/viridian_rise.af
Normal file
|
|
@ -0,0 +1,187 @@
|
|||
~~
|
||||
~~ viridian_rise.af
|
||||
~~ Lean hunting loop for Viridian Rise, based on neftet.af with all economy/service
|
||||
~~ states (Bella augment service, lum/seer cap, A'nekshay tokens, stipend, turn-in
|
||||
~~ circuit, flower picking) stripped out except a simplified group recomp. All navs
|
||||
~~ are external (recorded/saved in-game, loaded by name) -- nothing embedded here.
|
||||
~~
|
||||
~~ ============================================================
|
||||
~~ Variables expected to be set externally (VTank Variables tab) before running:
|
||||
~~ isLeader - 1 for leader, 0 for follower
|
||||
~~ followTarget - leader character name (follower only)
|
||||
~~ attackRange - attackdistance value, e.g. 0.0208333
|
||||
~~ ============================================================
|
||||
~~ External navs (recorded in-game, loaded by name):
|
||||
~~ vr_circuit - main Viridian Rise hunting loop (leader) -- recorded, af/vr_circuit.af
|
||||
~~ vr_run - retreat route to a safe rally point -- recorded, af/vr_run.af
|
||||
~~ vr_getin - rally point through the portal back into the hunting area -- recorded, af/vr_getin.af
|
||||
~~ vr_death_recall - cast "Viridian Rise Recall" then land somewhere safe -- STILL NEEDS RECORDING
|
||||
~~ ah_recomp - shared hub restock run, same one neftet.af uses -- already committed, af/ah_recomp.af
|
||||
~~ CONFIGURATION: Prismatic Taper threshold in Hunt matches neftet's recomp trigger -- adjust if needed
|
||||
~~ ============================================================
|
||||
|
||||
STATE: {Default}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]}
|
||||
DO: DoAll
|
||||
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 opt set attackdistance +getvar[attackRange]}
|
||||
Chat {/ub fellow create Viridian Rise Hunt}
|
||||
SetState {vr_runback}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]==0}
|
||||
DO: DoAll
|
||||
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}
|
||||
ChatExpr {\/vt opt set attackdistance +getvar[attackRange]}
|
||||
SetState {vr_runback}
|
||||
|
||||
STATE: {Hunt}
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
Chat {/vt opt set enablecombat true}
|
||||
Chat {/vt opt set IdlePeaceMode false}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]}
|
||||
DO: DoAll
|
||||
Chat {/vt opt set navpriorityboost false}
|
||||
Chat {/vt nav load vr_circuit}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]}
|
||||
ChatMatch {cloud of dangerous gas!}
|
||||
DO: CallState {vr_gas_dodge} {Hunt}
|
||||
IF: ChatCapture {^Your fellow "(?<who>[^"]+)" has died!$} {}
|
||||
DO: SetState {vr_runback}
|
||||
IF: All
|
||||
ItemCountLE 100 {Prismatic Taper}
|
||||
NoMobsInDist 5
|
||||
DO: DoAll
|
||||
Chat {/fellowship #recompviridianrise}
|
||||
SetState {recomp}
|
||||
IF: ChatMatch {^\[Fellowship\].*(say|says), \"#recompviridianrise\"$}
|
||||
DO: SetState {recomp}
|
||||
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]+`\, #recruitviridianrise`}
|
||||
SetState {Hunt}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]}
|
||||
ChatCapture {(^(\[[A-z]+?\] |)You|.*\<Tell:IIDString:.+:(?<who>[^\<]*)\>.+\<\\Tell\>) .*, \"#recruitviridianrise\"$} {}
|
||||
DO: ChatExpr {\/ub fellow recruit +getvar[capturegroup_who]}
|
||||
IF: All
|
||||
Expr {getvar[isLeader]}
|
||||
DistToRteGE 100
|
||||
DO: SetState {stuck}
|
||||
IF: Always
|
||||
DO: SetWatchdog 10 600 {stuck}
|
||||
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 {Default}
|
||||
|
||||
STATE: {vr_gas_dodge}
|
||||
IF: Always
|
||||
DO: Chat {/vt opt set navpriorityboost true}
|
||||
IF: SecsInStateGE 2
|
||||
DO: DoAll
|
||||
Chat {/vt opt set navpriorityboost false}
|
||||
Return
|
||||
|
||||
STATE: {vr_runback}
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: All
|
||||
Expr {testvar[vrRunbackNavLoaded]}
|
||||
NavEmpty
|
||||
DO: DoAll
|
||||
DoExpr {clearvar[vrRunbackNavLoaded]}
|
||||
SetState {vr_portal}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
DoExpr {setvar[vrRunbackNavLoaded, 1]}
|
||||
Chat {/vt opt set enablecombat false}
|
||||
Chat {/vt nav load vr_run}
|
||||
Chat {/vt opt set enablenav true}
|
||||
IF: Always
|
||||
DO: SetWatchdog 10 120 {stuck}
|
||||
|
||||
STATE: {vr_portal}
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: ExitPortal
|
||||
DO: SetState {Hunt}
|
||||
IF: SecsInStateGE 20
|
||||
DO: SetState {vr_portal}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
Chat {/vt opt set enablenav true}
|
||||
Chat {/vt nav load vr_getin}
|
||||
|
||||
STATE: {recomp}
|
||||
IF: Death
|
||||
DO: SetState {death}
|
||||
IF: All
|
||||
Expr {testvar[vrRecompNavLoaded]}
|
||||
NavEmpty
|
||||
DO: DoAll
|
||||
DoExpr {clearvar[vrRecompNavLoaded]}
|
||||
SetState {Hunt}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
DoExpr {setvar[diamondMissing, 100 - getitemcountininventorybyname[`Diamond Scarab`]]}
|
||||
DoExpr {ifthen[$diamondMissing < 0, `setvar[diamondMissing, 0]`]}
|
||||
DoExpr {setvar[manaMissing, 100 - getitemcountininventorybyname[`Mana Scarab`]]}
|
||||
DoExpr {ifthen[$manaMissing < 0, `setvar[manaMissing, 0]`]}
|
||||
DoExpr {setvar[vrRecompNavLoaded, 1]}
|
||||
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 {stuck}
|
||||
|
||||
STATE: {death}
|
||||
IF: ExitPortal
|
||||
DO: DoAll
|
||||
Chat {/vt opt set enablebuffing false}
|
||||
Chat {/vt opt set enablenav true}
|
||||
Chat {/vt opt set enablelooting false}
|
||||
Chat {/vt opt set enablecombat false}
|
||||
IF: All
|
||||
Expr {testvar[vrDeathNavLoaded]}
|
||||
NavEmpty
|
||||
DO: DoAll
|
||||
DoExpr {clearvar[vrDeathNavLoaded]}
|
||||
SetState {Hunt}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
DoExpr {setvar[vrDeathNavLoaded, 1]}
|
||||
Chat {/vt nav load vr_death_recall}
|
||||
IF: Always
|
||||
DO: SetWatchdog 5 60 {stuck}
|
||||
|
||||
STATE: {stuck}
|
||||
IF: Always
|
||||
DO: DoAll
|
||||
Chat {/ub face}
|
||||
SetState {Default}
|
||||
Loading…
Add table
Add a link
Reference in a new issue