Convert to SoldierID

This commit is contained in:
Asdow
2024-11-17 20:41:09 +02:00
parent 9532fbfe2c
commit f50bdf99cc
22 changed files with 188 additions and 191 deletions
+14 -14
View File
@@ -388,7 +388,7 @@ typedef struct
typedef struct typedef struct
{ {
UINT16 usSoldierID; SoldierID usSoldierID;
FLOAT dNewXPos; FLOAT dNewXPos;
FLOAT dNewYPos; FLOAT dNewYPos;
@@ -396,7 +396,7 @@ typedef struct
typedef struct typedef struct
{ {
UINT16 usSoldierID; SoldierID usSoldierID;
INT16 usNewDirection; INT16 usNewDirection;
} gui_dir; } gui_dir;
@@ -425,12 +425,12 @@ typedef struct
typedef struct typedef struct
{ {
UINT16 ubID; SoldierID ubID;
INT8 bTeam; INT8 bTeam;
UINT16 gubOutOfTurnPersons; UINT16 gubOutOfTurnPersons;
UINT16 gubOutOfTurnOrder[MAXMERCS]; UINT16 gubOutOfTurnOrder[MAXMERCS];
BOOLEAN fMarkInterruptOccurred; BOOLEAN fMarkInterruptOccurred;
UINT16 Interrupted; SoldierID Interrupted;
} INT_STRUCT; } INT_STRUCT;
typedef struct typedef struct
@@ -486,7 +486,7 @@ typedef struct
float dZ; float dZ;
INT32 sGridNo; INT32 sGridNo;
bool bWasDud; bool bWasDud;
UINT16 ubOwnerID; SoldierID ubOwnerID;
INT32 RealObjectID; // the local ID on the initiating client INT32 RealObjectID; // the local ID on the initiating client
UINT32 uiPreRandomIndex; // send out our current pre-random index UINT32 uiPreRandomIndex; // send out our current pre-random index
} grenade_result; } grenade_result;
@@ -967,7 +967,7 @@ void send_hit( EV_S_WEAPONHIT *SWeaponHit )
memcpy( &weaphit_struct , SWeaponHit, sizeof( EV_S_WEAPONHIT )); memcpy( &weaphit_struct , SWeaponHit, sizeof( EV_S_WEAPONHIT ));
UINT16 usSoldierID=weaphit_struct.usSoldierID; SoldierID usSoldierID = weaphit_struct.usSoldierID;
if(SWeaponHit->usSoldierID < 20)weaphit_struct.usSoldierID = weaphit_struct.usSoldierID+ubID_prefix; if(SWeaponHit->usSoldierID < 20)weaphit_struct.usSoldierID = weaphit_struct.usSoldierID+ubID_prefix;
if(SWeaponHit->ubAttackerID < 20)weaphit_struct.ubAttackerID = weaphit_struct.ubAttackerID+ubID_prefix; if(SWeaponHit->ubAttackerID < 20)weaphit_struct.ubAttackerID = weaphit_struct.ubAttackerID+ubID_prefix;
@@ -981,9 +981,9 @@ void recieveHIT(RPCParameters *rpcParameters)
EV_S_WEAPONHIT* SWeaponHit = (EV_S_WEAPONHIT*)rpcParameters->input; EV_S_WEAPONHIT* SWeaponHit = (EV_S_WEAPONHIT*)rpcParameters->input;
SOLDIERTYPE *pSoldier = MercPtrs[ SWeaponHit->usSoldierID ]; SOLDIERTYPE *pSoldier = SWeaponHit->usSoldierID;
UINT16 usSoldierID; SoldierID usSoldierID;
UINT16 ubAttackerID; SoldierID ubAttackerID;
if((SWeaponHit->usSoldierID >= ubID_prefix) && (SWeaponHit->usSoldierID < (ubID_prefix+6))) // within our netbTeam range... if((SWeaponHit->usSoldierID >= ubID_prefix) && (SWeaponHit->usSoldierID < (ubID_prefix+6))) // within our netbTeam range...
usSoldierID = (SWeaponHit->usSoldierID - ubID_prefix); usSoldierID = (SWeaponHit->usSoldierID - ubID_prefix);
@@ -1157,7 +1157,7 @@ void send_gui_pos(SOLDIERTYPE *pSoldier, FLOAT dNewXPos, FLOAT dNewYPos)
{ {
gui_pos gnPOS; gui_pos gnPOS;
gnPOS.usSoldierID = (pSoldier->ubID)+ubID_prefix; gnPOS.usSoldierID = pSoldier->ubID + ubID_prefix;
gnPOS.dNewXPos = dNewXPos; gnPOS.dNewXPos = dNewXPos;
gnPOS.dNewYPos = dNewYPos; gnPOS.dNewYPos = dNewYPos;
@@ -3030,11 +3030,11 @@ void recieveGRENADE (RPCParameters *rpcParameters)
} }
// we send a grenade result out to the clients as it may have been a fizzer // we send a grenade result out to the clients as it may have been a fizzer
void send_grenade_result (float xPos, float yPos, float zPos, INT32 sGridNo, UINT8 ubOwnerID, INT32 iRealObjectID, bool bIsDud) void send_grenade_result (float xPos, float yPos, float zPos, INT32 sGridNo, SoldierID ubOwnerID, INT32 iRealObjectID, bool bIsDud)
{ {
ubOwnerID = MPEncodeSoldierID(ubOwnerID); // translate our soldier to the "network" version ubOwnerID = MPEncodeSoldierID(ubOwnerID); // translate our soldier to the "network" version
SOLDIERTYPE* pSoldier = MercPtrs[ubOwnerID]; SOLDIERTYPE* pSoldier = ubOwnerID;
if (pSoldier != NULL) if (pSoldier != NULL)
{ {
if ((pSoldier->bTeam == 1 && is_server) || IsOurSoldier(pSoldier)) if ((pSoldier->bTeam == 1 && is_server) || IsOurSoldier(pSoldier))
@@ -3343,11 +3343,11 @@ void recieveDETONATEEXPLOSIVE (RPCParameters *rpcParameters)
} }
} }
void send_disarm_explosive(UINT32 sGridNo, UINT32 uiWorldItem, UINT16 ubID) void send_disarm_explosive(UINT32 sGridNo, UINT32 uiWorldItem, SoldierID ubID)
{ {
ubID = MPEncodeSoldierID(ubID); ubID = MPEncodeSoldierID(ubID);
SOLDIERTYPE* pSoldier = MercPtrs[ubID]; SOLDIERTYPE* pSoldier = ubID;
if (pSoldier != NULL) if (pSoldier != NULL)
{ {
// explosive disarmed on this client, notify the other clients // explosive disarmed on this client, notify the other clients
+3 -3
View File
@@ -112,14 +112,14 @@ void send_interrupt(SOLDIERTYPE *pSoldier);
// OJW - 20091002 - explosives // 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, UINT16 ubOwner, UINT8 ubActionCode, UINT32 uiActionData, INT32 iRealObjectID, bool bIsThrownGrenade);
void send_grenade_result (float xPos, float yPos, float zPos, INT32 sGridNo, UINT8 ubOwnerID, INT32 iRealObjectID, bool bIsDud); 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_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_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_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_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT16 ubOwner, INT32 iSmokeEffectID);
void send_gasdamage( SOLDIERTYPE * pSoldier, UINT16 usExplosiveClassID, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, SoldierID ubOwner ); 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( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent );
void send_disarm_explosive(UINT32 sGridNo, UINT32 uiWorldIndex, UINT16 ubID); void send_disarm_explosive(UINT32 sGridNo, UINT32 uiWorldIndex, SoldierID ubID);
void OpenChatMsgBox(void); void OpenChatMsgBox(void);
@@ -211,7 +211,7 @@ extern BOOLEAN fClientReceivedAllFiles;
// sick of confusing myself :) // sick of confusing myself :)
// this one should be called before passing an ID off the client // this one should be called before passing an ID off the client
inline UINT16 MPEncodeSoldierID( UINT16 ubID ) inline SoldierID MPEncodeSoldierID( SoldierID ubID )
{ {
if ( ubID < 20 ) if ( ubID < 20 )
return ubID + ubID_prefix; // soldier is ours return ubID + ubID_prefix; // soldier is ours
+2 -2
View File
@@ -2717,7 +2717,7 @@ void LuaHandleSectorLiberation( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, B
void LuaHandleInteractiveActionResult( INT16 sSectorX, INT16 sSectorY, void LuaHandleInteractiveActionResult( INT16 sSectorX, INT16 sSectorY,
INT8 bSectorZ, INT8 bSectorZ,
INT32 sGridNo, UINT8 bLevel, UINT16 ubId, INT32 sGridNo, UINT8 bLevel, SoldierID ubId,
UINT16 usActionType, INT32 sLuaactionid, INT32 difficulty, UINT16 skill ) UINT16 usActionType, INT32 sLuaactionid, INT32 difficulty, UINT16 skill )
{ {
const char* filename = "scripts\\Overhead.lua"; const char* filename = "scripts\\Overhead.lua";
@@ -2731,7 +2731,7 @@ void LuaHandleInteractiveActionResult( INT16 sSectorX, INT16 sSectorY,
SGP_THROW_IFFALSE( _LS.L.EvalFile( filename ), _BS( "Cannot open file: " ) << filename << _BS::cget ); SGP_THROW_IFFALSE( _LS.L.EvalFile( filename ), _BS( "Cannot open file: " ) << filename << _BS::cget );
LuaFunction( _LS.L, "HandleInteractiveActionResult" ).Param<int>( sSectorX ).Param<int>( sSectorY ).Param<int>( bSectorZ ).Param<int>( sGridNo ).Param<int>( bLevel ).Param<int>( ubId ).Param<int>( usActionType ).Param<int>( sLuaactionid ).Param<int>( difficulty ).Param<int>( skill ).Call( 10 ); LuaFunction( _LS.L, "HandleInteractiveActionResult" ).Param<int>( sSectorX ).Param<int>( sSectorY ).Param<int>( bSectorZ ).Param<int>( sGridNo ).Param<int>( bLevel ).Param<int>( ubId.i ).Param<int>( usActionType ).Param<int>( sLuaactionid ).Param<int>( difficulty ).Param<int>( skill ).Call( 10 );
} }
void LuaRecruitRPCAdditionalHandling( UINT8 usProfile ) void LuaRecruitRPCAdditionalHandling( UINT8 usProfile )
+1 -1
View File
@@ -62,7 +62,7 @@ extern BOOLEAN LuaHandleQuestCodeOnSector( INT16 sSectorX, INT16 sSectorY, INT8
void LuaHandleSectorLiberation( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, BOOLEAN fFirstTime ); void LuaHandleSectorLiberation( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, BOOLEAN fFirstTime );
void LuaHandleInteractiveActionResult( INT16 sSectorX, INT16 sSectorY, void LuaHandleInteractiveActionResult( INT16 sSectorX, INT16 sSectorY,
INT8 bSectorZ, INT8 bSectorZ,
INT32 sGridNo, UINT8 bLevel, UINT16 ubId, INT32 sGridNo, UINT8 bLevel, SoldierID ubId,
UINT16 usActionType, INT32 sLuaactionid, INT32 difficulty, UINT16 skill ); UINT16 usActionType, INT32 sLuaactionid, INT32 difficulty, UINT16 skill );
void LuaRecruitRPCAdditionalHandling( UINT8 usProfile ); void LuaRecruitRPCAdditionalHandling( UINT8 usProfile );
void LuaHandleSectorTacticalEntry( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, BOOLEAN fHasEverBeenPlayerControlled ); void LuaHandleSectorTacticalEntry( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, BOOLEAN fHasEverBeenPlayerControlled );
+2 -2
View File
@@ -2087,10 +2087,10 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
// Flugente: are we supplying ammo to someone else? // Flugente: are we supplying ammo to someone else?
if (gGameExternalOptions.ubExternalFeeding > 0) if (gGameExternalOptions.ubExternalFeeding > 0)
{ {
UINT16 ubID1 = 0; SoldierID ubID1 = NOBODY;
UINT16 ubGunSlot1 = 0; UINT16 ubGunSlot1 = 0;
UINT16 ubFaceSlot1 = 0; UINT16 ubFaceSlot1 = 0;
UINT16 ubID2 = 0; SoldierID ubID2 = NOBODY;
UINT16 ubGunSlot2 = 0; UINT16 ubGunSlot2 = 0;
UINT16 ubFaceSlot2 = 0; UINT16 ubFaceSlot2 = 0;
if (pSoldier->IsFeedingExternal(&ubID1, &ubGunSlot1, &ubFaceSlot1, &ubID2, &ubGunSlot2, &ubFaceSlot2)) if (pSoldier->IsFeedingExternal(&ubID1, &ubGunSlot1, &ubFaceSlot1, &ubID2, &ubGunSlot2, &ubFaceSlot2))
+21 -25
View File
@@ -240,7 +240,7 @@ BOOLEAN HandleCheckForBadChangeToGetThrough( SOLDIERTYPE *pSoldier, SOLDIERTYPE
INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHandItem, BOOLEAN fFromUI ) INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHandItem, BOOLEAN fFromUI )
{ {
SOLDIERTYPE *pTargetSoldier = NULL; SOLDIERTYPE *pTargetSoldier = NULL;
UINT16 usSoldierIndex; SoldierID usSoldierIndex;
INT32 sTargetGridNo; INT32 sTargetGridNo;
INT16 sAPCost; INT16 sAPCost;
INT32 sActionGridNo; INT32 sActionGridNo;
@@ -277,7 +277,7 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa
//if ( FindSoldier( sGridNo, &usSoldierIndex, &uiMercFlags, FIND_SOLDIER_GRIDNO ) ) //if ( FindSoldier( sGridNo, &usSoldierIndex, &uiMercFlags, FIND_SOLDIER_GRIDNO ) )
if ( ( usSoldierIndex = WhoIsThere2( sGridNo, bLevel ) ) != NOBODY ) if ( ( usSoldierIndex = WhoIsThere2( sGridNo, bLevel ) ) != NOBODY )
{ {
pTargetSoldier = MercPtrs[ usSoldierIndex ]; pTargetSoldier = usSoldierIndex;
// anv: don't try to heal interactive spots // anv: don't try to heal interactive spots
if (fFromUI && Item[usHandItem].usItemClass != IC_MEDKIT) if (fFromUI && Item[usHandItem].usItemClass != IC_MEDKIT)
@@ -1394,11 +1394,11 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa
} }
} }
UINT16 ubPerson = WhoIsThere2(usMapPos, pSoldier->pathing.bLevel); SoldierID ubPerson = WhoIsThere2(usMapPos, pSoldier->pathing.bLevel);
// Flugente: apply misc items to other soldiers // Flugente: apply misc items to other soldiers
// sevenfm: check that target soldier is visible // sevenfm: check that target soldier is visible
if (ItemCanBeAppliedToOthers(usHandItem) && ubPerson != NOBODY && MercPtrs[ubPerson] && MercPtrs[ubPerson]->bVisible != 0) if (ItemCanBeAppliedToOthers(usHandItem) && ubPerson != NOBODY && ubPerson->bVisible != 0)
{ {
// ATE: AI CANNOT GO THROUGH HERE! // ATE: AI CANNOT GO THROUGH HERE!
BOOLEAN fHadToUseCursorPos = FALSE; BOOLEAN fHadToUseCursorPos = FALSE;
@@ -4292,9 +4292,8 @@ BOOLEAN DrawItemPoolList( ITEM_POOL *pItemPool, INT32 sGridNo, UINT8 bCommand, I
if (gGameExternalOptions.gfShowBackpackOwner && if (gGameExternalOptions.gfShowBackpackOwner &&
Item[gWorldItems[pItemPool->iItemIndex].object.usItem].usItemClass == IC_LBEGEAR && Item[gWorldItems[pItemPool->iItemIndex].object.usItem].usItemClass == IC_LBEGEAR &&
LoadBearingEquipment[Item[gWorldItems[pItemPool->iItemIndex].object.usItem].ubClassIndex].lbeClass == BACKPACK && LoadBearingEquipment[Item[gWorldItems[pItemPool->iItemIndex].object.usItem].ubClassIndex].lbeClass == BACKPACK &&
gWorldItems[pItemPool->iItemIndex].soldierID != NOBODY && gWorldItems[pItemPool->iItemIndex].soldierID != NOBODY)
MercPtrs[gWorldItems[pItemPool->iItemIndex].soldierID]) swprintf(pStr, L"%s (%d) (%s)", ShortItemNames[gWorldItems[pTempItemPool->iItemIndex].object.usItem], gWorldItems[pTempItemPool->iItemIndex].object.ubNumberOfObjects, gWorldItems[pItemPool->iItemIndex].soldierID->GetName());
swprintf(pStr, L"%s (%d) (%s)", ShortItemNames[gWorldItems[pTempItemPool->iItemIndex].object.usItem], gWorldItems[pTempItemPool->iItemIndex].object.ubNumberOfObjects, MercPtrs[gWorldItems[pItemPool->iItemIndex].soldierID]->GetName());
else else
swprintf( pStr, L"%s (%d)", ShortItemNames[ gWorldItems[ pTempItemPool->iItemIndex ].object.usItem ], gWorldItems[ pTempItemPool->iItemIndex ].object.ubNumberOfObjects ); swprintf( pStr, L"%s (%d)", ShortItemNames[ gWorldItems[ pTempItemPool->iItemIndex ].object.usItem ], gWorldItems[ pTempItemPool->iItemIndex ].object.ubNumberOfObjects );
} }
@@ -4303,9 +4302,8 @@ BOOLEAN DrawItemPoolList( ITEM_POOL *pItemPool, INT32 sGridNo, UINT8 bCommand, I
if (gGameExternalOptions.gfShowBackpackOwner && if (gGameExternalOptions.gfShowBackpackOwner &&
Item[gWorldItems[pItemPool->iItemIndex].object.usItem].usItemClass == IC_LBEGEAR && Item[gWorldItems[pItemPool->iItemIndex].object.usItem].usItemClass == IC_LBEGEAR &&
LoadBearingEquipment[Item[gWorldItems[pItemPool->iItemIndex].object.usItem].ubClassIndex].lbeClass == BACKPACK && LoadBearingEquipment[Item[gWorldItems[pItemPool->iItemIndex].object.usItem].ubClassIndex].lbeClass == BACKPACK &&
gWorldItems[pItemPool->iItemIndex].soldierID != NOBODY && gWorldItems[pItemPool->iItemIndex].soldierID != NOBODY)
MercPtrs[gWorldItems[pItemPool->iItemIndex].soldierID]) swprintf(pStr, L"%s (%s)", ShortItemNames[gWorldItems[pTempItemPool->iItemIndex].object.usItem], gWorldItems[pItemPool->iItemIndex].soldierID->GetName());
swprintf(pStr, L"%s (%s)", ShortItemNames[gWorldItems[pTempItemPool->iItemIndex].object.usItem], MercPtrs[gWorldItems[pItemPool->iItemIndex].soldierID]->GetName());
else else
swprintf( pStr, L"%s", ShortItemNames[ gWorldItems[ pTempItemPool->iItemIndex ].object.usItem ] ); swprintf( pStr, L"%s", ShortItemNames[ gWorldItems[ pTempItemPool->iItemIndex ].object.usItem ] );
} }
@@ -4413,9 +4411,8 @@ BOOLEAN DrawItemPoolList( ITEM_POOL *pItemPool, INT32 sGridNo, UINT8 bCommand, I
if (gGameExternalOptions.gfShowBackpackOwner && if (gGameExternalOptions.gfShowBackpackOwner &&
Item[gWorldItems[pItemPool->iItemIndex].object.usItem].usItemClass == IC_LBEGEAR && Item[gWorldItems[pItemPool->iItemIndex].object.usItem].usItemClass == IC_LBEGEAR &&
LoadBearingEquipment[Item[gWorldItems[pItemPool->iItemIndex].object.usItem].ubClassIndex].lbeClass == BACKPACK && LoadBearingEquipment[Item[gWorldItems[pItemPool->iItemIndex].object.usItem].ubClassIndex].lbeClass == BACKPACK &&
gWorldItems[pItemPool->iItemIndex].soldierID != NOBODY && gWorldItems[pItemPool->iItemIndex].soldierID != NOBODY)
MercPtrs[gWorldItems[pItemPool->iItemIndex].soldierID]) swprintf(pStr, L"%s (%d) (%s)", ShortItemNames[gWorldItems[pItemPool->iItemIndex].object.usItem], gWorldItems[pItemPool->iItemIndex].object.ubNumberOfObjects, gWorldItems[pItemPool->iItemIndex].soldierID->GetName());
swprintf(pStr, L"%s (%d) (%s)", ShortItemNames[gWorldItems[pItemPool->iItemIndex].object.usItem], gWorldItems[pItemPool->iItemIndex].object.ubNumberOfObjects, MercPtrs[gWorldItems[pItemPool->iItemIndex].soldierID]->GetName());
else else
swprintf( pStr, L"%s (%d)", ShortItemNames[ gWorldItems[ pItemPool->iItemIndex ].object.usItem ], gWorldItems[ pItemPool->iItemIndex ].object.ubNumberOfObjects ); swprintf( pStr, L"%s (%d)", ShortItemNames[ gWorldItems[ pItemPool->iItemIndex ].object.usItem ], gWorldItems[ pItemPool->iItemIndex ].object.ubNumberOfObjects );
} }
@@ -4424,9 +4421,8 @@ BOOLEAN DrawItemPoolList( ITEM_POOL *pItemPool, INT32 sGridNo, UINT8 bCommand, I
if (gGameExternalOptions.gfShowBackpackOwner && if (gGameExternalOptions.gfShowBackpackOwner &&
Item[gWorldItems[pItemPool->iItemIndex].object.usItem].usItemClass == IC_LBEGEAR && Item[gWorldItems[pItemPool->iItemIndex].object.usItem].usItemClass == IC_LBEGEAR &&
LoadBearingEquipment[Item[gWorldItems[pItemPool->iItemIndex].object.usItem].ubClassIndex].lbeClass == BACKPACK && LoadBearingEquipment[Item[gWorldItems[pItemPool->iItemIndex].object.usItem].ubClassIndex].lbeClass == BACKPACK &&
gWorldItems[pItemPool->iItemIndex].soldierID != NOBODY && gWorldItems[pItemPool->iItemIndex].soldierID != NOBODY)
MercPtrs[gWorldItems[pItemPool->iItemIndex].soldierID]) swprintf(pStr, L"%s (%s)", ShortItemNames[gWorldItems[pItemPool->iItemIndex].object.usItem], gWorldItems[pItemPool->iItemIndex].soldierID->GetName());
swprintf(pStr, L"%s (%s)", ShortItemNames[gWorldItems[pItemPool->iItemIndex].object.usItem], MercPtrs[gWorldItems[pItemPool->iItemIndex].soldierID]->GetName());
else else
swprintf( pStr, L"%s", ShortItemNames[ gWorldItems[ pItemPool->iItemIndex ].object.usItem ] ); swprintf( pStr, L"%s", ShortItemNames[ gWorldItems[ pItemPool->iItemIndex ].object.usItem ] );
} }
@@ -4814,12 +4810,12 @@ void RenderTopmostFlashingItems( )
BOOLEAN VerifyGiveItem( SOLDIERTYPE *pSoldier, SOLDIERTYPE **ppTargetSoldier ) BOOLEAN VerifyGiveItem( SOLDIERTYPE *pSoldier, SOLDIERTYPE **ppTargetSoldier )
{ {
SOLDIERTYPE *pTSoldier; SOLDIERTYPE *pTSoldier;
UINT16 usSoldierIndex; SoldierID usSoldierIndex;
OBJECTTYPE *pObject; OBJECTTYPE *pObject;
INT32 sGridNo; INT32 sGridNo;
UINT8 ubDirection; UINT8 ubDirection;
UINT16 ubTargetMercID; SoldierID ubTargetMercID;
// DO SOME CHECKS IF WE CAN DO ANIMATION..... // DO SOME CHECKS IF WE CAN DO ANIMATION.....
@@ -4828,7 +4824,7 @@ BOOLEAN VerifyGiveItem( SOLDIERTYPE *pSoldier, SOLDIERTYPE **ppTargetSoldier )
sGridNo = pSoldier->aiData.sPendingActionData2; sGridNo = pSoldier->aiData.sPendingActionData2;
ubDirection = pSoldier->aiData.bPendingActionData3; ubDirection = pSoldier->aiData.bPendingActionData3;
ubTargetMercID = (UINT16)pSoldier->aiData.uiPendingActionData4; ubTargetMercID = static_cast<UINT16>( pSoldier->aiData.uiPendingActionData4 );
usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel ); usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel );
@@ -4864,7 +4860,7 @@ BOOLEAN VerifyGiveItem( SOLDIERTYPE *pSoldier, SOLDIERTYPE **ppTargetSoldier )
if ( ubTargetMercID != NOBODY ) if ( ubTargetMercID != NOBODY )
{ {
MercPtrs[ ubTargetMercID ]->flags.uiStatusFlags &= (~SOLDIER_ENGAGEDINACTION ); ubTargetMercID->flags.uiStatusFlags &= (~SOLDIER_ENGAGEDINACTION );
} }
OBJECTTYPE::DeleteMe( &pSoldier->pTempObject ); OBJECTTYPE::DeleteMe( &pSoldier->pTempObject );
@@ -5084,7 +5080,7 @@ INT32 AdjustGridNoForItemPlacement( SOLDIERTYPE *pSoldier, INT32 sGridNo )
BOOLEAN fStructFound = FALSE; BOOLEAN fStructFound = FALSE;
UINT8 ubDirection; UINT8 ubDirection;
INT32 sAdjustedGridNo; INT32 sAdjustedGridNo;
UINT16 ubTargetID; SoldierID ubTargetID;
sActionGridNo = sGridNo; sActionGridNo = sGridNo;
@@ -9405,11 +9401,11 @@ void DoInteractiveAction( INT32 sGridNo, SOLDIERTYPE *pSoldier )
// handle the default result of an interactive action // handle the default result of an interactive action
// This is called either if no lua action id is set, or by lua if this should happen as a supplement to whatever lua does // This is called either if no lua action id is set, or by lua if this should happen as a supplement to whatever lua does
void DoInteractiveActionDefaultResult( INT32 sGridNo, UINT16 ubID, BOOLEAN aSuccess ) void DoInteractiveActionDefaultResult( INT32 sGridNo, SoldierID ubID, BOOLEAN aSuccess )
{ {
SOLDIERTYPE* pSoldier = NULL; SOLDIERTYPE* pSoldier = NULL;
if ( ubID != NOBODY ) if ( ubID != NOBODY )
pSoldier = MercPtrs[ubID]; pSoldier = ubID;
// we need a valid soldier and a valid object // we need a valid soldier and a valid object
if ( !pSoldier ) if ( !pSoldier )
@@ -10457,9 +10453,9 @@ void TakePhoto(SOLDIERTYPE* pSoldier, INT32 sGridNo, INT8 bLevel )
InARoom( newgridno, &room ); InARoom( newgridno, &room );
// check if there is someone here // check if there is someone here
UINT16 ubid = WhoIsThere2( newgridno, bLevel ); SoldierID ubid = WhoIsThere2( newgridno, bLevel );
LuaAddPhotoData( gWorldSectorX, gWorldSectorY, gbWorldSectorZ, newgridno, bLevel, pSoldier->ubProfile, room, ( ubid == NOBODY ) ? NO_PROFILE : MercPtrs[ubid]->ubProfile ); LuaAddPhotoData( gWorldSectorX, gWorldSectorY, gbWorldSectorZ, newgridno, bLevel, pSoldier->ubProfile, room, ( ubid == NOBODY ) ? NO_PROFILE : ubid->ubProfile );
} }
} }
} }
+1 -1
View File
@@ -329,7 +329,7 @@ extern ITEM_POOL *gpItemPool;//dnl ch26 210909
// Flugente: interactive actions // Flugente: interactive actions
void DoInteractiveAction( INT32 sGridNo, SOLDIERTYPE *pSoldier ); void DoInteractiveAction( INT32 sGridNo, SOLDIERTYPE *pSoldier );
void DoInteractiveActionDefaultResult( INT32 sGridNo, UINT16 ubID, BOOLEAN aSuccess ); void DoInteractiveActionDefaultResult( INT32 sGridNo, SoldierID ubID, BOOLEAN aSuccess );
BOOLEAN SpendMoney( SOLDIERTYPE *pSoldier, UINT32 aAmount ); // character spends money - either from inventory or the account BOOLEAN SpendMoney( SOLDIERTYPE *pSoldier, UINT32 aAmount ); // character spends money - either from inventory or the account
// Flugente: intel // Flugente: intel
+1 -1
View File
@@ -448,7 +448,7 @@ INT32 gfUIOverItemPoolGridNo = 0;
INT16 gsCurrentActionPoints = 1; INT16 gsCurrentActionPoints = 1;
BOOLEAN gfUIHandlePhysicsTrajectory = FALSE; BOOLEAN gfUIHandlePhysicsTrajectory = FALSE;
BOOLEAN gfUIMouseOnValidCatcher = FALSE; BOOLEAN gfUIMouseOnValidCatcher = FALSE;
UINT16 gubUIValidCatcherID = 0; SoldierID gubUIValidCatcherID = NOBODY;
+1 -1
View File
@@ -203,7 +203,7 @@ extern BOOLEAN gfUIInDeadlock;
extern UINT16 gUIDeadlockedSoldier; extern UINT16 gUIDeadlockedSoldier;
extern BOOLEAN gfUIMouseOnValidCatcher; extern BOOLEAN gfUIMouseOnValidCatcher;
extern UINT16 gubUIValidCatcherID; extern SoldierID gubUIValidCatcherID;
extern BOOLEAN gUIUseReverse; extern BOOLEAN gUIUseReverse;
+19 -19
View File
@@ -3548,7 +3548,7 @@ void DegradeNewlyAddedItems( )
// GET SOLDIER // GET SOLDIER
if ( gTeamPanel[ cnt2 ].fOccupied ) if ( gTeamPanel[ cnt2 ].fOccupied )
{ {
pSoldier = MercPtrs[ gTeamPanel[ cnt2 ].ubID ]; pSoldier = gTeamPanel[ cnt2 ].ubID;
UINT32 invsize = pSoldier->inv.size(); UINT32 invsize = pSoldier->inv.size();
for ( UINT32 cnt = 0; cnt < invsize; ++cnt ) for ( UINT32 cnt = 0; cnt < invsize; ++cnt )
@@ -4434,7 +4434,7 @@ void INVRenderSteeringWheel( UINT32 uiBuffer, UINT32 uiSteeringWheelIndex, SOLDI
return; return;
} }
pVehicle = GetSoldierStructureForVehicle ( MercPtrs[ pSoldier->ubID ]->iVehicleId ); pVehicle = GetSoldierStructureForVehicle ( pSoldier->ubID->iVehicleId );
if ( pVehicle == NULL ) if ( pVehicle == NULL )
{ {
@@ -8796,11 +8796,11 @@ void DrawItemTileCursor( )
/*CHRISL: For some reason it's possible that gpItemPointerSoldier is not correctly set when we come into this function, but we require it to be set for /*CHRISL: For some reason it's possible that gpItemPointerSoldier is not correctly set when we come into this function, but we require it to be set for
this function to work. So for now, let's set it using gusUIFullTargetID.*/ this function to work. So for now, let's set it using gusUIFullTargetID.*/
if(gpItemPointerSoldier->exists() == false) if(gpItemPointerSoldier->exists() == false)
gpItemPointerSoldier = MercPtrs[ gusUIFullTargetID ]; gpItemPointerSoldier = gusUIFullTargetID;
if ( gfUIFullTargetFound ) if ( gfUIFullTargetFound )
{ {
// Force mouse position to guy... // Force mouse position to guy...
usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; usMapPos = gusUIFullTargetID->sGridNo;
} }
gusCurMousePos = usMapPos; gusCurMousePos = usMapPos;
@@ -8871,7 +8871,7 @@ void DrawItemTileCursor( )
if ( gfUIFullTargetFound ) if ( gfUIFullTargetFound )
{ {
// Get soldier // Get soldier
pSoldier = MercPtrs[ gusUIFullTargetID ]; pSoldier = gusUIFullTargetID;
// Are they on our team? // Are they on our team?
// ATE: Can't be an EPC // ATE: Can't be an EPC
@@ -8927,7 +8927,7 @@ void DrawItemTileCursor( )
gubUIValidCatcherID = gusUIFullTargetID; gubUIValidCatcherID = gusUIFullTargetID;
// If this is a robot, change to say 'reload' // If this is a robot, change to say 'reload'
if ( MercPtrs[ gusUIFullTargetID ]->flags.uiStatusFlags & SOLDIER_ROBOT ) if ( gusUIFullTargetID->flags.uiStatusFlags & SOLDIER_ROBOT )
{ {
gfUIMouseOnValidCatcher = 3; gfUIMouseOnValidCatcher = 3;
} }
@@ -8947,9 +8947,9 @@ void DrawItemTileCursor( )
// Get AP cost // Get AP cost
if ( MercPtrs[ gusUIFullTargetID ]->flags.uiStatusFlags & SOLDIER_ROBOT ) if ( gusUIFullTargetID->flags.uiStatusFlags & SOLDIER_ROBOT )
{ {
sAPCost = GetAPsToReloadRobot( gpItemPointerSoldier, MercPtrs[ gusUIFullTargetID ] ); sAPCost = GetAPsToReloadRobot( gpItemPointerSoldier, gusUIFullTargetID );
} }
else else
{ {
@@ -9011,7 +9011,7 @@ void DrawItemTileCursor( )
{ {
if ( gfUIMouseOnValidCatcher ) if ( gfUIMouseOnValidCatcher )
{ {
switch( gAnimControl[ MercPtrs[ gubUIValidCatcherID ]->usAnimState ].ubHeight ) switch( gAnimControl[ gubUIValidCatcherID->usAnimState ].ubHeight )
{ {
case ANIM_STAND: case ANIM_STAND:
@@ -9029,7 +9029,7 @@ void DrawItemTileCursor( )
break; break;
} }
if ( MercPtrs[ gubUIValidCatcherID ]->pathing.bLevel > 0 ) if ( gubUIValidCatcherID->pathing.bLevel > 0 )
{ {
sEndZ = 0; sEndZ = 0;
} }
@@ -9135,9 +9135,9 @@ BOOLEAN HandleItemPointerClick( INT32 usMapPos )
if ( gfUIFullTargetFound ) if ( gfUIFullTargetFound )
{ {
// Force mouse position to guy... // Force mouse position to guy...
usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo; usMapPos = gusUIFullTargetID->sGridNo;
if ( gAnimControl[ MercPtrs[ gusUIFullTargetID ]->usAnimState ].uiFlags & ANIM_MOVING ) if ( gAnimControl[ gusUIFullTargetID->usAnimState ].uiFlags & ANIM_MOVING )
{ {
return( FALSE ); return( FALSE );
} }
@@ -9380,14 +9380,14 @@ BOOLEAN HandleItemPointerClick( INT32 usMapPos )
sGridNo = usMapPos; sGridNo = usMapPos;
// Kaiden: Vehicle Inventory change - Commented the following If test: // Kaiden: Vehicle Inventory change - Commented the following If test:
//if ( sDist <= PASSING_ITEM_DISTANCE_OKLIFE && gfUIFullTargetFound && MercPtrs[ gusUIFullTargetID ]->bTeam == gbPlayerNum && !AM_AN_EPC( MercPtrs[ gusUIFullTargetID ] ) && !( MercPtrs[ gusUIFullTargetID ]->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) //if ( sDist <= PASSING_ITEM_DISTANCE_OKLIFE && gfUIFullTargetFound && gusUIFullTargetID->bTeam == gbPlayerNum && !AM_AN_EPC( gusUIFullTargetID ) && !( gusUIFullTargetID->flags.uiStatusFlags & SOLDIER_VEHICLE ) )
// And added this one instead: // And added this one instead:
if ( ( sDist <= PASSING_ITEM_DISTANCE_OKLIFE && gfUIFullTargetFound && MercPtrs[ gusUIFullTargetID ]->bTeam == gbPlayerNum && !AM_AN_EPC( MercPtrs[ gusUIFullTargetID ] ) ) && !( (!gGameExternalOptions.fVehicleInventory) && (MercPtrs[ gusUIFullTargetID ]->flags.uiStatusFlags & SOLDIER_VEHICLE) ) ) if ( ( sDist <= PASSING_ITEM_DISTANCE_OKLIFE && gfUIFullTargetFound && gusUIFullTargetID->bTeam == gbPlayerNum && !AM_AN_EPC( gusUIFullTargetID ) ) && !( (!gGameExternalOptions.fVehicleInventory) && (gusUIFullTargetID->flags.uiStatusFlags & SOLDIER_VEHICLE) ) )
{ {
// OK, do the transfer... // OK, do the transfer...
{ {
pSoldier = MercPtrs[ gusUIFullTargetID ]; pSoldier = gusUIFullTargetID;
{ {
// Change to inventory.... // Change to inventory....
@@ -9489,7 +9489,7 @@ BOOLEAN HandleItemPointerClick( INT32 usMapPos )
// IF OVER OUR GUY... // IF OVER OUR GUY...
if ( gfUIFullTargetFound ) if ( gfUIFullTargetFound )
{ {
pSoldier = MercPtrs[ gusUIFullTargetID ]; pSoldier = gusUIFullTargetID;
// Kaiden: Vehicle Inventory change - Commented the following If Test: // Kaiden: Vehicle Inventory change - Commented the following If Test:
//if ( pSoldier->bTeam == gbPlayerNum && pSoldier->stats.bLife >= OKLIFE && !AM_AN_EPC( pSoldier ) && !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) ) //if ( pSoldier->bTeam == gbPlayerNum && pSoldier->stats.bLife >= OKLIFE && !AM_AN_EPC( pSoldier ) && !( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) )
@@ -11483,9 +11483,9 @@ void RenderItemPickupMenu( )
Item[gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].object.usItem].usItemClass == IC_LBEGEAR && Item[gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].object.usItem].usItemClass == IC_LBEGEAR &&
LoadBearingEquipment[Item[gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].object.usItem].ubClassIndex].lbeClass == BACKPACK && LoadBearingEquipment[Item[gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].object.usItem].ubClassIndex].lbeClass == BACKPACK &&
gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].soldierID != NOBODY && gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].soldierID != NOBODY &&
MercPtrs[gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].soldierID]) gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].soldierID)
//swprintf(pStr, L"%s (%s)", ShortItemNames[pObject->usItem], MercPtrs[gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].soldierID]->GetName()); //swprintf(pStr, L"%s (%s)", ShortItemNames[pObject->usItem], MercPtrs[gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].soldierID]->GetName());
swprintf(pStr, L"(%s)", MercPtrs[gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].soldierID]->GetName()); swprintf(pStr, L"(%s)", gWorldItems[gItemPickupMenu.ItemPoolSlots[cnt]->iItemIndex].soldierID->GetName());
else else
swprintf( pStr, L"%s", ShortItemNames[ pObject->usItem ] ); swprintf( pStr, L"%s", ShortItemNames[ pObject->usItem ] );
} }
@@ -12757,7 +12757,7 @@ BOOLEAN LoadItemCursorFromSavedGame( HWFILE hFile )
} }
else else
{ {
gpItemPointerSoldier = MercPtrs[ SaveStruct.ubSoldierID ]; gpItemPointerSoldier = SaveStruct.ubSoldierID;
} }
// Inv slot // Inv slot
+1 -1
View File
@@ -166,7 +166,7 @@ public:
BOOLEAN Save(HWFILE hFile); BOOLEAN Save(HWFILE hFile);
BOOLEAN Load(HWFILE hFile); BOOLEAN Load(HWFILE hFile);
UINT16 ubSoldierID; SoldierID ubSoldierID;
UINT8 ubInvSlot; UINT8 ubInvSlot;
BOOLEAN fCursorActive; BOOLEAN fCursorActive;
OBJECTTYPE ItemPointerInfo; OBJECTTYPE ItemPointerInfo;
+11 -11
View File
@@ -569,7 +569,7 @@ void UpdateSelectedSoldier( UINT16 usSoldierID, BOOLEAN fSelect );
void CheckForFacePanelStartAnims( SOLDIERTYPE *pSoldier, INT16 sPanelX, INT16 sPanelY ); void CheckForFacePanelStartAnims( SOLDIERTYPE *pSoldier, INT16 sPanelX, INT16 sPanelY );
void HandleSoldierFaceFlash( SOLDIERTYPE *pSoldier, INT16 sFaceX, INT16 sFaceY ); void HandleSoldierFaceFlash( SOLDIERTYPE *pSoldier, INT16 sFaceX, INT16 sFaceY );
BOOLEAN PlayerExistsInSlot( UINT16 ubID ); BOOLEAN PlayerExistsInSlot( SoldierID ubID );
void UpdateStatColor( UINT32 uiTimer, BOOLEAN fIncrease, BOOLEAN fDamaged, BOOLEAN fAugmented ); // SANDRO - added argument // Flugente - me too void UpdateStatColor( UINT32 uiTimer, BOOLEAN fIncrease, BOOLEAN fDamaged, BOOLEAN fAugmented ); // SANDRO - added argument // Flugente - me too
extern void UpdateItemHatches(); extern void UpdateItemHatches();
@@ -6812,7 +6812,7 @@ void TMClickSecondHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason )
} }
BOOLEAN PlayerExistsInSlot( UINT16 ubID ) BOOLEAN PlayerExistsInSlot( SoldierID ubID )
{ {
INT32 cnt; INT32 cnt;
@@ -6870,17 +6870,17 @@ BOOLEAN RemovePlayerFromTeamSlotGivenMercID( UINT16 ubMercID )
} }
void AddPlayerToInterfaceTeamSlot( UINT16 ubID ) void AddPlayerToInterfaceTeamSlot( SoldierID ubID )
{ {
INT32 cnt; INT32 cnt;
// If we are a vehicle don't ever add..... // If we are a vehicle don't ever add.....
if ( MercPtrs[ ubID ]->flags.uiStatusFlags & SOLDIER_VEHICLE ) if ( ubID->flags.uiStatusFlags & SOLDIER_VEHICLE )
{ {
return; return;
} }
if ( !( MercPtrs[ ubID ]->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) ) if ( !( ubID->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) )
{ {
if ( !PlayerExistsInSlot( ubID ) ) if ( !PlayerExistsInSlot( ubID ) )
{ {
@@ -6899,7 +6899,7 @@ void AddPlayerToInterfaceTeamSlot( UINT16 ubID )
fInterfacePanelDirty = DIRTYLEVEL2; fInterfacePanelDirty = DIRTYLEVEL2;
// Set ID to do open anim // Set ID to do open anim
MercPtrs[ ubID ]->flags.fUInewMerc = TRUE; ubID->flags.fUInewMerc = TRUE;
break; break;
} }
@@ -6909,14 +6909,14 @@ void AddPlayerToInterfaceTeamSlot( UINT16 ubID )
else else
{ {
// anv: for passengers, position on team panel will be linked with seat in vehicle // anv: for passengers, position on team panel will be linked with seat in vehicle
if ( MercPtrs[ ubID ]->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) ) if ( ubID->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) )
{ {
SOLDIERTYPE *pVehicle = GetSoldierStructureForVehicle( MercPtrs[ ubID ]->iVehicleId ); SOLDIERTYPE *pVehicle = GetSoldierStructureForVehicle( ubID->iVehicleId );
if( pVehicle != NULL ) if( pVehicle != NULL )
{ {
for( UINT8 iCounter = 0; iCounter < gNewVehicle[ pVehicleList[ MercPtrs[ ubID ]->iVehicleId ].ubVehicleType ].iNewSeatingCapacities; iCounter++ ) for( UINT8 iCounter = 0; iCounter < gNewVehicle[ pVehicleList[ ubID->iVehicleId ].ubVehicleType ].iNewSeatingCapacities; iCounter++ )
{ {
SOLDIERTYPE *pPassenger = pVehicleList[ MercPtrs[ ubID ]->iVehicleId ].pPassengers[ iCounter ]; SOLDIERTYPE *pPassenger = pVehicleList[ ubID->iVehicleId ].pPassengers[ iCounter ];
if( pPassenger != NULL && pPassenger->ubID == ubID ) if( pPassenger != NULL && pPassenger->ubID == ubID )
{ {
gTeamPanel[ iCounter ].fOccupied = TRUE; gTeamPanel[ iCounter ].fOccupied = TRUE;
@@ -6929,7 +6929,7 @@ void AddPlayerToInterfaceTeamSlot( UINT16 ubID )
fInterfacePanelDirty = DIRTYLEVEL2; fInterfacePanelDirty = DIRTYLEVEL2;
// Set ID to do open anim // Set ID to do open anim
MercPtrs[ ubID ]->flags.fUInewMerc = TRUE; ubID->flags.fUInewMerc = TRUE;
return; return;
} }
+3 -3
View File
@@ -83,11 +83,11 @@ SoldierID GetSMPanelCurrentMerc( );
void UpdateSMPanel( ); void UpdateSMPanel( );
BOOLEAN InitTEAMSlots( ); BOOLEAN InitTEAMSlots( );
void AddPlayerToInterfaceTeamSlot( UINT16 ubID ); void AddPlayerToInterfaceTeamSlot( SoldierID ubID );
BOOLEAN RemovePlayerFromInterfaceTeamSlot( UINT8 ubID ); BOOLEAN RemovePlayerFromInterfaceTeamSlot( UINT8 ubID );
BOOLEAN GetPlayerIDFromInterfaceTeamSlot( UINT8 ubPanelSlot, UINT16 * pubID ); BOOLEAN GetPlayerIDFromInterfaceTeamSlot( UINT8 ubPanelSlot, UINT16 * pubID );
void RemoveAllPlayersFromSlot( ); void RemoveAllPlayersFromSlot( );
BOOLEAN PlayerExistsInSlot( UINT16 ubID ); BOOLEAN PlayerExistsInSlot( SoldierID ubID );
BOOLEAN RemovePlayerFromTeamSlotGivenMercID( UINT16 ubMercID ); BOOLEAN RemovePlayerFromTeamSlotGivenMercID( UINT16 ubMercID );
void CheckForAndAddMercToTeamPanel( SOLDIERTYPE *pSoldier ); void CheckForAndAddMercToTeamPanel( SOLDIERTYPE *pSoldier );
void CleanUpStack( OBJECTTYPE * pObj, OBJECTTYPE * pCursorObj ); void CleanUpStack( OBJECTTYPE * pObj, OBJECTTYPE * pCursorObj );
@@ -118,7 +118,7 @@ extern BOOLEAN gfDisableTacticalPanelButtons;
typedef struct typedef struct
{ {
UINT16 ubID; SoldierID ubID;
BOOLEAN fOccupied; BOOLEAN fOccupied;
} TEAM_PANEL_SLOTS_TYPE; } TEAM_PANEL_SLOTS_TYPE;
+2 -2
View File
@@ -1,7 +1,7 @@
#ifndef ITEM_TYPES_H #ifndef ITEM_TYPES_H
#define ITEM_TYPES_H #define ITEM_TYPES_H
#include "types.h" #include "Overhead Types.h"
#include <vector> #include <vector>
#include <list> #include <list>
// THE_BOB : added for pocket popup definitions // THE_BOB : added for pocket popup definitions
@@ -415,7 +415,7 @@ namespace ObjectDataStructs {
INT8 bDelay; // >=0 values used only INT8 bDelay; // >=0 values used only
INT8 bFrequency; // >=0 values used only INT8 bFrequency; // >=0 values used only
}; };
UINT16 ubBombOwner; // side which placed the bomb SoldierID ubBombOwner; // side which placed the bomb
UINT8 bActionValue; // this is used by the ACTION_ITEM fake item UINT8 bActionValue; // this is used by the ACTION_ITEM fake item
union union
{ {
+4 -4
View File
@@ -15287,10 +15287,10 @@ BOOLEAN ObjectIsExternalFeeder(SOLDIERTYPE* pSoldier, OBJECTTYPE * pObject)
if ( !pSoldier || !pObject) if ( !pSoldier || !pObject)
return( FALSE ); return( FALSE );
UINT16 usSoldierFeedingTarget1 = 0; SoldierID usSoldierFeedingTarget1 = NOBODY;
UINT16 usGunSlot1 = 0; UINT16 usGunSlot1 = 0;
UINT16 usAmmoSlot1 = 0; UINT16 usAmmoSlot1 = 0;
UINT16 usSoldierFeedingTarget2 = 0; SoldierID usSoldierFeedingTarget2 = NOBODY;
UINT16 usGunSlot2 = 0; UINT16 usGunSlot2 = 0;
UINT16 usAmmoSlot2 = 0; UINT16 usAmmoSlot2 = 0;
if ( pSoldier->IsFeedingExternal(&usSoldierFeedingTarget1, &usGunSlot1, &usAmmoSlot1, &usSoldierFeedingTarget2, &usGunSlot2, &usAmmoSlot2) ) if ( pSoldier->IsFeedingExternal(&usSoldierFeedingTarget1, &usGunSlot1, &usAmmoSlot1, &usSoldierFeedingTarget2, &usGunSlot2, &usAmmoSlot2) )
@@ -15345,10 +15345,10 @@ OBJECTTYPE* GetExternalFeedingObject(SOLDIERTYPE* pSoldier, OBJECTTYPE * pObject
continue; continue;
// we check if that guy is feeding someone, and that someone is really us // we check if that guy is feeding someone, and that someone is really us
UINT16 usTeamSoldierFeedingTarget1 = 0; SoldierID usTeamSoldierFeedingTarget1 = NOBODY;
UINT16 usGunSlot1 = 0; UINT16 usGunSlot1 = 0;
UINT16 usAmmoSlot1 = 0; UINT16 usAmmoSlot1 = 0;
UINT16 usTeamSoldierFeedingTarget2 = 0; SoldierID usTeamSoldierFeedingTarget2 = NOBODY;
UINT16 usGunSlot2 = 0; UINT16 usGunSlot2 = 0;
UINT16 usAmmoSlot2 = 0; UINT16 usAmmoSlot2 = 0;
if ( pTeamSoldier->IsFeedingExternal(&usTeamSoldierFeedingTarget1, &usGunSlot1, &usAmmoSlot1, &usTeamSoldierFeedingTarget2, &usGunSlot2, &usAmmoSlot2) ) if ( pTeamSoldier->IsFeedingExternal(&usTeamSoldierFeedingTarget1, &usGunSlot1, &usAmmoSlot1, &usTeamSoldierFeedingTarget2, &usGunSlot2, &usAmmoSlot2) )
+1 -1
View File
@@ -4390,7 +4390,7 @@ UINT8 SoldierToSoldierBodyPartChanceToGetThrough( SOLDIERTYPE * pStartSoldier, S
return( ChanceToGetThrough( pStartSoldier, (FLOAT) sX, (FLOAT) sY, dEndZPos ) ); return( ChanceToGetThrough( pStartSoldier, (FLOAT) sX, (FLOAT) sY, dEndZPos ) );
} }
UINT8 SoldierToLocationChanceToGetThrough( SOLDIERTYPE * pStartSoldier, INT32 sGridNo, INT8 bLevel, INT8 bCubeLevel, UINT16 ubTargetID ) UINT8 SoldierToLocationChanceToGetThrough( SOLDIERTYPE * pStartSoldier, INT32 sGridNo, INT8 bLevel, INT8 bCubeLevel, SoldierID ubTargetID )
{ {
FLOAT dEndZPos; FLOAT dEndZPos;
INT16 sXPos; INT16 sXPos;
+1 -1
View File
@@ -152,7 +152,7 @@ UINT8 SoldierToSoldierChanceToGetThrough( SOLDIERTYPE * pStartSoldier, SOLDIERTY
UINT8 SoldierToSoldierBodyPartChanceToGetThrough( SOLDIERTYPE * pStartSoldier, SOLDIERTYPE * pEndSoldier, UINT8 ubAimLocation ); UINT8 SoldierToSoldierBodyPartChanceToGetThrough( SOLDIERTYPE * pStartSoldier, SOLDIERTYPE * pEndSoldier, UINT8 ubAimLocation );
UINT8 AISoldierToSoldierChanceToGetThrough( SOLDIERTYPE * pStartSoldier, SOLDIERTYPE * pEndSoldier ); UINT8 AISoldierToSoldierChanceToGetThrough( SOLDIERTYPE * pStartSoldier, SOLDIERTYPE * pEndSoldier );
UINT8 AISoldierToLocationChanceToGetThrough( SOLDIERTYPE * pStartSoldier, INT32 sGridNo, INT8 bLevel, INT8 bCubeLevel ); UINT8 AISoldierToLocationChanceToGetThrough( SOLDIERTYPE * pStartSoldier, INT32 sGridNo, INT8 bLevel, INT8 bCubeLevel );
UINT8 SoldierToLocationChanceToGetThrough( SOLDIERTYPE * pStartSoldier, INT32 sGridNo, INT8 bLevel, INT8 bCubeLevel, UINT16 ubTargetID ); UINT8 SoldierToLocationChanceToGetThrough( SOLDIERTYPE * pStartSoldier, INT32 sGridNo, INT8 bLevel, INT8 bCubeLevel, SoldierID ubTargetID );
INT32 SoldierToLocationWindowTest( SOLDIERTYPE * pStartSoldier, INT32 sEndGridNo ); INT32 SoldierToLocationWindowTest( SOLDIERTYPE * pStartSoldier, INT32 sEndGridNo );
// sevenfm: AI LOS functions // sevenfm: AI LOS functions
INT32 LOS_Raised(SOLDIERTYPE * pStartSoldier, SOLDIERTYPE * pEndSoldier, int iTileSightLimit = CALC_FROM_ALL_DIRS, UINT8 ubAimLocation = LOS_POS); INT32 LOS_Raised(SOLDIERTYPE * pStartSoldier, SOLDIERTYPE * pEndSoldier, int iTileSightLimit = CALC_FROM_ALL_DIRS, UINT8 ubAimLocation = LOS_POS);
+1 -1
View File
@@ -128,7 +128,7 @@ struct TacticalStatusType
BOOLEAN fCantGetThrough; BOOLEAN fCantGetThrough;
INT32 sCantGetThroughGridNo; INT32 sCantGetThroughGridNo;
INT32 sCantGetThroughSoldierGridNo; INT32 sCantGetThroughSoldierGridNo;
UINT16 ubCantGetThroughID; SoldierID ubCantGetThroughID;
BOOLEAN fDidGameJustStart; BOOLEAN fDidGameJustStart;
BOOLEAN fStatChangeCheatOn; BOOLEAN fStatChangeCheatOn;
UINT8 ubLastRequesterTargetID; UINT8 ubLastRequesterTargetID;
+8 -9
View File
@@ -2286,13 +2286,12 @@ void SOLDIERTYPE::CalcNewActionPoints( void )
void SOLDIERTYPE::DoNinjaAttack( void ) void SOLDIERTYPE::DoNinjaAttack( void )
{ {
//UINT32 uiMercFlags; //UINT32 uiMercFlags;
UINT16 usSoldierIndex;
SOLDIERTYPE *pTSoldier; SOLDIERTYPE *pTSoldier;
UINT8 ubTDirection; UINT8 ubTDirection;
UINT8 ubTargetStance; UINT8 ubTargetStance;
usSoldierIndex = WhoIsThere2( this->sTargetGridNo, this->pathing.bLevel ); SoldierID usSoldierIndex = WhoIsThere2( this->sTargetGridNo, this->pathing.bLevel );
if ( usSoldierIndex != NOBODY ) if ( usSoldierIndex != NOBODY )
{ {
GetSoldier( &pTSoldier, usSoldierIndex ); GetSoldier( &pTSoldier, usSoldierIndex );
@@ -9450,7 +9449,7 @@ void SOLDIERTYPE::BeginSoldierClimbUpRoof(void)
} }
INT8 bNewDirection; INT8 bNewDirection;
UINT16 ubWhoIsThere; SoldierID ubWhoIsThere;
if (FindHeigherLevel(this, this->sGridNo, this->ubDirection, &bNewDirection) && (this->pathing.bLevel == 0)) if (FindHeigherLevel(this, this->sGridNo, this->ubDirection, &bNewDirection) && (this->pathing.bLevel == 0))
{ {
@@ -9624,7 +9623,7 @@ void SOLDIERTYPE::BeginSoldierClimbWindow( void )
void SOLDIERTYPE::BeginSoldierClimbWall( void ) void SOLDIERTYPE::BeginSoldierClimbWall( void )
{ {
INT8 bNewDirection; INT8 bNewDirection;
UINT16 ubWhoIsThere; SoldierID ubWhoIsThere;
if ( FindWallJumpDirection( this, this->sGridNo, this->ubDirection, &bNewDirection ) && (this->pathing.bLevel == 0) ) if ( FindWallJumpDirection( this, this->sGridNo, this->ubDirection, &bNewDirection ) && (this->pathing.bLevel == 0) )
{ {
@@ -9661,7 +9660,7 @@ void SOLDIERTYPE::BeginSoldierClimbWall( void )
void SOLDIERTYPE::BeginSoldierClimbWallUp( void ) void SOLDIERTYPE::BeginSoldierClimbWallUp( void )
{ {
INT8 bNewDirection; INT8 bNewDirection;
UINT16 ubWhoIsThere; SoldierID ubWhoIsThere;
if ( FindLowerLevelWall( this, this->sGridNo, this->ubDirection, &bNewDirection ) && (this->pathing.bLevel > 0) ) if ( FindLowerLevelWall( this, this->sGridNo, this->ubDirection, &bNewDirection ) && (this->pathing.bLevel > 0) )
{ {
@@ -11310,7 +11309,7 @@ BOOLEAN SOLDIERTYPE::CheckSoldierHitRoof( void )
void SOLDIERTYPE::BeginSoldierClimbDownRoof(void) void SOLDIERTYPE::BeginSoldierClimbDownRoof(void)
{ {
INT8 bNewDirection; INT8 bNewDirection;
UINT16 ubWhoIsThere; SoldierID ubWhoIsThere;
if (FindLowerLevel(this, this->sGridNo, this->ubDirection, &bNewDirection) && (this->pathing.bLevel > 0)) if (FindLowerLevel(this, this->sGridNo, this->ubDirection, &bNewDirection) && (this->pathing.bLevel > 0))
{ {
@@ -12469,7 +12468,7 @@ void SOLDIERTYPE::EVENT_SoldierBeginBladeAttack( INT32 sGridNo, UINT8 ubDirectio
{ {
SOLDIERTYPE *pTSoldier; SOLDIERTYPE *pTSoldier;
//UINT32 uiMercFlags; //UINT32 uiMercFlags;
UINT16 usSoldierIndex; SoldierID usSoldierIndex;
UINT8 ubTDirection; UINT8 ubTDirection;
ROTTING_CORPSE *pCorpse; ROTTING_CORPSE *pCorpse;
@@ -12692,7 +12691,7 @@ void SOLDIERTYPE::EVENT_SoldierBeginPunchAttack( INT32 sGridNo, UINT8 ubDirectio
BOOLEAN fMartialArtist = FALSE; BOOLEAN fMartialArtist = FALSE;
SOLDIERTYPE *pTSoldier; SOLDIERTYPE *pTSoldier;
//UINT32 uiMercFlags; //UINT32 uiMercFlags;
UINT16 usSoldierIndex; SoldierID usSoldierIndex;
UINT8 ubTDirection; UINT8 ubTDirection;
UINT16 usItem; UINT16 usItem;
@@ -15148,7 +15147,7 @@ void SOLDIERTYPE::InventoryExplosion( void )
} }
// Flugente: do we currently provide ammo (pAmmoSlot) for someone else's (pubId) gun (pGunSlot)? // Flugente: do we currently provide ammo (pAmmoSlot) for someone else's (pubId) gun (pGunSlot)?
BOOLEAN SOLDIERTYPE::IsFeedingExternal( UINT16 * pubId1, UINT16* pGunSlot1, UINT16* pAmmoSlot1, UINT16 * pubId2, UINT16* pGunSlot2, UINT16* pAmmoSlot2 ) BOOLEAN SOLDIERTYPE::IsFeedingExternal( SoldierID * pubId1, UINT16* pGunSlot1, UINT16* pAmmoSlot1, SoldierID * pubId2, UINT16* pGunSlot2, UINT16* pAmmoSlot2 )
{ {
// make sure we have to check this... // make sure we have to check this...
if ( gGameExternalOptions.ubExternalFeeding == 0 ) if ( gGameExternalOptions.ubExternalFeeding == 0 )
+1 -1
View File
@@ -1839,7 +1839,7 @@ public:
void InventoryExplosion( void ); void InventoryExplosion( void );
// Flugente: do we currently provide ammo (pAmmoSlot) for someone else's (pubId) gun (pGunSlot)? // Flugente: do we currently provide ammo (pAmmoSlot) for someone else's (pubId) gun (pGunSlot)?
BOOLEAN IsFeedingExternal(UINT16 * pubId1, UINT16* pGunSlot1, UINT16* pAmmoSlot1, UINT16 * pubId2, UINT16* pGunSlot2, UINT16* pAmmoSlot2); BOOLEAN IsFeedingExternal(SoldierID * pubId1, UINT16* pGunSlot1, UINT16* pAmmoSlot1, SoldierID* pubId2, UINT16* pGunSlot2, UINT16* pAmmoSlot2);
// Flugente: return first found object with a specific flag from our inventory // Flugente: return first found object with a specific flag from our inventory
OBJECTTYPE* GetObjectWithFlag( UINT64 aFlag ); OBJECTTYPE* GetObjectWithFlag( UINT64 aFlag );
+15 -13
View File
@@ -176,7 +176,7 @@ INT16 sVehicleInternalOrigArmorValues[ NUMBER_OF_TYPES_OF_VEHICLES ][ NUMBER_OF_
// set the driver of the vehicle // set the driver of the vehicle
void SetDriver( INT32 iID, UINT16 ubID ); void SetDriver( INT32 iID, SoldierID ubID );
//void RemoveSoldierFromVehicleBetweenSectors( pSoldier, iId ); //void RemoveSoldierFromVehicleBetweenSectors( pSoldier, iId );
@@ -1556,7 +1556,7 @@ SOLDIERTYPE *GetDriver( INT32 iID )
INT32 iCounter; INT32 iCounter;
if( pVehicleList[ iID ].ubDriver != NOBODY ) if( pVehicleList[ iID ].ubDriver != NOBODY )
{ {
return( MercPtrs[ pVehicleList[ iID ].ubDriver ] ); return( pVehicleList[ iID ].ubDriver );
} }
else else
{ {
@@ -1573,25 +1573,27 @@ SOLDIERTYPE *GetDriver( INT32 iID )
} }
void SetDriver( INT32 iID, UINT16 ubID ) void SetDriver( INT32 iID, SoldierID ubID )
{ {
// anv: first make sure previous driver won't be driver anymore // anv: first make sure previous driver won't be driver anymore
if( pVehicleList[ iID ].ubDriver != NOBODY && MercPtrs[ pVehicleList[ iID ].ubDriver ]->iVehicleId == iID ) SOLDIERTYPE* prevDriver = pVehicleList[iID].ubDriver;
if( prevDriver != NOBODY && prevDriver->iVehicleId == iID )
{ {
if( MercPtrs[ pVehicleList[ iID ].ubDriver ] ) if( prevDriver )
{ {
MercPtrs[ pVehicleList[ iID ].ubDriver ]->flags.uiStatusFlags &= ~(SOLDIER_DRIVER); prevDriver->flags.uiStatusFlags &= ~(SOLDIER_DRIVER);
if( GetSeatIndexFromSoldier( MercPtrs[ pVehicleList[ iID ].ubDriver ] ) != (-1) ) if( GetSeatIndexFromSoldier( prevDriver ) != (-1) )
{ {
MercPtrs[ pVehicleList[ iID ].ubDriver ]->flags.uiStatusFlags |= SOLDIER_PASSENGER; prevDriver->flags.uiStatusFlags |= SOLDIER_PASSENGER;
} }
} }
} }
// set proper flags // set proper flags
if( ubID != NOBODY ) if( ubID != NOBODY )
{ {
MercPtrs[ ubID ]->flags.uiStatusFlags |= SOLDIER_DRIVER; ubID->flags.uiStatusFlags |= SOLDIER_DRIVER;
MercPtrs[ ubID ]->flags.uiStatusFlags &= ~(SOLDIER_PASSENGER); ubID->flags.uiStatusFlags &= ~(SOLDIER_PASSENGER);
} }
pVehicleList[ iID ].ubDriver = ubID; pVehicleList[ iID ].ubDriver = ubID;
} }
@@ -1821,7 +1823,7 @@ BOOLEAN ExitVehicle( SOLDIERTYPE *pSoldier )
} }
else else
{ {
UINT16 usTempSelectedSoldier = gusSelectedSoldier; SoldierID usTempSelectedSoldier = gusSelectedSoldier;
SetCurrentSquad( CurrentSquad(), TRUE ); SetCurrentSquad( CurrentSquad(), TRUE );
@@ -1984,7 +1986,7 @@ void AddPassangersToTeamPanel( INT32 iId )
} }
void VehicleTakeDamage( UINT8 ubID, UINT8 ubReason, INT16 sDamage, INT32 sGridNo, UINT16 ubAttackerID ) void VehicleTakeDamage( UINT8 ubID, UINT8 ubReason, INT16 sDamage, INT32 sGridNo, SoldierID ubAttackerID )
{ {
if ( ubReason != TAKE_DAMAGE_GAS_FIRE && ubReason != TAKE_DAMAGE_GAS_NOTFIRE ) if ( ubReason != TAKE_DAMAGE_GAS_FIRE && ubReason != TAKE_DAMAGE_GAS_NOTFIRE )
{ {
@@ -2013,7 +2015,7 @@ void VehicleTakeDamage( UINT8 ubID, UINT8 ubReason, INT16 sDamage, INT32 sGridNo
} }
void HandleCriticalHitForVehicleInLocation( UINT8 ubID, INT16 sDmg, INT32 sGridNo, UINT16 ubAttackerID ) void HandleCriticalHitForVehicleInLocation( UINT8 ubID, INT16 sDmg, INT32 sGridNo, SoldierID ubAttackerID )
{ {
// check state the armor was s'posed to be in vs. the current state..the difference / orig state is % chance // check state the armor was s'posed to be in vs. the current state..the difference / orig state is % chance
// that a critical hit will occur // that a critical hit will occur
+3 -3
View File
@@ -289,7 +289,7 @@ typedef struct
BOOLEAN fBetweenSectors; // between sectors? BOOLEAN fBetweenSectors; // between sectors?
INT32 sGridNo; // location in tactical INT32 sGridNo; // location in tactical
SOLDIERTYPE *pPassengers[ MAXPASSENGERS ]; SOLDIERTYPE *pPassengers[ MAXPASSENGERS ];
UINT16 ubDriver; SoldierID ubDriver;
INT16 sInternalHitLocations[ NUMBER_OF_EXTERNAL_HIT_LOCATIONS_ON_VEHICLE ]; INT16 sInternalHitLocations[ NUMBER_OF_EXTERNAL_HIT_LOCATIONS_ON_VEHICLE ];
INT16 sArmourType; INT16 sArmourType;
INT16 sExternalArmorLocationsStatus[ NUMBER_OF_EXTERNAL_HIT_LOCATIONS_ON_VEHICLE ]; INT16 sExternalArmorLocationsStatus[ NUMBER_OF_EXTERNAL_HIT_LOCATIONS_ON_VEHICLE ];
@@ -404,7 +404,7 @@ BOOLEAN SwapVehicleSeat( SOLDIERTYPE *pVehicle, SOLDIERTYPE *pSoldier, UINT8 ubS
void AddPassangersToTeamPanel( INT32 iId ); void AddPassangersToTeamPanel( INT32 iId );
void VehicleTakeDamage( UINT8 ubID, UINT8 ubReason, INT16 sDamage, INT32 sGridNo , UINT16 ubAttackerID ); void VehicleTakeDamage( UINT8 ubID, UINT8 ubReason, INT16 sDamage, INT32 sGridNo , SoldierID ubAttackerID );
// the soldiertype containing this tactical incarnation of this vehicle // the soldiertype containing this tactical incarnation of this vehicle
SOLDIERTYPE * GetSoldierStructureForVehicle( INT32 iId ); SOLDIERTYPE * GetSoldierStructureForVehicle( INT32 iId );
@@ -415,7 +415,7 @@ void AdjustVehicleAPs( SOLDIERTYPE *pSoldier, INT16 *pubPoints );
//INT16 GetOrigInternalArmorValueForVehicleInLocation( UINT8 ubID, UINT8 ubLocation ); //INT16 GetOrigInternalArmorValueForVehicleInLocation( UINT8 ubID, UINT8 ubLocation );
// handle crit hit to vehicle in this location // handle crit hit to vehicle in this location
void HandleCriticalHitForVehicleInLocation( UINT8 ubID, INT16 sDmg, INT32 sGridNo, UINT16 ubAttackerID ); void HandleCriticalHitForVehicleInLocation( UINT8 ubID, INT16 sDmg, INT32 sGridNo, SoldierID ubAttackerID );
// ste up armor values for this vehicle // ste up armor values for this vehicle
void SetUpArmorForVehicle( UINT8 ubID ); void SetUpArmorForVehicle( UINT8 ubID );