From d989f5467298a9ffc7b375c07be7a65c6911c057 Mon Sep 17 00:00:00 2001 From: Erik Date: Sun, 8 Mar 2026 18:24:27 +0100 Subject: [PATCH] guard portal checks against null worldobject --- bore/bore.af | 40 +++++++++++++++------------- bore/bore.met | 72 ++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 84 insertions(+), 28 deletions(-) diff --git a/bore/bore.af b/bore/bore.af index c30c70e..50d9f32 100644 --- a/bore/bore.af +++ b/bore/bore.af @@ -79,12 +79,14 @@ STATE: {hunt} ~~ { DO: SetWatchdog 3 600 {really_stuck} IF: DistToRteGE 1000 DO: SetState {really_stuck} - IF: All - Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[14]]]<=4} - Not Expr {wobjectgetname[wobjectfindnearestbyobjectclass[14]]==Singularity Caul} - DO: DoAll - ChatExpr {\/me is to close to +wobjectgetname[wobjectfindnearestbyobjectclass[14]]} - ChatExpr {\/me at +coordinatetostring[getplayercoordinates[]]} + IF: All + Expr {setvar[nearPortal, wobjectfindnearestbyobjectclass[14]]} + Expr {istrue[getvar[nearPortal]]} + Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[nearPortal]]]<=4} + Not Expr {wobjectgetname[getvar[nearPortal]]==Singularity Caul} + DO: DoAll + ChatExpr {\/me is to close to +wobjectgetname[getvar[nearPortal]]} + ChatExpr {\/me at +coordinatetostring[getplayercoordinates[]]} IF: All Any Expr {getvar[mobsClose] == 0} @@ -100,12 +102,13 @@ STATE: {hunt} ~~ { DO: DoAll Chat {/vt opt set enablecombat true} SetState {loot} - IF: All - Expr {setvar[portal, wobjectfindnearestbyobjectclass[14]]} - Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[portal]]] <= 8} - Not Expr {wobjectgetname[wobjectfindnearestbyobjectclass[14]]==Singularity Caul} - Not Expr {wobjectgetname[wobjectfindnearestbyobjectclass[14]]#Destroyed.*} - Expr {wobjectisvalid[getvar[portal]]} + IF: All + Expr {setvar[portal, wobjectfindnearestbyobjectclass[14]]} + Expr {istrue[getvar[portal]]} + Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[portal]]] <= 8} + Not Expr {wobjectgetname[getvar[portal]]==Singularity Caul} + Not Expr {wobjectgetname[getvar[portal]]#Destroyed.*} + Expr {wobjectisvalid[getvar[portal]]} Expr {setvar[portalHeading, getheadingto[getvar[portal]]]} Expr {setvar[playerHeading, getheading[wobjectgetplayer[]]]} Expr {setvar[relativeAngle, abs[getvar[portalHeading] - getvar[playerHeading]]]} @@ -241,12 +244,13 @@ STATE: {loot} ~~ { DoExpr {setvar[lootclock,stopwatchcreate[]]} DoExpr {stopwatchstart[getvar[lootclock]]} SetState {hunt} - IF: All - Expr {setvar[portal, wobjectfindnearestbyobjectclass[14]]} - Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[portal]]] <= 8} - Not Expr {wobjectgetname[wobjectfindnearestbyobjectclass[14]]==Singularity Caul} - Not Expr {wobjectgetname[wobjectfindnearestbyobjectclass[14]]#Destroyed.*} - Expr {wobjectisvalid[getvar[portal]]} + IF: All + Expr {setvar[portal, wobjectfindnearestbyobjectclass[14]]} + Expr {istrue[getvar[portal]]} + Expr {coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[portal]]] <= 8} + Not Expr {wobjectgetname[getvar[portal]]==Singularity Caul} + Not Expr {wobjectgetname[getvar[portal]]#Destroyed.*} + Expr {wobjectisvalid[getvar[portal]]} Expr {setvar[portalHeading, getheadingto[getvar[portal]]]} Expr {setvar[playerHeading, getheading[wobjectgetplayer[]]]} Expr {setvar[relativeAngle, abs[getvar[portalHeading] - getvar[playerHeading]]]} diff --git a/bore/bore.met b/bore/bore.met index 76eeb67..eeb424a 100644 --- a/bore/bore.met +++ b/bore/bore.met @@ -306,7 +306,7 @@ K V n n -2 +4 i 26 TABLE @@ -319,7 +319,33 @@ n s e s -coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[wobjectfindnearestbyobjectclass[14]]]<=4 +setvar[nearPortal, wobjectfindnearestbyobjectclass[14]] +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +istrue[getvar[nearPortal]] +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s +coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[nearPortal]]]<=4 i 21 TABLE @@ -341,7 +367,7 @@ n s e s -wobjectgetname[wobjectfindnearestbyobjectclass[14]]==Singularity Caul +wobjectgetname[getvar[nearPortal]]==Singularity Caul TABLE 2 K @@ -361,7 +387,7 @@ n s e s -\/me is to close to +wobjectgetname[wobjectfindnearestbyobjectclass[14]] +\/me is to close to +wobjectgetname[getvar[nearPortal]] i 8 TABLE @@ -548,7 +574,7 @@ K V n n -12 +13 i 26 TABLE @@ -574,6 +600,19 @@ n s e s +istrue[getvar[portal]] +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[portal]]] <= 8 i 21 @@ -596,7 +635,7 @@ n s e s -wobjectgetname[wobjectfindnearestbyobjectclass[14]]==Singularity Caul +wobjectgetname[getvar[portal]]==Singularity Caul i 21 TABLE @@ -618,7 +657,7 @@ n s e s -wobjectgetname[wobjectfindnearestbyobjectclass[14]]#Destroyed.* +wobjectgetname[getvar[portal]]#Destroyed.* i 26 TABLE @@ -1549,7 +1588,7 @@ K V n n -12 +13 i 26 TABLE @@ -1575,6 +1614,19 @@ n s e s +istrue[getvar[portal]] +i +26 +TABLE +2 +k +v +n +n +1 +s +e +s coordinatedistancewithz[getplayercoordinates[], wobjectgetphysicscoordinates[getvar[portal]]] <= 8 i 21 @@ -1597,7 +1649,7 @@ n s e s -wobjectgetname[wobjectfindnearestbyobjectclass[14]]==Singularity Caul +wobjectgetname[getvar[portal]]==Singularity Caul i 21 TABLE @@ -1619,7 +1671,7 @@ n s e s -wobjectgetname[wobjectfindnearestbyobjectclass[14]]#Destroyed.* +wobjectgetname[getvar[portal]]#Destroyed.* i 26 TABLE