Merged New Inventory Project into main branch

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@1871 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
lalien
2008-03-08 15:15:25 +00:00
parent e16d166277
commit 43ca24dda8
649 changed files with 93359 additions and 82507 deletions
+58 -54
View File
@@ -10,7 +10,7 @@
#include "debug.h"
#include "MemMan.h"
#include "Overhead Types.h"
#include "Soldier Control.h"
#include "random.h"
#include "campaign.h"
#include "dialogue control.h"
@@ -40,6 +40,11 @@
#include "email.h"
//forward declarations of common classes to eliminate includes
class OBJECTTYPE;
class SOLDIERTYPE;
extern UINT8 gbPlayerNum;
@@ -77,7 +82,7 @@ void StatChange(SOLDIERTYPE *pSoldier, UINT8 ubStat, UINT16 usNumChances, UINT8
{
if (pSoldier == NULL || pSoldier->bActive == FALSE)
return; // THIS SHOULD NEVER HAPPEN
Assert(pSoldier != NULL);
Assert(pSoldier->bActive);
@@ -90,7 +95,7 @@ void StatChange(SOLDIERTYPE *pSoldier, UINT8 ubStat, UINT16 usNumChances, UINT8
return;
// ignore vehicles and robots
if( ( pSoldier->uiStatusFlags & SOLDIER_VEHICLE ) || ( pSoldier->uiStatusFlags & SOLDIER_ROBOT ) )
if( ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) || ( pSoldier->flags.uiStatusFlags & SOLDIER_ROBOT ) )
return;
if( pSoldier->bAssignment == ASSIGNMENT_POW )
@@ -100,7 +105,7 @@ void StatChange(SOLDIERTYPE *pSoldier, UINT8 ubStat, UINT16 usNumChances, UINT8
}
// no points earned while somebody is unconscious (for assist XPs, and such)
if ( pSoldier->bLife < CONSCIOUSNESS )
if ( pSoldier->stats.bLife < CONSCIOUSNESS )
return;
@@ -390,7 +395,7 @@ void ProcessStatChange(MERCPROFILESTRUCT *pProfile, UINT8 ubStat, UINT16 usNumCh
// all other stat changes count towards experience level changes (1 for 1 basis)
pProfile->sExpLevelGain--;
}
}
}
}
}
}
@@ -431,7 +436,7 @@ void ProfileUpdateStats( MERCPROFILESTRUCT *pProfile )
void ChangeStat( MERCPROFILESTRUCT *pProfile, SOLDIERTYPE *pSoldier, UINT8 ubStat, INT16 sPtsChanged )
{
// this function changes the stat a given amount...
INT16 *psStatGainPtr = NULL;
INT16 *psStatGainPtr = NULL;
INT8 *pbStatPtr = NULL;
INT8 *pbSoldierStatPtr = NULL;
INT8 *pbStatDeltaPtr = NULL;
@@ -523,68 +528,68 @@ void ChangeStat( MERCPROFILESTRUCT *pProfile, SOLDIERTYPE *pSoldier, UINT8 ubSta
switch( ubStat )
{
case HEALTHAMT:
pbSoldierStatPtr = &( pSoldier->bLifeMax );
puiStatTimerPtr = &( pSoldier->uiChangeHealthTime);
pbSoldierStatPtr = &( pSoldier->stats.bLifeMax );
puiStatTimerPtr = &( pSoldier->timeChanges.uiChangeHealthTime);
usIncreaseValue = HEALTH_INCREASE;
break;
case AGILAMT:
pbSoldierStatPtr = &( pSoldier->bAgility );
puiStatTimerPtr = &( pSoldier->uiChangeAgilityTime);
pbSoldierStatPtr = &( pSoldier->stats.bAgility );
puiStatTimerPtr = &( pSoldier->timeChanges.uiChangeAgilityTime);
usIncreaseValue = AGIL_INCREASE;
break;
case DEXTAMT:
pbSoldierStatPtr = &( pSoldier->bDexterity );
puiStatTimerPtr = &( pSoldier->uiChangeDexterityTime);
pbSoldierStatPtr = &( pSoldier->stats.bDexterity );
puiStatTimerPtr = &( pSoldier->timeChanges.uiChangeDexterityTime);
usIncreaseValue = DEX_INCREASE;
break;
case WISDOMAMT:
pbSoldierStatPtr = &( pSoldier->bWisdom );
puiStatTimerPtr = &( pSoldier->uiChangeWisdomTime);
pbSoldierStatPtr = &( pSoldier->stats.bWisdom );
puiStatTimerPtr = &( pSoldier->timeChanges.uiChangeWisdomTime);
usIncreaseValue = WIS_INCREASE;
break;
case MEDICALAMT:
pbSoldierStatPtr = &( pSoldier->bMedical );
puiStatTimerPtr = &( pSoldier->uiChangeMedicalTime);
pbSoldierStatPtr = &( pSoldier->stats.bMedical );
puiStatTimerPtr = &( pSoldier->timeChanges.uiChangeMedicalTime);
usIncreaseValue = MED_INCREASE;
break;
case EXPLODEAMT:
pbSoldierStatPtr = &( pSoldier->bExplosive );
puiStatTimerPtr = &( pSoldier->uiChangeExplosivesTime);
pbSoldierStatPtr = &( pSoldier->stats.bExplosive );
puiStatTimerPtr = &( pSoldier->timeChanges.uiChangeExplosivesTime);
usIncreaseValue = EXP_INCREASE;
break;
case MECHANAMT:
pbSoldierStatPtr = &( pSoldier->bMechanical );
puiStatTimerPtr = &( pSoldier->uiChangeMechanicalTime);
pbSoldierStatPtr = &( pSoldier->stats.bMechanical );
puiStatTimerPtr = &( pSoldier->timeChanges.uiChangeMechanicalTime);
usIncreaseValue = MECH_INCREASE;
break;
case MARKAMT:
pbSoldierStatPtr = &( pSoldier->bMarksmanship );
puiStatTimerPtr = &( pSoldier->uiChangeMarksmanshipTime);
pbSoldierStatPtr = &( pSoldier->stats.bMarksmanship );
puiStatTimerPtr = &( pSoldier->timeChanges.uiChangeMarksmanshipTime);
usIncreaseValue = MRK_INCREASE;
break;
case EXPERAMT:
pbSoldierStatPtr = &(pSoldier->bExpLevel);
puiStatTimerPtr = &( pSoldier->uiChangeLevelTime );
pbSoldierStatPtr = &(pSoldier->stats.bExpLevel);
puiStatTimerPtr = &( pSoldier->timeChanges.uiChangeLevelTime );
usIncreaseValue = LVL_INCREASE;
break;
case STRAMT:
pbSoldierStatPtr = &(pSoldier->bStrength);
puiStatTimerPtr = &( pSoldier->uiChangeStrengthTime);
pbSoldierStatPtr = &(pSoldier->stats.bStrength);
puiStatTimerPtr = &( pSoldier->timeChanges.uiChangeStrengthTime);
usIncreaseValue = STRENGTH_INCREASE;
break;
case LDRAMT:
pbSoldierStatPtr = &( pSoldier->bLeadership);
puiStatTimerPtr = &( pSoldier->uiChangeLeadershipTime);
pbSoldierStatPtr = &( pSoldier->stats.bLeadership);
puiStatTimerPtr = &( pSoldier->timeChanges.uiChangeLeadershipTime);
usIncreaseValue = LDR_INCREASE;
break;
}
@@ -679,12 +684,12 @@ void ChangeStat( MERCPROFILESTRUCT *pProfile, SOLDIERTYPE *pSoldier, UINT8 ubSta
if (pSoldier != NULL)
{
// adjust current health by the same amount as max health
pSoldier->bLife += sPtsChanged;
pSoldier->stats.bLife += sPtsChanged;
// don't let this kill a guy or knock him out!!!
if (pSoldier->bLife < OKLIFE)
if (pSoldier->stats.bLife < OKLIFE)
{
pSoldier->bLife = OKLIFE;
pSoldier->stats.bLife = OKLIFE;
}
}
}
@@ -700,7 +705,7 @@ void ChangeStat( MERCPROFILESTRUCT *pProfile, SOLDIERTYPE *pSoldier, UINT8 ubSta
{
case MERC_TYPE__AIM_MERC:
// A.I.M.
pSoldier->fContractPriceHasIncreased = TRUE;
pSoldier->flags.fContractPriceHasIncreased = TRUE;
fChangeSalary = TRUE;
break;
@@ -722,7 +727,7 @@ void ChangeStat( MERCPROFILESTRUCT *pProfile, SOLDIERTYPE *pSoldier, UINT8 ubSta
//
// DEF: 03/06/99 Now sets an event that will be processed later in the day
// ubEmailOffset = MERC_UP_LEVEL_BIFF + MERC_UP_LEVEL_LENGTH_BIFF * ( ubMercMercIdValue );
// ubEmailOffset = MERC_UP_LEVEL_BIFF + MERC_UP_LEVEL_LENGTH_BIFF * ( ubMercMercIdValue );
// AddEmail( ubEmailOffset, MERC_UP_LEVEL_LENGTH_BIFF, SPECK_FROM_MERC, GetWorldTotalMin() );
AddStrategicEvent( EVENT_MERC_MERC_WENT_UP_LEVEL_EMAIL_DELAY, GetWorldTotalMin( ) + 60 + Random( 60 ), ubMercMercIdValue );
@@ -770,10 +775,9 @@ void ProcessUpdateStats( MERCPROFILESTRUCT *pProfile, SOLDIERTYPE *pSoldier )
{
// this function will run through the soldier's profile and update their stats based on any accumulated gain pts.
UINT8 ubStat = 0;
INT16 *psStatGainPtr = NULL;
INT16 *psStatGainPtr = NULL;
INT8 *pbStatPtr = NULL;
INT8 *pbSoldierStatPtr = NULL;
INT8 *pbStatDeltaPtr = NULL;
INT8 bMinStatValue;
INT8 bMaxStatValue;
UINT16 usSubpointsPerPoint;
@@ -796,11 +800,11 @@ void ProcessUpdateStats( MERCPROFILESTRUCT *pProfile, SOLDIERTYPE *pSoldier )
return;
// ignore vehicles and robots
if( ( pSoldier->uiStatusFlags & SOLDIER_VEHICLE ) || ( pSoldier->uiStatusFlags & SOLDIER_ROBOT ) )
if( ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) || ( pSoldier->flags.uiStatusFlags & SOLDIER_ROBOT ) )
return;
// delay increases while merc is dying
if (pSoldier->bLife < OKLIFE)
if (pSoldier->stats.bLife < OKLIFE)
return;
// ignore POWs - shouldn't ever be getting this far
@@ -909,47 +913,47 @@ void ProcessUpdateStats( MERCPROFILESTRUCT *pProfile, SOLDIERTYPE *pSoldier )
switch( ubStat )
{
case HEALTHAMT:
pbSoldierStatPtr = &( pSoldier->bLifeMax );
pbSoldierStatPtr = &( pSoldier->stats.bLifeMax );
break;
case AGILAMT:
pbSoldierStatPtr = &( pSoldier->bAgility );
pbSoldierStatPtr = &( pSoldier->stats.bAgility );
break;
case DEXTAMT:
pbSoldierStatPtr = &( pSoldier->bDexterity );
pbSoldierStatPtr = &( pSoldier->stats.bDexterity );
break;
case WISDOMAMT:
pbSoldierStatPtr = &( pSoldier->bWisdom );
pbSoldierStatPtr = &( pSoldier->stats.bWisdom );
break;
case MEDICALAMT:
pbSoldierStatPtr = &( pSoldier->bMedical );
pbSoldierStatPtr = &( pSoldier->stats.bMedical );
break;
case EXPLODEAMT:
pbSoldierStatPtr = &( pSoldier->bExplosive );
pbSoldierStatPtr = &( pSoldier->stats.bExplosive );
break;
case MECHANAMT:
pbSoldierStatPtr = &( pSoldier->bMechanical );
pbSoldierStatPtr = &( pSoldier->stats.bMechanical );
break;
case MARKAMT:
pbSoldierStatPtr = &( pSoldier->bMarksmanship );
pbSoldierStatPtr = &( pSoldier->stats.bMarksmanship );
break;
case EXPERAMT:
pbSoldierStatPtr = &(pSoldier->bExpLevel);
pbSoldierStatPtr = &(pSoldier->stats.bExpLevel);
break;
case STRAMT:
pbSoldierStatPtr = &(pSoldier->bStrength);
pbSoldierStatPtr = &(pSoldier->stats.bStrength);
break;
case LDRAMT:
pbSoldierStatPtr = &( pSoldier->bLeadership);
pbSoldierStatPtr = &( pSoldier->stats.bLeadership);
break;
}
}
@@ -997,7 +1001,7 @@ void HandleAnyStatChangesAfterAttack( void )
// must check everyone on player's team, not just the shooter
for ( cnt = 0, pSoldier = MercPtrs[ 0 ]; cnt <= gTacticalStatus.Team[ MercPtrs[ 0 ]->bTeam ].bLastID; cnt++,pSoldier++)
{
if (pSoldier -> bActive)
if (pSoldier->bActive)
{
ProcessUpdateStats( &( gMercProfiles[ pSoldier->ubProfile ] ), pSoldier );
}
@@ -1519,9 +1523,9 @@ void AwardExperienceBonusToActiveSquad( UINT8 ubExpBonusType )
for ( ubGuynum = gTacticalStatus.Team[ gbPlayerNum ].bFirstID, pSoldier = MercPtrs[ ubGuynum ];
ubGuynum <= gTacticalStatus.Team[ gbPlayerNum ].bLastID;
ubGuynum++, pSoldier++ )
{
if ( pSoldier->bActive && pSoldier->bInSector && IsMercOnCurrentSquad( pSoldier ) && ( pSoldier->bLife >= CONSCIOUSNESS ) &&
!( pSoldier->uiStatusFlags & SOLDIER_VEHICLE ) && !AM_A_ROBOT( pSoldier ) )
{
if ( pSoldier->bActive && pSoldier->bInSector && IsMercOnCurrentSquad( pSoldier ) && ( pSoldier->stats.bLife >= CONSCIOUSNESS ) &&
!( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !AM_A_ROBOT( pSoldier ) )
{
StatChange( pSoldier, EXPERAMT, usXPs, FALSE );
}
@@ -1557,7 +1561,7 @@ void BuildStatChangeString( STR16 wString, STR16 wName, BOOLEAN fIncrease, INT16
ubStringIndex += 2;
}
swprintf( wString, L"%s %s %d %s %s", wName, sPreStatBuildString[ fIncrease ? 1 : 0 ], abs( sPtsChanged ),
swprintf( wString, L"%s %s %d %s %s", wName, sPreStatBuildString[ fIncrease ? 1 : 0 ], abs( sPtsChanged ),
sPreStatBuildString[ ubStringIndex ], sStatGainStrings[ ubStat - FIRST_CHANGEABLE_STAT ] );
}
@@ -1656,4 +1660,4 @@ void MERCMercWentUpALevelSendEmail( UINT8 ubMercMercIdValue )
}
AddEmail( ubEmailOffset, iMsgLength, SPECK_FROM_MERC, GetWorldTotalMin(), -1);
}
}