Update code karma stuff to be more accurate

Turns out you can still drive even with karma off in v1 so lets repat this here
This commit is contained in:
NepDisk 2025-09-27 12:17:36 -04:00
parent 44ec1d9ef5
commit b2d3da4aa2
7 changed files with 33 additions and 19 deletions

View file

@ -3058,7 +3058,7 @@ static void K_drawKartBumpersOrKarma(void)
}
else
{
if (stplyr->bumper <= 0 && (gametyperules & GTR_KARMA))
if (stplyr->bumper <= 0 && (gametyperules & GTR_KARMA) && comeback)
{
V_DrawMappedPatch(fx, fy-1, V_HUDTRANS|splitflags, kp_splitkarmabomb, colormap);
V_DrawScaledPatch(fx+13, fy, V_HUDTRANS|splitflags, kp_facenum[stplyr->karmapoints % 10]);

View file

@ -2745,7 +2745,7 @@ fixed_t K_GetKartSpeedFromStat(UINT8 kartspeed, boolean karmabomb)
fixed_t K_GetKartSpeed(const player_t *player, boolean doboostpower, boolean dorubberband)
{
boolean karmabomb = ((gametyperules & GTR_KARMA) && player->bumper <= 0);
boolean karmabomb = ((gametyperules & GTR_BUMPERS) && player->bumper <= 0);
fixed_t finalspeed;
if (doboostpower && !player->pogospring && !P_IsObjectOnGround(player->mo))
@ -2788,7 +2788,7 @@ fixed_t K_GetKartAccel(const player_t *player)
fixed_t k_accel = 32; // 36;
UINT8 kartspeed = player->kartspeed;
if ((gametyperules & GTR_KARMA) && player->bumper <= 0)
if ((gametyperules & GTR_BUMPERS) && player->bumper <= 0)
kartspeed = 1;
k_accel += 4 * (9 - kartspeed); // 32 - 64
@ -8775,7 +8775,7 @@ INT16 K_GetKartTurnValue(const player_t *player, INT16 turnvalue)
INT32 K_GetKartDriftSparkValue(const player_t *player)
{
UINT8 kartspeed = ((gametyperules & GTR_KARMA) && player->bumper <= 0)
UINT8 kartspeed = ((gametyperules & GTR_BUMPERS) && player->bumper <= 0)
? 1
: player->kartspeed;
return (26*4 + kartspeed*2 + (9 - player->kartweight))*8;
@ -9862,7 +9862,7 @@ static void K_AdjustPlayerFriction(player_t *player)
player->mo->friction -= 2048;
// Karma ice physics
if ((gametyperules & GTR_KARMA) && player->bumper <= 0)
if ((gametyperules & GTR_BUMPERS) && player->bumper <= 0)
{
player->mo->friction += 1228;
@ -10754,14 +10754,14 @@ bubbledeflate:
player->mo->renderflags &= ~RF_DONTDRAW;
}
if ((gametyperules & GTR_KARMA) && player->bumper <= 0) // dead in match? you da bomb
if ((gametyperules & GTR_BUMPERS) && player->bumper <= 0) // dead in match? you da bomb
{
K_DropItems(player); //K_StripItems(player);
K_StripOther(player);
player->mo->renderflags |= RF_GHOSTLY;
player->flashing = player->karmadelay;
}
else if ((player->bumper > 0) || ((gametyperules & GTR_CIRCUIT) && !(gametyperules & GTR_KARMA)))
else if ((player->bumper > 0) || ((gametyperules & GTR_CIRCUIT) && !(gametyperules & GTR_BUMPERS)))
{
player->mo->renderflags &= ~(RF_TRANSMASK|RF_BRIGHTMASK);
}

View file

@ -956,7 +956,7 @@ static void K_SpawnFootstepParticle(mobj_t *mo, t_footstep_t *fs, tic_t timer)
if (mo->player != NULL)
{
boolean karmabomb = ((gametyperules & GTR_KARMA) && mo->player->bumper <= 0);
boolean karmabomb = ((gametyperules & GTR_BUMPERS) && mo->player->bumper <= 0);
tireAngle = (mo->player->drawangle + ANGLE_180);
speedValue = K_GetKartSpeedFromStat(mo->player->kartspeed, karmabomb);
}

View file

@ -7548,14 +7548,13 @@ static void P_MobjSceneryThink(mobj_t *mobj)
case MT_PLAYERARROW:
if (mobj->target && mobj->target->health
&& mobj->target->player && !mobj->target->player->spectator
&& mobj->target->health && mobj->target->player->playerstate != PST_DEAD
/*&& players[displayplayers[0]].mo && !players[displayplayers[0]].spectator*/)
&& mobj->target->health && mobj->target->player->playerstate != PST_DEAD)
{
fixed_t scale = 3*mobj->target->scale;
mobj->color = mobj->target->color;
K_MatchGenericExtraFlags(mobj, mobj->target);
if ((gametype == GT_RACE || mobj->target->player->bumper <= 0)
if ((!(gametyperules & GTR_ITEMARROWS) || (gametyperules & GTR_BUMPERS && mobj->target->player->bumper <= 0))
#if 1 // Set to 0 to test without needing to host
|| (P_IsDisplayPlayer(mobj->target->player))
#endif
@ -7660,6 +7659,17 @@ static void P_MobjSceneryThink(mobj_t *mobj)
else
mobj->tracer->renderflags |= RF_DONTDRAW;
}
else if (mobj->target->player->flametimer > 1)
{
//itembar = mobj->target->player->flametimer; -- not today satan
P_SetMobjState(mobj, S_PLAYERARROW_BOX);
mobj->tracer->sprite = SPR_ITEM;
mobj->tracer->frame = FF_FULLBRIGHT|KITEM_FLAMESHIELD;
if (leveltime & 1)
mobj->tracer->renderflags &= ~RF_DONTDRAW;
else
mobj->tracer->renderflags |= RF_DONTDRAW;
}
else if (mobj->target->player->growshrinktimer > 0)
{
P_SetMobjState(mobj, S_PLAYERARROW_BOX);
@ -12376,13 +12386,16 @@ void P_SpawnPlayer(INT32 playernum)
p->grieftime = 0;
p->spinoutrot = 0;
if (gametyperules & GTR_BUMPERS)
if (gametyperules & GTR_ITEMARROWS)
{
mobj_t *overheadarrow = P_SpawnMobj(mobj->x, mobj->y, mobj->z + mobj->height + 16*FRACUNIT, MT_PLAYERARROW);
P_SetTarget(&overheadarrow->target, mobj);
overheadarrow->renderflags |= RF_DONTDRAW;
P_SetScale(overheadarrow, mobj->destscale);
}
if (gametyperules & GTR_BUMPERS)
{
if (p->spectator)
{
// HEY! No being cheap...
@ -12397,7 +12410,7 @@ void P_SpawnPlayer(INT32 playernum)
K_SpawnPlayerBattleBumpers(p);
}
else if (p->bumper <= 0)
else if (p->bumper <= 0 && (gametyperules & GTR_KARMA))
{
mobj_t *karmahitbox = P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_KARMAHITBOX); // Player hitbox is too small!!
P_SetTarget(&karmahitbox->target, mobj);

View file

@ -8112,7 +8112,7 @@ static void P_InitLevelSettings(boolean reloadinggamestate)
// SRB2Kart: map load variables
if (grandprixinfo.gp == true)
{
if ((gametyperules & GTR_BUMPERS))
if ((gametyperules & GTR_BATTLESPEED))
{
gamespeed = KARTSPEED_NORMAL;
}
@ -8133,7 +8133,7 @@ static void P_InitLevelSettings(boolean reloadinggamestate)
else if (modeattacking)
{
// Just play it safe and set everything
if ((gametyperules & GTR_BUMPERS))
if ((gametyperules & GTR_BATTLESPEED))
gamespeed = KARTSPEED_NORMAL;
else
gamespeed = KARTSPEED_HARD;

View file

@ -536,7 +536,7 @@ void P_GivePlayerLives(player_t *player, INT32 numlives)
// Adds to the player's score
void P_AddPlayerScore(player_t *player, UINT32 amount)
{
if (!(gametyperules & GTR_BUMPERS))
if (!(gametyperules & GTR_POINTS))
return;
if (player->exiting) // srb2kart

View file

@ -1019,18 +1019,19 @@ void ST_Drawer(void)
// Replay manual-save stuff
if (demo.recording && multiplayer && demo.savebutton && demo.savebutton + 3*TICRATE < leveltime)
{
INT32 gtc = HU_GetHighlightColor();
switch (demo.savemode)
{
case DSM_NOTSAVING:
V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_ALLOWLOWERCASE|((gametyperules & GTR_BUMPERS) ? V_REDMAP : V_SKYMAP), "Look Backward: Save replay");
V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_ALLOWLOWERCASE|gtc, "Look Backward: Save replay");
break;
case DSM_WILLAUTOSAVE:
V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_ALLOWLOWERCASE|((gametyperules & GTR_BUMPERS) ? V_REDMAP : V_SKYMAP), "Replay will be saved. (Look Backward: Change title)");
V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_ALLOWLOWERCASE|gtc, "Replay will be saved. (Look Backward: Change title)");
break;
case DSM_WILLSAVE:
V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_ALLOWLOWERCASE|((gametyperules & GTR_BUMPERS) ? V_REDMAP : V_SKYMAP), "Replay will be saved.");
V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_ALLOWLOWERCASE|gtc, "Replay will be saved.");
break;
case DSM_TITLEENTRY: