Implement MultiItems into capsules/dropped items as well
This commit is contained in:
parent
9d2c895b2a
commit
95750e50e4
4 changed files with 36 additions and 27 deletions
|
|
@ -568,9 +568,12 @@ _(ISTB) // instashield layer B
|
|||
_(PWCL) // Invinc/grow clash VFX
|
||||
|
||||
_(ARRO) // player arrows
|
||||
_(ITEM)
|
||||
_(ITMO)
|
||||
_(ITMI)
|
||||
_(ITEM) // base item
|
||||
_(ITMO) // Multi-Orbinaut
|
||||
_(ITMI) // Invincibility
|
||||
_(ITSN) // Multi-Sneaker
|
||||
_(ITBA) // Multi-Banana
|
||||
_(ITJA) // Multi-Jawz
|
||||
_(ITMN)
|
||||
_(WANT)
|
||||
|
||||
|
|
|
|||
18
src/k_kart.c
18
src/k_kart.c
|
|
@ -10116,9 +10116,9 @@ UINT8 K_GetInvincibilityItemFrame(void)
|
|||
return ((leveltime % (7*3)) / 3);
|
||||
}
|
||||
|
||||
UINT8 K_GetOrbinautItemFrame(UINT8 count)
|
||||
UINT8 K_GetMultItemFrame(UINT8 count, UINT8 max)
|
||||
{
|
||||
return min(count - 1, 3);
|
||||
return min(count - 1, max);
|
||||
}
|
||||
|
||||
boolean K_IsSPBInGame(void)
|
||||
|
|
@ -10174,9 +10174,21 @@ void K_UpdateMobjItemOverlay(mobj_t *part, SINT8 itemType, UINT8 itemCount)
|
|||
{
|
||||
switch (itemType)
|
||||
{
|
||||
case KITEM_SNEAKER:
|
||||
part->sprite = SPR_ITSN;
|
||||
part->frame = FF_FULLBRIGHT|FF_PAPERSPRITE|K_GetMultItemFrame(itemCount, 2);
|
||||
break;
|
||||
case KITEM_ORBINAUT:
|
||||
part->sprite = SPR_ITMO;
|
||||
part->frame = FF_FULLBRIGHT|FF_PAPERSPRITE|K_GetOrbinautItemFrame(itemCount);
|
||||
part->frame = FF_FULLBRIGHT|FF_PAPERSPRITE|K_GetMultItemFrame(itemCount, 3);
|
||||
break;
|
||||
case KITEM_BANANA:
|
||||
part->sprite = SPR_ITBA;
|
||||
part->frame = FF_FULLBRIGHT|FF_PAPERSPRITE|K_GetMultItemFrame(itemCount, 3);
|
||||
break;
|
||||
case KITEM_JAWZ:
|
||||
part->sprite = SPR_ITJA;
|
||||
part->frame = FF_FULLBRIGHT|FF_PAPERSPRITE|K_GetMultItemFrame(itemCount, 1);
|
||||
break;
|
||||
case KITEM_INVINCIBILITY:
|
||||
part->sprite = SPR_ITMI;
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ SINT8 K_Sliptiding(player_t *player);
|
|||
void K_MoveKartPlayer(player_t *player, boolean onground);
|
||||
void K_CheckSpectateStatus(boolean considermapreset);
|
||||
UINT8 K_GetInvincibilityItemFrame(void);
|
||||
UINT8 K_GetOrbinautItemFrame(UINT8 count);
|
||||
UINT8 K_GetMultItemFrame(UINT8 count, UINT8 max);
|
||||
boolean K_IsSPBInGame(void);
|
||||
|
||||
// sound stuff for lua
|
||||
|
|
|
|||
34
src/p_mobj.c
34
src/p_mobj.c
|
|
@ -4151,8 +4151,20 @@ static void P_RefreshItemCapsuleParts(mobj_t *mobj)
|
|||
{
|
||||
switch (itemType)
|
||||
{
|
||||
case KITEM_SNEAKER:
|
||||
if (mobj->movecount - 1 > K_GetMultItemFrame(mobj->movecount, 2))
|
||||
count = mobj->movecount;
|
||||
break;
|
||||
case KITEM_ORBINAUT: // only display the number when the sprite no longer changes
|
||||
if (mobj->movecount - 1 > K_GetOrbinautItemFrame(mobj->movecount))
|
||||
if (mobj->movecount - 1 > K_GetMultItemFrame(mobj->movecount, 3))
|
||||
count = mobj->movecount;
|
||||
break;
|
||||
case KITEM_BANANA: // only display the number when the sprite no longer changes
|
||||
if (mobj->movecount - 1 > K_GetMultItemFrame(mobj->movecount, 3))
|
||||
count = mobj->movecount;
|
||||
break;
|
||||
case KITEM_JAWZ: // only display the number when the sprite no longer changes
|
||||
if (mobj->movecount - 1 > K_GetMultItemFrame(mobj->movecount, 1))
|
||||
count = mobj->movecount;
|
||||
break;
|
||||
case KITEM_SUPERRING: // always display the number, and multiply it by 5
|
||||
|
|
@ -6048,25 +6060,7 @@ static void P_MobjSceneryThink(mobj_t *mobj)
|
|||
{
|
||||
P_SetMobjState(mobj, S_PLAYERARROW_BOX);
|
||||
|
||||
switch (mobj->target->player->itemtype)
|
||||
{
|
||||
case KITEM_ORBINAUT:
|
||||
mobj->tracer->sprite = SPR_ITMO;
|
||||
mobj->tracer->frame = FF_FULLBRIGHT|K_GetOrbinautItemFrame(mobj->target->player->itemamount);
|
||||
break;
|
||||
case KITEM_INVINCIBILITY:
|
||||
mobj->tracer->sprite = SPR_ITMI;
|
||||
mobj->tracer->frame = FF_FULLBRIGHT|K_GetInvincibilityItemFrame();
|
||||
break;
|
||||
case KITEM_SAD:
|
||||
mobj->tracer->sprite = SPR_ITEM;
|
||||
mobj->tracer->frame = FF_FULLBRIGHT;
|
||||
break;
|
||||
default:
|
||||
mobj->tracer->sprite = SPR_ITEM;
|
||||
mobj->tracer->frame = FF_FULLBRIGHT|(mobj->target->player->itemtype);
|
||||
break;
|
||||
}
|
||||
K_UpdateMobjItemOverlay(mobj->tracer, mobj->target->player->itemtype,mobj->target->player->itemamount);
|
||||
|
||||
if (mobj->target->player->itemflags & IF_ITEMOUT)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue