From bdbe1ffe65c04664aaa81da654cb066df76213f4 Mon Sep 17 00:00:00 2001 From: Shadooow Date: Mon, 21 Jun 2021 21:15:17 +0000 Subject: [PATCH] new cheat command CTRL+SHIFT+g = god mode (invulnerability) requested by Parkan, works in both tactical and strategic git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9097 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Strategic/Auto Resolve.cpp | 10 +++++++++- Strategic/mapscreen.cpp | 11 +++++++++++ Tactical/Soldier Control.cpp | 7 +++++++ Tactical/Turn Based Input.cpp | 8 +++++++- 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/Strategic/Auto Resolve.cpp b/Strategic/Auto Resolve.cpp index 54ae42c5..2ca00412 100644 --- a/Strategic/Auto Resolve.cpp +++ b/Strategic/Auto Resolve.cpp @@ -90,6 +90,7 @@ INT32 giMaxMilitiaToRender = 20;//Changes depending on merc amount extern UINT8 gubReinforcementMinEnemyStaticGroupSize; extern BOOLEAN gfStrategicMilitiaChangesMade; +extern BOOLEAN gfGodModeCheat; extern void ResetMilitia(); extern BOOLEAN AutoReload( SOLDIERTYPE *pSoldier ); @@ -5001,7 +5002,14 @@ void TargetHitCallback( SOLDIERCELL *pTarget, INT32 index ) break; } - iNewLife = pTarget->pSoldier->stats.bLife - pTarget->usHitDamage[index]; + if (gfGodModeCheat && pTarget->pSoldier->bTeam == OUR_TEAM) + { + iNewLife = pTarget->pSoldier->stats.bLife; + } + else + { + iNewLife = pTarget->pSoldier->stats.bLife - pTarget->usHitDamage[index]; + } if( !pTarget->usHitDamage[index] ) { //bullet missed -- play a ricochet sound. if( pTarget->uiFlags & CELL_MERC ) diff --git a/Strategic/mapscreen.cpp b/Strategic/mapscreen.cpp index 8ae51471..0764b28e 100644 --- a/Strategic/mapscreen.cpp +++ b/Strategic/mapscreen.cpp @@ -708,6 +708,7 @@ extern CHAR16 gzUserDefinedButton1[ 128 ]; extern CHAR16 gzUserDefinedButton2[ 128 ]; extern BOOLEAN gfMilitiaPopupCreated; +extern BOOLEAN gfGodModeCheat; #ifdef JA2TESTVERSION extern INT16 MSYS_CurrentMX; @@ -7775,6 +7776,16 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) } } break; + case 'G': + if (fCtrl) + { + if (CHEATER_CHEAT_LEVEL()) + { + ScreenMsg(FONT_MCOLOR_RED, MSG_INTERFACE, gfGodModeCheat ? L"God mode deactivated." : L"God mode activated."); + gfGodModeCheat = !gfGodModeCheat; + } + } + break; case 'g': break; case 'h': diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index 98dd2694..f6308fac 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -1713,6 +1713,7 @@ PaletteReplacementType *guipPaletteReplacements = NULL; extern BOOLEAN fReDrawFace; extern UINT8 gubWaitingForAllMercsToExitCode; BOOLEAN gfGetNewPathThroughPeople = FALSE; +BOOLEAN gfGodModeCheat = FALSE; // LOCAL FUNCTIONS // DO NOT CALL UNLESS THROUGH EVENT_SetSoldierPosition @@ -10315,6 +10316,12 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr } } } + + if (gfGodModeCheat && this->bTeam == OUR_TEAM) + { + sLifeDeduct = 0; + sBreathLoss = 0; + } // Deduct life!, Show damage if we want! bOldLife = this->stats.bLife; diff --git a/Tactical/Turn Based Input.cpp b/Tactical/Turn Based Input.cpp index dd8cb257..00b10641 100644 --- a/Tactical/Turn Based Input.cpp +++ b/Tactical/Turn Based Input.cpp @@ -218,6 +218,7 @@ extern int iWindowedMode; extern OBJECTTYPE *gpItemDescObject; extern BOOLEAN gfInItemStackPopup; extern BOOLEAN gfInKeyRingPopup; +extern BOOLEAN gfGodModeCheat; //Little functions called by keyboard input @@ -3512,7 +3513,12 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) case 'G': if( fCtrl ) - { + { + if (CHEATER_CHEAT_LEVEL()) + { + ScreenMsg(FONT_MCOLOR_RED, MSG_INTERFACE, gfGodModeCheat ? L"God mode deactivated." : L"God mode activated."); + gfGodModeCheat = !gfGodModeCheat; + } } else if ( gGameSettings.fOptions[TOPTION_GL_BURST_CURSOR] ) {