From ef9aa1b027aa4c63ee8448a18ae752e636141fd4 Mon Sep 17 00:00:00 2001 From: Asdow <20314541+Asdow@users.noreply.github.com> Date: Sun, 17 Nov 2024 22:29:31 +0200 Subject: [PATCH] Convert to SoldierID --- Multiplayer/client.cpp | 36 ++++---- Multiplayer/connect.h | 12 +-- Tactical/Bullets.h | 66 +++++++-------- Tactical/Dialogue Control.cpp | 4 +- Tactical/Interface Dialogue.cpp | 20 ++--- Tactical/Items.cpp | 2 +- Tactical/Items.h | 2 +- Tactical/Ja25_Tactical.cpp | 24 +++--- Tactical/Ja25_Tactical.h | 4 +- Tactical/LOS.cpp | 85 ++++++++++--------- Tactical/LOS.h | 2 +- Tactical/Soldier Control.cpp | 4 +- Tactical/Soldier Control.h | 2 +- Tactical/TeamTurns.cpp | 6 +- Tactical/Weapons.cpp | 62 +++++++------- Tactical/Weapons.h | 2 +- Tactical/bullets.cpp | 6 +- TacticalAI/AIUtils.cpp | 20 ++--- TacticalAI/ai.h | 20 ++--- TileEngine/Explosion Control.cpp | 136 +++++++++++++++---------------- TileEngine/Explosion Control.h | 12 +-- TileEngine/SmokeEffects.cpp | 2 +- TileEngine/SmokeEffects.h | 4 +- TileEngine/Tile Animation.h | 100 +++++++++++------------ TileEngine/structure.cpp | 2 +- TileEngine/structure.h | 2 +- 26 files changed, 318 insertions(+), 319 deletions(-) diff --git a/Multiplayer/client.cpp b/Multiplayer/client.cpp index f6c28480..2b65f0fc 100644 --- a/Multiplayer/client.cpp +++ b/Multiplayer/client.cpp @@ -535,18 +535,18 @@ typedef struct typedef struct { - UINT8 ubDamageFunc; // 1 - gas damage , 2 - explosive damage - UINT16 ubSoldierID; - UINT16 usExplosiveClassID; - INT16 sSubsequent; - BOOL fRecompileMovementCosts; - INT16 sWoundAmt; - INT16 sBreathAmt; - UINT16 ubAttackerID; - UINT16 usItem; - INT32 sBombGridNo; - UINT32 uiDist; - UINT32 uiPreRandomIndex; + UINT8 ubDamageFunc; // 1 - gas damage , 2 - explosive damage + SoldierID ubSoldierID; + UINT16 usExplosiveClassID; + INT16 sSubsequent; + BOOL fRecompileMovementCosts; + INT16 sWoundAmt; + INT16 sBreathAmt; + SoldierID ubAttackerID; + UINT16 usItem; + INT32 sBombGridNo; + UINT32 uiDist; + UINT32 uiPreRandomIndex; } explosiondamage_struct; bullets_table bTable[11][50]; @@ -2920,7 +2920,7 @@ void recieveMAPCHANGE( RPCParameters *rpcParameters ) } // 20091002 - OJW - Explosives -void send_grenade (OBJECTTYPE *pGameObj, float dLifeLength, float xPos, float yPos, float zPos, float xForce, float yForce, float zForce, UINT32 sTargetGridNo, UINT16 ubOwner, UINT8 ubActionCode, UINT32 uiActionData, INT32 iRealObjectID, bool bIsThrownGrenade) +void send_grenade (OBJECTTYPE *pGameObj, float dLifeLength, float xPos, float yPos, float zPos, float xForce, float yForce, float zForce, UINT32 sTargetGridNo, SoldierID ubOwner, UINT8 ubActionCode, UINT32 uiActionData, INT32 iRealObjectID, bool bIsThrownGrenade) { ubOwner = MPEncodeSoldierID(ubOwner); // translate our soldier to the "network" version @@ -3229,11 +3229,11 @@ void recievePLANTEXPLOSIVE (RPCParameters *rpcParameters) } } -void send_detonate_explosive (UINT32 uiWorldIndex, UINT16 ubID) +void send_detonate_explosive (UINT32 uiWorldIndex, SoldierID ubID) { ubID = MPEncodeSoldierID(ubID); - SOLDIERTYPE* pSoldier = MercPtrs[ubID]; + SOLDIERTYPE* pSoldier = ubID; if (pSoldier != NULL) { // explosive detonated on this client, notify the other clients @@ -3466,7 +3466,7 @@ void recieveDISARMEXPLOSIVE (RPCParameters *rpcParameters) } } -void send_spreadeffect ( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT16 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID ) +void send_spreadeffect ( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, SoldierID ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID ) { spreadeffect_struct sef; @@ -3551,7 +3551,7 @@ void recieveSPREADEFFECT (RPCParameters *rpcParameters) } } -void send_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT16 ubOwner, INT32 iSmokeEffectID) +void send_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, SoldierID ubOwner, INT32 iSmokeEffectID) { // i'm reusing this struct, the parameters are essentially the same spreadeffect_struct sef; @@ -3634,7 +3634,7 @@ void send_gasdamage( SOLDIERTYPE * pSoldier, UINT16 usExplosiveClassID, INT16 sS client->RPC("sendEXPLOSIONDAMAGE",(const char*)&exp, (int)sizeof(explosiondamage_struct)*8, HIGH_PRIORITY, RELIABLE, 0, UNASSIGNED_SYSTEM_ADDRESS, true, 0, UNASSIGNED_NETWORK_ID,0); } -void send_explosivedamage( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent ) +void send_explosivedamage( SoldierID ubPerson, SoldierID ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent ) { explosiondamage_struct exp; exp.ubDamageFunc = 2; diff --git a/Multiplayer/connect.h b/Multiplayer/connect.h index 75f5d48b..31fe44ea 100644 --- a/Multiplayer/connect.h +++ b/Multiplayer/connect.h @@ -111,19 +111,19 @@ void send_stop (EV_S_STOP_MERC *SStopMerc); void send_interrupt(SOLDIERTYPE *pSoldier); // OJW - 20091002 - explosives -void send_grenade (OBJECTTYPE *pGameObj, float dLifeLength, float xPos, float yPos, float zPos, float xForce, float yForce, float zForce, UINT32 sTargetGridNo, UINT16 ubOwner, UINT8 ubActionCode, UINT32 uiActionData, INT32 iRealObjectID, bool bIsThrownGrenade); +void send_grenade (OBJECTTYPE *pGameObj, float dLifeLength, float xPos, float yPos, float zPos, float xForce, float yForce, float zForce, UINT32 sTargetGridNo, SoldierID ubOwner, UINT8 ubActionCode, UINT32 uiActionData, INT32 iRealObjectID, bool bIsThrownGrenade); void send_grenade_result (float xPos, float yPos, float zPos, INT32 sGridNo, SoldierID ubOwnerID, INT32 iRealObjectID, bool bIsDud); void send_plant_explosive (UINT16 ubID,UINT16 usItem,UINT8 ubItemStatus,UINT16 usFlags, UINT32 sGridNo,UINT8 ubLevel, UINT32 uiWorldIndex); -void send_detonate_explosive (UINT32 uiWorldIndex, UINT16 ubID); -void send_spreadeffect ( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT16 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID ); -void send_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT16 ubOwner, INT32 iSmokeEffectID); +void send_detonate_explosive (UINT32 uiWorldIndex, SoldierID ubID); +void send_spreadeffect ( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, SoldierID ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID ); +void send_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, SoldierID ubOwner, INT32 iSmokeEffectID); void send_gasdamage( SOLDIERTYPE * pSoldier, UINT16 usExplosiveClassID, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, SoldierID ubOwner ); -void send_explosivedamage( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent ); +void send_explosivedamage( SoldierID ubPerson, SoldierID ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent ); void send_disarm_explosive(UINT32 sGridNo, UINT32 uiWorldIndex, SoldierID ubID); void OpenChatMsgBox(void); -INT8 FireBullet( UINT16 ubFirer, BULLET * pBullet, BOOLEAN fFake ); +INT8 FireBullet( SoldierID ubFirer, BULLET * pBullet, BOOLEAN fFake ); void reapplySETTINGS(); diff --git a/Tactical/Bullets.h b/Tactical/Bullets.h index 2cd3e602..2399d8d5 100644 --- a/Tactical/Bullets.h +++ b/Tactical/Bullets.h @@ -30,49 +30,49 @@ typedef struct LEVELNODE* pNodes[BULLET_TRACER_MAX_LENGTH]; //afp-end INT32 iBullet; - UINT16 ubFirerID; - UINT16 ubTargetID; - INT8 bStartCubesAboveLevelZ; - INT8 bEndCubesAboveLevelZ; - INT32 sGridNo; + SoldierID ubFirerID; + SoldierID ubTargetID; + INT8 bStartCubesAboveLevelZ; + INT8 bEndCubesAboveLevelZ; + INT32 sGridNo; INT16 sUnused; - UINT16 usLastStructureHit; - FIXEDPT qCurrX; - FIXEDPT qCurrY; - FIXEDPT qCurrZ; - FIXEDPT qIncrX; - FIXEDPT qIncrY; - FIXEDPT qIncrZ; - DOUBLE ddHorizAngle; + UINT16 usLastStructureHit; + FIXEDPT qCurrX; + FIXEDPT qCurrY; + FIXEDPT qCurrZ; + FIXEDPT qIncrX; + FIXEDPT qIncrY; + FIXEDPT qIncrZ; + DOUBLE ddHorizAngle; INT32 iCurrTileX; INT32 iCurrTileY; - INT8 bLOSIndexX; - INT8 bLOSIndexY; - BOOLEAN fCheckForRoof; + INT8 bLOSIndexX; + INT8 bLOSIndexY; + BOOLEAN fCheckForRoof; INT32 iCurrCubesZ; INT32 iLoop; - BOOLEAN fAllocated; - BOOLEAN fToDelete; - BOOLEAN fLocated; - BOOLEAN fReal; - BOOLEAN fAimed; - UINT32 uiLastUpdate; + BOOLEAN fAllocated; + BOOLEAN fToDelete; + BOOLEAN fLocated; + BOOLEAN fReal; + BOOLEAN fAimed; + UINT32 uiLastUpdate; UINT8 ubTilesPerUpdate; - UINT16 usClockTicksPerUpdate; - SOLDIERTYPE *pFirer; // Flugente: WARNING! We cannot assume this will be valid. Check wether ubFirerID is NOBODY first - INT32 sOrigGridNo; // HEADROCK HAM 5.1: Original tile does not necessarily have to be the pFirer's tile - INT32 sTargetGridNo; + UINT16 usClockTicksPerUpdate; + SOLDIERTYPE *pFirer; // Flugente: WARNING! We cannot assume this will be valid. Check wether ubFirerID is NOBODY first + INT32 sOrigGridNo; // HEADROCK HAM 5.1: Original tile does not necessarily have to be the pFirer's tile + INT32 sTargetGridNo; INT16 sHitBy; INT32 iImpact; INT32 iImpactReduction; INT32 iRange; INT32 iDistanceLimit; - UINT16 usFlags; - ANITILE *pAniTile; - ANITILE *pShadowAniTile; + UINT16 usFlags; + ANITILE *pAniTile; + ANITILE *pShadowAniTile; UINT16 ubItemStatus; - UINT16 fromItem; - INT32 flash; + UINT16 fromItem; + INT32 flash; // HEADROCK HAM B2.5: Experimental bullet tracer info. If the new tracer system is activated, this flag tells // the bullet animation functions to create a lightpath for this bullet. This means now all bullets in a tracer // magazine will cause a lightshow (that's the intended result). @@ -83,7 +83,7 @@ typedef struct extern UINT32 guiNumBullets; -INT32 CreateBullet( UINT16 ubFirerID, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem ); +INT32 CreateBullet( SoldierID ubFirerID, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem ); void RemoveBullet( INT32 iBullet ); void StopBullet( INT32 iBullet ); void UpdateBullets( ); @@ -107,4 +107,4 @@ BOOLEAN SaveBulletStructureToSaveGameFile( HWFILE hFile ); BOOLEAN LoadBulletStructureFromSavedGameFile( HWFILE hFile ); -#endif \ No newline at end of file +#endif diff --git a/Tactical/Dialogue Control.cpp b/Tactical/Dialogue Control.cpp index a4739b70..296637c0 100644 --- a/Tactical/Dialogue Control.cpp +++ b/Tactical/Dialogue Control.cpp @@ -661,7 +661,7 @@ void HandleDialogue( ) SOLDIERTYPE *pSoldier; INT16 sPlayerGridNo; SoldierID ubPlayerID; - UINT8 ubQualifiedSoldierIDArray[ NUM_MERCS_WITH_NEW_QUOTES ]; + SoldierID ubQualifiedSoldierIDArray[ NUM_MERCS_WITH_NEW_QUOTES ]; UINT8 ubNumQualifiedMercs=0; UINT8 ubCnt=0; @@ -693,7 +693,7 @@ void HandleDialogue( ) //loop through all the mercs for( ubCnt=0; ubCntusQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_EXT_MORRIS; diff --git a/Tactical/Interface Dialogue.cpp b/Tactical/Interface Dialogue.cpp index d3d6263e..2ac44952 100644 --- a/Tactical/Interface Dialogue.cpp +++ b/Tactical/Interface Dialogue.cpp @@ -5206,10 +5206,10 @@ void CarmenLeavesSectorCallback( void ) void PerformJerryMiloAction301() { - UINT8 ubMercsPresent[NUM_MERCS_WITH_NEW_QUOTES]; + SoldierID ubMercsPresent[NUM_MERCS_WITH_NEW_QUOTES]; UINT8 usNumMercsPresent; SOLDIERTYPE *pSoldier=NULL; - UINT8 ubId; + SoldierID ubId; //Get the number and array of the new soldiers usNumMercsPresent = GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( ubMercsPresent, NULL ); @@ -5219,7 +5219,7 @@ void PerformJerryMiloAction301() { ubId = ubMercsPresent[ cnt ]; - TacticalCharacterDialogue( MercPtrs[ubId], QUOTE_DEATH_RATE_REFUSAL ); + TacticalCharacterDialogue( ubId, QUOTE_DEATH_RATE_REFUSAL ); } //Trigger Jerry Milo's script record 11 ( call action 302 ) @@ -5231,8 +5231,8 @@ void PerformJerryMiloAction301() void PerformJerryMiloAction302() { - UINT8 ubMercsPresent[NUM_MERCS_WITH_NEW_QUOTES]; - UINT8 usNumMercsPresent; + SoldierID ubMercsPresent[NUM_MERCS_WITH_NEW_QUOTES]; + UINT8 usNumMercsPresent; //off jazz //Get the number and array of the new soldiers @@ -5384,11 +5384,11 @@ void HandleSpecificQuoteWhenLeavingNpcTalkMenu() void HaveQualifiedMercSayQuoteAboutNpcWhenLeavingTalkScreen( UINT8 ubNpcProfileID, UINT32 uiQuoteNum ) { - UINT8 usNumMercsPresent; - UINT8 SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES]; - UINT8 ValidSoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES] = {0}; - UINT8 ubNumValidSoldiers=0; - UINT8 ubCnt; + UINT8 usNumMercsPresent; + SoldierID SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES]; + SoldierID ValidSoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES] = {0}; + UINT8 ubNumValidSoldiers=0; + UINT8 ubCnt; SOLDIERTYPE *pSoldier=NULL; SOLDIERTYPE * pNPC; diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp index f17ed417..70de1d87 100644 --- a/Tactical/Items.cpp +++ b/Tactical/Items.cpp @@ -9304,7 +9304,7 @@ void CheckEquipmentForFragileItemDamage( SOLDIERTYPE *pSoldier, INT32 iDamage ) } -BOOLEAN DamageItemOnGround( OBJECTTYPE * pObject, INT32 sGridNo, INT8 bLevel, INT32 iDamage, UINT16 ubOwner ) +BOOLEAN DamageItemOnGround( OBJECTTYPE * pObject, INT32 sGridNo, INT8 bLevel, INT32 iDamage, SoldierID ubOwner ) { #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; diff --git a/Tactical/Items.h b/Tactical/Items.h index 2afff8f0..fe9465b1 100644 --- a/Tactical/Items.h +++ b/Tactical/Items.h @@ -296,7 +296,7 @@ UINT16 StandardGunListReplacement( UINT16 usGun ); UINT16 FindReplacementMagazine( UINT8 ubCalibre, UINT16 ubMagSize, UINT8 ubAmmoType); UINT16 FindReplacementMagazineIfNecessary( UINT16 usOldGun, UINT16 usOldAmmo, UINT16 usNewGun ); -BOOLEAN DamageItemOnGround( OBJECTTYPE * pObject, INT32 sGridNo, INT8 bLevel, INT32 iDamage, UINT16 ubOwner ); +BOOLEAN DamageItemOnGround( OBJECTTYPE * pObject, INT32 sGridNo, INT8 bLevel, INT32 iDamage, SoldierID ubOwner ); BOOLEAN CompatibleFaceItem( UINT16 usItem1, UINT16 usItem2 ); diff --git a/Tactical/Ja25_Tactical.cpp b/Tactical/Ja25_Tactical.cpp index 417dc46e..42cd8ba2 100644 --- a/Tactical/Ja25_Tactical.cpp +++ b/Tactical/Ja25_Tactical.cpp @@ -452,7 +452,7 @@ BOOLEAN IsSoldierQualifiedInitialHireMerc( SOLDIERTYPE *pSoldier ) } } -UINT8 GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( UINT8 *pSoldierIdArray, UINT8 *pProfileIdArray ) +UINT8 GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( SoldierID *pSoldierIdArray, UINT8 *pProfileIdArray ) { SOLDIERTYPE *pSoldier=NULL; UINT8 usNumMercsPresent=0; @@ -523,10 +523,10 @@ INT16 RandomProfileIdFromNewMercsOnPlayerTeam() } } -INT16 RandomSoldierIdFromNewMercsOnPlayerTeam() +SoldierID RandomSoldierIdFromNewMercsOnPlayerTeam() { - UINT8 usNumMercsPresent; - UINT8 SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES]; + UINT8 usNumMercsPresent; + SoldierID SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES]; //Get the number and array of the new soldiers usNumMercsPresent = GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( SoldierIdArray, NULL ); @@ -536,20 +536,20 @@ INT16 RandomSoldierIdFromNewMercsOnPlayerTeam() if( usNumMercsPresent > 0 ) { //return a random merc from the array - return( (INT16)( SoldierIdArray[ Random( usNumMercsPresent ) ] )); + return( ( SoldierIdArray[ Random( usNumMercsPresent ) ] )); } else { - return( -1 ); + return( NOBODY ); } } UINT8 RandomArrayOfQualifiedMercs( UINT8 *pRandomSoldierIdArray ) { - UINT8 usNumMercsPresent; - UINT8 SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES]; - BOOLEAN UsedArray[NUM_MERCS_WITH_NEW_QUOTES]; - BOOLEAN fFound=FALSE; + UINT8 usNumMercsPresent; + SoldierID SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES]; + BOOLEAN UsedArray[NUM_MERCS_WITH_NEW_QUOTES]; + BOOLEAN fFound=FALSE; UINT8 ubRand; memset( UsedArray, 0, NUM_MERCS_WITH_NEW_QUOTES ); @@ -1060,8 +1060,8 @@ void HandlePlayingQuoteWhenHiringNpc( UINT8 ubProfile ) BOOLEAN SayQuoteFromAllNewHiredMercButDoGastonLast( UINT8 ubProfile, UINT32 uiQuoteNum ) { - UINT8 usNumMercsPresent; - UINT8 SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES]; + UINT8 usNumMercsPresent; + SoldierID SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES]; SOLDIERTYPE *pSoldier=NULL; //Get an array of the mercs on the team diff --git a/Tactical/Ja25_Tactical.h b/Tactical/Ja25_Tactical.h index a8b12371..b3c56725 100644 --- a/Tactical/Ja25_Tactical.h +++ b/Tactical/Ja25_Tactical.h @@ -37,8 +37,8 @@ typedef struct extern BOOLEAN gfFirstTimeInGameHeliCrash; INT16 RandomProfileIdFromNewMercsOnPlayerTeam(); -INT16 RandomSoldierIdFromNewMercsOnPlayerTeam(); -UINT8 GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( UINT8 *pSoldierIdArray, UINT8 *pProfileIdArray ); +SoldierID RandomSoldierIdFromNewMercsOnPlayerTeam(); +UINT8 GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( SoldierID *pSoldierIdArray, UINT8 *pProfileIdArray ); BOOLEAN IsSoldierQualifiedMerc( SOLDIERTYPE *pSoldier ); BOOLEAN IsSoldierQualifiedInitialHireMerc( SOLDIERTYPE *pSoldier ); BOOLEAN IsSoldierQualifiedMercForSeeingPowerGenFan( SOLDIERTYPE *pSoldier ); diff --git a/Tactical/LOS.cpp b/Tactical/LOS.cpp index fff95973..3513e580 100644 --- a/Tactical/LOS.cpp +++ b/Tactical/LOS.cpp @@ -2435,7 +2435,7 @@ INT32 SoldierTo3DLocationLineOfSightTest( SOLDIERTYPE * pStartSoldier, INT32 sGr { FLOAT dStartZPos, dEndZPos; INT16 sX, sY, sX2, sY2; - UINT16 ubTargetID; + SoldierID ubTargetID; BOOLEAN fOk; CHECKF( pStartSoldier ); @@ -2455,7 +2455,7 @@ INT32 SoldierTo3DLocationLineOfSightTest( SOLDIERTYPE * pStartSoldier, INT32 sGr if (ubTargetID != NOBODY) { // there's a merc there; do a soldier-to-soldier test - return( SoldierToSoldierLineOfSightTest( pStartSoldier, MercPtrs[ubTargetID], bAware, iTileSightLimit, LOS_POS, adjustForSight) ); + return( SoldierToSoldierLineOfSightTest( pStartSoldier, ubTargetID, bAware, iTileSightLimit, LOS_POS, adjustForSight) ); } // else... assume standing height dEndZPos = STANDING_LOS_POS + bLevel * HEIGHT_UNITS; @@ -4640,7 +4640,7 @@ void CalculateFiringIncrementsSimple( DOUBLE ddHorizAngle, DOUBLE ddVerticAngle, pBullet->qIncrZ = FloatToFixed( (FLOAT) ( sin( ddVerticAngle ) / sin( (PI/2) - ddVerticAngle ) * HEIGHTUNITS_PER_CELL ) );//dnl ch60 010913 } -INT8 FireBullet( UINT16 ubFirer, BULLET * pBullet, BOOLEAN fFake ) +INT8 FireBullet( SoldierID ubFirer, BULLET * pBullet, BOOLEAN fFake ) { //DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("FireBullet")); @@ -4654,7 +4654,7 @@ INT8 FireBullet( UINT16 ubFirer, BULLET * pBullet, BOOLEAN fFake ) pBullet->sGridNo = MAPROWCOLTOPOS( pBullet->iCurrTileY, pBullet->iCurrTileX ); if ( ubFirer != NOBODY ) - pBullet->pFirer = MercPtrs[ ubFirer ]; + pBullet->pFirer = ubFirer; else pBullet->pFirer = NULL; @@ -5775,7 +5775,7 @@ INT8 FireBulletGivenTarget( SOLDIERTYPE * pFirer, FLOAT dEndX, FLOAT dEndY, FLOA // Note that this function does not make provisions for Fake Firing. There is no need for it, and it would needlessly // complicate things anyway. // Also note we receive start coordinates from the bomb itself, because there's nowhere else to get them. -INT8 FireFragmentGivenTarget( UINT16 ubOwner, FLOAT dStartX, FLOAT dStartY, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usExplosiveItem ) +INT8 FireFragmentGivenTarget( SoldierID ubOwner, FLOAT dStartX, FLOAT dStartY, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usExplosiveItem ) { // Artificial... dStartZ++; @@ -6986,9 +6986,8 @@ INT8 ChanceToGetThrough(SOLDIERTYPE * pFirer, FLOAT dEndX, FLOAT dEndY, FLOAT dE void MoveBullet( INT32 iBullet ) { - BULLET *pBullet; - - FIXEDPT qLandHeight; + BULLET *pBullet; + FIXEDPT qLandHeight; INT32 iCurrAboveLevelZ; INT32 iCurrCubesAboveLevelZ; INT16 sDesiredLevel; @@ -6997,48 +6996,48 @@ void MoveBullet( INT32 iBullet ) INT32 iOldTileY; INT32 iOldCubesZ; - MAP_ELEMENT * pMapElement; - STRUCTURE * pStructure; - STRUCTURE * pRoofStructure = NULL; + MAP_ELEMENT *pMapElement; + STRUCTURE *pStructure; + STRUCTURE *pRoofStructure = NULL; - FIXEDPT qLastZ; + FIXEDPT qLastZ; - SOLDIERTYPE * pTarget; - UINT16 ubTargetID; - BOOLEAN fIntended; - BOOLEAN fStopped; - INT8 bOldLOSIndexX; - INT8 bOldLOSIndexY; + SOLDIERTYPE *pTarget; + SoldierID ubTargetID; + BOOLEAN fIntended; + BOOLEAN fStopped; + INT8 bOldLOSIndexX; + INT8 bOldLOSIndexY; - UINT32 uiTileInc = 0; - UINT32 uiTime; + UINT32 uiTileInc = 0; + UINT32 uiTime; - INT8 bDir; - INT32 iGridNo, iAdjGridNo; + INT8 bDir; + INT32 iGridNo, iAdjGridNo; - INT32 iRemainingImpact; + INT32 iRemainingImpact; - FIXEDPT qDistToTravelX; - FIXEDPT qDistToTravelY; - INT32 iStepsToTravelX; - INT32 iStepsToTravelY; - INT32 iStepsToTravel; + FIXEDPT qDistToTravelX; + FIXEDPT qDistToTravelY; + INT32 iStepsToTravelX; + INT32 iStepsToTravelY; + INT32 iStepsToTravel; - INT32 iNumLocalStructures; - INT32 iStructureLoop; - UINT32 uiChanceOfHit; + INT32 iNumLocalStructures; + INT32 iStructureLoop; + UINT32 uiChanceOfHit; - BOOLEAN fResolveHit; + BOOLEAN fResolveHit; - INT32 i; - BOOLEAN fGoingOver = FALSE; - BOOLEAN fHitStructure; + INT32 i; + BOOLEAN fGoingOver = FALSE; + BOOLEAN fHitStructure; - FIXEDPT qWallHeight; - FIXEDPT qWindowBottomHeight; - FIXEDPT qWindowTopHeight; + FIXEDPT qWallHeight; + FIXEDPT qWindowBottomHeight; + FIXEDPT qWindowTopHeight; - UINT16 lastriotshieldholder = NOBODY; // added by Flugente + SoldierID lastriotshieldholder = NOBODY; // added by Flugente pBullet = GetBulletPtr( iBullet ); @@ -7358,7 +7357,7 @@ void MoveBullet( INT32 iBullet ) ubTargetID = WhoIsThere2( iAdjGridNo, (INT8) sDesiredLevel ); if (ubTargetID != NOBODY) { - pTarget = MercPtrs[ ubTargetID ]; + pTarget = ubTargetID; if ( IS_MERC_BODY_TYPE( pTarget ) && (pBullet->ubFirerID == NOBODY || pBullet->pFirer->bSide != pTarget->bSide) ) { // buckshot has only a 1 in 2 chance of applying a suppression point @@ -9911,7 +9910,7 @@ UINT32 CalcCounterForceAccuracy(SOLDIERTYPE *pShooter, OBJECTTYPE *pWeapon, UINT // If we can't see the target, but buddies can see it, CF-Accuracy drops by 50% // If we can't see the target and neither can buddies, CF-Accuracy drops by 75% - UINT16 ubTargetID = WhoIsThere2( pShooter->sTargetGridNo, pShooter->bTargetLevel ); // Target ubID + SoldierID ubTargetID = WhoIsThere2( pShooter->sTargetGridNo, pShooter->bTargetLevel ); // Target ubID INT16 sDistVis = pShooter->GetMaxDistanceVisible(pShooter->sTargetGridNo, pShooter->bTargetLevel, CALC_FROM_ALL_DIRS ) * CELL_X_SIZE; gbForceWeaponNotReady = true; INT16 sDistVisNoScope = pShooter->GetMaxDistanceVisible(pShooter->sTargetGridNo, pShooter->bTargetLevel, CALC_FROM_ALL_DIRS ) * CELL_X_SIZE; @@ -9920,12 +9919,12 @@ UINT32 CalcCounterForceAccuracy(SOLDIERTYPE *pShooter, OBJECTTYPE *pWeapon, UINT INT32 iSightRange = 0; if (ubTargetID != NOBODY) - iSightRange = SoldierToSoldierLineOfSightTest( pShooter, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pShooter->bAimShotLocation, false ); + iSightRange = SoldierToSoldierLineOfSightTest( pShooter, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pShooter->bAimShotLocation, false ); if (iSightRange == 0) { // didn't do a bodypart-based test or can't see specific body part aimed at iSightRange = SoldierTo3DLocationLineOfSightTest( pShooter, pShooter->sTargetGridNo, pShooter->bTargetLevel, pShooter->bTargetCubeLevel, TRUE, NO_DISTANCE_LIMIT, false ); } if (iSightRange == 0) { // Can't see the target but we still need to know what the sight range would be if we could so we can deal with cover penalties - iSightRange = SoldierToSoldierLineOfSightTest( pShooter, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pShooter->bAimShotLocation, false, true ); + iSightRange = SoldierToSoldierLineOfSightTest( pShooter, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pShooter->bAimShotLocation, false, true ); } // Modify iSightRange for scope use diff --git a/Tactical/LOS.h b/Tactical/LOS.h index a03b4216..69e03f0e 100644 --- a/Tactical/LOS.h +++ b/Tactical/LOS.h @@ -69,7 +69,7 @@ INT8 FireBulletGivenTarget( SOLDIERTYPE * pFirer, FLOAT dEndX, FLOAT dEndY, FLOA // HEADROCK HAM 4: Changed the name of one argument to avoid confusion with the new CTH system. INT8 FireBulletGivenTargetNCTH( SOLDIERTYPE * pFirer, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usHandItem, INT16 sApertureRatio, BOOLEAN fBuckshot, BOOLEAN fFake ); // HEADROCK HAM 5: Function for fragments ejected from an explosion. -INT8 FireFragmentGivenTarget( UINT16 ubOwner, FLOAT dStartX, FLOAT dStartY, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usExplosiveItem ); +INT8 FireFragmentGivenTarget( SoldierID ubOwner, FLOAT dStartX, FLOAT dStartY, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usExplosiveItem ); // Flugente: fire a shot from a gun that has no user (used for traps with attached guns) INT8 FireBulletGivenTargetTrapOnly( SOLDIERTYPE* pThrower, OBJECTTYPE* pObj, INT32 gridno, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, INT16 sHitBy); diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index aa96c7e6..a415b2e1 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -25194,13 +25194,13 @@ BOOLEAN MajorTrait( UINT8 uiSkillTraitNumber ) return FALSE; } -BOOLEAN GetRadioOperatorSignal( UINT8 usOwner, INT32* psTargetGridNo ) +BOOLEAN GetRadioOperatorSignal( SoldierID usOwner, INT32* psTargetGridNo ) { // get the 'real owner' if ( usOwner > 1 ) { // a merc planted this - if he's a radio operator, use his gridno - SOLDIERTYPE* pSoldier = MercPtrs[usOwner - 2]; + SOLDIERTYPE* pSoldier = (usOwner - 2); if ( pSoldier && pSoldier->CanUseRadio( FALSE ) && pSoldier->bActive && pSoldier->bInSector && (pSoldier->sSectorX == gWorldSectorX) && (pSoldier->sSectorY == gWorldSectorY) && (pSoldier->bSectorZ == gbWorldSectorZ) ) { diff --git a/Tactical/Soldier Control.h b/Tactical/Soldier Control.h index eebd00ee..158cb352 100644 --- a/Tactical/Soldier Control.h +++ b/Tactical/Soldier Control.h @@ -2227,7 +2227,7 @@ BOOLEAN DecideAltAnimForBigMerc( SOLDIERTYPE * pSoldier ); // added by Flugente BOOLEAN TwoStagedTrait( UINT8 uiSkillTraitNumber ); // determine if this (new) trait has two stages BOOLEAN MajorTrait( UINT8 uiSkillTraitNumber ); // determine if this is a major trait -BOOLEAN GetRadioOperatorSignal(UINT8 usOwner, INT32* psTargetGridNo); // retrieve the gridno of a radio operator who (or whose team) ordered an artillery strike +BOOLEAN GetRadioOperatorSignal( SoldierID usOwner, INT32* psTargetGridNo); // retrieve the gridno of a radio operator who (or whose team) ordered an artillery strike BOOLEAN IsValidArtilleryOrderSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, UINT8 bTeam ); // can an artillery strike be ordered FROM this sector BOOLEAN SectorJammed(); BOOLEAN PlayerTeamIsScanning(); diff --git a/Tactical/TeamTurns.cpp b/Tactical/TeamTurns.cpp index 49d53cfd..975e4b19 100644 --- a/Tactical/TeamTurns.cpp +++ b/Tactical/TeamTurns.cpp @@ -114,10 +114,10 @@ typedef struct { UINT16 ubOutOfTurnPersons; - INT16 InterruptOnlyGuynum; + SoldierID InterruptOnlyGuynum; INT16 sWhoThrewRock; - BOOLEAN InterruptsAllowed; - BOOLEAN fHiddenInterrupt; + BOOLEAN InterruptsAllowed; + BOOLEAN fHiddenInterrupt; UINT8 ubLastInterruptedGuy; UINT8 ubFiller[16]; diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index ebe43661..8e527f79 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -2444,7 +2444,7 @@ BOOLEAN UseGunNCTH( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) //CHAR8 zBurstString[512]; UINT8 ubDirection; INT32 sNewGridNo; - UINT16 ubMerc; + SoldierID ubMerc; BOOLEAN fGonnaHit = FALSE; FLOAT dExpGain = 0; UINT32 uiDepreciateTest; @@ -2967,14 +2967,14 @@ BOOLEAN UseGunNCTH( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) if ( ubMerc != NOBODY ) { - if ( gAnimControl[ MercPtrs[ ubMerc ]->usAnimState ].ubHeight != ANIM_PRONE ) + if ( gAnimControl[ ubMerc->usAnimState ].ubHeight != ANIM_PRONE ) { // Increment attack counter... // gTacticalStatus.ubAttackBusyCount++; DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("Incrementing Attack: Exaust from LAW", gTacticalStatus.ubAttackBusyCount ) ); DebugAttackBusy( "Incrementing Attack: Exaust from LAW\n" ); - MercPtrs[ ubMerc ]->EVENT_SoldierGotHit( MINI_GRENADE, 10, 200, pSoldier->ubDirection, 0, pSoldier->ubID, 0, ANIM_CROUCH, 0, sNewGridNo ); + ubMerc->EVENT_SoldierGotHit( MINI_GRENADE, 10, 200, pSoldier->ubDirection, 0, pSoldier->ubID, 0, ANIM_CROUCH, 0, sNewGridNo ); } } } @@ -3232,7 +3232,7 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) // CHAR8 zBurstString[512]; UINT8 ubDirection; INT32 sNewGridNo; - UINT16 ubMerc; + SoldierID ubMerc; BOOLEAN fGonnaHit = FALSE; UINT16 usExpGain = 0; UINT32 uiDepreciateTest; @@ -3785,14 +3785,14 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) if ( ubMerc != NOBODY ) { - if ( gAnimControl[ MercPtrs[ ubMerc ]->usAnimState ].ubHeight != ANIM_PRONE ) + if ( gAnimControl[ ubMerc->usAnimState ].ubHeight != ANIM_PRONE ) { // Increment attack counter... // gTacticalStatus.ubAttackBusyCount++; DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("Incrementing Attack: Exaust from LAW", gTacticalStatus.ubAttackBusyCount ) ); DebugAttackBusy( "Incrementing Attack: Exaust from LAW\n" ); - MercPtrs[ ubMerc ]->EVENT_SoldierGotHit( MINI_GRENADE, 10, 200, pSoldier->ubDirection, 0, pSoldier->ubID, 0, ANIM_CROUCH, 0, sNewGridNo ); + ubMerc->EVENT_SoldierGotHit( MINI_GRENADE, 10, 200, pSoldier->ubDirection, 0, pSoldier->ubID, 0, ANIM_CROUCH, 0, sNewGridNo ); } } } @@ -4097,15 +4097,15 @@ BOOLEAN UseBlade( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) PossiblyStartEnemyTaunt( pTargetSoldier, TAUNT_GOT_MISSED_BLADE, pSoldier->ubID ); // if it was another team shooting at someone under our control - if ( (pSoldier->bTeam != Menptr[ pTargetSoldier->ubID ].bTeam ) ) + if ( (pSoldier->bTeam != pTargetSoldier->ubID->bTeam ) ) { if (pTargetSoldier->bTeam == gbPlayerNum) { // AGILITY GAIN (10): Target avoids a knife attack // Snap: stat gains should match stat requirements - StatChange( MercPtrs[ pTargetSoldier->ubID ], DEXTAMT, 15, FALSE); - StatChange( MercPtrs[ pTargetSoldier->ubID ], AGILAMT, 5, FALSE); - StatChange( MercPtrs[ pTargetSoldier->ubID ], STRAMT, 5, FALSE); + StatChange( pTargetSoldier->ubID, DEXTAMT, 15, FALSE); + StatChange( pTargetSoldier->ubID, AGILAMT, 5, FALSE); + StatChange( pTargetSoldier->ubID, STRAMT, 5, FALSE); } } // 0verhaul: Another case that is handled by the animation transition system. @@ -4940,10 +4940,10 @@ BOOLEAN UseHandToHand( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo, BOOLEAN fStea BOOLEAN UseThrown( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) { - UINT32 uiHitChance; + UINT32 uiHitChance; INT8 bLoop; - UINT16 ubTargetID; - SOLDIERTYPE * pTargetSoldier; + SoldierID ubTargetID; + SOLDIERTYPE *pTargetSoldier; //INT16 sAPCost = 0;//dnl ch72 180913 uiHitChance = CalcThrownChanceToHit( pSoldier, sTargetGridNo, pSoldier->aiData.bAimTime, AIM_SHOT_TORSO ); @@ -4965,7 +4965,7 @@ BOOLEAN UseThrown( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) } else { - pTargetSoldier = MercPtrs[ ubTargetID ]; + pTargetSoldier = ubTargetID; } if ( pTargetSoldier && pTargetSoldier->bTeam == pSoldier->bTeam ) @@ -4987,7 +4987,7 @@ BOOLEAN UseThrown( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) pTargetSoldier = NULL; if ( ubTargetID != NOBODY ) { - pTargetSoldier = MercPtrs[ ubTargetID ]; + pTargetSoldier = ubTargetID; if ( pTargetSoldier->bTeam != pSoldier->bTeam ) { usNumTargets++; @@ -5315,7 +5315,7 @@ BOOLEAN UseLauncher( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) return( TRUE ); } -BOOLEAN DoSpecialEffectAmmoMiss( UINT16 ubAttackerID, UINT16 usWeaponIndex, INT32 sGridNo, INT16 sXPos, INT16 sYPos, INT16 sZPos, BOOLEAN fSoundOnly, BOOLEAN fFreeupAttacker, INT32 iBullet ) +BOOLEAN DoSpecialEffectAmmoMiss( SoldierID ubAttackerID, UINT16 usWeaponIndex, INT32 sGridNo, INT16 sXPos, INT16 sYPos, INT16 sZPos, BOOLEAN fSoundOnly, BOOLEAN fFreeupAttacker, INT32 iBullet ) { ANITILE_PARAMS AniParams; UINT8 ubAmmoType = 0; @@ -5324,7 +5324,7 @@ BOOLEAN DoSpecialEffectAmmoMiss( UINT16 ubAttackerID, UINT16 usWeaponIndex, INT3 // Flugente: check for underbarrel weapons and use that object if necessary if ( ubAttackerID != NOBODY ) { - OBJECTTYPE* pObj = MercPtrs[ ubAttackerID ]->GetUsedWeapon( &MercPtrs[ ubAttackerID ]->inv[ MercPtrs[ ubAttackerID ]->ubAttackingHand ] ); + OBJECTTYPE* pObj = ubAttackerID->GetUsedWeapon( &ubAttackerID->inv[ ubAttackerID->ubAttackingHand ] ); ubAmmoType = (*pObj)[0]->data.gun.ubGunAmmoType; usItem = (*pObj).usItem; @@ -6036,7 +6036,7 @@ void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, Sol // Set attacker ID pNode->usMissAnimationPlayed = usMissTileType; - pNode->ubAttackerMissed = ubAttackerID; + pNode->ubAttackerMissed = ubAttackerID; // Adjust for absolute positioning pNode->pLevelNode->uiFlags |= LEVELNODE_USEABSOLUTEPOS; pNode->pLevelNode->sRelativeX = sXPos; @@ -6278,7 +6278,7 @@ UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi UINT16 usInHand; OBJECTTYPE * pInHand; INT16 sDistVis, sDistVisNoScope; - UINT16 ubTargetID; + SoldierID ubTargetID; bool fCantSeeTarget = false; FLOAT scopeRangeMod = 0.0f; @@ -6327,7 +6327,7 @@ UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi if (ubTargetID != NOBODY && (pSoldier->aiData.bOppList[ubTargetID] == SEEN_CURRENTLY || gbPublicOpplist[pSoldier->bTeam][ubTargetID] == SEEN_CURRENTLY)) { - iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false ); + iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false ); } if (iSightRange == 0) { @@ -6338,7 +6338,7 @@ UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi { // Can't see the target but we still need to know what the sight range would be if we could so we can deal with cover penalties if (ubTargetID != NOBODY) - iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false, true ); + iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false, true ); fCantSeeTarget = true; } @@ -6639,8 +6639,8 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, INT16 bonusProgression[8] = {500,500,600,600,750,750,750,1000}; //Aiming progression UINT16 usInHand, usShockPenalty, MIN_RANGE_FOR_FULL_COWER, MAX_TARGET_COWERING_PENALTY; UINT16 iBulletsLeft, iTracersFired = 0, iBulletsPerTracer, iBulletsSinceLastTracer=0, iRoundsFiredPreviously; - INT8 bBandaged, maxClickBonus = 10, AIM_PENALTY_PER_TARGET_SHOCK; - UINT16 ubTargetID; + INT8 bBandaged, maxClickBonus = 10, AIM_PENALTY_PER_TARGET_SHOCK; + SoldierID ubTargetID; UINT8 bLightLevel, ubCoweringDivisor, ubAutoPenaltySinceLastTracer = 0; FLOAT maxBonus, aimTimeBonus, scopeRangeMod = 0.0f, iAimBonus; bool fCantSeeTarget = false, fCoverObscured = false; @@ -6685,7 +6685,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, iScopeVisionRangeBonus = GetTotalVisionRangeBonus(pSoldier, bLightLevel); // not an actual range value, simply a modifier for range calculations if (ubTargetID != NOBODY && ( pSoldier->aiData.bOppList[ubTargetID] == SEEN_CURRENTLY || gbPublicOpplist[pSoldier->bTeam][ubTargetID] == SEEN_CURRENTLY ) ) - iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false ); + iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false ); if (iSightRange == 0) { @@ -6698,7 +6698,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, { // Can't see the target but we still need to know what the sight range would be if we could so we can deal with cover penalties if (ubTargetID != NOBODY) - iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false, true ); + iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false, true ); fCantSeeTarget = true; fCoverObscured = false; } @@ -9061,7 +9061,7 @@ INT32 HTHImpact( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pTarget, INT32 iHitBy, BO return( iImpact ); } -void ShotMiss( UINT16 ubAttackerID, INT32 iBullet ) +void ShotMiss( SoldierID ubAttackerID, INT32 iBullet ) { BOOLEAN fDoMissForGun = FALSE; SOLDIERTYPE* pAttacker = NULL; @@ -9070,7 +9070,7 @@ void ShotMiss( UINT16 ubAttackerID, INT32 iBullet ) if ( ubAttackerID == NOBODY ) return; - pAttacker = MercPtrs[ ubAttackerID ]; + pAttacker = ubAttackerID; if ( pAttacker->ubOppNum != NOBODY ) { @@ -9086,7 +9086,7 @@ void ShotMiss( UINT16 ubAttackerID, INT32 iBullet ) } } - switch( Weapon[ MercPtrs[ ubAttackerID ]->usAttackingWeapon ].ubWeaponClass ) + switch( Weapon[ ubAttackerID->usAttackingWeapon ].ubWeaponClass ) { case HANDGUNCLASS: case RIFLECLASS: @@ -9095,11 +9095,11 @@ void ShotMiss( UINT16 ubAttackerID, INT32 iBullet ) case MGCLASS: // Guy has missed, play random sound - if ( MercPtrs[ ubAttackerID ]->bTeam == gbPlayerNum ) + if ( ubAttackerID->bTeam == gbPlayerNum ) { if ( Random(40) == 0 ) { - MercPtrs[ ubAttackerID ]->DoMercBattleSound( BATTLE_SOUND_CURSE1 ); + ubAttackerID->DoMercBattleSound( BATTLE_SOUND_CURSE1 ); } } fDoMissForGun = TRUE; @@ -9142,7 +9142,7 @@ void ShotMiss( UINT16 ubAttackerID, INT32 iBullet ) // PLAY SOUND AND FLING DEBRIS // RANDOMIZE SOUND SYSTEM - if ( !DoSpecialEffectAmmoMiss( ubAttackerID, MercPtrs[ ubAttackerID ]->usAttackingWeapon, NOWHERE, 0, 0, 0, TRUE, TRUE, 0 ) ) + if ( !DoSpecialEffectAmmoMiss( ubAttackerID, ubAttackerID->usAttackingWeapon, NOWHERE, 0, 0, 0, TRUE, TRUE, 0 ) ) { PlayJA2Sample( MISS_1 + Random(8), RATE_11025, HIGHVOLUME, 1, MIDDLEPAN ); } diff --git a/Tactical/Weapons.h b/Tactical/Weapons.h index 650d18f3..8f6afb7e 100644 --- a/Tactical/Weapons.h +++ b/Tactical/Weapons.h @@ -459,7 +459,7 @@ extern void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStat extern void WindowHit( INT32 sGridNo, UINT16 usStructureID, BOOLEAN fBlowWindowSouth, BOOLEAN fLargeForce ); // HEADROCK HAM 5.1: Moved to Bullets.h extern BOOLEAN InRange( SOLDIERTYPE *pSoldier, INT32 sGridNo ); -extern void ShotMiss( UINT16 ubAttackerID, INT32 iBullet ); +extern void ShotMiss( SoldierID ubAttackerID, INT32 iBullet ); extern UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, UINT8 ubAimPos ); extern UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, UINT8 ubAimPos ); extern UINT32 AICalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, UINT8 ubAimPos, INT8 bTargetLevel, UINT16 usAnimState);//dnl ch59 180813 diff --git a/Tactical/bullets.cpp b/Tactical/bullets.cpp index 193cf9b9..0f904908 100644 --- a/Tactical/bullets.cpp +++ b/Tactical/bullets.cpp @@ -71,7 +71,7 @@ void RecountBullets(void) } -INT32 CreateBullet( UINT16 ubFirerID, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem ) +INT32 CreateBullet( SoldierID ubFirerID, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem ) { INT32 iBulletIndex; BULLET *pBullet; @@ -245,7 +245,7 @@ void LocateBullet( INT32 iBulletIndex ) // Check if a bad guy fired! if ( gBullets[ iBulletIndex ].ubFirerID != NOBODY ) { - if ( MercPtrs[ gBullets[ iBulletIndex ].ubFirerID ]->bSide == gbPlayerNum ) + if ( gBullets[ iBulletIndex ].ubFirerID->bSide == gbPlayerNum ) { if ( !gBullets[ iBulletIndex ].fLocated ) { @@ -633,7 +633,7 @@ BOOLEAN LoadBulletStructureFromSavedGameFile( HWFILE hFile ) //Set some parameters gBullets[usCnt].uiLastUpdate = 0; if( gBullets[usCnt].ubFirerID != NOBODY ) - gBullets[usCnt].pFirer = &Menptr[ gBullets[usCnt].ubFirerID ]; + gBullets[usCnt].pFirer = gBullets[usCnt].ubFirerID; else gBullets[usCnt].pFirer = NULL; diff --git a/TacticalAI/AIUtils.cpp b/TacticalAI/AIUtils.cpp index e8cd046b..4b4d0357 100644 --- a/TacticalAI/AIUtils.cpp +++ b/TacticalAI/AIUtils.cpp @@ -5670,7 +5670,7 @@ BOOLEAN DuskLight(void) return FALSE; } -BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) +BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID) { INT8 bPersonalKnowledge; INT8 bPublicKnowledge; @@ -5694,7 +5694,7 @@ BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) return FALSE; } -INT8 Knowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) +INT8 Knowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5709,7 +5709,7 @@ INT8 Knowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) return PublicKnowledge(pSoldier->bTeam, ubOpponentID); } -INT32 KnownLocation(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) +INT32 KnownLocation(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5724,7 +5724,7 @@ INT32 KnownLocation(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) return KnownPublicLocation(pSoldier->bTeam, ubOpponentID); } -INT8 KnownLevel(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) +INT8 KnownLevel(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5739,7 +5739,7 @@ INT8 KnownLevel(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) return KnownPublicLevel(pSoldier->bTeam, ubOpponentID); } -INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) +INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5749,7 +5749,7 @@ INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) return pSoldier->aiData.bOppList[ubOpponentID]; } -INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) +INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5763,7 +5763,7 @@ INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) return gsLastKnownOppLoc[pSoldier->ubID][ubOpponentID]; } -INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) +INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5773,7 +5773,7 @@ INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) return gbLastKnownOppLevel[pSoldier->ubID][ubOpponentID]; } -INT8 PublicKnowledge(UINT8 bTeam, UINT16 ubOpponentID) +INT8 PublicKnowledge(UINT8 bTeam, SoldierID ubOpponentID) { if (bTeam >= MAXTEAMS || ubOpponentID == NOBODY) { @@ -5783,7 +5783,7 @@ INT8 PublicKnowledge(UINT8 bTeam, UINT16 ubOpponentID) return gbPublicOpplist[bTeam][ubOpponentID]; } -INT32 KnownPublicLocation(UINT8 bTeam, UINT16 ubOpponentID) +INT32 KnownPublicLocation(UINT8 bTeam, SoldierID ubOpponentID) { if (bTeam >= MAXTEAMS || ubOpponentID == NOBODY) { @@ -5797,7 +5797,7 @@ INT32 KnownPublicLocation(UINT8 bTeam, UINT16 ubOpponentID) return gsPublicLastKnownOppLoc[bTeam][ubOpponentID]; } -INT8 KnownPublicLevel(UINT8 bTeam, UINT16 ubOpponentID) +INT8 KnownPublicLevel(UINT8 bTeam, SoldierID ubOpponentID) { if (bTeam >= MAXTEAMS || ubOpponentID == NOBODY) { diff --git a/TacticalAI/ai.h b/TacticalAI/ai.h index a6603ae3..3d990d88 100644 --- a/TacticalAI/ai.h +++ b/TacticalAI/ai.h @@ -387,19 +387,19 @@ BOOLEAN AICheckSpecialRole(SOLDIERTYPE *pSoldier); // Knowledge functions // ************************************************************* -INT8 Knowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID); -INT32 KnownLocation(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID); -INT8 KnownLevel(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID); +INT8 Knowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID); +INT32 KnownLocation(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID); +INT8 KnownLevel(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID); -BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID); +BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID); -INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID); -INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID); -INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID); +INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID); +INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID); +INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID); -INT8 PublicKnowledge(UINT8 bTeam, UINT16 ubOpponentID); -INT32 KnownPublicLocation(UINT8 bTeam, UINT16 ubOpponentID); -INT8 KnownPublicLevel(UINT8 bTeam, UINT16 ubOpponentID); +INT8 PublicKnowledge(UINT8 bTeam, SoldierID ubOpponentID); +INT32 KnownPublicLocation(UINT8 bTeam, SoldierID ubOpponentID); +INT8 KnownPublicLevel(UINT8 bTeam, SoldierID ubOpponentID); #define MAX_FLANKS_RED 25 #define MAX_FLANKS_YELLOW 25 diff --git a/TileEngine/Explosion Control.cpp b/TileEngine/Explosion Control.cpp index a5a1ff84..5569c419 100644 --- a/TileEngine/Explosion Control.cpp +++ b/TileEngine/Explosion Control.cpp @@ -63,7 +63,7 @@ BOOLEAN HookerInRoom( UINT16 usRoom ); // MODULE FOR EXPLOSIONS // Spreads the effects of explosions... -BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usItem, UINT16 ubOwner, INT16 sSubsequent, BOOLEAN *pfMercHit, INT8 bLevel, INT32 iSmokeEffectID ); +BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usItem, SoldierID ubOwner, INT16 sSubsequent, BOOLEAN *pfMercHit, INT8 bLevel, INT32 iSmokeEffectID ); // Flashbang effect on soldier UINT8 DetermineFlashbangEffect( SOLDIERTYPE *pSoldier, INT8 ubExplosionDir, BOOLEAN fInBuilding); @@ -192,7 +192,7 @@ UINT32 guiNumExplosions = 0; INT32 GetFreeExplosion( void ); void RecountExplosions( void ); void GenerateExplosionFromExplosionPointer( EXPLOSIONTYPE *pExplosion ); -void HandleBuldingDestruction( INT32 sGridNo, UINT16 ubOwner ); +void HandleBuldingDestruction( INT32 sGridNo, SoldierID ubOwner ); #ifdef JA2UB //JA25 UB @@ -650,13 +650,13 @@ void HandleFencePartnerCheck( INT32 sStructGridNo ) INT8 ExplosiveDamageStructureAtGridNo( STRUCTURE * pCurrent, STRUCTURE **ppNextCurrent, INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist, - BOOLEAN *pfRecompileMovementCosts, BOOLEAN fOnlyWalls, BOOLEAN fSubSequentMultiTilesTransitionDamage, UINT16 ubOwner, INT8 bLevel, + BOOLEAN *pfRecompileMovementCosts, BOOLEAN fOnlyWalls, BOOLEAN fSubSequentMultiTilesTransitionDamage, SoldierID ubOwner, INT8 bLevel, UINT8 ubReason ) { #ifdef JA2BETAVERSION if (is_networked) { CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"ExplosiveDamageStructureAtGridNo ( sGridNo : %i , sWoundAmt : %i , uiDist : %i , fRecompMoveCosts : %i , fOnlyWalls : %i , SubsMulTilTransDmg : %i , ubOwner : %i , bLevel : %i )\n", sGridNo, sWoundAmt , uiDist, (int)*pfRecompileMovementCosts , (int)fOnlyWalls , (int)fSubSequentMultiTilesTransitionDamage , ubOwner , bLevel ); + sprintf(tmpMPDbgString,"ExplosiveDamageStructureAtGridNo ( sGridNo : %i , sWoundAmt : %i , uiDist : %i , fRecompMoveCosts : %i , fOnlyWalls : %i , SubsMulTilTransDmg : %i , ubOwner : %i , bLevel : %i )\n", sGridNo, sWoundAmt , uiDist, (int)*pfRecompileMovementCosts , (int)fOnlyWalls , (int)fSubSequentMultiTilesTransitionDamage , ubOwner.i , bLevel ); MPDebugMsg(tmpMPDbgString); } #endif @@ -1329,14 +1329,14 @@ STRUCTURE *gStruct; void ExplosiveDamageGridNo( INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist, BOOLEAN *pfRecompileMovementCosts, - BOOLEAN fOnlyWalls, INT8 bMultiStructSpecialFlag, BOOLEAN fSubSequentMultiTilesTransitionDamage, UINT16 ubOwner, + BOOLEAN fOnlyWalls, INT8 bMultiStructSpecialFlag, BOOLEAN fSubSequentMultiTilesTransitionDamage, SoldierID ubOwner, INT8 bLevel, UINT8 ubReason ) { #ifdef JA2BETAVERSION if (is_networked) { CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"ExplosiveDamageGridNo ( sGridNo : %i , sWoundAmt : %i , uiDist : %i , fRecompileMoveCosts : %i , fOnlyWalls : %i , MultiStructSpecialFlag : %i ,fSubsequentMultiTilesTransDmg : %i , ubOwner : %i , bLevel : %i )\n", sGridNo, sWoundAmt ,uiDist, (int)*pfRecompileMovementCosts , (int)fOnlyWalls , bMultiStructSpecialFlag , (int)fSubSequentMultiTilesTransitionDamage , ubOwner , bLevel ); + sprintf(tmpMPDbgString,"ExplosiveDamageGridNo ( sGridNo : %i , sWoundAmt : %i , uiDist : %i , fRecompileMoveCosts : %i , fOnlyWalls : %i , MultiStructSpecialFlag : %i ,fSubsequentMultiTilesTransDmg : %i , ubOwner : %i , bLevel : %i )\n", sGridNo, sWoundAmt ,uiDist, (int)*pfRecompileMovementCosts , (int)fOnlyWalls , bMultiStructSpecialFlag , (int)fSubSequentMultiTilesTransitionDamage , ubOwner.i , bLevel ); MPDebugMsg(tmpMPDbgString); } #endif @@ -1511,12 +1511,12 @@ void ExplosiveDamageGridNo( INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist, } -BOOLEAN DamageSoldierFromBlast( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent, BOOL fFromRemoteClient ) +BOOLEAN DamageSoldierFromBlast( SoldierID ubPerson, SoldierID ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent, BOOL fFromRemoteClient ) { // OJW - 20091028 if (is_networked && is_client) { - SOLDIERTYPE* pSoldier = MercPtrs[ubPerson]; + SOLDIERTYPE* pSoldier = ubPerson; if (pSoldier != NULL) { // only the owner of a merc may send damage (as this takes into account equipped armor) @@ -1532,9 +1532,9 @@ BOOLEAN DamageSoldierFromBlast( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGrid } } #ifdef JA2BETAVERSION - CHAR tmpMPDbgString[512]; - sprintf(tmpMPDbgString,"DamageSoldierFromBlast ( ubPerson : %i , ubOwner : %i , sBombGridNo : %i , sWoundAmt : %i , sBreathAmt : %i , uiDist : %i , usItem : %i , sSubs : %i , fFromRemoteClient : %i )\n",ubPerson, ubOwner , sBombGridNo , sWoundAmt , sBreathAmt , uiDist , usItem , sSubsequent , fFromRemoteClient ); - MPDebugMsg(tmpMPDbgString); + CHAR tmpMPDbgString[512]; + sprintf(tmpMPDbgString,"DamageSoldierFromBlast ( ubPerson : %i , ubOwner : %i , sBombGridNo : %i , sWoundAmt : %i , sBreathAmt : %i , uiDist : %i , usItem : %i , sSubs : %i , fFromRemoteClient : %i )\n",ubPerson.i, ubOwner.i , sBombGridNo , sWoundAmt , sBreathAmt , uiDist , usItem , sSubsequent , fFromRemoteClient ); + MPDebugMsg(tmpMPDbgString); #endif } @@ -1547,7 +1547,7 @@ BOOLEAN DamageSoldierFromBlast( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGrid BOOLEAN fFlashbang = Explosive[Item[usItem].ubClassIndex].ubType == EXPLOSV_FLASHBANG; UINT16 usHalfExplosionRadius; - pSoldier = MercPtrs[ ubPerson ]; // someone is here, and they're gonna get hurt + pSoldier = ubPerson; // someone is here, and they're gonna get hurt if (!pSoldier->bActive || !pSoldier->bInSector || !pSoldier->stats.bLife ) return( FALSE ); @@ -1612,29 +1612,29 @@ BOOLEAN DamageSoldierFromBlast( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGrid // SANDRO - STOMP traits else { - if ( ubOwner < TOTAL_SOLDIERS && (MercPtrs[ ubOwner ] != NULL) && gGameOptions.fNewTraitSystem) + if ( ubOwner < TOTAL_SOLDIERS && gGameOptions.fNewTraitSystem) { // Demolitions damage bonus with bombs and mines - if ( HAS_SKILL_TRAIT( MercPtrs[ ubOwner ], DEMOLITIONS_NT ) && + if ( HAS_SKILL_TRAIT( ubOwner, DEMOLITIONS_NT ) && Explosive[Item[usItem].ubClassIndex].ubType == EXPLOSV_NORMAL && Item[usItem].usItemClass == IC_BOMB && (!ItemIsAttachment(usItem) || ItemIsMine(usItem))) { sNewWoundAmt = (INT16)(sNewWoundAmt * (100 + gSkillTraitValues.ubDEDamageOfBombsAndMines) / 100.0f + 0.5f); } // Heavy Weapons trait bonus damage to tanks - if ( HAS_SKILL_TRAIT( MercPtrs[ubOwner], HEAVY_WEAPONS_NT ) && (ARMED_VEHICLE( pSoldier ) || ENEMYROBOT( pSoldier )) && + if ( HAS_SKILL_TRAIT( ubOwner, HEAVY_WEAPONS_NT ) && (ARMED_VEHICLE( pSoldier ) || ENEMYROBOT( pSoldier )) && Explosive[Item[usItem].ubClassIndex].ubType == EXPLOSV_NORMAL ) { - sNewWoundAmt = (INT16)(sNewWoundAmt * (100 + gSkillTraitValues.ubHWDamageTanksBonusPercent * NUM_SKILL_TRAITS( MercPtrs[ ubOwner ], HEAVY_WEAPONS_NT )) / 100.0f + 0.5f); // +30% + sNewWoundAmt = (INT16)(sNewWoundAmt * (100 + gSkillTraitValues.ubHWDamageTanksBonusPercent * NUM_SKILL_TRAITS( ubOwner, HEAVY_WEAPONS_NT )) / 100.0f + 0.5f); // +30% } // Heavy Weapons trait bonus damage with rocket, grenade launchers and mortar - else if ( HAS_SKILL_TRAIT( MercPtrs[ ubOwner ], HEAVY_WEAPONS_NT ) && + else if ( HAS_SKILL_TRAIT( ubOwner, HEAVY_WEAPONS_NT ) && Explosive[Item[usItem].ubClassIndex].ubType == EXPLOSV_NORMAL && ((Item[usItem].usItemClass == IC_BOMB && ItemIsAttachment(usItem) && !ItemIsMine(usItem) ) || // mortar shells (Item[usItem].usItemClass == IC_GRENADE && (ItemIsGLgrenade(usItem) || ItemIsElectronic(usItem)) ) || // rockets for rocketlaunchers (I haven't found any other way) (Item[usItem].usItemClass == IC_LAUNCHER ) || ItemIsRocketLauncher(usItem) || ItemIsSingleShotRocketLauncher(usItem) ) ) { - sNewWoundAmt = (INT16)(sNewWoundAmt * (100 + gSkillTraitValues.ubHWDamageBonusPercentForHW * NUM_SKILL_TRAITS( MercPtrs[ ubOwner ], HEAVY_WEAPONS_NT )) / 100.0f + 0.5f); // +15% + sNewWoundAmt = (INT16)(sNewWoundAmt * (100 + gSkillTraitValues.ubHWDamageBonusPercentForHW * NUM_SKILL_TRAITS( ubOwner, HEAVY_WEAPONS_NT )) / 100.0f + 0.5f); // +15% } } @@ -1890,9 +1890,9 @@ BOOLEAN DamageSoldierFromBlast( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGrid pSoldier->ubMiscSoldierFlags |= SOLDIER_MISC_HURT_BY_EXPLOSION; - if ( ubOwner != NOBODY && MercPtrs[ ubOwner ]->bTeam == gbPlayerNum && pSoldier->bTeam != gbPlayerNum ) + if ( ubOwner != NOBODY && ubOwner->bTeam == gbPlayerNum && pSoldier->bTeam != gbPlayerNum ) { - ProcessImplicationsOfPCAttack( MercPtrs[ ubOwner ], &pSoldier, REASON_EXPLOSION ); + ProcessImplicationsOfPCAttack( ubOwner, &pSoldier, REASON_EXPLOSION ); } return( TRUE ); @@ -2163,7 +2163,7 @@ BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, IN return( fRecompileMovementCosts ); } -BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usItem, UINT16 ubOwner, INT16 sSubsequent, BOOLEAN *pfMercHit, INT8 bLevel, INT32 iSmokeEffectID ) +BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usItem, SoldierID ubOwner, INT16 sSubsequent, BOOLEAN *pfMercHit, INT8 bLevel, INT32 iSmokeEffectID ) { #ifdef JA2BETAVERSION if (is_networked) { @@ -2174,7 +2174,7 @@ BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usIte #endif INT16 sWoundAmt = 0,sBreathAmt = 0, /* sNewWoundAmt = 0, sNewBreathAmt = 0, */ sStructDmgAmt; - UINT16 ubPerson; + SoldierID ubPerson; SOLDIERTYPE *pSoldier; EXPLOSIVETYPE *pExplosive; INT16 sX, sY; @@ -2533,7 +2533,7 @@ BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usIte return( fRecompileMovementCosts ); } - pSoldier = MercPtrs[ ubPerson ]; // someone is here, and they're gonna get hurt + pSoldier = ubPerson; // someone is here, and they're gonna get hurt // silversurfer: Gas now only has an effect when the container had time to emit some. Initially it will do nothing. // This prevents the problem that we have to suffer two times without a chance to react (1st when the grenade hits our position, 2nd when our turn starts) @@ -2918,11 +2918,11 @@ void GetRayStopInfo( UINT32 uiNewSpot, UINT8 ubDir, INT8 bLevel, BOOLEAN fSmokeE -void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT16 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID, BOOL fFromRemoteClient, BOOL fNewSmokeEffect ) +void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, SoldierID ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID, BOOL fFromRemoteClient, BOOL fNewSmokeEffect ) { if (is_networked && is_client) { - SOLDIERTYPE* pAttacker = MercPtrs[ubOwner]; + SOLDIERTYPE* pAttacker = ubOwner; if (pAttacker != NULL) { if (IsOurSoldier(pAttacker) || (pAttacker->bTeam == 1 && is_server)) @@ -2932,7 +2932,7 @@ void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT16 ubOwner, { // let all the other clients know we are spawning this effect // and align them with our random number generator - send_spreadeffect(sGridNo,ubRadius,usItem,ubOwner,fSubsequent,bLevel,iSmokeEffectID); + send_spreadeffect(sGridNo, ubRadius, usItem, ubOwner, fSubsequent, bLevel, iSmokeEffectID); } } else if (!fFromRemoteClient) @@ -3803,7 +3803,7 @@ void AddBombToQueue( UINT32 uiWorldBombIndex, UINT32 uiTimeStamp, BOOL fFromRemo if (IsOurSoldier((SOLDIERTYPE*)gubPersonToSetOffExplosions) || IsOurSoldier((SOLDIERTYPE*)soldierID)) { // we set off the bomb (could be failed disarm) or we own it, tell the other clients we are setting it off - send_detonate_explosive(iWorldIndex,gubPersonToSetOffExplosions); + send_detonate_explosive(iWorldIndex, gubPersonToSetOffExplosions); } else if (gWorldBombs[uiWorldBombIndex].bIsFromRemotePlayer && !fFromRemoteClient) { @@ -3932,10 +3932,10 @@ BOOLEAN ActivateSurroundingTripwire( SoldierID ubID, INT32 sGridNo, INT8 bLevel, // SANDRO - merc records // only if we blew up somebody not in our team(no achievement for blowing our guys :)), only if owner exists and have profile - if ( (MercPtrs[ubID]->bTeam != gbPlayerNum) && ((*pObj)[0]->data.misc.ubBombOwner > 1) ) + if ( (ubID->bTeam != gbPlayerNum) && ((*pObj)[0]->data.misc.ubBombOwner > 1) ) { - if ( MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->ubProfile != NO_PROFILE && MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->bTeam == gbPlayerNum ) - gMercProfiles[ MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->ubProfile ].records.usExpDetonated++; + if ( ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile != NO_PROFILE && ((*pObj)[0]->data.misc.ubBombOwner - 2)->bTeam == gbPlayerNum ) + gMercProfiles[ ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile ].records.usExpDetonated++; } /*if (pObj->usItem != ACTION_ITEM || (*pObj)[0]->data.misc.bActionValue == ACTION_ITEM_BLOW_UP) @@ -3962,7 +3962,7 @@ BOOLEAN ActivateSurroundingTripwire( SoldierID ubID, INT32 sGridNo, INT8 bLevel, } // Flugente: A special function for tripwire gun traps. Search if pObj has a gun attached. If so, fire a shot from that gun in a specific direction. Afterwards place the gun on the ground -void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, UINT16 ubId, UINT8 ubDirection ) +void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, SoldierID ubId, UINT8 ubDirection ) { if ( !pObj ) return; @@ -3980,7 +3980,7 @@ void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, UINT gTacticalStatus.uiFlags |= (DISALLOW_SIGHT | CHECK_SIGHT_AT_END_OF_ATTACK); } - FireFragmentsTrapGun( MercPtrs[ubId], sGridNo, 0, pObj, ubDirection ); + FireFragmentsTrapGun( ubId, sGridNo, 0, pObj, ubDirection ); // this is important... if not set, the game will remain in a loop gTacticalStatus.ubAttackBusyCount = 0; @@ -4055,11 +4055,11 @@ void HandleExplosionQueue( void ) if ( sSoundID > NO_ALT_SOUND ) PlayJA2Sample( sSoundID, RATE_11025, SoundVolume( HIGHVOLUME, sGridNo ), 1, SoundDir( sGridNo ) ); - UINT16 ubID = WhoIsThere2( sGridNo, ubLevel ); + SoldierID ubID = WhoIsThere2( sGridNo, ubLevel ); if ( ubID != NOBODY ) { - SOLDIERTYPE* pSoldier = MercPtrs[ubID]; + SOLDIERTYPE* pSoldier = ubID; INT16 damage = Explosive[Item[pObj->usItem].ubClassIndex].ubDamage * 0.67f + Random( Explosive[Item[pObj->usItem].ubClassIndex].ubDamage * 0.67f ); INT16 breathdamage = Explosive[Item[pObj->usItem].ubClassIndex].ubStunDamage * 0.67f + Random( Explosive[Item[pObj->usItem].ubClassIndex].ubStunDamage * 0.67f ); @@ -4172,7 +4172,7 @@ void HandleExplosionQueue( void ) INT16 sX, sY; ConvertGridNoToCenterCellXY(sGridNo, &sX, &sY); - fAttFound=HandleAttachedExplosions( (UINT8) ((*pObj)[0]->data.misc.ubBombOwner - 2), sX, sY, 0, + fAttFound = HandleAttachedExplosions( ((*pObj)[0]->data.misc.ubBombOwner - 2), sX, sY, 0, sGridNo, (*pObj)[0]->data.misc.usBombItem, FALSE, ubLevel, (*pObj)[0]->data.ubDirection, pObj); } } @@ -4219,7 +4219,7 @@ void HandleExplosionQueue( void ) // determine gridno to attack - smoke signal required. Otherwise, it is assumed the radio operator ordered the bombing of his OWN position // if we cannot even find a radio operator, all bets are off - target a random gridno // the usual +/- 2 shenanigans - UINT16 usOwner = NOBODY; + SoldierID usOwner = NOBODY; if ( (*pObj)[0]->data.misc.ubBombOwner > 1 ) usOwner = (*pObj)[0]->data.misc.ubBombOwner - 2; @@ -4251,7 +4251,7 @@ void HandleExplosionQueue( void ) // bomb objects only store the SIDE who placed the bomb! :-( if ( (*pObj)[0]->data.misc.ubBombOwner > 1 ) { - IgniteExplosion( (UINT8) ((*pObj)[0]->data.misc.ubBombOwner - 2), sX, sY, 0, sGridNo, (*pObj)[0]->data.misc.usBombItem, ubLevel, (*pObj)[0]->data.ubDirection, pObj); + IgniteExplosion( ((*pObj)[0]->data.misc.ubBombOwner - 2), sX, sY, 0, sGridNo, (*pObj)[0]->data.misc.usBombItem, ubLevel, (*pObj)[0]->data.ubDirection, pObj); } else { @@ -4704,12 +4704,12 @@ void SetOffBombsByFrequency( SoldierID ubID, INT8 bFrequency ) // SANDRO - added merc records and some exp if ( ((*pObj)[0]->data.misc.ubBombOwner) > 1 ) { - if ( MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->ubProfile != NO_PROFILE && - MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->bTeam == gbPlayerNum ) + if ( ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile != NO_PROFILE && + ((*pObj)[0]->data.misc.ubBombOwner - 2)->bTeam == gbPlayerNum ) { - gMercProfiles[MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->ubProfile].records.usExpDetonated++; + gMercProfiles[((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile].records.usExpDetonated++; - StatChange( MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)], EXPLODEAMT, ( 5 ), FALSE ); + StatChange( ((*pObj)[0]->data.misc.ubBombOwner - 2), EXPLODEAMT, ( 5 ), FALSE ); } } @@ -4804,12 +4804,12 @@ void SetOffBombsByFrequency( SoldierID ubID, INT8 bFrequency ) // SANDRO - added merc records and some exp if ( ((*pObj)[0]->data.misc.ubBombOwner) > 1 ) { - if ( MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->ubProfile != NO_PROFILE && - MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->bTeam == gbPlayerNum ) + if ( ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile != NO_PROFILE && + ((*pObj)[0]->data.misc.ubBombOwner - 2)->bTeam == gbPlayerNum ) { - gMercProfiles[MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->ubProfile].records.usExpDetonated++; + gMercProfiles[((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile].records.usExpDetonated++; - StatChange( MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)], EXPLODEAMT, ( 5 ), FALSE ); + StatChange( ((*pObj)[0]->data.misc.ubBombOwner - 2), EXPLODEAMT, ( 5 ), FALSE ); } } @@ -4979,8 +4979,8 @@ BOOLEAN SetOffBombsInGridNo( SoldierID ubID, INT32 sGridNo, BOOLEAN fAllBombs, I // only if we blew up somebody not in our team(no achievement for blowing our guys :)), only if owner exists and have profile if ( (ubID->bTeam != gbPlayerNum) && ((*pObj)[0]->data.misc.ubBombOwner > 1) ) { - if ( MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->ubProfile != NO_PROFILE && MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->bTeam == gbPlayerNum ) - gMercProfiles[ MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->ubProfile ].records.usExpDetonated++; + if ( ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile != NO_PROFILE && ((*pObj)[0]->data.misc.ubBombOwner - 2)->bTeam == gbPlayerNum ) + gMercProfiles[ ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile ].records.usExpDetonated++; } /*if (pObj->usItem != ACTION_ITEM || (*pObj)[0]->data.misc.bActionValue == ACTION_ITEM_BLOW_UP) @@ -5305,7 +5305,7 @@ void UpdateSAMDoneRepair( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) // loop through civ team and find // anybody who is an NPC and // see if they get angry -void HandleBuldingDestruction( INT32 sGridNo, UINT16 ubOwner ) +void HandleBuldingDestruction( INT32 sGridNo, SoldierID ubOwner ) { SOLDIERTYPE * pSoldier; UINT16 cnt; @@ -5315,7 +5315,7 @@ void HandleBuldingDestruction( INT32 sGridNo, UINT16 ubOwner ) return; } - if ( MercPtrs[ ubOwner ]->bTeam != gbPlayerNum ) + if ( ubOwner->bTeam != gbPlayerNum ) { return; } @@ -5339,7 +5339,7 @@ void HandleBuldingDestruction( INT32 sGridNo, UINT16 ubOwner ) if ( DoesNPCOwnBuilding( pSoldier, sGridNo ) ) { - MakeNPCGrumpyForMinorOffense( pSoldier, MercPtrs[ ubOwner ] ); + MakeNPCGrumpyForMinorOffense( pSoldier, ubOwner ); } } } @@ -5624,9 +5624,9 @@ void HavePersonAtGridnoStop( UINT32 sGridNo ) SoldierID ubID = WhoIsThere2( sGridNo, 0 ); //is it a valid person - if ( (ubID != NOBODY) && (MercPtrs[ ubID ]->bTeam == gbPlayerNum) ) + if ( (ubID != NOBODY) && (ubID->bTeam == gbPlayerNum) ) { - SOLDIERTYPE *pSoldier = MercPtrs[ ubID ]; + SOLDIERTYPE *pSoldier = ubID; //Stop the merc pSoldier->EVENT_StopMerc( pSoldier->sGridNo, pSoldier->ubDirection ); @@ -5732,10 +5732,10 @@ void HandleDestructionOfPowerGenFan() // Have a qualified merc say a quote // //Get a random qualified merc to say the quote - INT16 bID = RandomSoldierIdFromNewMercsOnPlayerTeam(); - if( bID != -1 ) + SoldierID bID = RandomSoldierIdFromNewMercsOnPlayerTeam(); + if( bID != NOBODY ) { - DelayedMercQuote( Menptr[ bID ].ubProfile, QUOTE_ACCEPT_CONTRACT_RENEWAL, GetWorldTotalSeconds() + 2 ); + DelayedMercQuote( bID->ubProfile, QUOTE_ACCEPT_CONTRACT_RENEWAL, GetWorldTotalSeconds() + 2 ); } } @@ -5773,8 +5773,8 @@ void HandleSeeingFortifiedDoor( UINT32 sGridNo ) gJa25SaveStruct.uiJa25GeneralFlags |= JA_GF__PLAYER_HAS_SEEN_FORTIFIED_DOOR; //find out whos is the one walking across the trap - INT16 sID = WhoIsThere2( sGridNo, 0 ); - if( sID != NOBODY && IsSoldierQualifiedMerc( &Menptr[ sID ] ) ) + SoldierID sID = WhoIsThere2( sGridNo, 0 ); + if( sID != NOBODY && IsSoldierQualifiedMerc( sID ) ) { } else @@ -5783,10 +5783,10 @@ void HandleSeeingFortifiedDoor( UINT32 sGridNo ) sID = RandomSoldierIdFromNewMercsOnPlayerTeam(); } - if( sID != -1 ) + if( sID != NOBODY ) { //say the quote - TacticalCharacterDialogue( &Menptr[ sID ], QUOTE_LENGTH_OF_CONTRACT ); + TacticalCharacterDialogue( sID, QUOTE_LENGTH_OF_CONTRACT ); } } @@ -5801,11 +5801,11 @@ void HandleSwitchToOpenFortifiedDoor( UINT32 sGridNo ) //remeber that the switch to open the forified door on level 1, has been pulled gJa25SaveStruct.ubStatusOfFortifiedDoor = FD__OPEN; - INT16 bID = RandomSoldierIdFromNewMercsOnPlayerTeam(); + SoldierID bID = RandomSoldierIdFromNewMercsOnPlayerTeam(); - if( bID != -1 ) + if( bID != NOBODY ) { - TacticalCharacterDialogue( &Menptr[ bID ], QUOTE_COMMENT_BEFORE_HANG_UP ); + TacticalCharacterDialogue( bID, QUOTE_COMMENT_BEFORE_HANG_UP ); } } @@ -5834,7 +5834,7 @@ void HandleSeeingPowerGenFan( UINT32 sGridNo ) if( ubPerson != NOBODY ) { - pSoldier = &Menptr[ ubPerson ]; + pSoldier = ubPerson; //if the fan is stopped And is this merc is a qualified merc but Not a power gen fan qualified merc? if( IsSoldierQualifiedMerc( pSoldier ) && fFanIsStopped ) @@ -5886,7 +5886,7 @@ void HandleSeeingPowerGenFan( UINT32 sGridNo ) } #endif -void HandleBuddyExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection ) +void HandleBuddyExplosions(SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection ) { // Flugente: Items can have secondary explosions if ( Item[usItem].usBuddyItem ) @@ -5907,7 +5907,7 @@ void HandleBuddyExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sG } // sevenfm: handle explosive items from attachments -BOOLEAN HandleAttachedExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj) +BOOLEAN HandleAttachedExplosions( SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj) { BOOLEAN binderFound = FALSE; BOOLEAN detonator = FALSE; @@ -6264,10 +6264,10 @@ void RoofDestruction( INT32 sGridNo, BOOLEAN fWithExplosion ) // if there is anybody at the floor level, damage them with the debris // we have to do this BEFORE people drop down. It would otherwise be possible for a falling person to avoid this damage, depending on order of collapsing and possible gridno-shifts. - UINT16 ubId = WhoIsThere2( sGridNo, 0 ); + SoldierID ubId = WhoIsThere2( sGridNo, 0 ); if ( ubId != NOBODY ) { - pSoldier = MercPtrs[ubId]; + pSoldier = ubId; pSoldier->EVENT_StopMerc( pSoldier->sGridNo, pSoldier->ubDirection ); @@ -6283,7 +6283,7 @@ void RoofDestruction( INT32 sGridNo, BOOLEAN fWithExplosion ) ubId = WhoIsThere2( sGridNo, 1 ); if ( ubId != NOBODY ) { - pSoldier = MercPtrs[ubId]; + pSoldier = ubId; INT32 soldierdropoffgridno = sGridNo; if ( !IsLocationSittable( soldierdropoffgridno, FALSE ) ) diff --git a/TileEngine/Explosion Control.h b/TileEngine/Explosion Control.h index 029f55f8..d4c8e531 100644 --- a/TileEngine/Explosion Control.h +++ b/TileEngine/Explosion Control.h @@ -132,16 +132,16 @@ void RemoveActiveExplosionMarkers(); #define GASMASK_MIN_STATUS 70 // OJW - 20091028 - Explosion damage sync -BOOLEAN DamageSoldierFromBlast( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent, BOOL fFromRemoteClient = FALSE ); +BOOLEAN DamageSoldierFromBlast( SoldierID ubPerson, SoldierID ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent, BOOL fFromRemoteClient = FALSE ); BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, SoldierID ubOwner, BOOL fFromRemoteClient = FALSE ); -void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT16 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectNum, BOOL fFromRemoteClient = FALSE, BOOL fNewSmokeEffect = FALSE ); +void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, SoldierID ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectNum, BOOL fFromRemoteClient = FALSE, BOOL fNewSmokeEffect = FALSE ); void AddBombToQueue( UINT32 uiWorldBombIndex, UINT32 uiTimeStamp, BOOL fFromRemoteClient = FALSE ); // Flugente: activate everything connected to a tripwire in the surrounding if sGridNo on level bLevel with regard to the tripwire netwrok and hierarchy determined by ubFlag BOOLEAN ActivateSurroundingTripwire( SoldierID ubID, INT32 sGridNo, INT8 bLevel, UINT32 ubFlag ); // Flugente: A special function for tripwire gun traps. Search if pObj has a gun attached. If so, fire a shot from that gun in a specific direction. Afterwards place the gun on the ground -void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, UINT16 ubId, UINT8 ubDirection ); +void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, SoldierID ubId, UINT8 ubDirection ); extern void ToggleActionItemsByFrequency( INT8 bFrequency ); extern void PerformItemAction( INT32 sGridNo, OBJECTTYPE * pObj ); @@ -166,15 +166,15 @@ extern void HandleSeeingFortifiedDoor( UINT32 sGridNo );//Ja25 UB void ExplosiveDamageGridNo( INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist, BOOLEAN *pfRecompileMovementCosts, - BOOLEAN fOnlyWalls, INT8 bMultiStructSpecialFlag, BOOLEAN fSubSequentMultiTilesTransitionDamage, UINT16 ubOwner, + BOOLEAN fOnlyWalls, INT8 bMultiStructSpecialFlag, BOOLEAN fSubSequentMultiTilesTransitionDamage, SoldierID ubOwner, INT8 bLevel, UINT8 ubReason ); // Flugente: handle secondary explosive effects -void HandleBuddyExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection ); +void HandleBuddyExplosions( SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection ); // sevenfm: handle explosive items from attachments -BOOLEAN HandleAttachedExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj ); +BOOLEAN HandleAttachedExplosions( SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj ); void CheckForBuriedBombsAndRemoveFlags( INT32 sGridNo, INT8 bLevel ); UINT16 CalcTotalVolatility(OBJECTTYPE * pObj); BOOLEAN FindBinderAttachment (OBJECTTYPE * pObj); diff --git a/TileEngine/SmokeEffects.cpp b/TileEngine/SmokeEffects.cpp index 0ee78b3f..a4bf340e 100644 --- a/TileEngine/SmokeEffects.cpp +++ b/TileEngine/SmokeEffects.cpp @@ -332,7 +332,7 @@ INT32 NewSmokeEffect( INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT16 ubOwner, return( iSmokeIndex ); } -INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT16 ubOwner, BOOLEAN fFromRemoteClient, UINT8 ubDuration, UINT8 ubRadius, UINT8 ubGeneration) +INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, SoldierID ubOwner, BOOLEAN fFromRemoteClient, UINT8 ubDuration, UINT8 ubRadius, UINT8 ubGeneration) { SMOKEEFFECT *pSmoke; INT32 iSmokeIndex; diff --git a/TileEngine/SmokeEffects.h b/TileEngine/SmokeEffects.h index 590f1d8a..5b899f3d 100644 --- a/TileEngine/SmokeEffects.h +++ b/TileEngine/SmokeEffects.h @@ -57,7 +57,7 @@ void AddSmokeEffectToTile( INT32 iSmokeEffectID, INT8 bType, INT32 sGridNo, INT8 void RemoveSmokeEffectFromTile( INT32 sGridNo, INT8 bLevel ); -INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT16 ubOwner, BOOLEAN fFromRemoteClient = 0, UINT8 ubDuration = 0, UINT8 ubRadius = 0, UINT8 ubGeneration = 0); +INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, SoldierID ubOwner, BOOLEAN fFromRemoteClient = 0, UINT8 ubDuration = 0, UINT8 ubRadius = 0, UINT8 ubGeneration = 0); BOOLEAN SaveSmokeEffectsToSaveGameFile( HWFILE hFile ); BOOLEAN LoadSmokeEffectsFromLoadGameFile( HWFILE hFile ); @@ -77,4 +77,4 @@ BOOLEAN CheckSmokeEffect(INT32 sGridNo, INT8 bLevel, INT8 bType); // find smoke effect on visible screen BOOLEAN FindVisibleSmokeEffect(INT8 bType); -#endif \ No newline at end of file +#endif diff --git a/TileEngine/Tile Animation.h b/TileEngine/Tile Animation.h index a428c77b..1a56eaba 100644 --- a/TileEngine/Tile Animation.h +++ b/TileEngine/Tile Animation.h @@ -38,70 +38,70 @@ typedef struct TAG_anitile { - struct TAG_anitile *pNext; - UINT32 uiFlags; // flags struct - UINT32 uiTimeLastUpdate; // Stuff for animated tiles + struct TAG_anitile *pNext; + UINT32 uiFlags; // flags struct + UINT32 uiTimeLastUpdate; // Stuff for animated tiles - LEVELNODE *pLevelNode; - UINT8 ubLevelID; - INT16 sCurrentFrame; - INT16 sStartFrame; - INT16 sDelay; - UINT16 usTileType; - UINT16 usNumFrames; + LEVELNODE *pLevelNode; + UINT8 ubLevelID; + INT16 sCurrentFrame; + INT16 sStartFrame; + INT16 sDelay; + UINT16 usTileType; + UINT16 usNumFrames; - UINT16 usMissAnimationPlayed; - UINT16 ubAttackerMissed; - INT16 sRelativeX; - INT16 sRelativeY; - INT16 sRelativeZ; - INT32 sGridNo; - UINT16 usTileIndex; + UINT16 usMissAnimationPlayed; + SoldierID ubAttackerMissed; + INT16 sRelativeX; + INT16 sRelativeY; + INT16 sRelativeZ; + INT32 sGridNo; + UINT16 usTileIndex; - UINT16 usCachedTileSubIndex; // sub Index - INT16 sCachedTileID; // Index into cached tile ID + UINT16 usCachedTileSubIndex; // sub Index + INT16 sCachedTileID; // Index into cached tile ID - UINT8 ubOwner; - UINT8 ubKeyFrame1; - UINT32 uiKeyFrame1Code; - UINT8 ubKeyFrame2; - UINT32 uiKeyFrame2Code; + UINT8 ubOwner; + UINT8 ubKeyFrame1; + UINT32 uiKeyFrame1Code; + UINT8 ubKeyFrame2; + UINT32 uiKeyFrame2Code; - UINT32 uiUserData; - UINT8 ubUserData2; - UINT32 uiUserData3; + UINT32 uiUserData; + UINT8 ubUserData2; + UINT32 uiUserData3; - INT8 bFrameCountAfterStart; - INT32 lightSprite; + INT8 bFrameCountAfterStart; + INT32 lightSprite; } ANITILE; typedef struct TAG_anitile_params { - UINT32 uiFlags; // flags struct - UINT8 ubLevelID; // Level ID for rendering layer - INT16 sStartFrame; // Start frame - INT16 sDelay; // Delay time - UINT16 usTileType; // Tile databse type ( optional ) - UINT16 usTileIndex; // Tile database index ( optional ) - INT16 sX; // World X ( optional ) - INT16 sY; // World Y ( optional ) - INT16 sZ; // World Z ( optional ) - INT32 sGridNo; // World GridNo + UINT32 uiFlags; // flags struct + UINT8 ubLevelID; // Level ID for rendering layer + INT16 sStartFrame; // Start frame + INT16 sDelay; // Delay time + UINT16 usTileType; // Tile databse type ( optional ) + UINT16 usTileIndex; // Tile database index ( optional ) + INT16 sX; // World X ( optional ) + INT16 sY; // World Y ( optional ) + INT16 sZ; // World Z ( optional ) + INT32 sGridNo; // World GridNo - LEVELNODE *pGivenLevelNode; // Levelnode for existing tile ( optional ) - CHAR8 zCachedFile[ 100 ]; // Filename for cached tile name ( optional ) + LEVELNODE *pGivenLevelNode; // Levelnode for existing tile ( optional ) + CHAR8 zCachedFile[ 100 ]; // Filename for cached tile name ( optional ) - UINT8 ubOwner; // UBID for the owner - UINT8 ubKeyFrame1; // Key frame 1 - UINT32 uiKeyFrame1Code; // Key frame code - UINT8 ubKeyFrame2; // Key frame 2 - UINT32 uiKeyFrame2Code; // Key frame code + UINT8 ubOwner; // UBID for the owner + UINT8 ubKeyFrame1; // Key frame 1 + UINT32 uiKeyFrame1Code; // Key frame code + UINT8 ubKeyFrame2; // Key frame 2 + UINT32 uiKeyFrame2Code; // Key frame code - UINT32 uiUserData; - UINT8 ubUserData2; - UINT32 uiUserData3; - INT32 lightSprite; + UINT32 uiUserData; + UINT8 ubUserData2; + UINT32 uiUserData3; + INT32 lightSprite; } ANITILE_PARAMS; diff --git a/TileEngine/structure.cpp b/TileEngine/structure.cpp index 8a2db1fb..6bad3e2f 100644 --- a/TileEngine/structure.cpp +++ b/TileEngine/structure.cpp @@ -1764,7 +1764,7 @@ BOOLEAN StructureDensity( STRUCTURE * pStructure, UINT8 * pubLevel0, UINT8 * pub return( TRUE ); } -INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, INT32 sGridNo, INT16 sX, INT16 sY, UINT16 ubOwner, INT32 sAntiMaterialImpact ) +INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, INT32 sGridNo, INT16 sX, INT16 sY, SoldierID ubOwner, INT32 sAntiMaterialImpact ) { // do damage to a structure; returns TRUE if the structure should be removed STRUCTURE *pBase; diff --git a/TileEngine/structure.h b/TileEngine/structure.h index 12dd50b1..b0a21599 100644 --- a/TileEngine/structure.h +++ b/TileEngine/structure.h @@ -91,7 +91,7 @@ STRUCTURE* GetTallestStructureOnGridnoDrag( INT32 sGridNo, INT8 bLevel ); // FUNCTIONS FOR DETERMINING STUFF THAT BLOCKS VIEW FOR TILE_bASED LOS INT8 GetBlockingStructureInfo( INT32 sGridNo, INT8 bDir, INT8 bNextDir, INT8 bLevel, INT8 *pStructHeight, STRUCTURE ** ppTallestStructure, BOOLEAN fWallsBlock ); -INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, INT32 sGridNo, INT16 sX, INT16 sY, UINT16 ubOwner, INT32 sAntiMaterialImpact = 0 ); +INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, INT32 sGridNo, INT16 sX, INT16 sY, SoldierID ubOwner, INT32 sAntiMaterialImpact = 0 ); // Material armour type enumeration enum