mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
- Color Record Attack-persistent capsules sapphire
- Make invincibility capsules glow rainbow - Fix aerial capsules not scaling to full size
This commit is contained in:
parent
da37ba8238
commit
e981de3c33
3 changed files with 56 additions and 31 deletions
|
|
@ -14660,6 +14660,8 @@ void P_RefreshItemCapsuleParts(mobj_t *mobj)
|
||||||
INT32 itemType = mobj->threshold;
|
INT32 itemType = mobj->threshold;
|
||||||
mobj_t *part = mobj->tracer;
|
mobj_t *part = mobj->tracer;
|
||||||
skincolornum_t color;
|
skincolornum_t color;
|
||||||
|
UINT32 newRenderFlags = 0;
|
||||||
|
boolean colorized;
|
||||||
|
|
||||||
part->threshold = mobj->threshold;
|
part->threshold = mobj->threshold;
|
||||||
part->movecount = mobj->movecount;
|
part->movecount = mobj->movecount;
|
||||||
|
|
@ -14667,6 +14669,40 @@ void P_RefreshItemCapsuleParts(mobj_t *mobj)
|
||||||
if (itemType < 1 || itemType >= NUMKARTITEMS)
|
if (itemType < 1 || itemType >= NUMKARTITEMS)
|
||||||
itemType = KITEM_SAD;
|
itemType = KITEM_SAD;
|
||||||
|
|
||||||
|
// update invincibility properties
|
||||||
|
if (itemType == KITEM_INVINCIBILITY)
|
||||||
|
{
|
||||||
|
mobj->renderflags |= RF_FULLBRIGHT;
|
||||||
|
mobj->colorized = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mobj->renderflags &= ~RF_FULLBRIGHT;
|
||||||
|
mobj->color = SKINCOLOR_NONE;
|
||||||
|
mobj->colorized = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// update inside item frame
|
||||||
|
switch (itemType)
|
||||||
|
{
|
||||||
|
case KITEM_ORBINAUT:
|
||||||
|
part->sprite = SPR_ITMO;
|
||||||
|
part->frame = FF_FULLBRIGHT|FF_PAPERSPRITE|K_GetOrbinautItemFrame(mobj->movecount);
|
||||||
|
break;
|
||||||
|
case KITEM_INVINCIBILITY:
|
||||||
|
part->sprite = SPR_ITMI;
|
||||||
|
part->frame = FF_FULLBRIGHT|FF_PAPERSPRITE|K_GetInvincibilityItemFrame();
|
||||||
|
break;
|
||||||
|
case KITEM_SAD:
|
||||||
|
part->sprite = SPR_ITEM;
|
||||||
|
part->frame = FF_FULLBRIGHT|FF_PAPERSPRITE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
part->sprite = SPR_ITEM;
|
||||||
|
part->frame = FF_FULLBRIGHT|FF_PAPERSPRITE|(itemType);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// update number frame
|
// update number frame
|
||||||
if (K_GetShieldFromItem(itemType) != KSHIELD_NONE) // shields don't stack, so don't show a number
|
if (K_GetShieldFromItem(itemType) != KSHIELD_NONE) // shields don't stack, so don't show a number
|
||||||
;
|
;
|
||||||
|
|
@ -14714,18 +14750,25 @@ void P_RefreshItemCapsuleParts(mobj_t *mobj)
|
||||||
P_SetTarget(&part->tracer, NULL);
|
P_SetTarget(&part->tracer, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// update color
|
// update cap colors
|
||||||
color = (itemType == KITEM_SUPERRING ? SKINCOLOR_GOLD : SKINCOLOR_NONE);
|
if (itemType == KITEM_SUPERRING)
|
||||||
|
{
|
||||||
|
color = SKINCOLOR_GOLD;
|
||||||
|
newRenderFlags |= RF_SEMIBRIGHT;
|
||||||
|
}
|
||||||
|
else if (mobj->spawnpoint && (mobj->spawnpoint->options & MTF_EXTRA))
|
||||||
|
color = SKINCOLOR_SAPPHIRE;
|
||||||
|
else
|
||||||
|
color = SKINCOLOR_NONE;
|
||||||
|
|
||||||
|
colorized = (color != SKINCOLOR_NONE);
|
||||||
part = mobj;
|
part = mobj;
|
||||||
while (!P_MobjWasRemoved(part->hnext))
|
while (!P_MobjWasRemoved(part->hnext))
|
||||||
{
|
{
|
||||||
part = part->hnext;
|
part = part->hnext;
|
||||||
part->color = color;
|
part->color = color;
|
||||||
part->colorized = (color != SKINCOLOR_NONE);
|
part->colorized = colorized;
|
||||||
if (part->colorized)
|
part->renderflags = (part->renderflags & ~RF_SEMIBRIGHT) | newRenderFlags;
|
||||||
part->renderflags |= RF_SEMIBRIGHT;
|
|
||||||
else
|
|
||||||
part->renderflags &= ~RF_SEMIBRIGHT;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -284,7 +284,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
||||||
if ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0)
|
if ((gametyperules & GTR_BUMPERS) && player->bumpers <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (special->scale != special->destscale) // don't break it while it's respawning
|
if (special->scale < special->destscale) // don't break it while it's respawning
|
||||||
return;
|
return;
|
||||||
|
|
||||||
S_StartSound(toucher, special->info->deathsound);
|
S_StartSound(toucher, special->info->deathsound);
|
||||||
|
|
|
||||||
28
src/p_mobj.c
28
src/p_mobj.c
|
|
@ -6141,35 +6141,17 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
||||||
case MT_ITEMCAPSULE:
|
case MT_ITEMCAPSULE:
|
||||||
if (!P_MobjWasRemoved(mobj->tracer))
|
if (!P_MobjWasRemoved(mobj->tracer))
|
||||||
{
|
{
|
||||||
INT32 itemType = mobj->threshold;
|
|
||||||
mobj_t *part = mobj->tracer;
|
mobj_t *part = mobj->tracer;
|
||||||
|
|
||||||
if (mobj->threshold != part->threshold
|
if (mobj->threshold != part->threshold
|
||||||
|| mobj->movecount != part->movecount) // allow scripters to easily change the capsule properties!
|
|| mobj->movecount != part->movecount) // allow scripters to easily change the capsule properties!
|
||||||
P_RefreshItemCapsuleParts(mobj);
|
P_RefreshItemCapsuleParts(mobj);
|
||||||
|
|
||||||
if (itemType < 1 || itemType >= NUMKARTITEMS)
|
// animate invincibility capsules
|
||||||
itemType = KITEM_SAD;
|
if (mobj->threshold == KITEM_INVINCIBILITY)
|
||||||
|
|
||||||
// update inside item frame
|
|
||||||
switch (itemType)
|
|
||||||
{
|
{
|
||||||
case KITEM_ORBINAUT:
|
mobj->color = K_RainbowColor(leveltime);
|
||||||
part->sprite = SPR_ITMO;
|
part->frame = FF_FULLBRIGHT|FF_PAPERSPRITE|K_GetInvincibilityItemFrame();
|
||||||
part->frame = FF_FULLBRIGHT|FF_PAPERSPRITE|K_GetOrbinautItemFrame(mobj->movecount);
|
|
||||||
break;
|
|
||||||
case KITEM_INVINCIBILITY:
|
|
||||||
part->sprite = SPR_ITMI;
|
|
||||||
part->frame = FF_FULLBRIGHT|FF_PAPERSPRITE|K_GetInvincibilityItemFrame();
|
|
||||||
break;
|
|
||||||
case KITEM_SAD:
|
|
||||||
part->sprite = SPR_ITEM;
|
|
||||||
part->frame = FF_FULLBRIGHT|FF_PAPERSPRITE;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
part->sprite = SPR_ITEM;
|
|
||||||
part->frame = FF_FULLBRIGHT|FF_PAPERSPRITE|(itemType);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -11723,7 +11705,7 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean
|
||||||
|
|
||||||
// Ambush = double size (grounded) / half size (aerial)
|
// Ambush = double size (grounded) / half size (aerial)
|
||||||
if (!(mthing->options & MTF_AMBUSH) == !P_IsObjectOnGround(mobj))
|
if (!(mthing->options & MTF_AMBUSH) == !P_IsObjectOnGround(mobj))
|
||||||
mobj->destscale = min(mobj->scale << 1, FixedDiv(64*FRACUNIT, mobj->info->radius)); // don't make them larger than the blockmap can handle
|
mobj->destscale = min(mobj->destscale << 1, FixedDiv(64*FRACUNIT, mobj->info->radius)); // don't make them larger than the blockmap can handle
|
||||||
|
|
||||||
P_RefreshItemCapsuleParts(mobj);
|
P_RefreshItemCapsuleParts(mobj);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue