Fix MK64 chars displaying incorrect sprite frames

This commit is contained in:
GenericHeroGuy 2025-10-09 22:07:02 +02:00
parent 7620420c95
commit 3ac73cf9c7
2 changed files with 17 additions and 4 deletions

View file

@ -676,11 +676,18 @@ static int mobj_set(lua_State *L)
case mobj_sprite: case mobj_sprite:
{ {
spritenum_t newsprite = luaL_checkinteger(L, 3); spritenum_t newsprite = luaL_checkinteger(L, 3);
if (lua_compatmode && mo->sprite != SPR_PLAY && newsprite == SPR_PLAY) if (lua_compatmode)
{ {
UINT8 outframe; if (mo->sprite != SPR_PLAY && newsprite == SPR_PLAY) // switch to spr2
mo->sprite2 = P_KartFrameToSprite2(mo->skin, mo->frame, &outframe); {
mo->frame = (mo->frame & ~FF_FRAMEMASK) | outframe; UINT8 outframe;
mo->sprite2 = P_KartFrameToSprite2(mo->skin, mo->frame, &outframe);
mo->frame = (mo->frame & ~FF_FRAMEMASK) | outframe;
}
else if (mo->sprite == SPR_PLAY && newsprite != SPR_PLAY) // switch from spr2
{
mo->frame = spr2frame(mo->sprite2, mo->frame);
}
} }
mo->sprite = newsprite; mo->sprite = newsprite;
break; break;

View file

@ -118,21 +118,27 @@ UINT8 P_KartFrameToSprite2(skin_t *skin, UINT8 inframe, UINT8 *outframe)
break; break;
F('G') F('G')
spr2 = SPR2_SLWN; spr2 = SPR2_SLWN;
frame = 1;
break; break;
F('H') F('H')
spr2 = SPR2_SLWL; spr2 = SPR2_SLWL;
frame = 1;
break; break;
F('I') F('I')
spr2 = SPR2_SLWR; spr2 = SPR2_SLWR;
frame = 1;
break; break;
F('J') F('J')
spr2 = SPR2_FSTN; spr2 = SPR2_FSTN;
frame = 1;
break; break;
F('K') F('K')
spr2 = SPR2_FSTL; spr2 = SPR2_FSTL;
frame = 1;
break; break;
F('L') F('L')
spr2 = SPR2_FSTR; spr2 = SPR2_FSTR;
frame = 1;
break; break;
F('M') F('N') F('M') F('N')
spr2 = SPR2_DRLN; spr2 = SPR2_DRLN;