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
This commit is contained in:
toaster 2023-10-07 23:26:53 +01:00
parent dbcb39d7ed
commit 756f42bc26

View file

@ -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);