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:
{
spritenum_t newsprite = luaL_checkinteger(L, 3);
if (lua_compatmode && mo->sprite != SPR_PLAY && newsprite == SPR_PLAY)
if (lua_compatmode)
{
UINT8 outframe;
mo->sprite2 = P_KartFrameToSprite2(mo->skin, mo->frame, &outframe);
mo->frame = (mo->frame & ~FF_FRAMEMASK) | outframe;
if (mo->sprite != SPR_PLAY && newsprite == SPR_PLAY) // switch to spr2
{
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;
break;

View file

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