mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-03-13 22:56:28 +00:00
Merge branch 'capsule-ring-item' into 'master'
Ring Item Capsule adjustments for Items Tutorial See merge request kart-krew-dev/ring-racers-internal!2742
This commit is contained in:
commit
da962a0883
7 changed files with 21 additions and 10 deletions
|
|
@ -225,6 +225,7 @@ typedef enum
|
|||
NUMKARTRESULTS,
|
||||
|
||||
KDROP_STONESHOETRAP,
|
||||
KCAPSULE_RING,
|
||||
|
||||
// Power-ups exist in the same enum as items so it's easy
|
||||
// for paper items to be reused for them.
|
||||
|
|
|
|||
|
|
@ -5229,6 +5229,7 @@ struct int_const_s const INT_CONST[] = {
|
|||
{"KRITEM_TRIPLEGACHABOM",KRITEM_TRIPLEGACHABOM},
|
||||
{"NUMKARTRESULTS",NUMKARTRESULTS},
|
||||
{"KDROP_STONESHOETRAP",KDROP_STONESHOETRAP},
|
||||
{"KCAPSULE_RING", KCAPSULE_RING},
|
||||
{"FIRSTPOWERUP",FIRSTPOWERUP},
|
||||
{"POWERUP_SMONITOR",POWERUP_SMONITOR},
|
||||
{"POWERUP_BARRIER",POWERUP_BARRIER},
|
||||
|
|
|
|||
|
|
@ -506,6 +506,7 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"ITEM",
|
||||
"ITMO",
|
||||
"ITMI",
|
||||
"IBON",
|
||||
"ITMN",
|
||||
"PWRB",
|
||||
"RBOW", // power-up aura
|
||||
|
|
|
|||
|
|
@ -1047,6 +1047,7 @@ typedef enum sprite
|
|||
SPR_ITEM,
|
||||
SPR_ITMO,
|
||||
SPR_ITMI,
|
||||
SPR_IBON,
|
||||
SPR_ITMN,
|
||||
SPR_PWRB,
|
||||
SPR_RBOW, // power-up aura
|
||||
|
|
|
|||
|
|
@ -16293,6 +16293,10 @@ void K_UpdateMobjItemOverlay(mobj_t *part, SINT8 itemType, UINT8 itemCount)
|
|||
part->sprite = SPR_STON;
|
||||
part->frame = FF_FULLBRIGHT|FF_PAPERSPRITE|4;
|
||||
break;
|
||||
case KCAPSULE_RING:
|
||||
part->sprite = SPR_IBON;
|
||||
part->frame = FF_FULLBRIGHT|FF_PAPERSPRITE;
|
||||
break;
|
||||
default:
|
||||
if (itemType >= FIRSTPOWERUP)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -533,7 +533,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
|||
if (K_IsSPBInGame()) // don't spawn a second SPB
|
||||
return;
|
||||
break;
|
||||
case KITEM_SUPERRING:
|
||||
case KCAPSULE_RING:
|
||||
if (!P_CanPickupItem(player, PICKUP_RINGORSPHERE)) // no cheaty rings
|
||||
return;
|
||||
break;
|
||||
|
|
@ -546,7 +546,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
|||
}
|
||||
|
||||
// Ring Capsules shouldn't affect pickup cheese, they're just used as condensed ground-ring placements.
|
||||
if (special->threshold != KITEM_SUPERRING)
|
||||
if (special->threshold != KCAPSULE_RING)
|
||||
P_UpdateLastPickup(player, 3);
|
||||
|
||||
S_StartSound(toucher, special->info->deathsound);
|
||||
|
|
@ -2052,7 +2052,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
|||
target->fuse = 5*TICRATE;
|
||||
else if (K_CapsuleTimeAttackRules() == true)
|
||||
; // Don't respawn (internal)
|
||||
else if (target->threshold == KITEM_SUPERRING)
|
||||
else if (target->threshold == KCAPSULE_RING)
|
||||
target->fuse = 20*TICRATE;
|
||||
else
|
||||
target->fuse = 40*TICRATE;
|
||||
|
|
@ -2119,7 +2119,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
|||
if (!(target->flags2 & MF2_STRONGBOX))
|
||||
{
|
||||
// special behavior for ring capsules
|
||||
if (target->threshold == KITEM_SUPERRING)
|
||||
if (target->threshold == KCAPSULE_RING)
|
||||
{
|
||||
K_AwardPlayerRings(player, 5 * target->movecount, true);
|
||||
break;
|
||||
|
|
|
|||
15
src/p_mobj.c
15
src/p_mobj.c
|
|
@ -4452,7 +4452,7 @@ static void P_RefreshItemCapsuleParts(mobj_t *mobj)
|
|||
UINT32 newRenderFlags = 0;
|
||||
boolean colorized;
|
||||
|
||||
if (itemType < 1 || itemType >= NUMKARTITEMS)
|
||||
if (itemType < 1 || (itemType >= NUMKARTITEMS && itemType != KCAPSULE_RING))
|
||||
itemType = KITEM_SAD;
|
||||
|
||||
// update invincibility properties
|
||||
|
|
@ -4471,7 +4471,7 @@ static void P_RefreshItemCapsuleParts(mobj_t *mobj)
|
|||
// update cap colors
|
||||
if (mobj->extravalue2)
|
||||
color = mobj->extravalue2;
|
||||
else if (itemType == KITEM_SUPERRING)
|
||||
else if (itemType == KCAPSULE_RING)
|
||||
{
|
||||
color = SKINCOLOR_GOLD;
|
||||
newRenderFlags |= RF_SEMIBRIGHT;
|
||||
|
|
@ -4514,7 +4514,8 @@ static void P_RefreshItemCapsuleParts(mobj_t *mobj)
|
|||
if (mobj->movecount - 1 > K_GetOrbinautItemFrame(mobj->movecount))
|
||||
count = mobj->movecount;
|
||||
break;
|
||||
case KITEM_SUPERRING: // always display the number, and multiply it by 5
|
||||
case KCAPSULE_RING:
|
||||
// always display the number, and multiply it by 5
|
||||
if (mobj->flags2 & MF2_STRONGBOX)
|
||||
count = mobj->movecount * 20; // give Super Rings
|
||||
else
|
||||
|
|
@ -11519,7 +11520,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
|
|||
// set default item & count
|
||||
#if 0 // set to 1 to test capsules with random items, e.g. with objectplace
|
||||
if (P_RandomChance(PR_ITEM_SPAWNER, FRACUNIT/3))
|
||||
mobj->threshold = KITEM_SUPERRING;
|
||||
mobj->threshold = KCAPSULE_RING;
|
||||
else if (P_RandomChance(PR_ITEM_SPAWNER, FRACUNIT/3))
|
||||
mobj->threshold = KITEM_SPB;
|
||||
else if (P_RandomChance(PR_ITEM_SPAWNER, FRACUNIT/3))
|
||||
|
|
@ -11528,7 +11529,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
|
|||
mobj->threshold = P_RandomRange(PR_ITEM_SPAWNER, 1, NUMKARTITEMS - 1);
|
||||
mobj->movecount = P_RandomChance(PR_ITEM_SPAWNER, FRACUNIT/3) ? 1 : P_RandomKey(PR_ITEM_SPAWNER, 32) + 1;
|
||||
#else
|
||||
mobj->threshold = KITEM_SUPERRING; // default item is super ring
|
||||
mobj->threshold = KCAPSULE_RING; // default item is ring
|
||||
mobj->movecount = 1;
|
||||
#endif
|
||||
|
||||
|
|
@ -14118,9 +14119,11 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj)
|
|||
if (!P_IsObjectOnGround(mobj))
|
||||
mobj->flags |= MF_NOGRAVITY;
|
||||
|
||||
// Angle = item type
|
||||
// First argument = item type (or 0 for KCAPSULE_RING)
|
||||
if (mthing->thing_args[0] > 0 && mthing->thing_args[0] < NUMKARTITEMS)
|
||||
{
|
||||
mobj->threshold = mthing->thing_args[0];
|
||||
}
|
||||
|
||||
// Parameter = extra items (x5 for rings)
|
||||
mobj->movecount += mthing->thing_args[1];
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue