From 1ba39672d4644acb760dd1682d6fa17ea0a46eb9 Mon Sep 17 00:00:00 2001 From: wolfy852 Date: Sun, 10 Feb 2019 22:55:27 -0600 Subject: [PATCH 01/62] Fix drift sparks not generating on offroad with Hyudoro, Invincibility, or sneaker boosts --- src/k_kart.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/k_kart.c b/src/k_kart.c index 49fd54e6..3c9b082b 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -4708,7 +4708,7 @@ static void K_KartDrift(player_t *player, boolean onground) } // Disable drift-sparks until you're going fast enough - if (player->kartstuff[k_getsparks] == 0 || player->kartstuff[k_offroad]) + if (player->kartstuff[k_getsparks] == 0 || (player->kartstuff[k_offroad] && !player->kartstuff[k_invincibilitytimer] && !player->kartstuff[k_hyudorotimer] && !player->kartstuff[k_sneakertimer])) driftadditive = 0; if (player->speed > minspeed*2) player->kartstuff[k_getsparks] = 1; From c370a86f4855b2125b26c67bd96b527f0f5f3b75 Mon Sep 17 00:00:00 2001 From: wolfy852 Date: Sat, 16 Feb 2019 06:37:09 -0600 Subject: [PATCH 02/62] Set flashing tics to 0 after boosting --- src/k_kart.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/k_kart.c b/src/k_kart.c index a811cce4..684b2039 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3265,6 +3265,8 @@ void K_DoSneaker(player_t *player, INT32 type) player->pflags |= PF_ATTACKDOWN; K_PlayBoostTaunt(player->mo); } + + player->powers[pw_flashing] = 0; // Stop flashing after boosting } static void K_DoShrink(player_t *user) From 76893f4644f84b790064f7e97c667f215ea6298c Mon Sep 17 00:00:00 2001 From: wolfy852 Date: Sat, 16 Feb 2019 07:03:56 -0600 Subject: [PATCH 03/62] Don't kill flashing tics for floor boosts --- src/k_kart.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 684b2039..2b06e1d3 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3264,9 +3264,8 @@ void K_DoSneaker(player_t *player, INT32 type) { player->pflags |= PF_ATTACKDOWN; K_PlayBoostTaunt(player->mo); + player->powers[pw_flashing] = 0; // Stop flashing after boosting } - - player->powers[pw_flashing] = 0; // Stop flashing after boosting } static void K_DoShrink(player_t *user) From e2b392805aab55942a1069a30bf18bbacfbc8281 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Sat, 16 Feb 2019 10:33:18 -0600 Subject: [PATCH 04/62] Simulate fractional precision on item odds This notably prevents some items from disappearing completely above 8 players in netgames. --- src/k_kart.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index b006ae3b..a398fa01 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -651,6 +651,9 @@ static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed) else newodds = K_KartItemOddsRace[item-1][pos]; + // Base multiplication to ALL item odds to simulate fractional precision + newodds *= 4; + for (i = 0; i < MAXPLAYERS; i++) { if (!playeringame[i] || players[i].spectator) @@ -867,8 +870,8 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) UINT8 pingame = 0; UINT8 roulettestop; INT32 useodds = 0; - INT32 spawnchance[NUMKARTRESULTS * NUMKARTODDS]; - INT32 chance = 0, numchoices = 0; + INT32 spawnchance[NUMKARTRESULTS]; + INT32 totalspawnchance = 0; INT32 bestbumper = 0; fixed_t mashed = 0; boolean dontforcespb = false; @@ -965,24 +968,23 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) } // Initializes existing spawnchance values - for (i = 0; i < (NUMKARTRESULTS * NUMKARTODDS); i++) + for (i = 0; i < NUMKARTRESULTS; i++) spawnchance[i] = 0; // Split into another function for a debug function below useodds = K_FindUseodds(player, mashed, pingame, bestbumper, (spbplace != -1 && player->kartstuff[k_position] == spbplace+1), dontforcespb); -#define SETITEMRESULT(itemnum) \ - for (chance = 0; chance < K_KartGetItemOdds(useodds, itemnum, mashed); chance++) \ - spawnchance[numchoices++] = itemnum - for (i = 1; i < NUMKARTRESULTS; i++) - SETITEMRESULT(i); - -#undef SETITEMRESULT + spawnchance[i] = (totalspawnchance += K_KartGetItemOdds(useodds, i, mashed)); // Award the player whatever power is rolled - if (numchoices > 0) - K_KartGetItemResult(player, spawnchance[P_RandomKey(numchoices)]); + if (totalspawnchance > 0) + { + totalspawnchance = P_RandomKey(totalspawnchance); + for (i = 0; i < NUMKARTRESULTS && spawnchance[i] <= totalspawnchance; i++); + + K_KartGetItemResult(player, i); + } else { player->kartstuff[k_itemtype] = KITEM_SAD; From 1785adffc2ea1e755b9cb120c6415e660ccf3eb9 Mon Sep 17 00:00:00 2001 From: james Date: Sat, 16 Feb 2019 23:25:50 -0800 Subject: [PATCH 05/62] Expose splitscreenplayer (from Got_AddPlayer) as splitscreen in player_t --- src/d_clisrv.c | 6 ++++++ src/d_clisrv.h | 2 ++ src/d_player.h | 2 ++ src/g_game.c | 3 +++ src/lua_playerlib.c | 4 ++++ src/p_saveg.c | 4 ++++ 6 files changed, 21 insertions(+) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 7516df2e..0aec7fd9 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -648,6 +648,8 @@ static inline void resynch_write_player(resynch_pak *rsp, const size_t i) rsp->jointime = (tic_t)LONG(players[i].jointime); + rsp->splitscreen = players[i].splitscreen; + rsp->hasmo = false; //Transfer important mo information if the player has a body. //This lets us resync players even if they are dead. @@ -783,6 +785,8 @@ static void resynch_read_player(resynch_pak *rsp) players[i].jointime = (tic_t)LONG(rsp->jointime); + players[i].splitscreen = rsp->splitscreen; + //We get a packet for each player in game. if (!playeringame[i]) return; @@ -3316,6 +3320,8 @@ static void Got_AddPlayer(UINT8 **p, INT32 playernum) addedtogame = true; } + players[newplayernum].splitscreen = splitscreenplayer; + if (netgame) { if (server && cv_showjoinaddress.value) diff --git a/src/d_clisrv.h b/src/d_clisrv.h index 62bd8bc1..b628606d 100644 --- a/src/d_clisrv.h +++ b/src/d_clisrv.h @@ -283,6 +283,8 @@ typedef struct tic_t jointime; + UINT8 splitscreen; + //player->mo stuff UINT8 hasmo; // Boolean diff --git a/src/d_player.h b/src/d_player.h index b430f20a..baed9a72 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -571,6 +571,8 @@ typedef struct player_s UINT8 bot; tic_t jointime; // Timer when player joins game to change skin/color + + UINT8 splitscreen; #ifdef HWRENDER fixed_t fovadd; // adjust FOV for hw rendering #endif diff --git a/src/g_game.c b/src/g_game.c index f0d221ff..eb0396c8 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -2357,6 +2357,7 @@ void G_PlayerReborn(INT32 player) UINT8 skincolor; INT32 skin; tic_t jointime; + UINT8 psplitscreen; boolean spectator; INT16 bot; SINT8 pity; @@ -2380,6 +2381,7 @@ void G_PlayerReborn(INT32 player) ctfteam = players[player].ctfteam; exiting = players[player].exiting; jointime = players[player].jointime; + psplitscreen = players[player].splitscreen; spectator = players[player].spectator; pflags = (players[player].pflags & (PF_TIMEOVER|PF_FLIPCAM|PF_TAGIT|PF_TAGGED|PF_ANALOGMODE|PF_WANTSTOJOIN)); @@ -2476,6 +2478,7 @@ void G_PlayerReborn(INT32 player) p->pflags = pflags; p->ctfteam = ctfteam; p->jointime = jointime; + p->splitscreen = psplitscreen; p->spectator = spectator; // save player config truth reborn diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index 5f136fc1..0bea1e7b 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -325,6 +325,8 @@ static int player_get(lua_State *L) lua_pushinteger(L, plr->bot); else if (fastcmp(field,"jointime")) lua_pushinteger(L, plr->jointime); + else if (fastcmp(field,"splitscreen")) + lua_pushinteger(L, plr->splitscreen); #ifdef HWRENDER else if (fastcmp(field,"fovadd")) lua_pushfixed(L, plr->fovadd); @@ -613,6 +615,8 @@ static int player_set(lua_State *L) return NOSET; else if (fastcmp(field,"jointime")) plr->jointime = (tic_t)luaL_checkinteger(L, 3); + else if (fastcmp(field,"splitscreen")) + return NOSET; #ifdef HWRENDER else if (fastcmp(field,"fovadd")) plr->fovadd = luaL_checkfixed(L, 3); diff --git a/src/p_saveg.c b/src/p_saveg.c index 975a4a5d..a2ae8f17 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -249,6 +249,8 @@ static void P_NetArchivePlayers(void) WRITEUINT32(save_p, players[i].jointime); + WRITEUINT8(save_p, players[i].splitscreen); + WRITEUINT16(save_p, flags); if (flags & CAPSULE) @@ -426,6 +428,8 @@ static void P_NetUnArchivePlayers(void) players[i].jointime = READUINT32(save_p); + players[i].splitscreen = READUINT8(save_p); + flags = READUINT16(save_p); if (flags & CAPSULE) From 6f3b10313fae85b0b40914c0a1c85df231866c47 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Sun, 17 Feb 2019 22:09:37 -0600 Subject: [PATCH 06/62] Add some P_MobjWasRemoved checks around code that shrink touches It's the only place in the vanilla game where K_DropItems is called that isn't from a direct collision with the player it's being called on. It's also a syncfail that doesn't happen anywhere else, and I saw my sync state appear to get slightly corrupted when it happened. Let's see if this fixes anything... --- src/k_kart.c | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index b006ae3b..2c913e10 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1978,12 +1978,16 @@ void K_SpinPlayer(player_t *player, mobj_t *source, INT32 type, mobj_t *inflicto static void K_RemoveGrowShrink(player_t *player) { player->kartstuff[k_growshrinktimer] = 0; - if (player->kartstuff[k_invincibilitytimer] == 0) - player->mo->color = player->skincolor; - player->mo->scalespeed = mapobjectscale/TICRATE; - player->mo->destscale = mapobjectscale; - if (cv_kartdebugshrink.value && !modeattacking && !player->bot) - player->mo->destscale = (6*player->mo->destscale)/8; + + if (!P_MobjWasRemoved(player->mo)) + { + if (player->kartstuff[k_invincibilitytimer] == 0) + player->mo->color = player->skincolor; + player->mo->scalespeed = mapobjectscale/TICRATE; + player->mo->destscale = mapobjectscale; + if (cv_kartdebugshrink.value && !modeattacking && !player->bot) + player->mo->destscale = (6*player->mo->destscale)/8; + } P_RestoreMusic(player); } @@ -3290,11 +3294,15 @@ static void K_DoShrink(player_t *user) { // Start shrinking! K_DropItems(&players[i]); - players[i].mo->scalespeed = mapobjectscale/TICRATE; - players[i].mo->destscale = (6*mapobjectscale)/8; - if (cv_kartdebugshrink.value && !modeattacking && !players[i].bot) - players[i].mo->destscale = (6*players[i].mo->destscale)/8; - players[i].kartstuff[k_growshrinktimer] = -(200+(40*(MAXPLAYERS-players[i].kartstuff[k_position]))); + + if (!P_MobjWasRemoved(players[i].mo)) + { + players[i].mo->scalespeed = mapobjectscale/TICRATE; + players[i].mo->destscale = (6*mapobjectscale)/8; + if (cv_kartdebugshrink.value && !modeattacking && !players[i].bot) + players[i].mo->destscale = (6*players[i].mo->destscale)/8; + players[i].kartstuff[k_growshrinktimer] = -(200+(40*(MAXPLAYERS-players[i].kartstuff[k_position]))); + } } // Grow should get taken away. @@ -3419,7 +3427,7 @@ void K_DropHnextList(player_t *player) mobjtype_t type; boolean orbit, ponground, dropall = true; - if (!work) + if (!work || P_MobjWasRemoved(work)) return; flip = P_MobjFlip(player->mo); @@ -3556,7 +3564,7 @@ void K_DropItems(player_t *player) K_DropHnextList(player); - if (player->mo && player->kartstuff[k_itemamount]) + if (player->mo && !P_MobjWasRemoved(player->mo) && player->kartstuff[k_itemamount]) { mobj_t *drop = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z + player->mo->height/2, MT_FLOATINGITEM); P_SetScale(drop, drop->scale>>4); From 1bce9d281df8d5c590da5de2f192a0e1e9bc07de Mon Sep 17 00:00:00 2001 From: James Date: Mon, 18 Feb 2019 00:17:58 -0500 Subject: [PATCH 07/62] Shrink timer is consistent 20sec --- src/k_kart.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/k_kart.c b/src/k_kart.c index b006ae3b..797fbe24 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3294,7 +3294,7 @@ static void K_DoShrink(player_t *user) players[i].mo->destscale = (6*mapobjectscale)/8; if (cv_kartdebugshrink.value && !modeattacking && !players[i].bot) players[i].mo->destscale = (6*players[i].mo->destscale)/8; - players[i].kartstuff[k_growshrinktimer] = -(200+(40*(MAXPLAYERS-players[i].kartstuff[k_position]))); + players[i].kartstuff[k_growshrinktimer] = -(20*TICRATE); } // Grow should get taken away. From 4c3871cb6d165b7c47a455bc4c04d6e65fcd061a Mon Sep 17 00:00:00 2001 From: James Date: Mon, 18 Feb 2019 00:23:40 -0500 Subject: [PATCH 08/62] Some items have 30 sec cooldown on match start --- src/k_kart.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 797fbe24..48f1c93a 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -699,17 +699,19 @@ static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed) if (mashed > 0) \ odds = FixedDiv(odds<> FRACBITS \ +#define COOLDOWNONSTART (leveltime < (31*TICRATE)+starttime) + switch (item) { case KITEM_INVINCIBILITY: case KITEM_GROW: - if (pinvin >= max(1, (pingame+2) / 4)) + if (pinvin >= max(1, (pingame+2) / 4) || COOLDOWNONSTART) newodds = 0; else - /* FALLTHRU */ + POWERITEMODDS(newodds); + break; case KITEM_ROCKETSNEAKER: case KITEM_JAWZ: - case KITEM_MINE: case KITEM_BALLHOG: case KITEM_THUNDERSHIELD: case KRITEM_TRIPLESNEAKER: @@ -720,17 +722,27 @@ static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed) case KRITEM_DUALJAWZ: POWERITEMODDS(newodds); break; + case KITEM_MINE: + if (COOLDOWNONSTART) + newodds = 0; + else + POWERITEMODDS(newodds); + break; case KITEM_SPB: - //POWERITEMODDS(newodds); if (((indirectitemcooldown > 0) || (pexiting > 0) || (secondist/distvar < 3)) && (pos != 9)) // Force SPB newodds = 0; else - newodds *= min((secondist/distvar)-4, 3); + newodds *= min((secondist/distvar)-4, 3); // POWERITEMODDS(newodds); break; case KITEM_SHRINK: - POWERITEMODDS(newodds); - if ((indirectitemcooldown > 0) || (pingame-1 <= pexiting)) + if ((indirectitemcooldown > 0) || (pingame-1 <= pexiting) || COOLDOWNONSTART) + newodds = 0; + else + POWERITEMODDS(newodds); + break; + case KITEM_HYUDORO: + if (COOLDOWNONSTART) newodds = 0; break; default: From f39bd03e10523a0d25bfbfefcfcf31c4377bad95 Mon Sep 17 00:00:00 2001 From: Steel Titanium Date: Mon, 18 Feb 2019 00:58:08 -0500 Subject: [PATCH 09/62] Add command to ban an IP address. --- src/d_clisrv.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 7516df2e..7be04682 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -2756,6 +2756,32 @@ static void Command_Ban(void) } +static void Command_BanIP(void) +{ + if (COM_Argc() < 2) + { + CONS_Printf(M_GetText("banip : ban an ip address\n")); + return; + } + + if (server) // Only the server can use this, otherwise does nothing. + { + const char *address = (COM_Argv(1)); + const char *reason = (COM_Argv(2)); + + if (I_SetBanAddress && I_SetBanAddress(address, NULL)) + { + CONS_Printf("Banned ip address for:%s\n", reason); + Ban_Add(reason); + D_SaveBan(); + } + else + { + return; + } + } +} + static void Command_Kick(void) { if (COM_Argc() < 2) @@ -3062,6 +3088,7 @@ void D_ClientServerInit(void) COM_AddCommand("getplayernum", Command_GetPlayerNum); COM_AddCommand("kick", Command_Kick); COM_AddCommand("ban", Command_Ban); + COM_AddCommand("banip", Command_BanIP); COM_AddCommand("clearbans", Command_ClearBans); COM_AddCommand("showbanlist", Command_ShowBan); COM_AddCommand("reloadbans", Command_ReloadBan); From 69156054448f628ac1ed19bba4aa74e1f1627d29 Mon Sep 17 00:00:00 2001 From: Steel Titanium Date: Mon, 18 Feb 2019 01:03:39 -0500 Subject: [PATCH 10/62] Save ban list right after banning. --- src/d_clisrv.c | 3 +++ src/djgppdos/i_system.c | 3 --- src/sdl/i_system.c | 3 --- src/sdl12/i_system.c | 3 --- src/win32/win_sys.c | 3 --- 5 files changed, 3 insertions(+), 12 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 7be04682..5ad2e92a 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -2725,7 +2725,10 @@ static void Command_Ban(void) else { if (server) // only the server is allowed to do this right now + { Ban_Add(COM_Argv(2)); + D_SaveBan(); // save the ban list + } if (COM_Argc() == 2) { diff --git a/src/djgppdos/i_system.c b/src/djgppdos/i_system.c index bc3c8b2b..5970f5ae 100644 --- a/src/djgppdos/i_system.c +++ b/src/djgppdos/i_system.c @@ -615,9 +615,6 @@ void I_Quit (void) //added:16-02-98: when recording a demo, should exit using 'q' key, // but sometimes we forget and use 'F10'.. so save here too. M_SaveConfig (NULL); //save game config, cvars.. -#ifndef NONET - D_SaveBan(); // save the ban list -#endif G_SaveGameData(); // Tails 12-08-2002 if (demorecording) G_CheckDemoStatus(); diff --git a/src/sdl/i_system.c b/src/sdl/i_system.c index f360072a..6d72d9bb 100644 --- a/src/sdl/i_system.c +++ b/src/sdl/i_system.c @@ -3054,9 +3054,6 @@ void I_Quit(void) quiting = SDL_FALSE; I_ShutdownConsole(); M_SaveConfig(NULL); //save game config, cvars.. -#ifndef NONET - D_SaveBan(); // save the ban list -#endif G_SaveGameData(false); // Tails 12-08-2002 //added:16-02-98: when recording a demo, should exit using 'q' key, // but sometimes we forget and use 'F10'.. so save here too. diff --git a/src/sdl12/i_system.c b/src/sdl12/i_system.c index d055a4ca..a841860f 100644 --- a/src/sdl12/i_system.c +++ b/src/sdl12/i_system.c @@ -2975,9 +2975,6 @@ void I_Quit(void) quiting = SDL_FALSE; I_ShutdownConsole(); M_SaveConfig(NULL); //save game config, cvars.. -#ifndef NONET - D_SaveBan(); // save the ban list -#endif G_SaveGameData(); // Tails 12-08-2002 //added:16-02-98: when recording a demo, should exit using 'q' key, // but sometimes we forget and use 'F10'.. so save here too. diff --git a/src/win32/win_sys.c b/src/win32/win_sys.c index fa9d6d64..47250334 100644 --- a/src/win32/win_sys.c +++ b/src/win32/win_sys.c @@ -639,9 +639,6 @@ void I_Error(const char *error, ...) if (!errorcount) { M_SaveConfig(NULL); // save game config, cvars.. -#ifndef NONET - D_SaveBan(); // save the ban list -#endif G_SaveGameData(); } From a2316389d2a169815181c98132d9b98262cc9c80 Mon Sep 17 00:00:00 2001 From: Steel Titanium Date: Mon, 18 Feb 2019 02:04:58 -0500 Subject: [PATCH 11/62] Save when quitting the game. Also use default reason if not custom reason is given. --- src/d_clisrv.c | 14 ++++++++++++-- src/djgppdos/i_system.c | 3 +++ src/sdl/i_system.c | 3 +++ src/sdl12/i_system.c | 3 +++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 5ad2e92a..ea8077d6 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -2770,11 +2770,21 @@ static void Command_BanIP(void) if (server) // Only the server can use this, otherwise does nothing. { const char *address = (COM_Argv(1)); - const char *reason = (COM_Argv(2)); + const char *reason; + + if (COM_Argc() == 2) + reason = NULL; + else + reason = COM_Argv(2); + if (I_SetBanAddress && I_SetBanAddress(address, NULL)) { - CONS_Printf("Banned ip address for:%s\n", reason); + if (reason) + CONS_Printf("Banned ip address %s for: %s\n", address, reason); + else + CONS_Printf("Banned ip address %s\n", address); + Ban_Add(reason); D_SaveBan(); } diff --git a/src/djgppdos/i_system.c b/src/djgppdos/i_system.c index 5970f5ae..bc3c8b2b 100644 --- a/src/djgppdos/i_system.c +++ b/src/djgppdos/i_system.c @@ -615,6 +615,9 @@ void I_Quit (void) //added:16-02-98: when recording a demo, should exit using 'q' key, // but sometimes we forget and use 'F10'.. so save here too. M_SaveConfig (NULL); //save game config, cvars.. +#ifndef NONET + D_SaveBan(); // save the ban list +#endif G_SaveGameData(); // Tails 12-08-2002 if (demorecording) G_CheckDemoStatus(); diff --git a/src/sdl/i_system.c b/src/sdl/i_system.c index 6d72d9bb..f360072a 100644 --- a/src/sdl/i_system.c +++ b/src/sdl/i_system.c @@ -3054,6 +3054,9 @@ void I_Quit(void) quiting = SDL_FALSE; I_ShutdownConsole(); M_SaveConfig(NULL); //save game config, cvars.. +#ifndef NONET + D_SaveBan(); // save the ban list +#endif G_SaveGameData(false); // Tails 12-08-2002 //added:16-02-98: when recording a demo, should exit using 'q' key, // but sometimes we forget and use 'F10'.. so save here too. diff --git a/src/sdl12/i_system.c b/src/sdl12/i_system.c index a841860f..d055a4ca 100644 --- a/src/sdl12/i_system.c +++ b/src/sdl12/i_system.c @@ -2975,6 +2975,9 @@ void I_Quit(void) quiting = SDL_FALSE; I_ShutdownConsole(); M_SaveConfig(NULL); //save game config, cvars.. +#ifndef NONET + D_SaveBan(); // save the ban list +#endif G_SaveGameData(); // Tails 12-08-2002 //added:16-02-98: when recording a demo, should exit using 'q' key, // but sometimes we forget and use 'F10'.. so save here too. From 86a9168e86ceeaad711eb57880f9f518f684835c Mon Sep 17 00:00:00 2001 From: Latapostrophe Date: Mon, 18 Feb 2019 22:19:28 +0100 Subject: [PATCH 12/62] Fix dedicated server extra lua variables not being synched for joiners --- src/lua_script.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lua_script.c b/src/lua_script.c index 1f87d33e..28f02ca3 100644 --- a/src/lua_script.c +++ b/src/lua_script.c @@ -1020,7 +1020,7 @@ void LUA_Archive(void) for (i = 0; i < MAXPLAYERS; i++) { - if (!playeringame[i]) + if (!playeringame[i] && i > 0) // NEVER skip player 0, this is for dedi servs. continue; // all players in game will be archived, even if they just add a 0. ArchiveExtVars(&players[i], "player"); @@ -1056,7 +1056,7 @@ void LUA_UnArchive(void) for (i = 0; i < MAXPLAYERS; i++) { - if (!playeringame[i]) + if (!playeringame[i] && i > 0) // same here, this is to synch dediservs properly. continue; UnArchiveExtVars(&players[i]); } From 9eb669a061736e959ed42481a2d7abd1d6cd7862 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Mon, 18 Feb 2019 21:08:11 -0600 Subject: [PATCH 13/62] Crash fix I think (CHERRY PICK INTO BASE) --- src/r_things.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/r_things.c b/src/r_things.c index 135ae6a2..52c92b02 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -651,7 +651,7 @@ void R_DrawMaskedColumn(column_t *column) basetexturemid = dc_texturemid; - for (; column->topdelta != 0xff ;) + for (; column && column->topdelta != 0xff ;) { // calculate unclipped screen coordinates // for post From a4ac2b000fcd8b0094e08317c58adb4197e6f268 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Sat, 16 Feb 2019 11:52:35 -0600 Subject: [PATCH 14/62] Improve replay resyncing code Notably, it should no longer cause immediate desync warnings if a track starts on a slope. --- src/g_game.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/g_game.c b/src/g_game.c index f0d221ff..a7b9670c 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -4763,7 +4763,8 @@ void G_WriteGhostTic(mobj_t *ghost) // GZT_XYZ is only useful if you've moved 256 FRACUNITS or more in a single tic. if (abs(ghost->x-oldghost.x) > MAXMOM || abs(ghost->y-oldghost.y) > MAXMOM - || abs(ghost->z-oldghost.z) > MAXMOM) + || abs(ghost->z-oldghost.z) > MAXMOM + || leveltime & 255 == 1) // Hack to enable slightly nicer resyncing { oldghost.x = ghost->x; oldghost.y = ghost->y; @@ -4777,8 +4778,8 @@ void G_WriteGhostTic(mobj_t *ghost) { // For moving normally: // Store one full byte of movement, plus one byte of fractional movement. - INT16 momx = (INT16)((ghost->x-oldghost.x)>>8); - INT16 momy = (INT16)((ghost->y-oldghost.y)>>8); + INT16 momx = (INT16)((ghost->x-oldghost.x + (1<<4))>>8); + INT16 momy = (INT16)((ghost->y-oldghost.y + (1<<4))>>8); if (momx != oldghost.momx || momy != oldghost.momy) { @@ -4788,7 +4789,7 @@ void G_WriteGhostTic(mobj_t *ghost) WRITEINT16(demo_p,momx); WRITEINT16(demo_p,momy); } - momx = (INT16)((ghost->z-oldghost.z)>>8); + momx = (INT16)((ghost->z-oldghost.z + (1<<4))>>8); if (momx != oldghost.momz) { oldghost.momz = momx; @@ -4892,8 +4893,9 @@ void G_WriteGhostTic(mobj_t *ghost) void G_ConsGhostTic(void) { UINT8 ziptic; - UINT16 px,py,pz,gx,gy,gz; + UINT32 px,py,pz,gx,gy,gz; mobj_t *testmo; + UINT32 syncleeway; boolean nightsfail = false; if (!demo_p || !demo_start) @@ -4910,6 +4912,7 @@ void G_ConsGhostTic(void) oldghost.x = READFIXED(demo_p); oldghost.y = READFIXED(demo_p); oldghost.z = READFIXED(demo_p); + syncleeway = 0; } else { @@ -4923,6 +4926,7 @@ void G_ConsGhostTic(void) oldghost.x += oldghost.momx; oldghost.y += oldghost.momy; oldghost.z += oldghost.momz; + syncleeway = FRACUNIT; } if (ziptic & GZT_ANGLE) demo_p++; @@ -4988,14 +4992,14 @@ void G_ConsGhostTic(void) } // Re-synchronise - px = testmo->x>>FRACBITS; - py = testmo->y>>FRACBITS; - pz = testmo->z>>FRACBITS; - gx = oldghost.x>>FRACBITS; - gy = oldghost.y>>FRACBITS; - gz = oldghost.z>>FRACBITS; + px = testmo->x; + py = testmo->y; + pz = testmo->z; + gx = oldghost.x; + gy = oldghost.y; + gz = oldghost.z; - if (nightsfail || px != gx || py != gy || pz != gz) + if (nightsfail || abs(px-gx) > syncleeway || abs(py-gy) > syncleeway || abs(pz-gz) > syncleeway) { if (demosynced) CONS_Alert(CONS_WARNING, M_GetText("Demo playback has desynced!\n")); From a4c8388f3b000ec706e4df79fa008e411a1062e2 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Mon, 18 Feb 2019 22:36:26 -0600 Subject: [PATCH 15/62] Fix bumps sometimes shooting off stupidly fast --- src/k_kart.c | 69 ++++++++++++++++++++++++++-------------------------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index b006ae3b..f8efff2b 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1056,7 +1056,7 @@ void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean solid) mobj_t *fx; fixed_t momdifx, momdify; fixed_t distx, disty; - fixed_t dot, p; + fixed_t dot, force; fixed_t mass1, mass2; if (!mobj1 || !mobj2) @@ -1114,6 +1114,35 @@ void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean solid) momdifx = mobj1->momx - mobj2->momx; momdify = mobj1->momy - mobj2->momy; + // Adds the OTHER player's momentum, so that it reduces the chance of you being "inside" the other object + distx = (mobj1->x + mobj2->momx) - (mobj2->x + mobj1->momx); + disty = (mobj1->y + mobj2->momy) - (mobj2->y + mobj1->momy); + + if (distx == 0 && disty == 0) + // if there's no distance between the 2, they're directly on top of each other, don't run this + return; + + { // Normalize distance to the sum of the two objects' radii, since in a perfect world that would be the distance at the point of collision... + fixed_t dist = P_AproxDistance(distx, disty) ?: 1; + fixed_t nx = FixedDiv(distx, dist); + fixed_t ny = FixedDiv(disty, dist); + + distx = FixedMul(mobj1->radius+mobj2->radius, nx); + disty = FixedMul(mobj1->radius+mobj2->radius, ny); + + CONS_Printf("dist %f %f %d %d %d %d\n", + FIXED_TO_FLOAT(P_AproxDistance(distx, disty)), + FIXED_TO_FLOAT(P_AproxDistance(momdifx, momdify)), + mobj1->momx, mobj1->momy, mobj2->momx, mobj2->momy); + + if (momdifx == 0 && momdify == 0) + { + // If there's no momentum difference, they're moving at exactly the same rate. Pretend they moved into each other. + momdifx = -nx; + momdify = -ny; + } + } + // if the speed difference is less than this let's assume they're going proportionately faster from each other if (P_AproxDistance(momdifx, momdify) < (25*mapobjectscale)) { @@ -1124,34 +1153,6 @@ void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean solid) momdify = FixedMul((25*mapobjectscale), normalisedy); } - // Adds the OTHER player's momentum, so that it reduces the chance of you being "inside" the other object - distx = (mobj1->x + mobj2->momx) - (mobj2->x + mobj1->momx); - disty = (mobj1->y + mobj2->momy) - (mobj2->y + mobj1->momy); - - { // Don't allow dist to get WAY too low, that it pushes you stupidly huge amounts, or backwards... - fixed_t dist = P_AproxDistance(distx, disty); - fixed_t nx = FixedDiv(distx, dist); - fixed_t ny = FixedDiv(disty, dist); - - if (P_AproxDistance(distx, disty) < (3*mobj1->radius)/4) - { - distx = FixedMul((3*mobj1->radius)/4, nx); - disty = FixedMul((3*mobj1->radius)/4, ny); - } - - if (P_AproxDistance(distx, disty) < (3*mobj2->radius)/4) - { - distx = FixedMul((3*mobj2->radius)/4, nx); - disty = FixedMul((3*mobj2->radius)/4, ny); - } - } - - if (distx == 0 && disty == 0) - { - // if there's no distance between the 2, they're directly on top of each other, don't run this - return; - } - dot = FixedMul(momdifx, distx) + FixedMul(momdify, disty); if (dot >= 0) @@ -1160,7 +1161,7 @@ void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean solid) return; } - p = FixedDiv(dot, FixedMul(distx, distx)+FixedMul(disty, disty)); + force = FixedDiv(dot, FixedMul(distx, distx)+FixedMul(disty, disty)); if (bounce == true && mass2 > 0) // Perform a Goomba Bounce. mobj1->momz = -mobj1->momz; @@ -1175,14 +1176,14 @@ void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean solid) if (mass2 > 0) { - mobj1->momx = mobj1->momx - FixedMul(FixedMul(FixedDiv(2*mass2, mass1 + mass2), p), distx); - mobj1->momy = mobj1->momy - FixedMul(FixedMul(FixedDiv(2*mass2, mass1 + mass2), p), disty); + mobj1->momx = mobj1->momx - FixedMul(FixedMul(FixedDiv(2*mass2, mass1 + mass2), force), distx); + mobj1->momy = mobj1->momy - FixedMul(FixedMul(FixedDiv(2*mass2, mass1 + mass2), force), disty); } if (mass1 > 0 && solid == false) { - mobj2->momx = mobj2->momx - FixedMul(FixedMul(FixedDiv(2*mass1, mass1 + mass2), p), -distx); - mobj2->momy = mobj2->momy - FixedMul(FixedMul(FixedDiv(2*mass1, mass1 + mass2), p), -disty); + mobj2->momx = mobj2->momx - FixedMul(FixedMul(FixedDiv(2*mass1, mass1 + mass2), force), -distx); + mobj2->momy = mobj2->momy - FixedMul(FixedMul(FixedDiv(2*mass1, mass1 + mass2), force), -disty); } // Do the bump fx when we've CONFIRMED we can bump. From 9c1749d26982fd36fc05d531e26182314b7f10b8 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Mon, 18 Feb 2019 23:35:01 -0600 Subject: [PATCH 16/62] Make extra sure we launch in the correct direction --- src/k_kart.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index f8efff2b..807c9ce7 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1114,9 +1114,9 @@ void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean solid) momdifx = mobj1->momx - mobj2->momx; momdify = mobj1->momy - mobj2->momy; - // Adds the OTHER player's momentum, so that it reduces the chance of you being "inside" the other object - distx = (mobj1->x + mobj2->momx) - (mobj2->x + mobj1->momx); - disty = (mobj1->y + mobj2->momy) - (mobj2->y + mobj1->momy); + // Adds the OTHER player's momentum times a bunch, for the best chance of getting the correct direction + distx = (mobj1->x + mobj2->momx*3) - (mobj2->x + mobj1->momx*3); + disty = (mobj1->y + mobj2->momy*3) - (mobj2->y + mobj1->momy*3); if (distx == 0 && disty == 0) // if there's no distance between the 2, they're directly on top of each other, don't run this From caf7888eed70c9778875adacddb83b1dbad3b9d9 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Mon, 18 Feb 2019 23:35:24 -0600 Subject: [PATCH 17/62] Fix players sometimes snapping backwards on landing after spikeball hits --- src/k_kart.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/k_kart.c b/src/k_kart.c index 807c9ce7..9887318a 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -5476,7 +5476,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) } // Wipeout slowdown - if (player->kartstuff[k_spinouttimer] && player->kartstuff[k_wipeoutslow]) + if (player->kartstuff[k_spinouttimer] && player->kartstuff[k_wipeoutslow] && player->mo->friction > FRACUNIT/2) { if (player->kartstuff[k_offroad]) player->mo->friction -= 4912; From 838ed005d217344326c602744f9d960384259c0a Mon Sep 17 00:00:00 2001 From: fickleheart Date: Mon, 18 Feb 2019 23:39:08 -0600 Subject: [PATCH 18/62] Remove debugging print --- src/k_kart.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 9887318a..fded8b1c 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1130,11 +1130,6 @@ void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean solid) distx = FixedMul(mobj1->radius+mobj2->radius, nx); disty = FixedMul(mobj1->radius+mobj2->radius, ny); - CONS_Printf("dist %f %f %d %d %d %d\n", - FIXED_TO_FLOAT(P_AproxDistance(distx, disty)), - FIXED_TO_FLOAT(P_AproxDistance(momdifx, momdify)), - mobj1->momx, mobj1->momy, mobj2->momx, mobj2->momy); - if (momdifx == 0 && momdify == 0) { // If there's no momentum difference, they're moving at exactly the same rate. Pretend they moved into each other. From 9c5ae02755d01e002c1943de1d091e4b5d06a0b0 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Tue, 19 Feb 2019 08:05:35 -0600 Subject: [PATCH 19/62] Fix cmd latency occasionally jumping to max --- src/g_game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_game.c b/src/g_game.c index f0d221ff..3944c02a 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -2162,7 +2162,7 @@ void G_Ticker(boolean run) G_CopyTiccmd(cmd, &netcmds[buf][i], 1); // Use the leveltime sent in the player's ticcmd to determine control lag - cmd->latency = modeattacking ? 0 : min((leveltime & 0xFF) - cmd->latency, MAXPREDICTTICS-1); //@TODO add a cvar to allow setting this max + cmd->latency = modeattacking ? 0 : min(((leveltime & 0xFF) - cmd->latency) & 0xFF, MAXPREDICTTICS-1); //@TODO add a cvar to allow setting this max } } From 580e12a32af9763eee3d71053e0ed53e505983ff Mon Sep 17 00:00:00 2001 From: fickleheart Date: Tue, 19 Feb 2019 16:04:23 -0600 Subject: [PATCH 20/62] Add null check too --- src/k_kart.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/k_kart.c b/src/k_kart.c index 2c913e10..e67de72b 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1979,7 +1979,7 @@ static void K_RemoveGrowShrink(player_t *player) { player->kartstuff[k_growshrinktimer] = 0; - if (!P_MobjWasRemoved(player->mo)) + if (player->mo && !P_MobjWasRemoved(player->mo)) { if (player->kartstuff[k_invincibilitytimer] == 0) player->mo->color = player->skincolor; From 8988927d160957d4bad569ff0ec214ac7f5c7329 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Tue, 19 Feb 2019 16:46:48 -0600 Subject: [PATCH 21/62] Only apply friction changes on the ground --- src/k_kart.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/k_kart.c b/src/k_kart.c index fded8b1c..d63591e7 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -5471,7 +5471,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) } // Wipeout slowdown - if (player->kartstuff[k_spinouttimer] && player->kartstuff[k_wipeoutslow] && player->mo->friction > FRACUNIT/2) + if (player->kartstuff[k_spinouttimer] && player->kartstuff[k_wipeoutslow] && P_IsObjectOnGround(player->mo)) { if (player->kartstuff[k_offroad]) player->mo->friction -= 4912; From a59a1c53b0d2f11888d788e8936d22a45f2824b4 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Tue, 19 Feb 2019 17:05:04 -0600 Subject: [PATCH 22/62] Add check to all of the friction stuff --- src/k_kart.c | 63 +++++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index d63591e7..39f2a714 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -5440,43 +5440,46 @@ void K_MoveKartPlayer(player_t *player, boolean onground) } } - // Friction - if (!player->kartstuff[k_offroad]) + if (onground) { - if (player->speed > 0 && cmd->forwardmove == 0 && player->mo->friction == 59392) - player->mo->friction += 4608; - if (player->speed > 0 && cmd->forwardmove < 0 && player->mo->friction == 59392) - player->mo->friction += 1608; - } + // Friction + if (!player->kartstuff[k_offroad]) + { + if (player->speed > 0 && cmd->forwardmove == 0 && player->mo->friction == 59392) + player->mo->friction += 4608; + if (player->speed > 0 && cmd->forwardmove < 0 && player->mo->friction == 59392) + player->mo->friction += 1608; + } - // Karma ice physics - if (G_BattleGametype() && player->kartstuff[k_bumper] <= 0) - { - player->mo->friction += 1228; + // Karma ice physics + if (G_BattleGametype() && player->kartstuff[k_bumper] <= 0) + { + player->mo->friction += 1228; - if (player->mo->friction > FRACUNIT) - player->mo->friction = FRACUNIT; - if (player->mo->friction < 0) - player->mo->friction = 0; + if (player->mo->friction > FRACUNIT) + player->mo->friction = FRACUNIT; + if (player->mo->friction < 0) + player->mo->friction = 0; - player->mo->movefactor = FixedDiv(ORIG_FRICTION, player->mo->friction); + player->mo->movefactor = FixedDiv(ORIG_FRICTION, player->mo->friction); - if (player->mo->movefactor < FRACUNIT) - player->mo->movefactor = 19*player->mo->movefactor - 18*FRACUNIT; - else - player->mo->movefactor = FRACUNIT; //player->mo->movefactor = ((player->mo->friction - 0xDB34)*(0xA))/0x80; + if (player->mo->movefactor < FRACUNIT) + player->mo->movefactor = 19*player->mo->movefactor - 18*FRACUNIT; + else + player->mo->movefactor = FRACUNIT; //player->mo->movefactor = ((player->mo->friction - 0xDB34)*(0xA))/0x80; - if (player->mo->movefactor < 32) - player->mo->movefactor = 32; - } + if (player->mo->movefactor < 32) + player->mo->movefactor = 32; + } - // Wipeout slowdown - if (player->kartstuff[k_spinouttimer] && player->kartstuff[k_wipeoutslow] && P_IsObjectOnGround(player->mo)) - { - if (player->kartstuff[k_offroad]) - player->mo->friction -= 4912; - if (player->kartstuff[k_wipeoutslow] == 1) - player->mo->friction -= 9824; + // Wipeout slowdown + if (player->kartstuff[k_spinouttimer] && player->kartstuff[k_wipeoutslow]) + { + if (player->kartstuff[k_offroad]) + player->mo->friction -= 4912; + if (player->kartstuff[k_wipeoutslow] == 1) + player->mo->friction -= 9824; + } } K_KartDrift(player, onground); From 2f4d3eb087db628958aa95326192ed04ff0cb8d5 Mon Sep 17 00:00:00 2001 From: James Date: Tue, 19 Feb 2019 18:38:54 -0500 Subject: [PATCH 23/62] Mines can be punted Setting behind leaves a longer startup animation window so that it can be punted more easily --- src/k_kart.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++---- src/k_kart.h | 1 + src/p_map.c | 14 +++++++++-- src/p_mobj.c | 23 ++++++++++++++----- 4 files changed, 91 insertions(+), 12 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 48f1c93a..855e0903 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -2895,7 +2895,8 @@ static mobj_t *K_FindLastTrailMobj(player_t *player) static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t mapthing, INT32 defaultDir, INT32 altthrow) { mobj_t *mo; - INT32 dir, PROJSPEED; + INT32 dir; + fixed_t PROJSPEED; angle_t newangle; fixed_t newx, newy, newz; mobj_t *throwmo; @@ -3012,10 +3013,10 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map if (mo) { angle_t fa = player->mo->angle>>ANGLETOFINESHIFT; - INT32 HEIGHT = (20 + (dir*10))*mapobjectscale + player->mo->momz; + fixed_t HEIGHT = (20 + (dir*10))*mapobjectscale + player->mo->momz; - mo->momx = player->mo->momx + FixedMul(FINECOSINE(fa), (altthrow == 2 ? 2*PROJSPEED/3 : PROJSPEED)); - mo->momy = player->mo->momy + FixedMul(FINESINE(fa), (altthrow == 2 ? 2*PROJSPEED/3 : PROJSPEED)); + mo->momx = player->mo->momx + FixedMul(FINECOSINE(fa), PROJSPEED); + mo->momy = player->mo->momy + FixedMul(FINESINE(fa), PROJSPEED); mo->momz = P_MobjFlip(player->mo) * HEIGHT; if (player->mo->eflags & MFE_VERTICALFLIP) @@ -3082,12 +3083,68 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map if (player->mo->eflags & MFE_VERTICALFLIP) mo->eflags |= MFE_VERTICALFLIP; + + if (mapthing == MT_SSMINE) + mo->extravalue1 = 14; // Pads the start-up length from 21 frames to a full second } } return mo; } +void K_PuntMine(mobj_t *thismine, mobj_t *punter) +{ + angle_t fa = R_PointToAngle2(0, 0, punter->momx, punter->momy) >> ANGLETOFINESHIFT; + fixed_t z = 30*mapobjectscale + punter->momz; + fixed_t spd; + mobj_t *mine; + + if (!thismine || P_MobjWasRemoved(thismine)) + return; + + if (thismine->type == MT_SSMINE_SHIELD) // Create a new mine + { + mine = P_SpawnMobj(thismine->x, thismine->y, thismine->z, MT_SSMINE); + P_SetTarget(&mine->target, thismine->target); + mine->angle = thismine->angle; + mine->flags2 = thismine->flags2; + mine->floorz = thismine->floorz; + mine->ceilingz = thismine->ceilingz; + P_RemoveMobj(thismine); + } + else + mine = thismine; + + if (!mine || P_MobjWasRemoved(mine)) + return; + + switch (gamespeed) + { + case 0: + spd = 68*mapobjectscale; // Avg Speed is 34 + break; + case 2: + spd = 96*mapobjectscale; // Avg Speed is 48 + break; + default: + spd = 82*mapobjectscale; // Avg Speed is 41 + break; + } + + mine->flags |= MF_NOCLIPTHING; + + P_SetMobjState(mine, S_SSMINE_AIR1); + mine->threshold = 10; + mine->extravalue1 = 0; + mine->reactiontime = mine->info->reactiontime; + + mine->momx = punter->momx + FixedMul(FINECOSINE(fa), spd); + mine->momy = punter->momy + FixedMul(FINESINE(fa), spd); + mine->momz = P_MobjFlip(mine) * z; + + mine->flags &= ~MF_NOCLIPTHING; +} + #define THUNDERRADIUS 320 static void K_DoThunderShield(player_t *player) diff --git a/src/k_kart.h b/src/k_kart.h index dc37956a..a09093f2 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -41,6 +41,7 @@ void K_SpawnBoostTrail(player_t *player); void K_SpawnSparkleTrail(mobj_t *mo); void K_SpawnWipeoutTrail(mobj_t *mo, boolean translucent); void K_DriftDustHandling(mobj_t *spawner); +void K_PuntMine(mobj_t *mine, mobj_t *punter); void K_DoSneaker(player_t *player, INT32 type); void K_DoPogoSpring(mobj_t *mo, fixed_t vertispeed, UINT8 sound); void K_KillBananaChain(mobj_t *banana, mobj_t *inflictor, mobj_t *source); diff --git a/src/p_map.c b/src/p_map.c index 41e5a455..ed71a546 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -980,7 +980,12 @@ static boolean PIT_CheckThing(mobj_t *thing) if (thing->type == MT_PLAYER) { - P_KillMobj(tmthing, thing, thing); + // Bomb punting + if ((tmthing->state >= &states[S_SSMINE1] && tmthing->state <= &states[S_SSMINE4]) + || (tmthing->state >= &states[S_SSMINE_DEPLOY8] && tmthing->state <= &states[S_SSMINE_DEPLOY13])) + P_KillMobj(tmthing, thing, thing); + else + K_PuntMine(tmthing, thing); } else if (thing->type == MT_ORBINAUT || thing->type == MT_JAWZ || thing->type == MT_JAWZ_DUD || thing->type == MT_ORBINAUT_SHIELD || thing->type == MT_JAWZ_SHIELD) @@ -1079,7 +1084,12 @@ static boolean PIT_CheckThing(mobj_t *thing) if (tmthing->health <= 0 || thing->health <= 0) return true; - P_KillMobj(thing, tmthing, tmthing); + // Bomb punting + if ((thing->state >= &states[S_SSMINE1] && thing->state <= &states[S_SSMINE4]) + || (thing->state >= &states[S_SSMINE_DEPLOY8] && thing->state <= &states[S_SSMINE_DEPLOY13])) + P_KillMobj(thing, tmthing, tmthing); + else + K_PuntMine(thing, tmthing); } else if (thing->type == MT_MINEEXPLOSION && tmthing->player) { diff --git a/src/p_mobj.c b/src/p_mobj.c index 746fc1af..8a290fdf 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -8190,28 +8190,39 @@ void P_MobjThinker(mobj_t *mobj) mobj->color = mobj->target->player->skincolor; else mobj->color = SKINCOLOR_KETCHUP; + if (mobj->momx || mobj->momy) P_SpawnGhostMobj(mobj); + if (P_IsObjectOnGround(mobj)) { - if (mobj->state == &states[S_SSMINE_AIR1] || mobj->state == &states[S_SSMINE_AIR2]) - P_SetMobjState(mobj, S_SSMINE_DEPLOY1); - if (mobj->reactiontime >= mobj->info->reactiontime) + if (mobj->extravalue1 > 0) + mobj->extravalue1--; + else { - mobj->momx = mobj->momy = 0; - S_StartSound(mobj, mobj->info->activesound); - mobj->reactiontime--; + if (mobj->state == &states[S_SSMINE_AIR1] || mobj->state == &states[S_SSMINE_AIR2]) + P_SetMobjState(mobj, S_SSMINE_DEPLOY1); + + if (mobj->reactiontime >= mobj->info->reactiontime) + { + mobj->momx = mobj->momy = 0; + S_StartSound(mobj, mobj->info->activesound); + mobj->reactiontime--; + } } } + if (mobj->reactiontime && mobj->reactiontime < mobj->info->reactiontime) { mobj->reactiontime--; if (!mobj->reactiontime) P_KillMobj(mobj, NULL, NULL); } + if ((mobj->state >= &states[S_SSMINE1] && mobj->state <= &states[S_SSMINE4]) || (mobj->state >= &states[S_SSMINE_DEPLOY8] && mobj->state <= &states[S_SSMINE_DEPLOY13])) A_GrenadeRing(mobj); + if (mobj->threshold > 0) mobj->threshold--; break; From f822eb94cfdf474ee4c568af15dcf6f5cdd4b854 Mon Sep 17 00:00:00 2001 From: James Date: Tue, 19 Feb 2019 20:19:01 -0500 Subject: [PATCH 24/62] Reduce explosion radius, lives forever, longer startup --- src/info.c | 6 +++--- src/k_kart.c | 2 +- src/p_mobj.c | 20 +++----------------- 3 files changed, 7 insertions(+), 21 deletions(-) diff --git a/src/info.c b/src/info.c index 5701f1c9..270e21fd 100644 --- a/src/info.c +++ b/src/info.c @@ -15574,10 +15574,10 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 1, // spawnhealth S_NULL, // seestate sfx_tossed, // seesound - 6*TICRATE, // reactiontime + 0, // reactiontime sfx_None, // attacksound S_NULL, // painstate - 192*FRACUNIT, // painchance + 128*FRACUNIT, // painchance sfx_None, // painsound S_NULL, // meleestate S_NULL, // missilestate @@ -15604,7 +15604,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 8, // reactiontime sfx_None, // attacksound S_NULL, // painstate - 192*FRACUNIT, // painchance + 128*FRACUNIT, // painchance sfx_None, // painsound S_NULL, // meleestate S_NULL, // missilestate diff --git a/src/k_kart.c b/src/k_kart.c index 855e0903..b94341bb 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3085,7 +3085,7 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map mo->eflags |= MFE_VERTICALFLIP; if (mapthing == MT_SSMINE) - mo->extravalue1 = 14; // Pads the start-up length from 21 frames to a full second + mo->extravalue1 = 49; // Pads the start-up length from 21 frames to a full 2 seconds } } diff --git a/src/p_mobj.c b/src/p_mobj.c index 8a290fdf..6898053d 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -8194,31 +8194,17 @@ void P_MobjThinker(mobj_t *mobj) if (mobj->momx || mobj->momy) P_SpawnGhostMobj(mobj); - if (P_IsObjectOnGround(mobj)) + if (P_IsObjectOnGround(mobj) && (mobj->state == &states[S_SSMINE_AIR1] || mobj->state == &states[S_SSMINE_AIR2])) { if (mobj->extravalue1 > 0) mobj->extravalue1--; else { - if (mobj->state == &states[S_SSMINE_AIR1] || mobj->state == &states[S_SSMINE_AIR2]) - P_SetMobjState(mobj, S_SSMINE_DEPLOY1); - - if (mobj->reactiontime >= mobj->info->reactiontime) - { - mobj->momx = mobj->momy = 0; - S_StartSound(mobj, mobj->info->activesound); - mobj->reactiontime--; - } + mobj->momx = mobj->momy = 0; + S_StartSound(mobj, mobj->info->activesound); } } - if (mobj->reactiontime && mobj->reactiontime < mobj->info->reactiontime) - { - mobj->reactiontime--; - if (!mobj->reactiontime) - P_KillMobj(mobj, NULL, NULL); - } - if ((mobj->state >= &states[S_SSMINE1] && mobj->state <= &states[S_SSMINE4]) || (mobj->state >= &states[S_SSMINE_DEPLOY8] && mobj->state <= &states[S_SSMINE_DEPLOY13])) A_GrenadeRing(mobj); From d2c708ba93886a1a5f3037299a04ef0054c15cb8 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Tue, 19 Feb 2019 19:26:32 -0600 Subject: [PATCH 25/62] Maybe this is a better way to work around the DrawMasked crash... --- src/r_things.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/r_things.c b/src/r_things.c index 52c92b02..d94001c9 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -651,7 +651,7 @@ void R_DrawMaskedColumn(column_t *column) basetexturemid = dc_texturemid; - for (; column && column->topdelta != 0xff ;) + for (; column->topdelta != 0xff ;) { // calculate unclipped screen coordinates // for post @@ -925,6 +925,13 @@ static void R_DrawVisSprite(vissprite_t *vis) if (vis->x2 >= vid.width) vis->x2 = vid.width-1; +#if 1 + // Something is occasionally setting 1px-wide sprites whose frac is exactly the width of the sprite, causing crashes due to + // accessing invalid column info. Until the cause is found, let's try to correct those manually... + while (frac + vis->xiscale*(vis->x2-vis->x1) > SHORT(patch->width)<x2 >= vis->x1) + vis->x2--; +#endif + for (dc_x = vis->x1; dc_x <= vis->x2; dc_x++, frac += vis->xiscale) { if (vis->scalestep) // currently papersprites only From ff57b4bc22ab4567a26f0ea47d402b5f5b1663af Mon Sep 17 00:00:00 2001 From: James Date: Tue, 19 Feb 2019 20:29:53 -0500 Subject: [PATCH 26/62] Missed a line --- src/p_mobj.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/p_mobj.c b/src/p_mobj.c index 6898053d..a84fc1dd 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -8202,6 +8202,7 @@ void P_MobjThinker(mobj_t *mobj) { mobj->momx = mobj->momy = 0; S_StartSound(mobj, mobj->info->activesound); + P_SetMobjState(mobj, S_SSMINE_DEPLOY1); } } From 0913a623fb35e6073773fc3e5ba7034fdfbfbff3 Mon Sep 17 00:00:00 2001 From: Steel Titanium Date: Tue, 19 Feb 2019 21:22:35 -0500 Subject: [PATCH 27/62] Some small changes. --- src/d_clisrv.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index ea8077d6..2054d166 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -2781,9 +2781,9 @@ static void Command_BanIP(void) if (I_SetBanAddress && I_SetBanAddress(address, NULL)) { if (reason) - CONS_Printf("Banned ip address %s for: %s\n", address, reason); + CONS_Printf("Banned IP address %s for: %s\n", address, reason); else - CONS_Printf("Banned ip address %s\n", address); + CONS_Printf("Banned IP address %s\n", address); Ban_Add(reason); D_SaveBan(); From ca87cfbf01302d398bf5970c3b5980be3262e9b4 Mon Sep 17 00:00:00 2001 From: James Date: Tue, 19 Feb 2019 21:57:56 -0500 Subject: [PATCH 28/62] Water skipping speed requirements are stricter --- src/p_mobj.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 746fc1af..fd42a1d7 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -3399,8 +3399,8 @@ void P_MobjCheckWater(mobj_t *mobj) // skipping stone! if (p && p->kartstuff[k_waterskip] < 2 - && ((p->speed/2 > abs(mobj->momz)) // Going more forward than horizontal, so you can skip across the water. - || (p->speed > K_GetKartSpeed(p,false)/4 && p->kartstuff[k_waterskip])) // Already skipped once, so you can skip once more! + && ((p->speed/3 > abs(mobj->momz)) // Going more forward than horizontal, so you can skip across the water. + || (p->speed > K_GetKartSpeed(p,false)/3 && p->kartstuff[k_waterskip])) // Already skipped once, so you can skip once more! && ((!(mobj->eflags & MFE_VERTICALFLIP) && thingtop - mobj->momz > mobj->watertop) || ((mobj->eflags & MFE_VERTICALFLIP) && mobj->z - mobj->momz < mobj->waterbottom))) { From df1a22d5fdcf21da81b2cee6d1cd5fa1a7178a8f Mon Sep 17 00:00:00 2001 From: wolfy852 Date: Tue, 19 Feb 2019 21:27:14 -0600 Subject: [PATCH 29/62] Fix Hyudoro being tangible to Jawz and Orbinauts --- src/p_map.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/p_map.c b/src/p_map.c index 41e5a455..ccb66676 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -747,6 +747,9 @@ static boolean PIT_CheckThing(mobj_t *thing) && !(tmthing->type == MT_ORBINAUT || tmthing->type == MT_JAWZ || tmthing->type == MT_JAWZ_DUD)) return true; + if (thing->player && thing->player->kartstuff[k_hyudorotimer]) + return true; // no interaction + if (thing->type == MT_PLAYER) { // Player Damage @@ -1021,6 +1024,9 @@ static boolean PIT_CheckThing(mobj_t *thing) && !(thing->type == MT_ORBINAUT || thing->type == MT_JAWZ || thing->type == MT_JAWZ_DUD)) return true; + if (tmthing->player && tmthing->player->kartstuff[k_hyudorotimer]) // I thought about doing this for just the objects below but figured it should apply to everything. + return true; // no interaction + if (thing->type == MT_ORBINAUT_SHIELD || thing->type == MT_JAWZ_SHIELD || thing->type == MT_ORBINAUT || thing->type == MT_JAWZ || thing->type == MT_JAWZ_DUD) { From 68b8ec81626a9023f638e7e22e9bb01489637ea6 Mon Sep 17 00:00:00 2001 From: James Date: Tue, 19 Feb 2019 23:01:19 -0500 Subject: [PATCH 30/62] Wipeout particles come from back wheels --- src/k_kart.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/k_kart.c b/src/k_kart.c index 468f5438..5ccc969b 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -2771,11 +2771,24 @@ void K_SpawnSparkleTrail(mobj_t *mo) void K_SpawnWipeoutTrail(mobj_t *mo, boolean translucent) { mobj_t *dust; + angle_t aoff; I_Assert(mo != NULL); I_Assert(!P_MobjWasRemoved(mo)); - dust = P_SpawnMobj(mo->x + (P_RandomRange(-25,25) * mo->scale), mo->y + (P_RandomRange(-25,25) * mo->scale), mo->z, MT_WIPEOUTTRAIL); + if (mo->player) + aoff = (mo->player->frameangle + ANGLE_180); + else + aoff = (mo->angle + ANGLE_180); + + if ((leveltime / 2) & 1) + aoff -= ANGLE_45; + else + aoff += ANGLE_45; + + dust = P_SpawnMobj(mo->x + FixedMul(24*mo->scale, FINECOSINE(aoff>>ANGLETOFINESHIFT)) + (P_RandomRange(-8,8) << FRACBITS), + mo->y + FixedMul(24*mo->scale, FINESINE(aoff>>ANGLETOFINESHIFT)) + (P_RandomRange(-8,8) << FRACBITS), + mo->z, MT_WIPEOUTTRAIL); P_SetTarget(&dust->target, mo); dust->angle = R_PointToAngle2(0,0,mo->momx,mo->momy); From 09c3fd432939fbf4b94c54208d16b56c7f79b6d0 Mon Sep 17 00:00:00 2001 From: James Date: Tue, 19 Feb 2019 23:15:31 -0500 Subject: [PATCH 31/62] Hyu b gone --- src/dehacked.c | 3 +++ src/doomstat.h | 1 + src/g_game.c | 1 + src/k_kart.c | 11 ++++++----- src/p_saveg.c | 2 ++ src/p_setup.c | 1 + src/p_tick.c | 2 ++ 7 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index 11aed24d..d0c5b8dc 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -9852,6 +9852,9 @@ static inline int lib_getenum(lua_State *L) } else if (fastcmp(word,"indirectitemcooldown")) { lua_pushinteger(L, indirectitemcooldown); return 1; + } else if (fastcmp(word,"hyubgone")) { + lua_pushinteger(L, hyubgone); + return 1; } else if (fastcmp(word,"thwompsactive")) { lua_pushboolean(L, thwompsactive); return 1; diff --git a/src/doomstat.h b/src/doomstat.h index 9ae2726d..0f057273 100644 --- a/src/doomstat.h +++ b/src/doomstat.h @@ -468,6 +468,7 @@ extern boolean comeback; extern SINT8 battlewanted[4]; extern tic_t wantedcalcdelay; extern tic_t indirectitemcooldown; +extern tic_t hyubgone; extern tic_t mapreset; extern UINT8 nospectategrief; extern boolean thwompsactive; diff --git a/src/g_game.c b/src/g_game.c index f0d221ff..9edb1d84 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -267,6 +267,7 @@ SINT8 pickedvote; // What vote the host rolls SINT8 battlewanted[4]; // WANTED players in battle, worth x2 points tic_t wantedcalcdelay; // Time before it recalculates WANTED tic_t indirectitemcooldown; // Cooldown before any more Shrink, SPB, or any other item that works indirectly is awarded +tic_t hyubgone; // Cooldown before hyudoro is allowed to be rerolled tic_t mapreset; // Map reset delay when enough players have joined an empty game UINT8 nospectategrief; // How many players need to be in-game to eliminate last; for preventing spectate griefing boolean thwompsactive; // Thwomps activate on lap 2 diff --git a/src/k_kart.c b/src/k_kart.c index b94341bb..4da1f6e0 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -556,6 +556,11 @@ static INT32 K_KartItemOddsBattle[NUMKARTRESULTS][6] = */ static void K_KartGetItemResult(player_t *player, SINT8 getitem) { + if (getitem == KITEM_SPB || getitem == KITEM_SHRINK) // Indirect items + indirectitemcooldown = 20*TICRATE; + if (getitem == KITEM_HYUDORO) // Hyudoro cooldown + hyubgone = 5*TICRATE; + switch (getitem) { // Special roulettes first, then the generic ones are handled by default @@ -583,10 +588,6 @@ static void K_KartGetItemResult(player_t *player, SINT8 getitem) player->kartstuff[k_itemtype] = KITEM_JAWZ; player->kartstuff[k_itemamount] = 2; break; - case KITEM_SPB: - case KITEM_SHRINK: // Indirect items - indirectitemcooldown = 20*TICRATE; - /* FALLTHRU */ default: if (getitem <= 0 || getitem >= NUMKARTRESULTS) // Sad (Fallback) { @@ -742,7 +743,7 @@ static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed) POWERITEMODDS(newodds); break; case KITEM_HYUDORO: - if (COOLDOWNONSTART) + if ((hyubgone > 0) || COOLDOWNONSTART) newodds = 0; break; default: diff --git a/src/p_saveg.c b/src/p_saveg.c index 975a4a5d..f00e3f9b 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -3313,6 +3313,7 @@ static void P_NetArchiveMisc(void) WRITEUINT32(save_p, wantedcalcdelay); WRITEUINT32(save_p, indirectitemcooldown); + WRITEUINT32(save_p, hyubgone); WRITEUINT32(save_p, mapreset); WRITEUINT8(save_p, nospectategrief); WRITEUINT8(save_p, thwompsactive); @@ -3421,6 +3422,7 @@ static inline boolean P_NetUnArchiveMisc(void) wantedcalcdelay = READUINT32(save_p); indirectitemcooldown = READUINT32(save_p); + hyubgone = READUINT32(save_p); mapreset = READUINT32(save_p); nospectategrief = READUINT8(save_p); thwompsactive = (boolean)READUINT8(save_p); diff --git a/src/p_setup.c b/src/p_setup.c index 58e13c2e..fab433fe 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -3244,6 +3244,7 @@ boolean P_SetupLevel(boolean skipprecip) wantedcalcdelay = wantedfrequency*2; indirectitemcooldown = 0; + hyubgone = 0; mapreset = 0; nospectategrief = 0; thwompsactive = false; diff --git a/src/p_tick.c b/src/p_tick.c index b46b248b..85eaea9b 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -680,6 +680,8 @@ void P_Ticker(boolean run) if (indirectitemcooldown) indirectitemcooldown--; + if (hyubgone) + hyubgone--; if (G_BattleGametype()) { From 879d3aa1a804005943b93f9f1e1ef1a6fd6d9425 Mon Sep 17 00:00:00 2001 From: fickleheart Date: Tue, 19 Feb 2019 22:21:07 -0600 Subject: [PATCH 32/62] Hold on, this works. --- src/r_things.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/r_things.c b/src/r_things.c index d94001c9..e4eaf413 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -925,13 +925,6 @@ static void R_DrawVisSprite(vissprite_t *vis) if (vis->x2 >= vid.width) vis->x2 = vid.width-1; -#if 1 - // Something is occasionally setting 1px-wide sprites whose frac is exactly the width of the sprite, causing crashes due to - // accessing invalid column info. Until the cause is found, let's try to correct those manually... - while (frac + vis->xiscale*(vis->x2-vis->x1) > SHORT(patch->width)<x2 >= vis->x1) - vis->x2--; -#endif - for (dc_x = vis->x1; dc_x <= vis->x2; dc_x++, frac += vis->xiscale) { if (vis->scalestep) // currently papersprites only @@ -1321,7 +1314,7 @@ static void R_ProjectSprite(mobj_t *thing) if (max(tz, tz2) < FixedMul(MINZ, this_scale)) // non-papersprite clipping is handled earlier return; - scalestep = (yscale2 - yscale)/(x2 - x1); + scalestep = (yscale2 - yscale)/(x2 - x1) ?: 1; // The following two are alternate sorting methods which might be more applicable in some circumstances. TODO - maybe enable via MF2? // sortscale = max(yscale, yscale2); From 38ad726e55eb443702b3a76676ce14054fdae71e Mon Sep 17 00:00:00 2001 From: James Date: Tue, 19 Feb 2019 23:38:16 -0500 Subject: [PATCH 33/62] Modify momz underwater for lots of things in k_kart.c --- src/k_kart.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/k_kart.c b/src/k_kart.c index 468f5438..81877a64 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1399,7 +1399,7 @@ void K_RespawnChecker(player_t *player) mo->eflags |= MFE_VERTICALFLIP; P_SetTarget(&mo->target, player->mo); mo->angle = newangle+ANGLE_90; - mo->momz = (8*FRACUNIT)*P_MobjFlip(player->mo); + mo->momz = (8<mo); P_SetScale(mo, (mo->destscale = FRACUNIT)); } } @@ -2212,6 +2212,9 @@ void K_ExplodePlayer(player_t *player, mobj_t *source, mobj_t *inflictor) // A b player->mo->momz *= 2; } + if (player->mo->eflags & MFE_UNDERWATER) + player->mo->momz = (117 * player->mo->momz) / 200; + if (player->mo->state != &states[S_KART_SPIN]) P_SetPlayerMobjState(player->mo, S_KART_SPIN); @@ -2421,6 +2424,8 @@ void K_SpawnMineExplosion(mobj_t *source, UINT8 color) truc->momy = P_RandomRange(-speed, speed)*FRACUNIT; speed = FixedMul(20*FRACUNIT, source->scale)>>FRACBITS; truc->momz = P_RandomRange(-speed, speed)*FRACUNIT; + if (truc->eflags & MFE_UNDERWATER) + truc->momz = (117 * truc->momz) / 200; truc->color = color; } @@ -2449,6 +2454,8 @@ void K_SpawnMineExplosion(mobj_t *source, UINT8 color) truc->momz = P_RandomRange(speed, speed2)*FRACUNIT; if (P_RandomChance(FRACUNIT/2)) truc->momz = -truc->momz; + if (truc->eflags & MFE_UNDERWATER) + truc->momz = (117 * truc->momz) / 200; truc->tics = TICRATE*2; truc->color = color; } @@ -3006,6 +3013,9 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map mo->momy = player->mo->momy + FixedMul(FINESINE(fa), (altthrow == 2 ? 2*PROJSPEED/3 : PROJSPEED)); mo->momz = P_MobjFlip(player->mo) * HEIGHT; + if (mo->eflags & MFE_UNDERWATER) + mo->momz = (117 * mo->momz) / 200; + if (player->mo->eflags & MFE_VERTICALFLIP) mo->eflags |= MFE_VERTICALFLIP; } @@ -3364,6 +3374,9 @@ void K_DoPogoSpring(mobj_t *mo, fixed_t vertispeed, UINT8 sound) else mo->momz = FixedMul(vertispeed, vscale); + if (mo->eflags & MFE_UNDERWATER) + mo->momz = (117 * mo->momz) / 200; + if (sound) S_StartSound(mo, (sound == 1 ? sfx_kc2f : sfx_kpogos)); } @@ -3513,6 +3526,8 @@ void K_DropHnextList(player_t *player) dropwork->momx = player->mo->momx>>1; dropwork->momy = player->mo->momy>>1; dropwork->momz = 3*flip*mapobjectscale; + if (dropwork->eflags & MFE_UNDERWATER) + dropwork->momz = (117 * dropwork->momz) / 200; P_Thrust(dropwork, work->angle - ANGLE_90, 6*mapobjectscale); dropwork->movecount = 2; dropwork->movedir = work->angle - ANGLE_90; @@ -3571,6 +3586,8 @@ void K_DropItems(player_t *player) FixedAngle(P_RandomFixed()*180) + player->mo->angle + ANGLE_90, 16*mapobjectscale); drop->momz = P_MobjFlip(player->mo)*3*mapobjectscale; + if (drop->eflags & MFE_UNDERWATER) + drop->momz = (117 * drop->momz) / 200; drop->threshold = (thunderhack ? KITEM_THUNDERSHIELD : player->kartstuff[k_itemtype]); drop->movecount = player->kartstuff[k_itemamount]; From a6dd439e998d643a113b94539e388150f71cfd7a Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Thu, 21 Feb 2019 17:04:58 -0500 Subject: [PATCH 34/62] Grow cancel Needs item table changes to make it less OP --- src/d_player.h | 1 + src/dehacked.c | 3 ++- src/k_kart.c | 28 ++++++++++++++++++++++++++-- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/d_player.h b/src/d_player.h index b430f20a..31f6d843 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -354,6 +354,7 @@ typedef enum k_getsparks, // Disable drift sparks at low speed, JUST enough to give acceleration the actual headstart above speed k_jawztargetdelay, // Delay for Jawz target switching, to make it less twitchy k_spectatewait, // How long have you been waiting as a spectator + k_growcancel, // Hold the item button down to cancel Grow NUMKARTSTUFF } kartstufftype_t; diff --git a/src/dehacked.c b/src/dehacked.c index d0c5b8dc..49b77bd2 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -8335,7 +8335,8 @@ static const char *const KARTSTUFF_LIST[] = { "ITEMBLINKMODE", "GETSPARKS", "JAWZTARGETDELAY", - "SPECTATEWAIT" + "SPECTATEWAIT", + "GROWCANCEL" }; static const char *const HUDITEMS_LIST[] = { diff --git a/src/k_kart.c b/src/k_kart.c index 4da1f6e0..cad54335 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1991,6 +1991,7 @@ void K_SpinPlayer(player_t *player, mobj_t *source, INT32 type, mobj_t *inflicto static void K_RemoveGrowShrink(player_t *player) { player->kartstuff[k_growshrinktimer] = 0; + player->kartstuff[k_growcancel] = 0; if (player->kartstuff[k_invincibilitytimer] == 0) player->mo->color = player->skincolor; player->mo->scalespeed = mapobjectscale/TICRATE; @@ -5093,6 +5094,18 @@ void K_MoveKartPlayer(player_t *player, boolean onground) if (player->kartstuff[k_rocketsneakertimer] < 1) player->kartstuff[k_rocketsneakertimer] = 1; } + // Grow Canceling + else if (player->kartstuff[k_growshrinktimer] > 0) + { + if (cmd->buttons & BT_ATTACK) + { + player->kartstuff[k_growcancel]++; + if (player->kartstuff[k_growcancel] > 26) + K_RemoveGrowShrink(player); + } + else + player->kartstuff[k_growcancel] = 0; + } else if (player->kartstuff[k_itemamount] <= 0) { player->kartstuff[k_itemamount] = player->kartstuff[k_itemheld] = 0; @@ -5449,6 +5462,9 @@ void K_MoveKartPlayer(player_t *player, boolean onground) if (player->kartstuff[k_itemtype] != KITEM_THUNDERSHIELD) player->kartstuff[k_curshield] = 0; + if (player->kartstuff[k_growshrinktimer] <= 0) + player->kartstuff[k_growcancel] = 0; + if (player->kartstuff[k_itemtype] == KITEM_SPB || player->kartstuff[k_itemtype] == KITEM_SHRINK || player->kartstuff[k_growshrinktimer] < 0) @@ -6510,6 +6526,8 @@ static void K_drawKartItem(void) //INT32 splitflags = K_calcSplitFlags(V_SNAPTOTOP|V_SNAPTOLEFT); const INT32 numberdisplaymin = ((!offset && stplyr->kartstuff[k_itemtype] == KITEM_ORBINAUT) ? 5 : 2); INT32 itembar = 0; + INT32 maxl = 0; // itembar's normal highest value + const INT32 barlength = (splitscreen > 1 ? 12 : 26); UINT8 localcolor = SKINCOLOR_NONE; SINT8 colormode = TC_RAINBOW; UINT8 *colmap = NULL; @@ -6618,6 +6636,8 @@ static void K_drawKartItem(void) else if (stplyr->kartstuff[k_rocketsneakertimer] > 1) { itembar = stplyr->kartstuff[k_rocketsneakertimer]; + maxl = (itemtime*3) - barlength; + if (leveltime & 1) localpatch = kp_rocketsneaker[offset]; else @@ -6625,6 +6645,12 @@ static void K_drawKartItem(void) } else if (stplyr->kartstuff[k_growshrinktimer] > 0) { + if (stplyr->kartstuff[k_growcancel]) + { + itembar = stplyr->kartstuff[k_growcancel]; + maxl = 26; + } + if (leveltime & 1) localpatch = kp_grow[offset]; else @@ -6776,8 +6802,6 @@ static void K_drawKartItem(void) // Extensible meter, currently only used for rocket sneaker... if (itembar && hudtrans) { - const INT32 barlength = (splitscreen > 1 ? 12 : 26); - const INT32 maxl = (itemtime*3) - barlength; // timer's normal highest value const INT32 fill = ((itembar*barlength)/maxl); const INT32 length = min(barlength, fill); const INT32 height = (offset ? 1 : 2); From 6b6fba841c2b4640fd7be34d11ef7d4171a80805 Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Fri, 22 Feb 2019 18:43:10 -0500 Subject: [PATCH 35/62] Banana snipe sfx --- src/p_map.c | 8 ++++++++ src/sounds.c | 1 + src/sounds.h | 1 + 3 files changed, 10 insertions(+) diff --git a/src/p_map.c b/src/p_map.c index ed71a546..9cca972a 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -912,6 +912,10 @@ static boolean PIT_CheckThing(mobj_t *thing) if (thing->type == MT_PLAYER) { + // Banana snipe! + if (tmthing->type == MT_BANANA && tmthing->health > 1) + S_StartSound(thing, sfx_bsnipe); + // Player Damage K_SpinPlayer(thing->player, tmthing->target, 0, tmthing, (tmthing->type == MT_BANANA || tmthing->type == MT_BANANA_SHIELD)); @@ -1061,6 +1065,10 @@ static boolean PIT_CheckThing(mobj_t *thing) if (tmthing->health <= 0 || thing->health <= 0) return true; + // Banana snipe! + if (thing->type == MT_BANANA && thing->health > 1) + S_StartSound(tmthing, sfx_bsnipe); + // Player Damage K_SpinPlayer(tmthing->player, thing->target, 0, tmthing, (thing->type == MT_BANANA || thing->type == MT_BANANA_SHIELD)); diff --git a/src/sounds.c b/src/sounds.c index a3bc8bf4..61fddb76 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -815,6 +815,7 @@ sfxinfo_t S_sfx[NUMSFX] = {"chain", false, 255, 8, -1, NULL, 0, -1, -1, LUMPERROR}, // Mementos Reaper {"mkuma", false, 96, 8, -1, NULL, 0, -1, -1, LUMPERROR}, // Trigger Happy Havoc Monokuma {"toada", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Arid Sands Toad scream + {"bsnipe", false, 96, 8, -1, NULL, 0, -1, -1, LUMPERROR}, // Banana sniping {"itfree", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // :shitsfree: {"dbgsal", false, 255, 8, -1, NULL, 0, -1, -1, LUMPERROR}, // Debug notification diff --git a/src/sounds.h b/src/sounds.h index 4c341d49..bb46ea9d 100644 --- a/src/sounds.h +++ b/src/sounds.h @@ -890,6 +890,7 @@ typedef enum sfx_chain, sfx_mkuma, sfx_toada, + sfx_bsnipe, sfx_itfree, sfx_dbgsal, From 0eb30bceb75116db4f6275f979011c35bb3766f3 Mon Sep 17 00:00:00 2001 From: James R Date: Fri, 22 Feb 2019 15:57:44 -0800 Subject: [PATCH 36/62] Rename splitscreen member to something more meaningful --- src/d_clisrv.c | 6 +++--- src/d_clisrv.h | 2 +- src/d_player.h | 2 +- src/g_game.c | 6 +++--- src/lua_playerlib.c | 6 +++--- src/p_saveg.c | 4 ++-- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 0aec7fd9..bf9c1695 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -648,7 +648,7 @@ static inline void resynch_write_player(resynch_pak *rsp, const size_t i) rsp->jointime = (tic_t)LONG(players[i].jointime); - rsp->splitscreen = players[i].splitscreen; + rsp->splitscreenindex = players[i].splitscreenindex; rsp->hasmo = false; //Transfer important mo information if the player has a body. @@ -785,7 +785,7 @@ static void resynch_read_player(resynch_pak *rsp) players[i].jointime = (tic_t)LONG(rsp->jointime); - players[i].splitscreen = rsp->splitscreen; + players[i].splitscreenindex = rsp->splitscreenindex; //We get a packet for each player in game. if (!playeringame[i]) @@ -3320,7 +3320,7 @@ static void Got_AddPlayer(UINT8 **p, INT32 playernum) addedtogame = true; } - players[newplayernum].splitscreen = splitscreenplayer; + players[newplayernum].splitscreenindex = splitscreenplayer; if (netgame) { diff --git a/src/d_clisrv.h b/src/d_clisrv.h index b628606d..5dc48753 100644 --- a/src/d_clisrv.h +++ b/src/d_clisrv.h @@ -283,7 +283,7 @@ typedef struct tic_t jointime; - UINT8 splitscreen; + UINT8 splitscreenindex; //player->mo stuff UINT8 hasmo; // Boolean diff --git a/src/d_player.h b/src/d_player.h index baed9a72..a5d73ec7 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -572,7 +572,7 @@ typedef struct player_s tic_t jointime; // Timer when player joins game to change skin/color - UINT8 splitscreen; + UINT8 splitscreenindex; #ifdef HWRENDER fixed_t fovadd; // adjust FOV for hw rendering #endif diff --git a/src/g_game.c b/src/g_game.c index eb0396c8..d04bbf6b 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -2357,7 +2357,7 @@ void G_PlayerReborn(INT32 player) UINT8 skincolor; INT32 skin; tic_t jointime; - UINT8 psplitscreen; + UINT8 splitscreenindex; boolean spectator; INT16 bot; SINT8 pity; @@ -2381,7 +2381,7 @@ void G_PlayerReborn(INT32 player) ctfteam = players[player].ctfteam; exiting = players[player].exiting; jointime = players[player].jointime; - psplitscreen = players[player].splitscreen; + splitscreenindex = players[player].splitscreenindex; spectator = players[player].spectator; pflags = (players[player].pflags & (PF_TIMEOVER|PF_FLIPCAM|PF_TAGIT|PF_TAGGED|PF_ANALOGMODE|PF_WANTSTOJOIN)); @@ -2478,7 +2478,7 @@ void G_PlayerReborn(INT32 player) p->pflags = pflags; p->ctfteam = ctfteam; p->jointime = jointime; - p->splitscreen = psplitscreen; + p->splitscreenindex = splitscreenindex; p->spectator = spectator; // save player config truth reborn diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index 0bea1e7b..1c37f4c4 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -325,8 +325,8 @@ static int player_get(lua_State *L) lua_pushinteger(L, plr->bot); else if (fastcmp(field,"jointime")) lua_pushinteger(L, plr->jointime); - else if (fastcmp(field,"splitscreen")) - lua_pushinteger(L, plr->splitscreen); + else if (fastcmp(field,"splitscreenindex")) + lua_pushinteger(L, plr->splitscreenindex); #ifdef HWRENDER else if (fastcmp(field,"fovadd")) lua_pushfixed(L, plr->fovadd); @@ -615,7 +615,7 @@ static int player_set(lua_State *L) return NOSET; else if (fastcmp(field,"jointime")) plr->jointime = (tic_t)luaL_checkinteger(L, 3); - else if (fastcmp(field,"splitscreen")) + else if (fastcmp(field,"splitscreenindex")) return NOSET; #ifdef HWRENDER else if (fastcmp(field,"fovadd")) diff --git a/src/p_saveg.c b/src/p_saveg.c index a2ae8f17..5a43745b 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -249,7 +249,7 @@ static void P_NetArchivePlayers(void) WRITEUINT32(save_p, players[i].jointime); - WRITEUINT8(save_p, players[i].splitscreen); + WRITEUINT8(save_p, players[i].splitscreenindex); WRITEUINT16(save_p, flags); @@ -428,7 +428,7 @@ static void P_NetUnArchivePlayers(void) players[i].jointime = READUINT32(save_p); - players[i].splitscreen = READUINT8(save_p); + players[i].splitscreenindex = READUINT8(save_p); flags = READUINT16(save_p); From df503c7f198f8e29e5d254bdb52638359e913e4a Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Fri, 22 Feb 2019 19:07:54 -0500 Subject: [PATCH 37/62] Add parentheses --- src/g_game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_game.c b/src/g_game.c index e2a59969..71906027 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -4767,7 +4767,7 @@ void G_WriteGhostTic(mobj_t *ghost) if (abs(ghost->x-oldghost.x) > MAXMOM || abs(ghost->y-oldghost.y) > MAXMOM || abs(ghost->z-oldghost.z) > MAXMOM - || leveltime & 255 == 1) // Hack to enable slightly nicer resyncing + || (leveltime & 255 == 1)) // Hack to enable slightly nicer resyncing { oldghost.x = ghost->x; oldghost.y = ghost->y; From b2d4ec501cb2ec67a0b345a3fe49667c1975540a Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Fri, 22 Feb 2019 19:11:50 -0500 Subject: [PATCH 38/62] Add parentheses 2: Move parentheses --- src/g_game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_game.c b/src/g_game.c index 71906027..0a19ec8f 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -4767,7 +4767,7 @@ void G_WriteGhostTic(mobj_t *ghost) if (abs(ghost->x-oldghost.x) > MAXMOM || abs(ghost->y-oldghost.y) > MAXMOM || abs(ghost->z-oldghost.z) > MAXMOM - || (leveltime & 255 == 1)) // Hack to enable slightly nicer resyncing + || (leveltime & 255) == 1) // Hack to enable slightly nicer resyncing { oldghost.x = ghost->x; oldghost.y = ghost->y; From cec79dee87128b0d9f48f6a6c0a87a6b31e596e4 Mon Sep 17 00:00:00 2001 From: Alam Arias Date: Fri, 22 Feb 2019 21:04:53 -0500 Subject: [PATCH 39/62] if you going to use abs(), you need to work in signed types --- src/g_game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_game.c b/src/g_game.c index 0a19ec8f..842ac1a7 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -4896,7 +4896,7 @@ void G_WriteGhostTic(mobj_t *ghost) void G_ConsGhostTic(void) { UINT8 ziptic; - UINT32 px,py,pz,gx,gy,gz; + fixed_t px,py,pz,gx,gy,gz; mobj_t *testmo; UINT32 syncleeway; boolean nightsfail = false; From d5a4759121b89340016b22f332bdc174dc4a56a7 Mon Sep 17 00:00:00 2001 From: Alam Arias Date: Fri, 22 Feb 2019 21:13:00 -0500 Subject: [PATCH 40/62] signed and unsigned compare --- src/g_game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_game.c b/src/g_game.c index 842ac1a7..003c11e9 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -4898,7 +4898,7 @@ void G_ConsGhostTic(void) UINT8 ziptic; fixed_t px,py,pz,gx,gy,gz; mobj_t *testmo; - UINT32 syncleeway; + fixed_t syncleeway; boolean nightsfail = false; if (!demo_p || !demo_start) From f91eb68b709c660f319c6546a3a27dd1ce4100f1 Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Fri, 22 Feb 2019 22:49:27 -0500 Subject: [PATCH 41/62] Update item table Not looking forward to testing... --- src/k_kart.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index c8c1e1e5..93ef33db 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -496,20 +496,20 @@ boolean K_IsPlayerWanted(player_t *player) static INT32 K_KartItemOddsRace[NUMKARTRESULTS][10] = { //P-Odds 0 1 2 3 4 5 6 7 8 9 - /*Sneaker*/ {20, 0, 0, 4, 6, 6, 0, 0, 0, 0 }, // Sneaker - /*Rocket Sneaker*/ { 0, 0, 0, 0, 0, 1, 3, 5, 3, 0 }, // Rocket Sneaker - /*Invincibility*/ { 0, 0, 0, 0, 0, 1, 4, 6,14, 0 }, // Invincibility - /*Banana*/ { 0,10, 4, 2, 1, 0, 0, 0, 0, 0 }, // Banana + /*Sneaker*/ {20, 0, 0, 4, 7, 7, 0, 0, 0, 0 }, // Sneaker + /*Rocket Sneaker*/ { 0, 0, 0, 0, 0, 1, 4, 5, 3, 0 }, // Rocket Sneaker + /*Invincibility*/ { 0, 0, 0, 0, 0, 1, 4, 6,10, 0 }, // Invincibility + /*Banana*/ { 0, 9, 4, 2, 1, 0, 0, 0, 0, 0 }, // Banana /*Eggman Monitor*/ { 0, 3, 2, 1, 0, 0, 0, 0, 0, 0 }, // Eggman Monitor - /*Orbinaut*/ { 0, 8, 6, 4, 2, 0, 0, 0, 0, 0 }, // Orbinaut + /*Orbinaut*/ { 0, 7, 6, 4, 2, 0, 0, 0, 0, 0 }, // Orbinaut /*Jawz*/ { 0, 0, 3, 2, 1, 1, 0, 0, 0, 0 }, // Jawz /*Mine*/ { 0, 0, 2, 2, 1, 0, 0, 0, 0, 0 }, // Mine /*Ballhog*/ { 0, 0, 0, 2, 1, 0, 0, 0, 0, 0 }, // Ballhog /*Self-Propelled Bomb*/ { 0, 0, 1, 2, 3, 4, 2, 2, 0,20 }, // Self-Propelled Bomb - /*Grow*/ { 0, 0, 0, 0, 0, 1, 3, 5, 3, 0 }, // Grow + /*Grow*/ { 0, 0, 0, 0, 0, 0, 2, 5, 7, 0 }, // Grow /*Shrink*/ { 0, 0, 0, 0, 0, 0, 0, 2, 0, 0 }, // Shrink /*Thunder Shield*/ { 0, 1, 2, 0, 0, 0, 0, 0, 0, 0 }, // Thunder Shield - /*Hyudoro*/ { 0, 0, 0, 0, 1, 2, 1, 0, 0, 0 }, // Hyudoro + /*Hyudoro*/ { 0, 0, 0, 0, 0, 2, 1, 0, 0, 0 }, // Hyudoro /*Pogo Spring*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // Pogo Spring /*Kitchen Sink*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // Kitchen Sink /*Sneaker x3*/ { 0, 0, 0, 0, 3, 7, 9, 2, 0, 0 }, // Sneaker x3 From c543c35b91cb217faaa9c2b2a9b9e4d57eb9d4a3 Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Fri, 22 Feb 2019 22:50:13 -0500 Subject: [PATCH 42/62] Revert this minor change --- src/k_kart.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 93ef33db..d49b4f4d 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -496,7 +496,7 @@ boolean K_IsPlayerWanted(player_t *player) static INT32 K_KartItemOddsRace[NUMKARTRESULTS][10] = { //P-Odds 0 1 2 3 4 5 6 7 8 9 - /*Sneaker*/ {20, 0, 0, 4, 7, 7, 0, 0, 0, 0 }, // Sneaker + /*Sneaker*/ {20, 0, 0, 4, 6, 7, 0, 0, 0, 0 }, // Sneaker /*Rocket Sneaker*/ { 0, 0, 0, 0, 0, 1, 4, 5, 3, 0 }, // Rocket Sneaker /*Invincibility*/ { 0, 0, 0, 0, 0, 1, 4, 6,10, 0 }, // Invincibility /*Banana*/ { 0, 9, 4, 2, 1, 0, 0, 0, 0, 0 }, // Banana @@ -509,7 +509,7 @@ static INT32 K_KartItemOddsRace[NUMKARTRESULTS][10] = /*Grow*/ { 0, 0, 0, 0, 0, 0, 2, 5, 7, 0 }, // Grow /*Shrink*/ { 0, 0, 0, 0, 0, 0, 0, 2, 0, 0 }, // Shrink /*Thunder Shield*/ { 0, 1, 2, 0, 0, 0, 0, 0, 0, 0 }, // Thunder Shield - /*Hyudoro*/ { 0, 0, 0, 0, 0, 2, 1, 0, 0, 0 }, // Hyudoro + /*Hyudoro*/ { 0, 0, 0, 0, 1, 2, 1, 0, 0, 0 }, // Hyudoro /*Pogo Spring*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // Pogo Spring /*Kitchen Sink*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // Kitchen Sink /*Sneaker x3*/ { 0, 0, 0, 0, 3, 7, 9, 2, 0, 0 }, // Sneaker x3 From a993cffb6969dba552a49d46423db6070ea6bc14 Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Tue, 26 Feb 2019 04:30:51 -0500 Subject: [PATCH 43/62] Modify a few colors - The following colors were given either more noticeable highlights or deeper shading for better colorized WANTED poster appearance: Nickel, Black, Beige, Brown, Leather, Salmon, Red, Crimson, Pumpkin, Rosewood, Burgundy, Pinetree, Swamp, Periwinkle, Blue, Blueberry, Dusk, Purple, Lavender, and Byzantium. - Fixed an off-looking purple tone on Ruby. - Salmon's outline & shading was made darker, to make it slightly easier on the eyes. - Peach recieved a complete overhaul, featuring high contrast and yellow highlights. - Add kartdebugcolorize for taking a quick glance at all of the colorizations --- src/d_netcmd.c | 1 + src/d_netcmd.h | 2 +- src/k_kart.c | 82 +++++++++++++++++++++++++++----------------------- 3 files changed, 47 insertions(+), 38 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 53d88f2f..a8efd306 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -378,6 +378,7 @@ consvar_t cv_kartdebughuddrop = {"kartdebughuddrop", "Off", CV_NETVAR|CV_CHEAT|C consvar_t cv_kartdebugcheckpoint = {"kartdebugcheckpoint", "Off", CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_kartdebugnodes = {"kartdebugnodes", "Off", CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_kartdebugcolorize = {"kartdebugcolorize", "Off", CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; static CV_PossibleValue_t votetime_cons_t[] = {{10, "MIN"}, {3600, "MAX"}, {0, NULL}}; consvar_t cv_votetime = {"votetime", "20", CV_NETVAR, votetime_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; diff --git a/src/d_netcmd.h b/src/d_netcmd.h index 54c00484..e0827013 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -126,7 +126,7 @@ extern consvar_t cv_karteliminatelast; extern consvar_t cv_votetime; extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop; -extern consvar_t cv_kartdebugcheckpoint, cv_kartdebugnodes; +extern consvar_t cv_kartdebugcheckpoint, cv_kartdebugnodes, cv_kartdebugcolorize; extern consvar_t cv_itemfinder; diff --git a/src/k_kart.c b/src/k_kart.c index d49b4f4d..ffa24abd 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -180,31 +180,31 @@ const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] = UINT8 colortranslations[MAXSKINCOLORS][16] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // SKINCOLOR_NONE - {120, 120, 120, 120, 0, 1, 3, 4, 6, 7, 10, 14, 18, 22, 25, 28}, // SKINCOLOR_WHITE - { 0, 1, 2, 4, 5, 7, 8, 10, 13, 15, 18, 20, 23, 25, 28, 30}, // SKINCOLOR_SILVER + {120, 120, 120, 120, 0, 2, 5, 8, 9, 11, 14, 17, 20, 22, 25, 28}, // SKINCOLOR_WHITE + { 0, 1, 2, 3, 5, 7, 9, 12, 13, 15, 18, 20, 23, 25, 27, 30}, // SKINCOLOR_SILVER { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}, // SKINCOLOR_GREY - { 12, 14, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, // SKINCOLOR_NICKEL - { 16, 17, 19, 21, 22, 24, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31}, // SKINCOLOR_BLACK + { 3, 5, 8, 11, 15, 17, 19, 21, 23, 24, 25, 26, 27, 29, 30, 31}, // SKINCOLOR_NICKEL + { 4, 7, 11, 15, 20, 22, 24, 27, 28, 28, 28, 29, 29, 30, 30, 31}, // SKINCOLOR_BLACK { 0, 1, 3, 5, 7, 9, 34, 36, 38, 40, 42, 44, 60, 61, 62, 63}, // SKINCOLOR_SEPIA - { 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47}, // SKINCOLOR_BEIGE - { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63}, // SKINCOLOR_BROWN - { 51, 52, 53, 55, 56, 57, 58, 60, 61, 63, 28, 28, 29, 29, 30, 31}, // SKINCOLOR_LEATHER - {120, 120, 120, 121, 121, 122, 122, 123, 124, 125, 126, 128, 129, 131, 133, 135}, // SKINCOLOR_SALMON + {120, 65, 67, 69, 32, 34, 36, 38, 40, 42, 44, 45, 46, 47, 62, 63}, // SKINCOLOR_BEIGE + { 67, 70, 73, 76, 48, 49, 51, 53, 54, 56, 58, 59, 61, 63, 29, 30}, // SKINCOLOR_BROWN + { 72, 76, 48, 51, 53, 55, 57, 59, 61, 63, 28, 28, 29, 29, 30, 31}, // SKINCOLOR_LEATHER + {120, 120, 120, 121, 121, 122, 123, 124, 126, 127, 129, 131, 133, 135, 137, 139}, // SKINCOLOR_SALMON {120, 121, 121, 122, 144, 145, 146, 147, 148, 149, 150, 151, 134, 136, 138, 140}, // SKINCOLOR_PINK {144, 145, 146, 147, 148, 149, 150, 151, 134, 135, 136, 137, 138, 139, 140, 141}, // SKINCOLOR_ROSE - {121, 122, 145, 146, 147, 149, 131, 132, 133, 134, 135, 197, 197, 198, 199, 255}, // SKINCOLOR_RUBY - {120, 121, 122, 123, 124, 125, 126, 127, 128, 130, 131, 133, 134, 136, 137, 139}, // SKINCOLOR_RASPBERRY - {125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140}, // SKINCOLOR_RED - {130, 131, 132, 133, 134, 136, 137, 138, 139, 139, 140, 140, 141, 141, 142, 143}, // SKINCOLOR_CRIMSON + {120, 121, 144, 145, 147, 149, 132, 133, 134, 136, 198, 198, 199, 255, 30, 31}, // SKINCOLOR_RUBY + {120, 121, 122, 123, 124, 125, 126, 127, 128, 130, 131, 134, 136, 137, 139, 140}, // SKINCOLOR_RASPBERRY + {122, 123, 124, 126, 129, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142}, // SKINCOLOR_RED + {123, 125, 128, 131, 133, 135, 136, 138, 140, 140, 141, 141, 142, 142, 143, 31}, // SKINCOLOR_CRIMSON {104, 113, 113, 85, 86, 88, 128, 129, 131, 133, 134, 136, 138, 139, 141, 143}, // SKINCOLOR_KETCHUP {120, 121, 122, 123, 124, 147, 147, 148, 90, 91, 92, 93, 94, 95, 152, 154}, // SKINCOLOR_DAWN {120, 120, 80, 80, 81, 82, 83, 83, 84, 85, 86, 88, 89, 91, 93, 95}, // SKINCOLOR_CREAMSICLE { 80, 81, 82, 83, 84, 85, 86, 88, 89, 91, 94, 95, 154, 156, 158, 159}, // SKINCOLOR_ORANGE - { 84, 85, 86, 87, 88, 90, 92, 93, 94, 95, 152, 153, 154, 156, 157, 159}, // SKINCOLOR_PUMPKIN - { 90, 91, 92, 93, 94, 152, 153, 154, 155, 156, 157, 158, 159, 139, 141, 143}, // SKINCOLOR_ROSEWOOD - { 94, 95, 152, 153, 154, 156, 157, 159, 141, 141, 141, 142, 142, 143, 143, 31}, // SKINCOLOR_BURGUNDY + { 82, 83, 84, 85, 87, 89, 90, 92, 94, 152, 153, 155, 157, 159, 141, 142}, // SKINCOLOR_PUMPKIN + { 83, 85, 88, 90, 92, 94, 152, 153, 154, 156, 157, 159, 140, 141, 142, 143}, // SKINCOLOR_ROSEWOOD + { 84, 86, 89, 91, 152, 154, 155, 157, 158, 159, 140, 141, 142, 143, 31, 31}, // SKINCOLOR_BURGUNDY { 98, 98, 112, 112, 113, 113, 84, 85, 87, 89, 91, 93, 95, 153, 156, 159}, // SKINCOLOR_TANGERINE - { 64, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 48, 50, 53, 56, 59}, // SKINCOLOR_PEACH + {120, 120, 96, 96, 97, 82, 84, 77, 50, 54, 57, 59, 61, 63, 29, 31}, // SKINCOLOR_PEACH { 64, 66, 68, 70, 72, 74, 76, 78, 48, 50, 52, 54, 56, 58, 60, 62}, // SKINCOLOR_CARAMEL {112, 112, 112, 113, 113, 114, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119}, // SKINCOLOR_GOLD {112, 113, 114, 115, 116, 117, 118, 119, 156, 157, 158, 159, 141, 141, 142, 143}, // SKINCOLOR_BRONZE @@ -220,9 +220,9 @@ UINT8 colortranslations[MAXSKINCOLORS][16] = { {178, 178, 178, 179, 179, 180, 181, 182, 183, 172, 172, 173, 173, 174, 174, 175}, // SKINCOLOR_MOSS {120, 176, 176, 176, 177, 163, 164, 165, 167, 221, 221, 222, 223, 207, 207, 31}, // SKINCOLOR_MINT {160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175}, // SKINCOLOR_GREEN - {160, 161, 162, 164, 165, 167, 169, 170, 171, 171, 172, 173, 174, 175, 30, 31}, // SKINCOLOR_PINETREE + {161, 163, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 30, 30, 31}, // SKINCOLOR_PINETREE {160, 184, 184, 185, 185, 186, 186, 187, 187, 188, 188, 189, 189, 190, 191, 175}, // SKINCOLOR_EMERALD - {186, 187, 188, 188, 188, 189, 189, 190, 190, 191, 175, 175, 30, 30, 31, 31}, // SKINCOLOR_SWAMP + {160, 184, 185, 186, 187, 188, 189, 190, 191, 191, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_SWAMP {120, 120, 80, 80, 81, 177, 162, 164, 228, 228, 204, 204, 205, 205, 206, 207}, // SKINCOLOR_DREAM {120, 208, 208, 210, 212, 214, 220, 220, 220, 221, 221, 222, 222, 223, 223, 191}, // SKINCOLOR_AQUA {210, 213, 220, 220, 220, 216, 216, 221, 221, 221, 222, 222, 223, 223, 191, 31}, // SKINCOLOR_TEAL @@ -234,27 +234,15 @@ UINT8 colortranslations[MAXSKINCOLORS][16] = { {120, 200, 200, 201, 201, 202, 202, 203, 203, 204, 204, 205, 205, 206, 207, 31}, // SKINCOLOR_STEEL {225, 226, 227, 228, 229, 205, 205, 206, 207, 207, 28, 28, 29, 29, 30, 31}, // SKINCOLOR_JET {208, 209, 211, 213, 215, 217, 229, 230, 232, 234, 236, 238, 240, 242, 244, 246}, // SKINCOLOR_SAPPHIRE - {120, 224, 225, 226, 226, 227, 228, 228, 229, 230, 231, 234, 235, 237, 239, 241}, // SKINCOLOR_PERIWINKLE - {224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239}, // SKINCOLOR_BLUE - {228, 229, 230, 231, 232, 233, 234, 235, 237, 238, 239, 240, 242, 243, 244, 245}, // SKINCOLOR_BLUEBERRY - {192, 192, 248, 249, 250, 251, 204, 204, 205, 205, 206, 206, 207, 29, 30, 31}, // SKINCOLOR_DUSK - {192, 192, 192, 193, 193, 194, 194, 195, 195, 196, 196, 197, 197, 198, 198, 199}, // SKINCOLOR_PURPLE - {248, 248, 248, 249, 249, 250, 250, 251, 251, 252, 252, 253, 253, 254, 254, 255}, // SKINCOLOR_LAVENDER - {192, 248, 249, 250, 251, 252, 253, 254, 255, 255, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_BYZANTIUM + {120, 120, 224, 225, 226, 202, 227, 228, 229, 230, 231, 233, 235, 237, 239, 241}, // SKINCOLOR_PERIWINKLE + {224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 235, 236, 238, 242, 244, 246}, // SKINCOLOR_BLUE + {226, 228, 229, 230, 232, 233, 235, 237, 239, 240, 242, 244, 246, 31, 31, 31}, // SKINCOLOR_BLUEBERRY + {121, 145, 192, 249, 250, 251, 204, 204, 205, 205, 206, 206, 207, 29, 30, 31}, // SKINCOLOR_DUSK + {121, 145, 192, 192, 193, 194, 195, 196, 196, 197, 197, 198, 198, 199, 30, 31}, // SKINCOLOR_PURPLE + {121, 145, 192, 248, 249, 250, 251, 252, 252, 253, 253, 254, 254, 255, 30, 31}, // SKINCOLOR_LAVENDER + {144, 248, 249, 250, 251, 252, 253, 254, 255, 255, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_BYZANTIUM {144, 145, 146, 147, 148, 149, 150, 251, 251, 252, 252, 253, 254, 255, 29, 30}, // SKINCOLOR_POMEGRANATE {120, 120, 120, 121, 121, 122, 122, 123, 192, 248, 249, 250, 251, 252, 253, 254}, // SKINCOLOR_LILAC - /* Removed Colours - {120, 121, 123, 124, 126, 127, 129, 130, 132, 133, 135, 136, 138, 139, 141, 143}, // old SKINCOLOR_RUBY, removed for other colors - {224, 225, 226, 228, 229, 231, 232, 234, 235, 237, 238, 240, 241, 243, 244, 246}, // old SKINCOLOR_SAPPHIRE, removed for other colors - { 72, 73, 74, 75, 76, 77, 78, 79, 48, 49, 50, 51, 52, 53, 54, 55}, // old SKINCOLOR_CARAMEL, new Caramel was previously Shiny Caramel - {215, 216, 217, 218, 204, 205, 206, 237, 238, 239, 240, 241, 242, 243, 244, 245}, // old SKINCOLOR_NAVY, too similar to Jet - { 80, 81, 83, 85, 86, 88, 90, 91, 93, 95, 152, 153, 154, 156, 157, 159}, // SKINCOLOR_AMBER, removed for other colors - {160, 160, 160, 184, 184, 184, 185, 185, 185, 186, 187, 187, 188, 188, 189, 190}, // SKINCOLOR_JADE, removed for other colors - {224, 225, 226, 212, 213, 213, 214, 215, 220, 221, 172, 222, 173, 223, 174, 175}, // SKINCOLOR_FROST, merged into Aqua - { 96, 97, 99, 100, 102, 104, 105, 105, 106, 107, 107, 108, 109, 109, 110, 111}, // SKINCOLOR_CANARY, replaced with Mustard - {192, 193, 194, 195, 196, 197, 198, 199, 255, 255, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_INDIGO, too similar to Byzantium - { 1, 145, 125, 73, 83, 114, 106, 180, 187, 168, 219, 205, 236, 206, 199, 255}, // SKINCOLOR_RAINBOW, is Vomit 2.0 - */ }; // Define for getting accurate color brightness readings according to how the human eye sees them. @@ -443,6 +431,7 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartdebugcheckpoint); CV_RegisterVar(&cv_kartdebugnodes); + CV_RegisterVar(&cv_kartdebugcolorize); } //} @@ -8593,6 +8582,25 @@ void K_drawKartHUD(void) for (p = 0; p < MAXPLAYERS; p++) V_DrawString(8, 64+(8*p), V_YELLOWMAP, va("%d - %d (%dl)", p, playernode[p], players[p].cmd.latency)); } + + if (cv_kartdebugcolorize.value && stplyr->mo && stplyr->mo->skin) + { + INT32 x = 0, y = 0; + UINT8 c; + + for (c = 1; c < MAXSKINCOLORS; c++) + { + UINT8 *cm = R_GetTranslationColormap(TC_RAINBOW, c, 0); + V_DrawFixedPatch(x<skin], cm); + + x += 30; + if (x > BASEVIDWIDTH-30) + { + x = 0; + y += 30; + } + } + } } //} From 7de2cf8d3978af5e2d9d8b3bf6a8cbfe21ec0ce2 Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Tue, 26 Feb 2019 07:14:03 -0500 Subject: [PATCH 44/62] Fix Super colors from base SRB2 giving a garbage color --- src/dehacked.c | 73 +++++++++++++++++++++++++++++++++++++------------- src/doomdef.h | 47 ++++++++++++++++++++++++++++++-- src/k_kart.c | 49 ++++++++++++++++++++++++++++++++- src/k_kart.h | 2 +- 4 files changed, 149 insertions(+), 22 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index 11aed24d..d346de5f 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -8199,24 +8199,61 @@ static const char *COLOR_ENUMS[] = { // Rejigged for Kart. "POMEGRANATE", // 62 // SKINCOLOR_POMEGRANATE "LILAC", // 63 // SKINCOLOR_LILAC - // Super special awesome Super flashing colors! - "SUPER1", // SKINCOLOR_SUPER1 - "SUPER2", // SKINCOLOR_SUPER2, - "SUPER3", // SKINCOLOR_SUPER3, - "SUPER4", // SKINCOLOR_SUPER4, - "SUPER5", // SKINCOLOR_SUPER5, - // Super Tails - "TSUPER1", // SKINCOLOR_TSUPER1, - "TSUPER2", // SKINCOLOR_TSUPER2, - "TSUPER3", // SKINCOLOR_TSUPER3, - "TSUPER4", // SKINCOLOR_TSUPER4, - "TSUPER5", // SKINCOLOR_TSUPER5, - // Super Knuckles - "KSUPER1", // SKINCOLOR_KSUPER1, - "KSUPER2", // SKINCOLOR_KSUPER2, - "KSUPER3", // SKINCOLOR_KSUPER3, - "KSUPER4", // SKINCOLOR_KSUPER4, - "KSUPER5" // SKINCOLOR_KSUPER5, + // Special super colors + // Super Sonic Yellow + "SUPER1", // SKINCOLOR_SUPER1 + "SUPER2", // SKINCOLOR_SUPER2, + "SUPER3", // SKINCOLOR_SUPER3, + "SUPER4", // SKINCOLOR_SUPER4, + "SUPER5", // SKINCOLOR_SUPER5, + // Super Tails Orange + "TSUPER1", // SKINCOLOR_TSUPER1, + "TSUPER2", // SKINCOLOR_TSUPER2, + "TSUPER3", // SKINCOLOR_TSUPER3, + "TSUPER4", // SKINCOLOR_TSUPER4, + "TSUPER5", // SKINCOLOR_TSUPER5, + // Super Knuckles Red + "KSUPER1", // SKINCOLOR_KSUPER1, + "KSUPER2", // SKINCOLOR_KSUPER2, + "KSUPER3", // SKINCOLOR_KSUPER3, + "KSUPER4", // SKINCOLOR_KSUPER4, + "KSUPER5", // SKINCOLOR_KSUPER5, + // Hyper Sonic Pink + "PSUPER1", // SKINCOLOR_PSUPER1, + "PSUPER2", // SKINCOLOR_PSUPER2, + "PSUPER3", // SKINCOLOR_PSUPER3, + "PSUPER4", // SKINCOLOR_PSUPER4, + "PSUPER5", // SKINCOLOR_PSUPER5, + // Hyper Sonic Blue + "BSUPER1", // SKINCOLOR_BSUPER1, + "BSUPER2", // SKINCOLOR_BSUPER2, + "BSUPER3", // SKINCOLOR_BSUPER3, + "BSUPER4", // SKINCOLOR_BSUPER4, + "BSUPER5" // SKINCOLOR_BSUPER5, + // Hyper Sonic Green + "GSUPER1", // SKINCOLOR_GSUPER1, + "GSUPER2", // SKINCOLOR_GSUPER2, + "GSUPER3", // SKINCOLOR_GSUPER3, + "GSUPER4", // SKINCOLOR_GSUPER4, + "GSUPER5", // SKINCOLOR_GSUPER5, + // Hyper Sonic White + "WSUPER1", // SKINCOLOR_WSUPER1, + "WSUPER2", // SKINCOLOR_WSUPER2, + "WSUPER3", // SKINCOLOR_WSUPER3, + "WSUPER4", // SKINCOLOR_WSUPER4, + "WSUPER5", // SKINCOLOR_WSUPER5, + // Creamy Super (Shadow?) + "CSUPER1", // SKINCOLOR_CSUPER1, + "CSUPER2", // SKINCOLOR_CSUPER2, + "CSUPER3", // SKINCOLOR_CSUPER3, + "CSUPER4", // SKINCOLOR_CSUPER4, + "CSUPER5", // SKINCOLOR_CSUPER5, + // Aqua Super + "ASUPER1", // SKINCOLOR_ASUPER1, + "ASUPER2", // SKINCOLOR_ASUPER2, + "ASUPER3", // SKINCOLOR_ASUPER3, + "ASUPER4", // SKINCOLOR_ASUPER4, + "ASUPER5" // SKINCOLOR_ASUPER5, }; static const char *const POWERS_LIST[] = { diff --git a/src/doomdef.h b/src/doomdef.h index ab863c6f..338bd7e6 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -319,26 +319,69 @@ typedef enum MAXSKINCOLORS, // Super special awesome Super flashing colors! + // Super Sonic Yellow SKINCOLOR_SUPER1 = MAXSKINCOLORS, SKINCOLOR_SUPER2, SKINCOLOR_SUPER3, SKINCOLOR_SUPER4, SKINCOLOR_SUPER5, - // Super Tails + // Super Tails Orange SKINCOLOR_TSUPER1, SKINCOLOR_TSUPER2, SKINCOLOR_TSUPER3, SKINCOLOR_TSUPER4, SKINCOLOR_TSUPER5, - // Super Knuckles + // Super Knuckles Red SKINCOLOR_KSUPER1, SKINCOLOR_KSUPER2, SKINCOLOR_KSUPER3, SKINCOLOR_KSUPER4, SKINCOLOR_KSUPER5, + // Hyper Sonic Pink + SKINCOLOR_PSUPER1, + SKINCOLOR_PSUPER2, + SKINCOLOR_PSUPER3, + SKINCOLOR_PSUPER4, + SKINCOLOR_PSUPER5, + + // Hyper Sonic Blue + SKINCOLOR_BSUPER1, + SKINCOLOR_BSUPER2, + SKINCOLOR_BSUPER3, + SKINCOLOR_BSUPER4, + SKINCOLOR_BSUPER5, + + // Hyper Sonic Green + SKINCOLOR_GSUPER1, + SKINCOLOR_GSUPER2, + SKINCOLOR_GSUPER3, + SKINCOLOR_GSUPER4, + SKINCOLOR_GSUPER5, + + // Hyper Sonic White + SKINCOLOR_WSUPER1, + SKINCOLOR_WSUPER2, + SKINCOLOR_WSUPER3, + SKINCOLOR_WSUPER4, + SKINCOLOR_WSUPER5, + + // Creamy Super (Shadow?) + SKINCOLOR_CSUPER1, + SKINCOLOR_CSUPER2, + SKINCOLOR_CSUPER3, + SKINCOLOR_CSUPER4, + SKINCOLOR_CSUPER5, + + // Aqua Super + SKINCOLOR_ASUPER1, + SKINCOLOR_ASUPER2, + SKINCOLOR_ASUPER3, + SKINCOLOR_ASUPER4, + SKINCOLOR_ASUPER5, + MAXTRANSLATIONS } skincolors_t; diff --git a/src/k_kart.c b/src/k_kart.c index ffa24abd..eb3a4fc1 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -178,7 +178,7 @@ const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] = SKINCOLOR_JAWZ,6 // 63 // SKINCOLOR_LILAC }; -UINT8 colortranslations[MAXSKINCOLORS][16] = { +UINT8 colortranslations[MAXTRANSLATIONS][16] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // SKINCOLOR_NONE {120, 120, 120, 120, 0, 2, 5, 8, 9, 11, 14, 17, 20, 22, 25, 28}, // SKINCOLOR_WHITE { 0, 1, 2, 3, 5, 7, 9, 12, 13, 15, 18, 20, 23, 25, 27, 30}, // SKINCOLOR_SILVER @@ -243,6 +243,53 @@ UINT8 colortranslations[MAXSKINCOLORS][16] = { {144, 248, 249, 250, 251, 252, 253, 254, 255, 255, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_BYZANTIUM {144, 145, 146, 147, 148, 149, 150, 251, 251, 252, 252, 253, 254, 255, 29, 30}, // SKINCOLOR_POMEGRANATE {120, 120, 120, 121, 121, 122, 122, 123, 192, 248, 249, 250, 251, 252, 253, 254}, // SKINCOLOR_LILAC + // MAXSKINCOLORS + {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 96, 100, 104, 113, 116, 119}, // SKINCOLOR_SUPER1 + {120, 120, 120, 120, 120, 120, 120, 120, 96, 98, 101, 104, 113, 115, 117, 119}, // SKINCOLOR_SUPER2 + {120, 120, 120, 120, 120, 120, 96, 98, 100, 102, 104, 113, 114, 116, 117, 119}, // SKINCOLOR_SUPER3 + {120, 120, 120, 120, 96, 97, 99, 100, 102, 104, 113, 114, 115, 116, 117, 119}, // SKINCOLOR_SUPER4 + {120, 120, 96, 120, 120, 120, 120, 120, 104, 113, 114, 115, 116, 117, 118, 119}, // SKINCOLOR_SUPER5 + {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 80, 82, 85, 115, 117, 119}, // SKINCOLOR_TSUPER1 + {120, 120, 120, 120, 120, 120, 120, 120, 80, 81, 83, 85, 115, 116, 117, 119}, // SKINCOLOR_TSUPER2 + {120, 120, 120, 120, 120, 120, 80, 81, 82, 83, 85, 115, 116, 117, 118, 119}, // SKINCOLOR_TSUPER3 + {120, 120, 120, 120, 80, 81, 82, 83, 84, 85, 115, 115, 116, 117, 118, 119}, // SKINCOLOR_TSUPER4 + {120, 120, 80, 80, 81, 82, 83, 84, 85, 115, 115, 116, 117, 117, 118, 119}, // SKINCOLOR_TSUPER5 + {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 121, 123, 125, 127, 129, 132}, // SKINCOLOR_KSUPER1 + {120, 120, 120, 120, 120, 120, 120, 120, 121, 122, 124, 125, 127, 128, 130, 132}, // SKINCOLOR_KSUPER2 + {120, 120, 120, 120, 120, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 132}, // SKINCOLOR_KSUPER3 + {120, 120, 120, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132}, // SKINCOLOR_KSUPER4 + {120, 120, 121, 121, 122, 123, 124, 125, 126, 126, 127, 128, 129, 130, 131, 132}, // SKINCOLOR_KSUPER5 + {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 0, 122, 124, 248, 251, 255}, // SKINCOLOR_PSUPER1 + {120, 120, 120, 120, 120, 120, 120, 120, 0, 121, 122, 124, 248, 250, 252, 255}, // SKINCOLOR_PSUPER2 + {120, 120, 120, 120, 120, 120, 0, 121, 122, 123, 124, 248, 249, 251, 253, 255}, // SKINCOLOR_PSUPER3 + {120, 120, 120, 120, 0, 121, 122, 123, 124, 248, 249, 250, 251, 252, 253, 255}, // SKINCOLOR_PSUPER4 + {120, 120, 0, 121, 122, 123, 124, 248, 248, 249, 250, 251, 252, 253, 254, 255}, // SKINCOLOR_PSUPER5 + {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 224, 225, 227, 228, 230, 232}, // SKINCOLOR_BSUPER1 + {120, 120, 120, 120, 120, 120, 120, 120, 224, 225, 226, 227, 228, 229, 230, 232}, // SKINCOLOR_BSUPER2 + {120, 120, 120, 120, 120, 120, 224, 224, 225, 226, 227, 228, 229, 230, 231, 232}, // SKINCOLOR_BSUPER3 + {120, 120, 120, 120, 224, 224, 225, 226, 226, 227, 228, 229, 229, 230, 231, 232}, // SKINCOLOR_BSUPER4 + {120, 120, 224, 224, 225, 225, 226, 227, 227, 228, 228, 229, 230, 230, 231, 232}, // SKINCOLOR_BSUPER5 + {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 176, 160, 163, 167, 171, 175}, // SKINCOLOR_GSUPER1 + {120, 120, 120, 120, 120, 120, 120, 120, 176, 176, 160, 163, 166, 169, 172, 175}, // SKINCOLOR_GSUPER2 + {120, 120, 120, 120, 120, 120, 176, 176, 160, 162, 164, 166, 168, 170, 172, 175}, // SKINCOLOR_GSUPER3 + {120, 120, 120, 120, 176, 176, 176, 160, 161, 163, 165, 167, 169, 171, 173, 175}, // SKINCOLOR_GSUPER4 + {120, 120, 176, 176, 176, 160, 161, 163, 164, 166, 167, 169, 170, 172, 173, 175}, // SKINCOLOR_GSUPER5 + {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120}, // SKINCOLOR_WSUPER1 + {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 0, 4, 9}, // SKINCOLOR_WSUPER2 + {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 0, 2, 4, 6, 8, 11}, // SKINCOLOR_WSUPER3 + {120, 120, 120, 120, 120, 120, 120, 0, 1, 3, 4, 6, 8, 9, 11, 13}, // SKINCOLOR_WSUPER4 + {120, 120, 120, 120, 0, 1, 2, 4, 5, 6, 8, 9, 10, 12, 13, 15}, // SKINCOLOR_WSUPER5 + {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 96, 98, 99, 81, 73, 79}, // SKINCOLOR_CSUPER1 + {120, 120, 120, 120, 120, 120, 120, 120, 96, 97, 98, 81, 81, 71, 75, 79}, // SKINCOLOR_CSUPER2 + {120, 120, 120, 120, 120, 120, 96, 97, 98, 99, 81, 81, 70, 73, 76, 79}, // SKINCOLOR_CSUPER3 + {120, 120, 120, 120, 96, 96, 97, 98, 99, 81, 81, 70, 72, 74, 76, 79}, // SKINCOLOR_CSUPER4 + {120, 120, 96, 96, 97, 98, 98, 99, 81, 81, 69, 71, 73, 75, 77, 79}, // SKINCOLOR_CSUPER5 + {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 208, 210, 212, 215, 220, 222}, // SKINCOLOR_ASUPER1 + {120, 120, 120, 120, 120, 120, 120, 120, 208, 209, 211, 213, 215, 220, 221, 223}, // SKINCOLOR_ASUPER2 + {120, 120, 120, 120, 120, 120, 208, 209, 210, 211, 212, 213, 215, 220, 221, 223}, // SKINCOLOR_ASUPER3 + {120, 120, 120, 120, 208, 209, 210, 211, 212, 213, 214, 215, 220, 221, 222, 223}, // SKINCOLOR_ASUPER4 + {120, 120, 208, 208, 209, 210, 211, 211, 212, 213, 214, 215, 220, 221, 222, 223}, // SKINCOLOR_ASUPER5 + // MAXTRANSLATIONS }; // Define for getting accurate color brightness readings according to how the human eye sees them. diff --git a/src/k_kart.h b/src/k_kart.h index dc37956a..e193b662 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -11,7 +11,7 @@ #define KART_FULLTURN 800 -UINT8 colortranslations[MAXSKINCOLORS][16]; +UINT8 colortranslations[MAXTRANSLATIONS][16]; extern const char *KartColor_Names[MAXSKINCOLORS]; extern const UINT8 KartColor_Opposite[MAXSKINCOLORS*2]; void K_RainbowColormap(UINT8 *dest_colormap, UINT8 skincolor); From 1d3adb04911702f13b0a89d101b589d5ef2cf9d3 Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Tue, 26 Feb 2019 17:33:10 -0500 Subject: [PATCH 45/62] Remove mixed declaration that triggers ERRORMODE on my setup --- src/d_clisrv.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 6eda1445..e8700cd0 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -5096,9 +5096,10 @@ static inline void PingUpdate(void) pingtimeout[i]++; if (pingtimeout[i] > cv_pingtimeout.value) // ok your net has been bad for too long, you deserve to die. { - pingtimeout[i] = 0; XBOXSTATIC char buf[2]; + pingtimeout[i] = 0; + buf[0] = (char)i; buf[1] = KICK_MSG_PING_HIGH; SendNetXCmd(XD_KICK, &buf, 2); From 22434949e52afd5cf0c87a1622426974668d2e35 Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Tue, 26 Feb 2019 17:44:35 -0500 Subject: [PATCH 46/62] Extend pingtable by 1 for the servermaxping entry --- src/d_clisrv.c | 6 +++--- src/d_clisrv.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index e8700cd0..f8938d6c 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -4400,12 +4400,12 @@ FILESTAMP //Update client ping table from the server. if (client) { - INT32 i; + UINT8 i; for (i = 0; i < MAXPLAYERS; i++) if (playeringame[i]) playerpingtable[i] = (tic_t)netbuffer->u.pingtable[i]; - servermaxping = (tic_t)netbuffer->u.pingtable[i++]; + servermaxping = (tic_t)netbuffer->u.pingtable[MAXPLAYERS]; } break; @@ -5122,7 +5122,7 @@ static inline void PingUpdate(void) } // send the server's maxping as last element of our ping table. This is useful to let us know when we're about to get kicked. - netbuffer->u.pingtable[i++] = cv_maxping.value; + netbuffer->u.pingtable[MAXPLAYERS] = cv_maxping.value; //send out our ping packets for (i = 0; i < MAXNETNODES; i++) diff --git a/src/d_clisrv.h b/src/d_clisrv.h index 21fe7c38..6615d67d 100644 --- a/src/d_clisrv.h +++ b/src/d_clisrv.h @@ -452,10 +452,10 @@ typedef struct serverrefuse_pak serverrefuse; // 65025 bytes (somehow I feel like those values are garbage...) askinfo_pak askinfo; // 61 bytes msaskinfo_pak msaskinfo; // 22 bytes - plrinfo playerinfo[MAXPLAYERS]; // 1152 bytes (I'd say 36~38) - plrconfig playerconfig[MAXPLAYERS]; // (up to) 896 bytes (welp they ARE) + plrinfo playerinfo[MAXPLAYERS]; // 576 bytes(?) + plrconfig playerconfig[MAXPLAYERS]; // (up to) 528 bytes(?) #ifdef NEWPING - UINT32 pingtable[MAXPLAYERS]; // 128 bytes + UINT32 pingtable[MAXPLAYERS+1]; // 68 bytes #endif } u; // This is needed to pack diff packet types data together } ATTRPACK doomdata_t; From 44462d0dd747fa0e03c41f8fd657448274a1a9e7 Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Wed, 27 Feb 2019 00:08:13 -0500 Subject: [PATCH 47/62] 10 new colors new Crimson (old Crimson was renamed to Scarlet), new Peach (the replacement from last commit was renamed to Cream), Cherry, Nova, Copper, Handheld, Algae, Pastel, Fuchsia, and Toxic. Also, updated Robo-Hood. --- src/dehacked.c | 138 ++++++++++++----------- src/doomdef.h | 10 ++ src/hu_stuff.c | 6 +- src/k_kart.c | 294 +++++++++++++++++++++++++++---------------------- 4 files changed, 249 insertions(+), 199 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index d346de5f..7795f1f5 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -8134,70 +8134,80 @@ static const char *const ML_LIST[16] = { // This DOES differ from r_draw's Color_Names, unfortunately. // Also includes Super colors static const char *COLOR_ENUMS[] = { // Rejigged for Kart. - "NONE", // 00 // SKINCOLOR_NONE - "WHITE", // 01 // SKINCOLOR_WHITE - "SILVER", // 02 // SKINCOLOR_SILVER - "GREY", // 03 // SKINCOLOR_GREY - "NICKEL", // 04 // SKINCOLOR_NICKEL - "BLACK", // 05 // SKINCOLOR_BLACK - "SEPIA", // 06 // SKINCOLOR_SEPIA - "BEIGE", // 07 // SKINCOLOR_BEIGE - "BROWN", // 08 // SKINCOLOR_BROWN - "LEATHER", // 09 // SKINCOLOR_LEATHER - "SALMON", // 10 // SKINCOLOR_SALMON - "PINK", // 11 // SKINCOLOR_PINK - "ROSE", // 12 // SKINCOLOR_ROSE - "RUBY", // 13 // SKINCOLOR_RUBY - "RASPBERRY", // 14 // SKINCOLOR_RASPBERRY - "RED", // 15 // SKINCOLOR_RED - "CRIMSON", // 16 // SKINCOLOR_CRIMSON - "KETCHUP", // 17 // SKINCOLOR_KETCHUP - "DAWN", // 18 // SKINCOLOR_DAWN - "CREAMSICLE", // 19 // SKINCOLOR_CREAMSICLE - "ORANGE", // 20 // SKINCOLOR_ORANGE - "PUMPKIN", // 21 // SKINCOLOR_PUMPKIN - "ROSEWOOD", // 22 // SKINCOLOR_ROSEWOOD - "BURGUNDY", // 23 // SKINCOLOR_BURGUNDY - "TANGERINE", // 24 // SKINCOLOR_TANGERINE - "PEACH", // 25 // SKINCOLOR_PEACH - "CARAMEL", // 26 // SKINCOLOR_CARAMEL - "GOLD", // 27 // SKINCOLOR_GOLD - "BRONZE", // 28 // SKINCOLOR_BRONZE - "YELLOW", // 29 // SKINCOLOR_YELLOW - "MUSTARD", // 30 // SKINCOLOR_MUSTARD - "OLIVE", // 31 // SKINCOLOR_OLIVE - "VOMIT", // 32 // SKINCOLOR_VOMIT - "GARDEN", // 33 // SKINCOLOR_GARDEN - "LIME", // 34 // SKINCOLOR_LIME - "TEA", // 35 // SKINCOLOR_TEA - "PISTACHIO", // 36 // SKINCOLOR_PISTACHIO - "ROBOHOOD", // 37 // SKINCOLOR_ROBOHOOD - "MOSS", // 38 // SKINCOLOR_MOSS - "MINT", // 39 // SKINCOLOR_MINT - "GREEN", // 40 // SKINCOLOR_GREEN - "PINETREE", // 41 // SKINCOLOR_PINETREE - "EMERALD", // 42 // SKINCOLOR_EMERALD - "SWAMP", // 43 // SKINCOLOR_SWAMP - "DREAM", // 44 // SKINCOLOR_DREAM - "AQUA", // 45 // SKINCOLOR_AQUA - "TEAL", // 46 // SKINCOLOR_TEAL - "CYAN", // 47 // SKINCOLOR_CYAN - "JAWZ", // 48 // SKINCOLOR_JAWZ - "CERULEAN", // 49 // SKINCOLOR_CERULEAN - "NAVY", // 50 // SKINCOLOR_NAVY - "SLATE", // 51 // SKINCOLOR_SLATE - "STEEL", // 52 // SKINCOLOR_STEEL - "JET", // 53 // SKINCOLOR_JET - "SAPPHIRE", // 54 // SKINCOLOR_SAPPHIRE - "PERIWINKLE", // 55 // SKINCOLOR_PERIWINKLE - "BLUE", // 56 // SKINCOLOR_BLUE - "BLUEBERRY", // 57 // SKINCOLOR_BLUEBERRY - "DUSK", // 58 // SKINCOLOR_DUSK - "PURPLE", // 59 // SKINCOLOR_PURPLE - "LAVENDER", // 60 // SKINCOLOR_LAVENDER - "BYZANTIUM", // 61 // SKINCOLOR_BYZANTIUM - "POMEGRANATE", // 62 // SKINCOLOR_POMEGRANATE - "LILAC", // 63 // SKINCOLOR_LILAC + "NONE", // SKINCOLOR_NONE + "WHITE", // SKINCOLOR_WHITE + "SILVER", // SKINCOLOR_SILVER + "GREY", // SKINCOLOR_GREY + "NICKEL", // SKINCOLOR_NICKEL + "BLACK", // SKINCOLOR_BLACK + "SEPIA", // SKINCOLOR_SEPIA + "BEIGE", // SKINCOLOR_BEIGE + "BROWN", // SKINCOLOR_BROWN + "LEATHER", // SKINCOLOR_LEATHER + "SALMON", // SKINCOLOR_SALMON + "PINK", // SKINCOLOR_PINK + "ROSE", // SKINCOLOR_ROSE + "RUBY", // SKINCOLOR_RUBY + "RASPBERRY", // SKINCOLOR_RASPBERRY + "CHERRY", // SKINCOLOR_CHERRY + "RED", // SKINCOLOR_RED + "SCARLET", // SKINCOLOR_SCARLET + "CRIMSON", // SKINCOLOR_CRIMSON + "NOVA", // SKINCOLOR_NOVA + "KETCHUP", // SKINCOLOR_KETCHUP + "DAWN", // SKINCOLOR_DAWN + "CREAMSICLE", // SKINCOLOR_CREAMSICLE + "ORANGE", // SKINCOLOR_ORANGE + "PUMPKIN", // SKINCOLOR_PUMPKIN + "ROSEWOOD", // SKINCOLOR_ROSEWOOD + "BURGUNDY", // SKINCOLOR_BURGUNDY + "TANGERINE", // SKINCOLOR_TANGERINE + "PEACH", // SKINCOLOR_PEACH + "CARAMEL", // SKINCOLOR_CARAMEL + "CREAM", // SKINCOLOR_CREAM + "GOLD", // SKINCOLOR_GOLD + "BRONZE", // SKINCOLOR_BRONZE + "COPPER", // SKINCOLOR_COPPER + "YELLOW", // SKINCOLOR_YELLOW + "MUSTARD", // SKINCOLOR_MUSTARD + "OLIVE", // SKINCOLOR_OLIVE + "VOMIT", // SKINCOLOR_VOMIT + "GARDEN", // SKINCOLOR_GARDEN + "LIME", // SKINCOLOR_LIME + "HANDHELD", // SKINCOLOR_HANDHELD + "TEA", // SKINCOLOR_TEA + "PISTACHIO", // SKINCOLOR_PISTACHIO + "ROBOHOOD", // SKINCOLOR_ROBOHOOD + "MOSS", // SKINCOLOR_MOSS + "MINT", // SKINCOLOR_MINT + "GREEN", // SKINCOLOR_GREEN + "PINETREE", // SKINCOLOR_PINETREE + "EMERALD", // SKINCOLOR_EMERALD + "SWAMP", // SKINCOLOR_SWAMP + "DREAM", // SKINCOLOR_DREAM + "ALGAE", // SKINCOLOR_ALGAE + "AQUA", // SKINCOLOR_AQUA + "TEAL", // SKINCOLOR_TEAL + "CYAN", // SKINCOLOR_CYAN + "JAWZ", // SKINCOLOR_JAWZ + "CERULEAN", // SKINCOLOR_CERULEAN + "NAVY", // SKINCOLOR_NAVY + "SLATE", // SKINCOLOR_SLATE + "STEEL", // SKINCOLOR_STEEL + "JET", // SKINCOLOR_JET + "SAPPHIRE", // SKINCOLOR_SAPPHIRE + "PERIWINKLE", // SKINCOLOR_PERIWINKLE + "BLUE", // SKINCOLOR_BLUE + "BLUEBERRY", // SKINCOLOR_BLUEBERRY + "PASTEL", // SKINCOLOR_PASTEL + "DUSK", // SKINCOLOR_DUSK + "PURPLE", // SKINCOLOR_PURPLE + "FUCHSIA", // SKINCOLOR_FUCHSIA + "TOXIC", // SKINCOLOR_TOXIC + "LAVENDER", // SKINCOLOR_LAVENDER + "BYZANTIUM", // SKINCOLOR_BYZANTIUM + "POMEGRANATE", // SKINCOLOR_POMEGRANATE + "LILAC", // SKINCOLOR_LILAC // Special super colors // Super Sonic Yellow diff --git a/src/doomdef.h b/src/doomdef.h index 338bd7e6..7fc92f48 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -265,8 +265,11 @@ typedef enum SKINCOLOR_ROSE, SKINCOLOR_RUBY, SKINCOLOR_RASPBERRY, + SKINCOLOR_CHERRY, SKINCOLOR_RED, + SKINCOLOR_SCARLET, SKINCOLOR_CRIMSON, + SKINCOLOR_NOVA, SKINCOLOR_KETCHUP, SKINCOLOR_DAWN, SKINCOLOR_CREAMSICLE, @@ -277,14 +280,17 @@ typedef enum SKINCOLOR_TANGERINE, SKINCOLOR_PEACH, SKINCOLOR_CARAMEL, + SKINCOLOR_CREAM, SKINCOLOR_GOLD, SKINCOLOR_BRONZE, + SKINCOLOR_COPPER, SKINCOLOR_YELLOW, SKINCOLOR_MUSTARD, SKINCOLOR_OLIVE, SKINCOLOR_VOMIT, SKINCOLOR_GARDEN, SKINCOLOR_LIME, + SKINCOLOR_HANDHELD, SKINCOLOR_TEA, SKINCOLOR_PISTACHIO, SKINCOLOR_ROBOHOOD, @@ -295,6 +301,7 @@ typedef enum SKINCOLOR_EMERALD, SKINCOLOR_SWAMP, SKINCOLOR_DREAM, + SKINCOLOR_ALGAE, SKINCOLOR_AQUA, SKINCOLOR_TEAL, SKINCOLOR_CYAN, @@ -308,8 +315,11 @@ typedef enum SKINCOLOR_PERIWINKLE, SKINCOLOR_BLUE, SKINCOLOR_BLUEBERRY, + SKINCOLOR_PASTEL, SKINCOLOR_DUSK, SKINCOLOR_PURPLE, + SKINCOLOR_FUCHSIA, + SKINCOLOR_TOXIC, SKINCOLOR_LAVENDER, SKINCOLOR_BYZANTIUM, SKINCOLOR_POMEGRANATE, diff --git a/src/hu_stuff.c b/src/hu_stuff.c index a9aa7c56..94cca970 100644 --- a/src/hu_stuff.c +++ b/src/hu_stuff.c @@ -795,15 +795,15 @@ static void Got_Saycmd(UINT8 **p, INT32 playernum) cstart = "\x85"; // V_REDMAP else if (color <= SKINCOLOR_TANGERINE) cstart = "\x87"; // V_ORANGEMAP - else if (color <= SKINCOLOR_CARAMEL) + else if (color <= SKINCOLOR_CREAM) cstart = "\x8f"; // V_PEACHMAP - else if (color <= SKINCOLOR_BRONZE) + else if (color <= SKINCOLOR_COPPER) cstart = "\x8A"; // V_GOLDMAP else if (color <= SKINCOLOR_OLIVE) cstart = "\x82"; // V_YELLOWMAP else if (color <= SKINCOLOR_PISTACHIO) cstart = "\x8b"; // V_TEAMAP - else if (color <= SKINCOLOR_DREAM || color == SKINCOLOR_LIME) + else if (color <= SKINCOLOR_ALGAE || color == SKINCOLOR_LIME || color == SKINCOLOR_HANDHELD) cstart = "\x83"; // V_GREENMAP else if (color <= SKINCOLOR_NAVY || color == SKINCOLOR_SAPPHIRE) cstart = "\x88"; // V_SKYMAP diff --git a/src/k_kart.c b/src/k_kart.c index eb3a4fc1..17db15e6 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -43,139 +43,159 @@ // These should be within 14 characters to fit on the character select screen const char *KartColor_Names[MAXSKINCOLORS] = { - "None", // 00 // SKINCOLOR_NONE - "White", // 01 // SKINCOLOR_WHITE - "Silver", // 02 // SKINCOLOR_SILVER - "Grey", // 03 // SKINCOLOR_GREY - "Nickel", // 04 // SKINCOLOR_NICKEL - "Black", // 05 // SKINCOLOR_BLACK - "Sepia", // 06 // SKINCOLOR_SEPIA - "Beige", // 07 // SKINCOLOR_BEIGE - "Brown", // 08 // SKINCOLOR_BROWN - "Leather", // 09 // SKINCOLOR_LEATHER - "Salmon", // 10 // SKINCOLOR_SALMON - "Pink", // 11 // SKINCOLOR_PINK - "Rose", // 12 // SKINCOLOR_ROSE - "Ruby", // 13 // SKINCOLOR_RUBY - "Raspberry", // 14 // SKINCOLOR_RASPBERRY - "Red", // 15 // SKINCOLOR_RED - "Crimson", // 16 // SKINCOLOR_CRIMSON - "Ketchup", // 17 // SKINCOLOR_KETCHUP - "Dawn", // 18 // SKINCOLOR_DAWN - "Creamsicle", // 19 // SKINCOLOR_CREAMSICLE - "Orange", // 20 // SKINCOLOR_ORANGE - "Pumpkin", // 21 // SKINCOLOR_PUMPKIN - "Rosewood", // 22 // SKINCOLOR_ROSEWOOD - "Burgundy", // 23 // SKINCOLOR_BURGUNDY - "Tangerine", // 24 // SKINCOLOR_TANGERINE - "Peach", // 25 // SKINCOLOR_PEACH - "Caramel", // 26 // SKINCOLOR_CARAMEL - "Gold", // 27 // SKINCOLOR_GOLD - "Bronze", // 28 // SKINCOLOR_BRONZE - "Yellow", // 29 // SKINCOLOR_YELLOW - "Mustard", // 30 // SKINCOLOR_MUSTARD - "Olive", // 31 // SKINCOLOR_OLIVE - "Vomit", // 32 // SKINCOLOR_VOMIT - "Garden", // 33 // SKINCOLOR_GARDEN - "Lime", // 34 // SKINCOLOR_LIME - "Tea", // 35 // SKINCOLOR_TEA - "Pistachio", // 36 // SKINCOLOR_PISTACHIO - "Robo-Hood", // 37 // SKINCOLOR_ROBOHOOD - "Moss", // 38 // SKINCOLOR_MOSS - "Mint", // 39 // SKINCOLOR_MINT - "Green", // 40 // SKINCOLOR_GREEN - "Pinetree", // 41 // SKINCOLOR_PINETREE - "Emerald", // 42 // SKINCOLOR_EMERALD - "Swamp", // 43 // SKINCOLOR_SWAMP - "Dream", // 44 // SKINCOLOR_DREAM - "Aqua", // 45 // SKINCOLOR_AQUA - "Teal", // 46 // SKINCOLOR_TEAL - "Cyan", // 47 // SKINCOLOR_CYAN - "Jawz", // 48 // SKINCOLOR_JAWZ - "Cerulean", // 49 // SKINCOLOR_CERULEAN - "Navy", // 50 // SKINCOLOR_NAVY - "Slate", // 51 // SKINCOLOR_SLATE - "Steel", // 52 // SKINCOLOR_STEEL - "Jet", // 53 // SKINCOLOR_JET - "Sapphire", // 54 // SKINCOLOR_SAPPHIRE - "Periwinkle", // 55 // SKINCOLOR_PERIWINKLE - "Blue", // 56 // SKINCOLOR_BLUE - "Blueberry", // 57 // SKINCOLOR_BLUEBERRY - "Dusk", // 58 // SKINCOLOR_DUSK - "Purple", // 59 // SKINCOLOR_PURPLE - "Lavender", // 60 // SKINCOLOR_LAVENDER - "Byzantium", // 61 // SKINCOLOR_BYZANTIUM - "Pomegranate", // 62 // SKINCOLOR_POMEGRANATE - "Lilac" // 63 // SKINCOLOR_LILAC + "None", // SKINCOLOR_NONE + "White", // SKINCOLOR_WHITE + "Silver", // SKINCOLOR_SILVER + "Grey", // SKINCOLOR_GREY + "Nickel", // SKINCOLOR_NICKEL + "Black", // SKINCOLOR_BLACK + "Sepia", // SKINCOLOR_SEPIA + "Beige", // SKINCOLOR_BEIGE + "Brown", // SKINCOLOR_BROWN + "Leather", // SKINCOLOR_LEATHER + "Salmon", // SKINCOLOR_SALMON + "Pink", // SKINCOLOR_PINK + "Rose", // SKINCOLOR_ROSE + "Ruby", // SKINCOLOR_RUBY + "Raspberry", // SKINCOLOR_RASPBERRY + "Cherry", // SKINCOLOR_CHERRY + "Red", // SKINCOLOR_RED + "Scarlet", // SKINCOLOR_SCARLET + "Crimson", // SKINCOLOR_CRIMSON + "Nova", // SKINCOLOR_NOVA + "Ketchup", // SKINCOLOR_KETCHUP + "Dawn", // SKINCOLOR_DAWN + "Creamsicle", // SKINCOLOR_CREAMSICLE + "Orange", // SKINCOLOR_ORANGE + "Pumpkin", // SKINCOLOR_PUMPKIN + "Rosewood", // SKINCOLOR_ROSEWOOD + "Burgundy", // SKINCOLOR_BURGUNDY + "Tangerine", // SKINCOLOR_TANGERINE + "Peach", // SKINCOLOR_PEACH + "Caramel", // SKINCOLOR_CARAMEL + "Cream", // SKINCOLOR_CREAM + "Gold", // SKINCOLOR_GOLD + "Bronze", // SKINCOLOR_BRONZE + "Copper", // SKINCOLOR_COPPER + "Yellow", // SKINCOLOR_YELLOW + "Mustard", // SKINCOLOR_MUSTARD + "Olive", // SKINCOLOR_OLIVE + "Vomit", // SKINCOLOR_VOMIT + "Garden", // SKINCOLOR_GARDEN + "Lime", // SKINCOLOR_LIME + "Handheld", // SKINCOLOR_HANDHELD + "Tea", // SKINCOLOR_TEA + "Pistachio", // SKINCOLOR_PISTACHIO + "Robo-Hood", // SKINCOLOR_ROBOHOOD + "Moss", // SKINCOLOR_MOSS + "Mint", // SKINCOLOR_MINT + "Green", // SKINCOLOR_GREEN + "Pinetree", // SKINCOLOR_PINETREE + "Emerald", // SKINCOLOR_EMERALD + "Swamp", // SKINCOLOR_SWAMP + "Dream", // SKINCOLOR_DREAM + "Algae", // SKINCOLOR_ALGAE + "Aqua", // SKINCOLOR_AQUA + "Teal", // SKINCOLOR_TEAL + "Cyan", // SKINCOLOR_CYAN + "Jawz", // SKINCOLOR_JAWZ + "Cerulean", // SKINCOLOR_CERULEAN + "Navy", // SKINCOLOR_NAVY + "Slate", // SKINCOLOR_SLATE + "Steel", // SKINCOLOR_STEEL + "Jet", // SKINCOLOR_JET + "Sapphire", // SKINCOLOR_SAPPHIRE + "Periwinkle", // SKINCOLOR_PERIWINKLE + "Blue", // SKINCOLOR_BLUE + "Blueberry", // SKINCOLOR_BLUEBERRY + "Pastel", // SKINCOLOR_PASTEL + "Dusk", // SKINCOLOR_DUSK + "Purple", // SKINCOLOR_PURPLE + "Fuchsia", // SKINCOLOR_FUCHSIA + "Toxic", // SKINCOLOR_TOXIC + "Lavender", // SKINCOLOR_LAVENDER + "Byzantium", // SKINCOLOR_BYZANTIUM + "Pomegranate", // SKINCOLOR_POMEGRANATE + "Lilac" // SKINCOLOR_LILAC }; // Color_Opposite replacement; frame setting has not been changed from 8 for most, should be done later const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] = { - SKINCOLOR_NONE,8, // 00 // SKINCOLOR_NONE - SKINCOLOR_BLACK,8, // 01 // SKINCOLOR_WHITE - SKINCOLOR_NICKEL,8, // 02 // SKINCOLOR_SILVER - SKINCOLOR_GREY,8, // 03 // SKINCOLOR_GREY - SKINCOLOR_SILVER,8, // 04 // SKINCOLOR_NICKEL - SKINCOLOR_WHITE,8, // 05 // SKINCOLOR_BLACK - SKINCOLOR_LEATHER,6, // 06 // SKINCOLOR_SEPIA - SKINCOLOR_BROWN,2, // 07 // SKINCOLOR_BEIGE - SKINCOLOR_BEIGE,8, // 08 // SKINCOLOR_BROWN - SKINCOLOR_SEPIA,8, // 09 // SKINCOLOR_LEATHER - SKINCOLOR_TEA,8, // 10 // SKINCOLOR_SALMON - SKINCOLOR_PISTACHIO,8, // 11 // SKINCOLOR_PINK - SKINCOLOR_MOSS,8, // 12 // SKINCOLOR_ROSE - SKINCOLOR_SAPPHIRE,8, // 13 // SKINCOLOR_RUBY - SKINCOLOR_MINT,8, // 14 // SKINCOLOR_RASPBERRY - SKINCOLOR_GREEN,6, // 15 // SKINCOLOR_RED - SKINCOLOR_PINETREE,6, // 16 // SKINCOLOR_CRIMSON - SKINCOLOR_MUSTARD,10, // 17 // SKINCOLOR_KETCHUP - SKINCOLOR_DUSK,8, // 18 // SKINCOLOR_DAWN - SKINCOLOR_PERIWINKLE,8, // 19 // SKINCOLOR_CREAMSICLE - SKINCOLOR_BLUE,8, // 20 // SKINCOLOR_ORANGE - SKINCOLOR_BLUEBERRY,8, // 21 // SKINCOLOR_PUMPKIN - SKINCOLOR_NAVY,6, // 22 // SKINCOLOR_ROSEWOOD - SKINCOLOR_JET,8, // 23 // SKINCOLOR_BURGUNDY - SKINCOLOR_LIME,8, // 24 // SKINCOLOR_TANGERINE - SKINCOLOR_CYAN,8, // 25 // SKINCOLOR_PEACH - SKINCOLOR_CERULEAN,8, // 26 // SKINCOLOR_CARAMEL - SKINCOLOR_SLATE,8, // 27 // SKINCOLOR_GOLD - SKINCOLOR_STEEL,8, // 28 // SKINCOLOR_BRONZE - SKINCOLOR_AQUA,8, // 29 // SKINCOLOR_YELLOW - SKINCOLOR_KETCHUP,8, // 30 // SKINCOLOR_MUSTARD - SKINCOLOR_TEAL,8, // 31 // SKINCOLOR_OLIVE - SKINCOLOR_ROBOHOOD,8, // 32 // SKINCOLOR_VOMIT - SKINCOLOR_LAVENDER,6, // 33 // SKINCOLOR_GARDEN - SKINCOLOR_TANGERINE,8, // 34 // SKINCOLOR_LIME - SKINCOLOR_SALMON,8, // 35 // SKINCOLOR_TEA - SKINCOLOR_PINK,6, // 36 // SKINCOLOR_PISTACHIO - SKINCOLOR_VOMIT,8, // 37 // SKINCOLOR_ROBOHOOD - SKINCOLOR_ROSE,8, // 38 // SKINCOLOR_MOSS - SKINCOLOR_RASPBERRY,8, // 39 // SKINCOLOR_MINT - SKINCOLOR_RED,8, // 40 // SKINCOLOR_GREEN - SKINCOLOR_CRIMSON,8, // 41 // SKINCOLOR_PINETREE - SKINCOLOR_PURPLE,8, // 42 // SKINCOLOR_EMERALD - SKINCOLOR_BYZANTIUM,8, // 43 // SKINCOLOR_SWAMP - SKINCOLOR_POMEGRANATE,8, // 44 // SKINCOLOR_DREAM - SKINCOLOR_YELLOW,8, // 45 // SKINCOLOR_AQUA - SKINCOLOR_OLIVE,8, // 46 // SKINCOLOR_TEAL - SKINCOLOR_PEACH,8, // 47 // SKINCOLOR_CYAN - SKINCOLOR_LILAC,10, // 48 // SKINCOLOR_JAWZ - SKINCOLOR_CARAMEL,8, // 49 // SKINCOLOR_CERULEAN - SKINCOLOR_ROSEWOOD,8, // 50 // SKINCOLOR_NAVY - SKINCOLOR_GOLD,10, // 51 // SKINCOLOR_SLATE - SKINCOLOR_BRONZE,10, // 52 // SKINCOLOR_STEEL - SKINCOLOR_BURGUNDY,8, // 53 // SKINCOLOR_JET - SKINCOLOR_RUBY,6, // 54 // SKINCOLOR_SAPPHIRE - SKINCOLOR_CREAMSICLE,8, // 55 // SKINCOLOR_PERIWINKLE - SKINCOLOR_ORANGE,8, // 56 // SKINCOLOR_BLUE - SKINCOLOR_PUMPKIN,8, // 57 // SKINCOLOR_BLUEBERRY - SKINCOLOR_DAWN,6, // 58 // SKINCOLOR_DUSK - SKINCOLOR_EMERALD,8, // 59 // SKINCOLOR_PURPLE - SKINCOLOR_GARDEN,6, // 60 // SKINCOLOR_LAVENDER - SKINCOLOR_SWAMP,8, // 61 // SKINCOLOR_BYZANTIUM - SKINCOLOR_DREAM,8, // 62 // SKINCOLOR_POMEGRANATE - SKINCOLOR_JAWZ,6 // 63 // SKINCOLOR_LILAC + SKINCOLOR_NONE,8, // SKINCOLOR_NONE + SKINCOLOR_BLACK,8, // SKINCOLOR_WHITE + SKINCOLOR_NICKEL,8, // SKINCOLOR_SILVER + SKINCOLOR_GREY,8, // SKINCOLOR_GREY + SKINCOLOR_SILVER,8, // SKINCOLOR_NICKEL + SKINCOLOR_WHITE,8, // SKINCOLOR_BLACK + SKINCOLOR_LEATHER,6, // SKINCOLOR_SEPIA + SKINCOLOR_BROWN,2, // SKINCOLOR_BEIGE + SKINCOLOR_BEIGE,8, // SKINCOLOR_BROWN + SKINCOLOR_SEPIA,8, // SKINCOLOR_LEATHER + SKINCOLOR_TEA,8, // SKINCOLOR_SALMON + SKINCOLOR_PISTACHIO,8, // SKINCOLOR_PINK + SKINCOLOR_MOSS,8, // SKINCOLOR_ROSE + SKINCOLOR_SAPPHIRE,8, // SKINCOLOR_RUBY + SKINCOLOR_MINT,8, // SKINCOLOR_RASPBERRY + SKINCOLOR_HANDHELD,10, // SKINCOLOR_CHERRY + SKINCOLOR_GREEN,6, // SKINCOLOR_RED + SKINCOLOR_PINETREE,6, // SKINCOLOR_SCARLET + SKINCOLOR_TOXIC,8, // SKINCOLOR_CRIMSON + SKINCOLOR_ALGAE,10, // SKINCOLOR_NOVA + SKINCOLOR_MUSTARD,10, // SKINCOLOR_KETCHUP + SKINCOLOR_DUSK,8, // SKINCOLOR_DAWN + SKINCOLOR_PERIWINKLE,8, // SKINCOLOR_CREAMSICLE + SKINCOLOR_BLUE,8, // SKINCOLOR_ORANGE + SKINCOLOR_BLUEBERRY,8, // SKINCOLOR_PUMPKIN + SKINCOLOR_NAVY,6, // SKINCOLOR_ROSEWOOD + SKINCOLOR_JET,8, // SKINCOLOR_BURGUNDY + SKINCOLOR_LIME,8, // SKINCOLOR_TANGERINE + SKINCOLOR_CYAN,8, // SKINCOLOR_PEACH + SKINCOLOR_CERULEAN,8, // SKINCOLOR_CARAMEL + SKINCOLOR_COPPER,10, // SKINCOLOR_CREAM + SKINCOLOR_SLATE,8, // SKINCOLOR_GOLD + SKINCOLOR_STEEL,8, // SKINCOLOR_BRONZE + SKINCOLOR_CREAM,6, // SKINCOLOR_COPPER + SKINCOLOR_AQUA,8, // SKINCOLOR_YELLOW + SKINCOLOR_KETCHUP,8, // SKINCOLOR_MUSTARD + SKINCOLOR_TEAL,8, // SKINCOLOR_OLIVE + SKINCOLOR_ROBOHOOD,8, // SKINCOLOR_VOMIT + SKINCOLOR_LAVENDER,6, // SKINCOLOR_GARDEN + SKINCOLOR_TANGERINE,8, // SKINCOLOR_LIME + SKINCOLOR_CHERRY,8, // SKINCOLOR_HANDHELD + SKINCOLOR_SALMON,8, // SKINCOLOR_TEA + SKINCOLOR_PINK,6, // SKINCOLOR_PISTACHIO + SKINCOLOR_VOMIT,8, // SKINCOLOR_ROBOHOOD + SKINCOLOR_ROSE,8, // SKINCOLOR_MOSS + SKINCOLOR_RASPBERRY,8, // SKINCOLOR_MINT + SKINCOLOR_RED,8, // SKINCOLOR_GREEN + SKINCOLOR_SCARLET,8, // SKINCOLOR_PINETREE + SKINCOLOR_PURPLE,8, // SKINCOLOR_EMERALD + SKINCOLOR_BYZANTIUM,8, // SKINCOLOR_SWAMP + SKINCOLOR_POMEGRANATE,8, // SKINCOLOR_DREAM + SKINCOLOR_NOVA,10, // SKINCOLOR_ALGAE + SKINCOLOR_YELLOW,8, // SKINCOLOR_AQUA + SKINCOLOR_OLIVE,8, // SKINCOLOR_TEAL + SKINCOLOR_PEACH,8, // SKINCOLOR_CYAN + SKINCOLOR_LILAC,10, // SKINCOLOR_JAWZ + SKINCOLOR_CARAMEL,8, // SKINCOLOR_CERULEAN + SKINCOLOR_ROSEWOOD,8, // SKINCOLOR_NAVY + SKINCOLOR_GOLD,10, // SKINCOLOR_SLATE + SKINCOLOR_BRONZE,10, // SKINCOLOR_STEEL + SKINCOLOR_BURGUNDY,8, // SKINCOLOR_JET + SKINCOLOR_RUBY,6, // SKINCOLOR_SAPPHIRE + SKINCOLOR_CREAMSICLE,8, // SKINCOLOR_PERIWINKLE + SKINCOLOR_ORANGE,8, // SKINCOLOR_BLUE + SKINCOLOR_PUMPKIN,8, // SKINCOLOR_BLUEBERRY + SKINCOLOR_FUCHSIA,11, // SKINCOLOR_PASTEL + SKINCOLOR_DAWN,6, // SKINCOLOR_DUSK + SKINCOLOR_EMERALD,8, // SKINCOLOR_PURPLE + SKINCOLOR_PASTEL,11, // SKINCOLOR_FUCHSIA + SKINCOLOR_CRIMSON,8, // SKINCOLOR_TOXIC + SKINCOLOR_GARDEN,6, // SKINCOLOR_LAVENDER + SKINCOLOR_SWAMP,8, // SKINCOLOR_BYZANTIUM + SKINCOLOR_DREAM,8, // SKINCOLOR_POMEGRANATE + SKINCOLOR_JAWZ,6 // SKINCOLOR_LILAC }; UINT8 colortranslations[MAXTRANSLATIONS][16] = { @@ -194,8 +214,11 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = { {144, 145, 146, 147, 148, 149, 150, 151, 134, 135, 136, 137, 138, 139, 140, 141}, // SKINCOLOR_ROSE {120, 121, 144, 145, 147, 149, 132, 133, 134, 136, 198, 198, 199, 255, 30, 31}, // SKINCOLOR_RUBY {120, 121, 122, 123, 124, 125, 126, 127, 128, 130, 131, 134, 136, 137, 139, 140}, // SKINCOLOR_RASPBERRY + {120, 65, 67, 69, 71, 124, 125, 127, 132, 133, 135, 136, 138, 139, 140, 141}, // SKINCOLOR_CHERRY {122, 123, 124, 126, 129, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142}, // SKINCOLOR_RED - {123, 125, 128, 131, 133, 135, 136, 138, 140, 140, 141, 141, 142, 142, 143, 31}, // SKINCOLOR_CRIMSON + {123, 125, 128, 131, 133, 135, 136, 138, 140, 140, 141, 141, 142, 142, 143, 31}, // SKINCOLOR_SCARLET + {123, 124, 126, 128, 132, 135, 137, 63, 28, 28, 28, 29, 29, 30, 30, 31}, // SKINCOLOR_CRIMSON + { 99, 113, 113, 84, 85, 87, 126, 128, 130, 196, 197, 198, 199, 240, 243, 246}, // SKINCOLOR_NOVA {104, 113, 113, 85, 86, 88, 128, 129, 131, 133, 134, 136, 138, 139, 141, 143}, // SKINCOLOR_KETCHUP {120, 121, 122, 123, 124, 147, 147, 148, 90, 91, 92, 93, 94, 95, 152, 154}, // SKINCOLOR_DAWN {120, 120, 80, 80, 81, 82, 83, 83, 84, 85, 86, 88, 89, 91, 93, 95}, // SKINCOLOR_CREAMSICLE @@ -204,19 +227,22 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = { { 83, 85, 88, 90, 92, 94, 152, 153, 154, 156, 157, 159, 140, 141, 142, 143}, // SKINCOLOR_ROSEWOOD { 84, 86, 89, 91, 152, 154, 155, 157, 158, 159, 140, 141, 142, 143, 31, 31}, // SKINCOLOR_BURGUNDY { 98, 98, 112, 112, 113, 113, 84, 85, 87, 89, 91, 93, 95, 153, 156, 159}, // SKINCOLOR_TANGERINE - {120, 120, 96, 96, 97, 82, 84, 77, 50, 54, 57, 59, 61, 63, 29, 31}, // SKINCOLOR_PEACH + {120, 80, 66, 70, 72, 76, 148, 149, 150, 151, 153, 154, 156, 61, 62, 63}, // SKINCOLOR_PEACH { 64, 66, 68, 70, 72, 74, 76, 78, 48, 50, 52, 54, 56, 58, 60, 62}, // SKINCOLOR_CARAMEL + {120, 120, 96, 96, 97, 82, 84, 77, 50, 54, 57, 59, 61, 63, 29, 31}, // SKINCOLOR_CREAM {112, 112, 112, 113, 113, 114, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119}, // SKINCOLOR_GOLD {112, 113, 114, 115, 116, 117, 118, 119, 156, 157, 158, 159, 141, 141, 142, 143}, // SKINCOLOR_BRONZE + {120, 99, 113, 114, 116, 117, 119, 61, 63, 28, 28, 29, 29, 30, 30, 31}, // SKINCOLOR_COPPER { 96, 97, 98, 100, 101, 102, 104, 113, 114, 115, 116, 117, 118, 119, 156, 159}, // SKINCOLOR_YELLOW { 96, 98, 99, 112, 113, 114, 114, 106, 106, 107, 107, 108, 108, 109, 110, 111}, // SKINCOLOR_MUSTARD {105, 105, 105, 106, 106, 107, 107, 108, 108, 109, 109, 110, 110, 111, 111, 31}, // SKINCOLOR_OLIVE {121, 144, 145, 72, 73, 84, 114, 115, 107, 108, 109, 183, 223, 207, 30, 246}, // SKINCOLOR_VOMIT { 98, 99, 112, 101, 113, 114, 106, 179, 180, 180, 181, 182, 183, 173, 174, 175}, // SKINCOLOR_GARDEN { 96, 97, 99, 100, 102, 104, 160, 162, 164, 166, 168, 171, 223, 223, 207, 31}, // SKINCOLOR_LIME + { 98, 104, 105, 105, 106, 167, 168, 169, 170, 171, 172, 173, 174, 175, 30, 31}, // SKINCOLOR_HANDHELD {120, 120, 176, 176, 176, 177, 177, 178, 178, 179, 179, 180, 180, 181, 182, 183}, // SKINCOLOR_TEA {120, 120, 176, 176, 177, 177, 178, 179, 165, 166, 167, 168, 169, 170, 171, 172}, // SKINCOLOR_PISTACHIO - {176, 176, 177, 178, 165, 166, 167, 167, 168, 169, 182, 182, 182, 183, 183, 183}, // SKINCOLOR_ROBOHOOD + {120, 176, 178, 165, 167, 168, 169, 182, 182, 171, 171, 172, 173, 174, 175, 30}, // SKINCOLOR_ROBOHOOD {178, 178, 178, 179, 179, 180, 181, 182, 183, 172, 172, 173, 173, 174, 174, 175}, // SKINCOLOR_MOSS {120, 176, 176, 176, 177, 163, 164, 165, 167, 221, 221, 222, 223, 207, 207, 31}, // SKINCOLOR_MINT {160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175}, // SKINCOLOR_GREEN @@ -224,6 +250,7 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = { {160, 184, 184, 185, 185, 186, 186, 187, 187, 188, 188, 189, 189, 190, 191, 175}, // SKINCOLOR_EMERALD {160, 184, 185, 186, 187, 188, 189, 190, 191, 191, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_SWAMP {120, 120, 80, 80, 81, 177, 162, 164, 228, 228, 204, 204, 205, 205, 206, 207}, // SKINCOLOR_DREAM + {208, 209, 210, 211, 213, 220, 216, 167, 168, 188, 188, 189, 190, 191, 30, 31}, // SKINCOLOR_ALGAE {120, 208, 208, 210, 212, 214, 220, 220, 220, 221, 221, 222, 222, 223, 223, 191}, // SKINCOLOR_AQUA {210, 213, 220, 220, 220, 216, 216, 221, 221, 221, 222, 222, 223, 223, 191, 31}, // SKINCOLOR_TEAL {120, 120, 208, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 222, 223}, // SKINCOLOR_CYAN @@ -237,8 +264,11 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = { {120, 120, 224, 225, 226, 202, 227, 228, 229, 230, 231, 233, 235, 237, 239, 241}, // SKINCOLOR_PERIWINKLE {224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 235, 236, 238, 242, 244, 246}, // SKINCOLOR_BLUE {226, 228, 229, 230, 232, 233, 235, 237, 239, 240, 242, 244, 246, 31, 31, 31}, // SKINCOLOR_BLUEBERRY + {120, 208, 209, 210, 211, 226, 202, 249, 194, 195, 196, 197, 198, 199, 255, 30}, // SKINCOLOR_PASTEL {121, 145, 192, 249, 250, 251, 204, 204, 205, 205, 206, 206, 207, 29, 30, 31}, // SKINCOLOR_DUSK {121, 145, 192, 192, 193, 194, 195, 196, 196, 197, 197, 198, 198, 199, 30, 31}, // SKINCOLOR_PURPLE + {120, 122, 124, 125, 126, 150, 196, 197, 198, 198, 199, 199, 240, 242, 244, 246}, // SKINCOLOR_FUCHSIA + {120, 120, 176, 176, 177, 6, 8, 10, 249, 250, 196, 197, 198, 199, 143, 31}, // SKINCOLOR_TOXIC {121, 145, 192, 248, 249, 250, 251, 252, 252, 253, 253, 254, 254, 255, 30, 31}, // SKINCOLOR_LAVENDER {144, 248, 249, 250, 251, 252, 253, 254, 255, 255, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_BYZANTIUM {144, 145, 146, 147, 148, 149, 150, 251, 251, 252, 252, 253, 254, 255, 29, 30}, // SKINCOLOR_POMEGRANATE @@ -4257,7 +4287,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) else { player->mo->colorized = true; - player->mo->color = SKINCOLOR_CRIMSON; + player->mo->color = SKINCOLOR_SCARLET; } } else if (player->kartstuff[k_invincibilitytimer]) // setting players to use the star colormap and spawning afterimages From 3b9c4fff521d00e9dbd6dbfe8b5e3267aa153092 Mon Sep 17 00:00:00 2001 From: Steel Titanium Date: Wed, 27 Feb 2019 15:43:29 -0500 Subject: [PATCH 48/62] Upped MAXNETNODES --- src/d_net.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/d_net.h b/src/d_net.h index 9cc1bbd2..2efb6d9c 100644 --- a/src/d_net.h +++ b/src/d_net.h @@ -19,7 +19,7 @@ #define __D_NET__ // Max computers in a game -#define MAXNETNODES 16 +#define MAXNETNODES MAXPLAYERS+4 #define BROADCASTADDR MAXNETNODES #define MAXSPLITSCREENPLAYERS 4 // Max number of players on a single computer #define NETSPLITSCREEN // Kart's splitscreen netgame feature From 5975d3fb3004d1e82006b11b07ec9c46be2df49f Mon Sep 17 00:00:00 2001 From: Steel Titanium Date: Wed, 27 Feb 2019 15:55:39 -0500 Subject: [PATCH 49/62] Add some parentheses --- src/d_net.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/d_net.h b/src/d_net.h index 2efb6d9c..8e518e40 100644 --- a/src/d_net.h +++ b/src/d_net.h @@ -19,7 +19,7 @@ #define __D_NET__ // Max computers in a game -#define MAXNETNODES MAXPLAYERS+4 +#define MAXNETNODES (MAXPLAYERS+4) #define BROADCASTADDR MAXNETNODES #define MAXSPLITSCREENPLAYERS 4 // Max number of players on a single computer #define NETSPLITSCREEN // Kart's splitscreen netgame feature From b95d0ac27963ea89588a42a5d8cb7fad884fb37c Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Sat, 2 Mar 2019 15:39:52 -0500 Subject: [PATCH 50/62] 16 more colors - Renamed Crimson to Maroon. - Renamed Scarlet back to Crimson. - Renamed Nova to Scarlet. - Added Brick, Flame, Sunset, Popcorn, Camouflage, Caribbean, Plague, Platinum, Rust, Nova, Ultraviolet, Moonslam, Bubblegum, Mauve, Royal, and Fairy - Updated Maroon, Robo-Hood, and Ketchup - Shifted positioning of Aqua Super --- src/dehacked.c | 32 ++++++++++++----- src/doomdef.h | 37 +++++++++++++------ src/k_kart.c | 97 +++++++++++++++++++++++++++++++++++++------------- 3 files changed, 123 insertions(+), 43 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index 7795f1f5..0088f664 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -8147,15 +8147,18 @@ static const char *COLOR_ENUMS[] = { // Rejigged for Kart. "SALMON", // SKINCOLOR_SALMON "PINK", // SKINCOLOR_PINK "ROSE", // SKINCOLOR_ROSE + "BRICK", // SKINCOLOR_BRICK "RUBY", // SKINCOLOR_RUBY "RASPBERRY", // SKINCOLOR_RASPBERRY "CHERRY", // SKINCOLOR_CHERRY "RED", // SKINCOLOR_RED - "SCARLET", // SKINCOLOR_SCARLET "CRIMSON", // SKINCOLOR_CRIMSON - "NOVA", // SKINCOLOR_NOVA + "MAROON", // SKINCOLOR_MAROON + "FLAME", // SKINCOLOR_FLAME + "SCARLET", // SKINCOLOR_SCARLET "KETCHUP", // SKINCOLOR_KETCHUP "DAWN", // SKINCOLOR_DAWN + "SUNSET", // SKINCOLOR_SUNSET "CREAMSICLE", // SKINCOLOR_CREAMSICLE "ORANGE", // SKINCOLOR_ORANGE "PUMPKIN", // SKINCOLOR_PUMPKIN @@ -8164,6 +8167,7 @@ static const char *COLOR_ENUMS[] = { // Rejigged for Kart. "TANGERINE", // SKINCOLOR_TANGERINE "PEACH", // SKINCOLOR_PEACH "CARAMEL", // SKINCOLOR_CARAMEL + "POPCORN", // SKINCOLOR_POPCORN "CREAM", // SKINCOLOR_CREAM "GOLD", // SKINCOLOR_GOLD "BRONZE", // SKINCOLOR_BRONZE @@ -8177,6 +8181,7 @@ static const char *COLOR_ENUMS[] = { // Rejigged for Kart. "HANDHELD", // SKINCOLOR_HANDHELD "TEA", // SKINCOLOR_TEA "PISTACHIO", // SKINCOLOR_PISTACHIO + "CAMOUFLAGE", // SKINCOLOR_CAMOUFLAGE "ROBOHOOD", // SKINCOLOR_ROBOHOOD "MOSS", // SKINCOLOR_MOSS "MINT", // SKINCOLOR_MINT @@ -8186,28 +8191,39 @@ static const char *COLOR_ENUMS[] = { // Rejigged for Kart. "SWAMP", // SKINCOLOR_SWAMP "DREAM", // SKINCOLOR_DREAM "ALGAE", // SKINCOLOR_ALGAE + "CARIBBEAN", // SKINCOLOR_CARIBBEAN + "PLAGUE", // SKINCOLOR_PLAGUE "AQUA", // SKINCOLOR_AQUA "TEAL", // SKINCOLOR_TEAL "CYAN", // SKINCOLOR_CYAN "JAWZ", // SKINCOLOR_JAWZ "CERULEAN", // SKINCOLOR_CERULEAN "NAVY", // SKINCOLOR_NAVY + "PLATINUM", // SKINCOLOR_PLATINUM "SLATE", // SKINCOLOR_SLATE "STEEL", // SKINCOLOR_STEEL + "RUST", // SKINCOLOR_RUST "JET", // SKINCOLOR_JET "SAPPHIRE", // SKINCOLOR_SAPPHIRE "PERIWINKLE", // SKINCOLOR_PERIWINKLE "BLUE", // SKINCOLOR_BLUE "BLUEBERRY", // SKINCOLOR_BLUEBERRY + "NOVA", // SKINCOLOR_NOVA "PASTEL", // SKINCOLOR_PASTEL + "ULTRAVIOLET", // SKINCOLOR_ULTRAVIOLET "DUSK", // SKINCOLOR_DUSK + "MOONSLAM", // SKINCOLOR_MOONSLAM + "BUBBLEGUM", // SKINCOLOR_BUBBLEGUM "PURPLE", // SKINCOLOR_PURPLE "FUCHSIA", // SKINCOLOR_FUCHSIA "TOXIC", // SKINCOLOR_TOXIC + "MAUVE", // SKINCOLOR_MAUVE + "ROYAL", // SKINCOLOR_ROYAL "LAVENDER", // SKINCOLOR_LAVENDER "BYZANTIUM", // SKINCOLOR_BYZANTIUM "POMEGRANATE", // SKINCOLOR_POMEGRANATE "LILAC", // SKINCOLOR_LILAC + "FAIRY", // SKINCOLOR_FAIRY // Special super colors // Super Sonic Yellow @@ -8240,6 +8256,12 @@ static const char *COLOR_ENUMS[] = { // Rejigged for Kart. "BSUPER3", // SKINCOLOR_BSUPER3, "BSUPER4", // SKINCOLOR_BSUPER4, "BSUPER5" // SKINCOLOR_BSUPER5, + // Aqua Super + "ASUPER1", // SKINCOLOR_ASUPER1, + "ASUPER2", // SKINCOLOR_ASUPER2, + "ASUPER3", // SKINCOLOR_ASUPER3, + "ASUPER4", // SKINCOLOR_ASUPER4, + "ASUPER5" // SKINCOLOR_ASUPER5, // Hyper Sonic Green "GSUPER1", // SKINCOLOR_GSUPER1, "GSUPER2", // SKINCOLOR_GSUPER2, @@ -8258,12 +8280,6 @@ static const char *COLOR_ENUMS[] = { // Rejigged for Kart. "CSUPER3", // SKINCOLOR_CSUPER3, "CSUPER4", // SKINCOLOR_CSUPER4, "CSUPER5", // SKINCOLOR_CSUPER5, - // Aqua Super - "ASUPER1", // SKINCOLOR_ASUPER1, - "ASUPER2", // SKINCOLOR_ASUPER2, - "ASUPER3", // SKINCOLOR_ASUPER3, - "ASUPER4", // SKINCOLOR_ASUPER4, - "ASUPER5" // SKINCOLOR_ASUPER5, }; static const char *const POWERS_LIST[] = { diff --git a/src/doomdef.h b/src/doomdef.h index 7fc92f48..59c2dfc3 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -256,6 +256,7 @@ typedef enum SKINCOLOR_GREY, SKINCOLOR_NICKEL, SKINCOLOR_BLACK, + SKINCOLOR_POPCORN, SKINCOLOR_SEPIA, SKINCOLOR_BEIGE, SKINCOLOR_BROWN, @@ -263,15 +264,18 @@ typedef enum SKINCOLOR_SALMON, SKINCOLOR_PINK, SKINCOLOR_ROSE, + SKINCOLOR_BRICK, SKINCOLOR_RUBY, SKINCOLOR_RASPBERRY, SKINCOLOR_CHERRY, SKINCOLOR_RED, - SKINCOLOR_SCARLET, SKINCOLOR_CRIMSON, - SKINCOLOR_NOVA, + SKINCOLOR_MAROON, + SKINCOLOR_FLAME, + SKINCOLOR_SCARLET, SKINCOLOR_KETCHUP, SKINCOLOR_DAWN, + SKINCOLOR_SUNSET, SKINCOLOR_CREAMSICLE, SKINCOLOR_ORANGE, SKINCOLOR_PUMPKIN, @@ -289,6 +293,7 @@ typedef enum SKINCOLOR_OLIVE, SKINCOLOR_VOMIT, SKINCOLOR_GARDEN, + SKINCOLOR_CAMOUFLAGE, SKINCOLOR_LIME, SKINCOLOR_HANDHELD, SKINCOLOR_TEA, @@ -301,6 +306,8 @@ typedef enum SKINCOLOR_EMERALD, SKINCOLOR_SWAMP, SKINCOLOR_DREAM, + SKINCOLOR_PLAGUE, + SKINCOLOR_CARIBBEAN, SKINCOLOR_ALGAE, SKINCOLOR_AQUA, SKINCOLOR_TEAL, @@ -308,24 +315,34 @@ typedef enum SKINCOLOR_JAWZ, // Oni's torment SKINCOLOR_CERULEAN, SKINCOLOR_NAVY, + SKINCOLOR_PLATINUM, SKINCOLOR_SLATE, SKINCOLOR_STEEL, + SKINCOLOR_RUST, SKINCOLOR_JET, SKINCOLOR_SAPPHIRE, // sweet mother, i cannot weave - slender aphrodite has overcome me with longing for a girl SKINCOLOR_PERIWINKLE, SKINCOLOR_BLUE, SKINCOLOR_BLUEBERRY, + SKINCOLOR_NOVA, SKINCOLOR_PASTEL, + SKINCOLOR_ULTRAVIOLET, SKINCOLOR_DUSK, + SKINCOLOR_MOONSLAM, + SKINCOLOR_BUBBLEGUM, SKINCOLOR_PURPLE, SKINCOLOR_FUCHSIA, SKINCOLOR_TOXIC, + SKINCOLOR_MAUVE, + SKINCOLOR_ROYAL, SKINCOLOR_LAVENDER, SKINCOLOR_BYZANTIUM, SKINCOLOR_POMEGRANATE, SKINCOLOR_LILAC, + SKINCOLOR_FAIRY, - // Careful! MAXSKINCOLORS cannot be greater than 0x40 -- Which it is now. + // "Careful! MAXSKINCOLORS cannot be greater than 0x40 -- Which it is now." + // (This comment is a dirty liar! This is only limited by the integer type, so 255 for UINT8.) MAXSKINCOLORS, // Super special awesome Super flashing colors! @@ -364,6 +381,13 @@ typedef enum SKINCOLOR_BSUPER4, SKINCOLOR_BSUPER5, + // Aqua Super + SKINCOLOR_ASUPER1, + SKINCOLOR_ASUPER2, + SKINCOLOR_ASUPER3, + SKINCOLOR_ASUPER4, + SKINCOLOR_ASUPER5, + // Hyper Sonic Green SKINCOLOR_GSUPER1, SKINCOLOR_GSUPER2, @@ -385,13 +409,6 @@ typedef enum SKINCOLOR_CSUPER4, SKINCOLOR_CSUPER5, - // Aqua Super - SKINCOLOR_ASUPER1, - SKINCOLOR_ASUPER2, - SKINCOLOR_ASUPER3, - SKINCOLOR_ASUPER4, - SKINCOLOR_ASUPER5, - MAXTRANSLATIONS } skincolors_t; diff --git a/src/k_kart.c b/src/k_kart.c index 8e607191..2bdfc40f 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -56,15 +56,18 @@ const char *KartColor_Names[MAXSKINCOLORS] = "Salmon", // SKINCOLOR_SALMON "Pink", // SKINCOLOR_PINK "Rose", // SKINCOLOR_ROSE + "Brick", // SKINCOLOR_BRICK "Ruby", // SKINCOLOR_RUBY "Raspberry", // SKINCOLOR_RASPBERRY "Cherry", // SKINCOLOR_CHERRY "Red", // SKINCOLOR_RED - "Scarlet", // SKINCOLOR_SCARLET "Crimson", // SKINCOLOR_CRIMSON - "Nova", // SKINCOLOR_NOVA + "Maroon", // SKINCOLOR_MAROON + "Flame", // SKINCOLOR_FLAME + "Scarlet", // SKINCOLOR_SCARLET "Ketchup", // SKINCOLOR_KETCHUP "Dawn", // SKINCOLOR_DAWN + "Sunset", // SKINCOLOR_SUNSET "Creamsicle", // SKINCOLOR_CREAMSICLE "Orange", // SKINCOLOR_ORANGE "Pumpkin", // SKINCOLOR_PUMPKIN @@ -73,6 +76,7 @@ const char *KartColor_Names[MAXSKINCOLORS] = "Tangerine", // SKINCOLOR_TANGERINE "Peach", // SKINCOLOR_PEACH "Caramel", // SKINCOLOR_CARAMEL + "Popcorn", // SKINCOLOR_POPCORN "Cream", // SKINCOLOR_CREAM "Gold", // SKINCOLOR_GOLD "Bronze", // SKINCOLOR_BRONZE @@ -86,6 +90,7 @@ const char *KartColor_Names[MAXSKINCOLORS] = "Handheld", // SKINCOLOR_HANDHELD "Tea", // SKINCOLOR_TEA "Pistachio", // SKINCOLOR_PISTACHIO + "Camouflage", // SKINCOLOR_CAMOUFLAGE "Robo-Hood", // SKINCOLOR_ROBOHOOD "Moss", // SKINCOLOR_MOSS "Mint", // SKINCOLOR_MINT @@ -95,28 +100,39 @@ const char *KartColor_Names[MAXSKINCOLORS] = "Swamp", // SKINCOLOR_SWAMP "Dream", // SKINCOLOR_DREAM "Algae", // SKINCOLOR_ALGAE + "Caribbean", // SKINCOLOR_CARIBBEAN + "Plague", // SKINCOLOR_PLAGUE "Aqua", // SKINCOLOR_AQUA "Teal", // SKINCOLOR_TEAL "Cyan", // SKINCOLOR_CYAN "Jawz", // SKINCOLOR_JAWZ "Cerulean", // SKINCOLOR_CERULEAN "Navy", // SKINCOLOR_NAVY + "Platinum", // SKINCOLOR_PLATINUM "Slate", // SKINCOLOR_SLATE "Steel", // SKINCOLOR_STEEL + "Rust", // SKINCOLOR_RUST "Jet", // SKINCOLOR_JET "Sapphire", // SKINCOLOR_SAPPHIRE "Periwinkle", // SKINCOLOR_PERIWINKLE "Blue", // SKINCOLOR_BLUE "Blueberry", // SKINCOLOR_BLUEBERRY + "Nova", // SKINCOLOR_NOVA "Pastel", // SKINCOLOR_PASTEL + "Ultraviolet", // SKINCOLOR_ULTRAVIOLET "Dusk", // SKINCOLOR_DUSK + "Moonslam", // SKINCOLOR_MOONSLAM + "Bubblegum", // SKINCOLOR_BUBBLEGUM "Purple", // SKINCOLOR_PURPLE "Fuchsia", // SKINCOLOR_FUCHSIA "Toxic", // SKINCOLOR_TOXIC + "Mauve", // SKINCOLOR_MAUVE + "Royal", // SKINCOLOR_ROYAL "Lavender", // SKINCOLOR_LAVENDER "Byzantium", // SKINCOLOR_BYZANTIUM "Pomegranate", // SKINCOLOR_POMEGRANATE - "Lilac" // SKINCOLOR_LILAC + "Lilac", // SKINCOLOR_LILAC + "Fairy" // SKINCOLOR_FAIRY }; // Color_Opposite replacement; frame setting has not been changed from 8 for most, should be done later @@ -135,15 +151,18 @@ const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] = SKINCOLOR_TEA,8, // SKINCOLOR_SALMON SKINCOLOR_PISTACHIO,8, // SKINCOLOR_PINK SKINCOLOR_MOSS,8, // SKINCOLOR_ROSE + SKINCOLOR_RUST,8, // SKINCOLOR_BRICK SKINCOLOR_SAPPHIRE,8, // SKINCOLOR_RUBY SKINCOLOR_MINT,8, // SKINCOLOR_RASPBERRY SKINCOLOR_HANDHELD,10, // SKINCOLOR_CHERRY SKINCOLOR_GREEN,6, // SKINCOLOR_RED - SKINCOLOR_PINETREE,6, // SKINCOLOR_SCARLET - SKINCOLOR_TOXIC,8, // SKINCOLOR_CRIMSON - SKINCOLOR_ALGAE,10, // SKINCOLOR_NOVA + SKINCOLOR_PINETREE,6, // SKINCOLOR_CRIMSON + SKINCOLOR_TOXIC,8, // SKINCOLOR_MAROON + SKINCOLOR_CARIBBEAN,10, // SKINCOLOR_FLAME + SKINCOLOR_ALGAE,10, // SKINCOLOR_SCARLET SKINCOLOR_MUSTARD,10, // SKINCOLOR_KETCHUP SKINCOLOR_DUSK,8, // SKINCOLOR_DAWN + SKINCOLOR_MOONSLAM,8, // SKINCOLOR_SUNSET SKINCOLOR_PERIWINKLE,8, // SKINCOLOR_CREAMSICLE SKINCOLOR_BLUE,8, // SKINCOLOR_ORANGE SKINCOLOR_BLUEBERRY,8, // SKINCOLOR_PUMPKIN @@ -152,6 +171,7 @@ const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] = SKINCOLOR_LIME,8, // SKINCOLOR_TANGERINE SKINCOLOR_CYAN,8, // SKINCOLOR_PEACH SKINCOLOR_CERULEAN,8, // SKINCOLOR_CARAMEL + SKINCOLOR_BUBBLEGUM,8, // SKINCOLOR_POPCORN SKINCOLOR_COPPER,10, // SKINCOLOR_CREAM SKINCOLOR_SLATE,8, // SKINCOLOR_GOLD SKINCOLOR_STEEL,8, // SKINCOLOR_BRONZE @@ -165,37 +185,48 @@ const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] = SKINCOLOR_CHERRY,8, // SKINCOLOR_HANDHELD SKINCOLOR_SALMON,8, // SKINCOLOR_TEA SKINCOLOR_PINK,6, // SKINCOLOR_PISTACHIO + SKINCOLOR_FAIRY,10, // SKINCOLOR_CAMOUFLAGE SKINCOLOR_VOMIT,8, // SKINCOLOR_ROBOHOOD SKINCOLOR_ROSE,8, // SKINCOLOR_MOSS SKINCOLOR_RASPBERRY,8, // SKINCOLOR_MINT SKINCOLOR_RED,8, // SKINCOLOR_GREEN - SKINCOLOR_SCARLET,8, // SKINCOLOR_PINETREE + SKINCOLOR_CRIMSON,8, // SKINCOLOR_PINETREE SKINCOLOR_PURPLE,8, // SKINCOLOR_EMERALD SKINCOLOR_BYZANTIUM,8, // SKINCOLOR_SWAMP SKINCOLOR_POMEGRANATE,8, // SKINCOLOR_DREAM - SKINCOLOR_NOVA,10, // SKINCOLOR_ALGAE + SKINCOLOR_SCARLET,10, // SKINCOLOR_ALGAE + SKINCOLOR_FLAME,8, // SKINCOLOR_CARIBBEAN + SKINCOLOR_NOVA,8, // SKINCOLOR_PLAGUE SKINCOLOR_YELLOW,8, // SKINCOLOR_AQUA SKINCOLOR_OLIVE,8, // SKINCOLOR_TEAL SKINCOLOR_PEACH,8, // SKINCOLOR_CYAN SKINCOLOR_LILAC,10, // SKINCOLOR_JAWZ SKINCOLOR_CARAMEL,8, // SKINCOLOR_CERULEAN SKINCOLOR_ROSEWOOD,8, // SKINCOLOR_NAVY + SKINCOLOR_ROYAL,8, // SKINCOLOR_PLATINUM SKINCOLOR_GOLD,10, // SKINCOLOR_SLATE SKINCOLOR_BRONZE,10, // SKINCOLOR_STEEL + SKINCOLOR_BRICK,10, // SKINCOLOR_RUST SKINCOLOR_BURGUNDY,8, // SKINCOLOR_JET SKINCOLOR_RUBY,6, // SKINCOLOR_SAPPHIRE SKINCOLOR_CREAMSICLE,8, // SKINCOLOR_PERIWINKLE SKINCOLOR_ORANGE,8, // SKINCOLOR_BLUE SKINCOLOR_PUMPKIN,8, // SKINCOLOR_BLUEBERRY + SKINCOLOR_PLAGUE,10, // SKINCOLOR_NOVA SKINCOLOR_FUCHSIA,11, // SKINCOLOR_PASTEL + SKINCOLOR_MAUVE,10, // SKINCOLOR_ULTRAVIOLET SKINCOLOR_DAWN,6, // SKINCOLOR_DUSK + SKINCOLOR_SUNSET,10, // SKINCOLOR_MOONSLAM SKINCOLOR_EMERALD,8, // SKINCOLOR_PURPLE SKINCOLOR_PASTEL,11, // SKINCOLOR_FUCHSIA - SKINCOLOR_CRIMSON,8, // SKINCOLOR_TOXIC + SKINCOLOR_MAROON,8, // SKINCOLOR_TOXIC + SKINCOLOR_ULTRAVIOLET,8, // SKINCOLOR_MAUVE + SKINCOLOR_PLATINUM,6, // SKINCOLOR_ROYAL SKINCOLOR_GARDEN,6, // SKINCOLOR_LAVENDER SKINCOLOR_SWAMP,8, // SKINCOLOR_BYZANTIUM SKINCOLOR_DREAM,8, // SKINCOLOR_POMEGRANATE - SKINCOLOR_JAWZ,6 // SKINCOLOR_LILAC + SKINCOLOR_JAWZ,6, // SKINCOLOR_LILAC + SKINCOLOR_CAMOUFLAGE,8 // SKINCOLOR_FAIRY }; UINT8 colortranslations[MAXTRANSLATIONS][16] = { @@ -212,15 +243,18 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = { {120, 120, 120, 121, 121, 122, 123, 124, 126, 127, 129, 131, 133, 135, 137, 139}, // SKINCOLOR_SALMON {120, 121, 121, 122, 144, 145, 146, 147, 148, 149, 150, 151, 134, 136, 138, 140}, // SKINCOLOR_PINK {144, 145, 146, 147, 148, 149, 150, 151, 134, 135, 136, 137, 138, 139, 140, 141}, // SKINCOLOR_ROSE + { 64, 67, 70, 73, 146, 147, 148, 150, 118, 118, 119, 119, 156, 159, 141, 143}, // SKINCOLOR_BRICK {120, 121, 144, 145, 147, 149, 132, 133, 134, 136, 198, 198, 199, 255, 30, 31}, // SKINCOLOR_RUBY {120, 121, 122, 123, 124, 125, 126, 127, 128, 130, 131, 134, 136, 137, 139, 140}, // SKINCOLOR_RASPBERRY {120, 65, 67, 69, 71, 124, 125, 127, 132, 133, 135, 136, 138, 139, 140, 141}, // SKINCOLOR_CHERRY {122, 123, 124, 126, 129, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142}, // SKINCOLOR_RED - {123, 125, 128, 131, 133, 135, 136, 138, 140, 140, 141, 141, 142, 142, 143, 31}, // SKINCOLOR_SCARLET - {123, 124, 126, 128, 132, 135, 137, 63, 28, 28, 28, 29, 29, 30, 30, 31}, // SKINCOLOR_CRIMSON - { 99, 113, 113, 84, 85, 87, 126, 128, 130, 196, 197, 198, 199, 240, 243, 246}, // SKINCOLOR_NOVA - {104, 113, 113, 85, 86, 88, 128, 129, 131, 133, 134, 136, 138, 139, 141, 143}, // SKINCOLOR_KETCHUP + {123, 125, 128, 131, 133, 135, 136, 138, 140, 140, 141, 141, 142, 142, 143, 31}, // SKINCOLOR_CRIMSON + {123, 124, 126, 128, 132, 135, 137, 27, 28, 28, 28, 29, 29, 30, 30, 31}, // SKINCOLOR_MAROON + {120, 97, 112, 113, 113, 85, 87, 126, 149, 150, 151, 252, 253, 254, 255, 29}, // SKINCOLOR_FLAME + { 99, 113, 113, 84, 85, 87, 126, 128, 130, 196, 197, 198, 199, 240, 243, 246}, // SKINCOLOR_SCARLET + {103, 113, 113, 84, 85, 88, 127, 130, 131, 133, 134, 136, 138, 139, 141, 143}, // SKINCOLOR_KETCHUP {120, 121, 122, 123, 124, 147, 147, 148, 90, 91, 92, 93, 94, 95, 152, 154}, // SKINCOLOR_DAWN + { 98, 112, 113, 84, 85, 87, 89, 149, 150, 251, 252, 206, 238, 240, 243, 246}, // SKINCOLOR_SUNSET {120, 120, 80, 80, 81, 82, 83, 83, 84, 85, 86, 88, 89, 91, 93, 95}, // SKINCOLOR_CREAMSICLE { 80, 81, 82, 83, 84, 85, 86, 88, 89, 91, 94, 95, 154, 156, 158, 159}, // SKINCOLOR_ORANGE { 82, 83, 84, 85, 87, 89, 90, 92, 94, 152, 153, 155, 157, 159, 141, 142}, // SKINCOLOR_PUMPKIN @@ -229,6 +263,7 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = { { 98, 98, 112, 112, 113, 113, 84, 85, 87, 89, 91, 93, 95, 153, 156, 159}, // SKINCOLOR_TANGERINE {120, 80, 66, 70, 72, 76, 148, 149, 150, 151, 153, 154, 156, 61, 62, 63}, // SKINCOLOR_PEACH { 64, 66, 68, 70, 72, 74, 76, 78, 48, 50, 52, 54, 56, 58, 60, 62}, // SKINCOLOR_CARAMEL + {120, 96, 97, 98, 99, 71, 32, 11, 13, 16, 18, 21, 23, 26, 28, 31}, // SKINCOLOR_POPCORN {120, 120, 96, 96, 97, 82, 84, 77, 50, 54, 57, 59, 61, 63, 29, 31}, // SKINCOLOR_CREAM {112, 112, 112, 113, 113, 114, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119}, // SKINCOLOR_GOLD {112, 113, 114, 115, 116, 117, 118, 119, 156, 157, 158, 159, 141, 141, 142, 143}, // SKINCOLOR_BRONZE @@ -242,7 +277,8 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = { { 98, 104, 105, 105, 106, 167, 168, 169, 170, 171, 172, 173, 174, 175, 30, 31}, // SKINCOLOR_HANDHELD {120, 120, 176, 176, 176, 177, 177, 178, 178, 179, 179, 180, 180, 181, 182, 183}, // SKINCOLOR_TEA {120, 120, 176, 176, 177, 177, 178, 179, 165, 166, 167, 168, 169, 170, 171, 172}, // SKINCOLOR_PISTACHIO - {120, 176, 178, 165, 167, 168, 169, 182, 182, 171, 171, 172, 173, 174, 175, 30}, // SKINCOLOR_ROBOHOOD + { 64, 66, 69, 32, 34, 37, 40, 182, 171, 172, 172, 173, 173, 174, 174, 175}, // SKINCOLOR_CAMOUFLAGE + {120, 176, 160, 165, 167, 168, 169, 182, 182, 171, 60, 61, 63, 29, 30, 31}, // SKINCOLOR_ROBOHOOD {178, 178, 178, 179, 179, 180, 181, 182, 183, 172, 172, 173, 173, 174, 174, 175}, // SKINCOLOR_MOSS {120, 176, 176, 176, 177, 163, 164, 165, 167, 221, 221, 222, 223, 207, 207, 31}, // SKINCOLOR_MINT {160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175}, // SKINCOLOR_GREEN @@ -251,28 +287,39 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = { {160, 184, 185, 186, 187, 188, 189, 190, 191, 191, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_SWAMP {120, 120, 80, 80, 81, 177, 162, 164, 228, 228, 204, 204, 205, 205, 206, 207}, // SKINCOLOR_DREAM {208, 209, 210, 211, 213, 220, 216, 167, 168, 188, 188, 189, 190, 191, 30, 31}, // SKINCOLOR_ALGAE + {120, 176, 177, 160, 185, 220, 216, 217, 221, 230, 206, 206, 254, 255, 29, 31}, // SKINCOLOR_CARIBBEAN + {176, 160, 184, 185, 186, 187, 188, 230, 230, 206, 206, 207, 28, 29, 30, 31}, // SKINCOLOR_PLAGUE {120, 208, 208, 210, 212, 214, 220, 220, 220, 221, 221, 222, 222, 223, 223, 191}, // SKINCOLOR_AQUA {210, 213, 220, 220, 220, 216, 216, 221, 221, 221, 222, 222, 223, 223, 191, 31}, // SKINCOLOR_TEAL {120, 120, 208, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 222, 223}, // SKINCOLOR_CYAN {120, 120, 208, 209, 210, 226, 215, 216, 217, 229, 229, 205, 205, 206, 207, 31}, // SKINCOLOR_JAWZ {208, 209, 211, 213, 215, 216, 216, 217, 217, 218, 218, 219, 205, 206, 207, 207}, // SKINCOLOR_CERULEAN {211, 212, 213, 215, 216, 218, 219, 205, 206, 206, 207, 207, 28, 29, 30, 31}, // SKINCOLOR_NAVY + {120, 0, 0, 200, 200, 201, 11, 14, 17, 218, 222, 223, 238, 240, 243, 246}, // SKINCOLOR_PLATINUM {120, 120, 200, 200, 200, 201, 201, 201, 202, 202, 202, 203, 204, 205, 206, 207}, // SKINCOLOR_SLATE {120, 200, 200, 201, 201, 202, 202, 203, 203, 204, 204, 205, 205, 206, 207, 31}, // SKINCOLOR_STEEL + { 64, 66, 68, 70, 32, 34, 36, 203, 204, 205, 24, 25, 26, 28, 29, 31}, // SKINCOLOR_RUST {225, 226, 227, 228, 229, 205, 205, 206, 207, 207, 28, 28, 29, 29, 30, 31}, // SKINCOLOR_JET {208, 209, 211, 213, 215, 217, 229, 230, 232, 234, 236, 238, 240, 242, 244, 246}, // SKINCOLOR_SAPPHIRE {120, 120, 224, 225, 226, 202, 227, 228, 229, 230, 231, 233, 235, 237, 239, 241}, // SKINCOLOR_PERIWINKLE {224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 235, 236, 238, 242, 244, 246}, // SKINCOLOR_BLUE {226, 228, 229, 230, 232, 233, 235, 237, 239, 240, 242, 244, 246, 31, 31, 31}, // SKINCOLOR_BLUEBERRY + {120, 112, 82, 83, 84, 124, 248, 228, 228, 204, 205, 206, 207, 29, 30, 31}, // SKINCOLOR_NOVA {120, 208, 209, 210, 211, 226, 202, 249, 194, 195, 196, 197, 198, 199, 255, 30}, // SKINCOLOR_PASTEL + {120, 64, 81, 122, 192, 249, 203, 221, 221, 219, 219, 223, 223, 191, 191, 31}, // SKINCOLOR_ULTRAVIOLET {121, 145, 192, 249, 250, 251, 204, 204, 205, 205, 206, 206, 207, 29, 30, 31}, // SKINCOLOR_DUSK + {120, 224, 201, 226, 202, 249, 250, 196, 197, 198, 199, 140, 141, 142, 143, 31}, // SKINCOLOR_MOONSLAM + {120, 96, 64, 121, 67, 144, 123, 192, 193, 194, 195, 196, 197, 198, 199, 30}, // SKINCOLOR_BUBBLEGUM {121, 145, 192, 192, 193, 194, 195, 196, 196, 197, 197, 198, 198, 199, 30, 31}, // SKINCOLOR_PURPLE {120, 122, 124, 125, 126, 150, 196, 197, 198, 198, 199, 199, 240, 242, 244, 246}, // SKINCOLOR_FUCHSIA {120, 120, 176, 176, 177, 6, 8, 10, 249, 250, 196, 197, 198, 199, 143, 31}, // SKINCOLOR_TOXIC + { 96, 97, 98, 112, 113, 73, 146, 248, 249, 251, 205, 205, 206, 207, 29, 31}, // SKINCOLOR_MAUVE + { 97, 112, 113, 113, 114, 78, 53, 252, 252, 253, 253, 254, 255, 29, 30, 31}, // SKINCOLOR_ROYAL {121, 145, 192, 248, 249, 250, 251, 252, 252, 253, 253, 254, 254, 255, 30, 31}, // SKINCOLOR_LAVENDER {144, 248, 249, 250, 251, 252, 253, 254, 255, 255, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_BYZANTIUM {144, 145, 146, 147, 148, 149, 150, 251, 251, 252, 252, 253, 254, 255, 29, 30}, // SKINCOLOR_POMEGRANATE {120, 120, 120, 121, 121, 122, 122, 123, 192, 248, 249, 250, 251, 252, 253, 254}, // SKINCOLOR_LILAC + {120, 120, 121, 121, 122, 123, 10, 14, 16, 18, 20, 22, 24, 26, 28, 31}, // SKINCOLOR_FAIRY // MAXSKINCOLORS {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 96, 100, 104, 113, 116, 119}, // SKINCOLOR_SUPER1 {120, 120, 120, 120, 120, 120, 120, 120, 96, 98, 101, 104, 113, 115, 117, 119}, // SKINCOLOR_SUPER2 @@ -299,6 +346,11 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = { {120, 120, 120, 120, 120, 120, 224, 224, 225, 226, 227, 228, 229, 230, 231, 232}, // SKINCOLOR_BSUPER3 {120, 120, 120, 120, 224, 224, 225, 226, 226, 227, 228, 229, 229, 230, 231, 232}, // SKINCOLOR_BSUPER4 {120, 120, 224, 224, 225, 225, 226, 227, 227, 228, 228, 229, 230, 230, 231, 232}, // SKINCOLOR_BSUPER5 + {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 208, 210, 212, 215, 220, 222}, // SKINCOLOR_ASUPER1 + {120, 120, 120, 120, 120, 120, 120, 120, 208, 209, 211, 213, 215, 220, 221, 223}, // SKINCOLOR_ASUPER2 + {120, 120, 120, 120, 120, 120, 208, 209, 210, 211, 212, 213, 215, 220, 221, 223}, // SKINCOLOR_ASUPER3 + {120, 120, 120, 120, 208, 209, 210, 211, 212, 213, 214, 215, 220, 221, 222, 223}, // SKINCOLOR_ASUPER4 + {120, 120, 208, 208, 209, 210, 211, 211, 212, 213, 214, 215, 220, 221, 222, 223}, // SKINCOLOR_ASUPER5 {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 176, 160, 163, 167, 171, 175}, // SKINCOLOR_GSUPER1 {120, 120, 120, 120, 120, 120, 120, 120, 176, 176, 160, 163, 166, 169, 172, 175}, // SKINCOLOR_GSUPER2 {120, 120, 120, 120, 120, 120, 176, 176, 160, 162, 164, 166, 168, 170, 172, 175}, // SKINCOLOR_GSUPER3 @@ -314,11 +366,6 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = { {120, 120, 120, 120, 120, 120, 96, 97, 98, 99, 81, 81, 70, 73, 76, 79}, // SKINCOLOR_CSUPER3 {120, 120, 120, 120, 96, 96, 97, 98, 99, 81, 81, 70, 72, 74, 76, 79}, // SKINCOLOR_CSUPER4 {120, 120, 96, 96, 97, 98, 98, 99, 81, 81, 69, 71, 73, 75, 77, 79}, // SKINCOLOR_CSUPER5 - {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 208, 210, 212, 215, 220, 222}, // SKINCOLOR_ASUPER1 - {120, 120, 120, 120, 120, 120, 120, 120, 208, 209, 211, 213, 215, 220, 221, 223}, // SKINCOLOR_ASUPER2 - {120, 120, 120, 120, 120, 120, 208, 209, 210, 211, 212, 213, 215, 220, 221, 223}, // SKINCOLOR_ASUPER3 - {120, 120, 120, 120, 208, 209, 210, 211, 212, 213, 214, 215, 220, 221, 222, 223}, // SKINCOLOR_ASUPER4 - {120, 120, 208, 208, 209, 210, 211, 211, 212, 213, 214, 215, 220, 221, 222, 223}, // SKINCOLOR_ASUPER5 // MAXTRANSLATIONS }; @@ -4317,7 +4364,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) else { player->mo->colorized = true; - player->mo->color = SKINCOLOR_SCARLET; + player->mo->color = SKINCOLOR_CRIMSON; } } else if (player->kartstuff[k_invincibilitytimer]) // setting players to use the star colormap and spawning afterimages @@ -8698,13 +8745,13 @@ void K_drawKartHUD(void) for (c = 1; c < MAXSKINCOLORS; c++) { UINT8 *cm = R_GetTranslationColormap(TC_RAINBOW, c, 0); - V_DrawFixedPatch(x<skin], cm); + V_DrawFixedPatch(x<>1, 0, facewantprefix[stplyr->skin], cm); - x += 30; - if (x > BASEVIDWIDTH-30) + x += 16; + if (x > BASEVIDWIDTH-16) { x = 0; - y += 30; + y += 16; } } } From f0a0666223f90f8e83bea5d3595de624789f7b14 Mon Sep 17 00:00:00 2001 From: James R Date: Sat, 2 Mar 2019 15:56:44 -0800 Subject: [PATCH 51/62] Use long double suffix --- src/doomdef.h | 6 +++++- src/hardware/hw_bsp.c | 2 +- src/hardware/hw_dll.h | 3 --- src/hardware/r_opengl/r_opengl.c | 2 +- src/r_plane.c | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/doomdef.h b/src/doomdef.h index ab863c6f..59b1235a 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -471,13 +471,17 @@ INT32 I_GetKey(void); #define max(x, y) (((x) > (y)) ? (x) : (y)) #endif +#ifndef M_PIl +#define M_PIl 3.1415926535897932384626433832795029L +#endif + // Floating point comparison epsilons from float.h #ifndef FLT_EPSILON #define FLT_EPSILON 1.1920928955078125e-7f #endif #ifndef DBL_EPSILON -#define DBL_EPSILON 2.2204460492503131e-16 +#define DBL_EPSILON 2.2204460492503131e-16l #endif // An assert-type mechanism. diff --git a/src/hardware/hw_bsp.c b/src/hardware/hw_bsp.c index 48393249..9e454bcd 100644 --- a/src/hardware/hw_bsp.c +++ b/src/hardware/hw_bsp.c @@ -201,7 +201,7 @@ static polyvertex_t *fracdivline(fdivline_t *bsp, polyvertex_t *v1, // (do not accept hit with the extensions) num = (v2x - v1x)*v2dy + (v1y - v2y)*v2dx; frac = num / den; - if (frac < 0.0 || frac > 1.0) + if (frac < 0.0l || frac > 1.0l) return NULL; // now get the frac along the BSP line diff --git a/src/hardware/hw_dll.h b/src/hardware/hw_dll.h index 6b9f4d53..46645278 100644 --- a/src/hardware/hw_dll.h +++ b/src/hardware/hw_dll.h @@ -61,9 +61,6 @@ typedef void (*I_Error_t) (const char *error, ...) FUNCIERROR; // ========================================================================== // Constants -#ifndef M_PIl -#define M_PIl 3.1415926535897932384626433832795029L -#endif #define DEGREE (0.017453292519943295769236907684883l) // 2*PI/360 void DBG_Printf(const char *lpFmt, ...) /*FUNCPRINTF*/; diff --git a/src/hardware/r_opengl/r_opengl.c b/src/hardware/r_opengl/r_opengl.c index 3a8be6a0..8b3787da 100644 --- a/src/hardware/r_opengl/r_opengl.c +++ b/src/hardware/r_opengl/r_opengl.c @@ -2088,7 +2088,7 @@ EXPORT void HWRAPI(SetTransform) (FTransform *stransform) pglLoadIdentity(); if (special_splitscreen) { - used_fov = atan(tan(used_fov*M_PI/360)*0.8)*360/M_PI; + used_fov = atan(tan(used_fov*M_PIl/360.0l)*0.8l)*360/M_PIl; GLPerspective(used_fov, 2*ASPECT_RATIO); } else diff --git a/src/r_plane.c b/src/r_plane.c index 3c1fc30e..0ff97fcc 100644 --- a/src/r_plane.c +++ b/src/r_plane.c @@ -1051,7 +1051,7 @@ void R_DrawSinglePlane(visplane_t *pl) temp = P_GetZAt(pl->slope, pl->viewx, pl->viewy); zeroheight = FIXED_TO_FLOAT(temp); -#define ANG2RAD(angle) ((float)((angle)*M_PI)/ANGLE_180) +#define ANG2RAD(angle) ((float)((angle)*M_PIl)/ANGLE_180) // p is the texture origin in view space // Don't add in the offsets at this stage, because doing so can result in From 56e8f09ae8335327cf6a8c7484ead411a09c84f9 Mon Sep 17 00:00:00 2001 From: Alam Arias Date: Mon, 4 Mar 2019 16:33:06 -0500 Subject: [PATCH 52/62] fixed compiling for MSVC 2017 --- src/hardware/r_opengl/r_opengl.c | 4 ++-- src/k_kart.c | 3 ++- src/p_user.c | 2 +- src/r_things.c | 3 ++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/hardware/r_opengl/r_opengl.c b/src/hardware/r_opengl/r_opengl.c index 3a8be6a0..0c4dfdce 100644 --- a/src/hardware/r_opengl/r_opengl.c +++ b/src/hardware/r_opengl/r_opengl.c @@ -2056,7 +2056,7 @@ EXPORT void HWRAPI(DrawMD2) (INT32 *gl_cmd_buffer, md2_frame_t *frame, FTransfor EXPORT void HWRAPI(SetTransform) (FTransform *stransform) { static boolean special_splitscreen; - float used_fov; + double used_fov; pglLoadIdentity(); if (stransform) { @@ -2088,7 +2088,7 @@ EXPORT void HWRAPI(SetTransform) (FTransform *stransform) pglLoadIdentity(); if (special_splitscreen) { - used_fov = atan(tan(used_fov*M_PI/360)*0.8)*360/M_PI; + used_fov = atan(tan(used_fov*M_PIl/360)*0.8)*360/M_PIl; GLPerspective(used_fov, 2*ASPECT_RATIO); } else diff --git a/src/k_kart.c b/src/k_kart.c index 8e607191..f5fe06bc 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1191,10 +1191,11 @@ void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean solid) return; { // Normalize distance to the sum of the two objects' radii, since in a perfect world that would be the distance at the point of collision... - fixed_t dist = P_AproxDistance(distx, disty) ?: 1; + fixed_t dist = P_AproxDistance(distx, disty); fixed_t nx = FixedDiv(distx, dist); fixed_t ny = FixedDiv(disty, dist); + dist = dist ? dist : 1; distx = FixedMul(mobj1->radius+mobj2->radius, nx); disty = FixedMul(mobj1->radius+mobj2->radius, ny); diff --git a/src/p_user.c b/src/p_user.c index e26acdfd..7350b921 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -6662,7 +6662,7 @@ static void P_MovePlayer(player_t *player) //CONS_Printf("leftover turn (%s): %5d or %4d%%\n", // player_names[player-players], // (INT16) (cmd->angleturn - (player->mo->angle>>16)), - // (INT16) (cmd->angleturn - (player->mo->angle>>16)) * 100 / (angle_diff ?: 1)); + // (INT16) (cmd->angleturn - (player->mo->angle>>16)) * 100 / (angle_diff ? angle_diff : 1)); } } diff --git a/src/r_things.c b/src/r_things.c index e4eaf413..59a904cb 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -1314,7 +1314,8 @@ static void R_ProjectSprite(mobj_t *thing) if (max(tz, tz2) < FixedMul(MINZ, this_scale)) // non-papersprite clipping is handled earlier return; - scalestep = (yscale2 - yscale)/(x2 - x1) ?: 1; + scalestep = (yscale2 - yscale)/(x2 - x1); + scalestep = scalestep ? scalestep : 1; // The following two are alternate sorting methods which might be more applicable in some circumstances. TODO - maybe enable via MF2? // sortscale = max(yscale, yscale2); From ae14d967ea1ce5a1e31a7525bcde222e6a05c5d4 Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Tue, 5 Mar 2019 17:50:43 -0500 Subject: [PATCH 53/62] Misc changes - Start cooldown deactivates exactly 30 sec, instead of after 30 seconds. Barely affects gameplay but it looks slightly less of a magic number looking at the code. - Prevent multiple Thunder Shields being out via normal means. - Slightly loosened up the invincibility item limits -- gives more invincibility items sooner for odd player counts but doesn't affect the numbers for the game's balancing points (4P, 8P) - Update comments --- src/k_kart.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 10e12da8..b7bf8653 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -681,6 +681,7 @@ static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed) INT32 newodds; INT32 i; UINT8 pingame = 0, pexiting = 0, pinvin = 0; + boolean thunderisout = false; SINT8 first = -1, second = -1; INT32 secondist = 0; boolean itemenabled[NUMKARTRESULTS-1] = { @@ -725,10 +726,13 @@ static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed) { if (!playeringame[i] || players[i].spectator) continue; + if (!G_BattleGametype() || players[i].kartstuff[k_bumper]) pingame++; + if (players[i].exiting) pexiting++; + if (players[i].mo) { if (players[i].kartstuff[k_itemtype] == KITEM_INVINCIBILITY @@ -736,6 +740,10 @@ static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed) || players[i].kartstuff[k_invincibilitytimer] || players[i].kartstuff[k_growshrinktimer] > 0) pinvin++; + + if (players[i].kartstuff[k_itemtype] == KITEM_THUNDERSHIELD) + thunderisout = true; + if (!G_BattleGametype()) { if (players[i].kartstuff[k_position] == 1 && first == -1) @@ -759,9 +767,9 @@ static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed) // POWERITEMODDS handles all of the "frantic item" related functionality, for all of our powerful items. // First, it multiplies it by 2 if franticitems is true; easy-peasy. // Next, it multiplies it again if it's in SPB mode and 2nd needs to apply pressure to 1st. - // Then, it multiplies it further if there's less than 5 players in game. - // This is done to make low player count races more fair & interesting. (2P normal would be about halfway between 8P normal and 8P frantic) - // Lastly, it *divides* it by your mashed value, which was determined in K_KartItemRoulette, to punish those who are impatient. + // Then, it multiplies it further if the player count isn't equal to 8. + // This is done to make low player count races more interesting and high player count rates more fair. (2P normal would be about halfway between 8P normal and 8P frantic) + // Lastly, it *divides* it by your mashed value, which was determined in K_KartItemRoulette, for lesser items needed in a pinch. #define POWERITEMODDS(odds) \ if (franticitems) \ odds <<= 1; \ @@ -769,13 +777,13 @@ static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed) if (mashed > 0) \ odds = FixedDiv(odds<> FRACBITS \ -#define COOLDOWNONSTART (leveltime < (31*TICRATE)+starttime) +#define COOLDOWNONSTART (leveltime < (30*TICRATE)+starttime) switch (item) { case KITEM_INVINCIBILITY: case KITEM_GROW: - if (pinvin >= max(1, (pingame+2) / 4) || COOLDOWNONSTART) + if (pinvin >= max(1, (pingame+3) / 4) || COOLDOWNONSTART) newodds = 0; else POWERITEMODDS(newodds); @@ -783,7 +791,6 @@ static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed) case KITEM_ROCKETSNEAKER: case KITEM_JAWZ: case KITEM_BALLHOG: - case KITEM_THUNDERSHIELD: case KRITEM_TRIPLESNEAKER: case KRITEM_TRIPLEBANANA: case KRITEM_TENFOLDBANANA: @@ -811,6 +818,11 @@ static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed) else POWERITEMODDS(newodds); break; + case KITEM_THUNDERSHIELD: + if (thunderisout) + newodds = 0; + else + POWERITEMODDS(newodds); case KITEM_HYUDORO: if ((hyubgone > 0) || COOLDOWNONSTART) newodds = 0; From 5760e106e5a6859d082779cb5a157e24ae750bd0 Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Tue, 5 Mar 2019 19:45:20 -0500 Subject: [PATCH 54/62] SPB updates - SPB Rush odds are not affected by player count. - Thunder Shield cannot be rolled with SPB out. - Reticule is displayed on minimap while SPB is out. --- src/k_kart.c | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index b7bf8653..4c59f1e0 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -675,7 +675,7 @@ static void K_KartGetItemResult(player_t *player, SINT8 getitem) \return void */ -static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed) +static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed, boolean spbrush) { const INT32 distvar = (64*14); INT32 newodds; @@ -768,12 +768,17 @@ static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed) // First, it multiplies it by 2 if franticitems is true; easy-peasy. // Next, it multiplies it again if it's in SPB mode and 2nd needs to apply pressure to 1st. // Then, it multiplies it further if the player count isn't equal to 8. - // This is done to make low player count races more interesting and high player count rates more fair. (2P normal would be about halfway between 8P normal and 8P frantic) + // This is done to make low player count races more interesting and high player count rates more fair. + // (2P normal would be about halfway between 8P normal and 8P frantic.) + // (This scaling is not done for SPB Rush, so that catchup strength is not weakened.) // Lastly, it *divides* it by your mashed value, which was determined in K_KartItemRoulette, for lesser items needed in a pinch. + +#define PLAYERSCALING (8 - (spbrush ? 2 : pingame)) + #define POWERITEMODDS(odds) \ if (franticitems) \ odds <<= 1; \ - odds = FixedMul(odds<> FRACBITS; \ + odds = FixedMul(odds<> FRACBITS; \ if (mashed > 0) \ odds = FixedDiv(odds<> FRACBITS \ @@ -860,7 +865,7 @@ static INT32 K_FindUseodds(player_t *player, fixed_t mashed, INT32 pingame, INT3 for (j = 1; j < NUMKARTRESULTS; j++) { - if (K_KartGetItemOdds(i, j, mashed) > 0) + if (K_KartGetItemOdds(i, j, mashed, spbrush) > 0) { available = true; break; @@ -966,6 +971,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) INT32 bestbumper = 0; fixed_t mashed = 0; boolean dontforcespb = false; + boolean spbrush = false; // This makes the roulette cycle through items - if this is 0, you shouldn't be here. if (player->kartstuff[k_itemroulette]) @@ -1058,15 +1064,18 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) return; } + if (G_RaceGametype()) + spbrush = (spbplace != -1 && player->kartstuff[k_position] == spbplace+1); + // Initializes existing spawnchance values for (i = 0; i < NUMKARTRESULTS; i++) spawnchance[i] = 0; // Split into another function for a debug function below - useodds = K_FindUseodds(player, mashed, pingame, bestbumper, (spbplace != -1 && player->kartstuff[k_position] == spbplace+1), dontforcespb); + useodds = K_FindUseodds(player, mashed, pingame, bestbumper, spbrush, dontforcespb); for (i = 1; i < NUMKARTRESULTS; i++) - spawnchance[i] = (totalspawnchance += K_KartGetItemOdds(useodds, i, mashed)); + spawnchance[i] = (totalspawnchance += K_KartGetItemOdds(useodds, i, mashed, spbrush)); // Award the player whatever power is rolled if (totalspawnchance > 0) @@ -7859,8 +7868,12 @@ static void K_drawKartMinimapHead(mobj_t *mo, INT32 x, INT32 y, INT32 flags, pat else colormap = R_GetTranslationColormap(skin, mo->color, GTC_CACHE); V_DrawFixedPatch(amxpos, amypos, FRACUNIT, flags, facemmapprefix[skin], colormap); - if (mo->player && K_IsPlayerWanted(mo->player)) + if (mo->player + && ((G_RaceGametype() && mo->player->kartstuff[k_position] == spbplace) + || (G_BattleGametype() && K_IsPlayerWanted(mo->player)))) + { V_DrawFixedPatch(amxpos - (4<kartstuff[k_position] == spbplace+1), dontforcespb); + if (G_RaceGametype()) + spbrush = (spbplace != -1 && stplyr->kartstuff[k_position] == spbplace+1); + + useodds = K_FindUseodds(stplyr, 0, pingame, bestbumper, spbrush, dontforcespb); for (i = 1; i < NUMKARTRESULTS; i++) { - const INT32 itemodds = K_KartGetItemOdds(useodds, i, 0); + const INT32 itemodds = K_KartGetItemOdds(useodds, i, 0, spbrush); if (itemodds <= 0) continue; From 36a7e88e6382aeb2878364eb4bb2cab46a7b2664 Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Tue, 5 Mar 2019 20:49:11 -0500 Subject: [PATCH 55/62] Mine updates - Increase gravity of super-forward throws - Revert explosion radius change - Nerf generic explosion stun (SPB explosion stun is identical) --- src/info.c | 4 ++-- src/k_kart.c | 19 +++++++++++++++---- src/p_mobj.c | 6 ++++-- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/info.c b/src/info.c index 270e21fd..41711fa4 100644 --- a/src/info.c +++ b/src/info.c @@ -15577,7 +15577,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 0, // reactiontime sfx_None, // attacksound S_NULL, // painstate - 128*FRACUNIT, // painchance + 192*FRACUNIT, // painchance sfx_None, // painsound S_NULL, // meleestate S_NULL, // missilestate @@ -15604,7 +15604,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 8, // reactiontime sfx_None, // attacksound S_NULL, // painstate - 128*FRACUNIT, // painchance + 192*FRACUNIT, // painchance sfx_None, // painsound S_NULL, // meleestate S_NULL, // missilestate diff --git a/src/k_kart.c b/src/k_kart.c index 4c59f1e0..b1c96773 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -2217,6 +2217,7 @@ void K_ExplodePlayer(player_t *player, mobj_t *source, mobj_t *inflictor) // A b #ifdef HAVE_BLUA boolean force = false; // Used to check if Lua ShouldExplode should get us damaged reguardless of flashtics or heck knows what. UINT8 shouldForce = LUAh_ShouldExplode(player, inflictor, source); + if (P_MobjWasRemoved(player->mo)) return; // mobj was removed (in theory that shouldn't happen) if (shouldForce == 1) @@ -2227,6 +2228,7 @@ void K_ExplodePlayer(player_t *player, mobj_t *source, mobj_t *inflictor) // A b #else static const boolean force = false; #endif + if (G_BattleGametype()) { if (K_IsPlayerWanted(player)) @@ -2308,13 +2310,13 @@ void K_ExplodePlayer(player_t *player, mobj_t *source, mobj_t *inflictor) // A b } player->kartstuff[k_spinouttype] = 1; - player->kartstuff[k_spinouttimer] = 2*TICRATE+(TICRATE/2); + player->kartstuff[k_spinouttimer] = (3*TICRATE/2)+2; player->powers[pw_flashing] = K_GetKartFlashing(player); if (inflictor && inflictor->type == MT_SPBEXPLOSION && inflictor->extravalue1) { - player->kartstuff[k_spinouttimer] = ((3*player->kartstuff[k_spinouttimer])/2)+1; + player->kartstuff[k_spinouttimer] = ((5*player->kartstuff[k_spinouttimer])/2)+1; player->mo->momz *= 2; } @@ -3048,12 +3050,19 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map { if (altthrow == 2) // Kitchen sink throwing { +#if 0 if (player->kartstuff[k_throwdir] == 1) dir = 3; else if (player->kartstuff[k_throwdir] == -1) dir = 1; else dir = 2; +#else + if (player->kartstuff[k_throwdir] == 1) + dir = 2; + else + dir = 1; +#endif } else { @@ -3129,10 +3138,12 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map angle_t fa = player->mo->angle>>ANGLETOFINESHIFT; fixed_t HEIGHT = (20 + (dir*10))*mapobjectscale + player->mo->momz; - mo->momx = player->mo->momx + FixedMul(FINECOSINE(fa), PROJSPEED); - mo->momy = player->mo->momy + FixedMul(FINESINE(fa), PROJSPEED); + mo->momx = player->mo->momx + FixedMul(FINECOSINE(fa), PROJSPEED*dir); + mo->momy = player->mo->momy + FixedMul(FINESINE(fa), PROJSPEED*dir); mo->momz = P_MobjFlip(player->mo) * HEIGHT; + mo->extravalue2 = dir; + if (mo->eflags & MFE_UNDERWATER) mo->momz = (117 * mo->momz) / 200; diff --git a/src/p_mobj.c b/src/p_mobj.c index da35f538..f1074e0f 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1404,11 +1404,13 @@ fixed_t P_GetMobjGravity(mobj_t *mo) break; case MT_BANANA: case MT_EGGMANITEM: + case MT_SSMINE: + case MT_SINK: + gravityadd *= mo->extravalue2; + /* FALLTHRU */ case MT_ORBINAUT: case MT_JAWZ: case MT_JAWZ_DUD: - case MT_SSMINE: - case MT_SINK: gravityadd = (5*gravityadd)/2; break; case MT_SIGN: From 4e570739fe10b38bb940d4b4af304ec9754f2c44 Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Tue, 5 Mar 2019 20:56:02 -0500 Subject: [PATCH 56/62] Make smoke opaque to reduce lag --- src/dehacked.c | 7 +++++++ src/info.c | 17 ++++++++++++----- src/k_kart.c | 2 ++ src/p_mobj.c | 2 ++ 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index 530b6906..231f0aa8 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -7150,6 +7150,13 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_KARMAFIREWORK4", "S_KARMAFIREWORKTRAIL", + // Opaque smoke version, to prevent lag + "S_OPAQUESMOKE1", + "S_OPAQUESMOKE2", + "S_OPAQUESMOKE3", + "S_OPAQUESMOKE4", + "S_OPAQUESMOKE5", + #ifdef SEENAMES "S_NAMECHECK", #endif diff --git a/src/info.c b/src/info.c index 41711fa4..84cb4cd4 100644 --- a/src/info.c +++ b/src/info.c @@ -3140,11 +3140,11 @@ state_t states[NUMSTATES] = {SPR_NULL, 0, 1, {A_FZBoomSmoke}, 1, 0, S_FZEROBOOM12}, // S_FZEROBOOM11 {SPR_NULL, 0, 1, {A_FZBoomSmoke}, 0, 0, S_NULL}, // S_FZEROBOOM12 - {SPR_SMOK, FF_TRANS30, 30, {NULL}, 0, 0, S_FZSLOWSMOKE2}, // S_FZSLOWSMOKE1 - {SPR_SMOK, FF_TRANS30|1, 30, {NULL}, 0, 0, S_FZSLOWSMOKE3}, // S_FZSLOWSMOKE2 - {SPR_SMOK, FF_TRANS30|2, 30, {NULL}, 0, 0, S_FZSLOWSMOKE4}, // S_FZSLOWSMOKE3 - {SPR_SMOK, FF_TRANS30|3, 30, {NULL}, 0, 0, S_FZSLOWSMOKE5}, // S_FZSLOWSMOKE4 - {SPR_SMOK, FF_TRANS30|4, 30, {NULL}, 0, 0, S_NULL}, // S_FZSLOWSMOKE5 + {SPR_SMOK, 0, 30, {NULL}, 0, 0, S_FZSLOWSMOKE2}, // S_FZSLOWSMOKE1 + {SPR_SMOK, 1, 30, {NULL}, 0, 0, S_FZSLOWSMOKE3}, // S_FZSLOWSMOKE2 + {SPR_SMOK, 2, 30, {NULL}, 0, 0, S_FZSLOWSMOKE4}, // S_FZSLOWSMOKE3 + {SPR_SMOK, 3, 30, {NULL}, 0, 0, S_FZSLOWSMOKE5}, // S_FZSLOWSMOKE4 + {SPR_SMOK, 4, 30, {NULL}, 0, 0, S_NULL}, // S_FZSLOWSMOKE5 // Various plants {SPR_SBUS, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SONICBUSH @@ -3394,6 +3394,13 @@ state_t states[NUMSTATES] = {SPR_FWRK, 3|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_KARMAFIREWORK1}, // S_KARMAFIREWORK4 {SPR_FWRK, 4|FF_FULLBRIGHT, TICRATE, {NULL}, 0, 0, S_NULL}, // S_KARMAFIREWORKTRAIL + // Opaque smoke + {SPR_SMOK, 0, 4, {NULL}, 0, 0, S_OPAQUESMOKE2}, // S_OPAQUESMOKE1 + {SPR_SMOK, 1, 5, {NULL}, 0, 0, S_OPAQUESMOKE3}, // S_OPAQUESMOKE2 + {SPR_SMOK, 2, 6, {NULL}, 0, 0, S_OPAQUESMOKE4}, // S_OPAQUESMOKE3 + {SPR_SMOK, 3, 7, {NULL}, 0, 0, S_OPAQUESMOKE5}, // S_OPAQUESMOKE4 + {SPR_SMOK, 4, 8, {NULL}, 0, 0, S_NULL}, // S_OPAQUESMOKE5 + #ifdef SEENAMES {SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL}, // S_NAMECHECK #endif diff --git a/src/k_kart.c b/src/k_kart.c index b1c96773..dee5df73 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -2515,6 +2515,7 @@ void K_SpawnMineExplosion(mobj_t *source, UINT8 color) for (i = 0; i < 32; i++) { dust = P_SpawnMobj(source->x, source->y, source->z, MT_SMOKE); + P_SetMobjState(dust, S_OPAQUESMOKE1); dust->angle = (ANGLE_180/16) * i; P_SetScale(dust, source->scale); dust->destscale = source->scale*10; @@ -2542,6 +2543,7 @@ void K_SpawnMineExplosion(mobj_t *source, UINT8 color) dust = P_SpawnMobj(source->x + P_RandomRange(-radius, radius)*FRACUNIT, source->y + P_RandomRange(-radius, radius)*FRACUNIT, source->z + P_RandomRange(0, height)*FRACUNIT, MT_SMOKE); + P_SetMobjState(dust, S_OPAQUESMOKE1); P_SetScale(dust, source->scale); dust->destscale = source->scale*10; dust->scalespeed = source->scale/12; diff --git a/src/p_mobj.c b/src/p_mobj.c index f1074e0f..6d36dcc9 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -6653,6 +6653,7 @@ void P_MobjThinker(mobj_t *mobj) fixed_t y = P_RandomRange(-35, 35)*mobj->scale; fixed_t z = P_RandomRange(0, 70)*mobj->scale; mobj_t *smoke = P_SpawnMobj(mobj->x + x, mobj->y + y, mobj->z + z, MT_SMOKE); + P_SetMobjState(smoke, S_OPAQUESMOKE1); smoke->scale = mobj->scale * 2; smoke->destscale = mobj->scale * 6; smoke->momz = P_RandomRange(4, 9)*FRACUNIT; @@ -6674,6 +6675,7 @@ void P_MobjThinker(mobj_t *mobj) else { mobj_t *smoke = P_SpawnMobj(mobj->x + x, mobj->y + y, mobj->z + z, MT_SMOKE); + P_SetMobjState(smoke, S_OPAQUESMOKE1); smoke->scale = mobj->scale; smoke->destscale = mobj->scale*2; } From a3e00bdb0e6640d6d98a27498d2b9f5c1731864c Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Tue, 5 Mar 2019 21:25:37 -0500 Subject: [PATCH 57/62] uncommited change... :anger: --- src/info.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/info.h b/src/info.h index 157c72e1..0e23a07c 100644 --- a/src/info.h +++ b/src/info.h @@ -4052,6 +4052,12 @@ typedef enum state S_KARMAFIREWORK4, S_KARMAFIREWORKTRAIL, + S_OPAQUESMOKE1, + S_OPAQUESMOKE2, + S_OPAQUESMOKE3, + S_OPAQUESMOKE4, + S_OPAQUESMOKE5, + #ifdef SEENAMES S_NAMECHECK, #endif From 171ca1670e6e164eb669b2bcc84eda2779539db0 Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Tue, 5 Mar 2019 22:02:41 -0500 Subject: [PATCH 58/62] Add banana snipe sound effect to eggboxes & sinks --- src/p_inter.c | 4 ++++ src/p_map.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/p_inter.c b/src/p_inter.c index dd27858f..824d714d 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -411,6 +411,10 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) player->kartstuff[k_roulettetype] = 2; } + // Eggbox snipe! + if (special->type == MT_EGGMANITEM && special->health > 1) + S_StartSound(toucher, sfx_bsnipe); + { mobj_t *poof = P_SpawnMobj(special->x, special->y, special->z, MT_EXPLODE); S_StartSound(poof, special->info->deathsound); diff --git a/src/p_map.c b/src/p_map.c index d3680c6c..843f588c 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -853,7 +853,7 @@ static boolean PIT_CheckThing(mobj_t *thing) if (thing->type == MT_PLAYER) { - S_StartSound(NULL, sfx_cgot); //let all players hear it. + S_StartSound(NULL, sfx_bsnipe); //let all players hear it. HU_SetCEchoFlags(0); HU_SetCEchoDuration(5); HU_DoCEcho(va("%s\\was hit by a kitchen sink.\\\\\\\\", player_names[thing->player-players])); From f230e0d6447ff71b9de47825d65d6f2e44daa2db Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Tue, 5 Mar 2019 22:06:47 -0500 Subject: [PATCH 59/62] Put eggbox sniping behind an #if On second thought, the old method is "sneakier" --- src/p_inter.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/p_inter.c b/src/p_inter.c index 824d714d..7da581a5 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -411,9 +411,11 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) player->kartstuff[k_roulettetype] = 2; } +#if 0 // Eggbox snipe! if (special->type == MT_EGGMANITEM && special->health > 1) S_StartSound(toucher, sfx_bsnipe); +#endif { mobj_t *poof = P_SpawnMobj(special->x, special->y, special->z, MT_EXPLODE); From f5fe0736274a2adb5eea62ff34bc153d6ec4f0cd Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Wed, 6 Mar 2019 01:53:52 -0500 Subject: [PATCH 60/62] Fix floating lob items --- src/p_mobj.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 6d36dcc9..7f4e747c 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1406,7 +1406,8 @@ fixed_t P_GetMobjGravity(mobj_t *mo) case MT_EGGMANITEM: case MT_SSMINE: case MT_SINK: - gravityadd *= mo->extravalue2; + if (mo->extravalue2 > 0) + gravityadd *= mo->extravalue2; /* FALLTHRU */ case MT_ORBINAUT: case MT_JAWZ: From c18935fbddd63db52a4735667179412e21aef12d Mon Sep 17 00:00:00 2001 From: Sally Cochenour Date: Wed, 6 Mar 2019 03:15:07 -0500 Subject: [PATCH 61/62] Reorder colors, ensure colored names are set properly --- src/dehacked.c | 18 +++--- src/doomdef.h | 12 ++-- src/hu_stuff.c | 163 ++++++++++++++++++++++++++++++++++++++----------- src/k_kart.c | 42 ++++++------- 4 files changed, 164 insertions(+), 71 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index 0088f664..421d5b44 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -8140,6 +8140,8 @@ static const char *COLOR_ENUMS[] = { // Rejigged for Kart. "GREY", // SKINCOLOR_GREY "NICKEL", // SKINCOLOR_NICKEL "BLACK", // SKINCOLOR_BLACK + "FAIRY", // SKINCOLOR_FAIRY + "POPCORN", // SKINCOLOR_POPCORN "SEPIA", // SKINCOLOR_SEPIA "BEIGE", // SKINCOLOR_BEIGE "BROWN", // SKINCOLOR_BROWN @@ -8167,9 +8169,9 @@ static const char *COLOR_ENUMS[] = { // Rejigged for Kart. "TANGERINE", // SKINCOLOR_TANGERINE "PEACH", // SKINCOLOR_PEACH "CARAMEL", // SKINCOLOR_CARAMEL - "POPCORN", // SKINCOLOR_POPCORN "CREAM", // SKINCOLOR_CREAM "GOLD", // SKINCOLOR_GOLD + "ROYAL", // SKINCOLOR_ROYAL "BRONZE", // SKINCOLOR_BRONZE "COPPER", // SKINCOLOR_COPPER "YELLOW", // SKINCOLOR_YELLOW @@ -8181,18 +8183,18 @@ static const char *COLOR_ENUMS[] = { // Rejigged for Kart. "HANDHELD", // SKINCOLOR_HANDHELD "TEA", // SKINCOLOR_TEA "PISTACHIO", // SKINCOLOR_PISTACHIO + "MOSS", // SKINCOLOR_MOSS "CAMOUFLAGE", // SKINCOLOR_CAMOUFLAGE "ROBOHOOD", // SKINCOLOR_ROBOHOOD - "MOSS", // SKINCOLOR_MOSS "MINT", // SKINCOLOR_MINT "GREEN", // SKINCOLOR_GREEN "PINETREE", // SKINCOLOR_PINETREE "EMERALD", // SKINCOLOR_EMERALD "SWAMP", // SKINCOLOR_SWAMP "DREAM", // SKINCOLOR_DREAM + "PLAGUE", // SKINCOLOR_PLAGUE "ALGAE", // SKINCOLOR_ALGAE "CARIBBEAN", // SKINCOLOR_CARIBBEAN - "PLAGUE", // SKINCOLOR_PLAGUE "AQUA", // SKINCOLOR_AQUA "TEAL", // SKINCOLOR_TEAL "CYAN", // SKINCOLOR_CYAN @@ -8210,20 +8212,18 @@ static const char *COLOR_ENUMS[] = { // Rejigged for Kart. "BLUEBERRY", // SKINCOLOR_BLUEBERRY "NOVA", // SKINCOLOR_NOVA "PASTEL", // SKINCOLOR_PASTEL + "MOONSLAM", // SKINCOLOR_MOONSLAM "ULTRAVIOLET", // SKINCOLOR_ULTRAVIOLET "DUSK", // SKINCOLOR_DUSK - "MOONSLAM", // SKINCOLOR_MOONSLAM "BUBBLEGUM", // SKINCOLOR_BUBBLEGUM "PURPLE", // SKINCOLOR_PURPLE "FUCHSIA", // SKINCOLOR_FUCHSIA "TOXIC", // SKINCOLOR_TOXIC - "MAUVE", // SKINCOLOR_MAUVE - "ROYAL", // SKINCOLOR_ROYAL "LAVENDER", // SKINCOLOR_LAVENDER "BYZANTIUM", // SKINCOLOR_BYZANTIUM + "MAUVE", // SKINCOLOR_MAUVE "POMEGRANATE", // SKINCOLOR_POMEGRANATE "LILAC", // SKINCOLOR_LILAC - "FAIRY", // SKINCOLOR_FAIRY // Special super colors // Super Sonic Yellow @@ -8261,7 +8261,7 @@ static const char *COLOR_ENUMS[] = { // Rejigged for Kart. "ASUPER2", // SKINCOLOR_ASUPER2, "ASUPER3", // SKINCOLOR_ASUPER3, "ASUPER4", // SKINCOLOR_ASUPER4, - "ASUPER5" // SKINCOLOR_ASUPER5, + "ASUPER5", // SKINCOLOR_ASUPER5, // Hyper Sonic Green "GSUPER1", // SKINCOLOR_GSUPER1, "GSUPER2", // SKINCOLOR_GSUPER2, @@ -8279,7 +8279,7 @@ static const char *COLOR_ENUMS[] = { // Rejigged for Kart. "CSUPER2", // SKINCOLOR_CSUPER2, "CSUPER3", // SKINCOLOR_CSUPER3, "CSUPER4", // SKINCOLOR_CSUPER4, - "CSUPER5", // SKINCOLOR_CSUPER5, + "CSUPER5" // SKINCOLOR_CSUPER5, }; static const char *const POWERS_LIST[] = { diff --git a/src/doomdef.h b/src/doomdef.h index 59c2dfc3..e5544c07 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -257,6 +257,7 @@ typedef enum SKINCOLOR_NICKEL, SKINCOLOR_BLACK, SKINCOLOR_POPCORN, + SKINCOLOR_FAIRY, SKINCOLOR_SEPIA, SKINCOLOR_BEIGE, SKINCOLOR_BROWN, @@ -286,6 +287,7 @@ typedef enum SKINCOLOR_CARAMEL, SKINCOLOR_CREAM, SKINCOLOR_GOLD, + SKINCOLOR_ROYAL, SKINCOLOR_BRONZE, SKINCOLOR_COPPER, SKINCOLOR_YELLOW, @@ -293,13 +295,13 @@ typedef enum SKINCOLOR_OLIVE, SKINCOLOR_VOMIT, SKINCOLOR_GARDEN, - SKINCOLOR_CAMOUFLAGE, SKINCOLOR_LIME, SKINCOLOR_HANDHELD, SKINCOLOR_TEA, SKINCOLOR_PISTACHIO, - SKINCOLOR_ROBOHOOD, SKINCOLOR_MOSS, + SKINCOLOR_CAMOUFLAGE, + SKINCOLOR_ROBOHOOD, SKINCOLOR_MINT, SKINCOLOR_GREEN, SKINCOLOR_PINETREE, @@ -307,8 +309,8 @@ typedef enum SKINCOLOR_SWAMP, SKINCOLOR_DREAM, SKINCOLOR_PLAGUE, - SKINCOLOR_CARIBBEAN, SKINCOLOR_ALGAE, + SKINCOLOR_CARIBBEAN, SKINCOLOR_AQUA, SKINCOLOR_TEAL, SKINCOLOR_CYAN, @@ -326,20 +328,18 @@ typedef enum SKINCOLOR_BLUEBERRY, SKINCOLOR_NOVA, SKINCOLOR_PASTEL, + SKINCOLOR_MOONSLAM, SKINCOLOR_ULTRAVIOLET, SKINCOLOR_DUSK, - SKINCOLOR_MOONSLAM, SKINCOLOR_BUBBLEGUM, SKINCOLOR_PURPLE, SKINCOLOR_FUCHSIA, SKINCOLOR_TOXIC, SKINCOLOR_MAUVE, - SKINCOLOR_ROYAL, SKINCOLOR_LAVENDER, SKINCOLOR_BYZANTIUM, SKINCOLOR_POMEGRANATE, SKINCOLOR_LILAC, - SKINCOLOR_FAIRY, // "Careful! MAXSKINCOLORS cannot be greater than 0x40 -- Which it is now." // (This comment is a dirty liar! This is only limited by the integer type, so 255 for UINT8.) diff --git a/src/hu_stuff.c b/src/hu_stuff.c index 94cca970..45870577 100644 --- a/src/hu_stuff.c +++ b/src/hu_stuff.c @@ -778,44 +778,139 @@ static void Got_Saycmd(UINT8 **p, INT32 playernum) } } else - { + { const UINT8 color = players[playernum].skincolor; cstart = "\x83"; - if (color <= SKINCOLOR_SILVER || color == SKINCOLOR_SLATE) - cstart = "\x80"; // white - else if (color <= SKINCOLOR_BLACK || color == SKINCOLOR_JET) - cstart = "\x86"; // V_GRAYMAP - else if (color <= SKINCOLOR_LEATHER) - cstart = "\x8e"; // V_BROWNMAP - else if (color <= SKINCOLOR_ROSE || color == SKINCOLOR_LILAC) - cstart = "\x8d"; // V_PINKMAP - else if (color <= SKINCOLOR_KETCHUP) - cstart = "\x85"; // V_REDMAP - else if (color <= SKINCOLOR_TANGERINE) - cstart = "\x87"; // V_ORANGEMAP - else if (color <= SKINCOLOR_CREAM) - cstart = "\x8f"; // V_PEACHMAP - else if (color <= SKINCOLOR_COPPER) - cstart = "\x8A"; // V_GOLDMAP - else if (color <= SKINCOLOR_OLIVE) - cstart = "\x82"; // V_YELLOWMAP - else if (color <= SKINCOLOR_PISTACHIO) - cstart = "\x8b"; // V_TEAMAP - else if (color <= SKINCOLOR_ALGAE || color == SKINCOLOR_LIME || color == SKINCOLOR_HANDHELD) - cstart = "\x83"; // V_GREENMAP - else if (color <= SKINCOLOR_NAVY || color == SKINCOLOR_SAPPHIRE) - cstart = "\x88"; // V_SKYMAP - else if (color <= SKINCOLOR_STEEL) - cstart = "\x8c"; // V_STEELMAP - else if (color <= SKINCOLOR_BLUEBERRY) - cstart = "\x84"; // V_BLUEMAP - else if (color == SKINCOLOR_PURPLE) - cstart = "\x81"; // V_PURPLEMAP - else //if (color <= SKINCOLOR_POMEGRANATE) - cstart = "\x89"; // V_LAVENDERMAP - } + switch (color) + { + case SKINCOLOR_WHITE: + case SKINCOLOR_SILVER: + case SKINCOLOR_SLATE: + cstart = "\x80"; // White + break; + case SKINCOLOR_GREY: + case SKINCOLOR_NICKEL: + case SKINCOLOR_BLACK: + case SKINCOLOR_JET: + cstart = "\x86"; // V_GRAYMAP + break; + case SKINCOLOR_SEPIA: + case SKINCOLOR_BEIGE: + case SKINCOLOR_BROWN: + case SKINCOLOR_LEATHER: + case SKINCOLOR_RUST: + cstart = "\x8e"; // V_BROWNMAP + break; + case SKINCOLOR_FAIRY: + case SKINCOLOR_SALMON: + case SKINCOLOR_PINK: + case SKINCOLOR_ROSE: + case SKINCOLOR_BRICK: + case SKINCOLOR_BUBBLEGUM: + case SKINCOLOR_LILAC: + cstart = "\x8d"; // V_PINKMAP + break; + case SKINCOLOR_RUBY: + case SKINCOLOR_RASPBERRY: + case SKINCOLOR_CHERRY: + case SKINCOLOR_RED: + case SKINCOLOR_CRIMSON: + case SKINCOLOR_MAROON: + case SKINCOLOR_FLAME: + case SKINCOLOR_SCARLET: + case SKINCOLOR_KETCHUP: + cstart = "\x85"; // V_REDMAP + break; + case SKINCOLOR_DAWN: + case SKINCOLOR_SUNSET: + case SKINCOLOR_CREAMSICLE: + case SKINCOLOR_ORANGE: + case SKINCOLOR_PUMPKIN: + case SKINCOLOR_ROSEWOOD: + case SKINCOLOR_BURGUNDY: + case SKINCOLOR_TANGERINE: + cstart = "\x87"; // V_ORANGEMAP + break; + case SKINCOLOR_PEACH: + case SKINCOLOR_CARAMEL: + case SKINCOLOR_CREAM: + cstart = "\x8f"; // V_PEACHMAP + break; + case SKINCOLOR_GOLD: + case SKINCOLOR_ROYAL: + case SKINCOLOR_BRONZE: + case SKINCOLOR_COPPER: + cstart = "\x8A"; // V_GOLDMAP + break; + case SKINCOLOR_POPCORN: + case SKINCOLOR_YELLOW: + case SKINCOLOR_MUSTARD: + case SKINCOLOR_OLIVE: + cstart = "\x82"; // V_YELLOWMAP + break; + case SKINCOLOR_VOMIT: + case SKINCOLOR_GARDEN: + case SKINCOLOR_TEA: + case SKINCOLOR_PISTACHIO: + cstart = "\x8b"; // V_TEAMAP + break; + case SKINCOLOR_LIME: + case SKINCOLOR_HANDHELD: + case SKINCOLOR_MOSS: + case SKINCOLOR_CAMOUFLAGE: + case SKINCOLOR_ROBOHOOD: + case SKINCOLOR_MINT: + case SKINCOLOR_GREEN: + case SKINCOLOR_PINETREE: + case SKINCOLOR_EMERALD: + case SKINCOLOR_SWAMP: + case SKINCOLOR_DREAM: + case SKINCOLOR_PLAGUE: + case SKINCOLOR_ALGAE: + cstart = "\x83"; // V_GREENMAP + break; + case SKINCOLOR_CARIBBEAN: + case SKINCOLOR_AQUA: + case SKINCOLOR_TEAL: + case SKINCOLOR_CYAN: + case SKINCOLOR_JAWZ: + case SKINCOLOR_CERULEAN: + case SKINCOLOR_NAVY: + case SKINCOLOR_SAPPHIRE: + cstart = "\x88"; // V_SKYMAP + break; + case SKINCOLOR_PLATINUM: + case SKINCOLOR_STEEL: + cstart = "\x8c"; // V_STEELMAP + break; + case SKINCOLOR_PERIWINKLE: + case SKINCOLOR_BLUE: + case SKINCOLOR_BLUEBERRY: + case SKINCOLOR_NOVA: + cstart = "\x84"; // V_BLUEMAP + break; + case SKINCOLOR_ULTRAVIOLET: + case SKINCOLOR_PURPLE: + case SKINCOLOR_FUCHSIA: + cstart = "\x81"; // V_PURPLEMAP + break; + case SKINCOLOR_PASTEL: + case SKINCOLOR_MOONSLAM: + case SKINCOLOR_DUSK: + case SKINCOLOR_TOXIC: + case SKINCOLOR_MAUVE: + case SKINCOLOR_LAVENDER: + case SKINCOLOR_BYZANTIUM: + case SKINCOLOR_POMEGRANATE: + cstart = "\x89"; // V_LAVENDERMAP + break; + default: + break; + } + } + prefix = cstart; // Give admins and remote admins their symbols. diff --git a/src/k_kart.c b/src/k_kart.c index 2bdfc40f..d75e5e42 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -49,6 +49,8 @@ const char *KartColor_Names[MAXSKINCOLORS] = "Grey", // SKINCOLOR_GREY "Nickel", // SKINCOLOR_NICKEL "Black", // SKINCOLOR_BLACK + "Fairy", // SKINCOLOR_FAIRY + "Popcorn", // SKINCOLOR_POPCORN "Sepia", // SKINCOLOR_SEPIA "Beige", // SKINCOLOR_BEIGE "Brown", // SKINCOLOR_BROWN @@ -76,9 +78,9 @@ const char *KartColor_Names[MAXSKINCOLORS] = "Tangerine", // SKINCOLOR_TANGERINE "Peach", // SKINCOLOR_PEACH "Caramel", // SKINCOLOR_CARAMEL - "Popcorn", // SKINCOLOR_POPCORN "Cream", // SKINCOLOR_CREAM "Gold", // SKINCOLOR_GOLD + "Royal", // SKINCOLOR_ROYAL "Bronze", // SKINCOLOR_BRONZE "Copper", // SKINCOLOR_COPPER "Yellow", // SKINCOLOR_YELLOW @@ -90,18 +92,18 @@ const char *KartColor_Names[MAXSKINCOLORS] = "Handheld", // SKINCOLOR_HANDHELD "Tea", // SKINCOLOR_TEA "Pistachio", // SKINCOLOR_PISTACHIO + "Moss", // SKINCOLOR_MOSS "Camouflage", // SKINCOLOR_CAMOUFLAGE "Robo-Hood", // SKINCOLOR_ROBOHOOD - "Moss", // SKINCOLOR_MOSS "Mint", // SKINCOLOR_MINT "Green", // SKINCOLOR_GREEN "Pinetree", // SKINCOLOR_PINETREE "Emerald", // SKINCOLOR_EMERALD "Swamp", // SKINCOLOR_SWAMP "Dream", // SKINCOLOR_DREAM + "Plague", // SKINCOLOR_PLAGUE "Algae", // SKINCOLOR_ALGAE "Caribbean", // SKINCOLOR_CARIBBEAN - "Plague", // SKINCOLOR_PLAGUE "Aqua", // SKINCOLOR_AQUA "Teal", // SKINCOLOR_TEAL "Cyan", // SKINCOLOR_CYAN @@ -119,20 +121,18 @@ const char *KartColor_Names[MAXSKINCOLORS] = "Blueberry", // SKINCOLOR_BLUEBERRY "Nova", // SKINCOLOR_NOVA "Pastel", // SKINCOLOR_PASTEL + "Moonslam", // SKINCOLOR_MOONSLAM "Ultraviolet", // SKINCOLOR_ULTRAVIOLET "Dusk", // SKINCOLOR_DUSK - "Moonslam", // SKINCOLOR_MOONSLAM "Bubblegum", // SKINCOLOR_BUBBLEGUM "Purple", // SKINCOLOR_PURPLE "Fuchsia", // SKINCOLOR_FUCHSIA "Toxic", // SKINCOLOR_TOXIC "Mauve", // SKINCOLOR_MAUVE - "Royal", // SKINCOLOR_ROYAL "Lavender", // SKINCOLOR_LAVENDER "Byzantium", // SKINCOLOR_BYZANTIUM "Pomegranate", // SKINCOLOR_POMEGRANATE - "Lilac", // SKINCOLOR_LILAC - "Fairy" // SKINCOLOR_FAIRY + "Lilac" // SKINCOLOR_LILAC }; // Color_Opposite replacement; frame setting has not been changed from 8 for most, should be done later @@ -144,6 +144,8 @@ const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] = SKINCOLOR_GREY,8, // SKINCOLOR_GREY SKINCOLOR_SILVER,8, // SKINCOLOR_NICKEL SKINCOLOR_WHITE,8, // SKINCOLOR_BLACK + SKINCOLOR_CAMOUFLAGE,8, // SKINCOLOR_FAIRY + SKINCOLOR_BUBBLEGUM,8, // SKINCOLOR_POPCORN SKINCOLOR_LEATHER,6, // SKINCOLOR_SEPIA SKINCOLOR_BROWN,2, // SKINCOLOR_BEIGE SKINCOLOR_BEIGE,8, // SKINCOLOR_BROWN @@ -171,9 +173,9 @@ const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] = SKINCOLOR_LIME,8, // SKINCOLOR_TANGERINE SKINCOLOR_CYAN,8, // SKINCOLOR_PEACH SKINCOLOR_CERULEAN,8, // SKINCOLOR_CARAMEL - SKINCOLOR_BUBBLEGUM,8, // SKINCOLOR_POPCORN SKINCOLOR_COPPER,10, // SKINCOLOR_CREAM SKINCOLOR_SLATE,8, // SKINCOLOR_GOLD + SKINCOLOR_PLATINUM,6, // SKINCOLOR_ROYAL SKINCOLOR_STEEL,8, // SKINCOLOR_BRONZE SKINCOLOR_CREAM,6, // SKINCOLOR_COPPER SKINCOLOR_AQUA,8, // SKINCOLOR_YELLOW @@ -185,18 +187,18 @@ const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] = SKINCOLOR_CHERRY,8, // SKINCOLOR_HANDHELD SKINCOLOR_SALMON,8, // SKINCOLOR_TEA SKINCOLOR_PINK,6, // SKINCOLOR_PISTACHIO + SKINCOLOR_ROSE,8, // SKINCOLOR_MOSS SKINCOLOR_FAIRY,10, // SKINCOLOR_CAMOUFLAGE SKINCOLOR_VOMIT,8, // SKINCOLOR_ROBOHOOD - SKINCOLOR_ROSE,8, // SKINCOLOR_MOSS SKINCOLOR_RASPBERRY,8, // SKINCOLOR_MINT SKINCOLOR_RED,8, // SKINCOLOR_GREEN SKINCOLOR_CRIMSON,8, // SKINCOLOR_PINETREE SKINCOLOR_PURPLE,8, // SKINCOLOR_EMERALD SKINCOLOR_BYZANTIUM,8, // SKINCOLOR_SWAMP SKINCOLOR_POMEGRANATE,8, // SKINCOLOR_DREAM + SKINCOLOR_NOVA,8, // SKINCOLOR_PLAGUE SKINCOLOR_SCARLET,10, // SKINCOLOR_ALGAE SKINCOLOR_FLAME,8, // SKINCOLOR_CARIBBEAN - SKINCOLOR_NOVA,8, // SKINCOLOR_PLAGUE SKINCOLOR_YELLOW,8, // SKINCOLOR_AQUA SKINCOLOR_OLIVE,8, // SKINCOLOR_TEAL SKINCOLOR_PEACH,8, // SKINCOLOR_CYAN @@ -214,19 +216,17 @@ const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] = SKINCOLOR_PUMPKIN,8, // SKINCOLOR_BLUEBERRY SKINCOLOR_PLAGUE,10, // SKINCOLOR_NOVA SKINCOLOR_FUCHSIA,11, // SKINCOLOR_PASTEL + SKINCOLOR_SUNSET,10, // SKINCOLOR_MOONSLAM SKINCOLOR_MAUVE,10, // SKINCOLOR_ULTRAVIOLET SKINCOLOR_DAWN,6, // SKINCOLOR_DUSK - SKINCOLOR_SUNSET,10, // SKINCOLOR_MOONSLAM SKINCOLOR_EMERALD,8, // SKINCOLOR_PURPLE SKINCOLOR_PASTEL,11, // SKINCOLOR_FUCHSIA SKINCOLOR_MAROON,8, // SKINCOLOR_TOXIC SKINCOLOR_ULTRAVIOLET,8, // SKINCOLOR_MAUVE - SKINCOLOR_PLATINUM,6, // SKINCOLOR_ROYAL SKINCOLOR_GARDEN,6, // SKINCOLOR_LAVENDER SKINCOLOR_SWAMP,8, // SKINCOLOR_BYZANTIUM SKINCOLOR_DREAM,8, // SKINCOLOR_POMEGRANATE - SKINCOLOR_JAWZ,6, // SKINCOLOR_LILAC - SKINCOLOR_CAMOUFLAGE,8 // SKINCOLOR_FAIRY + SKINCOLOR_JAWZ,6 // SKINCOLOR_LILAC }; UINT8 colortranslations[MAXTRANSLATIONS][16] = { @@ -236,6 +236,8 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = { { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}, // SKINCOLOR_GREY { 3, 5, 8, 11, 15, 17, 19, 21, 23, 24, 25, 26, 27, 29, 30, 31}, // SKINCOLOR_NICKEL { 4, 7, 11, 15, 20, 22, 24, 27, 28, 28, 28, 29, 29, 30, 30, 31}, // SKINCOLOR_BLACK + {120, 120, 121, 121, 122, 123, 10, 14, 16, 18, 20, 22, 24, 26, 28, 31}, // SKINCOLOR_FAIRY + {120, 96, 97, 98, 99, 71, 32, 11, 13, 16, 18, 21, 23, 26, 28, 31}, // SKINCOLOR_POPCORN { 0, 1, 3, 5, 7, 9, 34, 36, 38, 40, 42, 44, 60, 61, 62, 63}, // SKINCOLOR_SEPIA {120, 65, 67, 69, 32, 34, 36, 38, 40, 42, 44, 45, 46, 47, 62, 63}, // SKINCOLOR_BEIGE { 67, 70, 73, 76, 48, 49, 51, 53, 54, 56, 58, 59, 61, 63, 29, 30}, // SKINCOLOR_BROWN @@ -263,9 +265,9 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = { { 98, 98, 112, 112, 113, 113, 84, 85, 87, 89, 91, 93, 95, 153, 156, 159}, // SKINCOLOR_TANGERINE {120, 80, 66, 70, 72, 76, 148, 149, 150, 151, 153, 154, 156, 61, 62, 63}, // SKINCOLOR_PEACH { 64, 66, 68, 70, 72, 74, 76, 78, 48, 50, 52, 54, 56, 58, 60, 62}, // SKINCOLOR_CARAMEL - {120, 96, 97, 98, 99, 71, 32, 11, 13, 16, 18, 21, 23, 26, 28, 31}, // SKINCOLOR_POPCORN {120, 120, 96, 96, 97, 82, 84, 77, 50, 54, 57, 59, 61, 63, 29, 31}, // SKINCOLOR_CREAM {112, 112, 112, 113, 113, 114, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119}, // SKINCOLOR_GOLD + { 97, 112, 113, 113, 114, 78, 53, 252, 252, 253, 253, 254, 255, 29, 30, 31}, // SKINCOLOR_ROYAL {112, 113, 114, 115, 116, 117, 118, 119, 156, 157, 158, 159, 141, 141, 142, 143}, // SKINCOLOR_BRONZE {120, 99, 113, 114, 116, 117, 119, 61, 63, 28, 28, 29, 29, 30, 30, 31}, // SKINCOLOR_COPPER { 96, 97, 98, 100, 101, 102, 104, 113, 114, 115, 116, 117, 118, 119, 156, 159}, // SKINCOLOR_YELLOW @@ -277,18 +279,18 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = { { 98, 104, 105, 105, 106, 167, 168, 169, 170, 171, 172, 173, 174, 175, 30, 31}, // SKINCOLOR_HANDHELD {120, 120, 176, 176, 176, 177, 177, 178, 178, 179, 179, 180, 180, 181, 182, 183}, // SKINCOLOR_TEA {120, 120, 176, 176, 177, 177, 178, 179, 165, 166, 167, 168, 169, 170, 171, 172}, // SKINCOLOR_PISTACHIO + {178, 178, 178, 179, 179, 180, 181, 182, 183, 172, 172, 173, 173, 174, 174, 175}, // SKINCOLOR_MOSS { 64, 66, 69, 32, 34, 37, 40, 182, 171, 172, 172, 173, 173, 174, 174, 175}, // SKINCOLOR_CAMOUFLAGE {120, 176, 160, 165, 167, 168, 169, 182, 182, 171, 60, 61, 63, 29, 30, 31}, // SKINCOLOR_ROBOHOOD - {178, 178, 178, 179, 179, 180, 181, 182, 183, 172, 172, 173, 173, 174, 174, 175}, // SKINCOLOR_MOSS {120, 176, 176, 176, 177, 163, 164, 165, 167, 221, 221, 222, 223, 207, 207, 31}, // SKINCOLOR_MINT {160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175}, // SKINCOLOR_GREEN {161, 163, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 30, 30, 31}, // SKINCOLOR_PINETREE {160, 184, 184, 185, 185, 186, 186, 187, 187, 188, 188, 189, 189, 190, 191, 175}, // SKINCOLOR_EMERALD {160, 184, 185, 186, 187, 188, 189, 190, 191, 191, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_SWAMP {120, 120, 80, 80, 81, 177, 162, 164, 228, 228, 204, 204, 205, 205, 206, 207}, // SKINCOLOR_DREAM + {176, 160, 184, 185, 186, 187, 188, 230, 230, 206, 206, 207, 28, 29, 30, 31}, // SKINCOLOR_PLAGUE {208, 209, 210, 211, 213, 220, 216, 167, 168, 188, 188, 189, 190, 191, 30, 31}, // SKINCOLOR_ALGAE {120, 176, 177, 160, 185, 220, 216, 217, 221, 230, 206, 206, 254, 255, 29, 31}, // SKINCOLOR_CARIBBEAN - {176, 160, 184, 185, 186, 187, 188, 230, 230, 206, 206, 207, 28, 29, 30, 31}, // SKINCOLOR_PLAGUE {120, 208, 208, 210, 212, 214, 220, 220, 220, 221, 221, 222, 222, 223, 223, 191}, // SKINCOLOR_AQUA {210, 213, 220, 220, 220, 216, 216, 221, 221, 221, 222, 222, 223, 223, 191, 31}, // SKINCOLOR_TEAL {120, 120, 208, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 222, 223}, // SKINCOLOR_CYAN @@ -306,21 +308,18 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = { {226, 228, 229, 230, 232, 233, 235, 237, 239, 240, 242, 244, 246, 31, 31, 31}, // SKINCOLOR_BLUEBERRY {120, 112, 82, 83, 84, 124, 248, 228, 228, 204, 205, 206, 207, 29, 30, 31}, // SKINCOLOR_NOVA {120, 208, 209, 210, 211, 226, 202, 249, 194, 195, 196, 197, 198, 199, 255, 30}, // SKINCOLOR_PASTEL + {120, 224, 201, 226, 202, 249, 250, 196, 197, 198, 199, 140, 141, 142, 143, 31}, // SKINCOLOR_MOONSLAM {120, 64, 81, 122, 192, 249, 203, 221, 221, 219, 219, 223, 223, 191, 191, 31}, // SKINCOLOR_ULTRAVIOLET {121, 145, 192, 249, 250, 251, 204, 204, 205, 205, 206, 206, 207, 29, 30, 31}, // SKINCOLOR_DUSK - {120, 224, 201, 226, 202, 249, 250, 196, 197, 198, 199, 140, 141, 142, 143, 31}, // SKINCOLOR_MOONSLAM {120, 96, 64, 121, 67, 144, 123, 192, 193, 194, 195, 196, 197, 198, 199, 30}, // SKINCOLOR_BUBBLEGUM {121, 145, 192, 192, 193, 194, 195, 196, 196, 197, 197, 198, 198, 199, 30, 31}, // SKINCOLOR_PURPLE {120, 122, 124, 125, 126, 150, 196, 197, 198, 198, 199, 199, 240, 242, 244, 246}, // SKINCOLOR_FUCHSIA {120, 120, 176, 176, 177, 6, 8, 10, 249, 250, 196, 197, 198, 199, 143, 31}, // SKINCOLOR_TOXIC { 96, 97, 98, 112, 113, 73, 146, 248, 249, 251, 205, 205, 206, 207, 29, 31}, // SKINCOLOR_MAUVE - { 97, 112, 113, 113, 114, 78, 53, 252, 252, 253, 253, 254, 255, 29, 30, 31}, // SKINCOLOR_ROYAL {121, 145, 192, 248, 249, 250, 251, 252, 252, 253, 253, 254, 254, 255, 30, 31}, // SKINCOLOR_LAVENDER {144, 248, 249, 250, 251, 252, 253, 254, 255, 255, 29, 29, 30, 30, 31, 31}, // SKINCOLOR_BYZANTIUM {144, 145, 146, 147, 148, 149, 150, 251, 251, 252, 252, 253, 254, 255, 29, 30}, // SKINCOLOR_POMEGRANATE {120, 120, 120, 121, 121, 122, 122, 123, 192, 248, 249, 250, 251, 252, 253, 254}, // SKINCOLOR_LILAC - {120, 120, 121, 121, 122, 123, 10, 14, 16, 18, 20, 22, 24, 26, 28, 31}, // SKINCOLOR_FAIRY - // MAXSKINCOLORS {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 96, 100, 104, 113, 116, 119}, // SKINCOLOR_SUPER1 {120, 120, 120, 120, 120, 120, 120, 120, 96, 98, 101, 104, 113, 115, 117, 119}, // SKINCOLOR_SUPER2 {120, 120, 120, 120, 120, 120, 96, 98, 100, 102, 104, 113, 114, 116, 117, 119}, // SKINCOLOR_SUPER3 @@ -366,7 +365,6 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = { {120, 120, 120, 120, 120, 120, 96, 97, 98, 99, 81, 81, 70, 73, 76, 79}, // SKINCOLOR_CSUPER3 {120, 120, 120, 120, 96, 96, 97, 98, 99, 81, 81, 70, 72, 74, 76, 79}, // SKINCOLOR_CSUPER4 {120, 120, 96, 96, 97, 98, 98, 99, 81, 81, 69, 71, 73, 75, 77, 79}, // SKINCOLOR_CSUPER5 - // MAXTRANSLATIONS }; // Define for getting accurate color brightness readings according to how the human eye sees them. From 4faaa932ec609d7d6494ae8bf6c7408cc47c0e1d Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Fri, 8 Mar 2019 19:06:27 -0500 Subject: [PATCH 62/62] Fix macro expansion warning Sryder got --- src/k_kart.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index d4d2cc64..aaf77ff3 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -820,12 +820,13 @@ static INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed, boolean sp #define PLAYERSCALING (8 - (spbrush ? 2 : pingame)) -#define POWERITEMODDS(odds) \ +#define POWERITEMODDS(odds) {\ if (franticitems) \ odds <<= 1; \ odds = FixedMul(odds<> FRACBITS; \ if (mashed > 0) \ - odds = FixedDiv(odds<> FRACBITS \ + odds = FixedDiv(odds<> FRACBITS; \ +} #define COOLDOWNONSTART (leveltime < (30*TICRATE)+starttime)