From b37c50e786008a4416def7acd3a59b0dac389a9c Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Wed, 28 Mar 2018 22:12:45 -0400 Subject: [PATCH 01/17] Allow skipping (for real this time) --- src/f_finale.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/f_finale.c b/src/f_finale.c index 280d6831b..207d4025c 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -666,8 +666,8 @@ boolean F_CreditResponder(event_t *event) break; } - if (/*!(timesBeaten) && */!(netgame || multiplayer)) - return false; + /*if (!(timesBeaten) && !(netgame || multiplayer)) + return false;*/ if (event->type != ev_keydown) return false; From 7338ed99e2e230397e3a33f38a7188a521d8801a Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Thu, 29 Mar 2018 01:14:29 -0400 Subject: [PATCH 02/17] Start of a better unlockable checklist Still WIP, doesn't display properly --- src/m_cond.c | 2 +- src/m_cond.h | 1 + src/m_menu.c | 95 +++++++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 88 insertions(+), 10 deletions(-) diff --git a/src/m_cond.c b/src/m_cond.c index 729323655..9025c5214 100644 --- a/src/m_cond.c +++ b/src/m_cond.c @@ -197,7 +197,7 @@ void M_ClearSecrets(void) // ---------------------- // Condition set checking // ---------------------- -static UINT8 M_CheckCondition(condition_t *cn) +UINT8 M_CheckCondition(condition_t *cn) { switch (cn->type) { diff --git a/src/m_cond.h b/src/m_cond.h index d34b2cbf5..aadf301b6 100644 --- a/src/m_cond.h +++ b/src/m_cond.h @@ -151,6 +151,7 @@ void M_ClearSecrets(void); // Updating conditions and unlockables void M_CheckUnlockConditions(void); +UINT8 M_CheckCondition(condition_t *cn); UINT8 M_UpdateUnlockablesAndExtraEmblems(void); void M_SilentUpdateUnlockablesAndEmblems(void); UINT8 M_CheckLevelEmblems(void); diff --git a/src/m_menu.c b/src/m_menu.c index 72f7bc58e..349838bd4 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -4263,26 +4263,103 @@ static void M_LevelSelectWarp(INT32 choice) UINT8 skyRoomMenuTranslations[MAXUNLOCKABLES]; -#define NUMCHECKLIST 8 +{ + char *tempstr = ""; + + switch(cond.type) + { + case UC_PLAYTIME: + tempstr = va("Play for %i:%02i:%02i", + G_TicsToHours(cond.requirement), + G_TicsToMinutes(cond.requirement, false), + G_TicsToSeconds(cond.requirement)); + break; + case UC_MATCHESPLAYED: + tempstr = va("Play %d matches", cond.requirement); + break; + case UC_GAMECLEAR: + if (cond.requirement > 1) + tempstr = va("Beat game %d times", cond.requirement); + else + tempstr = va("Beat the game"); + break; + case UC_ALLEMERALDS: + if (cond.requirement > 1) + tempstr = va("Beat game w/ all emeralds %d times", cond.requirement); + else + tempstr = va("Beat game w/ all emeralds"); + break; + case UC_OVERALLTIME: + tempstr = va("Get overall time of %i:%02i:%02i", + G_TicsToHours(cond.requirement), + G_TicsToMinutes(cond.requirement, false), + G_TicsToSeconds(cond.requirement)); + break; + case UC_MAPVISITED: + tempstr = va("Visit %s", G_BuildMapTitle(cond.requirement-1)); + break; + case UC_MAPBEATEN: + tempstr = va("Beat %s", G_BuildMapTitle(cond.requirement-1)); + break; + case UC_MAPALLEMERALDS: + tempstr = va("Beat %s w/ all emeralds", G_BuildMapTitle(cond.requirement-1)); + break; + case UC_MAPTIME: + tempstr = va("Beat %s in %i:%02i.%02i", G_BuildMapTitle(cond.extrainfo1-1), + G_TicsToMinutes(cond.requirement, true), + G_TicsToSeconds(cond.requirement), + G_TicsToCentiseconds(cond.requirement)); + break; + case UC_TOTALEMBLEMS: + tempstr = va("Get %d emblems", cond.requirement); + break; + case UC_EXTRAEMBLEM: + tempstr = va("Get \"%s\" emblem", extraemblems[cond.requirement-1].name); + break; + default: + break; + } + + return tempstr; +} + +#define NUMCHECKLIST 32 static void M_DrawChecklist(void) { - INT32 i, j = 0; + INT32 i, line = 0; for (i = 0; i < MAXUNLOCKABLES; i++) { + INT32 c, lastid = -1; + if (unlockables[i].name[0] == 0 || unlockables[i].nochecklist || !unlockables[i].conditionset || unlockables[i].conditionset > MAXCONDITIONSETS) continue; - V_DrawString(8, 8+(24*j), V_RETURN8, unlockables[i].name); - V_DrawString(160, 8+(24*j), V_RETURN8, V_WordWrap(160, 292, 0, unlockables[i].objective)); + V_DrawString(8, 8+(line*8), V_RETURN8|(unlockables[i].unlocked ? V_GREENMAP : V_REDMAP), unlockables[i].name); + ++line; - if (unlockables[i].unlocked) - V_DrawString(308, 8+(24*j), V_YELLOWMAP, "Y"); - else - V_DrawString(308, 8+(24*j), V_YELLOWMAP, "N"); + for (c = 0; c < conditionSets[unlockables[i].conditionset].numconditions; c++) + { + condition_t cond = conditionSets[unlockables[i].conditionset].condition[c]; + UINT8 achieved = M_CheckCondition(&cond); + char *str = M_GetConditionString(cond); - if (++j >= NUMCHECKLIST) + if (!str) + continue; + + ++line; + + if (cond.id != lastid) + V_DrawString(16, 8+(line*8), V_MONOSPACE|V_ALLOWLOWERCASE|(achieved ? V_YELLOWMAP : 0), va("* %s", str)); + else + V_DrawString(16, 8+(line*8), V_MONOSPACE|V_ALLOWLOWERCASE|(achieved ? V_YELLOWMAP : 0), va(" AND %s", str)); + + lastid = cond.id; + } + line += 2; + + if (line >= NUMCHECKLIST) break; } } From c5dd734b8b820ad6c6c3e04dbdb209e98c70a770 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Thu, 29 Mar 2018 01:14:47 -0400 Subject: [PATCH 03/17] :( --- src/m_menu.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/m_menu.c b/src/m_menu.c index 349838bd4..03e622810 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -217,6 +217,7 @@ static void M_LevelSelectWarp(INT32 choice); static void M_Credits(INT32 choice); static void M_PandorasBox(INT32 choice); static void M_EmblemHints(INT32 choice); +static char *M_GetConditionString(condition_t cond); menu_t SR_MainDef, SR_UnlockChecklistDef; // Misc. Main Menu @@ -4263,6 +4264,7 @@ static void M_LevelSelectWarp(INT32 choice) UINT8 skyRoomMenuTranslations[MAXUNLOCKABLES]; +static char *M_GetConditionString(condition_t cond) { char *tempstr = ""; From 4f7ebd16077fdff1fd54b01b887d603c9df645b4 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Thu, 29 Mar 2018 01:34:31 -0400 Subject: [PATCH 04/17] More full names, and more names --- src/f_finale.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/f_finale.c b/src/f_finale.c index 207d4025c..8931f3562 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -473,14 +473,16 @@ static const char *credits[] = { "\"Iceman404\"", "\"Blade\"", "\"CoatRack\"", + "Wesley \"Charyb\" Gillebaard", "James \"SeventhSentinel\" Hall", - "Sally \"TehRealSalt\" Cochenour", // Eggman + "Sally \"TehRealSalt\" Cochenour", "\"Chaos Zero 64\"", "\"ZarroTsu\"", - "\"Spherallic\"", + "\"MotorRoach\"", + "\"VAdaPEGA\"", "", "\1Music and Sound", - "\"Charyb\"", + "Wesley \"Charyb\" Gillebaard", "James \"SeventhSentinel\" Hall", "Karl Brueggemann", "\"MaxieDaMan\"", @@ -491,9 +493,9 @@ static const char *credits[] = { "Sean \"Sryder\" Ryder", "\"Blade\"", "\"CoatRack\"", - "\"Boinciel\"", "\"Ryuspark\"", "\"ZarroTsu\"", + "Paul \"Boinciel\" Clempson", "\"Tyrannosaur Chao\" aka \"Chaotic Chao\"", "James \"SeventhSentinel\" Hall", "Sally \"TehRealSalt\" Cochenour", @@ -510,7 +512,10 @@ static const char *credits[] = { "", "\1Special Thanks", "Sonic Team Jr. & SRB2", - "Bandit \"Bippy\" Cochenour", // i <3 my dog + "\"Nev3r\"", + "\"Ritz\"", + "\"Spherallic\"", + "Bandit \"Boppy\" Cochenour", // i <3 my dog "", "\1Produced By", "Kart Krew", From aa6b39b21a1740d998beb4385fcb9ea4259382cd Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Thu, 29 Mar 2018 11:43:56 -0400 Subject: [PATCH 05/17] Finished checklist --- src/m_menu.c | 110 ++++++++++++++++++++++++++------------------------- 1 file changed, 56 insertions(+), 54 deletions(-) diff --git a/src/m_menu.c b/src/m_menu.c index 03e622810..7d64c6c69 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -4266,105 +4266,107 @@ UINT8 skyRoomMenuTranslations[MAXUNLOCKABLES]; static char *M_GetConditionString(condition_t cond) { - char *tempstr = ""; - switch(cond.type) { case UC_PLAYTIME: - tempstr = va("Play for %i:%02i:%02i", + return va("Play for %i:%02i:%02i", G_TicsToHours(cond.requirement), G_TicsToMinutes(cond.requirement, false), G_TicsToSeconds(cond.requirement)); - break; case UC_MATCHESPLAYED: - tempstr = va("Play %d matches", cond.requirement); - break; + return va("Play %d matches", cond.requirement); case UC_GAMECLEAR: if (cond.requirement > 1) - tempstr = va("Beat game %d times", cond.requirement); + return va("Beat game %d times", cond.requirement); else - tempstr = va("Beat the game"); - break; + return va("Beat the game"); case UC_ALLEMERALDS: if (cond.requirement > 1) - tempstr = va("Beat game w/ all emeralds %d times", cond.requirement); + return va("Beat game w/ all emeralds %d times", cond.requirement); else - tempstr = va("Beat game w/ all emeralds"); - break; + return va("Beat game w/ all emeralds"); case UC_OVERALLTIME: - tempstr = va("Get overall time of %i:%02i:%02i", + return va("Get overall time of %i:%02i:%02i", G_TicsToHours(cond.requirement), G_TicsToMinutes(cond.requirement, false), G_TicsToSeconds(cond.requirement)); - break; case UC_MAPVISITED: - tempstr = va("Visit %s", G_BuildMapTitle(cond.requirement-1)); - break; + return va("Visit %s", G_BuildMapTitle(cond.requirement-1)); case UC_MAPBEATEN: - tempstr = va("Beat %s", G_BuildMapTitle(cond.requirement-1)); - break; + return va("Beat %s", G_BuildMapTitle(cond.requirement-1)); case UC_MAPALLEMERALDS: - tempstr = va("Beat %s w/ all emeralds", G_BuildMapTitle(cond.requirement-1)); - break; + return va("Beat %s w/ all emeralds", G_BuildMapTitle(cond.requirement-1)); case UC_MAPTIME: - tempstr = va("Beat %s in %i:%02i.%02i", G_BuildMapTitle(cond.extrainfo1-1), + return va("Beat %s in %i:%02i.%02i", G_BuildMapTitle(cond.extrainfo1-1), G_TicsToMinutes(cond.requirement, true), G_TicsToSeconds(cond.requirement), G_TicsToCentiseconds(cond.requirement)); - break; case UC_TOTALEMBLEMS: - tempstr = va("Get %d emblems", cond.requirement); - break; + return va("Get %d emblems", cond.requirement); case UC_EXTRAEMBLEM: - tempstr = va("Get \"%s\" emblem", extraemblems[cond.requirement-1].name); - break; + return va("Get \"%s\" emblem", extraemblems[cond.requirement-1].name); default: - break; + return ""; } - - return tempstr; } -#define NUMCHECKLIST 32 +#define NUMCHECKLIST 64 static void M_DrawChecklist(void) { - INT32 i, line = 0; + INT32 i, line = 0, c, lastid; for (i = 0; i < MAXUNLOCKABLES; i++) { - INT32 c, lastid = -1; - if (unlockables[i].name[0] == 0 || unlockables[i].nochecklist || !unlockables[i].conditionset || unlockables[i].conditionset > MAXCONDITIONSETS) continue; - V_DrawString(8, 8+(line*8), V_RETURN8|(unlockables[i].unlocked ? V_GREENMAP : V_REDMAP), unlockables[i].name); + ++line; + V_DrawString(8, (line*8), V_RETURN8|(unlockables[i].unlocked ? V_GREENMAP : V_REDMAP), unlockables[i].name); + + if (conditionSets[unlockables[i].conditionset - 1].numconditions) + { + c = 0; + lastid = -1; + + for (c = 0; c < conditionSets[unlockables[i].conditionset - 1].numconditions; c++) + { + condition_t cond = conditionSets[unlockables[i].conditionset - 1].condition[c]; + UINT8 achieved = M_CheckCondition(&cond); + char *str = M_GetConditionString(cond); + + CONS_Printf("%d-%d\n", i, c); + + if (!str) + continue; + + ++line; + + if (cond.id != lastid) + { + V_DrawString(16, (line*8), V_MONOSPACE|V_ALLOWLOWERCASE|(achieved ? V_YELLOWMAP : 0), "*"); + V_DrawString(32, (line*8), V_MONOSPACE|V_ALLOWLOWERCASE|(achieved ? V_YELLOWMAP : 0), str); + } + else + { + V_DrawString(32, (line*8), V_MONOSPACE|V_ALLOWLOWERCASE|(achieved ? V_YELLOWMAP : 0), "&"); + V_DrawString(48, (line*8), V_MONOSPACE|V_ALLOWLOWERCASE|(achieved ? V_YELLOWMAP : 0), str); + } + + lastid = cond.id; + } + } + ++line; - for (c = 0; c < conditionSets[unlockables[i].conditionset].numconditions; c++) - { - condition_t cond = conditionSets[unlockables[i].conditionset].condition[c]; - UINT8 achieved = M_CheckCondition(&cond); - char *str = M_GetConditionString(cond); - - if (!str) - continue; - - ++line; - - if (cond.id != lastid) - V_DrawString(16, 8+(line*8), V_MONOSPACE|V_ALLOWLOWERCASE|(achieved ? V_YELLOWMAP : 0), va("* %s", str)); - else - V_DrawString(16, 8+(line*8), V_MONOSPACE|V_ALLOWLOWERCASE|(achieved ? V_YELLOWMAP : 0), va(" AND %s", str)); - - lastid = cond.id; - } - line += 2; - if (line >= NUMCHECKLIST) + { + CONS_Printf("out of space\n"); break; + } } } +#undef NUMCHECKLIST #define NUMHINTS 5 static void M_EmblemHints(INT32 choice) From 1fa99865d5916d6324724a0e7d0e90f4a6a5d5f7 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Thu, 29 Mar 2018 12:01:04 -0400 Subject: [PATCH 06/17] Forgot to remove some debug stuff --- src/m_menu.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/m_menu.c b/src/m_menu.c index 7d64c6c69..b654c89bf 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -4310,7 +4310,7 @@ static char *M_GetConditionString(condition_t cond) } } -#define NUMCHECKLIST 64 +#define NUMCHECKLIST 23 static void M_DrawChecklist(void) { INT32 i, line = 0, c, lastid; @@ -4335,8 +4335,6 @@ static void M_DrawChecklist(void) UINT8 achieved = M_CheckCondition(&cond); char *str = M_GetConditionString(cond); - CONS_Printf("%d-%d\n", i, c); - if (!str) continue; @@ -4360,10 +4358,7 @@ static void M_DrawChecklist(void) ++line; if (line >= NUMCHECKLIST) - { - CONS_Printf("out of space\n"); break; - } } } #undef NUMCHECKLIST From 1541c6e88b1ca0303d9553c84daf6d0a3ae659b5 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Thu, 29 Mar 2018 12:57:41 -0400 Subject: [PATCH 07/17] Real naaaames --- src/f_finale.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/f_finale.c b/src/f_finale.c index 8931f3562..cb1aee8dd 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -472,7 +472,7 @@ static const char *credits[] = { "\1Artists", "\"Iceman404\"", "\"Blade\"", - "\"CoatRack\"", + "Sherman \"CoatRack\" DesJardin", "Wesley \"Charyb\" Gillebaard", "James \"SeventhSentinel\" Hall", "Sally \"TehRealSalt\" Cochenour", @@ -492,7 +492,7 @@ static const char *credits[] = { "\"Chromatian\"", "Sean \"Sryder\" Ryder", "\"Blade\"", - "\"CoatRack\"", + "Sherman \"CoatRack\" DesJardin", "\"Ryuspark\"", "\"ZarroTsu\"", "Paul \"Boinciel\" Clempson", @@ -504,8 +504,8 @@ static const char *credits[] = { "\"Simsmagic\"", "", "\1Testing", - "\"Jeck Jims\"", - "\"Fooruman\"", + "Jesse \"Jeck Jims\" Emerick", + "Karol \"Fooruman\" Dabrowski", // Dąbrowski, accents in srb2 :ytho: "\"CyberIF\"", "\"Dani\"", "\"VirtAnderson\"", @@ -515,7 +515,7 @@ static const char *credits[] = { "\"Nev3r\"", "\"Ritz\"", "\"Spherallic\"", - "Bandit \"Boppy\" Cochenour", // i <3 my dog + "Bandit \"Bobby\" Cochenour", // i <3 my dog "", "\1Produced By", "Kart Krew", From 5958930c24d999f227872f9b9a37bb54ccfef780 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Thu, 29 Mar 2018 13:35:40 -0400 Subject: [PATCH 08/17] Add the accent --- src/f_finale.c | 2 +- src/hu_stuff.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/f_finale.c b/src/f_finale.c index cb1aee8dd..9931e2faf 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -505,7 +505,7 @@ static const char *credits[] = { "", "\1Testing", "Jesse \"Jeck Jims\" Emerick", - "Karol \"Fooruman\" Dabrowski", // Dąbrowski, accents in srb2 :ytho: + "Karol \"Fooruman\" D""\x1E""browski", // Dąbrowski, accents in srb2 :ytho: "\"CyberIF\"", "\"Dani\"", "\"VirtAnderson\"", diff --git a/src/hu_stuff.h b/src/hu_stuff.h index 21bc40a8e..451cc8d89 100644 --- a/src/hu_stuff.h +++ b/src/hu_stuff.h @@ -21,7 +21,7 @@ //------------------------------------ // heads up font //------------------------------------ -#define HU_FONTSTART '\x1F' // the first font character +#define HU_FONTSTART '\x1E' // the first font character #define HU_FONTEND '~' #define HU_FONTSIZE (HU_FONTEND - HU_FONTSTART + 1) From c078b70806f45750049cd9146ed9f9ab4d22b03c Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Thu, 29 Mar 2018 14:48:45 -0400 Subject: [PATCH 09/17] Oh boy another real name --- src/f_finale.c | 2 +- src/p_floor.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/f_finale.c b/src/f_finale.c index 9931e2faf..90c2a7a73 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -489,7 +489,7 @@ static const char *credits[] = { "", "\1Level Design", "\"Blitz-T\"", - "\"Chromatian\"", + "Jeffery \"Chromatian\" Scott", "Sean \"Sryder\" Ryder", "\"Blade\"", "Sherman \"CoatRack\" DesJardin", diff --git a/src/p_floor.c b/src/p_floor.c index 9e37e70f8..397483127 100644 --- a/src/p_floor.c +++ b/src/p_floor.c @@ -1787,8 +1787,8 @@ static mobj_t *SearchMarioNode(msecnode_t *node) break; } // Ignore popped monitors, too. - if (node->m_thing->flags & MF_MONITOR || node->m_thing->type == MT_RANDOMITEM - && node->m_thing->threshold == 68) + if ((node->m_thing->flags & MF_MONITOR || node->m_thing->type == MT_RANDOMITEM) + && node->m_thing->threshold == 68) continue; // Okay, we found something valid. if (!thing // take either the first thing From 89f2f8ebaf4f8d9ee05fe29860ef76c2f4a8c8cb Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Thu, 29 Mar 2018 18:11:06 -0400 Subject: [PATCH 10/17] Zigs & better scroll --- src/f_finale.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/f_finale.c b/src/f_finale.c index 90c2a7a73..5f018e7dd 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -41,6 +41,7 @@ static INT32 timetonext; // Delay between screen changes static INT32 continuetime; // Short delay when continuing static tic_t animtimer; // Used for some animation timings +static tic_t credbgtimer; // Credits background static INT32 roidtics; // Asteroid spinning static tic_t stoptimer; @@ -584,10 +585,10 @@ void F_CreditDrawer(void) V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 31); // Draw background - V_DrawSciencePatch(0, 0 - FixedMul(32< Date: Thu, 29 Mar 2018 21:43:02 -0400 Subject: [PATCH 11/17] Unsuck start boosts --- src/k_kart.c | 39 ++++++++++++++++++++++----------------- src/k_kart.h | 2 +- src/lua_baselib.c | 3 +-- 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 4c2568a12..2134d7a0f 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -930,7 +930,7 @@ void K_LakituChecker(player_t *player) player->kartstuff[k_lakitu]--; // Quick! You only have three tics to boost! if (cmd->buttons & BT_ACCELERATE) - K_DoMushroom(player, true, false); + K_DoMushroom(player, true); } } } @@ -2231,14 +2231,10 @@ static void K_DoBooSteal(player_t *player) } } -void K_DoMushroom(player_t *player, boolean doPFlag, boolean startboost) +void K_DoMushroom(player_t *player, boolean doPFlag) { - sfxenum_t boostsound = sfx_mush; - if (startboost) - boostsound = sfx_sboost; - if (!player->kartstuff[k_floorboost] || player->kartstuff[k_floorboost] == 3) - S_StartSound(player->mo, boostsound); + S_StartSound(player->mo, sfx_mush); player->kartstuff[k_mushroomtimer] = mushroomtime; @@ -2798,14 +2794,14 @@ void K_MoveKartPlayer(player_t *player, boolean onground) if (ATTACK_IS_DOWN && !HOLDING_ITEM && onground && player->kartstuff[k_goldshroom] == 1 && player->kartstuff[k_goldshroomtimer] == 0 && NO_BOO) { - K_DoMushroom(player, true, false); + K_DoMushroom(player, true); player->kartstuff[k_goldshroomtimer] = itemtime; player->kartstuff[k_goldshroom] = 0; } // GoldenMushroom power else if (ATTACK_IS_DOWN && player->kartstuff[k_goldshroomtimer] > 1 && onground && NO_BOO) { - K_DoMushroom(player, true, false); + K_DoMushroom(player, true); player->kartstuff[k_goldshroomtimer] -= 10; if (player->kartstuff[k_goldshroomtimer] < 1) player->kartstuff[k_goldshroomtimer] = 1; @@ -2813,19 +2809,19 @@ void K_MoveKartPlayer(player_t *player, boolean onground) // TripleMushroom power else if (ATTACK_IS_DOWN && !HOLDING_ITEM && player->kartstuff[k_mushroom] == 4 && onground && NO_BOO) { - K_DoMushroom(player, true, false); + K_DoMushroom(player, true); player->kartstuff[k_mushroom] = 2; } // DoubleMushroom power else if (ATTACK_IS_DOWN && !HOLDING_ITEM && player->kartstuff[k_mushroom] == 2 && onground && NO_BOO) { - K_DoMushroom(player, true, false); + K_DoMushroom(player, true); player->kartstuff[k_mushroom] = 1; } // Mushroom power else if (ATTACK_IS_DOWN && !HOLDING_ITEM && player->kartstuff[k_mushroom] == 1 && onground && NO_BOO) { - K_DoMushroom(player, true, false); + K_DoMushroom(player, true); player->kartstuff[k_mushroom] = 0; } // Star power @@ -3364,24 +3360,33 @@ void K_MoveKartPlayer(player_t *player, boolean onground) if (leveltime == (TICRATE)*4) S_StartSound(NULL, sfx_lkt2); // Start charging once you're given the opportunity. - if (leveltime >= 70 && leveltime <= 140 && cmd->buttons & BT_ACCELERATE && leveltime % 5 == 0) + if (leveltime >= 70 && leveltime <= 140 && cmd->buttons & BT_ACCELERATE) player->kartstuff[k_boostcharge]++; if (leveltime >= 70 && leveltime <= 140 && !(cmd->buttons & BT_ACCELERATE)) player->kartstuff[k_boostcharge] = 0; // Increase your size while charging your engine. if (leveltime < 150) - player->mo->destscale = (mapheaderinfo[gamemap-1]->mobj_scale) + (player->kartstuff[k_boostcharge]*655); + player->mo->destscale = (mapheaderinfo[gamemap-1]->mobj_scale) + (player->kartstuff[k_boostcharge]*131); // Determine the outcome of your charge. if (leveltime > 140 && player->kartstuff[k_boostcharge]) { // Get an instant boost! - if (player->kartstuff[k_boostcharge] >= 7 && player->kartstuff[k_boostcharge] <= 10) + if (player->kartstuff[k_boostcharge] >= 35 && player->kartstuff[k_boostcharge] <= 50) { - K_DoMushroom(player, false, true); + if (!player->kartstuff[k_floorboost] || player->kartstuff[k_floorboost] == 3) + S_StartSound(player->mo, sfx_sboost); + + player->kartstuff[k_mushroomtimer] = -((21*(player->kartstuff[k_boostcharge]*player->kartstuff[k_boostcharge]))/425)+131; // max time is 70, min time is 7; yay parabooolas + + if (!player->kartstuff[k_sounds]) // Prevents taunt sounds from playing every time the button is pressed + { + K_PlayTauntSound(player->mo); + player->kartstuff[k_sounds] = 50; + } } // You overcharged your engine? Those things are expensive!!! - if (player->kartstuff[k_boostcharge] > 10) + else if (player->kartstuff[k_boostcharge] > 50) { player->powers[pw_nocontrol] = 40; S_StartSound(player->mo, sfx_slip); diff --git a/src/k_kart.h b/src/k_kart.h index 3ebd418ff..f615e247e 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -30,7 +30,7 @@ void K_StealBalloon(player_t *player, player_t *victim, boolean force); void K_SpawnKartExplosion(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, angle_t rotangle, boolean spawncenter, boolean ghostit, mobj_t *source); void K_SpawnBobombExplosion(mobj_t *source, UINT8 color); void K_SpawnDriftTrail(player_t *player); -void K_DoMushroom(player_t *player, boolean doPFlag, boolean startboost); +void K_DoMushroom(player_t *player, boolean doPFlag); void K_DoBouncePad(mobj_t *mo, fixed_t vertispeed); boolean K_CheckPlayersRespawnColliding(INT32 playernum, fixed_t x, fixed_t y); INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue); diff --git a/src/lua_baselib.c b/src/lua_baselib.c index e2cf4cd28..3aaf3b1d1 100644 --- a/src/lua_baselib.c +++ b/src/lua_baselib.c @@ -2094,11 +2094,10 @@ static int lib_kDoMushroom(lua_State *L) { player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); boolean doPFlag = luaL_checkboolean(L, 2); - boolean startboost = luaL_checkboolean(L, 3); NOHUD if (!player) return LUA_ErrInvalid(L, "player_t"); - K_DoMushroom(player, doPFlag, startboost); + K_DoMushroom(player, doPFlag); return 0; } From 6298f4e6ee8ad9f1fd897bb8d41eb4a49a340ca1 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Fri, 30 Mar 2018 00:53:25 -0400 Subject: [PATCH 12/17] MK rules for Battle scoring and quick fix for karma items --- src/g_game.c | 8 ++------ src/k_kart.c | 14 +++++++------- src/p_inter.c | 39 ++++++++++++++++++--------------------- src/p_map.c | 2 -- 4 files changed, 27 insertions(+), 36 deletions(-) diff --git a/src/g_game.c b/src/g_game.c index d02edcb52..b896c30f1 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -3385,12 +3385,8 @@ static void G_DoWorldDone(void) { if (server) { - if (G_RaceGametype()) - // SRB2kart: don't reset player between maps - D_MapChange(nextmap+1, gametype, ultimatemode, false, 0, false, false); - else - // resetplayer in match/tag/CTF for more equality - D_MapChange(nextmap+1, gametype, ultimatemode, true, 0, false, false); + // SRB2kart: don't reset player between maps + D_MapChange(nextmap+1, gametype, ultimatemode, false, 0, false, false); } gameaction = ga_nothing; diff --git a/src/k_kart.c b/src/k_kart.c index 2134d7a0f..54ae147f6 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1390,8 +1390,8 @@ void K_SpinPlayer(player_t *player, mobj_t *source) if (G_BattleGametype()) { - if (source && source->player && player != source->player) - P_AddPlayerScore(source->player, 1); + /*if (source && source->player && player != source->player) + P_AddPlayerScore(source->player, 1);*/ if (player->kartstuff[k_balloon] > 0) { @@ -1448,8 +1448,8 @@ void K_SquishPlayer(player_t *player, mobj_t *source) if (G_BattleGametype()) { - if (source && source->player && player != source->player) - P_AddPlayerScore(source->player, 1); + /*if (source && source->player && player != source->player) + P_AddPlayerScore(source->player, 1);*/ if (player->kartstuff[k_balloon] > 0) { @@ -1505,7 +1505,7 @@ void K_ExplodePlayer(player_t *player, mobj_t *source) // A bit of a hack, we ju if (source->player->kartstuff[k_comebackpoints] >= 3) K_StealBalloon(source->player, player, true); } - P_AddPlayerScore(source->player, 1); + //P_AddPlayerScore(source->player, 1); } if (player->kartstuff[k_balloon] > 0) @@ -3437,8 +3437,8 @@ void K_CheckBalloons(void) if (playeringame[winnernum]) { - P_AddPlayerScore(&players[winnernum], numingame); - CONS_Printf(M_GetText("%s recieved %d points for winning!\n"), player_names[winnernum], numingame*2); + P_AddPlayerScore(&players[winnernum], 1); + CONS_Printf(M_GetText("%s recieved a point for winning!\n")); } for (i = 0; i < MAXPLAYERS; i++) diff --git a/src/p_inter.c b/src/p_inter.c index d77940dc4..98481ebbf 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -152,30 +152,27 @@ void P_ResetStarposts(void) // boolean P_CanPickupItem(player_t *player, boolean weapon) { - if (player->bot && weapon) - return false; - - //if (player->powers[pw_flashing] > (flashingtics/4)*3 && player->powers[pw_flashing] <= flashingtics) - // return false; - /*if (G_BattleGametype() && player->kartstuff[k_balloon] <= 0) // No balloons in Match return false;*/ - if (player->kartstuff[k_bootaketimer] || player->kartstuff[k_boostolentimer] - || player->kartstuff[k_growshrinktimer] > 1 || player->kartstuff[k_goldshroomtimer]) // Item-specific timer going off - return false; + if (weapon) + { + if (player->kartstuff[k_bootaketimer] || player->kartstuff[k_boostolentimer] + || player->kartstuff[k_growshrinktimer] > 1 || player->kartstuff[k_goldshroomtimer]) // Item-specific timer going off + return false; - if (player->kartstuff[k_itemroulette] - || player->kartstuff[k_greenshell] || player->kartstuff[k_triplegreenshell] - || player->kartstuff[k_redshell] || player->kartstuff[k_tripleredshell] - || player->kartstuff[k_banana] || player->kartstuff[k_triplebanana] - || player->kartstuff[k_fakeitem] & 2 || player->kartstuff[k_magnet] - || player->kartstuff[k_bobomb] || player->kartstuff[k_blueshell] - || player->kartstuff[k_mushroom] || player->kartstuff[k_fireflower] - || player->kartstuff[k_star] || player->kartstuff[k_goldshroom] - || player->kartstuff[k_lightning] || player->kartstuff[k_megashroom] - || player->kartstuff[k_boo] || player->kartstuff[k_feather] & 1) // Item slot already taken up - return false; + if (player->kartstuff[k_itemroulette] + || player->kartstuff[k_greenshell] || player->kartstuff[k_triplegreenshell] + || player->kartstuff[k_redshell] || player->kartstuff[k_tripleredshell] + || player->kartstuff[k_banana] || player->kartstuff[k_triplebanana] + || player->kartstuff[k_fakeitem] & 2 || player->kartstuff[k_magnet] + || player->kartstuff[k_bobomb] || player->kartstuff[k_blueshell] + || player->kartstuff[k_mushroom] || player->kartstuff[k_fireflower] + || player->kartstuff[k_star] || player->kartstuff[k_goldshroom] + || player->kartstuff[k_lightning] || player->kartstuff[k_megashroom] + || player->kartstuff[k_boo] || player->kartstuff[k_feather] & 1) // Item slot already taken up + return false; + } return true; } @@ -414,7 +411,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) switch (special->type) { case MT_RANDOMITEM: // SRB2kart - if (!P_CanPickupItem(player, false)) + if (!P_CanPickupItem(player, true)) return; if (G_BattleGametype() && player->kartstuff[k_balloon] <= 0) diff --git a/src/p_map.c b/src/p_map.c index 6935be9d1..0dea23b63 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -1682,7 +1682,6 @@ static boolean PIT_CheckThing(mobj_t *thing) return true; } else if (thing->player->kartstuff[k_comebackmode] == 1 - && tmthing->player->kartstuff[k_balloon] > 0) { thing->player->kartstuff[k_comebackmode] = 0; thing->player->kartstuff[k_comebackpoints]++; @@ -1695,7 +1694,6 @@ static boolean PIT_CheckThing(mobj_t *thing) return true; } else if (tmthing->player->kartstuff[k_comebackmode] == 1 - && thing->player->kartstuff[k_balloon] > 0) { tmthing->player->kartstuff[k_comebackmode] = 0; tmthing->player->kartstuff[k_comebackpoints]++; From ff96cfab1139dbe03902b12cb7b97e919e58b67a Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Fri, 30 Mar 2018 00:53:32 -0400 Subject: [PATCH 13/17] zzzzz --- src/p_map.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/p_map.c b/src/p_map.c index 0dea23b63..c36d8efab 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -1682,6 +1682,7 @@ static boolean PIT_CheckThing(mobj_t *thing) return true; } else if (thing->player->kartstuff[k_comebackmode] == 1 + && (tmthing->player->kartstuff[k_balloon] > 0 && P_CanPickupItem(tmthing->player, true))) { thing->player->kartstuff[k_comebackmode] = 0; thing->player->kartstuff[k_comebackpoints]++; @@ -1694,6 +1695,7 @@ static boolean PIT_CheckThing(mobj_t *thing) return true; } else if (tmthing->player->kartstuff[k_comebackmode] == 1 + && (thing->player->kartstuff[k_balloon] > 0 && P_CanPickupItem(thing->player, true))) { tmthing->player->kartstuff[k_comebackmode] = 0; tmthing->player->kartstuff[k_comebackpoints]++; From d438e3bc411071485b1e9c1fe4381fd58adca6f3 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Fri, 30 Mar 2018 12:16:15 -0400 Subject: [PATCH 14/17] Doing one more step to totally ensure that matchesplayed is unlocking stuff --- src/dehacked.c | 2 +- src/f_finale.c | 4 ++-- src/g_game.c | 9 +++++---- src/g_game.h | 2 +- src/m_cond.c | 5 +++-- src/m_cond.h | 2 +- src/p_inter.c | 4 ++-- src/p_spec.c | 4 ++-- src/p_user.c | 3 ++- src/sdl/i_system.c | 6 +++--- src/y_inter.c | 8 ++++---- 11 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index 3e113072a..a44a26b07 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -3082,7 +3082,7 @@ static void readmaincfg(MYFILE *f) if (!GoodDataFileName(word2)) I_Error("Maincfg: bad data file name '%s'\n", word2); - G_SaveGameData(); + G_SaveGameData(false); DEH_WriteUndoline(word, gamedatafilename, UNDO_NONE); strlcpy(gamedatafilename, word2, sizeof (gamedatafilename)); strlwr(gamedatafilename); diff --git a/src/f_finale.c b/src/f_finale.c index 5f018e7dd..5d77e63b6 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -775,10 +775,10 @@ void F_GameEvaluationDrawer(void) /*if (ultimatemode) ++timesBeatenUltimate;*/ - if (M_UpdateUnlockablesAndExtraEmblems()) + if (M_UpdateUnlockablesAndExtraEmblems(false)) S_StartSound(NULL, sfx_ncitem); - G_SaveGameData(); + G_SaveGameData(false); } } diff --git a/src/g_game.c b/src/g_game.c index b896c30f1..d6b3e8dd7 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -2259,10 +2259,10 @@ static inline void G_PlayerFinishLevel(INT32 player) if (legitimateexit && !demoplayback) // (yes you're allowed to unlock stuff this way when the game is modified) { matchesplayed++; - if (M_UpdateUnlockablesAndExtraEmblems()) + if (M_UpdateUnlockablesAndExtraEmblems(true)) { S_StartSound(NULL, sfx_ncitem); - G_SaveGameData(); // only save if unlocked something + G_SaveGameData(true); // only save if unlocked something } } @@ -3643,7 +3643,7 @@ void G_LoadGameData(void) // G_SaveGameData // Saves the main data file, which stores information such as emblems found, etc. -void G_SaveGameData(void) +void G_SaveGameData(boolean force) { size_t length; INT32 i, j; @@ -3661,7 +3661,8 @@ void G_SaveGameData(void) return; } - if (modifiedgame && !savemoddata) + if (modifiedgame && !savemoddata + && !force) // SRB2Kart: for enabling unlocks online in modified servers { free(savebuffer); save_p = savebuffer = NULL; diff --git a/src/g_game.h b/src/g_game.h index 78f08e365..f59641fb0 100644 --- a/src/g_game.h +++ b/src/g_game.h @@ -127,7 +127,7 @@ void G_DeferedPlayDemo(const char *demo); // Can be called by the startup code or M_Responder, calls P_SetupLevel. void G_LoadGame(UINT32 slot, INT16 mapoverride); -void G_SaveGameData(void); +void G_SaveGameData(boolean force); void G_SaveGame(UINT32 slot); diff --git a/src/m_cond.c b/src/m_cond.c index 9025c5214..f2b163ea7 100644 --- a/src/m_cond.c +++ b/src/m_cond.c @@ -295,13 +295,14 @@ void M_CheckUnlockConditions(void) } } -UINT8 M_UpdateUnlockablesAndExtraEmblems(void) +UINT8 M_UpdateUnlockablesAndExtraEmblems(boolean force) { INT32 i; char cechoText[992] = ""; UINT8 cechoLines = 0; - if (modifiedgame && !savemoddata) + if (modifiedgame && !savemoddata + && !force) // SRB2Kart: for enabling unlocks online in modified servers return false; M_CheckUnlockConditions(); diff --git a/src/m_cond.h b/src/m_cond.h index aadf301b6..052c31f2f 100644 --- a/src/m_cond.h +++ b/src/m_cond.h @@ -152,7 +152,7 @@ void M_ClearSecrets(void); // Updating conditions and unlockables void M_CheckUnlockConditions(void); UINT8 M_CheckCondition(condition_t *cn); -UINT8 M_UpdateUnlockablesAndExtraEmblems(void); +UINT8 M_UpdateUnlockablesAndExtraEmblems(boolean force); void M_SilentUpdateUnlockablesAndEmblems(void); UINT8 M_CheckLevelEmblems(void); diff --git a/src/p_inter.c b/src/p_inter.c index 98481ebbf..da84a1fcb 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -607,9 +607,9 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) return; emblemlocations[special->health-1].collected = true; - M_UpdateUnlockablesAndExtraEmblems(); + M_UpdateUnlockablesAndExtraEmblems(false); - G_SaveGameData(); + G_SaveGameData(false); break; } diff --git a/src/p_spec.c b/src/p_spec.c index 46e6685d4..2c097884d 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -3015,10 +3015,10 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec) unlocktriggers |= 1 << trigid; // Unlocked something? - if (M_UpdateUnlockablesAndExtraEmblems()) + if (M_UpdateUnlockablesAndExtraEmblems(false)) { S_StartSound(NULL, sfx_ncitem); - G_SaveGameData(); // only save if unlocked something + G_SaveGameData(false); // only save if unlocked something } } } diff --git a/src/p_user.c b/src/p_user.c index f2cf84f4b..92dc9d0d3 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -1650,7 +1650,7 @@ void P_DoPlayerExit(player_t *player) || (splitscreen && player == &players[secondarydisplayplayer]) || (splitscreen > 1 && player == &players[thirddisplayplayer]) || (splitscreen > 2 && player == &players[fourthdisplayplayer])) - && (!player->spectator && ((!modifiedgame || savemoddata) && !demoplayback))) + && (!player->spectator && !demoplayback)) legitimateexit = true; if (G_RaceGametype()) // If in Race Mode, allow @@ -9286,6 +9286,7 @@ void P_PlayerThink(player_t *player) CONS_Printf(M_GetText("%s ran out of time.\n"), player_names[player-players]); player->pflags |= PF_TIMEOVER; + legitimateexit = true; // SRB2kart: losing a race is still seeing it through to the end :p if (player->pflags & PF_NIGHTSMODE) { diff --git a/src/sdl/i_system.c b/src/sdl/i_system.c index 4a9876097..9ee17cc31 100644 --- a/src/sdl/i_system.c +++ b/src/sdl/i_system.c @@ -2770,7 +2770,7 @@ void I_Quit(void) #ifndef NONET D_SaveBan(); // save the ban list #endif - G_SaveGameData(); // Tails 12-08-2002 + 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. @@ -2853,7 +2853,7 @@ void I_Error(const char *error, ...) if (errorcount == 9) { M_SaveConfig(NULL); - G_SaveGameData(); + G_SaveGameData(false); } if (errorcount > 20) { @@ -2887,7 +2887,7 @@ void I_Error(const char *error, ...) #ifndef NONET D_SaveBan(); // save the ban list #endif - G_SaveGameData(); // Tails 12-08-2002 + G_SaveGameData(false); // Tails 12-08-2002 // Shutdown. Here might be other errors. if (demorecording) diff --git a/src/y_inter.c b/src/y_inter.c index d2fe08e99..d6f2aa309 100644 --- a/src/y_inter.c +++ b/src/y_inter.c @@ -781,10 +781,10 @@ void Y_Ticker(void) // Update when done with tally if ((!modifiedgame || savemoddata) && !(netgame || multiplayer) && !demoplayback) { - if (M_UpdateUnlockablesAndExtraEmblems()) + if (M_UpdateUnlockablesAndExtraEmblems(false)) S_StartSound(NULL, sfx_ncitem); - G_SaveGameData(); + G_SaveGameData(false); } } else if (!(intertic & 1)) @@ -848,10 +848,10 @@ void Y_Ticker(void) // Update when done with tally if ((!modifiedgame || savemoddata) && !(netgame || multiplayer) && !demoplayback) { - if (M_UpdateUnlockablesAndExtraEmblems()) + if (M_UpdateUnlockablesAndExtraEmblems(false)) S_StartSound(NULL, sfx_ncitem); - G_SaveGameData(); + G_SaveGameData(false); } } else if (!(intertic & 1)) From fa50c1cdf4d34f3a6ccb441b60a72568d3da7382 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Fri, 30 Mar 2018 12:17:48 -0400 Subject: [PATCH 15/17] Actually, I messed this up --- src/p_user.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/p_user.c b/src/p_user.c index 92dc9d0d3..d11fbf1fa 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -9286,7 +9286,13 @@ void P_PlayerThink(player_t *player) CONS_Printf(M_GetText("%s ran out of time.\n"), player_names[player-players]); player->pflags |= PF_TIMEOVER; - legitimateexit = true; // SRB2kart: losing a race is still seeing it through to the end :p + + if ((player == &players[consoleplayer] + || (splitscreen && player == &players[secondarydisplayplayer]) + || (splitscreen > 1 && player == &players[thirddisplayplayer]) + || (splitscreen > 2 && player == &players[fourthdisplayplayer])) + && !demoplayback) + legitimateexit = true; // SRB2kart: losing a race is still seeing it through to the end :p if (player->pflags & PF_NIGHTSMODE) { From 74537b5119e2a05794a2c059e78cb73d3fa335b4 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Fri, 30 Mar 2018 13:33:01 -0400 Subject: [PATCH 16/17] oop --- src/p_spec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_spec.c b/src/p_spec.c index 2c097884d..9a510fd06 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -3966,7 +3966,7 @@ DoneSection2: player->kartstuff[k_floorboost] = 3; else player->kartstuff[k_floorboost] = 2; - K_DoMushroom(player, false, false); + K_DoMushroom(player, false); } break; From 8ea5aaea373fbe823203f59bea40f826326e8881 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Fri, 30 Mar 2018 14:14:08 -0400 Subject: [PATCH 17/17] I just realized that SRB2's credits are listed in alphabetical order of last name (I had to research the Polish alphabet to figure out where Fooruman's name should've been, hah) --- src/f_finale.c | 52 +++++++++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/f_finale.c b/src/f_finale.c index 5d77e63b6..e6cd6d0ee 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -456,67 +456,67 @@ static const char *credits[] = { "\1Credits", "", "\1Game Design", + "\"Chaos Zero 64\"", "\"Iceman404\" aka \"VelocitOni\"", "\"ZarroTsu\"", - "\"Chaos Zero 64\"", "", "\1Programming", + "\"Chaos Zero 64\"", + "Sally \"TehRealSalt\" Cochenour", + "Vivian \"toaster\" Grannell", + "\"Lat\'\"", + "\"Monster Iestyn\"", "Sean \"Sryder\" Ryder", "Ehab \"wolfs\" Saeed", "\"ZarroTsu\"", - "Sally \"TehRealSalt\" Cochenour", - "\"Lat\'\"", - "\"Chaos Zero 64\"", - "\"Monster Iestyn\"", - "Vivian \"toaster\" Grannell", "", "\1Artists", - "\"Iceman404\"", - "\"Blade\"", + "\"Chaos Zero 64\"", + "Sally \"TehRealSalt\" Cochenour", + "Desmond \"Blade\" DesJardins", "Sherman \"CoatRack\" DesJardin", "Wesley \"Charyb\" Gillebaard", "James \"SeventhSentinel\" Hall", - "Sally \"TehRealSalt\" Cochenour", - "\"Chaos Zero 64\"", - "\"ZarroTsu\"", + "\"Iceman404\"", "\"MotorRoach\"", "\"VAdaPEGA\"", + "\"ZarroTsu\"", "", "\1Music and Sound", + "Karl Brueggemann", "Wesley \"Charyb\" Gillebaard", "James \"SeventhSentinel\" Hall", - "Karl Brueggemann", "\"MaxieDaMan\"", "", "\1Level Design", "\"Blitz-T\"", - "Jeffery \"Chromatian\" Scott", - "Sean \"Sryder\" Ryder", - "\"Blade\"", - "Sherman \"CoatRack\" DesJardin", - "\"Ryuspark\"", - "\"ZarroTsu\"", - "Paul \"Boinciel\" Clempson", - "\"Tyrannosaur Chao\" aka \"Chaotic Chao\"", - "James \"SeventhSentinel\" Hall", - "Sally \"TehRealSalt\" Cochenour", - "\"Chaos Zero 64\"", "\"D00D64-X\"", + "\"Chaos Zero 64\"", + "Paul \"Boinciel\" Clempson", + "Sally \"TehRealSalt\" Cochenour", + "Desmond \"Blade\" DesJardins", + "Sherman \"CoatRack\" DesJardin", + "James \"SeventhSentinel\" Hall", + "Sean \"Sryder\" Ryder", + "\"Ryuspark\"", + "Jeffery \"Chromatian\" Scott", "\"Simsmagic\"", + "\"Tyrannosaur Chao\" aka \"Chaotic Chao\"", + "\"ZarroTsu\"", "", "\1Testing", - "Jesse \"Jeck Jims\" Emerick", - "Karol \"Fooruman\" D""\x1E""browski", // Dąbrowski, accents in srb2 :ytho: "\"CyberIF\"", "\"Dani\"", + "Karol \"Fooruman\" D""\x1E""browski", // Dąbrowski, accents in srb2 :ytho: + "Jesse \"Jeck Jims\" Emerick", "\"VirtAnderson\"", "", "\1Special Thanks", "Sonic Team Jr. & SRB2", + "Bandit \"Bobby\" Cochenour", // i <3 my dog "\"Nev3r\"", "\"Ritz\"", "\"Spherallic\"", - "Bandit \"Bobby\" Cochenour", // i <3 my dog "", "\1Produced By", "Kart Krew",