From a2ddd5079e57a3c111bc1d40361e85059a3b7e97 Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Sat, 21 Sep 2024 03:58:33 -0400 Subject: [PATCH] Thing_StartTracking: Make it do something Instead of using a linedef executor tag as an argument, apply an action special to the angle manager object that you had to place anyways. There is no UDMF version check because the old behavior was practically unusable. --- src/p_mobj.c | 8 +------- src/p_spec.c | 6 ++---- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 8b1862fab..7941c228a 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -6790,12 +6790,8 @@ static void P_TracerAngleThink(mobj_t *mobj) if (!mobj->tracer) return; - if (!mobj->extravalue2) - return; - // mobj->lastlook - Don't disable behavior after first failure // mobj->extravalue1 - Angle tolerance - // mobj->extravalue2 - Exec tag upon failure // mobj->cvval - Allowable failure delay // mobj->cvmem - Failure timer @@ -6818,8 +6814,6 @@ static void P_TracerAngleThink(mobj_t *mobj) mobj->cvmem--; else { - INT32 exectag = mobj->extravalue2; // remember this before we erase the values - if (mobj->lastlook) mobj->cvmem = mobj->cusval; // reset timer for next failure else @@ -6829,7 +6823,7 @@ static void P_TracerAngleThink(mobj_t *mobj) mobj->lastlook = mobj->extravalue1 = mobj->extravalue2 = mobj->cvmem = mobj->cusval = 0; } - P_LinedefExecute(exectag, mobj, NULL); + P_ActivateThingSpecial(mobj->tracer, mobj); } } else diff --git a/src/p_spec.c b/src/p_spec.c index e8a3a5499..e80769fb2 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -4156,8 +4156,7 @@ boolean P_ProcessSpecial(activator_t *activator, INT16 special, INT32 *args, cha { INT32 failureangle = FixedAngle((min(max(abs(args[1]), 0), 360))*FRACUNIT); INT32 failuredelay = abs(args[2]); - INT32 failureexectag = args[3]; - boolean persist = !!(args[4]); + boolean persist = !!(args[3]); mobj_t *anchormo; anchormo = P_FindObjectTypeFromTag(MT_ANGLEMAN, args[0]); @@ -4168,7 +4167,6 @@ boolean P_ProcessSpecial(activator_t *activator, INT16 special, INT32 *args, cha P_SetTarget(&mo->tracer, anchormo); mo->lastlook = persist; // don't disable behavior after first failure mo->extravalue1 = failureangle; // angle to exceed for failure state - mo->extravalue2 = failureexectag; // exec tag for failure state (angle is not within range) mo->cusval = mo->cvmem = failuredelay; // cusval = tics to allow failure before line trigger; cvmem = decrement timer } break; @@ -4178,7 +4176,7 @@ boolean P_ProcessSpecial(activator_t *activator, INT16 special, INT32 *args, cha { mo->eflags &= ~MFE_TRACERANGLE; P_SetTarget(&mo->tracer, NULL); - mo->lastlook = mo->cvmem = mo->cusval = mo->extravalue1 = mo->extravalue2 = 0; + mo->lastlook = mo->cvmem = mo->cusval = mo->extravalue1 = 0; } break;