From c5e72c42657378b59327b5793c99c544abab4ed1 Mon Sep 17 00:00:00 2001 From: Flugente Date: Thu, 24 Oct 2013 19:52:15 +0000 Subject: [PATCH] Fix: pows received wrong poison values. Those values were inconsistent and caused odd displays. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6528 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Strategic/Assignments.cpp | 2 +- Strategic/Queen Command.cpp | 13 ++++++++++--- Tactical/Soldier Control.cpp | 5 +++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Strategic/Assignments.cpp b/Strategic/Assignments.cpp index b40b87c3..2e02f4e2 100644 --- a/Strategic/Assignments.cpp +++ b/Strategic/Assignments.cpp @@ -125,7 +125,7 @@ enum{ MOVEITEM_MENU_1 = 0, MOVEITEM_MENU_2, MOVEITEM_MENU_3, - MOVEITEM_MENU_4, // WANNE: Allow up to 6 vehicles + MOVEITEM_MENU_4, MOVEITEM_MENU_5, MOVEITEM_MENU_6, MOVEITEM_MENU_7, diff --git a/Strategic/Queen Command.cpp b/Strategic/Queen Command.cpp index 57d4ef0d..ba680f3f 100644 --- a/Strategic/Queen Command.cpp +++ b/Strategic/Queen Command.cpp @@ -2255,11 +2255,18 @@ void EnemyCapturesPlayerSoldier( SOLDIERTYPE *pSoldier ) } // adjust poison points - INT8 lifechanged = oldlife - pSoldier->stats.bLife; + INT8 lifechanged = pSoldier->stats.bLife - oldlife; if ( lifechanged < 0 ) - pSoldier->bPoisonLife = max(0, pSoldier->bPoisonLife - lifechanged); + { + // add a bit of poisoning... + pSoldier->bPoisonSum = min(pSoldier->bPoisonSum + 10, pSoldier->stats.bLifeMax); + + pSoldier->bPoisonLife = min(pSoldier->bPoisonSum, pSoldier->stats.bLife); + } else if ( lifechanged > 0) - pSoldier->bPoisonLife = max(pSoldier->bPoisonSum, pSoldier->bPoisonLife + lifechanged); + { + pSoldier->bPoisonLife = min(pSoldier->bPoisonSum, pSoldier->stats.bLife); + } // SANDRO - make the lost life insta-healable pSoldier->iHealableInjury = ((pSoldier->stats.bLifeMax - pSoldier->stats.bLife) * 100); diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index 2ba44cf9..5e96ecd4 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -16888,6 +16888,11 @@ void SOLDIERTYPE::SoldierPropertyUpkeep() if ( HasBackgroundFlag( BACKGROUND_EXP_UNDERGROUND ) && this->bSectorZ ) ++bExtraExpLevel; + + // Flugente: as pows received faulty poison values, we apply a very simple fix: + // remove in a few revisions - the code has already been fixed, so this won't be necessary anymore soon^^ + this->bPoisonLife = min(this->bPoisonLife, this->bPoisonSum ); + this->bPoisonBleeding = min(this->bPoisonBleeding, this->bBleeding); } INT32 CheckBleeding( SOLDIERTYPE *pSoldier )