From 840dc79c1ebcfb091ec28a318135f6dc85a39aa0 Mon Sep 17 00:00:00 2001 From: Dethrace Labs <78985374+dethrace-labs@users.noreply.github.com> Date: Fri, 26 Sep 2025 12:05:15 +1200 Subject: [PATCH] MassageOpponentPosition effectively matching --- src/DETHRACE/common/opponent.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/DETHRACE/common/opponent.c b/src/DETHRACE/common/opponent.c index 99050f77..760b42e1 100644 --- a/src/DETHRACE/common/opponent.c +++ b/src/DETHRACE/common/opponent.c @@ -1980,32 +1980,34 @@ int MassageOpponentPosition(tOpponent_spec* pOpponent_spec, int pMassage_count) br_vector3 positive_y_vector; br_vector3 direction_v; - BrVector3Set(&positive_y_vector, 0.f, 1.f, 0.f); mat = &pOpponent_spec->car_spec->car_master_actor->t.t.mat; car_trans = &pOpponent_spec->car_spec->car_master_actor->t.t.translate.t; if (pMassage_count > 22) { return 0; - } else if (pMassage_count > 20) { + } + + if (pMassage_count > 20) { car_trans->v[1] += (pMassage_count - 20) * 2.0f; - return 1; } else { - direction_v.v[0] = -pOpponent_spec->car_spec->car_master_actor->t.t.mat.m[2][0]; - direction_v.v[1] = -pOpponent_spec->car_spec->car_master_actor->t.t.mat.m[2][1]; - direction_v.v[2] = -pOpponent_spec->car_spec->car_master_actor->t.t.mat.m[2][2]; - if (pMassage_count % 4 >= 2) { + direction_v.v[0] = -mat->m[2][0]; + direction_v.v[1] = -mat->m[2][1]; + direction_v.v[2] = -mat->m[2][2]; + if (pMassage_count % 4 < 2) { + BrVector3Normalise(&displacement, &direction_v); + BrVector3Scale(&displacement, &displacement, (pMassage_count / 4) * 0.5f); + } else { + BrVector3Set(&positive_y_vector, 0.f, 1.f, 0.f); BrVector3Cross(&displacement, &positive_y_vector, &direction_v); BrVector3Normalise(&displacement, &displacement); BrVector3Scale(&displacement, &displacement, (pMassage_count / 4) * 0.1f); - } else { - BrVector3Normalise(&displacement, &direction_v); - BrVector3Scale(&displacement, &displacement, (pMassage_count / 4) * 0.5f); } if (pMassage_count % 2) { BrVector3Negate(&displacement, &displacement); } BrVector3Accumulate(car_trans, &displacement); - return 1; } + + return 1; } // IDA: int __usercall RematerialiseOpponentOnThisSection@(tOpponent_spec *pOpponent_spec@, br_scalar pSpeed, tS16 pSection_no)