Fix Spring angle

Yes this is duped code but I can't be assed to figure out why the previous broke shit
This commit is contained in:
NepDisk 2024-11-16 21:18:06 -05:00
parent 28d8f15bfc
commit c762761eff

View file

@ -289,12 +289,11 @@ P_DoSpringEx
// mass = vertical speed
// damage = horizontal speed
// raisestate = state to change spring to on collision
// painchance = star effect color
//
boolean P_DoSpring(mobj_t *spring, mobj_t *object)
{
//const fixed_t hscale = mapobjectscale + (mapobjectscale - object->scale);
//const fixed_t vscale = mapobjectscale + (object->scale - mapobjectscale);
const fixed_t hscale = mapobjectscale + (mapobjectscale - object->scale);
const fixed_t vscale = mapobjectscale + (object->scale - mapobjectscale);
fixed_t offx, offy;
fixed_t vertispeed = spring->info->mass;
fixed_t horizspeed = spring->info->damage;
@ -348,7 +347,25 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object)
P_TryMove(object, spring->x + offx, spring->y + offy, true, NULL);
}
P_DoSpringEx(object, mapobjectscale, vertispeed, horizspeed, spring->angle);
if (vertispeed)
object->momz = FixedMul(vertispeed,FixedSqrt(FixedMul(vscale, spring->scale)));
if (horizspeed)
{
if (!object->player)
P_InstaThrust(object, spring->angle, FixedMul(horizspeed,FixedSqrt(FixedMul(hscale, spring->scale))));
else
{
fixed_t finalSpeed = FixedDiv(horizspeed, hscale);
fixed_t pSpeed = object->player->speed;
if (pSpeed > finalSpeed)
finalSpeed = pSpeed;
P_InstaThrust(object, spring->angle, FixedMul(finalSpeed,FixedSqrt(FixedMul(hscale, spring->scale))));
}
}
// Re-solidify
spring->flags |= (spring->info->flags & (MF_SPECIAL|MF_SOLID));
@ -374,7 +391,6 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object)
return true;
}
static void P_DoFanAndGasJet(mobj_t *spring, mobj_t *object)
{
player_t *p = object->player; // will be NULL if not a player