From fa187a66e2344fe2b086d08880c86906574f0355 Mon Sep 17 00:00:00 2001 From: toaster Date: Sun, 27 Oct 2019 12:47:58 +0000 Subject: [PATCH 1/6] * Disable dashmode if pw_carry is set or the player is exiting, in addition to getting the flag. * Add a dashmode downpower sound. --- src/p_user.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/p_user.c b/src/p_user.c index dde1dc1dc..834fc293c 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -11811,8 +11811,8 @@ void P_PlayerThink(player_t *player) player->pflags &= ~PF_SLIDING; #define dashmode player->dashmode - // Dash mode - thanks be to Iceman404 - if ((player->charflags & SF_DASHMODE) && !(player->gotflag) && !(maptol & TOL_NIGHTS)) // woo, dashmode! no nights tho. + // Dash mode - thanks be to VelocitOni + if ((player->charflags & SF_DASHMODE) && !player->gotflag && !player->powers[pw_carry] && !player->exiting && !(maptol & TOL_NIGHTS)) // woo, dashmode! no nights tho. { boolean totallyradical = player->speed >= FixedMul(player->runspeed, player->mo->scale); boolean floating = (player->secondjump == 1); @@ -11827,7 +11827,11 @@ void P_PlayerThink(player_t *player) else if ((!totallyradical || !floating) && !(player->pflags & PF_SPINNING)) { if (dashmode > 3) + { dashmode -= 3; // Rather than lose it all, it gently counts back down! + if ((dashmode+3) >= DASHMODE_THRESHOLD && dashmode < DASHMODE_THRESHOLD) + S_StartSound(player->mo, sfx_s3k72); + } else dashmode = 0; } @@ -11858,6 +11862,7 @@ void P_PlayerThink(player_t *player) { player->normalspeed = skins[player->skin].normalspeed; player->jumpfactor = skins[player->skin].jumpfactor; + S_StartSound(player->mo, sfx_s3k72); } dashmode = 0; } From 9e8733be4210de3e3ccb2048bb712295a2a27d0f Mon Sep 17 00:00:00 2001 From: toaster Date: Sun, 27 Oct 2019 13:07:06 +0000 Subject: [PATCH 2/6] Make player flash colorized when dashmode if not SF_MACHINE, per Sonic Advance 2. --- src/r_things.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/r_things.c b/src/r_things.c index 00eaae1c2..0102489eb 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -755,10 +755,13 @@ static void R_DrawVisSprite(vissprite_t *vis) dc_translation = R_GetTranslationColormap(TC_RAINBOW, vis->mobj->color, GTC_CACHE); else if (!(vis->cut & SC_PRECIP) && vis->mobj->player && vis->mobj->player->dashmode >= DASHMODE_THRESHOLD - && (vis->mobj->player->charflags & (SF_DASHMODE|SF_MACHINE)) == (SF_DASHMODE|SF_MACHINE) + && (vis->mobj->player->charflags & SF_DASHMODE) && ((leveltime/2) & 1)) { - dc_translation = R_GetTranslationColormap(TC_DASHMODE, 0, GTC_CACHE); + if (vis->mobj->player->charflags & SF_MACHINE) + dc_translation = R_GetTranslationColormap(TC_DASHMODE, 0, GTC_CACHE); + else + dc_translation = R_GetTranslationColormap(TC_RAINBOW, vis->mobj->color, GTC_CACHE); } else if (!(vis->cut & SC_PRECIP) && vis->mobj->skin && vis->mobj->sprite == SPR_PLAY) // MT_GHOST LOOKS LIKE A PLAYER SO USE THE PLAYER TRANSLATION TABLES. >_> { From 9a160823aa934aee7575e63da09f05004e1b5ff8 Mon Sep 17 00:00:00 2001 From: toaster Date: Mon, 28 Oct 2019 14:19:07 +0000 Subject: [PATCH 3/6] Replace the s3k sound used when starting dashmode with the Sonic CD equivalent, which among other things is more appropriate AND isn't used for anything unrelated so can have a more appropriate caption --- src/p_user.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_user.c b/src/p_user.c index 834fc293c..6169c3b1f 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -11822,7 +11822,7 @@ void P_PlayerThink(player_t *player) if (dashmode < DASHMODE_MAX) dashmode++; // Counter. Adds 1 to dash mode per tic in top speed. if (dashmode == DASHMODE_THRESHOLD) // This isn't in the ">=" equation because it'd cause the sound to play infinitely. - S_StartSound(player->mo, sfx_s3ka2); // If the player enters dashmode, play this sound on the the tic it starts. + S_StartSound(player->mo, sfx_cdfm62); // If the player enters dashmode, play this sound on the the tic it starts. } else if ((!totallyradical || !floating) && !(player->pflags & PF_SPINNING)) { From 67a99f6334494fea4713d79d59bdf33cf91deed1 Mon Sep 17 00:00:00 2001 From: toaster Date: Wed, 30 Oct 2019 17:16:44 +0000 Subject: [PATCH 4/6] ACTUALLY applied colorized flashing for dashmode to non-SF_MACHINE players, which wasn't happening for non-transparent players because :VVV --- src/r_things.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/r_things.c b/src/r_things.c index 0102489eb..1b44a22b8 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -786,10 +786,13 @@ static void R_DrawVisSprite(vissprite_t *vis) dc_translation = R_GetTranslationColormap(TC_RAINBOW, vis->mobj->color, GTC_CACHE); else if (!(vis->cut & SC_PRECIP) && vis->mobj->player && vis->mobj->player->dashmode >= DASHMODE_THRESHOLD - && (vis->mobj->player->charflags & (SF_DASHMODE|SF_MACHINE)) == (SF_DASHMODE|SF_MACHINE) + && (vis->mobj->player->charflags & SF_DASHMODE) && ((leveltime/2) & 1)) { - dc_translation = R_GetTranslationColormap(TC_DASHMODE, 0, GTC_CACHE); + if (vis->mobj->player->charflags & SF_MACHINE) + dc_translation = R_GetTranslationColormap(TC_DASHMODE, 0, GTC_CACHE); + else + dc_translation = R_GetTranslationColormap(TC_RAINBOW, vis->mobj->color, GTC_CACHE); } else if (!(vis->cut & SC_PRECIP) && vis->mobj->skin && vis->mobj->sprite == SPR_PLAY) // This thing is a player! { From 126fc44d6e36ecead0cd7c9007ab64ce6a1264f3 Mon Sep 17 00:00:00 2001 From: toaster Date: Wed, 30 Oct 2019 17:37:42 +0000 Subject: [PATCH 5/6] Change sounds, after discussing with Lach. --- src/p_user.c | 6 +++--- src/sounds.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/p_user.c b/src/p_user.c index d49a63bf7..8604b9751 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -11822,7 +11822,7 @@ void P_PlayerThink(player_t *player) if (dashmode < DASHMODE_MAX) dashmode++; // Counter. Adds 1 to dash mode per tic in top speed. if (dashmode == DASHMODE_THRESHOLD) // This isn't in the ">=" equation because it'd cause the sound to play infinitely. - S_StartSound(player->mo, sfx_cdfm62); // If the player enters dashmode, play this sound on the the tic it starts. + S_StartSound(player->mo, (player->charflags & SF_MACHINE) ? sfx_kc4d : sfx_cdfm40); // If the player enters dashmode, play this sound on the the tic it starts. } else if ((!totallyradical || !floating) && !(player->pflags & PF_SPINNING)) { @@ -11830,7 +11830,7 @@ void P_PlayerThink(player_t *player) { dashmode -= 3; // Rather than lose it all, it gently counts back down! if ((dashmode+3) >= DASHMODE_THRESHOLD && dashmode < DASHMODE_THRESHOLD) - S_StartSound(player->mo, sfx_s3k72); + S_StartSound(player->mo, sfx_kc65); } else dashmode = 0; @@ -11862,7 +11862,7 @@ void P_PlayerThink(player_t *player) { player->normalspeed = skins[player->skin].normalspeed; player->jumpfactor = skins[player->skin].jumpfactor; - S_StartSound(player->mo, sfx_s3k72); + S_StartSound(player->mo, sfx_kc65); } dashmode = 0; } diff --git a/src/sounds.c b/src/sounds.c index 8dc97b1e6..791a7571e 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -693,7 +693,7 @@ sfxinfo_t S_sfx[NUMSFX] = {"cdfm37", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, {"cdfm38", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Drowning"}, {"cdfm39", false, 128, 8, -1, NULL, 0, -1, -1, LUMPERROR, ""}, - {"cdfm40", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, + {"cdfm40", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Power up"}, {"cdfm41", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, {"cdfm42", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, {"cdfm43", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, @@ -780,7 +780,7 @@ sfxinfo_t S_sfx[NUMSFX] = {"kc4a", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, {"kc4b", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, {"kc4c", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, - {"kc4d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, + {"kc4d", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Power up"}, {"kc4e", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, {"kc4f", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, {"kc50", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, @@ -804,7 +804,7 @@ sfxinfo_t S_sfx[NUMSFX] = {"kc62", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, {"kc63", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, {"kc64", false, 96, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Terrifying rumble"}, - {"kc65", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, + {"kc65", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Power down"}, {"kc66", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, {"kc67", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, {"kc68", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, From ef886e4b80c6d91950e74fc4eb8cfccfc6ac2272 Mon Sep 17 00:00:00 2001 From: toaster Date: Mon, 4 Nov 2019 13:11:04 +0000 Subject: [PATCH 6/6] Fix TC_DASHMODE and associated not being applied in GL. (Won't conflict with md3 branch because these lines weren't modified there!) --- src/hardware/hw_main.c | 9 +++++++++ src/hardware/hw_md2.c | 19 ++++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index f2658707d..4b4011eea 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -5755,6 +5755,15 @@ static void HWR_ProjectSprite(mobj_t *thing) // New colormap stuff for skins Tails 06-07-2002 if (thing->colorized) vis->colormap = R_GetTranslationColormap(TC_RAINBOW, thing->color, GTC_CACHE); + else if (thing->player && thing->player->dashmode >= DASHMODE_THRESHOLD + && (thing->player->charflags & SF_DASHMODE) + && ((leveltime/2) & 1)) + { + if (thing->player->charflags & SF_MACHINE) + vis->colormap = R_GetTranslationColormap(TC_DASHMODE, 0, GTC_CACHE); + else + vis->colormap = R_GetTranslationColormap(TC_RAINBOW, thing->color, GTC_CACHE); + } else if (thing->skin && thing->sprite == SPR_PLAY) // This thing is a player! { size_t skinnum = (skin_t*)thing->skin-skins; diff --git a/src/hardware/hw_md2.c b/src/hardware/hw_md2.c index b847fdbc3..490ed318a 100644 --- a/src/hardware/hw_md2.c +++ b/src/hardware/hw_md2.c @@ -1397,16 +1397,21 @@ void HWR_DrawMD2(gr_vissprite_t *spr) } else if (spr->mobj->color) { - if (spr->mobj->skin && spr->mobj->sprite == SPR_PLAY) + if (spr->mobj->colorized) + skinnum = TC_RAINBOW; + else if (spr->mobj->player && spr->mobj->player->dashmode >= DASHMODE_THRESHOLD + && (spr->mobj->player->charflags & SF_DASHMODE) + && ((leveltime/2) & 1)) { - if (spr->mobj->colorized) - skinnum = TC_RAINBOW; + if (spr->mobj->player->charflags & SF_MACHINE) + skinnum = TC_DASHMODE; else - { - skinnum = (INT32)((skin_t*)spr->mobj->skin-skins); - } + skinnum = TC_RAINBOW; } - else skinnum = TC_DEFAULT; + else if (spr->mobj->skin && spr->mobj->sprite == SPR_PLAY) + skinnum = (INT32)((skin_t*)spr->mobj->skin-skins); + else + skinnum = TC_DEFAULT; } HWR_GetBlendedTexture(gpatch, (GLPatch_t *)md2->blendgrpatch, skinnum, spr->colormap, (skincolors_t)spr->mobj->color); }