From b538a68dc45d7611b933e53b183df1c512c4de81 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 be7b7a8af..b54702004 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -6539,12 +6539,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 @@ -6567,8 +6563,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 @@ -6578,7 +6572,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 5f2f117d3..ea8ed9d85 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -3917,8 +3917,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]); @@ -3929,7 +3928,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; @@ -3939,7 +3937,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;