From 756f42bc26509afa9a5a8775240c1f8c17d40737 Mon Sep 17 00:00:00 2001 From: toaster Date: Sat, 7 Oct 2023 23:26:53 +0100 Subject: [PATCH] Fix DLZ Ring Sucker effect - Fix infinite loop caused by not actually using the intended object type - Fix integer multiply of two fixed-scale numbers causing overflow --- src/objects/dlzothers.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/objects/dlzothers.c b/src/objects/dlzothers.c index 90c5ab331..d4d9f8f31 100644 --- a/src/objects/dlzothers.c +++ b/src/objects/dlzothers.c @@ -90,7 +90,7 @@ void Obj_DLZRingVaccumCollide(mobj_t *mo, mobj_t *mo2) if (!P_IsObjectOnGround(mo) || mo->momz) return; - fake = P_SpawnMobj(mo->x, mo->y, mo->z, MT_FLINGRING); + fake = P_SpawnMobj(mo->x, mo->y, mo->z, MT_DLZ_SUCKEDRING); P_SetScale(fake, mo->scale); fake->scalespeed = mapobjectscale/64; fake->destscale = 1; @@ -115,8 +115,8 @@ void Obj_DLZSuckedRingThink(mobj_t *mo) return; } - x = t->x + mo->movefactor*FINECOSINE(mo->angle>>ANGLETOFINESHIFT); - y = t->y + mo->movefactor*FINESINE(mo->angle>>ANGLETOFINESHIFT); + x = t->x + FixedMul(mo->movefactor, FINECOSINE(mo->angle>>ANGLETOFINESHIFT)); + y = t->y + FixedMul(mo->movefactor, FINESINE(mo->angle>>ANGLETOFINESHIFT)); P_MoveOrigin(mo, x, y, mo->z);