From f92a766dfd581ce19df515e791d6e7961b9e4475 Mon Sep 17 00:00:00 2001 From: Dethrace Labs <78985374+dethrace-labs@users.noreply.github.com> Date: Mon, 1 Sep 2025 09:08:09 +1200 Subject: [PATCH] GetOilFrictionFactors matches --- src/DETHRACE/common/oil.c | 70 +++++++++++++++++-------------------- src/DETHRACE/common/world.c | 18 +++++----- 2 files changed, 41 insertions(+), 47 deletions(-) diff --git a/src/DETHRACE/common/oil.c b/src/DETHRACE/common/oil.c index d06d28e5..f478256c 100644 --- a/src/DETHRACE/common/oil.c +++ b/src/DETHRACE/common/oil.c @@ -419,46 +419,42 @@ void GetOilFrictionFactors(tCar_spec* pCar, br_scalar* pFl_factor, br_scalar* pF *pFr_factor = 1.0f; *pRl_factor = 1.0f; *pRr_factor = 1.0f; - switch (pCar->driver) { - case eDriver_non_car_unused_slot: - case eDriver_non_car: - return; - default: - break; - } - if (pCar->shadow_intersection_flags != 0) { - for (i = 0; i < COUNT_OF(gOily_spills); i++) { - if (((1 << i) & pCar->shadow_intersection_flags) != 0 && gOily_spills[i].car != NULL) { - BrMatrix34ApplyP(&wheel_world, &pCar->wpos[2], &pCar->car_master_actor->t.t.mat); - if (PointInSpill(&wheel_world, i)) { - pCar->oil_remaining[2] = SRandomBetween(1.5f, 2.5f); - } - BrMatrix34ApplyP(&wheel_world, &pCar->wpos[3], &pCar->car_master_actor->t.t.mat); - if (PointInSpill(&wheel_world, i)) { - pCar->oil_remaining[3] = SRandomBetween(1.5f, 2.5f); - } - BrMatrix34ApplyP(&wheel_world, &pCar->wpos[0], &pCar->car_master_actor->t.t.mat); - if (PointInSpill(&wheel_world, i)) { - pCar->oil_remaining[0] = SRandomBetween(1.5f, 2.5f); - } - BrMatrix34ApplyP(&wheel_world, &pCar->wpos[1], &pCar->car_master_actor->t.t.mat); - if (PointInSpill(&wheel_world, i)) { - pCar->oil_remaining[1] = SRandomBetween(1.5f, 2.5f); + + if (pCar->driver > eDriver_non_car) { + if (pCar->shadow_intersection_flags != 0) { + for (i = 0; i < COUNT_OF(gOily_spills); i++) { + if (((1 << i) & pCar->shadow_intersection_flags) != 0 && gOily_spills[i].car != NULL) { + BrMatrix34ApplyP(&wheel_world, &pCar->wpos[2], &pCar->car_master_actor->t.t.mat); + if (PointInSpill(&wheel_world, i)) { + pCar->oil_remaining[2] = SRandomBetween(1.5f, 2.5f); + } + BrMatrix34ApplyP(&wheel_world, &pCar->wpos[3], &pCar->car_master_actor->t.t.mat); + if (PointInSpill(&wheel_world, i)) { + pCar->oil_remaining[3] = SRandomBetween(1.5f, 2.5f); + } + BrMatrix34ApplyP(&wheel_world, &pCar->wpos[0], &pCar->car_master_actor->t.t.mat); + if (PointInSpill(&wheel_world, i)) { + pCar->oil_remaining[0] = SRandomBetween(1.5f, 2.5f); + } + BrMatrix34ApplyP(&wheel_world, &pCar->wpos[1], &pCar->car_master_actor->t.t.mat); + if (PointInSpill(&wheel_world, i)) { + pCar->oil_remaining[1] = SRandomBetween(1.5f, 2.5f); + } } } } - } - if (pCar->oil_remaining[2] != 0.0f) { - *pFl_factor = SRandomBetween(0.01f, 0.15f); - } - if (pCar->oil_remaining[3] != 0.0f) { - *pFr_factor = SRandomBetween(0.01f, 0.15f); - } - if (pCar->oil_remaining[0] != 0.0f) { - *pRl_factor = SRandomBetween(0.01f, 0.15f); - } - if (pCar->oil_remaining[1] != 0.0f) { - *pRr_factor = SRandomBetween(0.01f, 0.15f); + if (pCar->oil_remaining[2] != 0.0f) { + *pFl_factor = SRandomBetween(0.01f, 0.15f); + } + if (pCar->oil_remaining[3] != 0.0f) { + *pFr_factor = SRandomBetween(0.01f, 0.15f); + } + if (pCar->oil_remaining[0] != 0.0f) { + *pRl_factor = SRandomBetween(0.01f, 0.15f); + } + if (pCar->oil_remaining[1] != 0.0f) { + *pRr_factor = SRandomBetween(0.01f, 0.15f); + } } } diff --git a/src/DETHRACE/common/world.c b/src/DETHRACE/common/world.c index 6d548884..e2a3618e 100644 --- a/src/DETHRACE/common/world.c +++ b/src/DETHRACE/common/world.c @@ -4824,17 +4824,15 @@ br_uint_32 DelReferencedModels(br_actor* pActor, void* pArg) { // IDA: void __cdecl DeleteAcc() // FUNCTION: CARM95 0x004443bb void DeleteAcc(void) { - - if (gLast_actor == NULL) { - return; + if (gLast_actor != NULL) { + AccessoryHeadup(gLast_actor, "Murdered "); + DRActorEnumRecurse(gLast_actor, (br_actor_enum_cbfn*)DelReferencedModels, NULL); + DRActorEnumRecurse(gLast_actor, (br_actor_enum_cbfn*)DelGrooveRef, NULL); + BrActorRemove(gLast_actor); + BrActorFree(gLast_actor); + gLast_actor = NULL; + SaveAdditionalStuff(); } - AccessoryHeadup(gLast_actor, "Murdered "); - DRActorEnumRecurse(gLast_actor, (br_actor_enum_cbfn*)DelReferencedModels, NULL); - DRActorEnumRecurse(gLast_actor, (br_actor_enum_cbfn*)DelGrooveRef, NULL); - BrActorRemove(gLast_actor); - BrActorFree(gLast_actor); - gLast_actor = NULL; - SaveAdditionalStuff(); } // IDA: br_uint_32 __cdecl OffsetModel(br_actor *pActor, void *pArg)