Fix missing spinout animation on the fan sector in Diamond Square

Also, carry is not a bitfield lol
This commit is contained in:
GenericHeroGuy 2025-12-28 23:26:47 +01:00
parent 62fbaf19c9
commit 95a3af6a1a
3 changed files with 10 additions and 8 deletions

View file

@ -971,7 +971,7 @@ static int player_get(lua_State *L)
{
UINT32 pflags = plr->pflags;
if (lua_compatmode && (plr->carry & CR_SLIDING) == CR_SLIDING)
if (lua_compatmode && plr->carry == CR_SLIDING)
pflags |= PF_SLIDING;
if (lua_compatmode && (plr->oldcmd.buttons & BT_ATTACK))
@ -1303,9 +1303,9 @@ static int player_set(lua_State *L)
if (lua_compatmode)
{
if (pflags & PF_SLIDING)
plr->carry |= CR_SLIDING;
else
plr->carry &= ~CR_SLIDING;
plr->carry = CR_SLIDING;
else if (plr->carry == CR_SLIDING)
plr->carry = CR_NONE;
if (pflags & PF_ATTACKDOWN)
plr->oldcmd.buttons |= BT_ATTACK;

View file

@ -11095,7 +11095,7 @@ void A_SPBChase(void *thing)
wspeed = (3*defspeed)/2;
if (wspeed < 20*actor->tracer->scale)
wspeed = 20*actor->tracer->scale;
if (actor->tracer->player->carry & CR_SLIDING)
if (actor->tracer->player->carry == CR_SLIDING)
wspeed = actor->tracer->player->speed/2;
// ^^^^ current section: These are annoying, and grand metropolis in particular needs this.

View file

@ -484,7 +484,9 @@ void P_ResetPlayer(player_t *player)
{
//player->pflags &= ~(PF_);
player->carry = CR_NONE;
// turns out PF_SLIDING is NOT reset by this function!
if (mapnamespace != MNS_SRB2KART || player->carry != CR_SLIDING)
player->carry = CR_NONE;
player->onconveyor = 0;
player->glanceDir = 0;
@ -1932,7 +1934,7 @@ static void P_3dMovement(player_t *player)
}
// When sliding, don't allow forward/back
if (player->carry & CR_SLIDING)
if (player->carry == CR_SLIDING)
cmd->forwardmove = 0;
// Do not let the player control movement if not onground.
@ -4341,7 +4343,7 @@ void P_PlayerThink(player_t *player)
// for a bit after a teleport.
player->mo->reactiontime--;
}
else if (player->mo->tracer && player->mo->tracer->type == MT_TUBEWAYPOINT)
else if (player->carry == CR_ZOOMTUBE && player->mo->tracer && player->mo->tracer->type == MT_TUBEWAYPOINT)
{
P_DoZoomTube(player);
player->rmomx = player->rmomy = 0;