From 7130435667ad6ca5e681763fbb8e5a36c5dbe6f6 Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 27 Jun 2023 00:39:10 -0700 Subject: [PATCH] Let give command give power-ups, amount = power-up duration in tics --- src/d_netcmd.c | 38 +++++++++++++++++++++++++++++++++++++- src/m_cheat.h | 1 + 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index f391e83c1..77d69003c 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -67,6 +67,7 @@ #include "k_vote.h" #include "k_zvote.h" #include "k_bot.h" +#include "k_powerup.h" #ifdef SRB2_CONFIG_ENABLE_WEBM_MOVIES #include "m_avrecorder.h" @@ -440,6 +441,11 @@ static CV_PossibleValue_t kartdebugitem_cons_t[] = #define FOREACH( name, n ) { n, #name } KART_ITEM_ITERATOR, #undef FOREACH + {POWERUP_SMONITOR, "SMonitor"}, + {POWERUP_BARRIER, "Barrier"}, + {POWERUP_BUMPER, "Bumper"}, + {POWERUP_BADGE, "Badge"}, + {POWERUP_SUPERFLICKY, "SuperFlicky"}, {0} }; consvar_t cv_kartdebugitem = CVAR_INIT ("debugitem", "None", CV_NETVAR|CV_CHEAT, kartdebugitem_cons_t, NULL); @@ -2072,6 +2078,11 @@ void D_Cheat(INT32 playernum, INT32 cheat, ...) COPY(WRITEUINT8, unsigned int); break; + case CHEAT_GIVEPOWERUP: + COPY(WRITEUINT8, unsigned int); + COPY(WRITEUINT16, unsigned int); + break; + case CHEAT_SCORE: COPY(WRITEUINT32, UINT32); break; @@ -6112,6 +6123,20 @@ static void Got_Cheat(UINT8 **cp, INT32 playernum) break; } + case CHEAT_GIVEPOWERUP: { + UINT8 powerup = READUINT8(*cp); + UINT16 time = READUINT16(*cp); + + // FIXME: we should have actual KITEM_ name array + const char *powerupname = cv_kartdebugitem.PossibleValue[ + 1 + NUMKARTITEMS + (powerup - FIRSTPOWERUP)].strvalue; + + K_GivePowerUp(player, powerup, time); + + CV_CheaterWarning(playernum, va("give powerup %s %d tics", powerupname, time)); + break; + } + case CHEAT_SCORE: { UINT32 score = READUINT32(*cp); @@ -6419,7 +6444,18 @@ static void Command_KartGiveItem_f(void) } } - if (item < NUMKARTITEMS) + if (item >= FIRSTPOWERUP) + { + INT32 amt; + + if (ac > 2) + amt = atoi(COM_Argv(2)); + else + amt = BATTLE_POWERUP_TIME; + + D_Cheat(consoleplayer, CHEAT_GIVEPOWERUP, item, amt); + } + else if (item < NUMKARTITEMS) { INT32 amt; diff --git a/src/m_cheat.h b/src/m_cheat.h index d8b21d477..bf7fc79be 100644 --- a/src/m_cheat.h +++ b/src/m_cheat.h @@ -39,6 +39,7 @@ typedef enum { CHEAT_SCORE, CHEAT_ANGLE, CHEAT_RESPAWNAT, + CHEAT_GIVEPOWERUP, NUMBER_OF_CHEATS } cheat_t;