From d5277407679a9173be751443fe17c7b65a6c1bf4 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Sun, 23 Feb 2025 14:37:39 -0500 Subject: [PATCH] Modify and update code for new assets --- src/d_main.cpp | 13 ++++++++-- src/k_hud.c | 67 +++++++++++++++++++++++++++++++------------------- src/m_menu.c | 8 ------ src/p_mobj.c | 12 +++++++-- src/w_wad.c | 3 +-- 5 files changed, 64 insertions(+), 39 deletions(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index ae37c8455..d9f974b35 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -1485,10 +1485,15 @@ void D_SRB2Main(void) // Check MD5s of autoloaded files // Note: Do not add any files that ignore MD5! W_VerifyFileMD5(mainwads, ASSET_HASH_SRB2_SRB); // srb2.srb - mainwads++; W_VerifyFileMD5(mainwads, ASSET_HASH_GFX_KART); // gfx.pk3 - mainwads++; W_VerifyFileMD5(mainwads, ASSET_HASH_TEXTURES_KART); // textures.pk3 + wadfiles[mainwads]->compatmode = true; + mainwads++; W_VerifyFileMD5(mainwads, ASSET_HASH_GFX_KART); // gfx.kart + wadfiles[mainwads]->compatmode = true; + mainwads++; W_VerifyFileMD5(mainwads, ASSET_HASH_TEXTURES_KART); // textures.kart + wadfiles[mainwads]->compatmode = true; mainwads++; W_VerifyFileMD5(mainwads, ASSET_HASH_CHARS_KART); // chars.kart + wadfiles[mainwads]->compatmode = true; mainwads++; W_VerifyFileMD5(mainwads, ASSET_HASH_MAPS_KART); // maps.kart + wadfiles[mainwads]->compatmode = true; mainwads++; W_VerifyFileMD5(mainwads, ASSET_HASH_MAIN_PK3); // main.pk3 //mainwads++; W_VerifyFileMD5(mainwads, ASSET_HASH_FOLLOWERS_PK3); // followers.pk3 #ifdef USE_PATCH_FILE @@ -1496,9 +1501,13 @@ void D_SRB2Main(void) #endif #else mainwads++; // gfx.kart + wadfiles[mainwads]->compatmode = true; mainwads++; // textures.kart + wadfiles[mainwads]->compatmode = true; mainwads++; // chars.kart + wadfiles[mainwads]->compatmode = true; mainwads++; // maps.kart + wadfiles[mainwads]->compatmode = true; mainwads++; // main.pk3 //mainwads++; // followers.pk3 #ifdef USE_PATCH_FILE diff --git a/src/k_hud.c b/src/k_hud.c index 0c4426461..0b38bc5d3 100644 --- a/src/k_hud.c +++ b/src/k_hud.c @@ -107,13 +107,13 @@ static patch_t *kp_itemmulsticker[2]; static patch_t *kp_itemx; static patch_t *kp_superring[2]; -static patch_t *kp_sneaker[2]; +static patch_t *kp_sneaker[4]; static patch_t *kp_rocketsneaker[2]; static patch_t *kp_invincibility[13]; -static patch_t *kp_banana[2]; +static patch_t *kp_banana[5]; static patch_t *kp_eggman[2]; static patch_t *kp_orbinaut[5]; -static patch_t *kp_jawz[2]; +static patch_t *kp_jawz[3]; static patch_t *kp_mine[2]; static patch_t *kp_landmine[2]; static patch_t *kp_droptarget[2]; @@ -302,6 +302,8 @@ void K_LoadKartHUDGraphics(void) HU_UpdatePatch(&kp_superring[0], "K_ITRING"); HU_UpdatePatch(&kp_sneaker[0], "K_ITSHOE"); + HU_UpdatePatch(&kp_sneaker[1], "K_ITSHO2"); + HU_UpdatePatch(&kp_sneaker[2], "K_ITSHO3"); HU_UpdatePatch(&kp_rocketsneaker[0], "K_ITRSHE"); sprintf(buffer, "K_ITINVx"); @@ -311,6 +313,9 @@ void K_LoadKartHUDGraphics(void) HU_UpdatePatch(&kp_invincibility[i], "%s", buffer); } HU_UpdatePatch(&kp_banana[0], "K_ITBANA"); + HU_UpdatePatch(&kp_banana[1], "K_ITBAN2"); + HU_UpdatePatch(&kp_banana[2], "K_ITBAN3"); + HU_UpdatePatch(&kp_banana[3], "K_ITBAN4"); HU_UpdatePatch(&kp_eggman[0], "K_ITEGGM"); sprintf(buffer, "K_ITORBx"); for (i = 0; i < 4; i++) @@ -319,6 +324,7 @@ void K_LoadKartHUDGraphics(void) HU_UpdatePatch(&kp_orbinaut[i], "%s", buffer); } HU_UpdatePatch(&kp_jawz[0], "K_ITJAWZ"); + HU_UpdatePatch(&kp_jawz[1], "K_ITJAW2"); HU_UpdatePatch(&kp_mine[0], "K_ITMINE"); HU_UpdatePatch(&kp_landmine[0], "K_ITLNDM"); HU_UpdatePatch(&kp_droptarget[0], "K_ITDTRG"); @@ -358,7 +364,7 @@ void K_LoadKartHUDGraphics(void) HU_UpdatePatch(&kp_itemmulsticker[1], "K_ISMUL"); HU_UpdatePatch(&kp_superring[1], "K_ISRING"); - HU_UpdatePatch(&kp_sneaker[1], "K_ISSHOE"); + HU_UpdatePatch(&kp_sneaker[3], "K_ISSHOE"); HU_UpdatePatch(&kp_rocketsneaker[1], "K_ISRSHE"); sprintf(buffer, "K_ISINVx"); for (i = 0; i < 6; i++) @@ -366,10 +372,10 @@ void K_LoadKartHUDGraphics(void) buffer[7] = '1'+i; HU_UpdatePatch(&kp_invincibility[i+7], "%s", buffer); } - HU_UpdatePatch(&kp_banana[1], "K_ISBANA"); + HU_UpdatePatch(&kp_banana[4], "K_ISBANA"); HU_UpdatePatch(&kp_eggman[1], "K_ISEGGM"); HU_UpdatePatch(&kp_orbinaut[4], "K_ISORBN"); - HU_UpdatePatch(&kp_jawz[1], "K_ISJAWZ"); + HU_UpdatePatch(&kp_jawz[2], "K_ISJAWZ"); HU_UpdatePatch(&kp_mine[1], "K_ISMINE"); HU_UpdatePatch(&kp_landmine[1], "K_ISLNDM"); HU_UpdatePatch(&kp_droptarget[1], "K_ISDTRG"); @@ -546,23 +552,18 @@ const char *K_GetItemPatch(UINT8 item, boolean tiny) switch (item) { case KITEM_SNEAKER: - case KRITEM_DUALSNEAKER: - case KRITEM_TRIPLESNEAKER: return (tiny ? "K_ISSHOE" : "K_ITSHOE"); case KITEM_ROCKETSNEAKER: return (tiny ? "K_ISRSHE" : "K_ITRSHE"); case KITEM_INVINCIBILITY: return (tiny ? "K_ISINV1" : "K_ITINV1"); case KITEM_BANANA: - case KRITEM_TRIPLEBANANA: - case KRITEM_TENFOLDBANANA: return (tiny ? "K_ISBANA" : "K_ITBANA"); case KITEM_EGGMAN: return (tiny ? "K_ISEGGM" : "K_ITEGGM"); case KITEM_ORBINAUT: return (tiny ? "K_ISORBN" : "K_ITORB1"); case KITEM_JAWZ: - case KRITEM_DUALJAWZ: return (tiny ? "K_ISJAWZ" : "K_ITJAWZ"); case KITEM_MINE: return (tiny ? "K_ISMINE" : "K_ITMINE"); @@ -592,8 +593,18 @@ const char *K_GetItemPatch(UINT8 item, boolean tiny) return (tiny ? "K_ISDTRG" : "K_ITDTRG"); case KITEM_KITCHENSINK: return (tiny ? "K_ISSINK" : "K_ITSINK"); + case KRITEM_DUALSNEAKER: + return (tiny ? "K_ISSHOE" : "K_ITSHO2"); + case KRITEM_TRIPLESNEAKER: + return (tiny ? "K_ISSHOE" : "K_ITSHO3"); case KRITEM_TRIPLEORBINAUT: return (tiny ? "K_ISORBN" : "K_ITORB3"); + case KRITEM_DUALJAWZ: + return (tiny ? "K_ISJAWZ" : "K_ITJAW2"); + case KRITEM_TRIPLEBANANA: + return (tiny ? "K_ISBANA" : "K_ITBAN3"); + case KRITEM_TENFOLDBANANA: + return (tiny ? "K_ISBANA" : "K_ITBAN4"); case KRITEM_QUADORBINAUT: return (tiny ? "K_ISORBN" : "K_ITORB4"); default: @@ -871,7 +882,7 @@ static void K_drawKartItem(void) patch_t *localbg = ((offset) ? kp_itembg[2] : kp_itembg[0]); patch_t *localinv = ((offset) ? kp_invincibility[((leveltime % (6*3)) / 3) + 7] : kp_invincibility[(leveltime % (7*3)) / 3]); INT32 fx = 0, fy = 0, fflags = 0; // final coords for hud and flags... - const INT32 numberdisplaymin = ((!offset && stplyr->itemtype == KITEM_ORBINAUT) ? 5 : 2); + INT32 numberdisplaymin = 2; INT32 itembar = 0; INT32 maxl = 0; // itembar's normal highest value const INT32 barlength = (r_splitscreen > 1 ? 12 : 26); @@ -889,11 +900,11 @@ static void K_drawKartItem(void) { // Each case is handled in threes, to give three frames of in-game time to see the item on the roulette case 0: // Sneaker - localpatch = kp_sneaker[offset]; + localpatch = kp_sneaker[2+offset]; //localcolor = SKINCOLOR_RASPBERRY; break; case 1: // Banana - localpatch = kp_banana[offset]; + localpatch = kp_banana[3+offset]; //localcolor = SKINCOLOR_YELLOW; break; case 2: // Orbinaut @@ -1030,7 +1041,9 @@ static void K_drawKartItem(void) switch(stplyr->itemtype) { case KITEM_SNEAKER: - localpatch = kp_sneaker[offset]; + localpatch = kp_sneaker[(offset ? 3 : min(stplyr->itemamount-1, 2))]; + numberdisplaymin = 4; + numberdisplaymin = offset ? 2 : 4; break; case KITEM_ROCKETSNEAKER: localpatch = kp_rocketsneaker[offset]; @@ -1040,16 +1053,20 @@ static void K_drawKartItem(void) localbg = kp_itembg[offset+1]; break; case KITEM_BANANA: - localpatch = kp_banana[offset]; + localpatch = kp_banana[(offset ? 4 : min(stplyr->itemamount-1, 3))]; + numberdisplaymin = offset ? 2 : 5; break; case KITEM_EGGMAN: localpatch = kp_eggman[offset]; break; case KITEM_ORBINAUT: localpatch = kp_orbinaut[(offset ? 4 : min(stplyr->itemamount-1, 3))]; + numberdisplaymin = offset ? 2 : 5; break; case KITEM_JAWZ: - localpatch = kp_jawz[offset]; + localpatch = kp_jawz[(offset ? 2 : min(stplyr->itemamount-1, 1))]; + numberdisplaymin = 3; + numberdisplaymin = offset ? 2 : 3; break; case KITEM_MINE: localpatch = kp_mine[offset]; @@ -4128,13 +4145,13 @@ static void K_drawDistributionDebugger(void) { patch_t *items[NUMKARTRESULTS] = { kp_sadface[1], - kp_sneaker[1], + kp_sneaker[3], kp_rocketsneaker[1], kp_invincibility[7], - kp_banana[1], + kp_banana[4], kp_eggman[1], kp_orbinaut[4], - kp_jawz[1], + kp_jawz[2], kp_mine[1], kp_landmine[1], kp_ballhog[1], @@ -4150,13 +4167,13 @@ static void K_drawDistributionDebugger(void) kp_kitchensink[1], kp_droptarget[1], - kp_sneaker[1], - kp_sneaker[1], - kp_banana[1], - kp_banana[1], + kp_sneaker[3], + kp_sneaker[3], + kp_banana[4], + kp_banana[4], kp_orbinaut[4], kp_orbinaut[4], - kp_jawz[1] + kp_jawz[2] }; UINT8 useodds = 0; UINT8 pingame = 0, bestbumper = 0; diff --git a/src/m_menu.c b/src/m_menu.c index 5bb911a9d..bdcbd385b 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -11326,14 +11326,6 @@ static void M_DrawMonitorToggles(void) switch (currentMenu->menuitems[itemOn].alphaKey) { - case KRITEM_DUALSNEAKER: - case KRITEM_DUALJAWZ: - drawnum = 2; - break; - case KRITEM_TRIPLESNEAKER: - case KRITEM_TRIPLEBANANA: - drawnum = 3; - break; case KRITEM_TENFOLDBANANA: drawnum = 10; break; diff --git a/src/p_mobj.c b/src/p_mobj.c index 46d519446..575eaaaed 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -7428,9 +7428,17 @@ static boolean P_MobjRegularThink(mobj_t *mobj) mobj->renderflags &= ~RF_GHOSTLYMASK; scale += (blow * (3*scale)) / bubbletime; - mobj->frame = (states[S_BUBBLESHIELDBLOWUP].frame + mobj->extravalue1); + mobj->frame = CLAMP(states[S_BUBBLESHIELDBLOWUP].frame + mobj->extravalue1, states[S_BUBBLESHIELDBLOWUP].frame, states[S_BUBBLESHIELDBLOWUP].frame + 3); if ((mobj->target->player->bubbleblowup > bubbletime) && (leveltime & 1)) - mobj->frame = (states[S_BUBBLESHIELDBLOWUP].frame + 5); + { + mobj->color = SKINCOLOR_WHITE; + mobj->colorized = true; + } + else + { + mobj->color = SKINCOLOR_BLUE; + mobj->colorized = false; + } if (mobj->extravalue1 < 4 && mobj->extravalue2 < blow && !mobj->cvmem && (leveltime & 1)) // Growing { diff --git a/src/w_wad.c b/src/w_wad.c index 6034d875a..122f7eba9 100644 --- a/src/w_wad.c +++ b/src/w_wad.c @@ -364,8 +364,7 @@ static inline boolean CheckCompatWad(UINT16 wadnum) if (CheckCompatFilename(wadfiles[wadnum]->filename) || CheckCompatSkins(wadnum)) return true; - // assume Kart/2.1 for WADs so basegame assets work - return true; + return false; } /** Compute MD5 message digest for bytes read from STREAM of this filname.