add radiant blood quest and bella recovery
All checks were successful
/ test (push) Successful in 21s

This commit is contained in:
Erik 2026-03-13 19:44:02 +01:00
parent 5d7470ee6c
commit 75b468465c
19 changed files with 2076 additions and 69 deletions

View file

@ -502,16 +502,37 @@ STATE: {service_bella_mp_secondary} ~~ {
SetState {service_bella_start} SetState {service_bella_start}
IF: ExitPortal IF: ExitPortal
DO: DoAll DO: DoAll
DoExpr {setvar[bellaMpSecondaryAttempts, 0]}
Chat {/vt opt set enablecombat true} Chat {/vt opt set enablecombat true}
Chat {/vt nav load to_bella} Chat {/vt nav load to_bella}
SetState {service_bella_kill_bella} SetState {service_bella_kill_bella}
IF: SecsInStateGE 60 IF: SecsInStateGE 60
DO: SetState {service_bella_start} DO: SetState {service_bella_start}
~~ } ~~ }
STATE: {service_bella_kill_bella} ~~ { STATE: {service_bella_secondary_recovery} ~~ {
IF: Death IF: Death
DO: SetState {death} DO: SetState {death}
IF: Always
DO: Chat {/vt opt set enablenav false}
IF: Expr {getvar[bellaMpSecondaryAttempts]>=3}
DO: SetState {service_bella_backoff}
IF: SecsInStateGE 20
DO: DoAll
DoExpr {setvar[bellaMpSecondaryAttempts,getvar[bellaMpSecondaryAttempts]+1]}
Chat {/vt opt set enablenav true}
Chat {/vt nav load nav_portal_recall}
IF: All
SecsInStateGE 30
NavEmpty
Expr {getplayerlandblock[]==5636096}
DO: DoAll
Chat {/vt nav load to_bella}
SetState {service_bella_kill_bella}
IF: SecsInStateGE 120
DO: SetState {service_bella_backoff}
~~ }
STATE: {service_bella_kill_bella} ~~ {
IF: Death
DO: SetState {service_bella_secondary_recovery}
IF: All IF: All
Expr {getplayerlandblock[]!=5636096} Expr {getplayerlandblock[]!=5636096}
SecsInStateGE 30 SecsInStateGE 30

View file

@ -0,0 +1,6 @@
~~ Record a route from your start location to Ayesha of the Radiant Blood in Zaikhal.
NAV: nav0 once ~~ {
~~ Replace placeholder points with a recorded route.
pnt 0.0 0.0 0.0
~~ }

View file

@ -0,0 +1,7 @@
~~ Record a route from Ayesha/Zaikhal to the Corrupted Catacombs drop/start area.
~~ If tied near Empyrean Foundry, feel free to use the shorter route.
NAV: nav0 once ~~ {
~~ Replace placeholder points with a recorded route.
pnt 0.0 0.0 0.0
~~ }

View file

@ -0,0 +1,8 @@
~~ Record the route from the key area (or catacombs re-entry) to the locked door.
~~ Walkthrough hint: from the pillars room go west into the sclavus section,
~~ then right at the next intersection and down, past the surface portal area to the door.
NAV: nav0 once ~~ {
~~ Replace placeholder points with a recorded route.
pnt 0.0 0.0 0.0
~~ }

View file

@ -0,0 +1,8 @@
~~ Record the route from the catacombs start to the Slimy Key.
~~ Walkthrough hint: straight, right, left, keep right hand rule, ramp down to pillars,
~~ go left/south, more ramps down, then right at next intersection to the key.
NAV: nav0 once ~~ {
~~ Replace placeholder points with a recorded route.
pnt 0.0 0.0 0.0
~~ }

View file

@ -0,0 +1,7 @@
~~ Record the route from the shard area back to Ayesha of the Radiant Blood.
~~ This can include recalling/re-entering if that is how you prefer to run the quest.
NAV: nav0 once ~~ {
~~ Replace placeholder points with a recorded route.
pnt 0.0 0.0 0.0
~~ }

View file

@ -0,0 +1,6 @@
~~ Record the route from the locked door to the Corrupted Mana Shard pedestal.
NAV: nav0 once ~~ {
~~ Replace placeholder points with a recorded route.
pnt 0.0 0.0 0.0
~~ }

View file

@ -567,16 +567,37 @@ STATE: {service_bella_mp_secondary} ~~ {
SetState {service_bella_start} SetState {service_bella_start}
IF: ExitPortal IF: ExitPortal
DO: DoAll DO: DoAll
DoExpr {setvar[bellaMpSecondaryAttempts, 0]}
Chat {/vt opt set enablecombat true} Chat {/vt opt set enablecombat true}
Chat {/vt nav load to_bella} Chat {/vt nav load to_bella}
SetState {service_bella_kill_bella} SetState {service_bella_kill_bella}
IF: SecsInStateGE 60 IF: SecsInStateGE 60
DO: SetState {service_bella_start} DO: SetState {service_bella_start}
~~ } ~~ }
STATE: {service_bella_kill_bella} ~~ { STATE: {service_bella_secondary_recovery} ~~ {
IF: Death IF: Death
DO: SetState {death} DO: SetState {death}
IF: Always
DO: Chat {/vt opt set enablenav false}
IF: Expr {getvar[bellaMpSecondaryAttempts]>=3}
DO: SetState {service_bella_backoff}
IF: SecsInStateGE 20
DO: DoAll
DoExpr {setvar[bellaMpSecondaryAttempts,getvar[bellaMpSecondaryAttempts]+1]}
Chat {/vt opt set enablenav true}
Chat {/vt nav load nav_portal_recall}
IF: All
SecsInStateGE 30
NavEmpty
Expr {getplayerlandblock[]==5636096}
DO: DoAll
Chat {/vt nav load to_bella}
SetState {service_bella_kill_bella}
IF: SecsInStateGE 120
DO: SetState {service_bella_backoff}
~~ }
STATE: {service_bella_kill_bella} ~~ {
IF: Death
DO: SetState {service_bella_secondary_recovery}
IF: All IF: All
Expr {getplayerlandblock[]!=5636096} Expr {getplayerlandblock[]!=5636096}
SecsInStateGE 30 SecsInStateGE 30

View file

@ -0,0 +1,216 @@
~~ Radiant Blood initiation quest
~~ Fill the quest-specific nav routes in the matching nav_*.af files.
~~ Expected nav binaries after build:
~~ - nav_radiantblood_ayesha
~~ - nav_radiantblood_catacombs
~~ - nav_radiantblood_key
~~ - nav_radiantblood_door
~~ - nav_radiantblood_shard
~~ - nav_radiantblood_return
STATE: {Default} ~~ {
IF: Death
DO: SetState {Death}
IF: ItemCountGE 1 {Corrupted Mana Shard}
DO: SetState {TurnInShard}
IF: ItemCountGE 1 {Slimy Key}
DO: SetState {GoDoor}
IF: Always
DO: DoAll
Chat {/ub opt set VTank.PatchExpressionEngine true}
SetState {GoAyesha}
~~ }
STATE: {GoAyesha} ~~ {
IF: Death
DO: SetState {Death}
IF: All
NavEmpty
SecsInStateGE 2
DO: DoAll
ClearWatchdog
Chat {/ub use Ayesha of the Radiant Blood}
SetState {WaitAyesha}
IF: Always
DO: DoAll
SetOpt {enablecombat} {false}
SetOpt {enablelooting} {false}
SetOpt {enablebuffing} {true}
SetOpt {enablenav} {true}
Chat {/vt nav load nav_radiantblood_ayesha}
SetWatchdog 10 300 {Stuck}
~~ }
STATE: {WaitAyesha} ~~ {
IF: Death
DO: SetState {Death}
IF: SecsInStateGE 8
DO: SetState {GoCatacombs}
~~ }
STATE: {GoCatacombs} ~~ {
IF: Death
DO: SetState {Death}
IF: All
NavEmpty
SecsInStateGE 2
DO: DoAll
ClearWatchdog
SetState {FindKey}
IF: Always
DO: DoAll
SetOpt {enablecombat} {false}
SetOpt {enablelooting} {false}
SetOpt {enablebuffing} {true}
SetOpt {enablenav} {true}
Chat {/vt nav load nav_radiantblood_catacombs}
SetWatchdog 10 900 {Stuck}
~~ }
STATE: {FindKey} ~~ {
IF: Death
DO: SetState {Death}
IF: ItemCountGE 1 {Slimy Key}
DO: SetState {GoDoor}
IF: All
NavEmpty
SecsInStateGE 2
DO: DoAll
ClearWatchdog
Chat {/ub usep Slimy Key}
SetState {WaitKeyPickup}
IF: Always
DO: DoAll
SetOpt {enablecombat} {true}
SetOpt {enablelooting} {true}
SetOpt {enablebuffing} {true}
SetOpt {enablenav} {true}
Chat {/vt nav load nav_radiantblood_key}
SetWatchdog 10 900 {Stuck}
~~ }
STATE: {WaitKeyPickup} ~~ {
IF: Death
DO: SetState {Death}
IF: ItemCountGE 1 {Slimy Key}
DO: SetState {GoDoor}
IF: SecsInStateGE 10
DO: SetState {FindKey}
~~ }
STATE: {GoDoor} ~~ {
IF: Death
DO: SetState {Death}
IF: All
NavEmpty
SecsInStateGE 2
DO: DoAll
ClearWatchdog
Chat {/ub usep Slimy Key on Door}
SetState {WaitDoor}
IF: Always
DO: DoAll
SetOpt {enablecombat} {true}
SetOpt {enablelooting} {false}
SetOpt {enablebuffing} {true}
SetOpt {enablenav} {true}
Chat {/vt nav load nav_radiantblood_door}
SetWatchdog 10 900 {Stuck}
~~ }
STATE: {WaitDoor} ~~ {
IF: Death
DO: SetState {Death}
IF: ChatMatch {unlocked}
DO: SetState {GetShard}
IF: SecsInStateGE 8
DO: DoAll
Chat {/ub usep Slimy Key on Door}
SetState {WaitDoor}
~~ }
STATE: {GetShard} ~~ {
IF: Death
DO: SetState {Death}
IF: ItemCountGE 1 {Corrupted Mana Shard}
DO: SetState {TurnInShard}
IF: All
NavEmpty
SecsInStateGE 2
DO: DoAll
ClearWatchdog
Chat {/ub usep Corrupted Mana Shard}
SetState {WaitShard}
IF: Always
DO: DoAll
SetOpt {enablecombat} {true}
SetOpt {enablelooting} {true}
SetOpt {enablebuffing} {true}
SetOpt {enablenav} {true}
Chat {/vt nav load nav_radiantblood_shard}
SetWatchdog 10 900 {Stuck}
~~ }
STATE: {WaitShard} ~~ {
IF: Death
DO: SetState {Death}
IF: ItemCountGE 1 {Corrupted Mana Shard}
DO: SetState {TurnInShard}
IF: SecsInStateGE 10
DO: SetState {GetShard}
~~ }
STATE: {TurnInShard} ~~ {
IF: Death
DO: SetState {Death}
IF: All
NavEmpty
SecsInStateGE 2
DO: DoAll
ClearWatchdog
Chat {/ub givep Corrupted Mana Shard to Ayesha of the Radiant Blood}
Chat {/ub prepclick yes 3}
SetState {WaitTurnIn}
IF: Always
DO: DoAll
SetOpt {enablecombat} {false}
SetOpt {enablelooting} {false}
SetOpt {enablebuffing} {true}
SetOpt {enablenav} {true}
Chat {/vt nav load nav_radiantblood_return}
SetWatchdog 10 1200 {Stuck}
~~ }
STATE: {WaitTurnIn} ~~ {
IF: Death
DO: SetState {Death}
IF: ItemCountLE 0 {Corrupted Mana Shard}
DO: SetState {Done}
IF: ChatMatch {Radiant Blood}
DO: SetState {Done}
IF: SecsInStateGE 15
DO: SetState {TurnInShard}
~~ }
STATE: {Done} ~~ {
IF: Always
DO: DoAll
DoExpr {echo[`Radiant Blood initiation complete.`,1]}
Chat {/a [radiantblood] quest complete}
~~ }
STATE: {Stuck} ~~ {
IF: Death
DO: SetState {Death}
IF: Always
DO: DoAll
ClearWatchdog
Chat {/ub face}
DoExpr {echo[`Radiant Blood meta stuck, restarting.`,1]}
SetState {Default}
~~ }
STATE: {Death} ~~ {
IF: ExitPortal
DO: SetState {Default}
~~ }

View file

@ -11,7 +11,7 @@ n
n n
n n
n n
213 219
i i
1 1
i i
@ -4373,20 +4373,7 @@ K
V V
n n
n n
4 3
i
7
TABLE
2
k
v
n
n
1
s
e
s
setvar[bellaMpSecondaryAttempts, 0]
i i
2 2
s s
@ -4420,6 +4407,140 @@ i
s s
death death
s s
service_bella_secondary_recovery
i
1
i
2
i
0
s
/vt opt set enablenav false
s
service_bella_secondary_recovery
i
26
i
1
TABLE
2
k
v
n
n
1
s
e
s
getvar[bellaMpSecondaryAttempts]>=3
s
service_bella_backoff
s
service_bella_secondary_recovery
i
6
i
3
i
20
TABLE
2
K
V
n
n
3
i
7
TABLE
2
k
v
n
n
1
s
e
s
setvar[bellaMpSecondaryAttempts,getvar[bellaMpSecondaryAttempts]+1]
i
2
s
/vt opt set enablenav true
i
2
s
/vt nav load nav_portal_recall
s
service_bella_secondary_recovery
i
2
i
3
TABLE
2
K
V
n
n
3
i
6
i
30
i
7
i
0
i
26
TABLE
2
k
v
n
n
1
s
e
s
getplayerlandblock[]==5636096
TABLE
2
K
V
n
n
2
i
2
s
/vt nav load to_bella
i
1
s
service_bella_kill_bella
s
service_bella_secondary_recovery
i
6
i
1
i
120
s
service_bella_backoff
s
service_bella_secondary_recovery
i
8
i
1
i
0
s
service_bella_secondary_recovery
s
service_bella_kill_bella service_bella_kill_bella
i i
2 2

View file

@ -11,7 +11,7 @@ n
n n
n n
n n
292 298
i i
20 20
i i
@ -5125,20 +5125,7 @@ K
V V
n n
n n
4 3
i
7
TABLE
2
k
v
n
n
1
s
e
s
setvar[bellaMpSecondaryAttempts, 0]
i i
2 2
s s
@ -5172,6 +5159,140 @@ i
s s
death death
s s
service_bella_secondary_recovery
i
1
i
2
i
0
s
/vt opt set enablenav false
s
service_bella_secondary_recovery
i
26
i
1
TABLE
2
k
v
n
n
1
s
e
s
getvar[bellaMpSecondaryAttempts]>=3
s
service_bella_backoff
s
service_bella_secondary_recovery
i
6
i
3
i
20
TABLE
2
K
V
n
n
3
i
7
TABLE
2
k
v
n
n
1
s
e
s
setvar[bellaMpSecondaryAttempts,getvar[bellaMpSecondaryAttempts]+1]
i
2
s
/vt opt set enablenav true
i
2
s
/vt nav load nav_portal_recall
s
service_bella_secondary_recovery
i
2
i
3
TABLE
2
K
V
n
n
3
i
6
i
30
i
7
i
0
i
26
TABLE
2
k
v
n
n
1
s
e
s
getplayerlandblock[]==5636096
TABLE
2
K
V
n
n
2
i
2
s
/vt nav load to_bella
i
1
s
service_bella_kill_bella
s
service_bella_secondary_recovery
i
6
i
1
i
120
s
service_bella_backoff
s
service_bella_secondary_recovery
i
8
i
1
i
0
s
service_bella_secondary_recovery
s
service_bella_kill_bella service_bella_kill_bella
i i
2 2

File diff suppressed because it is too large Load diff

View file

@ -1,24 +1,36 @@
uTank2 NAV 1.2 uTank2 NAV 1.2
4 4
20 21
3 3
-101.035883959134 13.5190039634705
-27.7356273174286 64.6944948832194
0.150020837783813 1.23053220113119
0 0
2000 2000
2
13.5190039634705
64.6944948832194
1.23053220113119
0
1635
3
13.5190039634705
64.6944948832194
1.23053220113119
0
10000
4 4
-101.035883959134 13.5190039634705
-27.7356273174286 64.6944948832194
0.150020837783813 1.23053220113119
0 0
/ah /ah
3 3
-101.035883959134 13.5190039634705
-27.7356273174286 64.6944948832194
0.150020837783813 1.23053220113119
0 0
10000 15000
0 0
59.324442132314 59.324442132314
-28.5358481725057 -28.5358481725057
@ -39,33 +51,22 @@ uTank2 NAV 1.2
-28.5027507781982 -28.5027507781982
0.0583541631698608 0.0583541631698608
0 0
6
-101.035883959134
-27.7356273174286
0.150020837783813
0
Sawato Meeting Hall Portal
14
True
59.2987999916077
-28.482691637675
0.0580708347260952
4 4
-101.035883959134 13.5190039634705
-27.7356273174286 64.6944948832194
0.150020837783813 1.23053220113119
0 0
/tell Time according to alex, cv /tell Time according to alex, cv
3 3
-101.035883959134 13.5190039634705
-27.7356273174286 64.6944948832194
0.150020837783813 1.23053220113119
0 0
10000 15000
4 4
-101.035883959134 13.5190039634705
-27.7356273174286 64.6944948832194
0.150020837783813 1.23053220113119
0 0
/ub use Gateway /ub use Gateway
0 0
@ -104,9 +105,9 @@ True
1.60867055257161 1.60867055257161
0 0
6 6
-101.035883959134 13.5190039634705
-27.7356273174286 64.6944948832194
0.150020837783813 1.23053220113119
0 0
Mountain Cavern Portal Mountain Cavern Portal
14 14

View file

@ -0,0 +1,8 @@
uTank2 NAV 1.2
4
1
0
0
0
0
0

View file

@ -0,0 +1,8 @@
uTank2 NAV 1.2
4
1
0
0
0
0
0

View file

@ -0,0 +1,8 @@
uTank2 NAV 1.2
4
1
0
0
0
0
0

View file

@ -0,0 +1,8 @@
uTank2 NAV 1.2
4
1
0
0
0
0
0

View file

@ -0,0 +1,8 @@
uTank2 NAV 1.2
4
1
0
0
0
0
0

View file

@ -0,0 +1,8 @@
uTank2 NAV 1.2
4
1
0
0
0
0
0