From 15dc57c4ba55124afb8e3f9fa057c1ded681335a Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 7 Oct 2019 11:49:05 -0700 Subject: [PATCH 01/12] Allow name in kartdebugitem --- src/d_netcmd.c | 8 +++++++- src/d_player.h | 43 ++++++++++++++++++++++++------------------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 51ec3b980..3171e6dd1 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -378,7 +378,13 @@ consvar_t cv_karteliminatelast = {"karteliminatelast", "Yes", CV_NETVAR|CV_CHEAT consvar_t cv_kartusepwrlv = {"kartusepwrlv", "Yes", CV_NETVAR|CV_CHEAT, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL}; -static CV_PossibleValue_t kartdebugitem_cons_t[] = {{-1, "MIN"}, {NUMKARTITEMS-1, "MAX"}, {0, NULL}}; +static CV_PossibleValue_t kartdebugitem_cons_t[] = +{ +#define X( name, n ) { n, #name } + KART_ITEM_ITERATOR, +#undef X + {0} +}; consvar_t cv_kartdebugitem = {"kartdebugitem", "0", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugitem_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; static CV_PossibleValue_t kartdebugamount_cons_t[] = {{1, "MIN"}, {255, "MAX"}, {0, NULL}}; consvar_t cv_kartdebugamount = {"kartdebugamount", "1", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugamount_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; diff --git a/src/d_player.h b/src/d_player.h index 697c0356c..853c0511b 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -197,27 +197,32 @@ typedef enum NUMPOWERS } powertype_t; +#define KART_ITEM_ITERATOR \ + X (SAD, -1),\ + X (NONE, 0),\ + X (SNEAKER, 2),\ + X (ROCKETSNEAKER, 3),\ + X (INVINCIBILITY, 4),\ + X (BANANA, 5),\ + X (EGGMAN, 6),\ + X (ORBINAUT, 7),\ + X (JAWZ, 8),\ + X (MINE, 9),\ + X (BALLHOG, 10),\ + X (SPB, 11),\ + X (GROW, 12),\ + X (SHRINK, 13),\ + X (THUNDERSHIELD, 14),\ + X (HYUDORO, 15),\ + X (POGOSPRING, 16),\ + X (SUPERRING, 17),\ + X (KITCHENSINK, 18) + typedef enum { - KITEM_SAD = -1, - KITEM_NONE = 0, - KITEM_SNEAKER, - KITEM_ROCKETSNEAKER, - KITEM_INVINCIBILITY, - KITEM_BANANA, - KITEM_EGGMAN, - KITEM_ORBINAUT, - KITEM_JAWZ, - KITEM_MINE, - KITEM_BALLHOG, - KITEM_SPB, - KITEM_GROW, - KITEM_SHRINK, - KITEM_THUNDERSHIELD, - KITEM_HYUDORO, - KITEM_POGOSPRING, - KITEM_SUPERRING, - KITEM_KITCHENSINK, +#define X( name, n ) KITEM_ ## name + KART_ITEM_ITERATOR, +#undef X NUMKARTITEMS, From d337d96ffd435fe08cbb5ca82b778bdb6e8eed44 Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 7 Oct 2019 11:51:09 -0700 Subject: [PATCH 02/12] Comment for clarification --- src/d_player.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/d_player.h b/src/d_player.h index 853c0511b..e4fb2214d 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -197,6 +197,11 @@ typedef enum NUMPOWERS } powertype_t; +/* +To use: #define X( name, number ) +Do with it whatever you want. +Run this macro, then #undef X afterward +*/ #define KART_ITEM_ITERATOR \ X (SAD, -1),\ X (NONE, 0),\ From 2a330f19765380a22b06b10d74e9adf126f0babb Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 7 Oct 2019 12:33:25 -0700 Subject: [PATCH 03/12] Oops --- src/d_player.h | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/d_player.h b/src/d_player.h index e4fb2214d..d270e567c 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -205,27 +205,27 @@ Run this macro, then #undef X afterward #define KART_ITEM_ITERATOR \ X (SAD, -1),\ X (NONE, 0),\ - X (SNEAKER, 2),\ - X (ROCKETSNEAKER, 3),\ - X (INVINCIBILITY, 4),\ - X (BANANA, 5),\ - X (EGGMAN, 6),\ - X (ORBINAUT, 7),\ - X (JAWZ, 8),\ - X (MINE, 9),\ - X (BALLHOG, 10),\ - X (SPB, 11),\ - X (GROW, 12),\ - X (SHRINK, 13),\ - X (THUNDERSHIELD, 14),\ - X (HYUDORO, 15),\ - X (POGOSPRING, 16),\ - X (SUPERRING, 17),\ - X (KITCHENSINK, 18) + X (SNEAKER, 1),\ + X (ROCKETSNEAKER, 2),\ + X (INVINCIBILITY, 3),\ + X (BANANA, 4),\ + X (EGGMAN, 5),\ + X (ORBINAUT, 6),\ + X (JAWZ, 7),\ + X (MINE, 8),\ + X (BALLHOG, 9),\ + X (SPB, 10),\ + X (GROW, 11),\ + X (SHRINK, 12),\ + X (THUNDERSHIELD, 13),\ + X (HYUDORO, 14),\ + X (POGOSPRING, 15),\ + X (SUPERRING, 16),\ + X (KITCHENSINK, 17) typedef enum { -#define X( name, n ) KITEM_ ## name +#define X( name, n ) KITEM_ ## name = n KART_ITEM_ITERATOR, #undef X From 833c8e2bed176aaae00900930e1f808122186532 Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 7 Oct 2019 12:39:38 -0700 Subject: [PATCH 04/12] Give item command --- src/d_netcmd.c | 127 +++++++++++++++++++++++++++++++++++++++++++++++++ src/d_netcmd.h | 7 +-- src/k_kart.c | 1 + 3 files changed, 132 insertions(+), 3 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 3171e6dd1..89140f3c6 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -68,6 +68,7 @@ static void Got_ExitLevelcmd(UINT8 **cp, INT32 playernum); static void Got_SetupVotecmd(UINT8 **cp, INT32 playernum); static void Got_ModifyVotecmd(UINT8 **cp, INT32 playernum); static void Got_PickVotecmd(UINT8 **cp, INT32 playernum); +static void Got_GiveItemcmd(UINT8 **cp, INT32 playernum); static void Got_RequestAddfilecmd(UINT8 **cp, INT32 playernum); #ifdef DELFILE static void Got_Delfilecmd(UINT8 **cp, INT32 playernum); @@ -190,6 +191,8 @@ static void Command_Archivetest_f(void); #endif #endif +static void Command_KartGiveItem_f(void); + // ========================================================================= // CLIENT VARIABLES // ========================================================================= @@ -388,6 +391,17 @@ static CV_PossibleValue_t kartdebugitem_cons_t[] = consvar_t cv_kartdebugitem = {"kartdebugitem", "0", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugitem_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; static CV_PossibleValue_t kartdebugamount_cons_t[] = {{1, "MIN"}, {255, "MAX"}, {0, NULL}}; consvar_t cv_kartdebugamount = {"kartdebugamount", "1", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugamount_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; +consvar_t cv_kartdebug_giveitem = { + "kartdebug_giveitem", + /* :mhm: */ +#ifdef DEVELOP + "Yes", +#else + "No", +#endif + CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, + CV_YesNo, +}; consvar_t cv_kartdebugshrink = {"kartdebugshrink", "Off", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_kartdebugdistribution = {"kartdebugdistribution", "Off", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_kartdebughuddrop = {"kartdebughuddrop", "Off", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; @@ -568,6 +582,8 @@ void D_RegisterServerCommands(void) RegisterNetXCmd(XD_MODIFYVOTE, Got_ModifyVotecmd); RegisterNetXCmd(XD_PICKVOTE, Got_PickVotecmd); + RegisterNetXCmd(XD_GIVEITEM, Got_GiveItemcmd); + // Remote Administration CV_RegisterVar(&cv_dummyjoinpassword); COM_AddCommand("joinpassword", Command_ChangeJoinPassword_f); @@ -626,6 +642,8 @@ void D_RegisterServerCommands(void) #endif #endif + COM_AddCommand("kartgiveitem", Command_KartGiveItem_f); + // for master server connection AddMServCommands(); @@ -5299,6 +5317,41 @@ static void Got_PickVotecmd(UINT8 **cp, INT32 playernum) Y_SetupVoteFinish(pick, level); } +static void Got_GiveItemcmd(UINT8 **cp, INT32 playernum) +{ + int item; + int amt; + + INT32 *kartstuff; + + item = READSINT8 (*cp); + amt = READUINT8 (*cp); + + if ( + ( netgame && ! cv_kartdebug_giveitem.value ) || + ( item < KITEM_SAD || item >= NUMKARTITEMS ) + ) + { + CONS_Alert(CONS_WARNING, + M_GetText ("Illegal give item received from %s\n"), + player_names[playernum]); + if (server) + { + XBOXSTATIC UINT8 buf[2]; + + buf[0] = (UINT8)playernum; + buf[1] = KICK_MSG_CON_FAIL; + SendNetXCmd(XD_KICK, &buf, 2); + } + return; + } + + kartstuff = players[playernum].kartstuff; + + kartstuff[k_itemtype] = item; + kartstuff[k_itemamount] = amt; +} + /** Prints the number of displayplayers[0]. * * \todo Possibly remove this; it was useful for debugging at one point. @@ -5462,6 +5515,80 @@ static void Command_Archivetest_f(void) #endif #endif +/** Give yourself an, optional quantity or one of, an item. + * + * \sa cv_kartdebug_giveitem +*/ +static void Command_KartGiveItem_f(void) +{ + char buf[2]; + + int ac; + const char *name; + int item; + + const char * str; + + int i; + + /* Allow always in local games. */ + if (! netgame || cv_kartdebug_giveitem.value) + { + ac = COM_Argc(); + if (ac < 2) + { + CONS_Printf( +"kartgiveitem [amount]: Give yourself an item\n" + ); + } + else + { + item = NUMKARTITEMS; + + name = COM_Argv(1); + + if (isdigit(*name) || *name == '-') + { + item = atoi(name); + } + else + { + for (i = 0; ( str = kartdebugitem_cons_t[i].strvalue ); ++i) + { + if (strcasecmp(name, str) == 0) + { + item = kartdebugitem_cons_t[i].value; + break; + } + } + } + + if (item < NUMKARTITEMS) + { + buf[0] = item; + + if (ac > 2) + buf[1] = atoi(COM_Argv(2)); + else + buf[1] = 1;/* default to one quantity */ + + SendNetXCmd(XD_GIVEITEM, buf, 2); + } + else + { + CONS_Alert(CONS_WARNING, + "No item matches '%s'\n", + name); + } + } + } + else + { + CONS_Alert(CONS_NOTICE, + "The server does not allow this.\n"); + } +} + /** Makes a change to ::cv_forceskin take effect immediately. * * \sa Command_SetForcedSkin_f, cv_forceskin, forcedskin diff --git a/src/d_netcmd.h b/src/d_netcmd.h index d1f28665c..1e84c67bb 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -125,7 +125,7 @@ extern consvar_t cv_kartusepwrlv; extern consvar_t cv_votetime; -extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop; +extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartdebug_giveitem, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop; extern consvar_t cv_kartdebugcheckpoint, cv_kartdebugnodes, cv_kartdebugcolorize; extern consvar_t cv_itemfinder; @@ -179,9 +179,10 @@ typedef enum XD_PICKVOTE, // 24 XD_REMOVEPLAYER,// 25 XD_POWERLEVEL, // 26 + XD_GIVEITEM, // 27 #ifdef HAVE_BLUA - XD_LUACMD, // 27 - XD_LUAVAR, // 28 + XD_LUACMD, // 28 + XD_LUAVAR, // 29 #endif MAXNETXCMD } netxcmd_t; diff --git a/src/k_kart.c b/src/k_kart.c index 230662d2a..6eb4b9f9d 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -585,6 +585,7 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartdebugitem); CV_RegisterVar(&cv_kartdebugamount); CV_RegisterVar(&cv_kartdebugshrink); + CV_RegisterVar(&cv_kartdebug_giveitem); CV_RegisterVar(&cv_kartdebugdistribution); CV_RegisterVar(&cv_kartdebughuddrop); From 392aec38f88975c92570b704d1626f49d181f692 Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 7 Oct 2019 13:11:14 -0700 Subject: [PATCH 05/12] Rename kartdebug_giveitem to kartallowgiveitem --- src/d_netcmd.c | 10 +++++----- src/d_netcmd.h | 2 +- src/k_kart.c | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 89140f3c6..378bf9fb6 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -391,8 +391,8 @@ static CV_PossibleValue_t kartdebugitem_cons_t[] = consvar_t cv_kartdebugitem = {"kartdebugitem", "0", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugitem_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; static CV_PossibleValue_t kartdebugamount_cons_t[] = {{1, "MIN"}, {255, "MAX"}, {0, NULL}}; consvar_t cv_kartdebugamount = {"kartdebugamount", "1", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugamount_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; -consvar_t cv_kartdebug_giveitem = { - "kartdebug_giveitem", +consvar_t cv_kartallowgiveitem = { + "kartallowgiveitem", /* :mhm: */ #ifdef DEVELOP "Yes", @@ -5328,7 +5328,7 @@ static void Got_GiveItemcmd(UINT8 **cp, INT32 playernum) amt = READUINT8 (*cp); if ( - ( netgame && ! cv_kartdebug_giveitem.value ) || + ( netgame && ! cv_kartallowgiveitem.value ) || ( item < KITEM_SAD || item >= NUMKARTITEMS ) ) { @@ -5517,7 +5517,7 @@ static void Command_Archivetest_f(void) /** Give yourself an, optional quantity or one of, an item. * - * \sa cv_kartdebug_giveitem + * \sa cv_kartallowgiveitem */ static void Command_KartGiveItem_f(void) { @@ -5532,7 +5532,7 @@ static void Command_KartGiveItem_f(void) int i; /* Allow always in local games. */ - if (! netgame || cv_kartdebug_giveitem.value) + if (! netgame || cv_kartallowgiveitem.value) { ac = COM_Argc(); if (ac < 2) diff --git a/src/d_netcmd.h b/src/d_netcmd.h index 1e84c67bb..e6be9296d 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -125,7 +125,7 @@ extern consvar_t cv_kartusepwrlv; extern consvar_t cv_votetime; -extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartdebug_giveitem, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop; +extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartallowgiveitem, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop; 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 6eb4b9f9d..a7e94dcbc 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -585,7 +585,7 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartdebugitem); CV_RegisterVar(&cv_kartdebugamount); CV_RegisterVar(&cv_kartdebugshrink); - CV_RegisterVar(&cv_kartdebug_giveitem); + CV_RegisterVar(&cv_kartallowgiveitem); CV_RegisterVar(&cv_kartdebugdistribution); CV_RegisterVar(&cv_kartdebughuddrop); From 803884c55a87fe72348e625017307671a1d238f4 Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 7 Oct 2019 13:12:22 -0700 Subject: [PATCH 06/12] Remove kartdebugitem --- src/d_netcmd.c | 1 - src/d_netcmd.h | 2 +- src/k_kart.c | 20 ++------------------ 3 files changed, 3 insertions(+), 20 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 378bf9fb6..c35d492fd 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -388,7 +388,6 @@ static CV_PossibleValue_t kartdebugitem_cons_t[] = #undef X {0} }; -consvar_t cv_kartdebugitem = {"kartdebugitem", "0", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugitem_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; static CV_PossibleValue_t kartdebugamount_cons_t[] = {{1, "MIN"}, {255, "MAX"}, {0, NULL}}; consvar_t cv_kartdebugamount = {"kartdebugamount", "1", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugamount_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_kartallowgiveitem = { diff --git a/src/d_netcmd.h b/src/d_netcmd.h index e6be9296d..f3efd12ea 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -125,7 +125,7 @@ extern consvar_t cv_kartusepwrlv; extern consvar_t cv_votetime; -extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartallowgiveitem, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop; +extern consvar_t cv_kartdebugamount, cv_kartallowgiveitem, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop; 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 a7e94dcbc..196fbaecb 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -582,7 +582,6 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartusepwrlv); CV_RegisterVar(&cv_votetime); - CV_RegisterVar(&cv_kartdebugitem); CV_RegisterVar(&cv_kartdebugamount); CV_RegisterVar(&cv_kartdebugshrink); CV_RegisterVar(&cv_kartallowgiveitem); @@ -1121,21 +1120,6 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) } // SPECIAL CASE No. 2: - // Give a debug item instead if specified - if (cv_kartdebugitem.value != 0 && !modeattacking) - { - K_KartGetItemResult(player, cv_kartdebugitem.value); - player->kartstuff[k_itemamount] = cv_kartdebugamount.value; - player->karthud[khud_itemblink] = TICRATE; - player->karthud[khud_itemblinkmode] = 2; - player->kartstuff[k_itemroulette] = 0; - player->kartstuff[k_roulettetype] = 0; - if (P_IsDisplayPlayer(player)) - S_StartSound(NULL, sfx_dbgsal); - return; - } - - // SPECIAL CASE No. 3: // Record Attack / alone mashing behavior if (modeattacking || pingame == 1) { @@ -1186,7 +1170,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) return; } - // SPECIAL CASE No. 4: + // SPECIAL CASE No. 3: // Being in ring debt occasionally forces Super Ring on you if you mashed if (mashed && player->kartstuff[k_rings] < 0 && cv_superring.value) { @@ -1204,7 +1188,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) } } - // SPECIAL CASE No. 5: + // SPECIAL CASE No. 4: // Force SPB onto 2nd if they get too far behind if (player->kartstuff[k_position] == 2 && pdis > (DISTVAR*6) && spbplace == -1 && !indirectitemcooldown && !dontforcespb From 22cb7451e925857067d32bad8f7f318c6ecf8d0c Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 7 Oct 2019 13:35:07 -0700 Subject: [PATCH 07/12] ...Also remove kartdebugamount --- src/d_netcmd.c | 2 -- src/d_netcmd.h | 2 +- src/k_kart.c | 1 - 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index c35d492fd..d7c1ffd28 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -388,8 +388,6 @@ static CV_PossibleValue_t kartdebugitem_cons_t[] = #undef X {0} }; -static CV_PossibleValue_t kartdebugamount_cons_t[] = {{1, "MIN"}, {255, "MAX"}, {0, NULL}}; -consvar_t cv_kartdebugamount = {"kartdebugamount", "1", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugamount_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_kartallowgiveitem = { "kartallowgiveitem", /* :mhm: */ diff --git a/src/d_netcmd.h b/src/d_netcmd.h index f3efd12ea..ccd903daf 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -125,7 +125,7 @@ extern consvar_t cv_kartusepwrlv; extern consvar_t cv_votetime; -extern consvar_t cv_kartdebugamount, cv_kartallowgiveitem, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop; +extern consvar_t cv_kartallowgiveitem, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop; 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 196fbaecb..64b206097 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -582,7 +582,6 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartusepwrlv); CV_RegisterVar(&cv_votetime); - CV_RegisterVar(&cv_kartdebugamount); CV_RegisterVar(&cv_kartdebugshrink); CV_RegisterVar(&cv_kartallowgiveitem); CV_RegisterVar(&cv_kartdebugdistribution); From 4a973e29066dcab3110572059f4171bfb109ae40 Mon Sep 17 00:00:00 2001 From: James R Date: Sat, 21 Mar 2020 15:56:38 -0700 Subject: [PATCH 08/12] Revert "...Also remove kartdebugamount" This reverts commit 22cb7451e925857067d32bad8f7f318c6ecf8d0c. --- src/d_netcmd.c | 2 ++ src/d_netcmd.h | 2 +- src/k_kart.c | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index d7c1ffd28..c35d492fd 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -388,6 +388,8 @@ static CV_PossibleValue_t kartdebugitem_cons_t[] = #undef X {0} }; +static CV_PossibleValue_t kartdebugamount_cons_t[] = {{1, "MIN"}, {255, "MAX"}, {0, NULL}}; +consvar_t cv_kartdebugamount = {"kartdebugamount", "1", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugamount_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_kartallowgiveitem = { "kartallowgiveitem", /* :mhm: */ diff --git a/src/d_netcmd.h b/src/d_netcmd.h index ccd903daf..f3efd12ea 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -125,7 +125,7 @@ extern consvar_t cv_kartusepwrlv; extern consvar_t cv_votetime; -extern consvar_t cv_kartallowgiveitem, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop; +extern consvar_t cv_kartdebugamount, cv_kartallowgiveitem, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop; 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 64b206097..196fbaecb 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -582,6 +582,7 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartusepwrlv); CV_RegisterVar(&cv_votetime); + CV_RegisterVar(&cv_kartdebugamount); CV_RegisterVar(&cv_kartdebugshrink); CV_RegisterVar(&cv_kartallowgiveitem); CV_RegisterVar(&cv_kartdebugdistribution); From c3b967468a49fdc33884262353747242b6004e7f Mon Sep 17 00:00:00 2001 From: James R Date: Sat, 21 Mar 2020 15:56:40 -0700 Subject: [PATCH 09/12] Revert "Remove kartdebugitem" This reverts commit 803884c55a87fe72348e625017307671a1d238f4. --- src/d_netcmd.c | 1 + src/d_netcmd.h | 2 +- src/k_kart.c | 20 ++++++++++++++++++-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index c35d492fd..378bf9fb6 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -388,6 +388,7 @@ static CV_PossibleValue_t kartdebugitem_cons_t[] = #undef X {0} }; +consvar_t cv_kartdebugitem = {"kartdebugitem", "0", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugitem_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; static CV_PossibleValue_t kartdebugamount_cons_t[] = {{1, "MIN"}, {255, "MAX"}, {0, NULL}}; consvar_t cv_kartdebugamount = {"kartdebugamount", "1", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugamount_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_kartallowgiveitem = { diff --git a/src/d_netcmd.h b/src/d_netcmd.h index f3efd12ea..e6be9296d 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -125,7 +125,7 @@ extern consvar_t cv_kartusepwrlv; extern consvar_t cv_votetime; -extern consvar_t cv_kartdebugamount, cv_kartallowgiveitem, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop; +extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartallowgiveitem, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop; 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 196fbaecb..a7e94dcbc 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -582,6 +582,7 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartusepwrlv); CV_RegisterVar(&cv_votetime); + CV_RegisterVar(&cv_kartdebugitem); CV_RegisterVar(&cv_kartdebugamount); CV_RegisterVar(&cv_kartdebugshrink); CV_RegisterVar(&cv_kartallowgiveitem); @@ -1120,6 +1121,21 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) } // SPECIAL CASE No. 2: + // Give a debug item instead if specified + if (cv_kartdebugitem.value != 0 && !modeattacking) + { + K_KartGetItemResult(player, cv_kartdebugitem.value); + player->kartstuff[k_itemamount] = cv_kartdebugamount.value; + player->karthud[khud_itemblink] = TICRATE; + player->karthud[khud_itemblinkmode] = 2; + player->kartstuff[k_itemroulette] = 0; + player->kartstuff[k_roulettetype] = 0; + if (P_IsDisplayPlayer(player)) + S_StartSound(NULL, sfx_dbgsal); + return; + } + + // SPECIAL CASE No. 3: // Record Attack / alone mashing behavior if (modeattacking || pingame == 1) { @@ -1170,7 +1186,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) return; } - // SPECIAL CASE No. 3: + // SPECIAL CASE No. 4: // Being in ring debt occasionally forces Super Ring on you if you mashed if (mashed && player->kartstuff[k_rings] < 0 && cv_superring.value) { @@ -1188,7 +1204,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd) } } - // SPECIAL CASE No. 4: + // SPECIAL CASE No. 5: // Force SPB onto 2nd if they get too far behind if (player->kartstuff[k_position] == 2 && pdis > (DISTVAR*6) && spbplace == -1 && !indirectitemcooldown && !dontforcespb From 6975de85b427ddabf583378bc1ce1e6d77d5ceaf Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 31 Mar 2020 16:45:36 -0700 Subject: [PATCH 10/12] Call the substitution macro FOREACH --- src/d_netcmd.c | 4 ++-- src/d_player.h | 50 +++++++++++++++++++++++++------------------------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 699678d8b..d1c598b04 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -398,9 +398,9 @@ consvar_t cv_kartusepwrlv = {"kartusepwrlv", "Yes", CV_NETVAR|CV_CHEAT, CV_YesNo static CV_PossibleValue_t kartdebugitem_cons_t[] = { -#define X( name, n ) { n, #name } +#define FOREACH( name, n ) { n, #name } KART_ITEM_ITERATOR, -#undef X +#undef FOREACH {0} }; consvar_t cv_kartdebugitem = {"kartdebugitem", "0", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugitem_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; diff --git a/src/d_player.h b/src/d_player.h index 567f42ce5..18874b7b7 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -201,38 +201,38 @@ typedef enum } powertype_t; /* -To use: #define X( name, number ) +To use: #define FOREACH( name, number ) Do with it whatever you want. -Run this macro, then #undef X afterward +Run this macro, then #undef FOREACH afterward */ #define KART_ITEM_ITERATOR \ - X (SAD, -1),\ - X (NONE, 0),\ - X (SNEAKER, 1),\ - X (ROCKETSNEAKER, 2),\ - X (INVINCIBILITY, 3),\ - X (BANANA, 4),\ - X (EGGMAN, 5),\ - X (ORBINAUT, 6),\ - X (JAWZ, 7),\ - X (MINE, 8),\ - X (BALLHOG, 9),\ - X (SPB, 10),\ - X (GROW, 11),\ - X (SHRINK, 12),\ - X (THUNDERSHIELD, 13),\ - X (BUBBLESHIELD, 14),\ - X (FLAMESHIELD, 15),\ - X (HYUDORO, 16),\ - X (POGOSPRING, 17),\ - X (SUPERRING, 18),\ - X (KITCHENSINK, 19) + FOREACH (SAD, -1),\ + FOREACH (NONE, 0),\ + FOREACH (SNEAKER, 1),\ + FOREACH (ROCKETSNEAKER, 2),\ + FOREACH (INVINCIBILITY, 3),\ + FOREACH (BANANA, 4),\ + FOREACH (EGGMAN, 5),\ + FOREACH (ORBINAUT, 6),\ + FOREACH (JAWZ, 7),\ + FOREACH (MINE, 8),\ + FOREACH (BALLHOG, 9),\ + FOREACH (SPB, 10),\ + FOREACH (GROW, 11),\ + FOREACH (SHRINK, 12),\ + FOREACH (THUNDERSHIELD, 13),\ + FOREACH (BUBBLESHIELD, 14),\ + FOREACH (FLAMESHIELD, 15),\ + FOREACH (HYUDORO, 16),\ + FOREACH (POGOSPRING, 17),\ + FOREACH (SUPERRING, 18),\ + FOREACH (KITCHENSINK, 19) typedef enum { -#define X( name, n ) KITEM_ ## name = n +#define FOREACH( name, n ) KITEM_ ## name = n KART_ITEM_ITERATOR, -#undef X +#undef FOREACH NUMKARTITEMS, From c5a5d95a24240e41a1f21eee5aa555112e013230 Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 31 Mar 2020 16:52:41 -0700 Subject: [PATCH 11/12] Use KART_ITEM_ITERATOR for the lua constants --- src/dehacked.c | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index 60d61903a..2a5fa95aa 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -9113,27 +9113,9 @@ struct { // SRB2Kart // kartitems_t - {"KITEM_SAD",KITEM_SAD}, // Actual items (can be set for k_itemtype) - {"KITEM_NONE",KITEM_NONE}, - {"KITEM_SNEAKER",KITEM_SNEAKER}, - {"KITEM_ROCKETSNEAKER",KITEM_ROCKETSNEAKER}, - {"KITEM_INVINCIBILITY",KITEM_INVINCIBILITY}, - {"KITEM_BANANA",KITEM_BANANA}, - {"KITEM_EGGMAN",KITEM_EGGMAN}, - {"KITEM_ORBINAUT",KITEM_ORBINAUT}, - {"KITEM_JAWZ",KITEM_JAWZ}, - {"KITEM_MINE",KITEM_MINE}, - {"KITEM_BALLHOG",KITEM_BALLHOG}, - {"KITEM_SPB",KITEM_SPB}, - {"KITEM_GROW",KITEM_GROW}, - {"KITEM_SHRINK",KITEM_SHRINK}, - {"KITEM_THUNDERSHIELD",KITEM_THUNDERSHIELD}, - {"KITEM_BUBBLESHIELD",KITEM_BUBBLESHIELD}, - {"KITEM_FLAMESHIELD",KITEM_FLAMESHIELD}, - {"KITEM_HYUDORO",KITEM_HYUDORO}, - {"KITEM_POGOSPRING",KITEM_POGOSPRING}, - {"KITEM_SUPERRING",KITEM_SUPERRING}, - {"KITEM_KITCHENSINK",KITEM_KITCHENSINK}, +#define FOREACH( name, n ) { #name, KITEM_ ## name } + KART_ITEM_ITERATOR, // Actual items (can be set for k_itemtype) +#undef FOREACH {"NUMKARTITEMS",NUMKARTITEMS}, {"KRITEM_TRIPLESNEAKER",KRITEM_TRIPLESNEAKER}, // Additional roulette IDs (not usable for much in Lua besides K_GetItemPatch) {"KRITEM_TRIPLEBANANA",KRITEM_TRIPLEBANANA}, From 9bdebe51bfe10e123460c56e8e1438e94f7c5677 Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 31 Mar 2020 16:54:20 -0700 Subject: [PATCH 12/12] Fix a dumb warning --- src/d_netcmd.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index d1c598b04..132a993c7 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -406,16 +406,13 @@ static CV_PossibleValue_t kartdebugitem_cons_t[] = consvar_t cv_kartdebugitem = {"kartdebugitem", "0", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugitem_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; static CV_PossibleValue_t kartdebugamount_cons_t[] = {{1, "MIN"}, {255, "MAX"}, {0, NULL}}; consvar_t cv_kartdebugamount = {"kartdebugamount", "1", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugamount_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; -consvar_t cv_kartallowgiveitem = { - "kartallowgiveitem", - /* :mhm: */ +consvar_t cv_kartallowgiveitem = {"kartallowgiveitem", #ifdef DEVELOP "Yes", #else "No", #endif - CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, - CV_YesNo, + CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL }; consvar_t cv_kartdebugshrink = {"kartdebugshrink", "Off", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_kartdebugdistribution = {"kartdebugdistribution", "Off", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};