From b2d3da4aa20774a72f81f5acc8bc79b581618ce5 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Sat, 27 Sep 2025 12:17:36 -0400 Subject: [PATCH] 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 --- src/k_hud.c | 2 +- src/k_kart.c | 12 ++++++------ src/k_terrain.c | 2 +- src/p_mobj.c | 23 ++++++++++++++++++----- src/p_setup.c | 4 ++-- src/p_user.c | 2 +- src/st_stuff.c | 7 ++++--- 7 files changed, 33 insertions(+), 19 deletions(-) diff --git a/src/k_hud.c b/src/k_hud.c index 038562a57..e31711dc3 100644 --- a/src/k_hud.c +++ b/src/k_hud.c @@ -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]); diff --git a/src/k_kart.c b/src/k_kart.c index 0a7c1c792..3f590981b 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -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); } diff --git a/src/k_terrain.c b/src/k_terrain.c index 40e557f23..abb7dcc02 100644 --- a/src/k_terrain.c +++ b/src/k_terrain.c @@ -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); } diff --git a/src/p_mobj.c b/src/p_mobj.c index b218c624d..6e9176656 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -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); diff --git a/src/p_setup.c b/src/p_setup.c index 1f0a09b8d..4739b87f7 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -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; diff --git a/src/p_user.c b/src/p_user.c index fe7c1748d..416c7c7e7 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -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 diff --git a/src/st_stuff.c b/src/st_stuff.c index f2ff1ded7..1019979ab 100644 --- a/src/st_stuff.c +++ b/src/st_stuff.c @@ -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: