diff --git a/Editor/EditorMercs.cpp b/Editor/EditorMercs.cpp index 478cd4e9..cef61a4f 100644 --- a/Editor/EditorMercs.cpp +++ b/Editor/EditorMercs.cpp @@ -168,7 +168,7 @@ void AddNewItemToSelectedMercsInventory( BOOLEAN fCreate ); void RenderMercInventoryPanel(); void SetDroppableCheckboxesBasedOnMercsInventory(); -extern BOOLEAN InternalAddSoldierToSector( UINT8 ubID, BOOLEAN fCalculateDirection, BOOLEAN fUseAnimation, UINT16 usAnimState, UINT16 usAnimCode ); +extern BOOLEAN InternalAddSoldierToSector( UINT16 ubID, BOOLEAN fCalculateDirection, BOOLEAN fUseAnimation, UINT16 usAnimState, UINT16 usAnimCode ); //array which keeps track of which item is in which slot. This is dependant on the selected merc, so //these temp values must be updated when different mercs are selected, and reset when a merc detailed @@ -565,7 +565,7 @@ void AddMercToWorld( INT32 iMapIndex ) if( IsLocationSittable( iMapIndex, gfRoofPlacement ) ) { - UINT8 ubID; + UINT16 ubID; INT16 sSectorX, sSectorY; SOLDIERINITNODE *pNode; @@ -3789,7 +3789,7 @@ void PasteMercPlacement( INT32 iMapIndex ) if( IsLocationSittable( iMapIndex, gfRoofPlacement ) ) { - UINT8 ubID; + UINT16 ubID; INT16 sSectorX, sSectorY; SOLDIERINITNODE *pNode; diff --git a/GameVersion.h b/GameVersion.h index 05d965f9..2c39f131 100644 --- a/GameVersion.h +++ b/GameVersion.h @@ -22,6 +22,7 @@ extern CHAR16 zRevisionNumber[16]; // Keeps track of the saved game version. Increment the saved game version whenever // you will invalidate the saved game file +#define INCREASED_TEAMSIZES 184 // Asdow: SOLDIERTYPE ubID changed from UINT8 -> UINT16 #define REBELCOMMAND 183 #define DRAGSTRUCTURE 182 // Flugente: we can drag structures behind us #define DISABILITYFLAGMASK 181 // Flugente: disabilities get a flagmask @@ -103,7 +104,7 @@ extern CHAR16 zRevisionNumber[16]; #define AP100_SAVEGAME_DATATYPE_CHANGE 105 // Before this, we didn't have the 100AP structure changes #define NIV_SAVEGAME_DATATYPE_CHANGE 102 // Before this, we used the old structure system -#define SAVE_GAME_VERSION REBELCOMMAND +#define SAVE_GAME_VERSION INCREASED_TEAMSIZES //#define RUSSIANGOLD #ifdef __cplusplus diff --git a/Laptop/BobbyRGuns.cpp b/Laptop/BobbyRGuns.cpp index 823f35ce..8b4edef6 100644 --- a/Laptop/BobbyRGuns.cpp +++ b/Laptop/BobbyRGuns.cpp @@ -3700,11 +3700,11 @@ void OutOfStockMessageBoxCallBack( UINT8 bExitValue ) UINT8 CheckPlayersInventoryForGunMatchingGivenAmmoID( INT16 sItemID ) { UINT8 ubItemCount=0; - UINT8 ubMercCount; + UINT16 ubMercCount; UINT8 ubPocketCount; - UINT8 ubFirstID = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; - UINT8 ubLastID = gTacticalStatus.Team[ OUR_TEAM ].bLastID; + UINT16 ubFirstID = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; + UINT16 ubLastID = gTacticalStatus.Team[ OUR_TEAM ].bLastID; //loop through all the mercs on the team for( ubMercCount = ubFirstID; ubMercCount <= ubLastID; ++ubMercCount ) diff --git a/Laptop/LaptopSave.h b/Laptop/LaptopSave.h index ba269c5d..4f555b96 100644 --- a/Laptop/LaptopSave.h +++ b/Laptop/LaptopSave.h @@ -26,7 +26,7 @@ class SOLDIERTYPE; typedef struct { BOOLEAN fActive; - UINT8 ubSoldierID; + UINT16 ubSoldierID; UINT8 ubMercID; INT32 iPayOutPrice; } LIFE_INSURANCE_PAYOUT; diff --git a/Laptop/insurance Contract.cpp b/Laptop/insurance Contract.cpp index 6c6b5ec0..b40eaacf 100644 --- a/Laptop/insurance Contract.cpp +++ b/Laptop/insurance Contract.cpp @@ -170,7 +170,7 @@ void InsuranceContractUserTextFieldCallBack( UINT8 ubID, BOOLEAN fEntering ); INT8 CountInsurableMercs(); void DisableInsuranceContractNextPreviousbuttons(); void CreateDestroyInsuranceContractFormButtons( BOOLEAN fCreate); -void HandleAcceptButton( UINT8 ubSoldierID, UINT8 ubFormID ); +void HandleAcceptButton( UINT16 ubSoldierID, UINT8 ubFormID ); FLOAT DiffFromNormRatio( INT16 sThisValue, INT16 sNormalValue ); void InsContractNoMercsPopupCallBack( UINT8 bExitValue ); void BuildInsuranceArray(); @@ -752,7 +752,7 @@ void BtnInsuranceAcceptClearForm1ButtonCallback(GUI_BUTTON *btn,INT32 reason) if (btn->uiFlags & BUTTON_CLICKED_ON) { UINT8 ubButton = (UINT8) MSYS_GetBtnUserData( btn, 0 ); - UINT8 ubSoldierID = (UINT8) GetSoldierIDFromMercID( gubMercIDForMercInForm1 ); + INT16 ubSoldierID = GetSoldierIDFromMercID( gubMercIDForMercInForm1 ); btn->uiFlags &= (~BUTTON_CLICKED_ON ); @@ -796,7 +796,7 @@ void BtnInsuranceAcceptClearForm2ButtonCallback(GUI_BUTTON *btn,INT32 reason) if (btn->uiFlags & BUTTON_CLICKED_ON) { UINT8 ubButton = (UINT8) MSYS_GetBtnUserData( btn, 0 ); - UINT8 ubSoldierID = (UINT8) GetSoldierIDFromMercID( gubMercIDForMercInForm2 ); + INT16 ubSoldierID = GetSoldierIDFromMercID( gubMercIDForMercInForm2 ); btn->uiFlags &= (~BUTTON_CLICKED_ON ); @@ -841,7 +841,7 @@ void BtnInsuranceAcceptClearForm3ButtonCallback(GUI_BUTTON *btn,INT32 reason) if (btn->uiFlags & BUTTON_CLICKED_ON) { UINT8 ubButton = (UINT8) MSYS_GetBtnUserData( btn, 0 ); - UINT8 ubSoldierID = (UINT8) GetSoldierIDFromMercID( gubMercIDForMercInForm3 ); + INT16 ubSoldierID = GetSoldierIDFromMercID( gubMercIDForMercInForm3 ); btn->uiFlags &= (~BUTTON_CLICKED_ON ); @@ -943,10 +943,10 @@ void SelectInsuranceContractRegionCallBack(MOUSE_REGION * pRegion, INT32 iReason INT8 CountInsurableMercs() { - INT16 cnt; - SOLDIERTYPE *pSoldier; - INT16 bLastTeamID; - INT8 bCount=0; + UINT16 cnt; + SOLDIERTYPE *pSoldier; + UINT16 bLastTeamID; + INT8 bCount=0; // Set locator to first merc cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; @@ -1071,7 +1071,7 @@ void CreateDestroyInsuranceContractFormButtons( BOOLEAN fCreate) -void HandleAcceptButton( UINT8 ubSoldierID, UINT8 ubFormID ) +void HandleAcceptButton( UINT16 ubSoldierID, UINT8 ubFormID ) { //passed in either 1,2,3 should be 0,1,2 ubFormID--; @@ -1459,7 +1459,7 @@ void EndInsuranceInvestigation( UINT8 ubPayoutID ) //void InsuranceContractPayLifeInsuranceForDeadMerc( LIFE_INSURANCE_PAYOUT *pPayoutStruct ) -void InsuranceContractPayLifeInsuranceForDeadMerc( UINT8 ubPayoutID ) +void InsuranceContractPayLifeInsuranceForDeadMerc( UINT16 ubPayoutID ) { //if the mercs id number is the same what is in the soldier array if( LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubSoldierID == Menptr[ LaptopSaveInfo.pLifeInsurancePayouts[ ubPayoutID ].ubSoldierID ].ubID ) diff --git a/Laptop/insurance Contract.h b/Laptop/insurance Contract.h index c7dcf460..1be525a9 100644 --- a/Laptop/insurance Contract.h +++ b/Laptop/insurance Contract.h @@ -18,7 +18,7 @@ void DailyUpdateOfInsuredMercs(); //void InsuranceContractPayLifeInsuranceForDeadMerc( LIFE_INSURANCE_PAYOUT *pPayoutStruct ); BOOLEAN AddLifeInsurancePayout( SOLDIERTYPE *pSoldier ); -void InsuranceContractPayLifeInsuranceForDeadMerc( UINT8 ubPayoutID ); +void InsuranceContractPayLifeInsuranceForDeadMerc( UINT16 ubPayoutID ); void StartInsuranceInvestigation( UINT8 ubPayoutID ); void EndInsuranceInvestigation( UINT8 ubPayoutID ); diff --git a/Multiplayer/client.cpp b/Multiplayer/client.cpp index d09db645..eaf8e54c 100644 --- a/Multiplayer/client.cpp +++ b/Multiplayer/client.cpp @@ -387,13 +387,13 @@ typedef struct typedef struct { - UINT8 ubProfileID; + UINT16 ubProfileID; } send_dismiss_struct; typedef struct { - UINT8 usSoldierID; + UINT16 usSoldierID; FLOAT dNewXPos; FLOAT dNewYPos; @@ -401,7 +401,7 @@ typedef struct typedef struct { - UINT8 usSoldierID; + UINT16 usSoldierID; INT16 usNewDirection; } gui_dir; @@ -430,12 +430,12 @@ typedef struct typedef struct { - UINT8 ubID; + UINT16 ubID; INT8 bTeam; - UINT8 gubOutOfTurnPersons; - UINT8 gubOutOfTurnOrder[MAXMERCS]; + UINT16 gubOutOfTurnPersons; + UINT16 gubOutOfTurnOrder[MAXMERCS]; BOOLEAN fMarkInterruptOccurred; - UINT8 Interrupted; + UINT16 Interrupted; } INT_STRUCT; typedef struct @@ -475,7 +475,7 @@ typedef struct float dForceY; float dForceZ; UINT32 sTargetGridNo; - UINT8 ubID; + UINT16 ubID; UINT8 ubActionCode; UINT32 uiActionData; UINT16 usItem; @@ -491,7 +491,7 @@ typedef struct float dZ; INT32 sGridNo; bool bWasDud; - UINT8 ubOwnerID; + UINT16 ubOwnerID; INT32 RealObjectID; // the local ID on the initiating client UINT32 uiPreRandomIndex; // send out our current pre-random index } grenade_result; @@ -499,7 +499,7 @@ typedef struct typedef struct { UINT32 sGridNo; - UINT8 ubID; + UINT16 ubID; UINT16 usItem; UINT8 ubItemStatus; UINT32 uiWorldIndex; // the local World Index of this bomb on its creators client @@ -511,7 +511,7 @@ typedef struct typedef struct { - UINT8 ubID; + UINT16 ubID; UINT32 uiWorldItemIndex; UINT8 ubMPTeamIndex; UINT32 uiPreRandomIndex; // send out our current pre-random index @@ -521,7 +521,7 @@ typedef struct { UINT32 uiWorldItemIndex; UINT8 ubMPTeamIndex; - UINT8 ubID; + UINT16 ubID; UINT32 sGridNo; UINT32 uiPreRandomIndex; // send out our current pre-random index } disarm_struct; @@ -531,7 +531,7 @@ typedef struct INT32 sGridNo; UINT8 ubRadius; UINT16 usItem; - UINT8 ubOwner; + UINT16 ubOwner; BOOLEAN fSubsequent; INT8 bLevel; INT32 iSmokeEffectID; @@ -541,13 +541,13 @@ typedef struct typedef struct { UINT8 ubDamageFunc; // 1 - gas damage , 2 - explosive damage - UINT8 ubSoldierID; + UINT16 ubSoldierID; UINT16 usExplosiveClassID; INT16 sSubsequent; BOOL fRecompileMovementCosts; INT16 sWoundAmt; INT16 sBreathAmt; - UINT8 ubAttackerID; + UINT16 ubAttackerID; UINT16 usItem; INT32 sBombGridNo; UINT32 uiDist; @@ -571,7 +571,7 @@ int client_progress[4]; int TEAM; UINT8 netbTeam; -UINT8 ubID_prefix; +UINT16 ubID_prefix; bool is_connected=false; bool is_connecting=false; @@ -990,7 +990,7 @@ void recieveHIT(RPCParameters *rpcParameters) SOLDIERTYPE *pSoldier = MercPtrs[ SWeaponHit->usSoldierID ]; UINT16 usSoldierID; - UINT8 ubAttackerID; + UINT16 ubAttackerID; if((SWeaponHit->usSoldierID >= ubID_prefix) && (SWeaponHit->usSoldierID < (ubID_prefix+6))) // within our netbTeam range... usSoldierID = (SWeaponHit->usSoldierID - ubID_prefix); @@ -1017,7 +1017,7 @@ void recieveHIT(RPCParameters *rpcParameters) } -void send_dismiss(UINT8 ubCurrentSoldierID) +void send_dismiss(UINT16 ubCurrentSoldierID) { send_dismiss_struct sDismissMerc; @@ -1089,8 +1089,7 @@ void recieveHIRE(RPCParameters *rpcParameters) send_hire_struct* sHireMerc = (send_hire_struct*)rpcParameters->input; SOLDIERTYPE *pSoldier; - UINT8 iNewIndex; - UINT8 ubCount=0; + UINT16 iNewIndex; SOLDIERCREATE_STRUCT MercCreateStruct; BOOLEAN fReturn = FALSE; @@ -1283,7 +1282,7 @@ UINT8 numenemyLAN( UINT8 ubSectorX, UINT8 ubSectorY ) return ubNumEnemies; } -void send_AI( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 *pubID ) +void send_AI( SOLDIERCREATE_STRUCT *pCreateStruct, UINT16 * pubID ) { AI_STRUCT send_inv; send_inv.standard_data = *pCreateStruct; @@ -1298,7 +1297,7 @@ void send_AI( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 *pubID ) void recieveAI (RPCParameters *rpcParameters) { - UINT8 iNewIndex; + UINT16 iNewIndex; SOLDIERTYPE *pSoldier; AI_STRUCT* send_inv = (AI_STRUCT*)rpcParameters->input; @@ -1921,7 +1920,7 @@ void send_interrupt (SOLDIERTYPE *pSoldier) INT.ubID = pSoldier->ubID; INT.bTeam = pSoldier->bTeam; - memcpy(INT.gubOutOfTurnOrder, gubOutOfTurnOrder, sizeof(UINT8) * MAXMERCS); + memcpy(INT.gubOutOfTurnOrder, gubOutOfTurnOrder, sizeof(UINT16) * MAXMERCS); INT.gubOutOfTurnPersons = gubOutOfTurnPersons; INT.Interrupted=gusSelectedSoldier+ubID_prefix; @@ -1977,7 +1976,7 @@ void send_interrupt (SOLDIERTYPE *pSoldier) INT->gubOutOfTurnOrder[i]=INT->gubOutOfTurnOrder[i]-ubID_prefix; } } - memcpy(gubOutOfTurnOrder,INT->gubOutOfTurnOrder, sizeof(UINT8) * MAXMERCS); + memcpy(gubOutOfTurnOrder,INT->gubOutOfTurnOrder, sizeof(UINT16) * MAXMERCS); gubOutOfTurnPersons = INT->gubOutOfTurnPersons; if(INT->bTeam==netbTeam)//for us @@ -2025,7 +2024,7 @@ void send_interrupt (SOLDIERTYPE *pSoldier) INT->gubOutOfTurnOrder[i]=INT->gubOutOfTurnOrder[i]-ubID_prefix; } } - memcpy(gubOutOfTurnOrder,INT->gubOutOfTurnOrder, sizeof(UINT8) * MAXMERCS); + memcpy(gubOutOfTurnOrder,INT->gubOutOfTurnOrder, sizeof(UINT16) * MAXMERCS); gubOutOfTurnPersons = INT->gubOutOfTurnPersons; AddTopMessage( PLAYER_INTERRUPT_MESSAGE, TeamTurnString[ INT->bTeam ] ); @@ -2141,7 +2140,7 @@ void end_interrupt ( BOOLEAN fMarkInterruptOccurred ) INT_STRUCT INT; INT.ubID = pSoldier->ubID; INT.bTeam = pSoldier->bTeam; - memcpy(INT.gubOutOfTurnOrder, gubOutOfTurnOrder, sizeof(UINT8) * MAXMERCS); + memcpy(INT.gubOutOfTurnOrder, gubOutOfTurnOrder, sizeof(UINT16) * MAXMERCS); INT.gubOutOfTurnPersons = gubOutOfTurnPersons; INT.fMarkInterruptOccurred=fMarkInterruptOccurred; if(is_server)Sawarded=false; @@ -2182,7 +2181,7 @@ void resume_turn(RPCParameters *rpcParameters) } } - memcpy(gubOutOfTurnOrder,INT->gubOutOfTurnOrder, sizeof(UINT8) * MAXMERCS); + memcpy(gubOutOfTurnOrder,INT->gubOutOfTurnOrder, sizeof(UINT16) * MAXMERCS); gubOutOfTurnPersons = INT->gubOutOfTurnPersons; EndInterrupt( INT->fMarkInterruptOccurred ); } @@ -2928,7 +2927,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, UINT8 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) { ubOwner = MPEncodeSoldierID(ubOwner); // translate our soldier to the "network" version @@ -2993,7 +2992,7 @@ void recieveGRENADE (RPCParameters *rpcParameters) CreateItem( gren->usItem, 99, newObj ); OBJECTTYPE::CopyToOrCreateAt(&pThrower->pTempObject, newObj); // this will create a grenade and launch it - INT32 i = CreatePhysicalObject( pThrower->pTempObject , gren->dLifeSpan , gren->dX , gren->dY , gren->dZ , gren->dForceX , gren->dForceY , gren->dForceZ , pThrower->ubID , gren->ubActionCode , gren->uiActionData, false); + INT32 i = CreatePhysicalObject( pThrower->pTempObject, gren->dLifeSpan, gren->dX, gren->dY, gren->dZ, gren->dForceX, gren->dForceY, gren->dForceZ, pThrower->ubID, gren->ubActionCode, gren->uiActionData, false); // save extra state info so we can check and feed it result later ObjectSlots[ i ].mpRealObjectID = gren->RealObjectID; ObjectSlots[ i ].mpTeam = pThrower->bTeam; @@ -3136,7 +3135,7 @@ void recieveGRENADERESULT (RPCParameters *rpcParameters) } } -void send_plant_explosive (UINT8 ubID,UINT16 usItem,UINT8 ubItemStatus,UINT16 usFlags, UINT32 sGridNo,UINT8 ubLevel, UINT32 uiWorldItemIndex) +void send_plant_explosive (UINT16 ubID,UINT16 usItem,UINT8 ubItemStatus,UINT16 usFlags, UINT32 sGridNo,UINT8 ubLevel, UINT32 uiWorldItemIndex) { explosive_obj exp; @@ -3184,7 +3183,7 @@ void recievePLANTEXPLOSIVE (RPCParameters *rpcParameters) OBJECTTYPE* newObj = new OBJECTTYPE(); CreateItem( exp->usItem, exp->ubItemStatus, newObj ); INT32 iNewItemIndex; - OBJECTTYPE* pObj = AddItemToPoolAndGetIndex( exp->sGridNo, newObj, VISIBLE, exp->ubLevel, exp->usFlags,0, exp->ubID ,&iNewItemIndex); + OBJECTTYPE* pObj = AddItemToPoolAndGetIndex( exp->sGridNo, newObj, VISIBLE, exp->ubLevel, exp->usFlags,0, exp->ubID,&iNewItemIndex); // need to save Item Type metadata agaist the world item (*pObj)[0]->data.misc.ubBombOwner = exp->ubID + 2; // this is a hack the designers put into the game, storing the side as well (which isnt relevant in MP, but still have to do it) (*pObj)[0]->data.misc.usBombItem = exp->usItem; @@ -3237,7 +3236,7 @@ void recievePLANTEXPLOSIVE (RPCParameters *rpcParameters) } } -void send_detonate_explosive (UINT32 uiWorldIndex, UINT8 ubID) +void send_detonate_explosive (UINT32 uiWorldIndex, UINT16 ubID) { ubID = MPEncodeSoldierID(ubID); @@ -3351,7 +3350,7 @@ void recieveDETONATEEXPLOSIVE (RPCParameters *rpcParameters) } } -void send_disarm_explosive(UINT32 sGridNo, UINT32 uiWorldItem, UINT8 ubID) +void send_disarm_explosive(UINT32 sGridNo, UINT32 uiWorldItem, UINT16 ubID) { ubID = MPEncodeSoldierID(ubID); @@ -3474,7 +3473,7 @@ void recieveDISARMEXPLOSIVE (RPCParameters *rpcParameters) } } -void send_spreadeffect ( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT8 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID ) +void send_spreadeffect ( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT16 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID ) { spreadeffect_struct sef; @@ -3527,7 +3526,7 @@ void recieveSPREADEFFECT (RPCParameters *rpcParameters) if ( gSmokeEffectData[ uiCount ].fAllocated == TRUE && gSmokeEffectData[ uiCount ].iMPTeamIndex == pSoldier->bTeam && gSmokeEffectData[ uiCount ].iMPSmokeEffectID == sef->iSmokeEffectID) { bFound = true; - SpreadEffect( sef->sGridNo , sef->ubRadius , sef->usItem , sef->ubOwner , sef->fSubsequent , sef->bLevel , uiCount , TRUE); + SpreadEffect( sef->sGridNo, sef->ubRadius, sef->usItem, sef->ubOwner, sef->fSubsequent, sef->bLevel, uiCount, TRUE); break; } } @@ -3544,7 +3543,7 @@ void recieveSPREADEFFECT (RPCParameters *rpcParameters) } else { - SpreadEffect( sef->sGridNo , sef->ubRadius , sef->usItem , sef->ubOwner , sef->fSubsequent , sef->bLevel , sef->iSmokeEffectID , TRUE); + SpreadEffect( sef->sGridNo, sef->ubRadius, sef->usItem, sef->ubOwner, sef->fSubsequent, sef->bLevel, sef->iSmokeEffectID, TRUE); } } } @@ -3559,7 +3558,7 @@ void recieveSPREADEFFECT (RPCParameters *rpcParameters) } } -void send_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner, INT32 iSmokeEffectID) +void send_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT16 ubOwner, INT32 iSmokeEffectID) { // i'm reusing this struct, the parameters are essentially the same spreadeffect_struct sef; @@ -3602,7 +3601,7 @@ void recieveNEWSMOKEEFFECT (RPCParameters *rpcParameters) guiPreRandomIndex = sef->uiPreRandomIndex; // start new smoke effect - INT32 iNewSmokeIndex = NewSmokeEffect( sef->sGridNo , sef->usItem , sef->bLevel , sef->ubOwner , TRUE ); + INT32 iNewSmokeIndex = NewSmokeEffect( sef->sGridNo, sef->usItem, sef->bLevel, sef->ubOwner, TRUE ); // attach remote id to local smoke effect gSmokeEffectData[iNewSmokeIndex].iMPTeamIndex = pSoldier->bTeam; @@ -3620,7 +3619,7 @@ void recieveNEWSMOKEEFFECT (RPCParameters *rpcParameters) } } -void send_gasdamage( SOLDIERTYPE * pSoldier, UINT16 usExplosiveClassID, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, UINT8 ubOwner ) +void send_gasdamage( SOLDIERTYPE * pSoldier, UINT16 usExplosiveClassID, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, UINT16 ubOwner ) { explosiondamage_struct exp; exp.ubDamageFunc = 1; @@ -3642,7 +3641,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( UINT8 ubPerson, UINT8 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 ) { explosiondamage_struct exp; exp.ubDamageFunc = 2; @@ -3699,7 +3698,7 @@ void recieveEXPLOSIONDAMAGE (RPCParameters *rpcParameters) } else if (exp->ubDamageFunc == 2) { - DamageSoldierFromBlast( exp->ubSoldierID , exp->ubAttackerID , exp->sBombGridNo , exp->sWoundAmt , exp->sBreathAmt , exp->uiDist , exp->usItem , exp->sSubsequent , TRUE); + DamageSoldierFromBlast( exp->ubSoldierID, exp->ubAttackerID, exp->sBombGridNo, exp->sWoundAmt, exp->sBreathAmt, exp->uiDist, exp->usItem, exp->sSubsequent, TRUE); } } } @@ -4206,7 +4205,7 @@ BOOLEAN check_status (void)// any 'enemies' and clients left to fight ?? void UpdateSoldierToNetwork ( SOLDIERTYPE *pSoldier ) { //this send stats to other clients at intervals - UINT8 id = pSoldier->ubID; + UINT16 id = pSoldier->ubID; UINT32 time = GetJA2Clock(); if(id < 20 || (is_server && id <120)) @@ -4519,7 +4518,7 @@ void recieveDISCONNECT(RPCParameters* rpcParameters) // kill the dead clients mercs out of the game UINT8 iNetbTeam = (cl_num)+5; - UINT8 iubID_prefix = gTacticalStatus.Team[ iNetbTeam ].bFirstID;//over here now + UINT16 iubID_prefix = gTacticalStatus.Team[ iNetbTeam ].bFirstID;//over here now // kill any alive soldiers for the disconnected team SOLDIERTYPE *pTeamSoldier; diff --git a/Multiplayer/connect.h b/Multiplayer/connect.h index d1d94f10..5984c5fa 100644 --- a/Multiplayer/connect.h +++ b/Multiplayer/connect.h @@ -36,7 +36,7 @@ extern UINT8 cGameType; extern bool allowlaptop; extern UINT8 netbTeam; -extern UINT8 ubID_prefix; +extern UINT16 ubID_prefix; extern FLOAT cDamageMultiplier; //OJW - 20081218 @@ -97,33 +97,33 @@ void send_fire( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ); void send_hit( EV_S_WEAPONHIT *SWeaponHit ); void send_bullet( BULLET * pBullet, UINT16 usHandItem); void send_hire( UINT8 iNewIndex, UINT8 ubCurrentSoldier, INT16 iTotalContractLength, BOOLEAN fCopyProfileItemsOver); -void send_dismiss( UINT8 ubCurrentSoldier); +void send_dismiss( UINT16 ubCurrentSoldierID); void send_gui_pos(SOLDIERTYPE *pSoldier, FLOAT dNewXPos, FLOAT dNewYPos); void send_gui_dir(SOLDIERTYPE *pSoldier, UINT16 usNewDirection); void send_EndTurn( UINT8 ubNextTeam ); -void send_AI( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 *pubID ); +void send_AI( SOLDIERCREATE_STRUCT *pCreateStruct, UINT16 * pubID ); 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, UINT8 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_plant_explosive (UINT8 ubID,UINT16 usItem,UINT8 ubItemStatus,UINT16 usFlags, UINT32 sGridNo,UINT8 ubLevel, UINT32 uiWorldIndex); -void send_detonate_explosive (UINT32 uiWorldIndex, UINT8 ubID); -void send_spreadeffect ( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT8 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID ); -void send_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner, INT32 iSmokeEffectID); -void send_gasdamage( SOLDIERTYPE * pSoldier, UINT16 usExplosiveClassID , INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, UINT8 ubOwner ); -void send_explosivedamage( UINT8 ubPerson, UINT8 ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent ); -void send_disarm_explosive(UINT32 sGridNo, UINT32 uiWorldIndex, UINT8 ubID); +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_gasdamage( SOLDIERTYPE * pSoldier, UINT16 usExplosiveClassID, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, UINT16 ubOwner ); +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 OpenChatMsgBox(void); -INT8 FireBullet( UINT8 ubFirer, BULLET * pBullet, BOOLEAN fFake ); +INT8 FireBullet( UINT16 ubFirer, BULLET * pBullet, BOOLEAN fFake ); void reapplySETTINGS(); @@ -211,7 +211,7 @@ extern BOOLEAN fClientReceivedAllFiles; // sick of confusing myself :) // this one should be called before passing an ID off the client -inline UINT8 MPEncodeSoldierID( UINT8 ubID ) +inline UINT16 MPEncodeSoldierID( UINT16 ubID ) { if ( ubID < 20 ) return ubID + ubID_prefix; // soldier is ours @@ -220,7 +220,7 @@ inline UINT8 MPEncodeSoldierID( UINT8 ubID ) } // this one can be called anywhere, even if the ID was not "encoded" -inline UINT8 MPDecodeSoldierID( UINT8 ubID ) +inline UINT16 MPDecodeSoldierID( UINT16 ubID ) { if ( ubID >= ubID_prefix && ubID < (ubID_prefix + 7) ) return ubID - ubID_prefix; // soldier is ours @@ -233,7 +233,7 @@ inline bool IsOurSoldier (SOLDIERTYPE* pSoldier) return pSoldier->bTeam == netbTeam || pSoldier->bTeam == 0; } -inline bool IsOurSoldier (UINT8 ubID) +inline bool IsOurSoldier (UINT16 ubID) { return (ubID >= ubID_prefix && ubID < (ubID_prefix + 7)) || ubID < 20; } diff --git a/Multiplayer/fresh_header.h b/Multiplayer/fresh_header.h index 58afdf26..46f90ec4 100644 --- a/Multiplayer/fresh_header.h +++ b/Multiplayer/fresh_header.h @@ -62,7 +62,7 @@ void startCombat(UINT8 ubStartingTeam); void intAI (SOLDIERTYPE *pSoldier ); void teamwiped (void); BOOLEAN check_status (void); -extern UINT8 NumEnemyInSector( ); -extern INT8 NumActiveAndConsciousTeamMembers( UINT8 ubTeam ); +extern UINT16 NumEnemyInSector( ); +extern UINT16 NumActiveAndConsciousTeamMembers( UINT8 ubTeam ); void send_heal (SOLDIERTYPE *pSoldier ); void requestAIint(SOLDIERTYPE *pSoldier ); \ No newline at end of file diff --git a/SaveLoadGame.cpp b/SaveLoadGame.cpp index 6811ac80..dabf4588 100644 --- a/SaveLoadGame.cpp +++ b/SaveLoadGame.cpp @@ -322,7 +322,7 @@ typedef struct INT16 sCurInterfacePanel; - UINT8 ubSMCurrentMercID; + UINT16 ubSMCurrentMercID; BOOLEAN fFirstTimeInMapScreen; @@ -559,8 +559,8 @@ BOOLEAN SetMercsInsertionGridNo( ); BOOLEAN LoadOppListInfoFromSavedGame( HWFILE hFile ); BOOLEAN SaveOppListInfoToSavedGame( HWFILE hFile ); -BOOLEAN LoadMercPathToSoldierStruct( HWFILE hFilem, UINT8 ubID ); -BOOLEAN SaveMercPathFromSoldierStruct( HWFILE hFilem, UINT8 ubID ); +BOOLEAN LoadMercPathToSoldierStruct( HWFILE hFilem, UINT16 ubID ); +BOOLEAN SaveMercPathFromSoldierStruct( HWFILE hFilem, UINT16 ubID ); BOOLEAN LoadGeneralInfo( HWFILE hFile ); BOOLEAN SaveGeneralInfo( HWFILE hFile ); @@ -1082,7 +1082,7 @@ BOOLEAN ITEM_CURSOR_SAVE_INFO::Load(HWFILE hFile) if ( guiCurrentSaveGameVersion >= NIV_SAVEGAME_DATATYPE_CHANGE ) { //3 bytes of info, screw being neat - if ( !FileRead( hFile, this, 3, &uiNumBytesRead ) ) + if ( !FileRead( hFile, this, SIZEOF_ITEM_CURSOR_SAVE_INFO_POD, &uiNumBytesRead ) ) { return FALSE; } @@ -1111,7 +1111,7 @@ BOOLEAN ITEM_CURSOR_SAVE_INFO::Save(HWFILE hFile) { UINT32 uiNumBytesWritten; //3 bytes of info, screw being neat - if ( !FileWrite( hFile, this, 3, &uiNumBytesWritten ) ) + if ( !FileWrite( hFile, this, SIZEOF_ITEM_CURSOR_SAVE_INFO_POD, &uiNumBytesWritten ) ) { return FALSE; } @@ -1859,8 +1859,20 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) //the soldier type info has changed at version 102 //CHRISL: To accomodate future changes to this structure, we'll load each value field by field numBytesRead = 0; - FileRead( hFile, this, (offsetof(SOLDIERTYPE, ubBodyType)+sizeof(ubBodyType)), &uiNumBytesRead ); - numBytesRead += uiNumBytesRead; + if (guiCurrentSaveGameVersion >= INCREASED_TEAMSIZES) + { + numBytesRead = ReadFieldByField(hFile, &this->ubID, sizeof(ubID), sizeof(UINT16), numBytesRead); + } + else + { + numBytesRead = ReadFieldByField(hFile, &this->ubID, sizeof(ubID), sizeof(UINT8), numBytesRead); + // Read and discard bReserved1 so numBytesRead matches the struct size later + UINT8 bReserved1 = 0; + numBytesRead = ReadFieldByField(hFile, &bReserved1, sizeof(bReserved1), sizeof(UINT8), numBytesRead); + } + numBytesRead = ReadFieldByField(hFile, &this->name, sizeof(name), sizeof(CHAR16), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubBodyType, sizeof(ubBodyType), sizeof(UINT8), numBytesRead); + if(guiCurrentSaveGameVersion >= AP100_SAVEGAME_DATATYPE_CHANGE) { //CHRISL: It was changed at version 104 to allow for 16bit action points for the 100AP system numBytesRead = ReadFieldByField(hFile, &this->bActionPoints, sizeof(bActionPoints), sizeof(INT16), numBytesRead); @@ -1888,7 +1900,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->ubWaitActionToDo, sizeof(ubWaitActionToDo), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubInsertionDirection, sizeof(ubInsertionDirection), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bGunType, sizeof(bGunType), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubOppNum, sizeof(ubOppNum), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubOppNum, sizeof(ubOppNum), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bLastRenderVisibleValue, sizeof(bLastRenderVisibleValue), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubAttackingHand, sizeof(ubAttackingHand), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->sWeightCarriedAtTurnStart, sizeof(sWeightCarriedAtTurnStart), sizeof(INT16), numBytesRead); @@ -1932,8 +1944,8 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->usAnimState, sizeof(usAnimState), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->uiAIDelay, sizeof(uiAIDelay), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->sReloadDelay, sizeof(sReloadDelay), sizeof(INT16), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubAttackerID, sizeof(ubAttackerID), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubPreviousAttackerID, sizeof(ubPreviousAttackerID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubAttackerID, sizeof(ubAttackerID), sizeof(UINT16), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubPreviousAttackerID, sizeof(ubPreviousAttackerID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->sInsertionGridNo, sizeof(sInsertionGridNo), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->AnimCache, sizeof(AnimCache), 1, numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bSide, sizeof(bSide), sizeof(UINT8), numBytesRead); @@ -2013,7 +2025,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->pCurrentShade, sizeof(pCurrentShade), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubFadeLevel, sizeof(ubFadeLevel), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubServiceCount, sizeof(ubServiceCount), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubServicePartner, sizeof(ubServicePartner), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubServicePartner, sizeof(ubServicePartner), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->pThrowParams, sizeof(pThrowParams), 4, numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bReverse, sizeof(bReverse), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->pLevelNode, sizeof(pLevelNode), 4, numBytesRead); @@ -2111,7 +2123,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->iTotalLengthOfInsuranceContract, sizeof(iTotalLengthOfInsuranceContract), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubSoldierClass, sizeof(ubSoldierClass), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubAPsLostToSuppression, sizeof(ubAPsLostToSuppression), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubSuppressorID, sizeof(ubSuppressorID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubSuppressorID, sizeof(ubSuppressorID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubDesiredSquadAssignment, sizeof(ubDesiredSquadAssignment), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubNumTraversalsAllowedToMerge, sizeof(ubNumTraversalsAllowedToMerge), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->usPendingAnimation2, sizeof(usPendingAnimation2), sizeof(UINT16), numBytesRead); @@ -2123,7 +2135,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->bBlockedByAnotherMercDirection, sizeof(bBlockedByAnotherMercDirection), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->usAttackingWeapon, sizeof(usAttackingWeapon), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bWeaponMode, sizeof(bWeaponMode), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubTargetID, sizeof(ubTargetID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubTargetID, sizeof(ubTargetID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bAIScheduleProgress, sizeof(bAIScheduleProgress), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->sOffWorldGridNo, sizeof(sOffWorldGridNo), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->pAniTile, sizeof(pAniTile), 1, numBytesRead); @@ -2144,8 +2156,8 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->bOldBattleSnd, sizeof(bOldBattleSnd), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->iBurstSoundID, sizeof(iBurstSoundID), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bSlotItemTakenFrom, sizeof(bSlotItemTakenFrom), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubAutoBandagingMedic, sizeof(ubAutoBandagingMedic), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubRobotRemoteHolderID, sizeof(ubRobotRemoteHolderID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubAutoBandagingMedic, sizeof(ubAutoBandagingMedic), sizeof(UINT16), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubRobotRemoteHolderID, sizeof(ubRobotRemoteHolderID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->uiTimeOfLastContractUpdate, sizeof(uiTimeOfLastContractUpdate), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bTypeOfLastContract, sizeof(bTypeOfLastContract), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bTurnsCollapsed, sizeof(bTurnsCollapsed), sizeof(INT8), numBytesRead); @@ -2164,7 +2176,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->bRegenBoostersUsedToday, sizeof(bRegenBoostersUsedToday), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bNumPelletsHitBy, sizeof(bNumPelletsHitBy), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->sSkillCheckGridNo, sizeof(sSkillCheckGridNo), sizeof(INT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubLastEnemyCycledID, sizeof(ubLastEnemyCycledID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubLastEnemyCycledID, sizeof(ubLastEnemyCycledID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubPrevSectorID, sizeof(ubPrevSectorID), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubNumTilesMovesSinceLastForget, sizeof(ubNumTilesMovesSinceLastForget), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bTurningIncrement, sizeof(bTurningIncrement), sizeof(INT8), numBytesRead); @@ -2172,7 +2184,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->usValueGoneUp, sizeof(usValueGoneUp), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubNumLocateCycles, sizeof(ubNumLocateCycles), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubDelayedMovementFlags, sizeof(ubDelayedMovementFlags), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubCTGTTargetID, sizeof(ubCTGTTargetID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubCTGTTargetID, sizeof(ubCTGTTargetID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->uiMercChecksum, sizeof(uiMercChecksum), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bCurrentCivQuote, sizeof(bCurrentCivQuote), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bCurrentCivQuoteDelta, sizeof(bCurrentCivQuoteDelta), sizeof(INT8), numBytesRead); @@ -2203,7 +2215,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->ubLastDamageReason, sizeof(ubLastDamageReason), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->sLastTwoLocations, sizeof(sLastTwoLocations), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->uiTimeSinceLastBleedGrunt, sizeof(uiTimeSinceLastBleedGrunt), sizeof(INT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubNextToPreviousAttackerID, sizeof(ubNextToPreviousAttackerID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->ubNextToPreviousAttackerID, sizeof(ubNextToPreviousAttackerID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->bDoAutofire, sizeof(bDoAutofire), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->numFlanks, sizeof(numFlanks), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->lastFlankSpot, sizeof(lastFlankSpot), sizeof(INT32), numBytesRead); @@ -2230,9 +2242,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->bScopeMode, sizeof(bScopeMode), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->ubMilitiaAssists, sizeof(ubMilitiaAssists), sizeof(UINT8), numBytesRead ); numBytesRead = ReadFieldByField(hFile, &this->sNonNPCTraderID, sizeof(sNonNPCTraderID), sizeof(INT8), numBytesRead ); - //numBytesRead = ReadFieldByField(hFile, &this->bUnusedINT8_3, sizeof(bUnusedINT8_3), sizeof(INT8), numBytesRead ); - numBytesRead = ReadFieldByField(hFile, &this->usDragPersonID, sizeof(usDragPersonID), sizeof(UINT8), numBytesRead ); - //numBytesRead = ReadFieldByField(hFile, &this->bUnusedINT16_4, sizeof(bUnusedINT16_4), sizeof(INT16), numBytesRead ); + numBytesRead = ReadFieldByField(hFile, &this->usDragPersonID, sizeof(usDragPersonID), sizeof(UINT16), numBytesRead ); numBytesRead = ReadFieldByField(hFile, &this->sDragCorpseID, sizeof(sDragCorpseID), sizeof(INT16), numBytesRead ); if ( guiCurrentSaveGameVersion < DRAGPERSONS ) @@ -2351,10 +2361,10 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) if ( guiCurrentSaveGameVersion >= DISEASE_SYSTEM ) { - numBytesRead = ReadFieldByField( hFile, &this->sDiseasePoints, sizeof(sDiseasePoints), sizeof(INT32), numBytesRead ); + numBytesRead = ReadFieldByField( hFile, &this->sDiseasePoints, sizeof(sDiseasePoints), sizeof(INT16), numBytesRead ); numBytesRead = ReadFieldByField( hFile, &this->sDiseaseFlag, sizeof(sDiseaseFlag), sizeof(UINT8), numBytesRead ); numBytesRead = ReadFieldByField( hFile, &this->ubFiller, sizeof( ubFiller ), sizeof( UINT8 ), numBytesRead ); - numBytesRead = ReadFieldByField( hFile, &this->ubHoursRemainingOnMiniEvent, sizeof( ubHoursRemainingOnMiniEvent), sizeof( UINT8 ), numBytesRead ); + numBytesRead = ReadFieldByField( hFile, &this->ubHoursRemainingOnMiniEvent, sizeof( ubHoursRemainingOnMiniEvent), sizeof( UINT16 ), numBytesRead ); numBytesRead = ReadFieldByField( hFile, &this->usGLDelayMode, sizeof( usGLDelayMode ), sizeof( UINT8 ), numBytesRead ); numBytesRead = ReadFieldByField( hFile, &this->usBarrelMode, sizeof( usBarrelMode ), sizeof( UINT8 ), numBytesRead ); numBytesRead = ReadFieldByField( hFile, &this->usBarrelCounter, sizeof( usBarrelCounter ), sizeof( UINT8 ), numBytesRead ); @@ -2486,140 +2496,6 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) buffer++; } - /*if ( guiCurrentSaveGameVersion >= FOOD_CHANGES ) - { - numBytesRead = ReadFieldByField(hFile, &this->bFoodLevel, sizeof(bFoodLevel), sizeof(INT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->bDrinkLevel, sizeof(bDrinkLevel), sizeof(INT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->usStarveDamageHealth, sizeof(usStarveDamageHealth), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->usStarveDamageStrength, sizeof(usStarveDamageStrength), sizeof(UINT8), numBytesRead); - - if ( guiCurrentSaveGameVersion >= MULTITURN_ACTIONS ) - { - numBytesRead = ReadFieldByField(hFile, &this->bOverTurnAPS, sizeof(bOverTurnAPS), sizeof(INT16), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->sMTActionGridNo, sizeof(sMTActionGridNo), sizeof(INT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->usMultiTurnAction, sizeof(usMultiTurnAction), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->bAIIndex, sizeof(bAIIndex), sizeof(UINT16), numBytesRead); - - if ( guiCurrentSaveGameVersion >= SOLDIER_PROFILES ) - { - numBytesRead = ReadFieldByField(hFile, &this->usSoldierProfile, sizeof(usSoldierProfile), sizeof(UINT16), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->usItemMoveSectorID, sizeof(usItemMoveSectorID), sizeof(UINT8), numBytesRead); - - if ( guiCurrentSaveGameVersion >= SOLDIER_PROFILES ) - { - numBytesRead = ReadFieldByField(hFile, &this->usSkillCounter, sizeof(usSkillCounter), sizeof(UINT16), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->usSkillCooldown, sizeof(usSkillCooldown), sizeof(UINT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->usAISkillUse, sizeof(usAISkillUse), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->ubFiller, sizeof(ubFiller), sizeof(UINT8), numBytesRead); - } - else - { - for(UINT8 i = 0; i < SOLDIER_COUNTER_MAX; ++i) - this->usSkillCounter[i] = 0; - - for(UINT8 i = 0; i < SOLDIER_COOLDOWN_MAX; ++i) - this->usSkillCooldown[i] = 0; - - this->usAISkillUse = 0; - - // as we added new variables, fillersize was reduced, here we account for that. We have to also read the existing fillers that now do not exist anymore - const UINT8 tmp = sizeof(usSkillCounter) + sizeof(usSkillCooldown) + sizeof(usAISkillUse); - UINT8 blarg[tmp]; - numBytesRead = ReadFieldByField(hFile, &blarg, tmp, sizeof(UINT8), numBytesRead); - - numBytesRead = ReadFieldByField(hFile, &this->ubFiller, sizeof(ubFiller), sizeof(UINT8), numBytesRead); - } - } - else - { - this->usSoldierProfile = 0; - this->usItemMoveSectorID = 0; - - // as we added new variables, fillersize was reduced, here we account for that. We have to also read the existing fillers that now do not exist anymore - const UINT8 tmp = sizeof(usSoldierProfile) + sizeof(usItemMoveSectorID); - UINT8 blarg[tmp]; - numBytesRead = ReadFieldByField(hFile, &blarg, tmp, sizeof(UINT8), numBytesRead); - - numBytesRead = ReadFieldByField(hFile, &this->ubFiller, sizeof(ubFiller), sizeof(UINT8), numBytesRead); - } - } - else - { - this->bOverTurnAPS = 0; - this->sMTActionGridNo = NOWHERE; - this->usMultiTurnAction = 0; - this->bAIIndex = 0; - this->usSoldierProfile = 0; - this->usItemMoveSectorID = 0; - - // as we added new variables, fillersize was reduced, here we account for that. We have to also read the existing fillers that now do not exist anymore - // +1 for padding - const UINT8 tmp = sizeof(bOverTurnAPS) + sizeof(this->sMTActionGridNo) + sizeof(usMultiTurnAction) + sizeof(bAIIndex) + 1 + sizeof(usSoldierProfile) + sizeof(usItemMoveSectorID); - UINT8 blarg[tmp]; - numBytesRead = ReadFieldByField(hFile, &blarg, tmp, sizeof(UINT8), numBytesRead); - - numBytesRead = ReadFieldByField(hFile, &this->ubFiller, sizeof(ubFiller), sizeof(UINT8), numBytesRead); - } - } - else - { - //CHRISL: We have to make sure we add a buffer to account for the lack of ubInterruptCounter and that buffer needs to be a full DWORD in size - for(int i = 0; i < sizeof(bFoodLevel); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(bDrinkLevel); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(usStarveDamageHealth); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(usStarveDamageStrength); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(bOverTurnAPS); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(sMTActionGridNo); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(usMultiTurnAction); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(bAIIndex); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(usSoldierProfile); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(usItemMoveSectorID); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - - for(int i = 0; i < sizeof(ubFiller); ++i) - buffer++; - while((buffer%4) > 0) - buffer++; - }*/ - #ifdef JA2UB numBytesRead = ReadFieldByField(hFile, &this->fIgnoreGetupFromCollapseCheck, sizeof(fIgnoreGetupFromCollapseCheck), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->GetupFromJA25StartCounter, sizeof(GetupFromJA25StartCounter), sizeof(TIMECOUNTER), numBytesRead); @@ -2627,38 +2503,9 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->ubPercentDamageInflictedByTeam, sizeof(ubPercentDamageInflictedByTeam), sizeof(UINT8), numBytesRead); #endif numBytesRead += buffer; - if(numBytesRead != SIZEOF_SOLDIERTYPE_POD) + const UINT32 PODsize = SIZEOF_SOLDIERTYPE_POD; + if(numBytesRead != PODsize) return(FALSE); -/* //CHRISL: It was further changed at version 104 to allow for 16bit action points for the 100AP system - //first, load the POD - if ( guiCurrentSaveGameVersion >= AP100_SAVEGAME_DATATYPE_CHANGE ) - { - if ( !FileRead( hFile, this, SIZEOF_SOLDIERTYPE_POD, &uiNumBytesRead ) ) - { - return(FALSE); - } - } - else - { - numBytesRead = 0; - FileRead( hFile, this, (offsetof(SOLDIERTYPE, ubBodyType)+sizeof(ubBodyType)), &uiNumBytesRead ); - numBytesRead += uiNumBytesRead; - numBytesRead = ReadFieldByField(hFile, &this->bActionPoints, 1, 1, numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->bInitialActionPoints, 1, 1, numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->bOldLife, sizeof(bOldLife), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->bVisible, sizeof(bVisible), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->bActive, sizeof(bActive), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->bTeam, sizeof(bTeam), sizeof(INT8), numBytesRead); - //CHRISL: in the old structure, there are 3 padding bytes at this point in the file. We need to account for - // them before continuing. We also want to include them in our numBytesRead since they cover the changes - // caused by increasing two elements by 1byte each. This includes shifting one byte of padding - FileRead( hFile, padding, 3, &uiNumBytesRead ); - numBytesRead += uiNumBytesRead; - FileRead( hFile, &this->pTempObject, (SIZEOF_SOLDIERTYPE_POD-numBytesRead), &uiNumBytesRead ); - numBytesRead += uiNumBytesRead; - if(numBytesRead != SIZEOF_SOLDIERTYPE_POD) - return(FALSE); - }*/ //load the OO inventory if ( !this->inv.Load(hFile) ) @@ -2696,7 +2543,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->aiData.sNoiseGridno, sizeof(aiData.sNoiseGridno), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.ubNoiseVolume, sizeof(aiData.ubNoiseVolume), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.bLastAttackHit, sizeof(aiData.bLastAttackHit), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->aiData.ubXRayedBy, sizeof(aiData.ubXRayedBy), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->aiData.ubXRayedBy, sizeof(aiData.ubXRayedBy), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.dHeightAdjustment, sizeof(aiData.dHeightAdjustment), sizeof(FLOAT), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.bMorale, sizeof(aiData.bMorale), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.bTeamMoraleMod, sizeof(aiData.bTeamMoraleMod), sizeof(INT8), numBytesRead); @@ -2719,7 +2566,7 @@ BOOLEAN SOLDIERTYPE::Load(HWFILE hFile) numBytesRead = ReadFieldByField(hFile, &this->aiData.bMoved, sizeof(aiData.bMoved), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.bHunting, sizeof(aiData.bHunting), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.ubLastCall, sizeof(aiData.ubLastCall), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &this->aiData.ubCaller, sizeof(aiData.ubCaller), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &this->aiData.ubCaller, sizeof(aiData.ubCaller), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.sCallerGridNo, sizeof(aiData.sCallerGridNo), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.bCallPriority, sizeof(aiData.bCallPriority), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &this->aiData.bCallActedUpon, sizeof(aiData.bCallActedUpon), sizeof(INT8), numBytesRead); @@ -2951,9 +2798,14 @@ BOOLEAN WORLDITEM::Load(INT8** hBuffer, float dMajorMapVersion, UINT8 ubMinorMap LOADDATA(&oldWorldItem, *hBuffer, _OLD_SIZEOF_WORLDITEM_POD); *this = oldWorldItem; } + else if (dMajorMapVersion < 8.0) + { + LOADDATA(this, *hBuffer, _SIZEOF_WORLDITEM_INT8_ID_POD); + } else + { LOADDATA(this, *hBuffer, SIZEOF_WORLDITEM_POD); - + } // Load the OO OBJECTTYPE this->object.Load(hBuffer, dMajorMapVersion, ubMinorMapVersion); } @@ -6675,7 +6527,7 @@ BOOLEAN LoadSavedGame( int ubSavedGameID ) if( gTacticalStatus.ubAttackBusyCount > 1 ) { //Lock the ui - SetUIBusy( (UINT8)gusSelectedSoldier ); + SetUIBusy( gusSelectedSoldier ); } // OJW - 20090403 - Fix Tactical Interface is still locked after quick-load else @@ -6920,7 +6772,7 @@ BOOLEAN LoadSavedGame( int ubSavedGameID ) // player team character fixes SOLDIERTYPE *pTeamSoldier; - for (INT8 bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++) + for (UINT16 bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++) { pTeamSoldier=MercPtrs[bLoop]; @@ -7130,7 +6982,7 @@ BOOLEAN LoadSoldierStructure( HWFILE hFile ) { UINT16 cnt; UINT32 uiNumBytesRead=0; - UINT8 ubId; + UINT16 ubId; UINT8 ubOne = 1; UINT8 ubActive = 1; UINT32 uiPercentage; @@ -7868,8 +7720,8 @@ BOOLEAN LoadTacticalStatusFromSavedGame( HWFILE hFile ) numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fPanicFlags, sizeof(gTacticalStatus.fPanicFlags), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.sPanicTriggerGridNoUnused, sizeof(gTacticalStatus.sPanicTriggerGridNoUnused), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.sHandGrid, sizeof(gTacticalStatus.sHandGrid), sizeof(INT16), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubSpottersCalledForBy, sizeof(gTacticalStatus.ubSpottersCalledForBy), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubTheChosenOne, sizeof(gTacticalStatus.ubTheChosenOne), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubSpottersCalledForBy, sizeof(gTacticalStatus.ubSpottersCalledForBy), sizeof(UINT16), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubTheChosenOne, sizeof(gTacticalStatus.ubTheChosenOne), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.uiTimeOfLastInput, sizeof(gTacticalStatus.uiTimeOfLastInput), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.uiTimeSinceDemoOn, sizeof(gTacticalStatus.uiTimeSinceDemoOn), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.uiCountdownToRestart, sizeof(gTacticalStatus.uiCountdownToRestart), sizeof(UINT32), numBytesRead); @@ -7888,13 +7740,13 @@ BOOLEAN LoadTacticalStatusFromSavedGame( HWFILE hFile ) numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.bRealtimeSpeed, sizeof(gTacticalStatus.bRealtimeSpeed), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemyIntention, sizeof(gTacticalStatus.ubEnemyIntention), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemyIntendedRetreatDirection, sizeof(gTacticalStatus.ubEnemyIntendedRetreatDirection), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID, sizeof(gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID), sizeof(UINT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemySightingOnTheirTurnPlayerID, sizeof(gTacticalStatus.ubEnemySightingOnTheirTurnPlayerID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID, sizeof(gTacticalStatus.ubEnemySightingOnTheirTurnEnemyID), sizeof(UINT16), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemySightingOnTheirTurnPlayerID, sizeof(gTacticalStatus.ubEnemySightingOnTheirTurnPlayerID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fEnemySightingOnTheirTurn, sizeof(gTacticalStatus.fEnemySightingOnTheirTurn), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fAutoBandageMode, sizeof(gTacticalStatus.fAutoBandageMode), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubAttackBusyCount, sizeof(gTacticalStatus.ubAttackBusyCount), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.bNumEnemiesFoughtInBattleUnused, sizeof(gTacticalStatus.bNumEnemiesFoughtInBattleUnused), sizeof(INT8), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEngagedInConvFromActionMercID, sizeof(gTacticalStatus.ubEngagedInConvFromActionMercID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEngagedInConvFromActionMercID, sizeof(gTacticalStatus.ubEngagedInConvFromActionMercID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.usTactialTurnLimitCounter, sizeof(gTacticalStatus.usTactialTurnLimitCounter), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fInTopMessage, sizeof(gTacticalStatus.fInTopMessage), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubTopMessageType, sizeof(gTacticalStatus.ubTopMessageType), sizeof(UINT8), numBytesRead); @@ -7912,7 +7764,7 @@ BOOLEAN LoadTacticalStatusFromSavedGame( HWFILE hFile ) numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fSaidCreatureFlavourQuote, sizeof(gTacticalStatus.fSaidCreatureFlavourQuote), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fHaveSeenCreature, sizeof(gTacticalStatus.fHaveSeenCreature), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fKilledEnemyOnAttack, sizeof(gTacticalStatus.fKilledEnemyOnAttack), sizeof(BOOLEAN), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemyKilledOnAttack, sizeof(gTacticalStatus.ubEnemyKilledOnAttack), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemyKilledOnAttack, sizeof(gTacticalStatus.ubEnemyKilledOnAttack), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.bEnemyKilledOnAttackLevel, sizeof(gTacticalStatus.bEnemyKilledOnAttackLevel), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemyKilledOnAttackLocation, sizeof(gTacticalStatus.ubEnemyKilledOnAttackLocation), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fItemsSeenOnAttack, sizeof(gTacticalStatus.fItemsSeenOnAttack), sizeof(BOOLEAN), numBytesRead); @@ -7926,7 +7778,7 @@ BOOLEAN LoadTacticalStatusFromSavedGame( HWFILE hFile ) numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fCantGetThrough, sizeof(gTacticalStatus.fCantGetThrough), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.sCantGetThroughGridNo, sizeof(gTacticalStatus.sCantGetThroughGridNo), sizeof(INT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.sCantGetThroughSoldierGridNo, sizeof(gTacticalStatus.sCantGetThroughSoldierGridNo), sizeof(INT32), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubCantGetThroughID, sizeof(gTacticalStatus.ubCantGetThroughID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubCantGetThroughID, sizeof(gTacticalStatus.ubCantGetThroughID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fDidGameJustStart, sizeof(gTacticalStatus.fDidGameJustStart), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fStatChangeCheatOn, sizeof(gTacticalStatus.fStatChangeCheatOn), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubLastRequesterTargetID, sizeof(gTacticalStatus.ubLastRequesterTargetID), sizeof(UINT8), numBytesRead); @@ -7940,7 +7792,6 @@ BOOLEAN LoadTacticalStatusFromSavedGame( HWFILE hFile ) numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fHasAGameBeenStarted, sizeof(gTacticalStatus.fHasAGameBeenStarted), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.bConsNumTurnsWeHaventSeenButEnemyDoes, sizeof(gTacticalStatus.bConsNumTurnsWeHaventSeenButEnemyDoes), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.fSomeoneHit, sizeof(gTacticalStatus.fSomeoneHit), sizeof(BOOLEAN), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubPaddingSmall, sizeof(gTacticalStatus.ubPaddingSmall), sizeof(UINT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.uiTimeSinceLastOpplistDecay, sizeof(gTacticalStatus.uiTimeSinceLastOpplistDecay), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.bMercArrivingQuoteBeingUsed, sizeof(gTacticalStatus.bMercArrivingQuoteBeingUsed), sizeof(INT8), numBytesRead); numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubEnemyKilledOnAttackKiller, sizeof(gTacticalStatus.ubEnemyKilledOnAttackKiller), sizeof(UINT8), numBytesRead); @@ -7958,7 +7809,7 @@ BOOLEAN LoadTacticalStatusFromSavedGame( HWFILE hFile ) numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.uiCreatureTenseQuoteLastUpdate, sizeof(gTacticalStatus.uiCreatureTenseQuoteLastUpdate), sizeof(UINT32), numBytesRead); if ( guiCurrentSaveGameVersion >= BUGFIX_NPC_DATA_FOR_BIG_MAPS ) { - numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubLastRequesterSurgeryTargetID, sizeof(gTacticalStatus.ubLastRequesterSurgeryTargetID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubLastRequesterSurgeryTargetID, sizeof(gTacticalStatus.ubLastRequesterSurgeryTargetID), sizeof(UINT16), numBytesRead); if ( guiCurrentSaveGameVersion >= IMPROVED_INTERRUPT_SYSTEM ) { numBytesRead = ReadFieldByField(hFile, &gTacticalStatus.ubInterruptPending, sizeof(gTacticalStatus.ubInterruptPending), sizeof(UINT8), numBytesRead); @@ -8404,7 +8255,7 @@ void CreateSavedGameFileNameFromNumber( UINT8 ubSaveGameID, STR pzNewFileName ) -BOOLEAN SaveMercPathFromSoldierStruct( HWFILE hFile, UINT8 ubID ) +BOOLEAN SaveMercPathFromSoldierStruct( HWFILE hFile, UINT16 ubID ) { UINT32 uiNumOfNodes=0; PathStPtr pTempPath = Menptr[ ubID ].pMercPath; @@ -8445,7 +8296,7 @@ BOOLEAN SaveMercPathFromSoldierStruct( HWFILE hFile, UINT8 ubID ) -BOOLEAN LoadMercPathToSoldierStruct( HWFILE hFile, UINT8 ubID ) +BOOLEAN LoadMercPathToSoldierStruct( HWFILE hFile, UINT16 ubID ) { UINT32 uiNumOfNodes=0; PathStPtr pTempPath = NULL; @@ -8728,7 +8579,7 @@ BOOLEAN SaveGeneralInfo( HWFILE hFile ) if( gpSMCurrentMerc ) sGeneralInfo.ubSMCurrentMercID = gpSMCurrentMerc->ubID; else - sGeneralInfo.ubSMCurrentMercID = 255; + sGeneralInfo.ubSMCurrentMercID = NOBODY; //Save the fact that it is the first time in mapscreen sGeneralInfo.fFirstTimeInMapScreen = fFirstTimeInMapScreen; @@ -8992,7 +8843,7 @@ BOOLEAN LoadGeneralInfo( HWFILE hFile ) numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.uiSeedNumber, sizeof(sGeneralInfo.uiSeedNumber), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.uiBaseJA2Clock, sizeof(sGeneralInfo.uiBaseJA2Clock), sizeof(UINT32), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.sCurInterfacePanel, sizeof(sGeneralInfo.sCurInterfacePanel), sizeof(INT16), numBytesRead); - numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.ubSMCurrentMercID, sizeof(sGeneralInfo.ubSMCurrentMercID), sizeof(UINT8), numBytesRead); + numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.ubSMCurrentMercID, sizeof(sGeneralInfo.ubSMCurrentMercID), sizeof(UINT16), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.fFirstTimeInMapScreen, sizeof(sGeneralInfo.fFirstTimeInMapScreen), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.fDisableDueToBattleRoster, sizeof(sGeneralInfo.fDisableDueToBattleRoster), sizeof(BOOLEAN), numBytesRead); numBytesRead = ReadFieldByField(hFile, &sGeneralInfo.fDisableMapInterfaceDueToBattle, sizeof(sGeneralInfo.fDisableMapInterfaceDueToBattle), sizeof(BOOLEAN), numBytesRead); @@ -9268,7 +9119,7 @@ BOOLEAN LoadGeneralInfo( HWFILE hFile ) // Restore the selected merc - if( sGeneralInfo.ubSMCurrentMercID == 255 ) + if( sGeneralInfo.ubSMCurrentMercID == NOBODY) gpSMCurrentMerc = NULL; else gpSMCurrentMerc = &Menptr[ sGeneralInfo.ubSMCurrentMercID ]; @@ -9729,10 +9580,10 @@ void GetBestPossibleSectorXYZValues( INT16 *psSectorX, INT16 *psSectorY, INT8 *p } else { - INT16 sSoldierCnt; - SOLDIERTYPE *pSoldier; - INT16 bLastTeamID; - BOOLEAN fFoundAMerc=FALSE; + UINT16 sSoldierCnt; + SOLDIERTYPE *pSoldier; + UINT16 bLastTeamID; + BOOLEAN fFoundAMerc=FALSE; // Set locator to first merc sSoldierCnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; diff --git a/SaveLoadGame.h b/SaveLoadGame.h index a1f9664a..b0fb5906 100644 --- a/SaveLoadGame.h +++ b/SaveLoadGame.h @@ -57,7 +57,7 @@ typedef struct INT16 sSectorX; INT16 sSectorY; INT8 bSectorZ; - UINT8 ubNumOfMercsOnPlayersTeam; + UINT16 ubNumOfMercsOnPlayersTeam; INT32 iCurrentBalance; UINT32 uiCurrentScreen; @@ -72,11 +72,10 @@ typedef struct UINT32 uiRandom; - UINT8 ubFiller[500]; // WANNE: Decrease this filler by 1, for each new UINT8 variable! + UINT8 ubFiller[494]; // WANNE: Decrease this filler by 1, for each new UINT8 variable! } SAVED_GAME_HEADER; - extern UINT32 guiScreenToGotoAfterLoadingSavedGame; extern UINT32 guiCurrentSaveGameVersion; diff --git a/Strategic/AI Viewer.cpp b/Strategic/AI Viewer.cpp index 03ca0d07..bfbf2db7 100644 --- a/Strategic/AI Viewer.cpp +++ b/Strategic/AI Viewer.cpp @@ -653,7 +653,7 @@ void RenderMovingGroupsAndMercs() void RenderInfoInSector() { UINT8 ubSectorX, ubSectorY; - UINT8 ubMercs=0, ubActive=0, ubUnconcious=0, ubCollapsed=0; + UINT16 ubMercs=0, ubActive=0, ubUnconcious=0, ubCollapsed=0; INT32 i, xp, yp; if( gfViewEnemies && !gbViewLevel ) diff --git a/Strategic/Assignments.cpp b/Strategic/Assignments.cpp index 0e6398d6..da5fb2bb 100644 --- a/Strategic/Assignments.cpp +++ b/Strategic/Assignments.cpp @@ -1225,7 +1225,7 @@ BOOLEAN IsAnythingAroundForSoldierToClean( SOLDIERTYPE * pSoldier ) } // now the other merc's stuff - for(UINT8 teamIndex = gTacticalStatus.Team[gbPlayerNum].bFirstID; teamIndex <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++teamIndex) + for(UINT16 teamIndex = gTacticalStatus.Team[gbPlayerNum].bFirstID; teamIndex <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++teamIndex) { // Ignore self, mercs in other sectors, etc. if (CanCharacterRepairAnotherSoldiersStuff(pSoldier, MercPtrs[teamIndex])) @@ -1289,7 +1289,6 @@ BOOLEAN DoesCharacterHaveAnyItemsToRepair( SOLDIERTYPE *pSoldier, INT8 bHighestP { INT8 bPocket; UINT8 ubItemsInPocket, ubObjectInPocketCounter; - INT8 bLoop; OBJECTTYPE * pObj; UINT8 ubPassType; @@ -1340,7 +1339,7 @@ BOOLEAN DoesCharacterHaveAnyItemsToRepair( SOLDIERTYPE *pSoldier, INT8 bHighestP if ( bHighestPass != - 1 ) { // now look for items to repair on other mercs - for( bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++bLoop ) + for( UINT16 bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++bLoop ) { SOLDIERTYPE* pOtherSoldier = MercPtrs[ bLoop ]; @@ -2052,7 +2051,7 @@ INT8 CountMilitiaTrainersInSoldiersSector( SOLDIERTYPE * pSoldier, UINT8 ubMilit AssertNotNIL(pSoldier); - for ( UINT8 bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++bLoop ) + for ( UINT16 bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++bLoop ) { SOLDIERTYPE* pOtherSoldier = MercPtrs[ bLoop ]; if ( pSoldier != pOtherSoldier && pOtherSoldier->bActive && pOtherSoldier->stats.bLife >= OKLIFE && pOtherSoldier->sSectorX == pSoldier->sSectorX && pOtherSoldier->sSectorY == pSoldier->sSectorY && pSoldier->bSectorZ == pOtherSoldier->bSectorZ ) @@ -5477,7 +5476,7 @@ void HandleRepairBySoldier( SOLDIERTYPE *pSoldier ) // first our own stuff CollectCleanableItems(pSoldier, pSoldier, itemsToClean); // then other mercs' stuff - for(UINT8 teamIndex = gTacticalStatus.Team[gbPlayerNum].bFirstID; teamIndex <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++teamIndex) + for(UINT16 teamIndex = gTacticalStatus.Team[gbPlayerNum].bFirstID; teamIndex <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++teamIndex) { // Ignore self, mercs in other sectors, etc. if (CanCharacterRepairAnotherSoldiersStuff(pSoldier, MercPtrs[teamIndex])) @@ -5522,7 +5521,7 @@ void HandleRepairBySoldier( SOLDIERTYPE *pSoldier ) // silversurfer: Looks strange? It's not. This function now needs the guy that does the repairs and the one that owns the stuff. CollectRepairableItems(pSoldier, pSoldier, itemsToFix); - for(UINT8 teamIndex = gTacticalStatus.Team[gbPlayerNum].bFirstID; teamIndex <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++teamIndex) + for(UINT16 teamIndex = gTacticalStatus.Team[gbPlayerNum].bFirstID; teamIndex <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++teamIndex) { // Ignore self, mercs in other sectors, etc. if (CanCharacterRepairAnotherSoldiersStuff(pSoldier, MercPtrs[teamIndex])) @@ -9501,7 +9500,7 @@ void HandleHealingByNaturalCauses( SOLDIERTYPE *pSoldier ) if ( gGameOptions.fNewTraitSystem ) { SOLDIERTYPE * pMedic = NULL; - UINT8 cnt; + UINT16 cnt; UINT16 bRegenerationBonus = 0; cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; @@ -13814,7 +13813,7 @@ void AssignmentMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason ) { SOLDIERTYPE * pMedic = NULL; SOLDIERTYPE * pBestMedic = NULL; - UINT8 cnt; + UINT16 cnt; INT8 bSlot; // Find the best doctor @@ -14096,7 +14095,7 @@ void AssignmentMenuBtnCallback( MOUSE_REGION * pRegion, INT32 iReason ) { SOLDIERTYPE * pMedic = NULL; SOLDIERTYPE * pBestMedic = NULL; - UINT8 cnt; + UINT16 cnt; INT8 bSlot; // Find the best doctor @@ -19505,7 +19504,7 @@ void ResumeOldAssignment( SOLDIERTYPE *pSoldier ) void RepairItemsOnOthers( SOLDIERTYPE *pSoldier, UINT8 *pubRepairPtsLeft ) { UINT8 ubPassType; - INT8 bLoop; + UINT16 bLoop; SOLDIERTYPE * pOtherSoldier; SOLDIERTYPE * pBestOtherSoldier; INT8 bPriority, bBestPriority = -1; diff --git a/Strategic/Auto Resolve.cpp b/Strategic/Auto Resolve.cpp index 2e4da9ed..91349039 100644 --- a/Strategic/Auto Resolve.cpp +++ b/Strategic/Auto Resolve.cpp @@ -2853,7 +2853,7 @@ void RetreatButtonCallback( GUI_BUTTON *btn, INT32 reason ) if( gpAR->pRobotCell ) { //if robot is retreating, set the retreat time to be the same as the robot's controller. - UINT8 ubRobotControllerID; + UINT16 ubRobotControllerID; ubRobotControllerID = gpAR->pRobotCell->pSoldier->ubRobotRemoteHolderID; @@ -3027,7 +3027,7 @@ void MercCellMouseClickCallback( MOUSE_REGION *reg, INT32 reason ) if( gpAR->pRobotCell ) { //if controller is retreating, make the robot retreat too. - UINT8 ubRobotControllerID; + UINT16 ubRobotControllerID; ubRobotControllerID = gpAR->pRobotCell->pSoldier->ubRobotRemoteHolderID; @@ -3751,7 +3751,7 @@ UINT8 GetUnusedMercProfileID() BOOLEAN fUnique = FALSE; while( !fUnique ) { - ubRandom = (UINT8)PreRandom( 40 ); + ubRandom = (UINT8)PreRandom(CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS); for( i = 0; i < 19; i++ ) { fUnique = TRUE; @@ -3769,7 +3769,7 @@ void CreateTempPlayerMerc() { SOLDIERCREATE_STRUCT MercCreateStruct; static INT32 iSoldierCount=0; - UINT8 ubID; + UINT16 ubID; //Init the merc create structure with basic information MercCreateStruct.bTeam = SOLDIER_CREATE_AUTO_TEAM; diff --git a/Strategic/Game Event Hook.cpp b/Strategic/Game Event Hook.cpp index e951f765..7942c2b5 100644 --- a/Strategic/Game Event Hook.cpp +++ b/Strategic/Game Event Hook.cpp @@ -240,7 +240,7 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent ) //If a merc gets hired and they dont show up immediately, the merc gets added to the queue and shows up // uiTimeTillMercArrives minutes later case EVENT_DELAYED_HIRING_OF_MERC: - MercArrivesCallback( (UINT8) pEvent->uiParam ); + MercArrivesCallback( (UINT16) pEvent->uiParam ); break; //handles the life insurance contract for a merc from AIM. case EVENT_HANDLE_INSURED_MERCS: @@ -248,7 +248,7 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent ) break; //handles when a merc is killed an there is a life insurance payout case EVENT_PAY_LIFE_INSURANCE_FOR_DEAD_MERC: - InsuranceContractPayLifeInsuranceForDeadMerc( (UINT8) pEvent->uiParam ); + InsuranceContractPayLifeInsuranceForDeadMerc( (UINT16) pEvent->uiParam ); break; //gets called every day at midnight. case EVENT_MERC_DAILY_UPDATE: diff --git a/Strategic/LuaInitNPCs.cpp b/Strategic/LuaInitNPCs.cpp index d91243ba..23b1282b 100644 --- a/Strategic/LuaInitNPCs.cpp +++ b/Strategic/LuaInitNPCs.cpp @@ -908,7 +908,7 @@ UINT16 PROFILLUA_sSectorX; UINT16 PROFILLUA_sSectorY; UINT8 PROFILLUA_bSectorZ; UINT8 PROFILLUA_Level; -UINT8 PROFILLUA_ubID; +UINT16 PROFILLUA_ubID; UINT32 PROFILLUA_sGridNo; UINT8 PROFILLUA_ubDirectiono; UINT8 PROFILLUA_bTeam; @@ -918,7 +918,7 @@ UINT16 PROFILLUA2_sSectorX; UINT16 PROFILLUA2_sSectorY; UINT8 PROFILLUA2_bSectorZ; UINT32 PROFILLUA2_sGridNo; -UINT8 PROFILLUA2_ubID; +UINT16 PROFILLUA2_ubID; LUA_GLOBAL gLuaGlobal[1000]; @@ -2354,7 +2354,7 @@ static int l_WhoIsThere2 (lua_State *L) { UINT32 sGridNo = lua_tointeger(L,1); INT8 bLevel = lua_tointeger(L,2); - UINT8 Val = WhoIsThere2( sGridNo, bLevel ); + UINT16 Val = WhoIsThere2( sGridNo, bLevel ); lua_pushinteger(L, Val); } @@ -2698,8 +2698,9 @@ void LuaHandleSectorLiberation( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, B LuaFunction( _LS.L, "HandleSectorLiberation" ).Param( sSectorX ).Param( sSectorY ).Param( bSectorZ ).Param( fFirstTime ).Call( 4 ); } -void LuaHandleInteractiveActionResult( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, - INT32 sGridNo, UINT8 bLevel, UINT8 ubId, +void LuaHandleInteractiveActionResult( INT16 sSectorX, INT16 sSectorY, + INT8 bSectorZ, + INT32 sGridNo, UINT8 bLevel, UINT16 ubId, UINT16 usActionType, INT32 sLuaactionid, INT32 difficulty, UINT16 skill ) { const char* filename = "scripts\\Overhead.lua"; @@ -2918,7 +2919,7 @@ BOOLEAN LuaIDScripts(UINT8 Init, UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 u SOLDIERTYPE * FindSoldierByProfileID_( UINT8 ubProfileID ) { - UINT8 ubLoop, ubLoopLimit; + UINT16 ubLoop, ubLoopLimit; SOLDIERTYPE * pSoldier; ubLoopLimit = MAX_NUM_SOLDIERS; @@ -2935,7 +2936,7 @@ SOLDIERTYPE * FindSoldierByProfileID_( UINT8 ubProfileID ) SOLDIERTYPE * FindSoldierByProfileID2( UINT8 ubProfileID, BOOLEAN fPlayerMercsOnly ) { - UINT8 cnt2, ubLoopLimit; + UINT16 cnt2, ubLoopLimit; SOLDIERTYPE * pSoldier; ubLoopLimit = gTacticalStatus.Team[CIV_TEAM].bLastID; @@ -4730,7 +4731,7 @@ static int l_NumMercsNear(lua_State *L) { UINT8 ubProfileID = lua_tointeger(L,1); UINT8 ubMaxDist = lua_tointeger(L,2); - UINT8 ID2 = NumMercsNear( ubProfileID, ubMaxDist ); + UINT16 ID2 = NumMercsNear( ubProfileID, ubMaxDist ); lua_pushinteger(L, ID2); } @@ -5799,7 +5800,7 @@ static int l_SetOffPanicBombs (lua_State *L) { if ( lua_gettop(L) >= 2 ) { - UINT8 ubID = lua_tointeger(L,1); + UINT16 ubID = lua_tointeger(L,1); INT8 bPanicTrigger = lua_tointeger(L,2); SetOffPanicBombs( ubID, bPanicTrigger ); } @@ -5852,7 +5853,7 @@ static int l_MakeNoise(lua_State *L) if ( lua_gettop(L) >= 6 ) { - UINT8 ubNoiseMaker = lua_tointeger(L,1); + UINT16 ubNoiseMaker = lua_tointeger(L,1); INT32 sGridNo = lua_tointeger(L,2); INT8 bLevel = lua_tointeger(L,3); UINT8 ubTerrType = lua_tointeger(L,4); @@ -5995,7 +5996,7 @@ return 0; static int l_ActionInProgress(lua_State *L) { - UINT8 cnt2; + UINT16 cnt2; SOLDIERTYPE * pSoldier; if (lua_gettop(L) >= 2) @@ -6357,7 +6358,7 @@ static int l_ActivateSwitchInGridNo(lua_State *L) { if (lua_gettop(L) >= 2) { - UINT8 ubID = lua_tointeger(L, 1); + UINT16 ubID = lua_tointeger(L, 1); INT32 sGridNo = lua_tointeger(L, 2); if (!TileIsOutOfBounds(sGridNo) && ubID < TOTAL_SOLDIERS) @@ -7128,7 +7129,7 @@ static int l_ACTION_ITEM_SEX (lua_State *L) if ( ! (gTacticalStatus.uiFlags & INCOMBAT) ) { - UINT8 ubID; + UINT16 ubID; OBJECTTYPE DoorCloser; INT16 sTeleportSpot; INT16 sDoorSpot; @@ -7579,7 +7580,7 @@ static int l_EVENT_InitNewSoldierAnim (lua_State *L) { if ( lua_gettop(L) >= 3 ) { - UINT8 ubTargetNPC = lua_tointeger(L,1); + UINT16 ubTargetNPC = lua_tointeger(L,1); //if (i == 2 ) BodyType = lua_tointeger(L,i); UINT32 ANIM = lua_tointeger(L,2); INT32 cnt = lua_tointeger(L,3); @@ -7636,13 +7637,13 @@ static int l_SetEnterCombatMode (lua_State *L) if ( lua_gettop(L) >= 2 ) { UINT16 group = lua_tointeger(L,1); - UINT8 ubID = lua_tointeger(L,2); + UINT16 ubID = lua_tointeger(L,2); if ( ubID == NOBODY ) return 0; SOLDIERTYPE* pGoon = NULL; - for ( UINT8 ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ubLoop++ ) + for ( UINT16 ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ubLoop++ ) { pGoon = MercPtrs[ ubLoop ]; if ( pGoon->ubCivilianGroup == group && pGoon->bActive && pGoon->bInSector && pGoon->stats.bLife >= OKLIFE && pGoon->aiData.bOppList[ ubID ] == SEEN_CURRENTLY ) @@ -7675,7 +7676,7 @@ static int l_MakeMercPtrsHostile (lua_State *L) { if ( lua_gettop(L) >= 1 ) { - UINT8 ubID = lua_tointeger(L,1); + UINT16 ubID = lua_tointeger(L,1); MakeCivHostile(MercPtrs[ ubID ]); } @@ -7734,7 +7735,7 @@ static int l_EVENT_SoldierGotHit (lua_State *L) DeleteTalkingMenu(); if ( pTarget2->stats.bLife >= 0 ) { - pTarget2->EVENT_SoldierGotHit( 1, 100, 10, pTarget2->ubDirection, 320, NOBODY , FIRE_WEAPON_NO_SPECIAL, AIM_SHOT_TORSO, 0, NOWHERE ); + pTarget2->EVENT_SoldierGotHit( 1, 100, 10, pTarget2->ubDirection, 320, NOBODY, FIRE_WEAPON_NO_SPECIAL, AIM_SHOT_TORSO, 0, NOWHERE ); } } } @@ -8067,7 +8068,7 @@ static int l_ChangeMercPtrsTeam (lua_State *L) { if ( lua_gettop(L) >= 2 ) { - UINT8 UID = lua_tointeger(L,1); + UINT16 UID = lua_tointeger(L,1); INT8 Side = lua_tointeger(L,2); if ( MercPtrs[UID] && MercPtrs[ UID ]->bInSector && MercPtrs[ UID ]->bActive ) @@ -8878,46 +8879,33 @@ static int l_GetDirection (lua_State *L) static int l_ubID (lua_State *L) { - UINT8 n = lua_gettop(L); - int i = 0; - UINT8 ubTargetNPC = 0; - SOLDIERTYPE *pSoldier; - - UINT32 ubID = 0; - - for (i= 1; i<=n; i++ ) + if (lua_gettop(L) >= 1) { - if (i == 1 ) - ubTargetNPC = lua_tointeger(L,i); + UINT8 ubTargetNPC = 0; + SOLDIERTYPE *pSoldier; + + ubTargetNPC = lua_tointeger(L, 1); + pSoldier = FindSoldierByProfileID(ubTargetNPC, FALSE); + if (pSoldier) + lua_pushinteger(L, pSoldier->ubID); + else + lua_pushinteger(L, -1); } - - pSoldier = FindSoldierByProfileID( ubTargetNPC, FALSE); - if ( pSoldier ) - ubID = pSoldier->ubID; - else - ubID = -1; - - lua_pushinteger(L, ubID); - return 1; } //------------ static int l_GetFirstID (lua_State *L) { - UINT8 n = lua_gettop(L); - int i; - UINT8 team = 0; - UINT32 id; - - for (i= 1; i<=n; i++ ) + if (lua_gettop(L) >= 1) { - if (i == 1 ) team = lua_tointeger(L,i); + UINT8 team = 0; + UINT32 id; + + team = lua_tointeger(L, 1); + id = gTacticalStatus.Team[team].bFirstID; + + lua_pushinteger(L, id); } - - id = gTacticalStatus.Team[ team ].bFirstID; - - lua_pushinteger(L, id); - return 1; } @@ -9190,7 +9178,7 @@ static int l_WearGasMaskIfAvailable(lua_State *L) { if ( lua_gettop( L ) >= 1 ) { - UINT8 ubID = lua_tointeger( L, 1 ); + UINT16 ubID = lua_tointeger( L, 1 ); if ( MercPtrs[ubID] && MercPtrs[ubID]->bInSector && MercPtrs[ubID]->bActive ) { @@ -9205,7 +9193,7 @@ static int l_SetNewSituationMercPtsr(lua_State *L) { UINT8 n = lua_gettop(L); int i = 0; - UINT8 ubID = 0; + UINT16 ubID = 0; BOOLEAN Bool = FALSE; SOLDIERTYPE * pSoldier; @@ -9573,7 +9561,7 @@ static int l_SetOffBombsInGridNo (lua_State *L) { UINT8 n = lua_gettop(L); int i = 0; - UINT8 ubID = 0; + UINT16 ubID = 0; INT32 sGridNo = 0; BOOLEAN fAllBombs = FALSE; INT8 bLevel = 0; @@ -9613,7 +9601,7 @@ static int l_AnimMercPtsrSoldierGotHit (lua_State *L) { if ( MercPtrs[ ubID ]->stats.bLife >= 0 ) { - MercPtrs[ ubID ]->EVENT_SoldierGotHit( 1, 100, 10, MercPtrs[ ubID ]->ubDirection, 320, NOBODY , FIRE_WEAPON_NO_SPECIAL, AIM_SHOT_TORSO, 0, NOWHERE ); + MercPtrs[ ubID ]->EVENT_SoldierGotHit( 1, 100, 10, MercPtrs[ ubID ]->ubDirection, 320, NOBODY, FIRE_WEAPON_NO_SPECIAL, AIM_SHOT_TORSO, 0, NOWHERE ); } } @@ -9738,7 +9726,8 @@ static int l_FindSoldierByProfileID (lua_State *L) { UINT8 n = lua_gettop(L); int i = 0; - UINT8 ubTargetNPC = 0,ubLoop = 0,ubLoopLimit = 0; + UINT8 ubTargetNPC = 0; + UINT16 ubLoop = 0, ubLoopLimit = 0; SOLDIERTYPE *pSoldier; UINT8 id = -1; @@ -9767,7 +9756,8 @@ static int l_FindSoldierByProfileIDBool (lua_State *L) { UINT8 n = lua_gettop(L); int i = 0; - UINT8 ubTargetNPC = 0,ubLoop = 0,ubLoopLimit = 0; + UINT8 ubTargetNPC = 0; + UINT16 ubLoop = 0, ubLoopLimit = 0; SOLDIERTYPE *pSoldier; UINT8 id = -1; BOOLEAN ProfBool = FALSE; @@ -11445,7 +11435,7 @@ static int l_SetMoneyInSoldierProfile(lua_State *L) static int l_AddToShouldBecomeHostileOrSayQuoteList(lua_State *L) { - UINT8 ubID = 0; + UINT16 ubID = 0; UINT8 n = lua_gettop(L); int i = 0; @@ -12381,7 +12371,7 @@ return 0; static int l_SetMercPtsrSectorZ(lua_State *L) { - UINT8 ubID = 0; + UINT16 ubID = 0; BOOLEAN Bool = FALSE; SOLDIERTYPE * pSoldier; INT8 SectorZ; @@ -12413,7 +12403,7 @@ static int l_SetMercPtsrSectorZ(lua_State *L) static int l_SetMercPtsrSectorX(lua_State *L) { - UINT8 ubID = 0; + UINT16 ubID = 0; BOOLEAN Bool = FALSE; SOLDIERTYPE * pSoldier; INT16 SectorX; @@ -12446,7 +12436,7 @@ static int l_SetMercPtsrSectorX(lua_State *L) static int l_SetMercPtsrSectorY(lua_State *L) { - UINT8 ubID = 0; + UINT16 ubID = 0; BOOLEAN Bool = FALSE; SOLDIERTYPE * pSoldier; INT16 SectorY; @@ -12479,7 +12469,7 @@ static int l_SetMercPtsrSectorY(lua_State *L) static int l_SetMercPtsrubGroupID(lua_State *L) { - UINT8 ubID = 0; + UINT16 ubID = 0; BOOLEAN Bool = FALSE; SOLDIERTYPE * pSoldier; INT8 GroupID; @@ -12512,7 +12502,7 @@ static int l_SetMercPtsrubGroupID(lua_State *L) static int l_CheckMercPtsrSectorY(lua_State *L) { - UINT8 ubID = 0; + UINT16 ubID = 0; BOOLEAN Bool = FALSE; SOLDIERTYPE * pSoldier; INT16 SectorY; @@ -12550,7 +12540,7 @@ static int l_CheckMercPtsrSectorY(lua_State *L) static int l_CheckMercPtsrSectorX(lua_State *L) { - UINT8 ubID = 0; + UINT16 ubID = 0; BOOLEAN Bool = FALSE; SOLDIERTYPE * pSoldier; INT16 SectorX; @@ -12588,7 +12578,7 @@ static int l_CheckMercPtsrSectorX(lua_State *L) static int l_CheckMercPtsrSectorZ(lua_State *L) { - UINT8 ubID = 0; + UINT16 ubID = 0; BOOLEAN Bool = FALSE; SOLDIERTYPE * pSoldier; INT16 SectorZ; @@ -12626,7 +12616,7 @@ static int l_CheckMercPtsrSectorZ(lua_State *L) static int l_CheckMercPtsrubGroupID(lua_State *L) { - UINT8 ubID = 0; + UINT16 ubID = 0; BOOLEAN Bool = FALSE; SOLDIERTYPE * pSoldier; UINT8 GroupID; @@ -13269,7 +13259,7 @@ static int l_DoInteractiveActionDefaultResult( lua_State *L ) if ( lua_gettop( L ) >= 3 ) { INT32 sGridNo = lua_tointeger( L, 1 ); - UINT8 ubID = lua_tointeger( L, 2 ); + UINT16 ubID = lua_tointeger( L, 2 ); BOOLEAN success = lua_tointeger( L, 3 ); DoInteractiveActionDefaultResult( sGridNo, ubID, success ); @@ -13282,7 +13272,7 @@ static int l_GiveExp( lua_State *L ) { if ( lua_gettop( L ) >= 3 ) { - UINT8 ubID = lua_tointeger( L, 1 ); + UINT16 ubID = lua_tointeger( L, 1 ); UINT8 ubStat = lua_tointeger( L, 2 ); UINT16 usNumChances = lua_tointeger( L, 3 ); @@ -13375,7 +13365,7 @@ static int l_SoldierSpendMoney( lua_State *L ) { if ( lua_gettop( L ) >= 2 ) { - UINT8 usId = lua_tointeger( L, 1 ); + UINT16 usId = lua_tointeger( L, 1 ); UINT32 amount = lua_tointeger( L, 2 ); lua_pushinteger( L, SpendMoney( MercPtrs[usId], amount ) ); diff --git a/Strategic/LuaInitNPCs.h b/Strategic/LuaInitNPCs.h index cd663ede..043c0fa1 100644 --- a/Strategic/LuaInitNPCs.h +++ b/Strategic/LuaInitNPCs.h @@ -33,7 +33,7 @@ extern UINT16 PROFILLUA_sSectorX; extern UINT16 PROFILLUA_sSectorY; extern UINT8 PROFILLUA_bSectorZ; extern UINT8 PROFILLUA_Level; -extern UINT8 PROFILLUA_ubID; +extern UINT16 PROFILLUA_ubID; extern UINT32 PROFILLUA_sGridNo; extern UINT8 PROFILLUA_ubDirectiono; extern UINT8 PROFILLUA_bTeam; @@ -42,7 +42,7 @@ extern UINT8 PROFILLUA2_ubProfile; extern UINT16 PROFILLUA2_sSectorX; extern UINT16 PROFILLUA2_sSectorY; extern UINT8 PROFILLUA2_bSectorZ; -extern UINT8 PROFILLUA2_ubID; +extern UINT16 PROFILLUA2_ubID; extern UINT32 PROFILLUA2_sGridNo; extern BOOLEAN LetHandleLoyaltyChangeForNPCAction(UINT8 ubNPCProfileId , UINT8 Init); @@ -60,8 +60,9 @@ extern BOOLEAN LuaHandleQuestCodeOnSector( INT16 sSectorX, INT16 sSectorY, INT8 //extern BOOLEAN LuaHandleQuestCodeOnSectorEntry( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, UINT8 Init); void LuaHandleSectorLiberation( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, BOOLEAN fFirstTime ); -void LuaHandleInteractiveActionResult( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, - INT32 sGridNo, UINT8 bLevel, UINT8 ubId, +void LuaHandleInteractiveActionResult( INT16 sSectorX, INT16 sSectorY, + INT8 bSectorZ, + INT32 sGridNo, UINT8 bLevel, UINT16 ubId, UINT16 usActionType, INT32 sLuaactionid, INT32 difficulty, UINT16 skill ); void LuaRecruitRPCAdditionalHandling( UINT8 usProfile ); void LuaHandleSectorTacticalEntry( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, BOOLEAN fHasEverBeenPlayerControlled ); diff --git a/Strategic/Map Screen Helicopter.cpp b/Strategic/Map Screen Helicopter.cpp index 59033941..a48f9a32 100644 --- a/Strategic/Map Screen Helicopter.cpp +++ b/Strategic/Map Screen Helicopter.cpp @@ -76,7 +76,7 @@ #define HELICOPTER_RETURN_REASON_DAMAGE 2 extern FACETYPE *gpCurrentTalkingFace; -extern UINT8 gubCurrentTalkingID; +extern UINT16 gubCurrentTalkingID; // current temp path for dest char extern PathStPtr pTempHelicopterPath; diff --git a/Strategic/Map Screen Interface Map Inventory.cpp b/Strategic/Map Screen Interface Map Inventory.cpp index dafeaf18..faea4fbc 100644 --- a/Strategic/Map Screen Interface Map Inventory.cpp +++ b/Strategic/Map Screen Interface Map Inventory.cpp @@ -205,7 +205,7 @@ INT32 iCurrentInventoryPoolPage = 0; INT32 iLastInventoryPoolPage = 0; INT32 sObjectSourceGridNo = -1;//shadooow: I don't see much of a sense in this, we have gpItemPointerSoldier and we can use gpItemPointerSoldier->sGridNo to do this, this is actually unused -INT8 sObjectSourseSoldierID = -1; +INT16 sObjectSourseSoldierID = -1; // number of unseen items in sector UINT32 uiNumberOfUnSeenItems = 0; diff --git a/Strategic/Map Screen Interface Map.cpp b/Strategic/Map Screen Interface Map.cpp index 0f0619fa..e0645860 100644 --- a/Strategic/Map Screen Interface Map.cpp +++ b/Strategic/Map Screen Interface Map.cpp @@ -478,10 +478,10 @@ UINT32 guiMAPCURSORS; UINT32 guiMapPathingArrows; // assignment selection character -INT8 bSelectedAssignChar=-1; +INT16 bSelectedAssignChar=-1; // current contract char -INT8 bSelectedContractChar = -1; +INT16 bSelectedContractChar = -1; // has the temp path for character or helicopter been already drawn? @@ -604,11 +604,11 @@ BOOLEAN SaveHiddenTownToSaveGameFile( HWFILE hFile ); // Flugente: added getter/setter so that we can easily check when a new char is set // we also set a marker determining when we should update the squads data, so that we only check that when required // destination plotting character -INT8 bSelectedDestChar = -1; +INT16 bSelectedDestChar = -1; bool gSquadEncumbranceCheckNecessary = true; -INT8 GetSelectedDestChar() { return bSelectedDestChar; } -void SetSelectedDestChar( INT8 aVal ) +INT16 GetSelectedDestChar() { return bSelectedDestChar; } +void SetSelectedDestChar( INT16 aVal ) { bSelectedDestChar = aVal; gSquadEncumbranceCheckNecessary = true; diff --git a/Strategic/Map Screen Interface Map.h b/Strategic/Map Screen Interface Map.h index 2077ae18..f80ac677 100644 --- a/Strategic/Map Screen Interface Map.h +++ b/Strategic/Map Screen Interface Map.h @@ -372,19 +372,19 @@ extern BOOLEAN fDrawTempHeliPath; extern BOOLEAN fDrawTempMilitiaPath; // selected destination char -INT8 GetSelectedDestChar(); -void SetSelectedDestChar( INT8 aVal ); +INT16 GetSelectedDestChar(); +void SetSelectedDestChar( INT16 aVal ); extern bool gSquadEncumbranceCheckNecessary; // current assignment character -extern INT8 bSelectedAssignChar; +extern INT16 bSelectedAssignChar; // the info character -extern INT8 bSelectedInfoChar; +extern INT16 bSelectedInfoChar; // the contract char -extern INT8 bSelectedContractChar; +extern INT16 bSelectedContractChar; // map arrows graphical index value extern UINT32 guiMAPCURSORS; diff --git a/Strategic/Map Screen Interface.cpp b/Strategic/Map Screen Interface.cpp index 40974757..4b90b9e5 100644 --- a/Strategic/Map Screen Interface.cpp +++ b/Strategic/Map Screen Interface.cpp @@ -70,8 +70,8 @@ extern UILayout_CharPanelIconRegion UI_CHAR_Icon; extern UILayout_CharList UI_CHARLIST; // marke strogg more mercs -extern UINT8 FIRSTmercTOdisplay = 0 ; -extern UINT8 maxNumberOfMercVisibleInStrategyList = 0; // WANNE: Max merc displayed in the list depends on the resolution +extern UINT16 FIRSTmercTOdisplay = 0 ; +extern UINT16 maxNumberOfMercVisibleInStrategyList = 0; // WANNE: Max merc displayed in the list depends on the resolution // inventory pool position on screen #define MAP_INVEN_POOL_X 300 @@ -227,7 +227,7 @@ extern UINT32 guiSAVEBUFFER; extern BOOLEAN fShowInventoryFlag; extern FACETYPE *gpCurrentTalkingFace; -extern UINT8 gubCurrentTalkingID; +extern UINT16 gubCurrentTalkingID; extern BOOLEAN fMapScreenBottomDirty; extern MOUSE_REGION gMPanelRegion; @@ -1355,7 +1355,7 @@ void HandleDisplayOfSelectedMercArrows( void ) { INT16 sYPosition = 0; HVOBJECT hHandle; - UINT8 ubCount = 0; + UINT16 ubCount = 0; UINT16 selectedCharArrowX = UI_CHARLIST.Region.x + 1; @@ -2119,8 +2119,8 @@ void FindAndSetThisContractSoldier( SOLDIERTYPE *pSoldier ) { if( gCharactersList[ iCounter].usSolID == pSoldier->ubID ) { - ChangeSelectedInfoChar( ( INT8 )iCounter, TRUE ); - bSelectedContractChar = ( INT8 )iCounter; + ChangeSelectedInfoChar( ( INT16 )iCounter, TRUE ); + bSelectedContractChar = ( INT16 )iCounter; fShowContractMenu = TRUE; // create @@ -2373,9 +2373,9 @@ void RandomMercInGroupSaysQuote( GROUP *pGroup, UINT16 usQuoteNum ) { PLAYERGROUP *pPlayer; SOLDIERTYPE *pSoldier; - UINT8 ubMercsInGroup[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + UINT16 ubMercsInGroup[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; // if traversing tactically, don't do this, unless time compression was required for some reason (don't go to sector) @@ -2406,7 +2406,7 @@ void RandomMercInGroupSaysQuote( GROUP *pGroup, UINT16 usQuoteNum ) // At least say quote.... if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); pSoldier = MercPtrs[ ubMercsInGroup[ ubChosenMerc ] ]; TacticalCharacterDialogue( pSoldier, usQuoteNum ); @@ -2454,7 +2454,7 @@ BOOLEAN ValidSelectableCharForNextOrPrev( INT32 iNewCharSlot ) if ( fShowInventoryFlag || fHoldingItem ) { // the new guy must have accessible inventory - if ( !MapCharacterHasAccessibleInventory( ( INT8 ) iNewCharSlot ) ) + if ( !MapCharacterHasAccessibleInventory( ( INT16 ) iNewCharSlot ) ) { return( FALSE ); } @@ -3761,60 +3761,67 @@ void CreatePopUpBoxForMovementBox( void ) // create the pop up box and mouse regions for movement list - // create basic box - CreatePopUpBox(&ghMoveBox, AssignmentDimensions, MovePosition, (POPUP_BOX_FLAG_CLIP_TEXT|POPUP_BOX_FLAG_RESIZE )); + // create basic box + CreatePopUpBox(&ghMoveBox, AssignmentDimensions, MovePosition, ( POPUP_BOX_FLAG_CLIP_TEXT|POPUP_BOX_FLAG_RESIZE )); - // which buffer will box render to - SetBoxBuffer(ghMoveBox, FRAME_BUFFER); + // which buffer will box render to + SetBoxBuffer(ghMoveBox, FRAME_BUFFER); - // border type? - SetBorderType(ghMoveBox,guiPOPUPBORDERS); + // border type? + SetBorderType(ghMoveBox,guiPOPUPBORDERS); - // background texture - SetBackGroundSurface(ghMoveBox, guiPOPUPTEX); + // background texture + SetBackGroundSurface(ghMoveBox, guiPOPUPTEX); - // margin sizes - SetMargins( ghMoveBox, 6, 6, 4, 4 ); + // margin sizes + SetMargins( ghMoveBox, 6, 6, 4, 4 ); - // space between lines - SetLineSpace(ghMoveBox, 2); + // space between lines + SetLineSpace(ghMoveBox, 2); - // set current box to this one - SetCurrentBox( ghMoveBox ); + // set current box to this one + SetCurrentBox( ghMoveBox ); - // add strings - AddStringsToMoveBox( ); + // add strings + AddStringsToMoveBox( ); - // set font type - SetBoxFont(ghMoveBox, MAP_SCREEN_FONT); + // set font type + SetBoxFont(ghMoveBox, MAP_SCREEN_FONT); - // set highlight color - SetBoxHighLight(ghMoveBox, FONT_WHITE); + // set highlight color + SetBoxHighLight(ghMoveBox, FONT_WHITE); - // unhighlighted color - SetBoxForeground(ghMoveBox, FONT_LTGREEN); + // unhighlighted color + SetBoxForeground(ghMoveBox, FONT_LTGREEN); - // make the header line WHITE - SetBoxLineForeground( ghMoveBox, 0, FONT_WHITE ); + // make the header line WHITE + SetBoxLineForeground( ghMoveBox, 0, FONT_WHITE ); - // make the done and cancel lines YELLOW - SetBoxLineForeground( ghMoveBox, GetNumberOfLinesOfTextInBox( ghMoveBox ) - 1, FONT_YELLOW ); + // make the done and cancel lines YELLOW + SetBoxLineForeground( ghMoveBox, GetNumberOfLinesOfTextInBox( ghMoveBox ) - 1, FONT_YELLOW ); if ( IsAnythingSelectedForMoving() ) { SetBoxLineForeground( ghMoveBox, GetNumberOfLinesOfTextInBox( ghMoveBox ) - 2, FONT_YELLOW ); } - // background color - SetBoxBackground(ghMoveBox, FONT_BLACK); + // background color + SetBoxBackground(ghMoveBox, FONT_BLACK); - // shaded color..for darkened text - SetBoxShade( ghMoveBox, FONT_BLACK ); + // shaded color..for darkened text + SetBoxShade( ghMoveBox, FONT_BLACK ); + SetBoxSecondColumnForeground(ghMoveBox, FONT_LTGREEN); + SetBoxSecondColumnBackground(ghMoveBox, FONT_BLACK); + SetBoxSecondColumnHighLight(ghMoveBox, FONT_WHITE); + SetBoxSecondColumnShade(ghMoveBox, FONT_BLACK); + SetBoxSecondColumnFont(ghMoveBox, MAP_SCREEN_FONT); + SetBoxSecondColumnMinimumOffset(ghMoveBox, 1); + SetBoxSecondColumnOffsetAdjustment(ghMoveBox, -50); - // resize box to text - ResizeBoxToText( ghMoveBox ); + // resize box to text + ResizeBoxToText( ghMoveBox ); GetBoxPosition( ghMoveBox, &Position); GetBoxSize( ghMoveBox, &Dimensions ); @@ -3841,7 +3848,9 @@ void AddStringsToMoveBox( void ) CHAR16 sString[ 128 ], sStringB[ 128 ]; UINT32 hStringHandle; BOOLEAN fFirstOne = TRUE; - + const INT32 firstColumnMaxEntries = 4 * gGameOptions.ubSquadSize; + INT32 entries = 0; + bool isFirstColumnFull = false; // set the current box SetCurrentBox( ghMoveBox ); @@ -3854,16 +3863,19 @@ void AddStringsToMoveBox( void ) GetShortSectorString( sSelMapX, sSelMapY, sStringB ); swprintf( sString, L"%s %s", pMovementMenuStrings[ 0 ], sStringB ); AddMonoString(&hStringHandle, sString ); + AddSecondColumnMonoString(&hStringHandle, L""); // blank line AddMonoString(&hStringHandle, L"" ); + AddSecondColumnMonoString(&hStringHandle, L""); // add Select all line if (giNumberOfSquadsInSectorMoving > 1) { swprintf(sString, L"%s", pMovementMenuStrings[4]); AddMonoString(&hStringHandle, sString); + AddSecondColumnMonoString(&hStringHandle, L""); } @@ -3885,7 +3897,15 @@ void AddStringsToMoveBox( void ) else swprintf( sString, L"%s", pSquadMenuStrings[iSquadMovingList[ iCount ] ] ); } - AddMonoString(&hStringHandle, sString ); + if (!isFirstColumnFull) + { + AddMonoString(&hStringHandle, sString); + } + else + { + AddMonoStringToSecondColumn(&hStringHandle, sString ); + } + entries += 1; // now add all the grunts in it for( iCountB = 0; iCountB < giNumberOfSoldiersInSectorMoving; iCountB++ ) @@ -3901,9 +3921,23 @@ void AddStringsToMoveBox( void ) { swprintf( sString, L" %s", pSoldierMovingList[ iCountB ]->name ); } - AddMonoString(&hStringHandle, sString ); + + if (!isFirstColumnFull) + { + AddMonoString(&hStringHandle, sString); + } + else + { + AddMonoStringToSecondColumn(&hStringHandle, sString); + } + entries += 1; } } + + if (entries > firstColumnMaxEntries) + { + isFirstColumnFull = true; + } } @@ -4202,7 +4236,7 @@ void ClearMouseRegionsForMoveBox( void ) INT32 iCounter = 0; // run through list of mouse regions - for( iCounter = 0; iCounter < ( INT32 )GetNumberOfLinesOfTextInBox( ghMoveBox ); iCounter++ ) + for( iCounter = 0; iCounter < ( INT32 )(GetNumberOfLinesOfTextInBox( ghMoveBox ) + GetNumberOfSecondaryLinesOfTextInBox(ghMoveBox)); iCounter++) { // remove this region MSYS_RemoveRegion( &gMoveMenuRegion[ iCounter ] ); @@ -4647,11 +4681,11 @@ void HandleSettingTheSelectedListOfMercs( void ) // yes, then set them as the destination plotting character for movement arrow purposes fFirstOne = FALSE; - SetSelectedDestChar(( INT8 )iCounter ); + SetSelectedDestChar(( INT16 )iCounter ); // make DEST column glow giDestHighLine = iCounter; - ChangeSelectedInfoChar( ( INT8 ) iCounter, TRUE ); + ChangeSelectedInfoChar( ( INT16 ) iCounter, TRUE ); } // add this guy to the selected list of grunts @@ -6185,7 +6219,7 @@ BOOLEAN CanCharacterMoveInStrategic( SOLDIERTYPE *pSoldier, INT8 *pbErrorNumber ( !pSoldier->flags.fBetweenSectors ) && gMercProfiles[ ELDIN ].bMercStatus != MERC_IS_DEAD ) { //DBrot: More Rooms - UINT8 /*ubRoom,*/ cnt; + UINT16 /*ubRoom,*/ cnt; UINT16 usRoom; SOLDIERTYPE * pSoldier2; diff --git a/Strategic/Map Screen Interface.h b/Strategic/Map Screen Interface.h index 4e0ad4ed..69c19e3a 100644 --- a/Strategic/Map Screen Interface.h +++ b/Strategic/Map Screen Interface.h @@ -24,8 +24,8 @@ typedef struct FASTHELPREGION { // Flugente: externalised squad names extern std::vector gSquadNameVector; -extern UINT8 FIRSTmercTOdisplay ; -extern UINT8 maxNumberOfMercVisibleInStrategyList; +extern UINT16 FIRSTmercTOdisplay ; +extern UINT16 maxNumberOfMercVisibleInStrategyList; // String Lengths Defines #define MAX_NAME_LENGTH 10 diff --git a/Strategic/Merc Contract.cpp b/Strategic/Merc Contract.cpp index 18e812c3..69b1f419 100644 --- a/Strategic/Merc Contract.cpp +++ b/Strategic/Merc Contract.cpp @@ -286,7 +286,7 @@ void EndCurrentContractRenewal( ) } } -void HandleMercIsWillingToRenew( UINT8 ubID ) +void HandleMercIsWillingToRenew( UINT16 ubID ) { SOLDIERTYPE *pSoldier = MercPtrs[ ubID ]; @@ -306,7 +306,7 @@ void HandleMercIsWillingToRenew( UINT8 ubID ) } -void HandleMercIsNotWillingToRenew( UINT8 ubID ) +void HandleMercIsNotWillingToRenew( UINT16 ubID ) { SOLDIERTYPE *pSoldier = MercPtrs[ ubID ]; @@ -746,9 +746,9 @@ BOOLEAN WillMercRenew( SOLDIERTYPE *pSoldier, BOOLEAN fSayQuote ) void HandleBuddiesReactionToFiringMerc(SOLDIERTYPE *pFiredSoldier, INT8 bMoraleEvent ) { - INT8 bMercID; - INT8 bLastTeamID; - SOLDIERTYPE * pSoldier; + UINT16 bMercID; + UINT16 bLastTeamID; + SOLDIERTYPE * pSoldier; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; @@ -1456,9 +1456,9 @@ void FindOutIfAnyMercAboutToLeaveIsGonnaRenew( void ) SOLDIERTYPE *pSoldier = NULL, *pSoldierWhoWillQuit = NULL; INT32 iCounter= 0, iNumberOnTeam = 0; // WDS - make number of mercenaries, etc. be configurable - UINT8 ubPotentialMercs[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { 0 }; - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + UINT16 ubPotentialMercs[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { 0 }; + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; gfFirstMercSayQuote = FALSE; @@ -1538,7 +1538,7 @@ void FindOutIfAnyMercAboutToLeaveIsGonnaRenew( void ) // OK, pick one.... if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); SpecialCharacterDialogueEvent( DIALOGUE_SPECIAL_EVENT_LOCK_INTERFACE,1 ,MAP_SCREEN ,0 ,0 ,0 ); HandleImportantMercQuote( MercPtrs[ ubPotentialMercs[ ubChosenMerc ] ], QUOTE_CONTRACTS_OVER ); diff --git a/Strategic/Merc Contract.h b/Strategic/Merc Contract.h index 88a0fbfb..abfc0ec5 100644 --- a/Strategic/Merc Contract.h +++ b/Strategic/Merc Contract.h @@ -68,8 +68,8 @@ void FindOutIfAnyMercAboutToLeaveIsGonnaRenew( void ); void BeginContractRenewalSequence( ); void HandleContractRenewalSequence( ); void EndCurrentContractRenewal( ); -void HandleMercIsWillingToRenew( UINT8 ubID ); -void HandleMercIsNotWillingToRenew( UINT8 ubID ); +void HandleMercIsWillingToRenew( UINT16 ubID ); +void HandleMercIsNotWillingToRenew( UINT16 ubID ); BOOLEAN ContractIsExpiring( SOLDIERTYPE *pSoldier ); UINT32 GetHourWhenContractDone( SOLDIERTYPE *pSoldier ); diff --git a/Strategic/PreBattle Interface.cpp b/Strategic/PreBattle Interface.cpp index f285cd2e..a3bacc9b 100644 --- a/Strategic/PreBattle Interface.cpp +++ b/Strategic/PreBattle Interface.cpp @@ -1728,7 +1728,7 @@ void RetreatMercsCallback( GUI_BUTTON *btn, INT32 reason ) { ///////////////////////////////////////////////////////////////////////////////// // SANDRO - merc records - times retreated counter - for( UINT8 i = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; i <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; i++ ) + for( UINT16 i = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; i <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; i++ ) { if ( MercPtrs[i]->bActive && MercPtrs[i]->stats.bLife >= OKLIFE ) { diff --git a/Strategic/Queen Command.cpp b/Strategic/Queen Command.cpp index eb32fe44..0ecf8901 100644 --- a/Strategic/Queen Command.cpp +++ b/Strategic/Queen Command.cpp @@ -600,7 +600,7 @@ UINT8 NumFreeSlots( UINT8 ubTeam ) return ubNumFreeSlots; } - +#pragma optimize("",off) //Called when entering a sector so the campaign AI can automatically insert the //correct number of troops of each type based on the current number in the sector //in global focus (gWorldSectorX/Y) @@ -1152,7 +1152,7 @@ BOOLEAN PrepareEnemyForUndergroundBattle() Assert( FALSE ); return FALSE; } - +#pragma optimize("",on) //The queen AI layer must process the event by subtracting forces, etc. void ProcessQueenCmdImplicationsOfDeath( SOLDIERTYPE *pSoldier ) { diff --git a/Strategic/Quest Debug System.cpp b/Strategic/Quest Debug System.cpp index 7a92c874..d4daf16c 100644 --- a/Strategic/Quest Debug System.cpp +++ b/Strategic/Quest Debug System.cpp @@ -2997,9 +2997,9 @@ void DestroyQuestDebugTextInputBoxes() void AddNPCToGridNo( INT32 iGridNo ) { - SOLDIERCREATE_STRUCT MercCreateStruct; - INT16 sSectorX, sSectorY; - UINT8 ubID; + SOLDIERCREATE_STRUCT MercCreateStruct; + INT16 sSectorX, sSectorY; + UINT16 ubID; GetCurrentWorldSector( &sSectorX, &sSectorY ); MercCreateStruct.bTeam = CIV_TEAM; @@ -3670,10 +3670,7 @@ void IncrementActiveDropDownBox( INT16 sIncrementValue ) INT16 IsMercInTheSector( UINT16 usMercID ) { - if( usMercID == -1 ) - return( FALSE ); - - UINT8 cnt; + UINT16 cnt; for ( cnt=0; cnt < TOTAL_SOLDIERS; cnt++ ) { //if the merc is active diff --git a/Strategic/Quests.cpp b/Strategic/Quests.cpp index d8fea66d..0f947a77 100644 --- a/Strategic/Quests.cpp +++ b/Strategic/Quests.cpp @@ -186,7 +186,7 @@ BOOLEAN CheckNPCWithin( UINT8 ubFirstNPC, UINT8 ubSecondNPC, UINT8 ubMaxDistance return( PythSpacesAway( pFirstNPC->sGridNo, pSecondNPC->sGridNo ) <= ubMaxDistance ); } -BOOLEAN CheckGuyVisible( UINT8 ubNPC, UINT8 ubGuy ) +BOOLEAN CheckGuyVisible( UINT16 ubNPC, UINT16 ubGuy ) { // NB ONLY WORKS IF ON DIFFERENT TEAMS SOLDIERTYPE * pNPC, * pGuy; @@ -304,12 +304,12 @@ UINT32 NumWoundedMercsNearby( UINT8 ubProfileID ) return( bNumber ); } -INT8 NumMercsNear( UINT8 ubProfileID, UINT8 ubMaxDist ) +UINT16 NumMercsNear( UINT8 ubProfileID, UINT8 ubMaxDist ) { - INT8 bNumber = 0; - UINT32 uiLoop; - SOLDIERTYPE * pNPC; - SOLDIERTYPE * pSoldier; + UINT16 bNumber = 0; + UINT32 uiLoop; + SOLDIERTYPE *pNPC; + SOLDIERTYPE *pSoldier; INT32 sGridNo; pNPC = FindSoldierByProfileID( ubProfileID, FALSE ); @@ -399,7 +399,7 @@ BOOLEAN PCInSameRoom( UINT8 ubProfileID ) //DBrot: More Rooms //UINT8 ubRoom; UINT16 usRoom; - INT8 bLoop; + UINT16 bLoop; SOLDIERTYPE * pSoldier; pNPC = FindSoldierByProfileID( ubProfileID, FALSE ); @@ -541,8 +541,8 @@ BOOLEAN FemalePresent( UINT8 ubProfileID ) BOOLEAN CheckPlayerHasHead( void ) { - INT8 bLoop; - SOLDIERTYPE * pSoldier; + UINT16 bLoop; + SOLDIERTYPE * pSoldier; for ( bLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; bLoop++ ) { @@ -1725,7 +1725,7 @@ void GiveQuestRewardPoint( INT16 sQuestSectorX, INT16 sQuestsSectorY, INT8 bExpR { ScreenMsg( FONT_MCOLOR_LTBLUE, MSG_TESTVERSION, L"QUEST COMPLETED - Adding to merc records and awarding experiences (%d).", (bExpReward * gGameExternalOptions.usAwardSpecialExpForQuests) ); - for ( UINT8 i = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; i <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; i++ ) + for ( UINT16 i = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; i <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; i++ ) { if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife >= CONSCIOUSNESS && !(MercPtrs[ i ]->flags.uiStatusFlags & SOLDIER_VEHICLE) && MercPtrs[ i ]->ubProfile != NO_PROFILE && MercPtrs[ i ]->sSectorX == sQuestSectorX && MercPtrs[ i ]->sSectorY == sQuestsSectorY && !MercPtrs[ i ]->flags.fBetweenSectors && MercPtrs[ i ]->bTeam == gbPlayerNum && diff --git a/Strategic/Quests.h b/Strategic/Quests.h index f3a6b017..9ceab069 100644 --- a/Strategic/Quests.h +++ b/Strategic/Quests.h @@ -728,12 +728,12 @@ extern BOOLEAN CheckNPCWounded( UINT8 ubProfileID, BOOLEAN fByPlayerOnly ); extern BOOLEAN CheckNPCInOkayHealth( UINT8 ubProfileID ); extern BOOLEAN CheckNPCBleeding( UINT8 ubProfileID ); extern BOOLEAN CheckNPCWithin( UINT8 ubFirstNPC, UINT8 ubSecondNPC, UINT8 ubMaxDistance ); -extern BOOLEAN CheckGuyVisible( UINT8 ubNPC, UINT8 ubGuy ); +extern BOOLEAN CheckGuyVisible( UINT16 ubNPC, UINT16 ubGuy ); extern BOOLEAN CheckNPCAt( UINT8 ubNPC, INT32 sGridNo ); extern BOOLEAN CheckNPCIsEnemy( UINT8 ubProfileID ); extern BOOLEAN CheckIfMercIsNearNPC( SOLDIERTYPE *pMerc, UINT8 ubProfileId ); extern UINT32 NumWoundedMercsNearby( UINT8 ubProfileID ); -extern INT8 NumMercsNear( UINT8 ubProfileID, UINT8 ubMaxDist ); +extern UINT16 NumMercsNear( UINT8 ubProfileID, UINT8 ubMaxDist ); extern BOOLEAN CheckNPCIsEPC( UINT8 ubProfileID ); //DBrot: More Rooms //extern BOOLEAN NPCInRoom( UINT8 ubProfileID, UINT8 ubRoomID ); diff --git a/Strategic/Scheduling.cpp b/Strategic/Scheduling.cpp index f3843865..a3f36349 100644 --- a/Strategic/Scheduling.cpp +++ b/Strategic/Scheduling.cpp @@ -657,7 +657,7 @@ BOOLEAN SortSchedule( SCHEDULENODE *pSchedule ) BOOLEAN BumpAnyExistingMerc( INT32 sGridNo ) { - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE * pSoldier; // NB this is the person already in the location, INT32 sNewGridNo; UINT8 ubDir; diff --git a/Strategic/Scheduling.h b/Strategic/Scheduling.h index aa80f5fb..084223fa 100644 --- a/Strategic/Scheduling.h +++ b/Strategic/Scheduling.h @@ -63,7 +63,7 @@ public: UINT32 usData2[MAX_SCHEDULE_ACTIONS]; // Secondary information, not used by most actions UINT8 ubAction[MAX_SCHEDULE_ACTIONS]; UINT8 ubScheduleID; - UINT8 ubSoldierID; + UINT16 ubSoldierID; UINT16 usFlags; public: SCHEDULENODE& operator=(const _OLD_SCHEDULENODE& src); diff --git a/Strategic/Strategic Event Handler.cpp b/Strategic/Strategic Event Handler.cpp index a1207084..266f159a 100644 --- a/Strategic/Strategic Event Handler.cpp +++ b/Strategic/Strategic Event Handler.cpp @@ -55,7 +55,7 @@ UINT32 guiPabloExtraDaysBribed = 0; UINT8 gubCambriaMedicalObjects; -extern INT8 NumMercsNear( UINT8 ubProfileID, UINT8 ubMaxDist ); +extern UINT16 NumMercsNear( UINT8 ubProfileID, UINT8 ubMaxDist ); extern SECTOR_EXT_DATA SectorExternalData[256][4]; diff --git a/Strategic/Strategic Merc Handler.cpp b/Strategic/Strategic Merc Handler.cpp index 6e131a77..e3541cf5 100644 --- a/Strategic/Strategic Merc Handler.cpp +++ b/Strategic/Strategic Merc Handler.cpp @@ -189,7 +189,7 @@ void StrategicHandlePlayerTeamMercDeath( SOLDIERTYPE *pSoldier ) void MercDailyUpdate() { INT32 cnt; - INT8 bLastTeamID; + UINT16 bLastTeamID; SOLDIERTYPE *pSoldier; //SOLDIERTYPE *pQuitList[ 21 ]; MERCPROFILESTRUCT *pProfile; @@ -725,7 +725,7 @@ void HandleMercsAboutToLeave( SOLDIERTYPE *pMercList ) // ATE: This function deals with MERC MERC and NPC's leaving because of not getting paid... // NOT AIM renewals.... -void MercsContractIsFinished( UINT8 ubID ) +void MercsContractIsFinished( UINT16 ubID ) { SOLDIERTYPE *pSoldier; @@ -779,7 +779,7 @@ void MercsContractIsFinished( UINT8 ubID ) } // ATE: Called for RPCs who should now complain about no pay... -void RPCWhineAboutNoPay( UINT8 ubID ) +void RPCWhineAboutNoPay( UINT16 ubID ) { SOLDIERTYPE *pSoldier; @@ -908,17 +908,14 @@ void MercComplainAboutEquipment( UINT8 ubProfile ) void UpdateBuddyAndHatedCounters( void ) { - INT8 bMercID; - INT32 iLoop; - INT8 bOtherID; - INT8 bLastTeamID; - UINT8 ubOtherProfileID; - SOLDIERTYPE *pSoldier; - SOLDIERTYPE *pOtherSoldier; - MERCPROFILESTRUCT *pProfile; - BOOLEAN fSameGroupOnly; - - BOOLEAN fUpdatedTimeTillNextHatedComplaint = FALSE; + UINT16 bMercID, bOtherID, bLastTeamID; + INT32 iLoop; + UINT8 ubOtherProfileID; + SOLDIERTYPE *pSoldier; + SOLDIERTYPE *pOtherSoldier; + MERCPROFILESTRUCT *pProfile; + BOOLEAN fSameGroupOnly; + BOOLEAN fUpdatedTimeTillNextHatedComplaint = FALSE; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; @@ -1259,7 +1256,7 @@ void UpdateBuddyAndHatedCounters( void ) void HourlyCamouflageUpdate( void ) { - INT8 bMercID, bLastTeamID; + UINT16 bMercID, bLastTeamID; SOLDIERTYPE * pSoldier; BOOLEAN camoWoreOff = FALSE; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; diff --git a/Strategic/Strategic Merc Handler.h b/Strategic/Strategic Merc Handler.h index 838a24ab..2ea34e9f 100644 --- a/Strategic/Strategic Merc Handler.h +++ b/Strategic/Strategic Merc Handler.h @@ -6,8 +6,8 @@ class SOLDIERTYPE; void StrategicHandlePlayerTeamMercDeath( SOLDIERTYPE *pSoldier ); void MercDailyUpdate(); -void MercsContractIsFinished( UINT8 ubID ); -void RPCWhineAboutNoPay( UINT8 ubID ); +void MercsContractIsFinished( UINT16 ubID ); +void RPCWhineAboutNoPay( UINT16 ubID ); void MercComplainAboutEquipment( UINT8 ubProfileID ); BOOLEAN SoldierHasWorseEquipmentThanUsedTo( SOLDIERTYPE *pSoldier ); void UpdateBuddyAndHatedCounters( void ); diff --git a/Strategic/Strategic Mines.cpp b/Strategic/Strategic Mines.cpp index 19816871..1e9f0f72 100644 --- a/Strategic/Strategic Mines.cpp +++ b/Strategic/Strategic Mines.cpp @@ -136,7 +136,7 @@ UINT8 gubMonsterMineInfestation[]={ // the static NPC dialogue faces //extern UINT32 uiExternalStaticNPCFaces[]; extern FACETYPE *gpCurrentTalkingFace; -extern UINT8 gubCurrentTalkingID; +extern UINT16 gubCurrentTalkingID; diff --git a/Strategic/Strategic Movement.cpp b/Strategic/Strategic Movement.cpp index 67d0e69d..64693fc9 100644 --- a/Strategic/Strategic Movement.cpp +++ b/Strategic/Strategic Movement.cpp @@ -4366,7 +4366,7 @@ BOOLEAN LoadPlayerGroupList( HWFILE hFile, GROUP **pGroup ) //Should never happen Assert( sTempID != -1 ); - pTemp->ubID = (UINT8) sTempID; + pTemp->ubID = (UINT16) sTempID; pTemp->pSoldier = &Menptr[ pTemp->ubID ]; diff --git a/Strategic/Strategic Movement.h b/Strategic/Strategic Movement.h index d8bdfacd..58f95ade 100644 --- a/Strategic/Strategic Movement.h +++ b/Strategic/Strategic Movement.h @@ -52,7 +52,7 @@ typedef struct WAYPOINT typedef struct PLAYERGROUP { UINT8 ubProfileID; //SAVE THIS VALUE ONLY. The others are temp (for quick access) - UINT8 ubID; //index in the Menptr array + UINT16 ubID; //index in the Menptr array SOLDIERTYPE *pSoldier; //direct access to the soldier pointer UINT8 bFlags; //flags referring to individual player soldiers struct PLAYERGROUP *next; //next player in list diff --git a/Strategic/Strategic Town Loyalty.cpp b/Strategic/Strategic Town Loyalty.cpp index 8fb982ad..802952d2 100644 --- a/Strategic/Strategic Town Loyalty.cpp +++ b/Strategic/Strategic Town Loyalty.cpp @@ -2133,9 +2133,9 @@ BOOLEAN DidFirstBattleTakePlaceInThisTown( INT8 bTownId ) UINT32 PlayerStrength( void ) { - UINT8 ubLoop; - SOLDIERTYPE * pSoldier; - UINT32 uiStrength, uiTotal = 0; + UINT16 ubLoop; + SOLDIERTYPE * pSoldier; + UINT32 uiStrength, uiTotal = 0; for ( ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++ ) { @@ -2155,9 +2155,9 @@ UINT32 PlayerStrength( void ) UINT32 EnemyStrength( void ) { - UINT8 ubLoop; - SOLDIERTYPE * pSoldier; - UINT32 uiStrength, uiTotal = 0; + UINT16 ubLoop; + SOLDIERTYPE * pSoldier; + UINT32 uiStrength, uiTotal = 0; for ( ubLoop = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ubLoop++ ) { diff --git a/Strategic/Strategic_VS2019.vcxproj b/Strategic/Strategic_VS2019.vcxproj index 4337e3f2..c87d17eb 100644 --- a/Strategic/Strategic_VS2019.vcxproj +++ b/Strategic/Strategic_VS2019.vcxproj @@ -175,67 +175,67 @@ StaticLibrary true NotSet - v142 + v143 StaticLibrary true NotSet - v142 + v143 StaticLibrary true NotSet - v142 + v143 StaticLibrary true NotSet - v142 + v143 StaticLibrary false false NotSet - v142 + v143 StaticLibrary false false NotSet - v142 + v143 StaticLibrary false false NotSet - v142 + v143 StaticLibrary false false NotSet - v142 + v143 StaticLibrary false false NotSet - v142 + v143 StaticLibrary false false NotSet - v142 + v143 diff --git a/Strategic/Strategic_VS2019.vcxproj.user b/Strategic/Strategic_VS2019.vcxproj.user new file mode 100644 index 00000000..88a55094 --- /dev/null +++ b/Strategic/Strategic_VS2019.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Strategic/mapscreen.cpp b/Strategic/mapscreen.cpp index e9798e15..878484be 100644 --- a/Strategic/mapscreen.cpp +++ b/Strategic/mapscreen.cpp @@ -502,7 +502,7 @@ BOOLEAN gfMapPanelWasRedrawn = FALSE; UINT8 gubMAP_HandInvDispText[ NUM_INV_SLOTS ]; // currently selected character's list index -INT8 bSelectedInfoChar = -1; +INT16 bSelectedInfoChar = -1; // map sort button images INT32 giMapSortButtonImage[ MAX_SORT_METHODS ] = { -1, -1, -1, -1, -1, -1 }; @@ -926,7 +926,6 @@ INT32 GetIndexForthis( SOLDIERTYPE *pSoldier ); void CheckForAndRenderNewMailOverlay(); -BOOLEAN MapCharacterHasAccessibleInventory( INT8 bCharNumber ); void CheckForInventoryModeCancellation(); void ChangeMapScreenMaskCursor( UINT16 usCursor ); @@ -1905,16 +1904,14 @@ BOOLEAN InitializeInvPanelCoordsRobot() } // the tries to select a mapscreen character by his soldier ID -BOOLEAN SetInfoChar( UINT8 ubID ) +BOOLEAN SetInfoChar( UINT16 ubID ) { - INT8 bCounter; - - for ( bCounter = 0; bCounter < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; bCounter++) + for (INT16 bCounter = 0; bCounter < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; bCounter++) { // skip invalid characters if ( gCharactersList[ bCounter ].fValid == TRUE ) { - if ( gCharactersList[ bCounter ].usSolID == (UINT16)ubID ) + if ( gCharactersList[ bCounter ].usSolID == ubID ) { ChangeSelectedInfoChar( bCounter, TRUE ); return( TRUE ); @@ -3985,7 +3982,7 @@ void AddCharacter( SOLDIERTYPE *pCharacter ) } // copy over soldier id value - gCharactersList[usCount].usSolID = ( UINT16 )pCharacter->ubID; + gCharactersList[usCount].usSolID = pCharacter->ubID; // valid character gCharactersList[usCount].fValid = TRUE; @@ -5338,9 +5335,19 @@ UINT32 MapScreenHandle(void) CreateMouseRegionForPauseOfClock( INTERFACE_CLOCK_X, INTERFACE_CLOCK_Y ); // WANNE: The number of merc we can display in the list, depends on the resolution - if (iResolution >= _640x480 && iResolution < _800x600) + if (isWidescreenUI()) { - maxNumberOfMercVisibleInStrategyList = 22; + if (giMAXIMUM_NUMBER_OF_PLAYER_SLOTS <= 57) + maxNumberOfMercVisibleInStrategyList = giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; + else + maxNumberOfMercVisibleInStrategyList = 57; + } + else if (iResolution >= _1024x768) + { + if (giMAXIMUM_NUMBER_OF_PLAYER_SLOTS <= 51) + maxNumberOfMercVisibleInStrategyList = giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; + else + maxNumberOfMercVisibleInStrategyList = 51; } else if (iResolution < _1024x768) { @@ -5348,10 +5355,7 @@ UINT32 MapScreenHandle(void) } else { - if (giMAXIMUM_NUMBER_OF_PLAYER_SLOTS <= 51) - maxNumberOfMercVisibleInStrategyList = giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; - else - maxNumberOfMercVisibleInStrategyList = 51; + maxNumberOfMercVisibleInStrategyList = 22; } // create mouse regions @@ -7629,9 +7633,9 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) { if( gCharactersList[ giHighLine ].fValid == TRUE ) { - bSelectedAssignChar = ( INT8 )giHighLine; + bSelectedAssignChar = ( INT16 )giHighLine; RebuildAssignmentsBox( ); - ChangeSelectedInfoChar( ( INT8 ) giHighLine, FALSE ); + ChangeSelectedInfoChar( ( INT16 ) giHighLine, FALSE ); fShowAssignmentMenu = TRUE; } } @@ -7639,7 +7643,7 @@ void GetMapKeyboardInput( UINT32 *puiNewEvent ) { if( gCharactersList[ bSelectedInfoChar ].fValid == TRUE ) { - bSelectedAssignChar = ( INT8 )bSelectedInfoChar; + bSelectedAssignChar = bSelectedInfoChar; RebuildAssignmentsBox( ); fShowAssignmentMenu = TRUE; } @@ -11482,7 +11486,7 @@ void TeamListAssignmentRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason ) return; } - bSelectedAssignChar = ( INT8 ) iValue + FIRSTmercTOdisplay; + bSelectedAssignChar = ( INT16 ) iValue + FIRSTmercTOdisplay; RebuildAssignmentsBox( ); // reset dest character @@ -11740,7 +11744,7 @@ void TeamListDestinationRegionBtnCallBack(MOUSE_REGION *pRegion, INT32 iReason ) // select this character as the one plotting strategic movement - SetSelectedDestChar( (INT8)iValue + FIRSTmercTOdisplay ); + SetSelectedDestChar( (INT16)iValue + FIRSTmercTOdisplay ); // remember the current paths for all selected characters so we can restore them if need be RememberPreviousPathForAllSelectedChars(); @@ -12793,7 +12797,7 @@ void ReBuildCharactersList( void ) void HandleChangeOfInfoChar( void ) { - static INT8 bOldInfoChar = -1; + static INT16 bOldInfoChar = -1; if( bSelectedInfoChar != bOldInfoChar ) { @@ -12849,7 +12853,7 @@ void TestMessageSystem( void ) void EnableDisableTeamListRegionsAndHelpText( void ) { // check if valid character here, if so, then do nothing..other wise set help text timer to a gazillion - INT8 bCharNum; + INT16 bCharNum; for( bCharNum = 0; bCharNum < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; bCharNum++ ) @@ -13004,10 +13008,10 @@ void UpdatePausedStatesDueToTimeCompression( void ) BOOLEAN ContinueDialogue(SOLDIERTYPE *pSoldier, BOOLEAN fDone ) { // continue this grunts dialogue, restore when done - static INT8 bOldSelectedInfoChar = -1; + static INT16 bOldSelectedInfoChar = -1; static BOOLEAN fTalkingingGuy = FALSE; - INT8 bCounter = 0; + UINT16 bCounter = 0; @@ -13665,9 +13669,9 @@ void UpdateStatusOfMapSortButtons( void ) -INT8 GetLastValidCharacterInTeamPanelList( void ) +INT16 GetLastValidCharacterInTeamPanelList( void ) { - INT8 iCounter = 0, iValue = 0; + INT16 iCounter = 0, iValue = 0; // run through the list and find the last valid guy in the list for( iCounter = 0; iCounter < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; iCounter++ ) @@ -14543,7 +14547,7 @@ void SortListOfMercsInTeamPanel( BOOLEAN fRetainSelectedMercs, BOOLEAN fReverse INT32 iCounter = 0, iCounterA = 0; INT16 sEndSectorA, sEndSectorB; INT32 iExpiryTime, iExpiryTimeA; - UINT8 uiID, uiIDA; + UINT16 uiID, uiIDA; SOLDIERTYPE *pSelectedSoldier[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; SOLDIERTYPE *pCurrentSoldier = NULL; SOLDIERTYPE *pPreviousSelectedInfoChar = NULL; @@ -15093,7 +15097,7 @@ BOOLEAN CanToggleSelectedCharInventory( void ) -BOOLEAN MapCharacterHasAccessibleInventory( INT8 bCharNumber ) +BOOLEAN MapCharacterHasAccessibleInventory( INT16 bCharNumber ) { SOLDIERTYPE *pSoldier = NULL; @@ -15606,7 +15610,7 @@ INT32 GetContractExpiryTime( SOLDIERTYPE *pSoldier ) -void ChangeSelectedInfoChar( INT8 bCharNumber, BOOLEAN fResetSelectedList ) +void ChangeSelectedInfoChar( INT16 bCharNumber, BOOLEAN fResetSelectedList ) { Assert( ( bCharNumber >= -1 ) && ( bCharNumber < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS ) ); @@ -16177,10 +16181,10 @@ void RandomAwakeSelectedMercConfirmsStrategicMove( void ) SOLDIERTYPE *pSoldier = NULL; INT32 iCounter; // WDS - make number of mercenaries, etc. be configurable - UINT8 ubSelectedMercID[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; - UINT8 ubSelectedMercIndex[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + UINT16 ubSelectedMercID[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; + UINT16 ubSelectedMercIndex[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; for( iCounter = 0; iCounter < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; iCounter++ ) @@ -16193,7 +16197,7 @@ void RandomAwakeSelectedMercConfirmsStrategicMove( void ) !AM_A_ROBOT( pSoldier ) && !AM_AN_EPC( pSoldier ) && !pSoldier->flags.fMercAsleep ) { ubSelectedMercID[ ubNumMercs ] = pSoldier->ubID; - ubSelectedMercIndex[ ubNumMercs ] = (UINT8)iCounter; + ubSelectedMercIndex[ ubNumMercs ] = (UINT16)iCounter; ubNumMercs++; } @@ -16202,7 +16206,7 @@ void RandomAwakeSelectedMercConfirmsStrategicMove( void ) if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); // select that merc so that when he speaks we're showing his portrait and not someone else ChangeSelectedInfoChar( ubSelectedMercIndex[ ubChosenMerc ], FALSE ); diff --git a/Strategic/mapscreen.h b/Strategic/mapscreen.h index 16188e05..47ae7936 100644 --- a/Strategic/mapscreen.h +++ b/Strategic/mapscreen.h @@ -135,7 +135,7 @@ extern BOOLEAN gfInChangeArrivalSectorMode; extern BOOLEAN gfSkyriderEmptyHelpGiven; -BOOLEAN SetInfoChar(UINT8 ubSolId); +BOOLEAN SetInfoChar(UINT16 ubID); void EndMapScreen( BOOLEAN fDuringFade ); void ReBuildCharactersList( void ); @@ -152,7 +152,7 @@ BOOLEAN CanExtendContractForCharSlot( INT8 bCharNumber ); void TellPlayerWhyHeCantCompressTime( void ); -void ChangeSelectedInfoChar( INT8 bCharNumber, BOOLEAN fResetSelectedList ); +void ChangeSelectedInfoChar( INT16 bCharNumber, BOOLEAN fResetSelectedList ); void MAPEndItemPointer(); @@ -169,7 +169,7 @@ void ExplainWhySkyriderCantFly( void ); BOOLEAN CanChangeSleepStatusForCharSlot( INT8 bCharNumber ); BOOLEAN CanChangeSleepStatusForSoldier( SOLDIERTYPE *pSoldier ); -BOOLEAN MapCharacterHasAccessibleInventory( INT8 bCharNumber ); +BOOLEAN MapCharacterHasAccessibleInventory( INT16 bCharNumber ); // CHRISL: New functions to handle initialization of inventory coordinates BOOLEAN InitializeInvPanelCoordsOld( ); diff --git a/Strategic/strategicmap.cpp b/Strategic/strategicmap.cpp index 03a881c7..47083f91 100644 --- a/Strategic/strategicmap.cpp +++ b/Strategic/strategicmap.cpp @@ -2058,7 +2058,7 @@ void GetCurrentWorldSector( INT16 *psMapX, INT16 *psMapY ) } //not in overhead.h! -extern UINT8 NumEnemyInSector( ); +extern UINT16 NumEnemyInSector( ); void HandleRPCDescriptionOfSector( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ ) { @@ -2777,7 +2777,7 @@ void HandleQuestCodeOnSectorEntry( INT16 sNewSectorX, INT16 sNewSectorY, INT8 bN //UINT8 ubRandomMiner[RANDOM_HEAD_MINERS] = { 106, 156, 157, 158 }; //UINT8 ubMiner, ubMinersPlaced, ubMine; UINT8 ubThisMine; - UINT8 cnt; + UINT16 cnt; SOLDIERTYPE * pSoldier; // are we in a mine sector, on the surface? @@ -4063,7 +4063,7 @@ void JumpIntoAdjacentSector( UINT8 ubTacticalDirection, UINT8 ubJumpCode, INT32 // Set initial selected // ATE: moved this towards top... - gubPreferredInitialSelectedGuy = (UINT8)gusSelectedSoldier; + gubPreferredInitialSelectedGuy = gusSelectedSoldier; if ( ubJumpCode == JUMP_ALL_LOAD_NEW || ubJumpCode == JUMP_ALL_NO_LOAD ) { diff --git a/Tactical/Air Raid.cpp b/Tactical/Air Raid.cpp index 7fae23ba..9ecf6bb1 100644 --- a/Tactical/Air Raid.cpp +++ b/Tactical/Air Raid.cpp @@ -310,9 +310,9 @@ BOOLEAN BeginAirRaid( ) INT32 PickLocationNearAnyMercInSector( ) { - UINT8 ubMercsInSector[ 20 ] = { 0 }; - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + UINT16 ubMercsInSector[ 20 ] = { 0 }; + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; SOLDIERTYPE *pTeamSoldier; INT32 cnt=0; @@ -330,7 +330,7 @@ INT32 PickLocationNearAnyMercInSector( ) DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("PickLocationNearAnyMercInSector: looping %d",cnt)); if ( OK_INSECTOR_MERC( pTeamSoldier ) ) { - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ubNumMercs++; } } @@ -339,7 +339,7 @@ INT32 PickLocationNearAnyMercInSector( ) DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("PickLocationNearAnyMercInSector: number of guys %d",ubNumMercs)); if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("PickLocationNearAnyMercInSector: chosen guy = %d",ubChosenMerc)); return( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->sGridNo ); @@ -1007,7 +1007,7 @@ void DoBombing( ) } // Drop bombs... - InternalIgniteExplosion( NOBODY, CenterX( sBombGridNo ), CenterY( sBombGridNo ), 0, sBombGridNo, usItem, fLocate , (UINT8)IsRoofPresentAtGridNo( sBombGridNo ) ); + InternalIgniteExplosion( NOBODY, CenterX( sBombGridNo ), CenterY( sBombGridNo ), 0, sBombGridNo, usItem, fLocate, (UINT8)IsRoofPresentAtGridNo( sBombGridNo ) ); } diff --git a/Tactical/Animation Data.cpp b/Tactical/Animation Data.cpp index 89222898..63cd8310 100644 --- a/Tactical/Animation Data.cpp +++ b/Tactical/Animation Data.cpp @@ -917,7 +917,7 @@ BOOLEAN DeInitAnimationSystem( ) -STRUCTURE_FILE_REF *InternalGetAnimationStructureRef( UINT8 usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState, BOOLEAN fUseAbsolute ) +STRUCTURE_FILE_REF *InternalGetAnimationStructureRef( UINT16 usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState, BOOLEAN fUseAbsolute ) { INT8 bStructDataType; @@ -946,13 +946,13 @@ STRUCTURE_FILE_REF *InternalGetAnimationStructureRef( UINT8 usSoldierID, UINT16 } -STRUCTURE_FILE_REF *GetAnimationStructureRef( UINT8 usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState ) +STRUCTURE_FILE_REF *GetAnimationStructureRef( UINT16 usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState ) { return( InternalGetAnimationStructureRef( usSoldierID, usSurfaceIndex, usAnimState, FALSE ) ); } -STRUCTURE_FILE_REF *GetDefaultStructureRef( UINT8 usSoldierID ) +STRUCTURE_FILE_REF *GetDefaultStructureRef( UINT16 usSoldierID ) { return( gAnimStructureDatabase[ MercPtrs[ usSoldierID ]->ubBodyType ][ DEFAULT_STRUCT ].pStructureFileRef ); } diff --git a/Tactical/Animation Data.h b/Tactical/Animation Data.h index f194748c..9d6dc7e7 100644 --- a/Tactical/Animation Data.h +++ b/Tactical/Animation Data.h @@ -696,8 +696,8 @@ void ClearAnimationSurfacesUsageHistory( UINT16 usSoldierID ); void DeleteAnimationProfiles( ); BOOLEAN LoadAnimationProfiles( ); -STRUCTURE_FILE_REF *GetAnimationStructureRef( UINT8 usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState ); -STRUCTURE_FILE_REF *GetDefaultStructureRef( UINT8 usSoldierID ); +STRUCTURE_FILE_REF *GetAnimationStructureRef( UINT16 usSoldierID, UINT16 usSurfaceIndex, UINT16 usAnimState ); +STRUCTURE_FILE_REF *GetDefaultStructureRef( UINT16 usSoldierID ); // Profile data extern ANIM_PROF *gpAnimProfiles; diff --git a/Tactical/Arms Dealer Init.cpp b/Tactical/Arms Dealer Init.cpp index 4cc5d083..7c5dd899 100644 --- a/Tactical/Arms Dealer Init.cpp +++ b/Tactical/Arms Dealer Init.cpp @@ -1818,7 +1818,7 @@ void RemoveRandomItemFromArmsDealerInventory( UINT8 ubArmsDealer, UINT16 usItemI } -BOOLEAN AddDeadArmsDealerItemsToWorld( UINT8 usProfileID, UINT8 aMercID ) +BOOLEAN AddDeadArmsDealerItemsToWorld( UINT8 usProfileID, UINT16 aMercID ) { //Get Dealer ID from from merc Id INT8 bArmsDealer = GetArmsDealerIDFromMercID( usProfileID ); diff --git a/Tactical/Arms Dealer Init.h b/Tactical/Arms Dealer Init.h index cccc3af2..1212f9c7 100644 --- a/Tactical/Arms Dealer Init.h +++ b/Tactical/Arms Dealer Init.h @@ -366,7 +366,7 @@ UINT32 GetTimeToFixItemBeingRepaired( UINT8 ubArmsDealer, UINT16 usItemIndex, UI BOOLEAN CanDealerTransactItem( UINT8 ubArmsDealer, UINT16 usItemIndex, BOOLEAN fPurchaseFromPlayer ); BOOLEAN CanDealerRepairItem( UINT8 ubArmsDealer, UINT16 usItemIndex ); -BOOLEAN AddDeadArmsDealerItemsToWorld( UINT8 usProfileID, UINT8 aMercID ); +BOOLEAN AddDeadArmsDealerItemsToWorld( UINT8 usProfileID, UINT16 aMercID ); void MakeObjectOutOfDealerItems( DEALER_SPECIAL_ITEM *pSpclItemInfo, OBJECTTYPE *pObject ); void CreateObjectForDealer( int usItem, int status, int numObjects, OBJECTTYPE *pObject ); diff --git a/Tactical/Auto Bandage.cpp b/Tactical/Auto Bandage.cpp index b254fb02..bd5e2309 100644 --- a/Tactical/Auto Bandage.cpp +++ b/Tactical/Auto Bandage.cpp @@ -89,7 +89,7 @@ BOOLEAN RemoveFacesForAutoBandage( void ); extern BOOLEAN CanCharacterAutoBandageTeammate( SOLDIERTYPE *pSoldier ); extern BOOLEAN CanCharacterBeAutoBandagedByTeammate( SOLDIERTYPE *pSoldier ); -extern UINT8 NumEnemyInSector( ); +extern UINT16 NumEnemyInSector( ); void BeginAutoBandage( ) { @@ -316,7 +316,7 @@ BOOLEAN CreateAutoBandageString( void ) { INT32 cnt; // WDS - make number of mercenaries, etc. be configurable - UINT8 ubDoctor[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS], ubDoctors = 0; + UINT16 ubDoctor[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS], ubDoctors = 0; UINT32 uiDoctorNameStringLength = 1; // for end-of-string character STR16 sTemp; SOLDIERTYPE * pSoldier; @@ -399,7 +399,7 @@ void SetAutoBandageComplete( void ) void AutoBandage( BOOLEAN fStart ) { SGPRect aRect; - UINT8 ubLoop; + UINT16 ubLoop; INT32 cnt; SOLDIERTYPE * pSoldier; diff --git a/Tactical/Boxing.cpp b/Tactical/Boxing.cpp index 6ff8f35d..3c79b2d5 100644 --- a/Tactical/Boxing.cpp +++ b/Tactical/Boxing.cpp @@ -28,7 +28,7 @@ #endif INT32 gsBoxerGridNo[ NUM_BOXERS ] = { 11393, 11233, 11073 }; -UINT8 gubBoxerID[ NUM_BOXERS ] = { NOBODY, NOBODY, NOBODY }; +UINT16 gubBoxerID[ NUM_BOXERS ] = { NOBODY, NOBODY, NOBODY }; BOOLEAN gfBoxerFought[ NUM_BOXERS ] = { FALSE, FALSE, FALSE }; BOOLEAN gfLastBoxingMatchWonByPlayer = FALSE; UINT8 gubBoxingMatchesWon = 0; @@ -331,7 +331,7 @@ void CountPeopleInBoxingRingAndDoActions( void ) BOOLEAN CheckOnBoxers( void ) { UINT32 uiLoop; - UINT8 ubID; + UINT16 ubID; // repick boxer IDs every time if ( gubBoxerID[0] == NOBODY ) @@ -482,9 +482,9 @@ BOOLEAN AnotherFightPossible( void ) // a player has at least OKLIFE + 5 life // and at least one fight HAS occurred - UINT8 ubLoop; - SOLDIERTYPE * pSoldier; - UINT8 ubAvailable; + UINT16 ubLoop; + SOLDIERTYPE * pSoldier; + UINT8 ubAvailable; ubAvailable = BoxersAvailable(); diff --git a/Tactical/Boxing.h b/Tactical/Boxing.h index 89787494..4d4abf6e 100644 --- a/Tactical/Boxing.h +++ b/Tactical/Boxing.h @@ -20,7 +20,7 @@ enum DisqualificationReasons } ; extern INT32 gsBoxerGridNo[ NUM_BOXERS ]; -extern UINT8 gubBoxerID[ NUM_BOXERS ]; +extern UINT16 gubBoxerID[ NUM_BOXERS ]; extern BOOLEAN gfBoxerFought[ NUM_BOXERS ]; extern INT8 gbBoxingState; extern BOOLEAN gfLastBoxingMatchWonByPlayer; diff --git a/Tactical/Bullets.h b/Tactical/Bullets.h index db087445..2cd3e602 100644 --- a/Tactical/Bullets.h +++ b/Tactical/Bullets.h @@ -30,8 +30,8 @@ typedef struct LEVELNODE* pNodes[BULLET_TRACER_MAX_LENGTH]; //afp-end INT32 iBullet; - UINT8 ubFirerID; - UINT8 ubTargetID; + UINT16 ubFirerID; + UINT16 ubTargetID; INT8 bStartCubesAboveLevelZ; INT8 bEndCubesAboveLevelZ; INT32 sGridNo; @@ -83,7 +83,7 @@ typedef struct extern UINT32 guiNumBullets; -INT32 CreateBullet( UINT8 ubFirer, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem ); +INT32 CreateBullet( UINT16 ubFirerID, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem ); void RemoveBullet( INT32 iBullet ); void StopBullet( INT32 iBullet ); void UpdateBullets( ); diff --git a/Tactical/Campaign.cpp b/Tactical/Campaign.cpp index 770ebc64..a31dbd56 100644 --- a/Tactical/Campaign.cpp +++ b/Tactical/Campaign.cpp @@ -1837,7 +1837,7 @@ void TestDumpStatChanges(void) void AwardExperienceBonusToActiveSquad( UINT8 ubExpBonusType ) { UINT16 usXPs = 0; - UINT8 ubGuynum; + UINT16 ubGuynum; SOLDIERTYPE *pSoldier; diff --git a/Tactical/Civ Quotes.cpp b/Tactical/Civ Quotes.cpp index 11318873..38b3d2af 100644 --- a/Tactical/Civ Quotes.cpp +++ b/Tactical/Civ Quotes.cpp @@ -1127,7 +1127,7 @@ BOOLEAN LoadCivQuotesFromLoadGameFile( HWFILE hFile ) return( TRUE ); } //-------------------------------------------------------------- - +#pragma optimize("", off) // anv: start enemy taunt with probabilty depending on taunt settings void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, UINT32 uiTargetID ) { @@ -1342,6 +1342,7 @@ void PossiblyStartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, UINT32 ui StartEnemyTaunt( pCiv, iTauntType, pTarget ); } +#pragma optimize("", on) // SANDRO - soldier taunts void StartEnemyTaunt( SOLDIERTYPE *pCiv, TAUNTTYPE iTauntType, SOLDIERTYPE *pTarget ) diff --git a/Tactical/Dialogue Control.cpp b/Tactical/Dialogue Control.cpp index 2d2efb52..e9c5576f 100644 --- a/Tactical/Dialogue Control.cpp +++ b/Tactical/Dialogue Control.cpp @@ -176,7 +176,7 @@ UINT8 gubNumStopTimeQuotes = 2; #define INITIAL_Q_SIZE 10 HQUEUE ghDialogueQ = NULL; FACETYPE *gpCurrentTalkingFace = NULL; -UINT8 gubCurrentTalkingID = NO_PROFILE; +UINT16 gubCurrentTalkingID = NO_PROFILE; INT8 gbUIHandlerID; INT32 giNPCReferenceCount = 0; @@ -763,7 +763,7 @@ void HandleDialogue( ) { SOLDIERTYPE * pMike; INT32 sPlayerGridNo; - UINT8 ubPlayerID; + UINT16 ubPlayerID; pMike = FindSoldierByProfileID( MIKE, FALSE ); if ( pMike ) @@ -949,11 +949,11 @@ void HandleDialogue( ) } else if ( QItem->uiSpecialEventFlag & DIALOGUE_SPECIAL_EVENT_CONTRACT_WANTS_TO_RENEW ) { - HandleMercIsWillingToRenew( (UINT8)QItem->uiSpecialEventData ); + HandleMercIsWillingToRenew( (UINT16)QItem->uiSpecialEventData ); } else if ( QItem->uiSpecialEventFlag & DIALOGUE_SPECIAL_EVENT_CONTRACT_NOGO_TO_RENEW ) { - HandleMercIsNotWillingToRenew( (UINT8)QItem->uiSpecialEventData ); + HandleMercIsNotWillingToRenew( (UINT16)QItem->uiSpecialEventData ); } else { @@ -2061,7 +2061,7 @@ BOOLEAN SpecialCharacterDialogueEventWithExtraParam( UINT32 uiSpecialEventFlag, } extern INT8 gbSelectedArmsDealerID; -extern UINT8 gusIDOfCivTrader; +extern UINT16 gusIDOfCivTrader; BOOLEAN ExecuteCharacterDialogue( UINT8 ubCharacterNum, UINT16 usQuoteNum, INT32 iFaceIndex, UINT8 bUIHandlerID, BOOLEAN fFromSoldier ) { @@ -3176,8 +3176,8 @@ void HandleDialogueEnd( FACETYPE *pFace ) SOLDIERTYPE *pSoldier = FindSoldierByProfileID( gTacticalStatus.ubLastQuoteProfileNUm, FALSE ); if ( pSoldier ) { - UINT8 ubSeenEnemies[ MAX_NUM_SOLDIERS ]; - UINT8 ubSeenEnemiesCnt = 0; + UINT16 ubSeenEnemies[ MAX_NUM_SOLDIERS ]; + UINT16 ubSeenEnemiesCnt = 0; switch( gTacticalStatus.ubLastQuoteSaid ) { case QUOTE_CLOSE_CALL: @@ -3188,7 +3188,7 @@ void HandleDialogueEnd( FACETYPE *pFace ) break; default: // select random enemy, who we see, who sees us and isn't deaf - for(UINT8 cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID ; cnt++ ) + for(UINT16 cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID ; cnt++ ) { if( MercPtrs[cnt] != NULL && MercPtrs[cnt]->aiData.bOppList[pSoldier->ubID] == SEEN_CURRENTLY && MercPtrs[pSoldier->ubID]->aiData.bOppList[cnt] == SEEN_CURRENTLY && !( MercPtrs[cnt]->bDeafenedCounter > 0 ) ) @@ -3359,9 +3359,9 @@ void RenderSubtitleBoxOverlay( VIDEO_OVERLAY *pBlitter ) void SayQuoteFromAnyBodyInSector( UINT16 usQuoteNum ) { // WDS - make number of mercenaries, etc. be configurable - std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS, 0); - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS, 0); + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; SOLDIERTYPE *pTeamSoldier; INT32 cnt; @@ -3395,7 +3395,7 @@ void SayQuoteFromAnyBodyInSector( UINT16 usQuoteNum ) #endif } - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ubNumMercs++; } } @@ -3403,7 +3403,7 @@ void SayQuoteFromAnyBodyInSector( UINT16 usQuoteNum ) // If we are > 0 if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); // If we are air raid, AND red exists somewhere... if ( usQuoteNum == QUOTE_AIR_RAID ) @@ -3412,7 +3412,7 @@ void SayQuoteFromAnyBodyInSector( UINT16 usQuoteNum ) { if ( ubMercsInSector[ cnt ] == 11 ) { - ubChosenMerc = (UINT8)cnt; + ubChosenMerc = (UINT16)cnt; break; } } @@ -3447,7 +3447,7 @@ void SayQuoteFromAnyBodyInThisSector( INT16 sSectorX, INT16 sSectorY, INT8 bSect // Add guy if he's a candidate... if( pTeamSoldier->sSectorX == sSectorX && pTeamSoldier->sSectorY == sSectorY && pTeamSoldier->bSectorZ == bSectorZ && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep ) { - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ++ubNumMercs; } } @@ -3481,9 +3481,9 @@ void SayQuoteFromAnyBodyInThisSector( INT16 sSectorX, INT16 sSectorY, INT8 bSect void SayQuoteFromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQuoteNum ) { // WDS - make number of mercenaries, etc. be configurable - std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0 ); - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0 ); + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; SOLDIERTYPE *pTeamSoldier; INT32 cnt; @@ -3503,7 +3503,7 @@ void SayQuoteFromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQuo { continue; } - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ubNumMercs++; } } @@ -3511,7 +3511,7 @@ void SayQuoteFromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQuo // If we are > 0 if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); if (usQuoteNum == 66) { @@ -3526,9 +3526,9 @@ void SayQuoteFromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQuo void SayQuote58FromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQuoteNum, INT8 bSex ) { // WDS - make number of mercenaries, etc. be configurable - std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; SOLDIERTYPE *pTeamSoldier; INT32 cnt = gTacticalStatus.Team[gbPlayerNum].bFirstID; @@ -3553,7 +3553,7 @@ void SayQuote58FromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQ continue; } - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ++ubNumMercs; } } @@ -3561,7 +3561,7 @@ void SayQuote58FromNearbyMercInSector( INT32 sGridNo, INT8 bDistance, UINT16 usQ // If we are > 0 if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); TacticalCharacterDialogue( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ], usQuoteNum ); } } diff --git a/Tactical/DynamicDialogue.cpp b/Tactical/DynamicDialogue.cpp index 68b69b1d..dd363506 100644 --- a/Tactical/DynamicDialogue.cpp +++ b/Tactical/DynamicDialogue.cpp @@ -1105,7 +1105,7 @@ void SetfDynamicOpinionSpeechInProgress( BOOLEAN aVal ) } -void AddOpinionEvent( UINT8 usProfileA, UINT8 usProfileB, UINT8 usEvent, BOOLEAN fStartDialogue ) +void AddOpinionEvent( UINT16 usProfileA, UINT16 usProfileB, UINT8 usEvent, BOOLEAN fStartDialogue ) { if ( usProfileA == NO_PROFILE || usProfileB == NO_PROFILE ) return; @@ -1669,10 +1669,9 @@ void RolloverDynamicOpinions( UINT8 usProfileA ) // check wether other people are friends with someone else we hate. All persons must be in Arulco void CheckForFriendsofHated( SOLDIERTYPE* pSoldier ) { - INT8 bMercID, bOtherID, bThirdID; + UINT16 bMercID, bOtherID, bThirdID, bLastTeamID; INT8 bOpinion = -1; INT8 bSecondOpinion = -1; - INT8 bLastTeamID; SOLDIERTYPE* pOtherSoldier; SOLDIERTYPE* pThirdSoldier; diff --git a/Tactical/DynamicDialogue.h b/Tactical/DynamicDialogue.h index 2eca4b6b..262fde2b 100644 --- a/Tactical/DynamicDialogue.h +++ b/Tactical/DynamicDialogue.h @@ -452,7 +452,7 @@ BOOLEAN LoadDynamicDialogue( HWFILE hwFile ); // modify usProfileA's opinion of usProfileB because of usEvent -void AddOpinionEvent( UINT8 usProfileA, UINT8 usProfileB, UINT8 usEvent, BOOLEAN fStartDialogue = TRUE ); +void AddOpinionEvent( UINT16 usProfileA, UINT16 usProfileB, UINT8 usEvent, BOOLEAN fStartDialogue = TRUE ); // get usProfileA's opinion of usProfileB on one of the last 4 days INT8 GetDynamicOpinionDay( UINT8 usProfileA, UINT8 usProfileB, UINT8 usDay ); diff --git a/Tactical/End Game.cpp b/Tactical/End Game.cpp index 93e5da86..cc95371f 100644 --- a/Tactical/End Game.cpp +++ b/Tactical/End Game.cpp @@ -182,7 +182,7 @@ void HandleDeidrannaDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLev { SOLDIERTYPE *pTeamSoldier; INT32 cnt; - UINT8 ubKillerSoldierID = NOBODY; + UINT16 ubKillerSoldierID = NOBODY; // Start victory music here... SetMusicMode( MUSIC_TACTICAL_VICTORY ); @@ -673,7 +673,7 @@ void BeginHandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT { // gTacticalStatus.ubAttackBusyCount++; DebugAttackBusy( "Killing off a queen ally.\n"); - pTeamSoldier->EVENT_SoldierGotHit( 0, 10000, 0, pTeamSoldier->ubDirection, 320, NOBODY , FIRE_WEAPON_NO_SPECIAL, pTeamSoldier->bAimShotLocation, 0, NOWHERE ); + pTeamSoldier->EVENT_SoldierGotHit( 0, 10000, 0, pTeamSoldier->ubDirection, 320, NOBODY, FIRE_WEAPON_NO_SPECIAL, pTeamSoldier->bAimShotLocation, 0, NOWHERE ); } } } @@ -685,7 +685,7 @@ void HandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLe { SOLDIERTYPE *pTeamSoldier; INT32 cnt; - UINT8 ubKillerSoldierID = NOBODY; + UINT16 ubKillerSoldierID = NOBODY; // Start victory music here... SetMusicMode( MUSIC_TACTICAL_VICTORY ); diff --git a/Tactical/Faces.cpp b/Tactical/Faces.cpp index f1c8c658..28f01135 100644 --- a/Tactical/Faces.cpp +++ b/Tactical/Faces.cpp @@ -50,8 +50,6 @@ #endif // Defines -#define NUM_FACE_SLOTS 50 - #define END_FACE_OVERLAY_DELAY 2000 @@ -135,7 +133,7 @@ INT32 InitSoldierFace( SOLDIERTYPE *pSoldier ) } -INT32 InitFace( UINT8 usMercProfileID, UINT8 ubSoldierID, UINT32 uiInitFlags ) +INT32 InitFace( UINT8 usMercProfileID, UINT16 ubSoldierID, UINT32 uiInitFlags ) { UINT32 uiBlinkFrequency; UINT32 uiExpressionFrequency; @@ -162,7 +160,7 @@ INT32 InitFace( UINT8 usMercProfileID, UINT8 ubSoldierID, UINT32 uiInitFlags ) } -INT32 InternalInitFace( UINT8 usMercProfileID, UINT8 ubSoldierID, UINT32 uiInitFlags, INT32 iFaceFileID, UINT32 uiBlinkFrequency, UINT32 uiExpressionFrequency ) +INT32 InternalInitFace( UINT8 usMercProfileID, UINT16 ubSoldierID, UINT32 uiInitFlags, INT32 iFaceFileID, UINT32 uiBlinkFrequency, UINT32 uiExpressionFrequency ) { FACETYPE *pFace; VOBJECT_DESC VObjectDesc; @@ -557,7 +555,7 @@ void DeleteFace( INT32 iFaceIndex ) } -void SetAutoFaceActiveFromSoldier( UINT32 uiDisplayBuffer, UINT32 uiRestoreBuffer, UINT8 ubSoldierID , UINT16 usFaceX, UINT16 usFaceY ) +void SetAutoFaceActiveFromSoldier( UINT32 uiDisplayBuffer, UINT32 uiRestoreBuffer, UINT16 ubSoldierID, UINT16 usFaceX, UINT16 usFaceY ) { if( ubSoldierID == NOBODY ) { @@ -761,7 +759,7 @@ void InternalSetAutoFaceActive( UINT32 uiDisplayBuffer, UINT32 uiRestoreBuffer, } -void SetAutoFaceInActiveFromSoldier( UINT8 ubSoldierID ) +void SetAutoFaceInActiveFromSoldier( UINT16 ubSoldierID ) { // Check for valid soldier CHECKV( ubSoldierID != NOBODY ); @@ -1349,7 +1347,7 @@ void SetFaceShade( SOLDIERTYPE *pSoldier, FACETYPE *pFace, BOOLEAN fExternBlit ) } } -BOOLEAN RenderAutoFaceFromSoldier( UINT8 ubSoldierID ) +BOOLEAN RenderAutoFaceFromSoldier( UINT16 ubSoldierID ) { // Check for valid soldier CHECKF( ubSoldierID != NOBODY ); @@ -2107,10 +2105,10 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE // Flugente: are we supplying ammo to someone else? if (gGameExternalOptions.ubExternalFeeding > 0) { - UINT8 ubID1 = 0; + UINT16 ubID1 = 0; UINT16 ubGunSlot1 = 0; UINT16 ubFaceSlot1 = 0; - UINT8 ubID2 = 0; + UINT16 ubID2 = 0; UINT16 ubGunSlot2 = 0; UINT16 ubFaceSlot2 = 0; if (MercPtrs[pFace->ubSoldierID]->IsFeedingExternal(&ubID1, &ubGunSlot1, &ubFaceSlot1, &ubID2, &ubGunSlot2, &ubFaceSlot2)) @@ -2640,7 +2638,7 @@ BOOLEAN RenderAutoFace( INT32 iFaceIndex ) } -BOOLEAN ExternRenderFaceFromSoldier( UINT32 uiBuffer, UINT8 ubSoldierID, INT16 sX, INT16 sY ) +BOOLEAN ExternRenderFaceFromSoldier( UINT32 uiBuffer, UINT16 ubSoldierID, INT16 sX, INT16 sY ) { // Check for valid soldier CHECKF( ubSoldierID != NOBODY ); diff --git a/Tactical/Food.cpp b/Tactical/Food.cpp index 07172191..7f7a995e 100644 --- a/Tactical/Food.cpp +++ b/Tactical/Food.cpp @@ -105,7 +105,7 @@ BOOLEAN DoesSoldierRefuseToEat( SOLDIERTYPE *pSoldier, OBJECTTYPE *pObj ) if ( UsingFoodSystem() ) { // static variables to remember the last food someone was forced to eat - static UINT8 lasteater = 0; + static UINT16 lasteater = 0; static UINT16 lastitem = 0; UINT32 foodtype = Item[pObj->usItem].foodtype; @@ -765,8 +765,8 @@ void EatFromInventory( SOLDIERTYPE *pSoldier, BOOLEAN fcanteensonly ) void HourlyFoodUpdate( void ) { - INT8 bMercID, bLastTeamID; - SOLDIERTYPE * pSoldier = NULL; + UINT16 bMercID, bLastTeamID; + SOLDIERTYPE * pSoldier = NULL; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; @@ -831,8 +831,8 @@ void SectorFillCanteens( void ) addtemperature = FOOD_WATER_POISONOUS_TEMPERATURE; // first step: fill all canteens in inventories - INT8 bMercID, bLastTeamID; - SOLDIERTYPE * pSoldier = NULL; + UINT16 bMercID, bLastTeamID; + SOLDIERTYPE * pSoldier = NULL; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; @@ -905,8 +905,8 @@ void SectorFillCanteens( void ) INT32 drumsize = Food[Item[pWaterDrum->usItem].foodtype].bDrinkPoints; // first step: fill all canteens in inventories - INT8 bMercID, bLastTeamID; - SOLDIERTYPE * pSoldier = NULL; + UINT16 bMercID, bLastTeamID; + SOLDIERTYPE * pSoldier = NULL; bMercID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; bLastTeamID = gTacticalStatus.Team[ gbPlayerNum ].bLastID; diff --git a/Tactical/Handle Doors.cpp b/Tactical/Handle Doors.cpp index 2c0b4fc8..34e7f81c 100644 --- a/Tactical/Handle Doors.cpp +++ b/Tactical/Handle Doors.cpp @@ -443,10 +443,8 @@ void ProcessImplicationsOfPCMessingWithDoor( SOLDIERTYPE * pSoldier ) // if player is hacking at a door in the brothel and a kingpin guy can see him if ( (InARoom( pSoldier->sGridNo, &usRoom ) && IN_BROTHEL( usRoom )) || (gWorldSectorX == 5 && gWorldSectorY == MAP_ROW_D && gbWorldSectorZ == 0 && (pSoldier->sGridNo == gModSettings.iBrothelDoor1 || pSoldier->sGridNo == gModSettings.iBrothelDoor2 || pSoldier->sGridNo == gModSettings.iBrothelDoor3 ) ) )//11010,11177,11176 { - UINT8 ubLoop; - // see if a kingpin goon can see us - for ( ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ubLoop++ ) + for (UINT16 ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ubLoop++ ) { pGoon = MercPtrs[ ubLoop ]; if ( pGoon->ubCivilianGroup == KINGPIN_CIV_GROUP && pGoon->bActive && pGoon->bInSector && pGoon->stats.bLife >= OKLIFE && pGoon->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY ) diff --git a/Tactical/Handle Items.cpp b/Tactical/Handle Items.cpp index 7f2ee470..2cf29c80 100644 --- a/Tactical/Handle Items.cpp +++ b/Tactical/Handle Items.cpp @@ -1023,7 +1023,7 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa if ( Item[usHandItem].toolkit ) { - UINT8 ubMercID; + UINT16 ubMercID; BOOLEAN fVehicle = FALSE; INT32 sVehicleGridNo=-1; @@ -1096,7 +1096,7 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa if ( Item[usHandItem].gascan ) { - UINT8 ubMercID; + UINT16 ubMercID; INT32 sVehicleGridNo=-1; // For repair, check if we are over a vehicle, then get gridnot to edge of that vehicle! @@ -1390,7 +1390,7 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa } } - UINT8 ubPerson = WhoIsThere2(usMapPos, pSoldier->pathing.bLevel); + UINT16 ubPerson = WhoIsThere2(usMapPos, pSoldier->pathing.bLevel); // Flugente: apply misc items to other soldiers // sevenfm: check that target soldier is visible @@ -2133,7 +2133,7 @@ void SoldierHandleDropItem( SOLDIERTYPE *pSoldier ) } } - AddItemToPool( pSoldier->sGridNo, pSoldier->pTempObject, 1, pSoldier->pathing.bLevel, 0 , -1 ); + AddItemToPool( pSoldier->sGridNo, pSoldier->pTempObject, 1, pSoldier->pathing.bLevel, 0, -1 ); NotifySoldiersToLookforItems( ); OBJECTTYPE::DeleteMe( &pSoldier->pTempObject ); @@ -2376,7 +2376,7 @@ void HandleAutoPlaceFail( SOLDIERTYPE *pSoldier, INT32 iItemIndex, INT32 sGridNo else { // Add back to world... - AddItemToPool( sGridNo, &(gWorldItems[ iItemIndex ].object ), 1 , pSoldier->pathing.bLevel, 0, -1 ); + AddItemToPool( sGridNo, &(gWorldItems[ iItemIndex ].object ), 1, pSoldier->pathing.bLevel, 0, -1 ); // If we are a merc, say DAMN quote.... if ( pSoldier->bTeam == gbPlayerNum ) @@ -2944,17 +2944,17 @@ void RemoveItemGraphicFromWorld( INVTYPE *pItem, INT32 sGridNo, UINT8 ubLevel, L } // INVENTORY POOL STUFF -OBJECTTYPE* AddItemToPool( INT32 sGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 soldierID ) +OBJECTTYPE* AddItemToPool( INT32 sGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT16 soldierID) { return InternalAddItemToPool( &sGridNo, pObject, bVisible, ubLevel, usFlags, bRenderZHeightAboveLevel, soldierID, NULL ); } -OBJECTTYPE * AddItemToPoolAndGetIndex( INT32 sGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 soldierID, INT32 * piItemIndex ) +OBJECTTYPE * AddItemToPoolAndGetIndex( INT32 sGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT16 soldierID, INT32 * piItemIndex ) { return( InternalAddItemToPool( &sGridNo, pObject, bVisible, ubLevel, usFlags, bRenderZHeightAboveLevel, soldierID, piItemIndex ) ); } -OBJECTTYPE* InternalAddItemToPool( INT32 *psGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 soldierID, INT32 * piItemIndex ) +OBJECTTYPE* InternalAddItemToPool( INT32 *psGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT16 soldierID, INT32 * piItemIndex ) { ITEM_POOL *pItemPool; ITEM_POOL *pItemPoolTemp; @@ -4816,7 +4816,7 @@ BOOLEAN VerifyGiveItem( SOLDIERTYPE *pSoldier, SOLDIERTYPE **ppTargetSoldier ) INT32 sGridNo; UINT8 ubDirection; - UINT8 ubTargetMercID; + UINT16 ubTargetMercID; // DO SOME CHECKS IF WE CAN DO ANIMATION..... @@ -4825,7 +4825,7 @@ BOOLEAN VerifyGiveItem( SOLDIERTYPE *pSoldier, SOLDIERTYPE **ppTargetSoldier ) sGridNo = pSoldier->aiData.sPendingActionData2; ubDirection = pSoldier->aiData.bPendingActionData3; - ubTargetMercID = (UINT8)pSoldier->aiData.uiPendingActionData4; + ubTargetMercID = (UINT16)pSoldier->aiData.uiPendingActionData4; usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel ); @@ -4851,7 +4851,7 @@ BOOLEAN VerifyGiveItem( SOLDIERTYPE *pSoldier, SOLDIERTYPE **ppTargetSoldier ) { if ( pSoldier->pTempObject != NULL ) { - AddItemToPool( pSoldier->sGridNo, pSoldier->pTempObject, 1, pSoldier->pathing.bLevel, 0 , -1 ); + AddItemToPool( pSoldier->sGridNo, pSoldier->pTempObject, 1, pSoldier->pathing.bLevel, 0, -1 ); // Place it on the ground! ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, TacticalStr[ ITEM_HAS_BEEN_PLACED_ON_GROUND_STR ], ShortItemNames[ pSoldier->pTempObject->usItem ] ); @@ -4881,7 +4881,7 @@ void SoldierGiveItemFromAnimation( SOLDIERTYPE *pSoldier ) INT32 sGridNo; UINT8 ubDirection; - UINT8 ubTargetMercID; + UINT16 ubTargetMercID; UINT16 usItemNum; BOOLEAN fToTargetPlayer = FALSE; @@ -4910,7 +4910,7 @@ void SoldierGiveItemFromAnimation( SOLDIERTYPE *pSoldier ) sGridNo = pSoldier->aiData.sPendingActionData2; ubDirection = pSoldier->aiData.bPendingActionData3; - ubTargetMercID = (UINT8)pSoldier->aiData.uiPendingActionData4; + ubTargetMercID = (UINT16)pSoldier->aiData.uiPendingActionData4; // ATE: Deduct APs! DeductPoints( pSoldier, GetBasicAPsToPickupItem( pSoldier ), 0 ); // SANDRO @@ -5004,7 +5004,7 @@ void SoldierGiveItemFromAnimation( SOLDIERTYPE *pSoldier ) DirtyMercPanelInterface( pSoldier, DIRTYLEVEL2 ); } - AddItemToPool( pSoldier->sGridNo, &gTempObject, 1, pSoldier->pathing.bLevel, 0 , -1 ); + AddItemToPool( pSoldier->sGridNo, &gTempObject, 1, pSoldier->pathing.bLevel, 0, -1 ); // We could not place it! // Drop it on the ground? @@ -5081,7 +5081,7 @@ INT32 AdjustGridNoForItemPlacement( SOLDIERTYPE *pSoldier, INT32 sGridNo ) BOOLEAN fStructFound = FALSE; UINT8 ubDirection; INT32 sAdjustedGridNo; - UINT8 ubTargetID; + UINT16 ubTargetID; sActionGridNo = sGridNo; @@ -6169,7 +6169,7 @@ void BoobyTrapMessageBoxCallBack( UINT8 ubExitValue ) { // OJW - 20091029 - disarm explosives if (is_networked && is_client) - send_disarm_explosive( gsBoobyTrapGridNo , gpBoobyTrapItemPool->iItemIndex , gpBoobyTrapSoldier->ubID ); + send_disarm_explosive( gsBoobyTrapGridNo, gpBoobyTrapItemPool->iItemIndex, gpBoobyTrapSoldier->ubID ); // remove it from the ground RemoveItemFromPool( gsBoobyTrapGridNo, gpBoobyTrapItemPool->iItemIndex, gbBoobyTrapLevel ); } @@ -6191,7 +6191,7 @@ void BoobyTrapMessageBoxCallBack( UINT8 ubExitValue ) // OJW - 20091029 - disarm explosives if (is_networked && is_client) - send_disarm_explosive( gsBoobyTrapGridNo , gpBoobyTrapItemPool->iItemIndex , gpBoobyTrapSoldier->ubID ); + send_disarm_explosive( gsBoobyTrapGridNo, gpBoobyTrapItemPool->iItemIndex, gpBoobyTrapSoldier->ubID ); RemoveItemFromPool( gsBoobyTrapGridNo, gpBoobyTrapItemPool->iItemIndex, gbBoobyTrapLevel ); } @@ -6208,7 +6208,7 @@ void BoobyTrapMessageBoxCallBack( UINT8 ubExitValue ) } // OJW - 20091029 - disarm explosives if (is_networked && is_client) - send_disarm_explosive( gsBoobyTrapGridNo , gpBoobyTrapItemPool->iItemIndex , gpBoobyTrapSoldier->ubID ); + send_disarm_explosive( gsBoobyTrapGridNo, gpBoobyTrapItemPool->iItemIndex, gpBoobyTrapSoldier->ubID ); // remove it from the ground RemoveItemFromPool( gsBoobyTrapGridNo, gpBoobyTrapItemPool->iItemIndex, gbBoobyTrapLevel ); @@ -6363,7 +6363,7 @@ void SwitchMessageBoxCallBack( UINT8 ubExitValue ) // Message that switch is activated... ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, gzLateLocalizedString[ 60 ] ); - SetOffBombsByFrequency( gpTempSoldier->ubID, bTempFrequency ); + SetOffBombsByFrequency( gpTempSoldier->ubID, bTempFrequency ); } } @@ -6733,11 +6733,11 @@ void TestPotentialOwner( SOLDIERTYPE * pSoldier ) void CheckForPickedOwnership( void ) { - ITEM_POOL * pItemPool; - UINT8 ubProfile; - UINT8 ubCivGroup; - SOLDIERTYPE * pSoldier; - UINT8 ubLoop; + ITEM_POOL * pItemPool; + UINT8 ubProfile; + UINT8 ubCivGroup; + SOLDIERTYPE * pSoldier; + UINT16 ubLoop; // LOOP THROUGH LIST TO FIND NODE WE WANT GetItemPool( gsTempGridNo, &pItemPool, gpTempSoldier->pathing.bLevel ); @@ -9403,7 +9403,7 @@ void DoInteractiveAction( INT32 sGridNo, SOLDIERTYPE *pSoldier ) // 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 -void DoInteractiveActionDefaultResult( INT32 sGridNo, UINT8 ubID, BOOLEAN aSuccess ) +void DoInteractiveActionDefaultResult( INT32 sGridNo, UINT16 ubID, BOOLEAN aSuccess ) { SOLDIERTYPE* pSoldier = NULL; if ( ubID != NOBODY ) diff --git a/Tactical/Handle Items.h b/Tactical/Handle Items.h index b9b20865..ecbb189b 100644 --- a/Tactical/Handle Items.h +++ b/Tactical/Handle Items.h @@ -194,9 +194,9 @@ void AllSoldiersLookforItems( BOOLEAN RevealRoofsAndItems ); void SoldierGetItemFromWorld( SOLDIERTYPE *pSoldier, INT32 iItemIndex, INT32 sGridNo, INT8 bZLevel, BOOLEAN *pfSelectionList ); -OBJECTTYPE* AddItemToPool( INT32 sGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 soldierID = -1 ); -OBJECTTYPE* AddItemToPoolAndGetIndex( INT32 sGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 soldierID, INT32 * piItemIndex ); -OBJECTTYPE* InternalAddItemToPool( INT32 *psGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 soldierID, INT32 * piItemIndex ); +OBJECTTYPE* AddItemToPool(INT32 sGridNo, OBJECTTYPE* pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT16 soldierID = -1); +OBJECTTYPE* AddItemToPoolAndGetIndex( INT32 sGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT16 soldierID, INT32 * piItemIndex ); +OBJECTTYPE* InternalAddItemToPool( INT32 *psGridNo, OBJECTTYPE *pObject, INT8 bVisible, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT16 soldierID, INT32 * piItemIndex ); INT32 AdjustGridNoForItemPlacement( SOLDIERTYPE *pSoldier, INT32 sGridNo ); BOOLEAN GetItemPool( INT32 usMapPos, ITEM_POOL **ppItemPool, UINT8 ubLevel ); @@ -328,7 +328,7 @@ extern ITEM_POOL *gpItemPool;//dnl ch26 210909 // Flugente: interactive actions void DoInteractiveAction( INT32 sGridNo, SOLDIERTYPE *pSoldier ); -void DoInteractiveActionDefaultResult( INT32 sGridNo, UINT8 ubID, BOOLEAN aSuccess ); +void DoInteractiveActionDefaultResult( INT32 sGridNo, UINT16 ubID, BOOLEAN aSuccess ); BOOLEAN SpendMoney( SOLDIERTYPE *pSoldier, UINT32 aAmount ); // character spends money - either from inventory or the account // Flugente: intel diff --git a/Tactical/Handle UI Plan.cpp b/Tactical/Handle UI Plan.cpp index 8c93f84f..11afac49 100644 --- a/Tactical/Handle UI Plan.cpp +++ b/Tactical/Handle UI Plan.cpp @@ -46,7 +46,7 @@ BOOLEAN AddUIPlan( INT32 sGridNo, UINT8 ubPlanID ) INT8 bDirection; INT32 iLoop; SOLDIERCREATE_STRUCT MercCreateStruct; - UINT8 ubNewIndex; + UINT16 ubNewIndex; // Depeding on stance and direction facing, add guy! @@ -122,7 +122,7 @@ BOOLEAN AddUIPlan( INT32 sGridNo, UINT8 ubPlanID ) pPlanSoldier->ChangeSoldierState( pPlanSoldier->usUIMovementMode, 0, FALSE ); // Change selected soldier - gusSelectedSoldier = (UINT16)pPlanSoldier->ubID; + gusSelectedSoldier = pPlanSoldier->ubID; // Change global planned mode to this guy! gpUIPlannedSoldier = pPlanSoldier; @@ -165,7 +165,7 @@ BOOLEAN AddUIPlan( INT32 sGridNo, UINT8 ubPlanID ) if ( TacticalCreateSoldier( &MercCreateStruct, &ubNewIndex ) ) { // Get pointer to soldier - GetSoldier( &pPlanSoldier, (UINT16)ubNewIndex ); + GetSoldier( &pPlanSoldier, ubNewIndex ); pPlanSoldier->sPlannedTargetX = -1; pPlanSoldier->sPlannedTargetY = -1; diff --git a/Tactical/Handle UI.cpp b/Tactical/Handle UI.cpp index bd72fab8..287496cf 100644 --- a/Tactical/Handle UI.cpp +++ b/Tactical/Handle UI.cpp @@ -294,7 +294,7 @@ BOOLEAN gfResetUIMovementOptimization = FALSE; BOOLEAN gfResetUIItemCursorOptimization = FALSE; BOOLEAN gfBeginVehicleCursor = FALSE; INT32 gsOutOfRangeGridNo = NOWHERE; -UINT8 gubOutOfRangeMerc = NOBODY; +UINT16 gubOutOfRangeMerc = NOBODY; BOOLEAN gfOKForExchangeCursor = FALSE; UINT32 guiUIInterfaceSwapCursorsTime = 0; INT32 gsJumpOverGridNo = 0; @@ -441,7 +441,7 @@ BOOLEAN gfUIDoNotHighlightSelMerc = FALSE; BOOLEAN gfUIHandleSelection = FALSE; BOOLEAN gfUIHandleSelectionAboveGuy = FALSE; BOOLEAN gfUIInDeadlock = FALSE; -UINT8 gUIDeadlockedSoldier = NOBODY; +UINT16 gUIDeadlockedSoldier = NOBODY; BOOLEAN gfUIHandleShowMoveGrid = FALSE; INT32 gsUIHandleShowMoveGridLocation = NOWHERE ; BOOLEAN gfUIOverItemPool = FALSE; @@ -449,7 +449,7 @@ INT32 gfUIOverItemPoolGridNo = 0; INT16 gsCurrentActionPoints = 1; BOOLEAN gfUIHandlePhysicsTrajectory = FALSE; BOOLEAN gfUIMouseOnValidCatcher = FALSE; -UINT8 gubUIValidCatcherID = 0; +UINT16 gubUIValidCatcherID = 0; @@ -577,7 +577,7 @@ UINT32 HandleTacticalUI( void ) gfUIInterfaceSetBusy = FALSE; //UNLOCK UI - UnSetUIBusy( (UINT8)gusSelectedSoldier ); + UnSetUIBusy( gusSelectedSoldier ); // Decrease global busy counter... gTacticalStatus.ubAttackBusyCount = 0; @@ -1500,7 +1500,7 @@ UINT32 UIHandleTestHit( UI_EVENT *pUIEvent ) // gTacticalStatus.ubAttackBusyCount++; DebugAttackBusy( "Testing a hit.\n" ); - pSoldier->EVENT_SoldierGotHit( 1, bDamage, 10, pSoldier->ubDirection, 320, NOBODY , FIRE_WEAPON_NO_SPECIAL, pSoldier->bAimShotLocation, 0, NOWHERE ); + pSoldier->EVENT_SoldierGotHit( 1, bDamage, 10, pSoldier->ubDirection, 320, NOBODY, FIRE_WEAPON_NO_SPECIAL, pSoldier->bAimShotLocation, 0, NOWHERE ); // callahan update end - put everything as it was } return( GAME_SCREEN ); @@ -1716,7 +1716,7 @@ UINT32 UIHandleMOnTerrain( UI_EVENT *pUIEvent ) // THIS IS JUST A CRUDE TEST FOR NOW if ( pSoldier->stats.bLife < OKLIFE ) { - UINT8 ubID; + UINT16 ubID; // Show reg. cursor // GO INTO IDLE MODE // guiPendingOverrideEvent = I_CHANGE_TO_IDLE; @@ -1725,7 +1725,7 @@ UINT32 UIHandleMOnTerrain( UI_EVENT *pUIEvent ) if ( ubID != NOBODY ) { - SelectSoldier( (INT16)ubID, FALSE, FALSE ); + SelectSoldier( ubID, FALSE, FALSE ); } else { @@ -1963,13 +1963,13 @@ UINT32 UIHandleAOnTerrain( UI_EVENT *pUIEvent ) // Set gsOutOfRangeGridNo = MercPtrs[ gusUIFullTargetID ]->sGridNo; - gubOutOfRangeMerc = (UINT8)gusSelectedSoldier; + gubOutOfRangeMerc = gusSelectedSoldier; } } } } - guiNewUICursor = GetProperItemCursor( (UINT8)gusSelectedSoldier, pSoldier->inv[ HANDPOS ].usItem, usMapPos, FALSE ); + guiNewUICursor = GetProperItemCursor( gusSelectedSoldier, pSoldier->inv[ HANDPOS ].usItem, usMapPos, FALSE ); // Show UI ON GUY UIHandleOnMerc( FALSE ); @@ -2123,7 +2123,7 @@ UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent ) STRUCTURE *pStructure; UINT8 ubDirection = 0xff; BOOLEAN fAllMove; - INT8 bLoop; + UINT16 bLoop; LEVELNODE *pIntTile; INT32 sIntTileGridNo; BOOLEAN fOldFastMove; @@ -2745,7 +2745,7 @@ UINT32 UIHandleCAOnTerrain( UI_EVENT *pUIEvent ) if ( GetSoldier( &pSoldier, gusSelectedSoldier ) ) { - guiNewUICursor = GetProperItemCursor( (UINT8)gusSelectedSoldier, pSoldier->inv[ HANDPOS ].usItem, usMapPos, TRUE ); + guiNewUICursor = GetProperItemCursor( gusSelectedSoldier, pSoldier->inv[ HANDPOS ].usItem, usMapPos, TRUE ); UIHandleOnMerc( FALSE ); } @@ -3465,7 +3465,7 @@ BOOLEAN SelectedMercCanAffordMove( ) return( FALSE ); } -void GetMercClimbDirection( UINT8 ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp ) +void GetMercClimbDirection( UINT16 ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp ) { INT8 bNewDirection; SOLDIERTYPE *pSoldier; @@ -3839,7 +3839,7 @@ UINT32 UIHandleIETOnTerrain( UI_EVENT *pUIEvent ) } -void UIHandleSoldierStanceChange( UINT8 ubSoldierID, INT8 bNewStance ) +void UIHandleSoldierStanceChange( UINT16 ubSoldierID, INT8 bNewStance ) { SOLDIERTYPE *pSoldier = MercPtrs[ ubSoldierID ]; @@ -4259,7 +4259,7 @@ INT8 DrawUIMovementPath( SOLDIERTYPE *pSoldier, INT32 usMapPos, UINT32 uiFlags ) LEVELNODE *pIntTile; INT8 bReturnCode = 0; BOOLEAN fPlot; - UINT8 ubMercID; + UINT16 ubMercID; if ( (gTacticalStatus.uiFlags & INCOMBAT ) && ( gTacticalStatus.uiFlags & TURNBASED ) || _KeyDown( SHIFT ) ) { @@ -5588,7 +5588,7 @@ UINT32 UIHandleLCLook( UI_EVENT *pUIEvent ) UINT32 UIHandleTOnTerrain( UI_EVENT *pUIEvent ) { SOLDIERTYPE *pSoldier; - UINT8 ubTargID; + UINT16 ubTargID; UINT32 uiRange; INT32 usMapPos; BOOLEAN fValidTalkableGuy = FALSE; @@ -5619,7 +5619,7 @@ UINT32 UIHandleTOnTerrain( UI_EVENT *pUIEvent ) //CHECK FOR VALID TALKABLE GUY HERE - fValidTalkableGuy = IsValidTalkableNPCFromMouse( &ubTargID, FALSE, TRUE , FALSE ); + fValidTalkableGuy = IsValidTalkableNPCFromMouse( &ubTargID, FALSE, TRUE, FALSE ); // USe cursor based on distance // Get distance away @@ -6374,20 +6374,20 @@ UINT32 UIHandleLAEndLockOurTurn( UI_EVENT *pUIEvent ) -BOOLEAN IsValidTalkableNPCFromMouse( UINT8 *pubSoldierID , BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ) +BOOLEAN IsValidTalkableNPCFromMouse( UINT16 * pubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ) { // Check if there is a guy here to talk to! if ( gfUIFullTargetFound ) { - *pubSoldierID = (UINT8)gusUIFullTargetID; - return( IsValidTalkableNPC( (UINT8)gusUIFullTargetID, fGive, fAllowMercs, fCheckCollapsed ) ); + *pubSoldierID = gusUIFullTargetID; + return( IsValidTalkableNPC( gusUIFullTargetID, fGive, fAllowMercs, fCheckCollapsed ) ); } return( FALSE ); } -BOOLEAN IsValidTalkableNPC( UINT8 ubSoldierID, BOOLEAN fGive , BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ) +BOOLEAN IsValidTalkableNPC( UINT16 ubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ) { SOLDIERTYPE *pSoldier = MercPtrs[ ubSoldierID ]; BOOLEAN fValidGuy = FALSE; @@ -6509,7 +6509,7 @@ BOOLEAN HandleTalkInit( ) if ( gfUIFullTargetFound ) { // Is he a valid NPC? - if ( IsValidTalkableNPC( (UINT8)gusUIFullTargetID, FALSE, TRUE , FALSE ) ) + if ( IsValidTalkableNPC( gusUIFullTargetID, FALSE, TRUE, FALSE ) ) { GetSoldier( &pTSoldier, gusUIFullTargetID ); @@ -6716,7 +6716,7 @@ BOOLEAN HandleTalkInit( ) -void SetUIBusy( UINT8 ubID ) +void SetUIBusy( UINT16 ubID ) { if ( (gTacticalStatus.uiFlags & INCOMBAT ) && ( gTacticalStatus.uiFlags & TURNBASED ) && ( gTacticalStatus.ubCurrentTeam == gbPlayerNum ) ) { @@ -6728,7 +6728,7 @@ void SetUIBusy( UINT8 ubID ) } } -void UnSetUIBusy( UINT8 ubID ) +void UnSetUIBusy( UINT16 ubID ) { if ( gfUserTurnRegionActive && (gTacticalStatus.uiFlags & INCOMBAT ) && ( gTacticalStatus.uiFlags & TURNBASED ) && ( gTacticalStatus.ubCurrentTeam == gbPlayerNum ) ) { @@ -7274,7 +7274,8 @@ BOOLEAN IsValidJumpLocation( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fChec INT32 sFourGrids[4], sDistance=0, sSpot, sInBetween, sInBetween2, iDoorGridNo; static const UINT8 sDirs[4] = { NORTH, EAST, SOUTH, WEST }; //INT32 cnt; - UINT8 ubGuyThere, ubMovementCost, ubDirection; + UINT16 ubGuyThere; + UINT8 ubMovementCost, ubDirection; INT8 bTileHeight = 0; // SANDRO: commented out to allow jumping even in cases we could get to the destination normally diff --git a/Tactical/Handle UI.h b/Tactical/Handle UI.h index 5937d911..14b15f1e 100644 --- a/Tactical/Handle UI.h +++ b/Tactical/Handle UI.h @@ -200,10 +200,10 @@ extern BOOLEAN gfUIHandleSelectionAboveGuy; extern INT32 gsSelectedGridNo; extern INT16 gsSelectedGuy; extern BOOLEAN gfUIInDeadlock; -extern UINT8 gUIDeadlockedSoldier; +extern UINT16 gUIDeadlockedSoldier; extern BOOLEAN gfUIMouseOnValidCatcher; -extern UINT8 gubUIValidCatcherID; +extern UINT16 gubUIValidCatcherID; extern BOOLEAN gUIUseReverse; @@ -320,13 +320,13 @@ void AdjustSoldierCreationStartValues( ); BOOLEAN SelectedMercCanAffordAttack( ); BOOLEAN SelectedMercCanAffordMove( ); -void GetMercClimbDirection( UINT8 ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp ); +void GetMercClimbDirection( UINT16 ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp ); void ToggleHandCursorMode( UINT32 *puiNewEvent ); void ToggleTalkCursorMode( UINT32 *puiNewEvent ); void ToggleLookCursorMode( UINT32 *puiNewEvent ); -void UIHandleSoldierStanceChange( UINT8 ubSoldierID, INT8 bNewStance ); +void UIHandleSoldierStanceChange( UINT16 ubSoldierID, INT8 bNewStance ); void GetCursorMovementFlags( UINT32 *puiCursorFlags ); BOOLEAN HandleUIMovementCursor( SOLDIERTYPE *pSoldier, UINT32 uiCursorFlags, INT32 usMapPos, UINT32 uiFlags ); @@ -334,15 +334,15 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier ); BOOLEAN UIOkForItemPickup( SOLDIERTYPE *pSoldier, INT32 sGridNo ); -BOOLEAN IsValidTalkableNPCFromMouse( UINT8 *pubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ); -BOOLEAN IsValidTalkableNPC( UINT8 ubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ); +BOOLEAN IsValidTalkableNPCFromMouse( UINT16 * pubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ); +BOOLEAN IsValidTalkableNPC( UINT16 ubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed ); BOOLEAN HandleTalkInit( ); BOOLEAN HandleCheckForExitArrowsInput( BOOLEAN fAdjustForConfirm ); -void SetUIBusy( UINT8 ubID ); -void UnSetUIBusy( UINT8 ubID ); +void SetUIBusy( UINT16 ubID ); +void UnSetUIBusy( UINT16 ubID ); UINT32 UIHandleLUIEndLock( UI_EVENT *pUIEvent ); diff --git a/Tactical/Interface Control.cpp b/Tactical/Interface Control.cpp index 0960bd08..e1c93628 100644 --- a/Tactical/Interface Control.cpp +++ b/Tactical/Interface Control.cpp @@ -921,7 +921,7 @@ void RenderTopmostTacticalInterface( ) } else { - DrawSelectedUIAboveGuy((UINT16)pSoldier->ubID); + DrawSelectedUIAboveGuy(pSoldier->ubID); } DrawCounters( pSoldier ); diff --git a/Tactical/Interface Dialogue.cpp b/Tactical/Interface Dialogue.cpp index 9644aab3..7e9ef7d6 100644 --- a/Tactical/Interface Dialogue.cpp +++ b/Tactical/Interface Dialogue.cpp @@ -187,7 +187,7 @@ BOOLEAN InternalInitiateConversation( SOLDIERTYPE *pDestSoldier, SOLDIERTYPE *pS extern void EndGameMessageBoxCallBack( UINT8 ubExitValue ); extern INT32 FindNearestOpenableNonDoor( INT32 sStartGridNo ); extern void RecalculateOppCntsDueToBecomingNeutral( SOLDIERTYPE * pSoldier ); -extern UINT8 NumCapableEnemyInSector( ); +extern UINT16 NumCapableEnemyInSector( ); #ifdef JA2UB //JA25 UB @@ -1042,7 +1042,7 @@ void TalkPanelClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) // open inv panel... gfSwitchPanel = TRUE; gbNewPanel = SM_PANEL; - gubNewPanelParam = (UINT8)gpSrcSoldier->ubID; + gubNewPanelParam = gpSrcSoldier->ubID; // Wait! gpDestSoldier->aiData.bNextAction = AI_ACTION_WAIT; @@ -1560,7 +1560,7 @@ void HandleNPCTriggerNPC( UINT8 ubTargetNPC, UINT8 ubTargetRecord, BOOLEAN fShow guiWaitingForTriggerTime = GetJA2Clock( ); // Setup locator! - ShowRadioLocator( (UINT8)pSoldier->ubID, SHOW_LOCATOR_FAST ); + ShowRadioLocator( pSoldier->ubID, SHOW_LOCATOR_FAST ); // If he's visible, locate... if ( pSoldier->bVisible != -1 ) @@ -1589,7 +1589,7 @@ void HandleNPCTrigger( ) { SOLDIERTYPE *pSoldier; INT32 sPlayerGridNo; - UINT8 ubPlayerID; + UINT16 ubPlayerID; pSoldier = FindSoldierByProfileID( gubTargetNPC, FALSE ); if (!pSoldier) @@ -2481,7 +2481,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum if (pSoldier) { DeleteTalkingMenu(); - pSoldier->EVENT_SoldierGotHit( 1, 100, 10, pSoldier->ubDirection, 320, NOBODY , FIRE_WEAPON_NO_SPECIAL, AIM_SHOT_TORSO, 0, NOWHERE ); + pSoldier->EVENT_SoldierGotHit( 1, 100, 10, pSoldier->ubDirection, 320, NOBODY, FIRE_WEAPON_NO_SPECIAL, AIM_SHOT_TORSO, 0, NOWHERE ); } break; @@ -2826,7 +2826,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum bItemIn = FindObj( pSoldier, DEED ); if (bItemIn != NO_SLOT) { - AddItemToPool( 12541, &(pSoldier->inv[bItemIn]), -1 , 0, 0, 0 ); + AddItemToPool( 12541, &(pSoldier->inv[bItemIn]), -1, 0, 0, 0 ); DeleteObj( &(pSoldier->inv[ bItemIn ]) ); RemoveObjectFromSoldierProfile( ubTargetNPC, DEED ); } @@ -3225,7 +3225,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum if ( pSoldier ) { INT32 sNearestPC; - UINT8 ubID; + UINT16 ubID; INT8 bMoneySlot; INT8 bEmptySlot; @@ -3358,7 +3358,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum pSoldier = FindSoldierByProfileID( ubTargetNPC, FALSE ); if (pSoldier) { - UINT8 ubTargetID; + UINT16 ubTargetID; SOLDIERTYPE *pTarget; // Target a different merc.... @@ -3478,7 +3478,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum pSoldier = FindSoldierByProfileID( ubTargetNPC, FALSE ); if (pSoldier) { - UINT8 ubTargetID; + UINT16 ubTargetID; SOLDIERTYPE *pTarget; INT32 cnt; BOOLEAN fGoodTarget = FALSE; @@ -3901,7 +3901,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum if ( !gfInTalkPanel ) { INT32 sNearestPC; - UINT8 ubID; + UINT16 ubID; pSoldier = FindSoldierByProfileID( ubTargetNPC, FALSE ); if ( pSoldier ) @@ -4850,7 +4850,7 @@ void DialogueMessageBoxCallBack( UINT8 ubExitValue ) { // He tried to lie..... // Find the best conscious merc with a chance.... - UINT8 cnt; + UINT16 cnt; SOLDIERTYPE * pLier = NULL; SOLDIERTYPE * pSoldier; diff --git a/Tactical/Interface Items.cpp b/Tactical/Interface Items.cpp index 9ea7ae75..53d6ebb2 100644 --- a/Tactical/Interface Items.cpp +++ b/Tactical/Interface Items.cpp @@ -238,7 +238,7 @@ extern MOUSE_REGION gMPanelRegion; extern BOOLEAN fMapInventoryItem; extern BOOLEAN gfAddingMoneyToMercFromPlayersAccount; extern SOLDIERTYPE *gpSMCurrentMerc; -extern UINT8 gubSelectSMPanelToMerc; +extern UINT16 gubSelectSMPanelToMerc; extern MOUSE_REGION gSM_SELMERCMoneyRegion; extern UINT32 guiMapInvSecondHandBlockout; @@ -8829,7 +8829,7 @@ void DrawItemTileCursor( ) { INT32 usMapPos; UINT16 usIndex; - UINT8 ubSoldierID; + UINT16 ubSoldierID; INT16 sAPCost; BOOLEAN fRecalc; UINT32 uiCursorFlags; @@ -8935,7 +8935,7 @@ void DrawItemTileCursor( ) { // OK, on a valid pass gfUIMouseOnValidCatcher = 4; - gubUIValidCatcherID = (UINT8)gusUIFullTargetID; + gubUIValidCatcherID = gusUIFullTargetID; } else { @@ -8944,7 +8944,7 @@ void DrawItemTileCursor( ) { // OK, set global that this buddy can see catch... gfUIMouseOnValidCatcher = TRUE; - gubUIValidCatcherID = (UINT8)gusUIFullTargetID; + gubUIValidCatcherID = gusUIFullTargetID; } } } @@ -8978,7 +8978,7 @@ void DrawItemTileCursor( ) // OK, set global that this buddy can see catch... gfUIMouseOnValidCatcher = 2; - gubUIValidCatcherID = (UINT8)gusUIFullTargetID; + gubUIValidCatcherID = gusUIFullTargetID; // If this is a robot, change to say 'reload' if ( MercPtrs[ gusUIFullTargetID ]->flags.uiStatusFlags & SOLDIER_ROBOT ) @@ -9175,7 +9175,7 @@ BOOLEAN HandleItemPointerClick( INT32 usMapPos ) UINT8 ubDirection; - UINT8 ubSoldierID; + UINT16 ubSoldierID; UINT16 usItem; INT16 sAPCost; SOLDIERTYPE *pSoldier=NULL; @@ -9411,7 +9411,7 @@ BOOLEAN HandleItemPointerClick( INT32 usMapPos ) case ANIM_CROUCH: case ANIM_PRONE: - AddItemToPool( usMapPos, gpItemPointer, 1, gpItemPointerSoldier->pathing.bLevel, 0 , -1 ); + AddItemToPool( usMapPos, gpItemPointer, 1, gpItemPointerSoldier->pathing.bLevel, 0, -1 ); NotifySoldiersToLookforItems( ); break; } @@ -10960,7 +10960,7 @@ BOOLEAN InitializeItemPickupMenu( SOLDIERTYPE *pSoldier, INT32 sGridNo, ITEM_POO // Change to INV panel if not there already... gfSwitchPanel = TRUE; gbNewPanel = SM_PANEL; - gubNewPanelParam = (UINT8)pSoldier->ubID; + gubNewPanelParam = pSoldier->ubID; //Determine total # cnt = 0; @@ -12761,7 +12761,7 @@ void CancelItemPointer( ) if ( !AutoPlaceObject( gpItemPointerSoldier, gpItemPointer, FALSE ) ) { // Alright, place of the friggen ground! - AddItemToPool( gpItemPointerSoldier->sGridNo, gpItemPointer, 1, gpItemPointerSoldier->pathing.bLevel, 0 , -1 ); + AddItemToPool( gpItemPointerSoldier->sGridNo, gpItemPointer, 1, gpItemPointerSoldier->pathing.bLevel, 0, -1 ); NotifySoldiersToLookforItems( ); } } @@ -12769,7 +12769,7 @@ void CancelItemPointer( ) else { // We drop it here..... - AddItemToPool( gpItemPointerSoldier->sGridNo, gpItemPointer, 1, gpItemPointerSoldier->pathing.bLevel, 0 , -1 ); + AddItemToPool( gpItemPointerSoldier->sGridNo, gpItemPointer, 1, gpItemPointerSoldier->pathing.bLevel, 0, -1 ); NotifySoldiersToLookforItems( ); } EndItemPointer( ); @@ -12920,7 +12920,7 @@ BOOLEAN InitializeStealItemPickupMenu( SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOppo // Change to INV panel if not there already... gfSwitchPanel = TRUE; gbNewPanel = SM_PANEL; - gubNewPanelParam = (UINT8)pSoldier->ubID; + gubNewPanelParam = pSoldier->ubID; gItemPickupMenu.ubTotalItems = ubCount; diff --git a/Tactical/Interface Items.h b/Tactical/Interface Items.h index 607890ff..e08f44e3 100644 --- a/Tactical/Interface Items.h +++ b/Tactical/Interface Items.h @@ -166,11 +166,12 @@ public: BOOLEAN Save(HWFILE hFile); BOOLEAN Load(HWFILE hFile); - UINT8 ubSoldierID; + UINT16 ubSoldierID; UINT8 ubInvSlot; BOOLEAN fCursorActive; OBJECTTYPE ItemPointerInfo; }; +#define SIZEOF_ITEM_CURSOR_SAVE_INFO_POD offsetof( ITEM_CURSOR_SAVE_INFO, ItemPointerInfo ) // HEADROCK HAM 5: Enums for big-item display attachment asterisks. enum diff --git a/Tactical/Interface Panels.cpp b/Tactical/Interface Panels.cpp index 8f859f37..ddc3ada5 100644 --- a/Tactical/Interface Panels.cpp +++ b/Tactical/Interface Panels.cpp @@ -394,7 +394,7 @@ INT32 giSMZipperButton = -1; BOOLEAN gfSwitchPanel = FALSE; UINT8 gbNewPanel = SM_PANEL; -UINT8 gubNewPanelParam = 0; +UINT16 gubNewPanelParam = 0; BOOLEAN gfUIStanceDifferent = FALSE; BOOLEAN gfAllDisabled = FALSE; @@ -405,7 +405,7 @@ BOOLEAN gfAddingMoneyToMercFromPlayersAccount = FALSE; BOOLEAN gfCheckForMouseOverItem = FALSE; UINT32 guiMouseOverItemTime = 0; INT8 gbCheckForMouseOverItemPos = 0; -UINT8 gubSelectSMPanelToMerc = NOBODY; +UINT16 gubSelectSMPanelToMerc = NOBODY; BOOLEAN gfReEvaluateDisabledINVPanelButtons = FALSE; UINT32 guiBrownBackgroundForTeamPanel; @@ -573,7 +573,7 @@ void UpdateSelectedSoldier( UINT16 usSoldierID, BOOLEAN fSelect ); void CheckForFacePanelStartAnims( SOLDIERTYPE *pSoldier, INT16 sPanelX, INT16 sPanelY ); void HandleSoldierFaceFlash( SOLDIERTYPE *pSoldier, INT16 sFaceX, INT16 sFaceY ); -BOOLEAN PlayerExistsInSlot( UINT8 ubID ); +BOOLEAN PlayerExistsInSlot( UINT16 ubID ); void UpdateStatColor( UINT32 uiTimer, BOOLEAN fIncrease, BOOLEAN fDamaged, BOOLEAN fAugmented ); // SANDRO - added argument // Flugente - me too extern void UpdateItemHatches(); @@ -597,7 +597,7 @@ void CheckForDisabledForGiveItem( ) INT8 bDestLevel; INT32 cnt; SOLDIERTYPE *pSoldier; - UINT8 ubSrcSoldier; + UINT16 ubSrcSoldier; // CHRISL: If Merc hasn't been set, default to first merc if(gpSMCurrentMerc==NULL) @@ -638,7 +638,7 @@ void CheckForDisabledForGiveItem( ) } else { - ubSrcSoldier = (UINT8)gusSelectedSoldier; + ubSrcSoldier = gusSelectedSoldier; if ( gpItemPointer != NULL ) { @@ -690,7 +690,7 @@ void CheckForDisabledForGiveItem( ) } } -void SetSMPanelCurrentMerc( UINT8 ubNewID ) +void SetSMPanelCurrentMerc( UINT16 ubNewID ) { gubSelectSMPanelToMerc = NOBODY; @@ -3729,7 +3729,7 @@ void SMInvClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) } else // item in cursor { - UINT8 ubSrcID, ubDestID; + UINT16 ubSrcID, ubDestID; BOOLEAN fOKToGo = FALSE; BOOLEAN fDeductPoints = FALSE; @@ -4217,7 +4217,7 @@ BOOLEAN ChangeDropPackStatus(SOLDIERTYPE *pSoldier, BOOLEAN newStatus) } } MoveItemToLBEItem( pSoldier, BPACKPOCKPOS ); - AddItemToPoolAndGetIndex(pSoldier->sGridNo, &pSoldier->inv[BPACKPOCKPOS], 1, pSoldier->pathing.bLevel, 0 , -1, pSoldier->ubID, &worldKey ); + AddItemToPoolAndGetIndex(pSoldier->sGridNo, &pSoldier->inv[BPACKPOCKPOS], 1, pSoldier->pathing.bLevel, 0, -1, pSoldier->ubID, &worldKey ); // Item successfully added to world if(worldKey != ITEM_NOT_FOUND) { @@ -4829,7 +4829,7 @@ void BtnPrevMercCallback(GUI_BUTTON *btn,INT32 reason) sID = FindPrevActiveAndAliveMerc( gpSMCurrentMerc, TRUE, TRUE ); - gubSelectSMPanelToMerc = (UINT8)sID; + gubSelectSMPanelToMerc = (UINT16)sID; if ( !gfInItemPickupMenu ) { @@ -4878,7 +4878,7 @@ void BtnNextMercCallback(GUI_BUTTON *btn,INT32 reason) sID = FindNextActiveAndAliveMerc( gpSMCurrentMerc, TRUE, TRUE ); // Give him the panel! - gubSelectSMPanelToMerc = (UINT8)sID; + gubSelectSMPanelToMerc = (UINT16)sID; if ( !gfInItemPickupMenu ) { @@ -5893,7 +5893,7 @@ void BtnSquadCallback(GUI_BUTTON *btn,INT32 reason) } -void SetTEAMPanelCurrentMerc( UINT8 ubNewID ) +void SetTEAMPanelCurrentMerc( UINT16 ubNewID ) { // Ignore ther ID given! // ALWYAS USE CURRENT MERC! @@ -6026,10 +6026,10 @@ void HandleMouseOverTeamFaceForContMove( BOOLEAN fOn ) void MercFacePanelMoveCallback( MOUSE_REGION * pRegion, INT32 iReason ) { - UINT8 ubID, ubSoldierID; + UINT16 ubID, ubSoldierID; SOLDIERTYPE *pSoldier; - ubID = (UINT8) MSYS_GetRegionUserData( pRegion, 0 ); + ubID = (UINT16) MSYS_GetRegionUserData( pRegion, 0 ); // If our flags are set to do this, gofoit! if ( (guiTacticalInterfaceFlags & INTERFACE_MAPSCREEN ) ) @@ -6072,9 +6072,9 @@ void MercFacePanelMoveCallback( MOUSE_REGION * pRegion, INT32 iReason ) void EnemyIndicatorClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) { - UINT8 ubID, ubSoldierID; + UINT16 ubID, ubSoldierID; - ubID = (UINT8) MSYS_GetRegionUserData( pRegion, 0 ); + ubID = (UINT16) MSYS_GetRegionUserData( pRegion, 0 ); if ( ubID == NOBODY ) { @@ -6127,9 +6127,9 @@ void EnemyIndicatorClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) void MercFacePanelCallback( MOUSE_REGION * pRegion, INT32 iReason ) { - UINT8 ubID, ubSoldierID; + UINT16 ubID, ubSoldierID; - ubID = (UINT8) MSYS_GetRegionUserData( pRegion, 0 ); + ubID = (UINT16) MSYS_GetRegionUserData( pRegion, 0 ); // If our flags are set to do this, gofoit! if ( (guiTacticalInterfaceFlags & INTERFACE_MAPSCREEN ) ) @@ -6248,7 +6248,7 @@ void MercFacePanelCallback( MOUSE_REGION * pRegion, INT32 iReason ) { gfSwitchPanel = TRUE; gbNewPanel = SM_PANEL; - gubNewPanelParam = (UINT8)ubSoldierID; + gubNewPanelParam = ubSoldierID; // silversurfer: This needs to be reset to TRUE because inventory view only allows radar screen to be displayed and not the squad list. fRenderRadarScreen = TRUE; } @@ -6259,7 +6259,7 @@ void MercFacePanelCallback( MOUSE_REGION * pRegion, INT32 iReason ) extern void InternalSelectSoldier( UINT16 usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fForceReselect, BOOLEAN fFromUI ); -void HandleLocateSelectMerc( UINT8 ubID, INT8 bFlag ) +void HandleLocateSelectMerc( UINT16 ubID, INT8 bFlag ) { BOOLEAN fSelect = FALSE; @@ -6386,7 +6386,7 @@ void HandleLocateSelectMerc( UINT8 ubID, INT8 bFlag ) -void ShowRadioLocator( UINT8 ubID, UINT8 ubLocatorSpeed ) +void ShowRadioLocator( UINT16 ubID, UINT8 ubLocatorSpeed ) { RESETTIMECOUNTER( MercPtrs[ ubID ]->timeCounters.FlashSelCounter, FLASH_SELECTOR_DELAY ); @@ -6413,7 +6413,7 @@ void ShowRadioLocator( UINT8 ubID, UINT8 ubLocatorSpeed ) } } -void EndRadioLocator( UINT8 ubID ) +void EndRadioLocator( UINT16 ubID ) { MercPtrs[ ubID ]->flags.fFlashLocator = FALSE; MercPtrs[ ubID ]->flags.fShowLocator = FALSE; @@ -6681,9 +6681,9 @@ void RenderSoldierTeamInv( SOLDIERTYPE *pSoldier, INT16 sX, INT16 sY, UINT8 ubPa void TMFirstHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason ) { - UINT8 ubID, ubSoldierID; + UINT16 ubID, ubSoldierID; - ubID = (UINT8) MSYS_GetRegionUserData( pRegion, 0 ); + ubID = (UINT16) MSYS_GetRegionUserData( pRegion, 0 ); // If our flags are set to do this, gofoit! if ( (guiTacticalInterfaceFlags & INTERFACE_MAPSCREEN ) ) @@ -6731,10 +6731,10 @@ void TMFirstHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason ) void TMClickFirstHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason ) { - UINT8 ubID, ubSoldierID; + UINT16 ubID, ubSoldierID; UINT16 usOldHandItem; - ubID = (UINT8) MSYS_GetRegionUserData( pRegion, 0 ); + ubID = (UINT16) MSYS_GetRegionUserData( pRegion, 0 ); if ( ubID == NOBODY ) @@ -6777,10 +6777,10 @@ void TMClickFirstHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason ) void TMClickSecondHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason ) { - UINT8 ubID, ubSoldierID; + UINT16 ubID, ubSoldierID; UINT16 usOldHandItem; - ubID = (UINT8) MSYS_GetRegionUserData( pRegion, 0 ); + ubID = (UINT16) MSYS_GetRegionUserData( pRegion, 0 ); if ( ubID == NOBODY ) return; @@ -6822,7 +6822,7 @@ void TMClickSecondHandInvCallback( MOUSE_REGION * pRegion, INT32 iReason ) } -BOOLEAN PlayerExistsInSlot( UINT8 ubID ) +BOOLEAN PlayerExistsInSlot( UINT16 ubID ) { INT32 cnt; @@ -6841,7 +6841,7 @@ BOOLEAN PlayerExistsInSlot( UINT8 ubID ) } -INT8 GetTeamSlotFromPlayerID( UINT8 ubID ) +INT8 GetTeamSlotFromPlayerID( UINT16 ubID ) { INT8 cnt; @@ -6860,7 +6860,7 @@ INT8 GetTeamSlotFromPlayerID( UINT8 ubID ) } -BOOLEAN RemovePlayerFromTeamSlotGivenMercID( UINT8 ubMercID ) +BOOLEAN RemovePlayerFromTeamSlotGivenMercID( UINT16 ubMercID ) { INT32 cnt; @@ -6880,7 +6880,7 @@ BOOLEAN RemovePlayerFromTeamSlotGivenMercID( UINT8 ubMercID ) } -void AddPlayerToInterfaceTeamSlot( UINT8 ubID ) +void AddPlayerToInterfaceTeamSlot( UINT16 ubID ) { INT32 cnt; @@ -6964,7 +6964,7 @@ BOOLEAN InitTEAMSlots( ) } -BOOLEAN GetPlayerIDFromInterfaceTeamSlot( UINT8 ubPanelSlot, UINT8 *pubID ) +BOOLEAN GetPlayerIDFromInterfaceTeamSlot( UINT8 ubPanelSlot, UINT16 * pubID ) { if ( ubPanelSlot >= gGameOptions.ubSquadSize ) { @@ -7141,7 +7141,7 @@ void CleanUpStack( OBJECTTYPE * pObj, OBJECTTYPE * pCursorObj ) } } -UINT8 FindNextMercInTeamPanel( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ) +UINT16 FindNextMercInTeamPanel( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ) { INT32 cnt; INT32 bFirstID; @@ -7174,14 +7174,14 @@ UINT8 FindNextMercInTeamPanel( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife { if ( pTeamSoldier->stats.bLife > 0 && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bTeam == gbPlayerNum && pTeamSoldier->bAssignment < ON_DUTY && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)gTeamPanel[ cnt ].ubID ); + return( gTeamPanel[ cnt ].ubID ); } } else { if ( OK_CONTROLLABLE_MERC( pTeamSoldier) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)gTeamPanel[ cnt ].ubID ); + return( gTeamPanel[ cnt ].ubID ); } } } @@ -7234,14 +7234,14 @@ UINT8 FindNextMercInTeamPanel( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife { if ( pTeamSoldier->stats.bLife > 0 && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bTeam == gbPlayerNum && pTeamSoldier->bAssignment < ON_DUTY && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)gTeamPanel[ cnt ].ubID ); + return( gTeamPanel[ cnt ].ubID ); } } else { if ( OK_CONTROLLABLE_MERC( pTeamSoldier) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)gTeamPanel[ cnt ].ubID ); + return( gTeamPanel[ cnt ].ubID ); } } } @@ -7462,7 +7462,7 @@ void KeyRingSlotInvClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) } else { - UINT8 ubSrcID, ubDestID; + UINT16 ubSrcID, ubDestID; BOOLEAN fOKToGo = FALSE; BOOLEAN fDeductPoints = FALSE; @@ -7473,7 +7473,7 @@ void KeyRingSlotInvClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) } // ATE: OK, get source, dest guy if different... check for and then charge appropriate APs - ubSrcID = ( UINT8 )gCharactersList[ bSelectedInfoChar ].usSolID; + ubSrcID = gCharactersList[ bSelectedInfoChar ].usSolID; if ( gpItemPointerSoldier ) { ubDestID = gpItemPointerSoldier->ubID; diff --git a/Tactical/Interface Panels.h b/Tactical/Interface Panels.h index 923eb108..0e1bd050 100644 --- a/Tactical/Interface Panels.h +++ b/Tactical/Interface Panels.h @@ -77,18 +77,18 @@ void UpdateTEAMPanel( ); */ BOOLEAN InitializeTEAMPanelCoords( ); -void SetSMPanelCurrentMerc( UINT8 ubNewID ); -void SetTEAMPanelCurrentMerc( UINT8 ubNewID ); +void SetSMPanelCurrentMerc( UINT16 ubNewID ); +void SetTEAMPanelCurrentMerc( UINT16 ubNewID ); UINT16 GetSMPanelCurrentMerc( ); void UpdateSMPanel( ); BOOLEAN InitTEAMSlots( ); -void AddPlayerToInterfaceTeamSlot( UINT8 ubID ); +void AddPlayerToInterfaceTeamSlot( UINT16 ubID ); BOOLEAN RemovePlayerFromInterfaceTeamSlot( UINT8 ubID ); -BOOLEAN GetPlayerIDFromInterfaceTeamSlot( UINT8 ubPanelSlot, UINT8 *pubID ); +BOOLEAN GetPlayerIDFromInterfaceTeamSlot( UINT8 ubPanelSlot, UINT16 * pubID ); void RemoveAllPlayersFromSlot( ); -BOOLEAN PlayerExistsInSlot( UINT8 ubID ); -BOOLEAN RemovePlayerFromTeamSlotGivenMercID( UINT8 ubMercID ); +BOOLEAN PlayerExistsInSlot( UINT16 ubID ); +BOOLEAN RemovePlayerFromTeamSlotGivenMercID( UINT16 ubMercID ); void CheckForAndAddMercToTeamPanel( SOLDIERTYPE *pSoldier ); void CleanUpStack( OBJECTTYPE * pObj, OBJECTTYPE * pCursorObj ); @@ -107,8 +107,8 @@ extern INT8 gbNewItem[ NUM_INV_SLOTS ]; extern INT8 gbNewItemCycle[ NUM_INV_SLOTS ]; extern UINT8 gubNewItemMerc; -void ShowRadioLocator( UINT8 ubID, UINT8 ubLocatorSpeed ); -void EndRadioLocator( UINT8 ubID ); +void ShowRadioLocator( UINT16 ubID, UINT8 ubLocatorSpeed ); +void EndRadioLocator( UINT16 ubID ); extern MOUSE_REGION gSMPanelRegion; @@ -118,7 +118,7 @@ extern BOOLEAN gfDisableTacticalPanelButtons; typedef struct { - UINT8 ubID; + UINT16 ubID; BOOLEAN fOccupied; } TEAM_PANEL_SLOTS_TYPE; @@ -149,7 +149,7 @@ void GoToMapScreenFromTactical( void ); void FinishAnySkullPanelAnimations( ); -UINT8 FindNextMercInTeamPanel( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ); +UINT16 FindNextMercInTeamPanel( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ); // CHRISL: New callback functions for backpack buttons BOOLEAN ChangeDropPackStatus(SOLDIERTYPE *pSoldier, BOOLEAN newStatus); diff --git a/Tactical/Interface Utils.cpp b/Tactical/Interface Utils.cpp index 46d043aa..2031ba35 100644 --- a/Tactical/Interface Utils.cpp +++ b/Tactical/Interface Utils.cpp @@ -498,7 +498,7 @@ void RenderSoldierFace( SOLDIERTYPE *pSoldier, INT16 sFaceX, INT16 sFaceY, BOOLE } else { - SetAutoFaceActiveFromSoldier( FRAME_BUFFER, guiSAVEBUFFER, pSoldier->ubID , sFaceX, sFaceY ); + SetAutoFaceActiveFromSoldier( FRAME_BUFFER, guiSAVEBUFFER, pSoldier->ubID, sFaceX, sFaceY ); // SetAutoFaceActiveFromSoldier( FRAME_BUFFER, FACE_AUTO_RESTORE_BUFFER, pSoldier->ubID , sFaceX, sFaceY ); } } diff --git a/Tactical/Interface.cpp b/Tactical/Interface.cpp index bf953ebe..5bd9d75e 100644 --- a/Tactical/Interface.cpp +++ b/Tactical/Interface.cpp @@ -126,8 +126,8 @@ extern BOOLEAN gfCannotGetThrough; // will use it when showing red laser dot extern void SoldierTooltip(SOLDIERTYPE*); BOOLEAN gfProgBarActive = FALSE; -UINT8 gubProgNumEnemies = 0; -UINT8 gubProgCurEnemy = 0; +UINT16 gubProgNumEnemies = 0; +UINT16 gubProgCurEnemy = 0; UINT32 guiPORTRAITICONS; @@ -192,7 +192,7 @@ BOOLEAN gfPanelAllocated = FALSE; extern MOUSE_REGION gDisableRegion; extern MOUSE_REGION gUserTurnRegion; extern BOOLEAN gfUserTurnRegionActive; -extern UINT8 gubSelectSMPanelToMerc; +extern UINT16 gubSelectSMPanelToMerc; extern BOOLEAN gfIgnoreOnSelectedGuy; enum @@ -670,7 +670,7 @@ void ShutdownCurrentPanel( ) -void SetCurrentTacticalPanelCurrentMerc( UINT8 ubID ) +void SetCurrentTacticalPanelCurrentMerc( UINT16 ubID ) { SOLDIERTYPE *pSoldier; @@ -696,7 +696,7 @@ void SetCurrentTacticalPanelCurrentMerc( UINT8 ubID ) break; case TEAM_PANEL: - SetTEAMPanelCurrentMerc( (UINT8)gusSelectedSoldier ); + SetTEAMPanelCurrentMerc( gusSelectedSoldier ); break; } @@ -734,7 +734,7 @@ void SetCurrentInterfacePanel( UINT8 ubNewPanel ) void ToggleTacticalPanels( ) { gfSwitchPanel = TRUE; - gubNewPanelParam = (UINT8)gusSelectedSoldier; + gubNewPanelParam = gusSelectedSoldier; if ( gsCurInterfacePanel == SM_PANEL ) { @@ -764,7 +764,7 @@ void RemoveCurrentTacticalPanelButtons( ) } -BOOLEAN IsMercPortraitVisible( UINT8 ubSoldierID ) +BOOLEAN IsMercPortraitVisible( UINT16 ubSoldierID ) { if ( gsCurInterfacePanel == TEAM_PANEL ) { @@ -4244,7 +4244,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, GetAPsToOpenDoor( gOpenDoorMenu.pSoldier ), APBPConstants[BP_OPEN_DOOR], FALSE ) ) { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); if ( gOpenDoorMenu.fClosingDoor ) { @@ -4269,7 +4269,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, APBPConstants[AP_BOOT_DOOR], APBPConstants[BP_BOOT_DOOR], FALSE ) ) { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); InteractWithClosedDoor( gOpenDoorMenu.pSoldier, HANDLE_DOOR_FORCE ); } @@ -4286,7 +4286,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, APBPConstants[AP_UNLOCK_DOOR], APBPConstants[BP_UNLOCK_DOOR], FALSE ) ) { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); InteractWithClosedDoor( gOpenDoorMenu.pSoldier, HANDLE_DOOR_UNLOCK ); } @@ -4303,7 +4303,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, GetAPsToPicklock( gOpenDoorMenu.pSoldier ), APBPConstants[BP_PICKLOCK], FALSE ) ) // SANDRO { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); InteractWithClosedDoor( gOpenDoorMenu.pSoldier, HANDLE_DOOR_LOCKPICK ); } @@ -4320,7 +4320,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, APBPConstants[AP_EXAMINE_DOOR], APBPConstants[BP_EXAMINE_DOOR], FALSE ) ) { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); InteractWithClosedDoor( gOpenDoorMenu.pSoldier, HANDLE_DOOR_EXAMINE ); } @@ -4361,7 +4361,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, GetAPsToBombDoor( gOpenDoorMenu.pSoldier ), APBPConstants[BP_EXPLODE_DOOR], FALSE ) ) // SANDRO { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); InteractWithClosedDoor( gOpenDoorMenu.pSoldier, HANDLE_DOOR_EXPLODE ); } @@ -4379,7 +4379,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, GetAPsToUntrapDoor( gOpenDoorMenu.pSoldier ), APBPConstants[BP_UNTRAP_DOOR], FALSE ) ) // SANDRO { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); InteractWithClosedDoor( gOpenDoorMenu.pSoldier, HANDLE_DOOR_UNTRAP ); } @@ -4420,7 +4420,7 @@ void BtnDoorMenuCallback(GUI_BUTTON *btn,INT32 reason) if ( EnoughPoints( gOpenDoorMenu.pSoldier, APBPConstants[AP_USE_CROWBAR], APBPConstants[BP_USE_CROWBAR], FALSE ) ) { // Set UI - SetUIBusy( (UINT8)gOpenDoorMenu.pSoldier->ubID ); + SetUIBusy( gOpenDoorMenu.pSoldier->ubID ); InteractWithClosedDoor( gOpenDoorMenu.pSoldier, HANDLE_DOOR_CROWBAR ); } @@ -5178,7 +5178,7 @@ void PauseRT( BOOLEAN fPause ) } -void InitEnemyUIBar( UINT8 ubNumEnemies, UINT8 ubDoneEnemies ) +void InitEnemyUIBar( UINT16 ubNumEnemies, UINT16 ubDoneEnemies ) { // OK, set value gubProgNumEnemies = ubNumEnemies + ubDoneEnemies; @@ -5218,7 +5218,7 @@ void InitPlayerUIBar( BOOLEAN fInterrupt ) { SOLDIERTYPE *pTeamSoldier; INT32 cnt = 0; - INT8 bNumOK = 0, bNumNotOK = 0; + INT16 bNumOK = 0, bNumNotOK = 0; if ( !gGameOptions.fTurnTimeLimit ) { diff --git a/Tactical/Interface.h b/Tactical/Interface.h index e531076b..adbd2f21 100644 --- a/Tactical/Interface.h +++ b/Tactical/Interface.h @@ -366,7 +366,7 @@ enum extern BOOLEAN gfSwitchPanel; extern BOOLEAN gfUIStanceDifferent; extern UINT8 gbNewPanel; -extern UINT8 gubNewPanelParam; +extern UINT16 gubNewPanelParam; extern INT16 gsCurInterfacePanel; extern UINT32 guiRENDERBUFFER; @@ -458,9 +458,9 @@ BOOLEAN DrawCTHIndicator(); void CreateCurrentTacticalPanelButtons( ); void RemoveCurrentTacticalPanelButtons( ); -void SetCurrentTacticalPanelCurrentMerc( UINT8 ubID ); +void SetCurrentTacticalPanelCurrentMerc( UINT16 ubID ); void SetCurrentInterfacePanel( UINT8 ubNewPanel ); -BOOLEAN IsMercPortraitVisible( UINT8 ubSoldierID ); +BOOLEAN IsMercPortraitVisible( UINT16 ubSoldierID ); BOOLEAN InitializeCurrentPanel( ); void ShutdownCurrentPanel( ); @@ -475,7 +475,7 @@ void HandleUpDownArrowBackgrounds( ); void EndDeadlockMsg( ); -void HandleLocateSelectMerc( UINT8 ubID, INT8 bFlag ); +void HandleLocateSelectMerc( UINT16 ubID, INT8 bFlag ); void DirtyMercPanelInterface( SOLDIERTYPE *pSoldier, UINT8 ubDirtyLevel ); @@ -515,7 +515,7 @@ void EndTopMessage( ); void PauseRT( BOOLEAN fPause ); -void InitEnemyUIBar( UINT8 ubNumEnemies, UINT8 ubDoneEnemies ); +void InitEnemyUIBar( UINT16 ubNumEnemies, UINT16 ubDoneEnemies ); STR16 GetSoldierHealthString( SOLDIERTYPE *pSoldier ); diff --git a/Tactical/Item Types.cpp b/Tactical/Item Types.cpp index 55bd75b2..2c213d9e 100644 --- a/Tactical/Item Types.cpp +++ b/Tactical/Item Types.cpp @@ -125,7 +125,7 @@ bool IsSlotASmallPocket(int slot) return false; } -void CreateLBE (OBJECTTYPE* pObj, UINT8 ubID, int numSubPockets) +void CreateLBE (OBJECTTYPE* pObj, UINT16 ubID, int numSubPockets) { int uniqueID; LBENODE* pLBE = NULL; diff --git a/Tactical/Item Types.h b/Tactical/Item Types.h index 3e91212c..fac26280 100644 --- a/Tactical/Item Types.h +++ b/Tactical/Item Types.h @@ -259,7 +259,7 @@ public: #define SIZEOF_LBENODE_POD (offsetof(LBENODE, endOfPOD)) bool checkLBEArrayIntegrity(bool verbose=false); // BOB: checks all worldItems for missing LBE info -void CreateLBE(OBJECTTYPE* pObj, UINT8 ubID, int numSubPockets); +void CreateLBE(OBJECTTYPE* pObj, UINT16 ubID, int numSubPockets); bool DestroyLBEIfEmpty(OBJECTTYPE* pObj, int stackIndex = 0); void DestroyLBE(OBJECTTYPE* pObj, int stackIndex = 0); void GetLBESlots(UINT32 LBEType, std::vector& LBESlots); @@ -415,7 +415,7 @@ namespace ObjectDataStructs { INT8 bDelay; // >=0 values used only INT8 bFrequency; // >=0 values used only }; - UINT8 ubBombOwner; // side which placed the bomb + UINT16 ubBombOwner; // side which placed the bomb UINT8 bActionValue; // this is used by the ACTION_ITEM fake item union { diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp index 8ddaaf69..01e07f7a 100644 --- a/Tactical/Items.cpp +++ b/Tactical/Items.cpp @@ -9397,7 +9397,7 @@ void CheckEquipmentForFragileItemDamage( SOLDIERTYPE *pSoldier, INT32 iDamage ) } -BOOLEAN DamageItemOnGround( OBJECTTYPE * pObject, INT32 sGridNo, INT8 bLevel, INT32 iDamage, UINT8 ubOwner ) +BOOLEAN DamageItemOnGround( OBJECTTYPE * pObject, INT32 sGridNo, INT8 bLevel, INT32 iDamage, UINT16 ubOwner ) { #ifdef JA2BETAVERSION CHAR tmpMPDbgString[512]; @@ -15411,10 +15411,10 @@ BOOLEAN ObjectIsExternalFeeder(SOLDIERTYPE* pSoldier, OBJECTTYPE * pObject) if ( !pSoldier || !pObject) return( FALSE ); - UINT8 usSoldierFeedingTarget1 = 0; + UINT16 usSoldierFeedingTarget1 = 0; UINT16 usGunSlot1 = 0; UINT16 usAmmoSlot1 = 0; - UINT8 usSoldierFeedingTarget2 = 0; + UINT16 usSoldierFeedingTarget2 = 0; UINT16 usGunSlot2 = 0; UINT16 usAmmoSlot2 = 0; if ( pSoldier->IsFeedingExternal(&usSoldierFeedingTarget1, &usGunSlot1, &usAmmoSlot1, &usSoldierFeedingTarget2, &usGunSlot2, &usAmmoSlot2) ) @@ -15469,10 +15469,10 @@ OBJECTTYPE* GetExternalFeedingObject(SOLDIERTYPE* pSoldier, OBJECTTYPE * pObject continue; // we check if that guy is feeding someone, and that someone is really us - UINT8 usTeamSoldierFeedingTarget1 = 0; + UINT16 usTeamSoldierFeedingTarget1 = 0; UINT16 usGunSlot1 = 0; UINT16 usAmmoSlot1 = 0; - UINT8 usTeamSoldierFeedingTarget2 = 0; + UINT16 usTeamSoldierFeedingTarget2 = 0; UINT16 usGunSlot2 = 0; UINT16 usAmmoSlot2 = 0; if ( pTeamSoldier->IsFeedingExternal(&usTeamSoldierFeedingTarget1, &usGunSlot1, &usAmmoSlot1, &usTeamSoldierFeedingTarget2, &usGunSlot2, &usAmmoSlot2) ) diff --git a/Tactical/Items.h b/Tactical/Items.h index d0e2649b..f25b10e4 100644 --- a/Tactical/Items.h +++ b/Tactical/Items.h @@ -227,7 +227,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, UINT8 ubOwner ); +BOOLEAN DamageItemOnGround( OBJECTTYPE * pObject, INT32 sGridNo, INT8 bLevel, INT32 iDamage, UINT16 ubOwner ); BOOLEAN CompatibleFaceItem( UINT16 usItem1, UINT16 usItem2 ); diff --git a/Tactical/LOS.cpp b/Tactical/LOS.cpp index 36f866b6..25318a2a 100644 --- a/Tactical/LOS.cpp +++ b/Tactical/LOS.cpp @@ -2433,7 +2433,7 @@ INT32 SoldierTo3DLocationLineOfSightTest( SOLDIERTYPE * pStartSoldier, INT32 sGr { FLOAT dStartZPos, dEndZPos; INT16 sXPos, sYPos; - UINT8 ubTargetID; + UINT16 ubTargetID; BOOLEAN fOk; CHECKF( pStartSoldier ); @@ -4385,7 +4385,7 @@ UINT8 SoldierToSoldierBodyPartChanceToGetThrough( SOLDIERTYPE * pStartSoldier, S return( ChanceToGetThrough( pStartSoldier, (FLOAT) CenterX( pEndSoldier->sGridNo ), (FLOAT) CenterY( pEndSoldier->sGridNo ), dEndZPos ) ); } -UINT8 SoldierToLocationChanceToGetThrough( SOLDIERTYPE * pStartSoldier, INT32 sGridNo, INT8 bLevel, INT8 bCubeLevel, UINT8 ubTargetID ) +UINT8 SoldierToLocationChanceToGetThrough( SOLDIERTYPE * pStartSoldier, INT32 sGridNo, INT8 bLevel, INT8 bCubeLevel, UINT16 ubTargetID ) { FLOAT dEndZPos; INT16 sXPos; @@ -4637,7 +4637,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( UINT8 ubFirer, BULLET * pBullet, BOOLEAN fFake ) +INT8 FireBullet( UINT16 ubFirer, BULLET * pBullet, BOOLEAN fFake ) { //DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("FireBullet")); @@ -5782,7 +5782,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( UINT8 ubOwner, FLOAT dStartX, FLOAT dStartY, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usExplosiveItem ) +INT8 FireFragmentGivenTarget( UINT16 ubOwner, FLOAT dStartX, FLOAT dStartY, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usExplosiveItem ) { // Artificial... dStartZ++; @@ -7023,7 +7023,7 @@ void MoveBullet( INT32 iBullet ) FIXEDPT qLastZ; SOLDIERTYPE * pTarget; - UINT8 ubTargetID; + UINT16 ubTargetID; BOOLEAN fIntended; BOOLEAN fStopped; INT8 bOldLOSIndexX; @@ -9930,7 +9930,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% - UINT8 ubTargetID = WhoIsThere2( pShooter->sTargetGridNo, pShooter->bTargetLevel ); // Target ubID + UINT16 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; diff --git a/Tactical/LOS.h b/Tactical/LOS.h index 64c3fc80..01bd9679 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( UINT8 ubOwner, FLOAT dStartX, FLOAT dStartY, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usExplosiveItem ); +INT8 FireFragmentGivenTarget( UINT16 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); @@ -152,7 +152,7 @@ UINT8 SoldierToSoldierChanceToGetThrough( SOLDIERTYPE * pStartSoldier, SOLDIERTY UINT8 SoldierToSoldierBodyPartChanceToGetThrough( SOLDIERTYPE * pStartSoldier, SOLDIERTYPE * pEndSoldier, UINT8 ubAimLocation ); UINT8 AISoldierToSoldierChanceToGetThrough( SOLDIERTYPE * pStartSoldier, SOLDIERTYPE * pEndSoldier ); UINT8 AISoldierToLocationChanceToGetThrough( SOLDIERTYPE * pStartSoldier, INT32 sGridNo, INT8 bLevel, INT8 bCubeLevel ); -UINT8 SoldierToLocationChanceToGetThrough( SOLDIERTYPE * pStartSoldier, INT32 sGridNo, INT8 bLevel, INT8 bCubeLevel, UINT8 ubTargetID ); +UINT8 SoldierToLocationChanceToGetThrough( SOLDIERTYPE * pStartSoldier, INT32 sGridNo, INT8 bLevel, INT8 bCubeLevel, UINT16 ubTargetID ); INT32 SoldierToLocationWindowTest( SOLDIERTYPE * pStartSoldier, INT32 sEndGridNo ); // sevenfm: AI LOS functions INT32 LOS_Raised(SOLDIERTYPE * pStartSoldier, SOLDIERTYPE * pEndSoldier, int iTileSightLimit = CALC_FROM_ALL_DIRS, UINT8 ubAimLocation = LOS_POS); diff --git a/Tactical/Merc Entering.cpp b/Tactical/Merc Entering.cpp index 6a425878..aaffbf2f 100644 --- a/Tactical/Merc Entering.cpp +++ b/Tactical/Merc Entering.cpp @@ -359,7 +359,7 @@ UINT8 ubHeliScripts[ NUM_HELI_STATES ][ MAX_HELI_SCRIPT ] = BOOLEAN gfHandleHeli = FALSE; -UINT8 gusHeliSeats[ MAX_MERC_IN_HELI ]; +UINT16 gusHeliSeats[ MAX_MERC_IN_HELI ]; INT8 gbNumHeliSeatsOccupied = 0; BOOLEAN gfFirstGuyDown = FALSE; @@ -396,7 +396,7 @@ void ResetHeliSeats( ) gbNumHeliSeatsOccupied = 0; } -void AddMercToHeli( UINT8 ubID ) +void AddMercToHeli( UINT16 ubID ) { if ( gbNumHeliSeatsOccupied < MAX_MERC_IN_HELI ) { @@ -1028,7 +1028,7 @@ void HandleFirstHeliDropOfGame( ) CharacterDialogueWithSpecialEvent( 0, 0, 0, DIALOGUE_TACTICAL_UI , FALSE , FALSE , DIALOGUE_SPECIAL_EVENT_ENABLE_AI ,0, 0 ); } -UINT8 SpawnAirDropElite( INT32 sGridNo ) +UINT16 SpawnAirDropElite( INT32 sGridNo ) { SOLDIERTYPE *pSoldier; @@ -1079,7 +1079,7 @@ void InitiateEnemyAirDropSoldiers( INT32 sGridNo ) for ( int i = 0; i < 6; ++i ) { - UINT8 id = SpawnAirDropElite( gMapInformation.sSouthGridNo + i ); + UINT16 id = SpawnAirDropElite( gMapInformation.sSouthGridNo + i ); if ( id == NOBODY ) return; diff --git a/Tactical/Merc Hiring.cpp b/Tactical/Merc Hiring.cpp index 62cded8b..c61e1ae1 100644 --- a/Tactical/Merc Hiring.cpp +++ b/Tactical/Merc Hiring.cpp @@ -131,7 +131,7 @@ UINT16 GetInitialHeliRandomTime(); INT8 HireMerc( MERC_HIRE_STRUCT *pHireMerc) { SOLDIERTYPE *pSoldier; - UINT8 iNewIndex; + UINT16 iNewIndex; UINT8 ubCurrentSoldier = pHireMerc->ubProfileID; MERCPROFILESTRUCT *pMerc; SOLDIERCREATE_STRUCT MercCreateStruct; @@ -429,7 +429,7 @@ INT8 HireMerc( MERC_HIRE_STRUCT *pHireMerc) } -void MercArrivesCallback( UINT8 ubSoldierID ) +void MercArrivesCallback( UINT16 ubSoldierID ) { MERCPROFILESTRUCT *pMerc; SOLDIERTYPE *pSoldier; @@ -502,7 +502,7 @@ void MercArrivesCallback( UINT8 ubSoldierID ) { bool force_helidrop = true; SOLDIERTYPE *pTeamSoldier; - for (UINT8 cnt = 0; cnt < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; cnt++) + for (UINT16 cnt = 0; cnt < giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; cnt++) { if (gCharactersList[cnt].fValid) { @@ -671,12 +671,12 @@ BOOLEAN IsTheSoldierAliveAndConcious( SOLDIERTYPE *pSoldier ) return(FALSE); } -UINT8 NumberOfMercsOnPlayerTeam() +UINT16 NumberOfMercsOnPlayerTeam() { - INT8 cnt; + UINT16 cnt; SOLDIERTYPE *pSoldier; - INT16 bLastTeamID; - UINT8 ubCount=0; + UINT16 bLastTeamID; + UINT16 ubCount=0; // Set locator to first merc cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; @@ -702,7 +702,7 @@ UINT8 NumberOfMercsOnPlayerTeam() void HandleMercArrivesQuotes( SOLDIERTYPE *pSoldier ) { - UINT8 cnt, usLastTeamID; + UINT16 cnt, usLastTeamID; INT8 bHated; SOLDIERTYPE *pTeamSoldier; #ifdef JA2UB diff --git a/Tactical/Merc Hiring.h b/Tactical/Merc Hiring.h index 78dcf93b..d083788d 100644 --- a/Tactical/Merc Hiring.h +++ b/Tactical/Merc Hiring.h @@ -46,10 +46,10 @@ extern INT16 gsMercArriveSectorY; INT8 HireMerc( MERC_HIRE_STRUCT *pHireMerc); -void MercArrivesCallback( UINT8 ubSoldierID ); +void MercArrivesCallback( UINT16 ubSoldierID ); BOOLEAN IsMercHireable( UINT8 ubMercID ); BOOLEAN IsMercDead( UINT8 ubMercID ); -UINT8 NumberOfMercsOnPlayerTeam(); +UINT16 NumberOfMercsOnPlayerTeam(); BOOLEAN IsTheSoldierAliveAndConcious( SOLDIERTYPE *pSoldier ); void HandleMercArrivesQuotes( SOLDIERTYPE *pSoldier ); void UpdateAnyInTransitMercsWithGlobalArrivalSector( ); diff --git a/Tactical/Militia Control.cpp b/Tactical/Militia Control.cpp index 76331c01..f03aa926 100644 --- a/Tactical/Militia Control.cpp +++ b/Tactical/Militia Control.cpp @@ -347,7 +347,7 @@ void PrepareMilitiaForTactical( BOOLEAN fPrepareAll) void HandleMilitiaPromotions( void ) { - UINT8 cnt; + UINT16 cnt; SOLDIERTYPE* pTeamSoldier; gbGreenToElitePromotions = 0; @@ -1442,7 +1442,7 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_ALL_ATTACK ): if (fAllowSectorOrder) { - UINT8 cnt; + UINT16 cnt; SOLDIERTYPE *pTeamSoldier; cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; @@ -1479,7 +1479,7 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_ALL_HOLD ): if (fAllowSectorOrder) { - UINT8 cnt; + UINT16 cnt; SOLDIERTYPE *pTeamSoldier; cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; @@ -1515,7 +1515,7 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_ALL_RETREAT ): if (fAllowSectorOrder) { - UINT8 cnt; + UINT16 cnt; INT16 sActionGridNo; SOLDIERTYPE *pTeamSoldier; @@ -1578,7 +1578,8 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_ALL_COMETOME ): if (fAllowSectorOrder) { - UINT8 cnt, ubDirection; + UINT16 cnt; + UINT8 ubDirection; INT32 sActionGridNo, sGridNo, sAdjustedGridNo; SOLDIERTYPE *pTeamSoldier; @@ -1634,7 +1635,7 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_ALL_SPREAD ): if (fAllowSectorOrder) { - UINT8 cnt; + UINT16 cnt; INT32 sActionGridNo; SOLDIERTYPE *pTeamSoldier; @@ -1687,7 +1688,7 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_ALL_GETDOWN ): if (fAllowSectorOrder) { - UINT8 cnt; + UINT16 cnt; SOLDIERTYPE *pTeamSoldier; cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; @@ -1725,7 +1726,7 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_ALL_CROUCH ): if (fAllowSectorOrder) { - UINT8 cnt; + UINT16 cnt; SOLDIERTYPE *pTeamSoldier; cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; @@ -1763,7 +1764,7 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_ALL_TAKE_COVER ): if (fAllowSectorOrder) { - UINT8 cnt; + UINT16 cnt; INT16 sActionGridNo; INT32 iDummy; SOLDIERTYPE *pTeamSoldier; diff --git a/Tactical/Morale.cpp b/Tactical/Morale.cpp index 131f9b4d..2a41793f 100644 --- a/Tactical/Morale.cpp +++ b/Tactical/Morale.cpp @@ -257,7 +257,7 @@ void DecayStrategicMorale( SOLDIERTYPE * pSoldier ) void DecayTacticalMoraleModifiers( void ) { SOLDIERTYPE * pSoldier; - UINT8 ubLoop, ubLoop2; + UINT16 ubLoop, ubLoop2; BOOLEAN fHandleNervous; ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; @@ -364,7 +364,7 @@ void DecayTacticalMoraleModifiers( void ) void DecayStrategicMoraleModifiers( void ) { SOLDIERTYPE * pSoldier; - UINT8 ubLoop; + UINT16 ubLoop; ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; for ( pSoldier = MercPtrs[ ubLoop ]; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++, pSoldier++ ) @@ -730,7 +730,7 @@ void HandleMoraleEventForSoldier( SOLDIERTYPE * pSoldier, INT8 bMoraleEvent ) void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, INT16 sMapY, INT8 bMapZ ) { - UINT8 ubLoop; + UINT16 ubLoop; SOLDIERTYPE * pTeamSoldier; MERCPROFILESTRUCT * pProfile; @@ -1144,14 +1144,13 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I void HourlyMoraleUpdate( void ) { - INT8 bMercID, bOtherID; + UINT16 bMercID, bOtherID, bLastTeamID; INT8 bActualTeamOpinion; INT8 bTeamMoraleModChange, bTeamMoraleModDiff; INT8 bOpinion=-1; INT32 iTotalOpinions; INT8 bNumTeamMembers; INT8 bHighestTeamLeadership = 0; - INT8 bLastTeamID; SOLDIERTYPE * pSoldier; SOLDIERTYPE * pOtherSoldier; MERCPROFILESTRUCT * pProfile; diff --git a/Tactical/Overhead Types.h b/Tactical/Overhead Types.h index a7e4326d..f321b9bb 100644 --- a/Tactical/Overhead Types.h +++ b/Tactical/Overhead Types.h @@ -276,31 +276,32 @@ const int startingZ = 0; // ENUMERATION OF SOLDIER POSIITONS IN GLOBAL SOLDIER LIST // WDS - make number of mercenaries, etc. be configurable -#define CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS 32 -extern UINT8 giMAXIMUM_NUMBER_OF_PLAYER_MERCS; +#define CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS 254 +extern UINT16 giMAXIMUM_NUMBER_OF_PLAYER_MERCS; #define CODE_MAXIMUM_NUMBER_OF_PLAYER_VEHICLES 6 -extern UINT8 giMAXIMUM_NUMBER_OF_PLAYER_VEHICLES; +extern UINT16 giMAXIMUM_NUMBER_OF_PLAYER_VEHICLES; #define CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS+CODE_MAXIMUM_NUMBER_OF_PLAYER_VEHICLES -extern UINT8 giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; -#define CODE_MAXIMUM_NUMBER_OF_ENEMIES 64 -extern UINT8 giMAXIMUM_NUMBER_OF_ENEMIES; +extern UINT16 giMAXIMUM_NUMBER_OF_PLAYER_SLOTS; +#define CODE_MAXIMUM_NUMBER_OF_ENEMIES 256 +extern UINT16 giMAXIMUM_NUMBER_OF_ENEMIES; #define CODE_MAXIMUM_NUMBER_OF_CREATURES 40 -extern UINT8 giMAXIMUM_NUMBER_OF_CREATURES; +extern UINT16 giMAXIMUM_NUMBER_OF_CREATURES; #define CODE_MAXIMUM_NUMBER_OF_REBELS 64 -extern UINT8 giMAXIMUM_NUMBER_OF_REBELS; +extern UINT16 giMAXIMUM_NUMBER_OF_REBELS; #define CODE_MAXIMUM_NUMBER_OF_CIVS 40 -extern UINT8 giMAXIMUM_NUMBER_OF_CIVS; +extern UINT16 giMAXIMUM_NUMBER_OF_CIVS; // The following should be the largest from the above set of constants. // Note: Is there any way to compute this via the preprocessor? -#define LARGEST_NUMBER_IN_ANY_GROUP 64 +#define LARGEST_NUMBER_IN_ANY_GROUP 260 #define MAX_NUM_SOLDIERS (CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS+CODE_MAXIMUM_NUMBER_OF_PLAYER_VEHICLES+CODE_MAXIMUM_NUMBER_OF_ENEMIES+CODE_MAXIMUM_NUMBER_OF_CREATURES+CODE_MAXIMUM_NUMBER_OF_REBELS+CODE_MAXIMUM_NUMBER_OF_CIVS) #define NUM_PLANNING_MERCS 8 -#define TOTAL_SOLDIERS ( NUM_PLANNING_MERCS + MAX_NUM_SOLDIERS ) +//#define TOTAL_SOLDIERS ( NUM_PLANNING_MERCS + MAX_NUM_SOLDIERS ) +#define TOTAL_SOLDIERS (MAX_NUM_SOLDIERS ) // If there are more than (one less the size of the field used to store IDs (currently a char)) then fail -#if TOTAL_SOLDIERS > 254 +#if TOTAL_SOLDIERS > 2048 #error Too many! #endif #if CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS > LARGEST_NUMBER_IN_ANY_GROUP diff --git a/Tactical/Overhead.cpp b/Tactical/Overhead.cpp index ef446769..8dca851e 100644 --- a/Tactical/Overhead.cpp +++ b/Tactical/Overhead.cpp @@ -143,19 +143,19 @@ #include "GameInitOptionsScreen.h" // OJW - 20090419 -UINT8 giMAXIMUM_NUMBER_OF_PLAYER_MERCS = CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS; -UINT8 giMAXIMUM_NUMBER_OF_PLAYER_VEHICLES = CODE_MAXIMUM_NUMBER_OF_PLAYER_VEHICLES; -UINT8 giMAXIMUM_NUMBER_OF_PLAYER_SLOTS = CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS; -UINT8 giMAXIMUM_NUMBER_OF_ENEMIES = CODE_MAXIMUM_NUMBER_OF_ENEMIES; -UINT8 giMAXIMUM_NUMBER_OF_CREATURES = CODE_MAXIMUM_NUMBER_OF_CREATURES; -UINT8 giMAXIMUM_NUMBER_OF_REBELS = CODE_MAXIMUM_NUMBER_OF_REBELS; -UINT8 giMAXIMUM_NUMBER_OF_CIVS = CODE_MAXIMUM_NUMBER_OF_CIVS; +UINT16 giMAXIMUM_NUMBER_OF_PLAYER_MERCS = CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS; +UINT16 giMAXIMUM_NUMBER_OF_PLAYER_VEHICLES = CODE_MAXIMUM_NUMBER_OF_PLAYER_VEHICLES; +UINT16 giMAXIMUM_NUMBER_OF_PLAYER_SLOTS = CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS; +UINT16 giMAXIMUM_NUMBER_OF_ENEMIES = CODE_MAXIMUM_NUMBER_OF_ENEMIES; +UINT16 giMAXIMUM_NUMBER_OF_CREATURES = CODE_MAXIMUM_NUMBER_OF_CREATURES; +UINT16 giMAXIMUM_NUMBER_OF_REBELS = CODE_MAXIMUM_NUMBER_OF_REBELS; +UINT16 giMAXIMUM_NUMBER_OF_CIVS = CODE_MAXIMUM_NUMBER_OF_CIVS; //forward declarations of common classes to eliminate includes class OBJECTTYPE; class SOLDIERTYPE; - +extern void HandleTBPickUpBackpacks(BOOLEAN fAll); extern void HandleBestSightingPositionInRealtime(); extern INT32 GetCurrentBalance( void ); @@ -372,7 +372,7 @@ CHAR8 gzDirectionStr[][ 30 ] = }; // TEMP VALUES FOR TEAM DEFAULT POSITIONS -UINT8 bDefaultTeamRangesMP[ MAXTEAMS ][ 2 ] = +UINT16 bDefaultTeamRangesMP[ MAXTEAMS ][ 2 ] = { 0, 19, //20 US @@ -388,7 +388,7 @@ UINT8 bDefaultTeamRangesMP[ MAXTEAMS ][ 2 ] = MAX_NUM_SOLDIERS, TOTAL_SOLDIERS - 1 // PLANNING SOLDIERS }; -UINT8 bDefaultTeamRanges[ MAXTEAMS_SP ][ 2 ] = +UINT16 bDefaultTeamRanges[ MAXTEAMS_SP ][ 2 ] = { 0, CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS+CODE_MAXIMUM_NUMBER_OF_PLAYER_VEHICLES-1, @@ -420,16 +420,16 @@ COLORVAL bDefaultTeamColors[ MAXTEAMS ] = }; // UTILITY FUNCTIONS -INT8 NumActiveAndConsciousTeamMembers( UINT8 ubTeam ); -UINT8 NumEnemyInSector( ); -UINT8 NumEnemyInSectorExceptCreatures(); -UINT8 NumCapableEnemyInSector( ); +UINT16 NumActiveAndConsciousTeamMembers( UINT8 ubTeam ); +UINT16 NumEnemyInSector( ); +UINT16 NumEnemyInSectorExceptCreatures(); +UINT16 NumCapableEnemyInSector( ); BOOLEAN KillIncompacitatedEnemyInSector( ); BOOLEAN CheckForLosingEndOfBattle( ); void EndBattleWithUnconsciousGuysCallback( UINT8 bExitValue ); -UINT8 NumEnemyInSectorNotDeadOrDying( ); -UINT8 NumBloodcatsInSectorNotDeadOrDying( ); +UINT16 NumEnemyInSectorNotDeadOrDying( ); +UINT16 NumBloodcatsInSectorNotDeadOrDying( ); UINT8 gubWaitingForAllMercsToExitCode = 0; UINT8 gusNumMercsUntilWaitingOver = 0; @@ -659,7 +659,7 @@ void ShutdownTacticalEngine( ) BOOLEAN InitOverhead( ) { UINT32 cnt; - UINT8 cnt2; + UINT16 cnt2; // Set pointers list for( cnt = 0; cnt < TOTAL_SOLDIERS; cnt++ ) @@ -1331,7 +1331,7 @@ BOOLEAN ExecuteOverhead( ) } // OK, if we are the selected soldier, refresh some UI stuff - if ( pSoldier->ubID == (UINT8)gusSelectedSoldier ) + if ( pSoldier->ubID == gusSelectedSoldier ) { gfUIRefreshArrows = TRUE; } @@ -3378,7 +3378,7 @@ void InternalSelectSoldier( UINT16 usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fF UpdateForContOverPortrait( pOldSoldier, FALSE ); } - gusSelectedSoldier = (UINT16)usSoldierID; + gusSelectedSoldier = usSoldierID; // find which squad this guy is, then set selected squad to this guy if( pSoldier->bAssignment == VEHICLE ) @@ -3405,7 +3405,7 @@ void InternalSelectSoldier( UINT16 usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fF //pSoldier->SetCheckSoldierLightFlag( ); // Set interface to reflect new selection! - SetCurrentTacticalPanelCurrentMerc( (UINT8)usSoldierID ); + SetCurrentTacticalPanelCurrentMerc( usSoldierID ); // PLay ATTN SOUND if ( fAcknowledge ) @@ -3513,11 +3513,11 @@ void LocateSoldier( UINT16 usID, BOOLEAN fSetLocator) { if ( fSetLocator == SETLOCATOR || fSetLocator == 10 ) { - ShowRadioLocator((UINT8)usID, SHOW_LOCATOR_NORMAL ); + ShowRadioLocator(usID, SHOW_LOCATOR_NORMAL ); } else { - ShowRadioLocator((UINT8)usID, SHOW_LOCATOR_FAST ); + ShowRadioLocator(usID, SHOW_LOCATOR_FAST ); } } } @@ -3569,7 +3569,7 @@ void SlideTo(INT32 sGridNo, UINT16 usSoldierID , UINT16 usReasonID, BOOLEAN fSet // Locate even if on screen if (fSetLocator) - ShowRadioLocator((UINT8) usSoldierID, SHOW_LOCATOR_NORMAL ); + ShowRadioLocator( usSoldierID, SHOW_LOCATOR_NORMAL ); // FIRST CHECK IF WE ARE ON SCREEN if ( GridNoOnScreen( MercPtrs[ usSoldierID ]->sGridNo ) ) @@ -4167,7 +4167,7 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld ) // killing crows/cows is not worth any experience! if ( ( pSoldierOld->ubBodyType != CROW ) && ( pSoldierOld->ubBodyType != COW ) ) //&& pSoldierOld->ubLastDamageReason != TAKE_DAMAGE_BLOODLOSS ) // SANDRO - why not give exp for bleeding out? { - UINT8 ubAssister = NOBODY; + UINT16 ubAssister = NOBODY; // if it was a kill by a player's merc if (pSoldierOld->ubAttackerID != NOBODY && MercPtrs[ pSoldierOld->ubAttackerID ]->bTeam == gbPlayerNum ) @@ -4267,7 +4267,7 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld ) CheckForEndOfBattle( FALSE ); } -UINT8 LastActiveTeamMember( UINT8 ubTeam ) +UINT16 LastActiveTeamMember( UINT16 ubTeam ) { INT32 cnt; SOLDIERTYPE *pSoldier; @@ -4279,7 +4279,7 @@ UINT8 LastActiveTeamMember( UINT8 ubTeam ) { if ( pSoldier->bActive ) { - return( (INT8)cnt ); + return( (UINT16)cnt ); } } @@ -4542,9 +4542,9 @@ void MakeCivHostile(SOLDIERTYPE *pSoldier) UINT8 CivilianGroupMembersChangeSidesWithinProximity( SOLDIERTYPE * pAttacked ) { - SOLDIERTYPE * pSoldier; - UINT8 ubFirstProfile = NO_PROFILE; - UINT8 cnt; + SOLDIERTYPE * pSoldier; + UINT8 ubFirstProfile = NO_PROFILE; + UINT16 cnt; if ( pAttacked->ubCivilianGroup == NON_CIV_GROUP ) { @@ -4584,11 +4584,11 @@ UINT8 CivilianGroupMembersChangeSidesWithinProximity( SOLDIERTYPE * pAttacked ) SOLDIERTYPE * CivilianGroupMemberChangesSides( SOLDIERTYPE * pAttacked ) { - SOLDIERTYPE * pNew; - SOLDIERTYPE * pNewAttacked = pAttacked; - SOLDIERTYPE * pSoldier; - UINT8 cnt; - UINT8 ubFirstProfile = NO_PROFILE; + SOLDIERTYPE * pNew; + SOLDIERTYPE * pNewAttacked = pAttacked; + SOLDIERTYPE * pSoldier; + UINT16 cnt; + UINT8 ubFirstProfile = NO_PROFILE; if ( pAttacked->ubCivilianGroup == NON_CIV_GROUP ) { @@ -4778,11 +4778,11 @@ gTacticalStatus.fCivGroupHostile[ ubLoop ] = CIV_GROUP_HOSTILE; } */ -INT8 NumActiveAndConsciousTeamMembers( UINT8 ubTeam ) +UINT16 NumActiveAndConsciousTeamMembers( UINT8 ubTeam ) { INT32 cnt; SOLDIERTYPE *pSoldier; - UINT8 ubCount = 0; + UINT16 ubCount = 0; cnt = gTacticalStatus.Team[ ubTeam ].bFirstID; @@ -4799,10 +4799,10 @@ INT8 NumActiveAndConsciousTeamMembers( UINT8 ubTeam ) } -UINT8 FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ) +UINT16 FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ) { - UINT8 bLastTeamID; - INT32 cnt; + UINT16 bLastTeamID; + UINT16 cnt; SOLDIERTYPE *pTeamSoldier; cnt = pSoldier->ubID + 1; @@ -4823,14 +4823,14 @@ UINT8 FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKL { if ( pTeamSoldier->stats.bLife > 0 && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bTeam == gbPlayerNum && ( pTeamSoldier->bAssignment < ON_DUTY || pTeamSoldier->bAssignment == VEHICLE ) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)cnt ); + return( cnt ); } } else { if ( OK_CONTROLLABLE_MERC( pTeamSoldier) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)cnt ); + return( cnt ); } } } @@ -4854,14 +4854,14 @@ UINT8 FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKL { if ( pTeamSoldier->stats.bLife > 0 && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bTeam == gbPlayerNum && ( pTeamSoldier->bAssignment < ON_DUTY || pTeamSoldier->bAssignment == VEHICLE ) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)cnt ); + return( cnt ); } } else { if ( OK_CONTROLLABLE_MERC( pTeamSoldier) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)cnt ); + return( cnt ); } } } @@ -4913,9 +4913,9 @@ SOLDIERTYPE *FindNextActiveSquad( SOLDIERTYPE *pSoldier ) } -UINT8 FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ) +UINT16 FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ) { - UINT8 bLastTeamID; + UINT16 bLastTeamID; INT32 cnt; SOLDIERTYPE *pTeamSoldier; @@ -4939,14 +4939,14 @@ UINT8 FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKL // Check for bLife > 0 if ( pTeamSoldier->stats.bLife > 0 && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bTeam == gbPlayerNum && ( pTeamSoldier->bAssignment < ON_DUTY || pTeamSoldier->bAssignment == VEHICLE ) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)cnt ); + return( (UINT16)cnt ); } } else { if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)cnt ); + return( (UINT16)cnt ); } } } @@ -4969,14 +4969,14 @@ UINT8 FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKL { if ( pTeamSoldier->stats.bLife > 0 && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bTeam == gbPlayerNum && ( pTeamSoldier->bAssignment < ON_DUTY || pTeamSoldier->bAssignment == VEHICLE ) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)cnt ); + return( (UINT16)cnt ); } } else { if ( OK_CONTROLLABLE_MERC( pTeamSoldier) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment ) { - return( (UINT8)cnt ); + return( (UINT16)cnt ); } } } @@ -4990,8 +4990,8 @@ UINT8 FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKL BOOLEAN CheckForPlayerTeamInMissionExit( ) { INT32 cnt; - SOLDIERTYPE *pSoldier; - UINT8 bGuysIn = 0; + SOLDIERTYPE *pSoldier; + UINT16 bGuysIn = 0; // End the turn of player charactors cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; @@ -5087,10 +5087,10 @@ extern BOOLEAN InternalOkayToAddStructureToWorld( INT32 sBaseGridNo, INT8 bLevel // NB if making changes don't forget to update NewOKDestinationAndDirection BOOLEAN NewOKDestination( SOLDIERTYPE * pCurrSoldier, INT32 sGridNo, BOOLEAN fPeopleToo, INT8 bLevel ) { - UINT8 bPerson; - STRUCTURE * pStructure; - INT16 sDesiredLevel; - BOOLEAN fOKCheckStruct; + UINT16 bPerson; + STRUCTURE *pStructure; + INT16 sDesiredLevel; + BOOLEAN fOKCheckStruct; // sevenfm: allow civilians and NPCs with profile to go off screen if (!GridNoOnVisibleWorldTile(sGridNo) && (pCurrSoldier->bTeam != CIV_TEAM || pCurrSoldier->ubProfile == NO_PROFILE)) @@ -5228,10 +5228,10 @@ BOOLEAN NewOKDestination( SOLDIERTYPE * pCurrSoldier, INT32 sGridNo, BOOLEAN fPe // NB if making changes don't forget to update NewOKDestination INT16 NewOKDestinationAndDirection( SOLDIERTYPE * pCurrSoldier, INT32 sGridNo, INT8 bDirection, BOOLEAN fPeopleToo, INT8 bLevel ) { - UINT8 bPerson; - STRUCTURE * pStructure; - INT16 sDesiredLevel; - BOOLEAN fOKCheckStruct; + UINT16 bPerson; + STRUCTURE *pStructure; + INT16 sDesiredLevel; + BOOLEAN fOKCheckStruct; if (fPeopleToo && ( bPerson = WhoIsThere2( sGridNo, bLevel ) ) != NOBODY ) { @@ -5439,7 +5439,7 @@ BOOLEAN IsLocationSittableExcludingPeople( INT32 iMapIndex, BOOLEAN fOnRoof ) BOOLEAN TeamMemberNear(INT8 bTeam, INT32 sGridNo, INT32 iRange) { - UINT8 bLoop; + UINT16 bLoop; SOLDIERTYPE * pSoldier; for (bLoop=gTacticalStatus.Team[bTeam].bFirstID, pSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[bTeam].bLastID; ++bLoop, pSoldier++) @@ -5832,14 +5832,14 @@ INT32 FindNextToAdjacentGridEx( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 *pub //INT32 cnt; INT32 sClosest = -1, sSpot, sSpot2; INT32 sCloseGridNo = NOWHERE; - UINT32 uiMercFlags; - UINT16 usSoldierIndex; - UINT8 ubDir; - STRUCTURE *pDoor; - UINT8 ubWallOrientation; - BOOLEAN fCheckGivenGridNo = TRUE; - UINT8 ubTestDirection; - UINT8 ubWhoIsThere; + UINT32 uiMercFlags; + UINT16 usSoldierIndex; + UINT8 ubDir; + STRUCTURE *pDoor; + UINT8 ubWallOrientation; + BOOLEAN fCheckGivenGridNo = TRUE; + UINT8 ubTestDirection; + UINT16 ubWhoIsThere; // CHECK IF WE WANT TO FORCE GRIDNO TO PERSON if ( psAdjustedGridNo != NULL ) @@ -6145,7 +6145,7 @@ INT32 FindNextToAdjacentGridEx( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 *pub INT32 FindAdjacentPunchTarget( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pTargetSoldier, INT32 * psAdjustedTargetGridNo, UINT8 * pubDirection ) { INT32 sSpot; - UINT8 ubGuyThere; + UINT16 ubGuyThere; for ( UINT8 cnt = 0; cnt < NUM_WORLD_DIRECTIONS; ++cnt ) { @@ -6883,9 +6883,9 @@ void SayBattleSoundFromAnyBodyInSector( INT32 iBattleSnd ) { // WDS - make number of mercenaries, etc. be configurable // UINT8 ubMercsInSector[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { 0 }; - std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; SOLDIERTYPE *pTeamSoldier; INT32 cnt; @@ -6900,7 +6900,7 @@ void SayBattleSoundFromAnyBodyInSector( INT32 iBattleSnd ) // Add guy if he's a candidate... if ( OK_INSECTOR_MERC( pTeamSoldier ) && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep ) { - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ubNumMercs++; } } @@ -6908,7 +6908,7 @@ void SayBattleSoundFromAnyBodyInSector( INT32 iBattleSnd ) // If we are > 0 if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); MercPtrs[ ubChosenMerc ]->DoMercBattleSound( (UINT8)iBattleSnd ); } @@ -7402,10 +7402,6 @@ void UpdateWoundedFromSectorInfo( INT16 sMapX, INT16 sMapY, INT8 bMapZ ) { SOLDIERTYPE *pSoldier; INT32 cnt = 0; - UINT8 ubNumPrisoners = 0; - UINT8 ubNumPrisonerAdmin = 0; - UINT8 ubNumPrisonerTroop = 0; - UINT8 ubNumPrisonerElite = 0; // Check if the battle is won! // Loop through all mercs and make go @@ -7543,7 +7539,7 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) if (fBattleLost) { // sevenfm: count alive/dead/not covert mercs in sector/retreating from sector - UINT8 ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; + UINT16 ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; BOOLEAN fFoundNotCovertMerc = FALSE; BOOLEAN fFoundAliveMerc = FALSE; BOOLEAN fFoundDeadMerc = FALSE; @@ -7592,7 +7588,7 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) memset(&(gTacticalStatus.bNumFoughtInBattle), 0, MAXTEAMS); // If here, the battle has been lost! - UnSetUIBusy((UINT8)gusSelectedSoldier); + UnSetUIBusy(gusSelectedSoldier); if (gTacticalStatus.uiFlags & INCOMBAT) { @@ -7725,7 +7721,7 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) // battle for us EndAllAITurns( ); - UnSetUIBusy( (UINT8)gusSelectedSoldier ); + UnSetUIBusy( gusSelectedSoldier ); // ATE: // If we ended battle in any team other than the player's @@ -8011,7 +8007,10 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated ) // Flugente: in any case, reset creature attack variables ResetCreatureAttackVariables(); - // sevenfm: switch off radio + // sevenfm: pick up dropped backpacks + HandleTBPickUpBackpacks(TRUE); + + // sevenfm: switch off radio //SwitchOffAllRadio(); // If we are the server, we escape this function at the top if we think the game should still be running @@ -8154,7 +8153,7 @@ void CycleVisibleEnemies( SOLDIERTYPE *pSrcSoldier ) // If we are > ok start, this is the one! if ( cnt > pSrcSoldier->ubLastEnemyCycledID ) { - pSrcSoldier->ubLastEnemyCycledID = (UINT8)cnt; + pSrcSoldier->ubLastEnemyCycledID = (UINT16)cnt; //ATE: Change to Slide To... SlideTo( 0, pSoldier->ubID, 0, SETANDREMOVEPREVIOUSLOCATOR ); @@ -8182,7 +8181,7 @@ void CycleVisibleEnemies( SOLDIERTYPE *pSrcSoldier ) // If we are > ok start, this is the one! if ( cnt > pSrcSoldier->ubLastEnemyCycledID ) { - pSrcSoldier->ubLastEnemyCycledID = (UINT8)cnt; + pSrcSoldier->ubLastEnemyCycledID = (UINT16)cnt; //ATE: Change to Slide To... SlideTo( 0, pSoldier->ubID, 0, SETANDREMOVEPREVIOUSLOCATOR ); @@ -8217,7 +8216,7 @@ void CycleVisibleEnemiesBackward( SOLDIERTYPE *pSrcSoldier ) // If we are > ok start, this is the one! if ( cnt < pSrcSoldier->ubLastEnemyCycledID ) { - pSrcSoldier->ubLastEnemyCycledID = (UINT8)cnt; + pSrcSoldier->ubLastEnemyCycledID = (UINT16)cnt; //ATE: Change to Slide To... SlideTo( 0, pSoldier->ubID, 0, SETANDREMOVEPREVIOUSLOCATOR ); @@ -8246,7 +8245,7 @@ void CycleVisibleEnemiesBackward( SOLDIERTYPE *pSrcSoldier ) // If we are > ok start, this is the one! if ( cnt < pSrcSoldier->ubLastEnemyCycledID ) { - pSrcSoldier->ubLastEnemyCycledID = (UINT8)cnt; + pSrcSoldier->ubLastEnemyCycledID = (UINT16)cnt; //ATE: Change to Slide To... SlideTo( 0, pSoldier->ubID, 0, SETANDREMOVEPREVIOUSLOCATOR ); @@ -8289,11 +8288,11 @@ BOOLEAN PlayerTeamFull( ) return( TRUE ); } -UINT8 NumPCsInSector( ) +UINT16 NumPCsInSector( ) { SOLDIERTYPE *pTeamSoldier; UINT32 cnt = 0; - UINT8 ubNumPlayers = 0; + UINT16 ubNumPlayers = 0; // Check if the battle is won! // Loop through all mercs and make go @@ -8314,11 +8313,11 @@ UINT8 NumPCsInSector( ) } -UINT8 NumEnemyInSector( ) +UINT16 NumEnemyInSector( ) { SOLDIERTYPE *pTeamSoldier; INT32 cnt = 0; - UINT8 ubNumEnemies = 0; + UINT16 ubNumEnemies = 0; // Check if the battle is won! // Loop through all mercs and make go @@ -8338,11 +8337,11 @@ UINT8 NumEnemyInSector( ) } -UINT8 NumZombiesInSector( ) +UINT16 NumZombiesInSector( ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt = 0; - UINT8 ubNumZombies = 0; + INT32 cnt = 0; + UINT16 ubNumZombies = 0; for ( pTeamSoldier = Menptr, cnt = 0; cnt < TOTAL_SOLDIERS; ++pTeamSoldier, ++cnt ) { @@ -8358,11 +8357,11 @@ UINT8 NumZombiesInSector( ) return( ubNumZombies ); } -UINT8 NumEnemyInSectorExceptCreatures() +UINT16 NumEnemyInSectorExceptCreatures() { SOLDIERTYPE *pTeamSoldier; - INT32 cnt = 0; - UINT8 ubNumEnemies = 0; + INT32 cnt = 0; + UINT16 ubNumEnemies = 0; // Check if the battle is won! // Loop through all mercs and make go @@ -8383,11 +8382,11 @@ UINT8 NumEnemyInSectorExceptCreatures() } -UINT8 NumEnemyInSectorNotDeadOrDying( ) +UINT16 NumEnemyInSectorNotDeadOrDying( ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt = 0; - UINT8 ubNumEnemies = 0; + INT32 cnt = 0; + UINT16 ubNumEnemies = 0; // Check if the battle is won! // Loop through all mercs and make go @@ -8418,11 +8417,11 @@ UINT8 NumEnemyInSectorNotDeadOrDying( ) } -UINT8 NumBloodcatsInSectorNotDeadOrDying( ) +UINT16 NumBloodcatsInSectorNotDeadOrDying( ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt = 0; - UINT8 ubNumEnemies = 0; + INT32 cnt = 0; + UINT16 ubNumEnemies = 0; // Check if the battle is won! // Loop through all mercs and make go @@ -8457,11 +8456,11 @@ UINT8 NumBloodcatsInSectorNotDeadOrDying( ) } -UINT8 NumCapableEnemyInSector( ) +UINT16 NumCapableEnemyInSector( ) { SOLDIERTYPE *pTeamSoldier; - INT32 cnt = 0; - UINT8 ubNumEnemies = 0; + INT32 cnt = 0; + UINT16 ubNumEnemies = 0; // Check if the battle is won! // Loop through all mercs and make go @@ -8505,7 +8504,7 @@ BOOLEAN CheckForLosingEndOfBattle( ) { SOLDIERTYPE *pTeamSoldier; INT32 cnt = 0; - INT8 bNumDead = 0, bNumNotOK = 0, bNumInBattle = 0, bNumNotOKRealMercs = 0; + UINT16 bNumDead = 0, bNumNotOK = 0, bNumInBattle = 0, bNumNotOKRealMercs = 0; BOOLEAN fMadeCorpse; BOOLEAN fDoCapture = FALSE; BOOLEAN fOnlyEPCsLeft = TRUE; @@ -8864,9 +8863,9 @@ INT8 CalcSuppressionTolerance( SOLDIERTYPE * pSoldier ) return( bTolerance ); } -extern void IncrementWatchedLoc(UINT8 ubID, INT32 sGridNo, INT8 bLevel); +extern void IncrementWatchedLoc(UINT16 ubID, INT32 sGridNo, INT8 bLevel); -void HandleSuppressionFire( UINT8 ubTargetedMerc, UINT8 ubCausedAttacker ) +void HandleSuppressionFire( UINT16 ubTargetedMerc, UINT16 ubCausedAttacker ) { /////////////////////////////////////////////////////////////////////////////// // @@ -9245,7 +9244,7 @@ void HandleSuppressionFire( UINT8 ubTargetedMerc, UINT8 ubCausedAttacker ) // "Soldier is pinned down!" ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, New113HAMMessage[1], pSoldier->GetName() ); // HEADROCK HAM 3.2: Added a radio locator! - ShowRadioLocator( (UINT8)pSoldier->ubID, SHOW_LOCATOR_NORMAL ); + ShowRadioLocator( pSoldier->ubID, SHOW_LOCATOR_NORMAL ); } } } @@ -9653,7 +9652,7 @@ SOLDIERTYPE *InternalReduceAttackBusyCount( ) SOLDIERTYPE * pTarget; BOOLEAN fEnterCombat = FALSE; UINT32 cnt; - UINT8 ubID; + UINT16 ubID; #if 0 // 0verhaul: None of this is necessary anymore with the new attack busy system @@ -9997,7 +9996,7 @@ SOLDIERTYPE *InternalReduceAttackBusyCount( ) if ( gTacticalStatus.uiFlags & CHECK_SIGHT_AT_END_OF_ATTACK ) { - UINT8 ubLoop; + UINT16 ubLoop; SOLDIERTYPE * pSightSoldier; AllTeamsLookForAll( FALSE ); @@ -10317,7 +10316,7 @@ void RemoveManFromTeam( INT8 bTeam ) void RemoveSoldierFromTacticalSector( SOLDIERTYPE *pSoldier, BOOLEAN fAdjustSelected ) { - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE *pNewSoldier; // reset merc's opplist @@ -10661,9 +10660,9 @@ void HandleCreatureTenseQuote( ) { // WDS - make number of mercenaries, etc. be configurable // UINT8 ubMercsInSector[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { 0 }; - std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; SOLDIERTYPE *pTeamSoldier; INT32 cnt; INT32 uiTime; @@ -10691,7 +10690,7 @@ void HandleCreatureTenseQuote( ) // Add guy if he's a candidate... if ( OK_INSECTOR_MERC( pTeamSoldier ) && !AM_AN_EPC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !(AM_A_ROBOT( pTeamSoldier )) && !pTeamSoldier->flags.fMercAsleep ) { - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ubNumMercs++; } } @@ -10699,7 +10698,7 @@ void HandleCreatureTenseQuote( ) // If we are > 0 if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); DoCreatureTensionQuote ( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ] ); } @@ -10812,7 +10811,7 @@ INT8 CheckStatusNearbyFriendlies( SOLDIERTYPE *pSoldier ) INT8 bLevelDifference = 0; // Run through each friendly. - for ( UINT8 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ ) + for ( UINT16 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ ) { pLeader = MercPtrs[ iCounter ]; // Make sure that character is alive, not too shocked, and conscious, and of higher experience level @@ -10904,7 +10903,7 @@ INT8 CheckStatusNearbyFriendliesSimple(SOLDIERTYPE *pSoldier) } // Run through each friendly. - for (UINT8 ubFriend = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; ubFriend <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; ubFriend ++) + for (UINT16 ubFriend = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; ubFriend <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; ubFriend ++) { pFriend = MercPtrs[ ubFriend ]; @@ -11047,7 +11046,7 @@ void HandleDisplayingOfPlayerLostDialogue( ) } #endif -static UINT8 prisonerdialoguetargetID = NOBODY; +static UINT16 prisonerdialoguetargetID = NOBODY; void TurnCoatAttemptMessageBoxCallBack( UINT8 ubExitValue ) { @@ -11605,7 +11604,7 @@ void TeamRestock(UINT8 bTeam) } // are we allowed to steal access this guy's inventory? -BOOLEAN AllowedToStealFromTeamMate( UINT8 ubID, UINT8 ubTargetID ) +BOOLEAN AllowedToStealFromTeamMate( UINT16 ubID, UINT16 ubTargetID ) { if ( gGameExternalOptions.fAccessOtherMercInventories && ubID != ubTargetID && MercPtrs[ubID]->bTeam == MercPtrs[ubTargetID]->bTeam && !AM_AN_EPC(MercPtrs[ubTargetID]) && !IsVehicle(MercPtrs[ubTargetID]) ) return TRUE; @@ -11764,11 +11763,11 @@ INT8 CalcEffectiveShockLevel( SOLDIERTYPE * pSoldier ) } // Flugente: count number of enemy officers -UINT8 HighestEnemyOfficersInSector( UINT8& aType ) +UINT16 HighestEnemyOfficersInSector( UINT8& aType ) { SOLDIERTYPE* pSoldier; INT32 cnt = 0; - UINT8 num = 0; + UINT16 num = 0; UINT8 type = OFFICER_NONE; for ( cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID, pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; pSoldier++, ++cnt ) @@ -11794,7 +11793,7 @@ UINT16 NumSoldiersWithFlagInSector( UINT8 aTeam, UINT32 aFlag ) { SOLDIERTYPE* pSoldier; INT32 cnt = 0; - UINT8 num = 0; + UINT16 num = 0; for ( cnt = gTacticalStatus.Team[aTeam].bFirstID, pSoldier = MercPtrs[cnt]; cnt <= gTacticalStatus.Team[aTeam].bLastID; pSoldier++, ++cnt ) { diff --git a/Tactical/Overhead.h b/Tactical/Overhead.h index 47d93653..96f92eaa 100644 --- a/Tactical/Overhead.h +++ b/Tactical/Overhead.h @@ -23,12 +23,12 @@ enum // TACTICAL ENGINE STATUS FLAGS typedef struct { - UINT8 bFirstID; - UINT8 bLastID; + UINT16 bFirstID; + UINT16 bLastID; COLORVAL RadarColor; INT8 bSide; - INT8 bMenInSector; - UINT8 ubLastMercToRadio; + INT16 bMenInSector; + UINT16 ubLastMercToRadio; INT8 bTeamActive; INT8 bAwareOfOpposition; INT8 bHuman; @@ -69,8 +69,8 @@ struct TacticalStatusType INT8 fPanicFlags; INT32 sPanicTriggerGridNoUnused; INT16 sHandGrid; - UINT8 ubSpottersCalledForBy; - UINT8 ubTheChosenOne; + UINT16 ubSpottersCalledForBy; + UINT16 ubTheChosenOne; UINT32 uiTimeOfLastInput; UINT32 uiTimeSinceDemoOn; UINT32 uiCountdownToRestart; @@ -89,13 +89,13 @@ struct TacticalStatusType INT8 bRealtimeSpeed; UINT8 ubEnemyIntention; UINT8 ubEnemyIntendedRetreatDirection; - UINT8 ubEnemySightingOnTheirTurnEnemyID; - UINT8 ubEnemySightingOnTheirTurnPlayerID; + UINT16 ubEnemySightingOnTheirTurnEnemyID; + UINT16 ubEnemySightingOnTheirTurnPlayerID; BOOLEAN fEnemySightingOnTheirTurn; BOOLEAN fAutoBandageMode; UINT8 ubAttackBusyCount; INT8 bNumEnemiesFoughtInBattleUnused; - UINT8 ubEngagedInConvFromActionMercID; + UINT16 ubEngagedInConvFromActionMercID; UINT16 usTactialTurnLimitCounter; BOOLEAN fInTopMessage; UINT8 ubTopMessageType; @@ -114,7 +114,7 @@ struct TacticalStatusType BOOLEAN fSaidCreatureFlavourQuote; BOOLEAN fHaveSeenCreature; BOOLEAN fKilledEnemyOnAttack; - UINT8 ubEnemyKilledOnAttack; + UINT16 ubEnemyKilledOnAttack; INT8 bEnemyKilledOnAttackLevel; UINT16 ubEnemyKilledOnAttackLocation; BOOLEAN fItemsSeenOnAttack; @@ -128,7 +128,7 @@ struct TacticalStatusType BOOLEAN fCantGetThrough; INT32 sCantGetThroughGridNo; INT32 sCantGetThroughSoldierGridNo; - UINT8 ubCantGetThroughID; + UINT16 ubCantGetThroughID; BOOLEAN fDidGameJustStart; BOOLEAN fStatChangeCheatOn; UINT8 ubLastRequesterTargetID; @@ -142,10 +142,9 @@ struct TacticalStatusType BOOLEAN fHasAGameBeenStarted; INT8 bConsNumTurnsWeHaventSeenButEnemyDoes; BOOLEAN fSomeoneHit; - UINT8 ubPaddingSmall; UINT32 uiTimeSinceLastOpplistDecay; INT8 bMercArrivingQuoteBeingUsed; - UINT8 ubEnemyKilledOnAttackKiller; + UINT16 ubEnemyKilledOnAttackKiller; BOOLEAN fCountingDownForGuideDescription; INT8 bGuideDescriptionCountDown; UINT8 ubGuideDescriptionToUse; @@ -159,7 +158,7 @@ struct TacticalStatusType UINT16 sCreatureTenseQuoteDelay; UINT32 uiCreatureTenseQuoteLastUpdate; // SANDRO - added these - UINT8 ubLastRequesterSurgeryTargetID; + UINT16 ubLastRequesterSurgeryTargetID; UINT8 ubInterruptPending; // sevenfm: Ctrl+D disable interrupts BOOLEAN ubDisablePlayerInterrupts; @@ -240,11 +239,11 @@ void SlideToLocation( UINT16 usReasonID, INT32 sDestGridNo ); void RebuildAllSoldierShadeTables( ); void HandlePlayerTeamMemberDeath( SOLDIERTYPE *pSoldier ); -UINT8 LastActiveTeamMember( UINT8 ubTeam ); +UINT16 LastActiveTeamMember( UINT16 ubTeam ); BOOLEAN SoldierOnVisibleWorldTile( SOLDIERTYPE *pSoldier ); -UINT8 FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ); -UINT8 FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ); +UINT16 FindNextActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ); +UINT16 FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs ); BOOLEAN CheckForPlayerTeamInMissionExit( ); void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldier ); @@ -261,7 +260,7 @@ INT32 FindNextToAdjacentGridEx( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 *pub void SelectNextAvailSoldier( SOLDIERTYPE *pSoldier ); BOOLEAN TeamMemberNear(INT8 bTeam, INT32 sGridNo, INT32 iRange); -BOOLEAN IsValidTargetMerc( UINT8 ubSoldierID ); +BOOLEAN IsValidTargetMerc( UINT16 ubSoldierID ); // FUNCTIONS FOR MANIPULATING MERC SLOTS - A LIST OF ALL ACTIVE MERCS INT32 GetFreeMercSlot( ); @@ -323,7 +322,7 @@ BOOLEAN HostileBloodcatsPresent( ); BOOLEAN HostileZombiesPresent( ); BOOLEAN HostileCreaturesPresent(); -UINT8 NumPCsInSector( ); +UINT16 NumPCsInSector( ); void SetSoldierNonNeutral( SOLDIERTYPE * pSoldier ); void SetSoldierNeutral( SOLDIERTYPE * pSoldier ); @@ -351,10 +350,10 @@ extern BOOLEAN gogglewarning; // will a sam site under the players control shoot down an airraid? BOOLEAN WillAirRaidBeStopped( INT16 sSectorX, INT16 sSectorY ); // HEADROCK HAM 3.5: Externalized for First Arrival enemy check -extern UINT8 NumEnemyInSector(); +extern UINT16 NumEnemyInSector(); // Flugente -extern UINT8 NumZombiesInSector(); +extern UINT16 NumZombiesInSector(); // Flugente: offer the enemy the chance to surrender void HandleSurrenderOffer( SOLDIERTYPE* pSoldier ); @@ -371,7 +370,7 @@ void TeamDropAll(UINT8 bTeam, BOOLEAN fForce = FALSE); void TeamRestock(UINT8 bTeam); // are we allowed to steal access this guy's inventory? -BOOLEAN AllowedToStealFromTeamMate( UINT8 aAccessorID, UINT8 aTargetID ); +BOOLEAN AllowedToStealFromTeamMate( UINT16 ubID, UINT16 ubTargetID ); // Flugente: is an soldier profile already used? BOOLEAN IsProfileInUse(UINT8 usTeam, INT8 aType, UINT16 aNr); @@ -402,7 +401,7 @@ enum { }; // Flugente: return number of enemy officers and highest rank found -UINT8 HighestEnemyOfficersInSector(UINT8& aType); +UINT16 HighestEnemyOfficersInSector(UINT8& aType); // count all soldiers in the current sector that have a specific flag set UINT16 NumSoldiersWithFlagInSector(UINT8 aTeam, UINT32 aFlag); diff --git a/Tactical/PATHAI.cpp b/Tactical/PATHAI.cpp index 829fee54..1409f396 100644 --- a/Tactical/PATHAI.cpp +++ b/Tactical/PATHAI.cpp @@ -2517,7 +2517,7 @@ b=GetJA2Clock();//return s->sGridNo+6; INT8 bLoopState = LOOPING_CLOCKWISE; //BOOLEAN fLoopForwards = FALSE; BOOLEAN fCheckedBehind = FALSE; - UINT8 ubMerc; + UINT16 ubMerc; INT32 iDestX,iDestY, iLocX, iLocY, dx, dy; INT32 newLoc,curLoc; //INT32 curY; diff --git a/Tactical/Real Time Input.cpp b/Tactical/Real Time Input.cpp index c4747611..d0684864 100644 --- a/Tactical/Real Time Input.cpp +++ b/Tactical/Real Time Input.cpp @@ -1545,7 +1545,7 @@ void GetRTMousePositionInput( UINT32 *puiNewEvent ) { if( gfUIFullTargetFound ) { - if ( IsValidTalkableNPC( (UINT8)gusUIFullTargetID, FALSE, FALSE, FALSE ) && !_KeyDown( SHIFT ) && !AM_AN_EPC( pSoldier ) && MercPtrs[ gusUIFullTargetID ]->bTeam != ENEMY_TEAM && !ValidQuickExchangePosition( ) ) + if ( IsValidTalkableNPC( gusUIFullTargetID, FALSE, FALSE, FALSE ) && !_KeyDown( SHIFT ) && !AM_AN_EPC( pSoldier ) && MercPtrs[ gusUIFullTargetID ]->bTeam != ENEMY_TEAM && !ValidQuickExchangePosition( ) ) { uiMoveTargetSoldierId = gusUIFullTargetID; *puiNewEvent = T_CHANGE_TO_TALKING; @@ -1588,7 +1588,7 @@ void GetRTMousePositionInput( UINT32 *puiNewEvent ) if ( gfUIFullTargetFound ) //if ( gfUIFullTargetFound ) { - if ( IsValidTargetMerc( (UINT8)gusUIFullTargetID ) ) + if ( IsValidTargetMerc( gusUIFullTargetID ) ) { guiUITargetSoldierId = gusUIFullTargetID; @@ -2077,7 +2077,7 @@ void HandleAltMouseRTX2Button(UINT32 *puiNewEvent) // sevenfm: original mouse commands functionality void HandleMouseRTWheel( void ) { - UINT8 bID; + UINT16 bID; // nothing in hand and either not in SM panel, or the matching button is enabled if we are in SM panel if ( !( gTacticalStatus.uiFlags & ENGAGED_IN_CONV ) && ( ( gsCurInterfacePanel != SM_PANEL ) || ( ButtonList[ iSMPanelButtons[ NEXTMERC_BUTTON ] ]->uiFlags & BUTTON_ENABLED ) ) ) @@ -2205,7 +2205,7 @@ void HandleMouseRTX2Button( UINT32 *puiNewEvent ) // For each guy on squad... { SOLDIERTYPE *pTeamSoldier; - INT8 bLoop; + INT16 bLoop; BOOLEAN fStealthOn = FALSE; // Check if at least one guy is on stealth.... diff --git a/Tactical/Rotting Corpses.cpp b/Tactical/Rotting Corpses.cpp index 26f476ec..bc3348dd 100644 --- a/Tactical/Rotting Corpses.cpp +++ b/Tactical/Rotting Corpses.cpp @@ -1165,7 +1165,7 @@ void AddCrowToCorpse( ROTTING_CORPSE *pCorpse ) { SOLDIERCREATE_STRUCT MercCreateStruct; INT8 ubBodyType = CROW; - UINT8 iNewIndex; + UINT16 iNewIndex; INT32 sGridNo; UINT8 ubDirection; SOLDIERTYPE *pSoldier; @@ -2970,13 +2970,13 @@ void CreateZombiefromCorpse( ROTTING_CORPSE * pCorpse, UINT16 usAnimState ) MercCreateStruct.fVisible = TRUE; - INT8 iNewIndex; - if ( TacticalCreateSoldier( &MercCreateStruct, (UINT8 *)&iNewIndex ) ) + UINT16 iNewIndex; + if ( TacticalCreateSoldier( &MercCreateStruct, &iNewIndex ) ) { /* certain values have to be set afterwards - the alternative would be to edit each and every function that gets called from TacticalCreateSoldier() subsequently and * make an exception for zombies every time... */ - SOLDIERTYPE* pNewSoldier = MercPtrs[ (UINT8)iNewIndex ]; + SOLDIERTYPE* pNewSoldier = MercPtrs[ iNewIndex ]; pNewSoldier->bActionPoints = 60; pNewSoldier->bInitialActionPoints = 60; diff --git a/Tactical/ShopKeeper Interface.cpp b/Tactical/ShopKeeper Interface.cpp index cc7bc8bb..58c12d0e 100644 --- a/Tactical/ShopKeeper Interface.cpp +++ b/Tactical/ShopKeeper Interface.cpp @@ -299,7 +299,7 @@ INT32 giSKIMessageBox=-1; INT8 gbSelectedArmsDealerID = -1; //Contains the enum value for the currently selected arms dealer // Flugente: while we're trading, store the ID of non-NPC dealers -UINT8 gusIDOfCivTrader = NOBODY; +UINT16 gusIDOfCivTrader = NOBODY; //the quote that is in progress, in certain circumstances, we don't want queuing of related but different quotes INT32 giShopKeepDialogueEventinProgress = - 1; @@ -360,7 +360,7 @@ BOOLEAN gfDoneBusinessThisSession = FALSE; // this is used within SKI exclusively, to handle small faces UINT8 gubArrayOfEmployedMercs[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; UINT32 guiSmallSoldiersFace[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ]; -UINT8 gubNumberMercsInArray; +UINT16 gubNumberMercsInArray; //The subutitled text for what the merc is saying CHAR16 gsShopKeeperTalkingText[ SKI_SUBTITLE_TEXT_SIZE ]; @@ -392,7 +392,7 @@ extern OBJECTTYPE *gpItemDescObject; extern OBJECTTYPE *gpItemDescPrevObject; extern OBJECTTYPE *gpItemDescPrevObject; extern void HandleShortCutExitState( void ); -extern UINT8 gubSelectSMPanelToMerc; +extern UINT16 gubSelectSMPanelToMerc; extern INT32 giItemDescAmmoButton; extern BOOLEAN BltVSurfaceUsingDD( HVSURFACE hDestVSurface, HVSURFACE hSrcVSurface, UINT32 fBltFlags, INT32 iDestX, INT32 iDestY, RECT *SrcRect ); @@ -875,8 +875,8 @@ BOOLEAN EnterShopKeeperInterface() //Reinitialize the team panel to be the SM panel SetCurrentInterfacePanel( SM_PANEL ); - SetCurrentTacticalPanelCurrentMerc( (UINT8)gusSelectedSoldier ); - SetSMPanelCurrentMerc( (UINT8)gusSelectedSoldier ); + SetCurrentTacticalPanelCurrentMerc( gusSelectedSoldier ); + SetSMPanelCurrentMerc( gusSelectedSoldier ); // load the Main trade screen background image VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE; @@ -1132,7 +1132,7 @@ BOOLEAN ExitShopKeeperInterface() UnloadButtonImage( guiSKI_InvPageDownButtonImage ); //loop through the area and delete small faces - for (UINT8 ubCnt=0; ubCnt gTemplateVector; extern void ReadEquipmentTable( SOLDIERTYPE* pSoldier, std::string name ); -extern INT8 bSelectedInfoChar; +extern INT16 bSelectedInfoChar; // sevenfm: need this for correct calculation of traits menu position extern INT16 gsInterfaceLevel; @@ -395,7 +395,7 @@ SkillSelection::Functions( UINT32 aVal ) if ( pSoldier == NULL ) return; - UINT8 ubID = WhoIsThere2(sTraitsMenuTargetGridNo, 0 ); + UINT16 ubID = WhoIsThere2(sTraitsMenuTargetGridNo, 0 ); BOOLEAN result = pSoldier->UseSkill(aVal, sTraitsMenuTargetGridNo, ubID); diff --git a/Tactical/Soldier Add.cpp b/Tactical/Soldier Add.cpp index ebc29b83..7d13ceef 100644 --- a/Tactical/Soldier Add.cpp +++ b/Tactical/Soldier Add.cpp @@ -1136,8 +1136,7 @@ INT32 FindRandomGridNoBetweenCircles( INT32 sCenterGridNo, UINT8 uInnerRadius, U return(sGridNo); } - -BOOLEAN InternalAddSoldierToSector( UINT8 ubID, BOOLEAN fCalculateDirection, BOOLEAN fUseAnimation, UINT16 usAnimState, UINT16 usAnimCode ) +BOOLEAN InternalAddSoldierToSector(UINT16 ubID, BOOLEAN fCalculateDirection, BOOLEAN fUseAnimation, UINT16 usAnimState, UINT16 usAnimCode ) { UINT8 ubDirection = 0; UINT8 ubCalculatedDirection = 0; @@ -1334,20 +1333,19 @@ BOOLEAN InternalAddSoldierToSector( UINT8 ubID, BOOLEAN fCalculateDirection, BOO return( FALSE ); } - -BOOLEAN AddSoldierToSector( UINT8 ubID ) +BOOLEAN AddSoldierToSector( UINT16 ubID ) { DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("AddSoldierToSector")); return( InternalAddSoldierToSector( ubID, TRUE, FALSE, 0 , 0) ); } -BOOLEAN AddSoldierToSectorNoCalculateDirection( UINT8 ubID ) +BOOLEAN AddSoldierToSectorNoCalculateDirection( UINT16 ubID ) { DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("AddSoldierToSectorNoCalculateDirection")); return( InternalAddSoldierToSector( ubID, FALSE, FALSE, 0, 0 ) ); } -BOOLEAN AddSoldierToSectorNoCalculateDirectionUseAnimation( UINT8 ubID, UINT16 usAnimState, UINT16 usAnimCode ) +BOOLEAN AddSoldierToSectorNoCalculateDirectionUseAnimation( UINT16 ubID, UINT16 usAnimState, UINT16 usAnimCode ) { DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("AddSoldierToSectorNoCalculateDirectionUseAnimation")); return( InternalAddSoldierToSector( ubID, FALSE, TRUE, usAnimState, usAnimCode ) ); @@ -1777,8 +1775,8 @@ void AddSoldierToSectorGridNo( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDir BOOLEAN IsMercOnTeam(UINT8 ubMercID, BOOLEAN aAlreadyInCountry, BOOLEAN aAlive) { UINT16 cnt; - UINT8 ubLastTeamID; - SOLDIERTYPE *pTeamSoldier; + UINT16 ubLastTeamID; + SOLDIERTYPE *pTeamSoldier; cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; ubLastTeamID = gTacticalStatus.Team[ OUR_TEAM ].bLastID; diff --git a/Tactical/Soldier Add.h b/Tactical/Soldier Add.h index bb96f44e..4d4ba01b 100644 --- a/Tactical/Soldier Add.h +++ b/Tactical/Soldier Add.h @@ -30,11 +30,11 @@ INT32 FindRandomGridNoBetweenCircles( INT32 sCenterGridNo, UINT8 uInnerRadius, U // Adds a soldier ( already created in mercptrs[] array )! // Finds a good placement based on data in the loaded sector and if they are enemy's or not, etc... -BOOLEAN AddSoldierToSector( UINT8 ubID ); +BOOLEAN AddSoldierToSector( UINT16 ubID ); -BOOLEAN AddSoldierToSectorNoCalculateDirection( UINT8 ubID ); +BOOLEAN AddSoldierToSectorNoCalculateDirection( UINT16 ubID ); -BOOLEAN AddSoldierToSectorNoCalculateDirectionUseAnimation( UINT8 ubID, UINT16 usAnimState, UINT16 usAnimCode ); +BOOLEAN AddSoldierToSectorNoCalculateDirectionUseAnimation( UINT16 ubID, UINT16 usAnimState, UINT16 usAnimCode ); // IsMercOnTeam() checks to see if the passed in Merc Profile ID is currently on the player's team BOOLEAN IsMercOnTeam( UINT8 ubMercID, BOOLEAN aAlreadyInCountry, BOOLEAN aAlive ); diff --git a/Tactical/Soldier Ani.cpp b/Tactical/Soldier Ani.cpp index 431f08b9..f5774ae6 100644 --- a/Tactical/Soldier Ani.cpp +++ b/Tactical/Soldier Ani.cpp @@ -107,10 +107,10 @@ BOOLEAN HandleUnjamAnimation( SOLDIERTYPE *pSoldier ); extern void HandleSystemNewAISituation( SOLDIERTYPE *pSoldier, BOOLEAN fResetABC ); extern void PlaySoldierFootstepSound( SOLDIERTYPE *pSoldier ); -extern UINT8 NumCapableEnemyInSector( ); +extern UINT16 NumCapableEnemyInSector( ); extern BOOLEAN gfKillingGuysForLosingBattle; -extern UINT8 gubInterruptProvoker; +extern UINT16 gubInterruptProvoker; extern UINT16 PickSoldierReadyAnimation( SOLDIERTYPE *pSoldier, BOOLEAN fEndReady, BOOLEAN fHipStance ); @@ -1167,7 +1167,7 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier ) { if (pSoldier->bTeam == 0 || (pSoldier->bTeam == 1 && is_server)) { - send_grenade( pSoldier->pTempObject , pSoldier->pThrowParams->dLifeSpan, pSoldier->pThrowParams->dX, pSoldier->pThrowParams->dY, pSoldier->pThrowParams->dZ, pSoldier->pThrowParams->dForceX, pSoldier->pThrowParams->dForceY, pSoldier->pThrowParams->dForceZ, pSoldier->sTargetGridNo, pSoldier->ubID, pSoldier->pThrowParams->ubActionCode, pSoldier->pThrowParams->uiActionData, iRealObjectID , true); + send_grenade( pSoldier->pTempObject, pSoldier->pThrowParams->dLifeSpan, pSoldier->pThrowParams->dX, pSoldier->pThrowParams->dY, pSoldier->pThrowParams->dZ, pSoldier->pThrowParams->dForceX, pSoldier->pThrowParams->dForceY, pSoldier->pThrowParams->dForceZ, pSoldier->sTargetGridNo, pSoldier->ubID, pSoldier->pThrowParams->ubActionCode, pSoldier->pThrowParams->uiActionData, iRealObjectID, true); } } @@ -1789,7 +1789,7 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier ) pSoldier->uiTimeOfLastRandomAction = 0; // Don't play these generally if this is the guy selected by player, as this one is "awaiting orders" - if (pSoldier->ubID != (UINT8)gusSelectedSoldier || Random( 10 ) == 0 ) + if (pSoldier->ubID != gusSelectedSoldier || Random( 10 ) == 0 ) { // Don't do any in water! // Also don't play if we are in the middle of something @@ -3130,7 +3130,7 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier ) // Reload robot.... { - UINT8 ubPerson; + UINT16 ubPerson; SOLDIERTYPE *pRobot; // Get pointer... @@ -3307,7 +3307,7 @@ BOOLEAN AdjustToNextAnimationFrame( SOLDIERTYPE *pSoldier ) // REFUELING A VEHICLE // THE GAS_CAN IS IN THE MERCS MAIN HAND AT THIS TIME { - UINT8 ubPerson; + UINT16 ubPerson; SOLDIERTYPE *pVehicle; // Get pointer to vehicle... @@ -3559,13 +3559,13 @@ BOOLEAN ShouldMercSayHappyWithGunQuote( SOLDIERTYPE *pSoldier ) void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLevel ) { // WDS - make number of mercenaries, etc. be configurable - std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); + std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); // UINT8 ubMercsInSector[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { 0 }; std::vector bBuddyIndex (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, -1); // INT8 bBuddyIndex[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { -1 }; INT8 bTempBuddyIndex; - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; SOLDIERTYPE *pTeamSoldier; INT32 cnt; UINT16 usQuoteNum; @@ -3651,7 +3651,7 @@ void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, } // OK, a good candidate... - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; bBuddyIndex[ ubNumMercs ] = bTempBuddyIndex; ++ubNumMercs; } @@ -3661,7 +3661,7 @@ void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, // If we are > 0 if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); switch( bBuddyIndex[ ubChosenMerc ] ) { @@ -3751,10 +3751,9 @@ void HandleKilledQuote( SOLDIERTYPE *pKilledSoldier, SOLDIERTYPE *pKillerSoldier SOLDIERTYPE *pTeamSoldier; INT32 cnt; // WDS - make number of mercenaries, etc. be configurable - std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); -// UINT8 ubMercsInSector[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { 0 }; - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; BOOLEAN fDoSomeoneElse = FALSE; gfLastMercTalkedAboutKillingID = pKilledSoldier->ubID; @@ -3822,7 +3821,7 @@ void HandleKilledQuote( SOLDIERTYPE *pKilledSoldier, SOLDIERTYPE *pKillerSoldier // Can we see location? if ( SoldierTo3DLocationLineOfSightTest( pTeamSoldier, sGridNo, bLevel, 3, TRUE, CALC_FROM_ALL_DIRS ) ) { - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ubNumMercs++; } } @@ -3832,7 +3831,7 @@ void HandleKilledQuote( SOLDIERTYPE *pKilledSoldier, SOLDIERTYPE *pKillerSoldier // Did we find anybody? if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); // We have a random chance of not saying our we killed a guy quote if ( Random( 100 ) < 50 ) @@ -4000,8 +3999,8 @@ BOOLEAN HandleSoldierDeath( SOLDIERTYPE *pSoldier , BOOLEAN *pfMadeCorpse ) { ////////////////////////////////////////////////////////////// // SANDRO - some changes here - UINT8 ubAttacker = pSoldier->ubAttackerID; - UINT8 ubAssister = pSoldier->ubPreviousAttackerID; + UINT16 ubAttacker = pSoldier->ubAttackerID; + UINT16 ubAssister = pSoldier->ubPreviousAttackerID; // If attacker is nobody, and we died, then set the last attacker(if exists) as our killer if ( ubAttacker == NOBODY ) { diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index e3fe1d3a..9a6ff96d 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -157,7 +157,7 @@ extern BOOLEAN gfShiftBombPlant; #include "connect.h" extern void TeleportSelectedSoldier( void ); -extern BOOLEAN AddSoldierToSectorNoCalculateDirectionUseAnimation( UINT8 ubID, UINT16 usAnimState, UINT16 usAnimCode ); +extern BOOLEAN AddSoldierToSectorNoCalculateDirectionUseAnimation( UINT16 ubID, UINT16 usAnimState, UINT16 usAnimCode ); // Flugente: external sector data extern SECTOR_EXT_DATA SectorExternalData[256][4]; @@ -695,7 +695,7 @@ SOLDIERTYPE& SOLDIERTYPE::operator=(const OLDSOLDIERTYPE_101& src) this->sLastTwoLocations[1] = src.sLastTwoLocations[1]; this->ubID = src.ubID; - this->bReserved1 = src.bReserved1; + //this->bReserved1 = src.bReserved1; this->ubBodyType = src.ubBodyType; this->bActionPoints = src.bActionPoints; @@ -1730,7 +1730,7 @@ void AdjustForFastTurnAnimation( SOLDIERTYPE *pSoldier ); UINT16 SelectFireAnimation( SOLDIERTYPE *pSoldier, UINT8 ubHeight ); void SelectFallAnimation( SOLDIERTYPE *pSoldier ); BOOLEAN FullStructAlone( INT32 sGridNo, UINT8 ubRadius ); -void SoldierGotHitGunFire( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ); +void SoldierGotHitGunFire( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT16 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ); void SoldierGotHitBlade( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ); void SoldierGotHitPunch( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ); void SoldierGotHitExplosion( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ); @@ -5870,9 +5870,9 @@ UINT16 PickSoldierReadyAnimation( SOLDIERTYPE *pSoldier, BOOLEAN fEndReady, BOOL // extern SOLDIERTYPE * FreeUpAttackerGivenTarget( UINT8 ubID, UINT8 ubTargetID ); // extern SOLDIERTYPE * ReduceAttackBusyGivenTarget( UINT8 ubID, UINT8 ubTargetID ); - +#pragma optimize("", off) // ATE: THIS FUNCTION IS USED FOR ALL SOLDIER TAKE DAMAGE FUNCTIONS! -void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT16 sBreathLoss, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation, INT16 sSubsequent, INT32 sLocationGrid ) +void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT16 sBreathLoss, UINT16 bDirection, UINT16 sRange, UINT16 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation, INT16 sSubsequent, INT32 sLocationGrid ) { UINT8 ubCombinedLoss, ubVolume, ubReason; // SOLDIERTYPE * pNewSoldier; @@ -6603,12 +6603,18 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 if ( Item[usWeaponIndex].usItemClass & IC_GUN ) { PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_GUNFIRE, ubAttackerID ); - PossiblyStartEnemyTaunt( MercPtrs[ubAttackerID], TAUNT_HIT_GUNFIRE, this->ubID ); + if (ubAttackerID != NOBODY) + { + PossiblyStartEnemyTaunt(MercPtrs[ubAttackerID], TAUNT_HIT_GUNFIRE, this->ubID); + } } else { PossiblyStartEnemyTaunt( this, TAUNT_GOT_HIT_THROWING_KNIFE, ubAttackerID ); - PossiblyStartEnemyTaunt( MercPtrs[ubAttackerID], TAUNT_HIT_THROWING_KNIFE, this->ubID ); + if (ubAttackerID != NOBODY) + { + PossiblyStartEnemyTaunt(MercPtrs[ubAttackerID], TAUNT_HIT_THROWING_KNIFE, this->ubID); + } } } if ( Item[usWeaponIndex].usItemClass & IC_BLADE ) @@ -6637,7 +6643,7 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1 // anv: taunts are called from UseHandToHand() } } - +#pragma optimize("", on) UINT8 CalcScreamVolume( SOLDIERTYPE * pSoldier, UINT8 ubCombinedLoss ) { // NB explosions are so loud they should drown out screams @@ -6719,7 +6725,7 @@ void DoGenericHit( SOLDIERTYPE *pSoldier, UINT8 ubSpecial, INT16 bDirection ) } -void SoldierGotHitGunFire( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ) +void SoldierGotHitGunFire( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sDamage, UINT16 bDirection, UINT16 sRange, UINT16 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation ) { INT32 usNewGridNo; BOOLEAN fBlownAway = FALSE; @@ -9740,7 +9746,7 @@ void SOLDIERTYPE::BeginSoldierClimbUpRoof(void) } INT8 bNewDirection; - UINT8 ubWhoIsThere; + UINT16 ubWhoIsThere; if (FindHeigherLevel(this, this->sGridNo, this->ubDirection, &bNewDirection) && (this->pathing.bLevel == 0)) { @@ -9914,7 +9920,7 @@ void SOLDIERTYPE::BeginSoldierClimbWindow( void ) void SOLDIERTYPE::BeginSoldierClimbWall( void ) { INT8 bNewDirection; - UINT8 ubWhoIsThere; + UINT16 ubWhoIsThere; if ( FindWallJumpDirection( this, this->sGridNo, this->ubDirection, &bNewDirection ) && (this->pathing.bLevel == 0) ) { @@ -9951,7 +9957,7 @@ void SOLDIERTYPE::BeginSoldierClimbWall( void ) void SOLDIERTYPE::BeginSoldierClimbWallUp( void ) { INT8 bNewDirection; - UINT8 ubWhoIsThere; + UINT16 ubWhoIsThere; if ( FindLowerLevelWall( this, this->sGridNo, this->ubDirection, &bNewDirection ) && (this->pathing.bLevel > 0) ) { @@ -10249,7 +10255,7 @@ void HandleTakeDamageDeath( SOLDIERTYPE *pSoldier, UINT8 bOldLife, UINT8 ubReaso } -UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBreathLoss, UINT8 ubReason, UINT8 ubAttacker, INT32 sSourceGrid, INT16 sSubsequent, BOOLEAN fShowDamage ) +UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBreathLoss, UINT8 ubReason, UINT16 ubAttacker, INT32 sSourceGrid, INT16 sSubsequent, BOOLEAN fShowDamage ) { #ifdef JA2BETAVERSION if ( is_networked ) { @@ -11573,7 +11579,7 @@ BOOLEAN SOLDIERTYPE::CheckSoldierHitRoof( void ) void SOLDIERTYPE::BeginSoldierClimbDownRoof(void) { INT8 bNewDirection; - UINT8 ubWhoIsThere; + UINT16 ubWhoIsThere; if (FindLowerLevel(this, this->sGridNo, this->ubDirection, &bNewDirection) && (this->pathing.bLevel > 0)) { @@ -12835,7 +12841,7 @@ void SOLDIERTYPE::EVENT_SoldierBeginBladeAttack( INT32 sGridNo, UINT8 ubDirectio if ( this->flags.uiStatusFlags & SOLDIER_MONSTER ) { // Is there an unconscious guy at gridno...... - UINT8 ubTargetID = WhoIsThere2( sGridNo, this->bTargetLevel ); + UINT16 ubTargetID = WhoIsThere2( sGridNo, this->bTargetLevel ); if ( ubTargetID != NOBODY && ((MercPtrs[ubTargetID]->stats.bLife < OKLIFE && MercPtrs[ubTargetID]->stats.bLife > 0) || (MercPtrs[ubTargetID]->bBreath < OKBREATH && MercPtrs[ubTargetID]->bCollapsed)) ) { @@ -13573,7 +13579,7 @@ void SOLDIERTYPE::EVENT_SoldierBeginFirstAid( INT32 sGridNo, UINT8 ubDirection ) this->sTargetGridNo = sGridNo; // SET PARTNER ID - this->ubServicePartner = (UINT8)usSoldierIndex; + this->ubServicePartner = usSoldierIndex; // SET PARTNER'S COUNT REFERENCE pTSoldier->ubServiceCount++; @@ -15104,7 +15110,7 @@ BOOLEAN SOLDIERTYPE::IsWeaponMounted( void ) if ( !IsLocationSittable( nextGridNoinSight, 0 ) ) { // resting our gun on people is allowed sometimes - UINT usPersonID = WhoIsThere2( nextGridNoinSight, this->pathing.bLevel ); + UINT16 usPersonID = WhoIsThere2( nextGridNoinSight, this->pathing.bLevel ); if ( usPersonID == NOBODY ) applybipod = TRUE; else @@ -15178,7 +15184,7 @@ BOOLEAN SOLDIERTYPE::IsWeaponMounted( void ) if ( !IsLocationSittable( nextGridNoinSight, 0 ) ) { // resting our gun on people is allowed sometimes - UINT usPersonID = WhoIsThere2( nextGridNoinSight, this->pathing.bLevel ); + UINT16 usPersonID = WhoIsThere2( nextGridNoinSight, this->pathing.bLevel ); if ( usPersonID == NOBODY ) applybipod = TRUE; else @@ -15480,7 +15486,7 @@ void SOLDIERTYPE::InventoryExplosion( void ) } // Flugente: do we currently provide ammo (pAmmoSlot) for someone else's (pubId) gun (pGunSlot)? -BOOLEAN SOLDIERTYPE::IsFeedingExternal( UINT8* pubId1, UINT16* pGunSlot1, UINT16* pAmmoSlot1, UINT8* pubId2, UINT16* pGunSlot2, UINT16* pAmmoSlot2 ) +BOOLEAN SOLDIERTYPE::IsFeedingExternal( UINT16 * pubId1, UINT16* pGunSlot1, UINT16* pAmmoSlot1, UINT16 * pubId2, UINT16* pGunSlot2, UINT16* pAmmoSlot2 ) { // make sure we have to check this... if ( gGameExternalOptions.ubExternalFeeding == 0 ) @@ -16166,7 +16172,7 @@ BOOLEAN SOLDIERTYPE::EquipmentTooGood( BOOLEAN fCloselook ) // are we in covert mode? we need to have the correct flag set, and not wear anything suspicious, or behave in a suspicious way -BOOLEAN SOLDIERTYPE::SeemsLegit( UINT8 ubObserverID ) +BOOLEAN SOLDIERTYPE::SeemsLegit( UINT16 ubObserverID ) { SOLDIERTYPE* pSoldier = MercPtrs[ubObserverID]; @@ -16454,7 +16460,7 @@ BOOLEAN SOLDIERTYPE::SeemsLegit( UINT8 ubObserverID ) } // do we recognize someone else as a combatant? -BOOLEAN SOLDIERTYPE::RecognizeAsCombatant( UINT8 ubTargetID ) +BOOLEAN SOLDIERTYPE::RecognizeAsCombatant( UINT16 ubTargetID ) { // this will only work with the new trait system if ( !gGameOptions.fNewTraitSystem ) @@ -16550,7 +16556,7 @@ void SOLDIERTYPE::LooseDisguise( void ) // rehandle sight for everybody SOLDIERTYPE* pSoldier; - UINT8 iLoop = gTacticalStatus.Team[OUR_TEAM].bFirstID; + UINT16 iLoop = gTacticalStatus.Team[OUR_TEAM].bFirstID; for ( pSoldier = MercPtrs[iLoop]; iLoop <= gTacticalStatus.Team[CIV_TEAM].bLastID; ++iLoop, ++pSoldier ) { if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > 0 ) @@ -16793,7 +16799,7 @@ BOOLEAN SOLDIERTYPE::FreePrisoner( ) // we can only free people we are facing INT32 nextGridNoinSight = NewGridNo( this->sGridNo, DirectionInc( this->ubDirection ) ); - UINT8 target = WhoIsThere2( nextGridNoinSight, this->pathing.bLevel ); + UINT16 target = WhoIsThere2( nextGridNoinSight, this->pathing.bLevel ); // is there somebody? if ( target != NOBODY ) @@ -19050,7 +19056,7 @@ BOOLEAN SOLDIERTYPE::OrderArtilleryStrike( UINT32 usSectorNr, INT32 sTargetGridN // as of 2013-09-25, I say it is no longer necessary to fire a signal shell first. The player can fire a signal shell (by mortar or hand) manually to mark one or more targets if he wants // if he does not do so, active vox operators will be targetted. Who knows, the vox operator might be doing a heroic last stand for all we know... - UINT8 radiooperatorID = 0; + UINT16 radiooperatorID = 0; //BOOLEAN signalshellfired = FALSE; UINT8 mortaritemcnt = 0; UINT16 mortararray[5]; @@ -19585,7 +19591,7 @@ BOOLEAN SOLDIERTYPE::AIDoctorFriend( ) // we can only free people we are facing INT32 nextGridNoinSight = NewGridNo( this->sGridNo, DirectionInc( this->ubDirection ) ); - UINT8 target = WhoIsThere2( nextGridNoinSight, this->pathing.bLevel ); + UINT16 target = WhoIsThere2( nextGridNoinSight, this->pathing.bLevel ); // is there somebody? if ( target != NOBODY ) @@ -22573,7 +22579,7 @@ void SOLDIERTYPE::EVENT_SoldierBeginCutFence( INT32 sGridNo, UINT8 ubDirection ) void SOLDIERTYPE::EVENT_SoldierBeginRepair( INT32 sGridNo, UINT8 ubDirection ) { INT8 bRepairItem; - UINT8 ubID; + UINT16 ubID; // Make sure we have a structure here.... bRepairItem = IsRepairableStructAtGridNo( sGridNo, &ubID ); @@ -22618,7 +22624,7 @@ void SOLDIERTYPE::EVENT_SoldierBeginRepair( INT32 sGridNo, UINT8 ubDirection ) void SOLDIERTYPE::EVENT_SoldierBeginRefuel( INT32 sGridNo, UINT8 ubDirection ) { INT8 bRefuelItem; - UINT8 ubID; + UINT16 ubID; // Make sure we have a structure here.... bRefuelItem = IsRefuelableStructAtGridNo( sGridNo, &ubID ); @@ -22792,7 +22798,7 @@ void SOLDIERTYPE::EVENT_SoldierHandcuffPerson( INT32 sGridNo, UINT8 ubDirection if ( !gGameExternalOptions.fAllowPrisonerSystem ) return; - UINT8 ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); + UINT16 ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); if ( ubPerson != NOBODY && MercPtrs[ubPerson]->CanBeCaptured( ) ) { @@ -22935,7 +22941,7 @@ void SOLDIERTYPE::EVENT_SoldierHandcuffPerson( INT32 sGridNo, UINT8 ubDirection void SOLDIERTYPE::EVENT_SoldierApplyItemToPerson( INT32 sGridNo, UINT8 ubDirection ) { - UINT8 ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); + UINT16 ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); if ( ubPerson != NOBODY ) { @@ -23071,7 +23077,7 @@ void SOLDIERTYPE::EVENT_SoldierApplyItemToPerson( INT32 sGridNo, UINT8 ubDirecti void SOLDIERTYPE::EVENT_SoldierTakeBloodFromPerson( INT32 sGridNo, UINT8 ubDirection ) { - UINT8 ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); + UINT16 ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); if ( ubPerson != NOBODY && ubPerson != this->ubID ) { @@ -23142,7 +23148,7 @@ void SOLDIERTYPE::EVENT_SoldierTakeBloodFromPerson( INT32 sGridNo, UINT8 ubDirec void SOLDIERTYPE::EVENT_SoldierApplySplintToPerson( INT32 sGridNo, UINT8 ubDirection ) { - UINT8 ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); + UINT16 ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); if ( ubPerson != NOBODY && ubPerson != this->ubID ) { @@ -23211,7 +23217,7 @@ void SOLDIERTYPE::EVENT_SoldierInteractiveAction( INT32 sGridNo, UINT16 usAction void SOLDIERTYPE::EVENT_SoldierBeginReloadRobot( INT32 sGridNo, UINT8 ubDirection, UINT8 ubMercSlot ) { - UINT8 ubPerson; + UINT16 ubPerson; // Make sure we have a robot here.... ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel ); @@ -23442,7 +23448,7 @@ void AbandonBoxingDueToSurrenderCallback(UINT8 ubExitValue) } SOLDIERTYPE *pTMilitiaSoldier;//global pointer -BOOLEAN SOLDIERTYPE::PlayerSoldierStartTalking( UINT8 ubTargetID, BOOLEAN fValidate ) +BOOLEAN SOLDIERTYPE::PlayerSoldierStartTalking( UINT16 ubTargetID, BOOLEAN fValidate ) { INT16 sFacingDir, sXPos, sYPos, sAPCost; SOLDIERTYPE *pTSoldier; @@ -23460,7 +23466,7 @@ BOOLEAN SOLDIERTYPE::PlayerSoldierStartTalking( UINT8 ubTargetID, BOOLEAN fValid { // OK, since we locked this guy from moving // we should be close enough, so talk ( unless he is now dead ) - if ( !IsValidTalkableNPC( (UINT8)ubTargetID, FALSE, FALSE, FALSE ) ) + if ( !IsValidTalkableNPC( ubTargetID, FALSE, FALSE, FALSE ) ) { return(FALSE); } @@ -24386,7 +24392,7 @@ void SetSoldierPersonalLightLevel( SOLDIERTYPE *pSoldier ) void BeginSoldierClimbWallUp( SOLDIERTYPE *pSoldier ) { INT8 bNewDirection; - UINT8 ubWhoIsThere; + UINT16 ubWhoIsThere; if ( FindLowerLevelWall( pSoldier, pSoldier->sGridNo, pSoldier->ubDirection, &bNewDirection ) && (pSoldier->pathing.bLevel > 0) ) { @@ -24724,7 +24730,7 @@ INT8 NUM_SKILL_TRAITS( SOLDIERTYPE * pSoldier, UINT8 uiSkillTraitNumber ) UINT8 GetSquadleadersCountInVicinity( SOLDIERTYPE * pSoldier, BOOLEAN fWithHigherLevel, BOOLEAN fDontCheckDistance ) { - UINT8 cnt = 0; + UINT16 cnt = 0; UINT8 ubNumberSL = 0; // loop through all soldiers around @@ -25091,7 +25097,7 @@ BOOLEAN ResolvePendingInterrupt( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType ) ///////////////////////////// SOLDIERTYPE *pInterrupter; UINT8 ubInterruptersFound = 0; - UINT8 ubaInterruptersList[64]; + UINT16 ubaInterruptersList[64]; UINT16 uCnt = 0, uiReactionTime; INT16 iInjuryPenalty; @@ -25609,7 +25615,7 @@ UINT16 GridNoSpotterCTHBonus( SOLDIERTYPE* pSniper, INT32 sGridNo, INT8 bTeam ) { BOOLEAN targetseen = FALSE; - UINT usID = WhoIsThere2( sGridNo, pSniper->bTargetLevel ); + UINT16 usID = WhoIsThere2( sGridNo, pSniper->bTargetLevel ); // is someone is at the sGridNo, check wether the spotter can see any part of him check wether head can be seen) if ( usID != NOBODY && SoldierToSoldierLineOfSightTest( pSoldier, MercPtrs[usID], 0, NO_DISTANCE_LIMIT, AIM_SHOT_HEAD ) > 0 ) diff --git a/Tactical/Soldier Control.h b/Tactical/Soldier Control.h index eff711d0..024f635b 100644 --- a/Tactical/Soldier Control.h +++ b/Tactical/Soldier Control.h @@ -809,7 +809,7 @@ public: INT32 sNoiseGridno; UINT8 ubNoiseVolume; INT8 bLastAttackHit; - UINT8 ubXRayedBy; + UINT16 ubXRayedBy; FLOAT dHeightAdjustment; INT8 bMorale; INT8 bTeamMoraleMod; @@ -829,7 +829,7 @@ public: INT8 bMoved; INT8 bHunting; UINT8 ubLastCall; - UINT8 ubCaller; + UINT16 ubCaller; INT32 sCallerGridNo; UINT8 bCallPriority; INT8 bCallActedUpon; @@ -1096,8 +1096,7 @@ public: // properly until it is all fixed and the files updated. public: // ID - UINT8 ubID; - UINT8 bReserved1; + UINT16 ubID; CHAR16 name[ 10 ]; INT16 GetMaxDistanceVisible(INT32 sGridNo = -1, INT8 bLevel = -1, int calcAsType = -1); @@ -1128,7 +1127,7 @@ public: UINT8 ubWaitActionToDo; INT8 ubInsertionDirection; INT8 bGunType; - UINT8 ubOppNum; + UINT16 ubOppNum; INT8 bLastRenderVisibleValue; UINT8 ubAttackingHand; INT16 sWeightCarriedAtTurnStart; @@ -1185,8 +1184,8 @@ public: UINT32 uiAIDelay; INT16 sReloadDelay; - UINT8 ubAttackerID; - UINT8 ubPreviousAttackerID; + UINT16 ubAttackerID; + UINT16 ubPreviousAttackerID; INT32 sInsertionGridNo; @@ -1255,7 +1254,7 @@ public: UINT16 *pCurrentShade; UINT8 ubFadeLevel; UINT8 ubServiceCount; - UINT8 ubServicePartner; + UINT16 ubServicePartner; THROW_PARAMS *pThrowParams; INT8 bReverse; LEVELNODE *pLevelNode; @@ -1391,7 +1390,7 @@ public: UINT8 ubSoldierClass; //admin, elite, troop (creature types?) Nav: 2 seems to mean elite, 3 troop so admin is 1 UINT8 ubAPsLostToSuppression; - UINT8 ubSuppressorID; + UINT16 ubSuppressorID; //Squad merging vars UINT8 ubDesiredSquadAssignment; @@ -1410,7 +1409,7 @@ public: INT8 bBlockedByAnotherMercDirection; UINT16 usAttackingWeapon; INT8 bWeaponMode; - UINT8 ubTargetID; + UINT16 ubTargetID; INT8 bAIScheduleProgress; INT32 sOffWorldGridNo; struct TAG_anitile *pAniTile; @@ -1431,8 +1430,8 @@ public: INT8 bOldBattleSnd; INT32 iBurstSoundID; INT8 bSlotItemTakenFrom; - UINT8 ubAutoBandagingMedic; - UINT8 ubRobotRemoteHolderID; + UINT16 ubAutoBandagingMedic; + UINT16 ubRobotRemoteHolderID; UINT32 uiTimeOfLastContractUpdate; INT8 bTypeOfLastContract; INT8 bTurnsCollapsed; @@ -1457,7 +1456,7 @@ public: INT8 bRegenBoostersUsedToday; // Flugente: not used anymore! INT8 bNumPelletsHitBy; INT32 sSkillCheckGridNo; - UINT8 ubLastEnemyCycledID; + UINT16 ubLastEnemyCycledID; UINT8 ubPrevSectorID; UINT8 ubNumTilesMovesSinceLastForget; @@ -1468,7 +1467,7 @@ public: UINT8 ubNumLocateCycles; UINT8 ubDelayedMovementFlags; - UINT8 ubCTGTTargetID; + UINT16 ubCTGTTargetID; UINT32 uiMercChecksum; @@ -1508,7 +1507,7 @@ public: UINT8 ubLastDamageReason; INT32 sLastTwoLocations[2]; INT32 uiTimeSinceLastBleedGrunt; - UINT8 ubNextToPreviousAttackerID; + UINT16 ubNextToPreviousAttackerID; UINT8 bDoAutofire; INT8 numFlanks; INT32 lastFlankSpot; @@ -1539,7 +1538,7 @@ public: UINT8 ubMilitiaAssists; // Flugente: stores militia assists INT8 sNonNPCTraderID; // Flugente: we can set up non-NPC soldiers to be merchants, we store their dealer id here (value > 0 means arms dealer entry x) //INT8 bUnusedINT8_3; - UINT8 usDragPersonID; // Flugente: id of person we are dragging + UINT16 usDragPersonID; // Flugente: id of person we are dragging //INT16 bUnusedINT16_4; INT16 sDragCorpseID; // Flugente: id of corpse we are dragging @@ -1676,7 +1675,7 @@ public: void EVENT_SetSoldierDirection( UINT16 usNewDirection ); void EVENT_SetSoldierDesiredDirection( UINT16 usNewDirection ); void EVENT_FireSoldierWeapon( INT32 sTargetGridNo ); - void EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 ubDamage, INT16 sBreathLoss, UINT16 bDirection , UINT16 sRange, UINT8 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation, INT16 sSubsequent, INT32 sLocationGridNo ); + void EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 ubDamage, INT16 sBreathLoss, UINT16 bDirection, UINT16 sRange, UINT16 ubAttackerID, UINT8 ubSpecial, UINT8 ubHitLocation, INT16 sSubsequent, INT32 sLocationGridNo ); void EVENT_SoldierBeginBladeAttack( INT32 sGridNo, UINT8 ubDirection ); void EVENT_SoldierBeginPunchAttack( INT32 sGridNo, UINT8 ubDirection ); void EVENT_SoldierBeginFirstAid( INT32 sGridNo, UINT8 ubDirection ); @@ -1717,7 +1716,7 @@ public: void ChangeSoldierStance( UINT8 ubDesiredStance ); void StopSoldier( void ); void ReviveSoldier( void ); - UINT8 SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBreathDeduct, UINT8 ubReason, UINT8 ubAttacker, INT32 sSourceGrid, INT16 sSubsequent, BOOLEAN fShowDamage ); + UINT8 SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBreathDeduct, UINT8 ubReason, UINT16 ubAttacker, INT32 sSourceGrid, INT16 sSubsequent, BOOLEAN fShowDamage ); // Palette functions for soldiers @@ -1810,7 +1809,7 @@ public: BOOLEAN CheckSoldierHitRoof( void ); BOOLEAN CheckForBreathCollapse( void ); - BOOLEAN PlayerSoldierStartTalking( UINT8 ubTargetID, BOOLEAN fValidate ); + BOOLEAN PlayerSoldierStartTalking( UINT16 ubTargetID, BOOLEAN fValidate ); BOOLEAN InternalIsValidStance( INT8 bDirection, INT8 bNewStance ); BOOLEAN IsValidSecondHandShot( void ); BOOLEAN IsValidSecondHandBurst( void ); @@ -1841,7 +1840,7 @@ public: void InventoryExplosion( void ); // Flugente: do we currently provide ammo (pAmmoSlot) for someone else's (pubId) gun (pGunSlot)? - BOOLEAN IsFeedingExternal(UINT8* pubId1, UINT16* pGunSlot1, UINT16* pAmmoSlot1, UINT8* pubId2, UINT16* pGunSlot2, UINT16* pAmmoSlot2); + BOOLEAN IsFeedingExternal(UINT16 * pubId1, UINT16* pGunSlot1, UINT16* pAmmoSlot1, UINT16 * pubId2, UINT16* pGunSlot2, UINT16* pAmmoSlot2); // Flugente: return first found object with a specific flag from our inventory OBJECTTYPE* GetObjectWithFlag( UINT64 aFlag ); @@ -1861,10 +1860,10 @@ public: BOOLEAN EquipmentTooGood( BOOLEAN fCloselook ); // does soldier ubObserverID recognize us as his enemy? - BOOLEAN SeemsLegit( UINT8 ubObserverID ); + BOOLEAN SeemsLegit( UINT16 ubObserverID ); // do we recognize someone else as a combatant? - BOOLEAN RecognizeAsCombatant(UINT8 ubTargetID); + BOOLEAN RecognizeAsCombatant(UINT16 ubTargetID); // loose covert property void LooseDisguise( void ); diff --git a/Tactical/Soldier Create.cpp b/Tactical/Soldier Create.cpp index 192b82a0..eb87056f 100644 --- a/Tactical/Soldier Create.cpp +++ b/Tactical/Soldier Create.cpp @@ -576,15 +576,15 @@ void DecideToAssignSniperOrders( SOLDIERCREATE_STRUCT * pp ) // This causes an issue if someone enters a sector from an adjacent sector - they should be affected by their point of origin, not the current sector // For this reason, we add a little helper variable that stores such a sector. INT16 gsStrategicDiseaseOriginSector = -1; - -SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 *pubID ) +#pragma optimize("", off) +SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, UINT16 * pubID ) { - SOLDIERTYPE Soldier; - INT32 cnt; - SOLDIERTYPE *pTeamSoldier; - BOOLEAN fGuyAvail = FALSE; - UINT8 bLastTeamID; - UINT8 ubVehicleID = 0; + SOLDIERTYPE Soldier; + INT32 cnt; + SOLDIERTYPE *pTeamSoldier; + BOOLEAN fGuyAvail = FALSE; + UINT16 bLastTeamID; + UINT8 ubVehicleID = 0; *pubID = NOBODY; DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("TacticalCreateSoldier")); @@ -800,7 +800,7 @@ SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 * } // OK, set ID - Soldier.ubID = (UINT8)cnt; + Soldier.ubID = (UINT16)cnt; *pubID = Soldier.ubID; } @@ -1273,6 +1273,7 @@ SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 * return pSoldier; } } +#pragma optimize("", on) BOOLEAN TacticalCopySoldierFromProfile( SOLDIERTYPE *pSoldier, SOLDIERCREATE_STRUCT *pCreateStruct ) { @@ -1843,9 +1844,9 @@ BOOLEAN TacticalCopySoldierFromCreateStruct( SOLDIERTYPE *pSoldier, SOLDIERCREAT { if ( HAS_SKILL_TRAIT( pSoldier, SQUADLEADER_NT) ) { - UINT8 numenemies = NumEnemyInSector(); + UINT16 numenemies = NumEnemyInSector(); UINT8 officertype = OFFICER_NONE; - UINT8 numofficers = HighestEnemyOfficersInSector( officertype ); + UINT16 numofficers = HighestEnemyOfficersInSector( officertype ); // this guy becomes an officer if there are enough soldiers around, and we aren't already at max of officers if ( numenemies > gGameExternalOptions.usEnemyOfficersPerTeamSize * numofficers && numofficers < gGameExternalOptions.usEnemyOfficersMax && !RebelCommand::NeutraliseRole(pSoldier) ) @@ -3083,7 +3084,7 @@ SOLDIERTYPE* TacticalCreateAdministrator() { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE * pSoldier; if( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3116,7 +3117,7 @@ SOLDIERTYPE* TacticalCreateArmyTroop() { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE * pSoldier; if( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3150,7 +3151,7 @@ SOLDIERTYPE* TacticalCreateEliteEnemy() { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE * pSoldier; if( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3192,7 +3193,7 @@ SOLDIERTYPE* TacticalCreateEnemyTank() { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE * pSoldier; if( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3232,7 +3233,7 @@ SOLDIERTYPE* TacticalCreateEnemyJeep( ) { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE * pSoldier; if ( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3273,7 +3274,7 @@ SOLDIERTYPE* TacticalCreateEnemyRobot() { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE * pSoldier; if ( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3314,7 +3315,7 @@ SOLDIERTYPE* TacticalCreateZombie() { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE * pSoldier; if( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3388,7 +3389,7 @@ SOLDIERTYPE* TacticalCreateMilitia( UINT8 ubMilitiaClass, INT16 sX, INT16 sY ) { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE * pSoldier; if (gpBattleGroup && @@ -3429,7 +3430,7 @@ SOLDIERTYPE* TacticalCreateCreature( INT8 bCreatureBodyType ) { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE * pSoldier; if( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3455,7 +3456,7 @@ SOLDIERTYPE* TacticalCreateArmedCivilian( UINT8 usSoldierClass ) { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE * pSoldier = NULL; // this needs the covert ops trait, and thus the new trait system @@ -3504,7 +3505,7 @@ SOLDIERTYPE* TacticalCreateCivilian( INT32 sGridNo, UINT8 usCivilianGroup, INT8 if ( guiCurrentScreen == AUTORESOLVE_SCREEN ) return NULL; - UINT8 ubID = NOBODY; + UINT16 ubID = NOBODY; SOLDIERTYPE* pSoldier = NULL; SOLDIERCREATE_STRUCT MercCreateStruct; @@ -3603,7 +3604,7 @@ SOLDIERTYPE* TacticalCreateEnemyAssassin(UINT8 disguisetype) { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE * pSoldier; // this needs the covert ops trait, and thus the new trait system @@ -3668,7 +3669,7 @@ SOLDIERTYPE* TacticalCreateBandit() { BASIC_SOLDIERCREATE_STRUCT bp; SOLDIERCREATE_STRUCT pp; - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE * pSoldier; if ( guiCurrentScreen == AUTORESOLVE_SCREEN && !gfPersistantPBI ) @@ -3859,7 +3860,7 @@ void CreatePrisonerOfWar() } SOLDIERCREATE_STRUCT MercCreateStruct; - UINT8 ubID; + UINT16 ubID; static INT8 bPowBodyType = REGMALE; @@ -3941,7 +3942,7 @@ void CreateDownedPilot( ) while ( TileIsOutOfBounds( sGridNo ) || FindStructure( sGridNo, STRUCTURE_BLOCKSMOVES ) || TERRAIN_IS_WATER( gpWorldLevelData[sGridNo].ubTerrainID ) || GridNoNearPlayerMercs( sGridNo, 25 ) ); SOLDIERCREATE_STRUCT MercCreateStruct; - UINT8 ubID; + UINT16 ubID; MercCreateStruct.initialize( ); MercCreateStruct.bTeam = CIV_TEAM; @@ -4101,9 +4102,9 @@ void RandomizeRelativeLevel( INT8 *pbRelLevel, UINT8 ubSoldierClass ) void QuickCreateProfileMerc( INT8 bTeam, UINT8 ubProfileID ) { // Create guy # X - SOLDIERCREATE_STRUCT MercCreateStruct; - INT16 sWorldX, sWorldY, sSectorX, sSectorY, sGridX, sGridY; - UINT8 ubID; + SOLDIERCREATE_STRUCT MercCreateStruct; + INT16 sWorldX, sWorldY, sSectorX, sSectorY, sGridX, sGridY; + UINT16 ubID; INT32 usMapPos; if ( GetMouseXY( &sGridX, &sGridY ) ) diff --git a/Tactical/Soldier Create.h b/Tactical/Soldier Create.h index d98f9c01..d8791d30 100644 --- a/Tactical/Soldier Create.h +++ b/Tactical/Soldier Create.h @@ -460,7 +460,7 @@ void RandomizeNewSoldierStats( SOLDIERCREATE_STRUCT *pCreateStruct ); //Kris: //Modified return type from BOOLEAN to SOLDIERTYPE* -SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, UINT8 *pubID ); +SOLDIERTYPE* TacticalCreateSoldier( SOLDIERCREATE_STRUCT *pCreateStruct, UINT16 * pubID ); //Randomly generated enemies used by strategic AI. SOLDIERTYPE* TacticalCreateAdministrator(); diff --git a/Tactical/Soldier Find.cpp b/Tactical/Soldier Find.cpp index 3d3a699e..0e688cfa 100644 --- a/Tactical/Soldier Find.cpp +++ b/Tactical/Soldier Find.cpp @@ -70,7 +70,7 @@ UINT32 gScrollSlideInertiaDirection[ NUM_WORLD_DIRECTIONS ] = typedef struct { INT8 bNum; - UINT8 ubIDs[ MAX_STACKED_MERCS ]; + UINT16 ubIDs[ MAX_STACKED_MERCS ]; INT8 bCur; BOOLEAN fUseGridNo; INT32 sUseGridNoGridNo; @@ -204,7 +204,7 @@ BOOLEAN FindSoldier( INT32 sGridNo, UINT16 *pusSoldierIndex, UINT32 *pMercFlags, INT16 sXMapPos, sYMapPos, sScreenX, sScreenY; INT16 sMaxScreenMercY, sHeighestMercScreenY = -32000; BOOLEAN fDoFull; - UINT8 ubBestMerc = NOBODY; + UINT16 ubBestMerc = NOBODY; UINT16 usAnimSurface; INT32 iMercScreenX, iMercScreenY; BOOLEAN fInScreenRect = FALSE; @@ -525,7 +525,7 @@ BOOLEAN CycleSoldierFindStack( INT32 usMapPos ) SOLDIERTYPE * SimpleFindSoldier( INT32 sGridNo, INT8 bLevel ) { - UINT8 ubID; + UINT16 ubID; ubID = WhoIsThere2( sGridNo, bLevel ); if ( ubID == NOBODY ) @@ -538,7 +538,7 @@ SOLDIERTYPE * SimpleFindSoldier( INT32 sGridNo, INT8 bLevel ) } } -BOOLEAN IsValidTargetMerc( UINT8 ubSoldierID ) +BOOLEAN IsValidTargetMerc( UINT16 ubSoldierID ) { SOLDIERTYPE *pSoldier = MercPtrs[ ubSoldierID ]; @@ -1008,7 +1008,7 @@ BOOLEAN FindRelativeSoldierPosition( SOLDIERTYPE *pSoldier, UINT16 *usFlags, INT } // VERY quickly finds a soldier at gridno , ( that is visible ) -UINT8 QuickFindSoldier( INT32 sGridNo ) +UINT16 QuickFindSoldier( INT32 sGridNo ) { UINT32 cnt; SOLDIERTYPE *pSoldier = NULL; @@ -1022,7 +1022,7 @@ UINT8 QuickFindSoldier( INT32 sGridNo ) { if ( pSoldier->sGridNo == sGridNo && pSoldier->bVisible != -1 ) { - return( (UINT8)cnt ); + return( (UINT16)cnt ); } } diff --git a/Tactical/Soldier Find.h b/Tactical/Soldier Find.h index de256761..6616dfb4 100644 --- a/Tactical/Soldier Find.h +++ b/Tactical/Soldier Find.h @@ -48,7 +48,7 @@ void GetSoldierTRUEScreenPos( SOLDIERTYPE *pSoldier, INT16 *psScreenX, INT16 *ps BOOLEAN IsPointInSoldierBoundingBox( SOLDIERTYPE *pSoldier, INT16 sX, INT16 sY ); BOOLEAN FindRelativeSoldierPosition( SOLDIERTYPE *pSoldier, UINT16 *usFlags, INT16 sX, INT16 sY ); -UINT8 QuickFindSoldier( INT32 sGridNo ); +UINT16 QuickFindSoldier( INT32 sGridNo ); void GetGridNoScreenPos( INT32 sGridNo, UINT8 ubLevel, INT16 *psScreenX, INT16 *psScreenY ); diff --git a/Tactical/Soldier Init List.cpp b/Tactical/Soldier Init List.cpp index ad719347..847629c3 100644 --- a/Tactical/Soldier Init List.cpp +++ b/Tactical/Soldier Init List.cpp @@ -581,13 +581,13 @@ void SortSoldierInitList() } extern FLOAT gAmbushRadiusModifier; - +#pragma optimize("",off) BOOLEAN AddPlacementToWorld( SOLDIERINITNODE *curr, GROUP *pGroup = NULL ) { UINT8 ubProfile; SOLDIERCREATE_STRUCT tempDetailedPlacement; SOLDIERTYPE *pSoldier; - UINT8 ubID; + UINT16 ubID; DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("AddPlacementToWorld")); // First check if this guy has a profile and if so check his location such that it matches! @@ -859,7 +859,7 @@ BOOLEAN AddPlacementToWorld( SOLDIERINITNODE *curr, GROUP *pGroup = NULL ) if(is_server) ScreenMsg( FONT_YELLOW, MSG_MPSYSTEM, L"report this MP error (AddPlacementToWorld-FAIL!)"); return FALSE; } - +#pragma optimize("",on) void AddPlacementToWorldByProfileID( UINT8 ubProfile ) { SOLDIERINITNODE * curr; @@ -1050,7 +1050,7 @@ UINT8 AddSoldierInitListTeamToWorld( INT8 bTeam, UINT8 ubMaxNum ) return ubNumAdded; } - +#pragma optimize("",off) void AddSoldierInitListEnemyDefenceSoldiers( UINT8 ubTotalAdmin, UINT8 ubTotalTroops, UINT8 ubTotalElite, UINT8 ubTotalRobots, UINT8 ubTotalTanks, UINT8 ubTotalJeeps ) { SOLDIERINITNODE *mark; @@ -1605,7 +1605,7 @@ void AddSoldierInitListEnemyDefenceSoldiers( UINT8 ubTotalAdmin, UINT8 ubTotalTr curr = curr->next; } } - +#pragma optimize("",on) //If we are adding militia to our map, then we do a few things differently. //First of all, they exist exclusively to the enemy troops, so if the militia exists in the //sector, then they get to use the enemy placements. However, we remove any orders from @@ -2377,8 +2377,8 @@ BOOLEAN SaveSoldierInitListLinks( HWFILE hfile ) { return FALSE; } - FileWrite( hfile, &curr->ubSoldierID, 1, &uiNumBytesWritten ); - if( uiNumBytesWritten != 1 ) + FileWrite( hfile, &curr->ubSoldierID, 2, &uiNumBytesWritten ); + if( uiNumBytesWritten != 2 ) { return FALSE; } @@ -2391,7 +2391,8 @@ BOOLEAN LoadSoldierInitListLinks( HWFILE hfile ) { UINT32 uiNumBytesRead; SOLDIERINITNODE *curr; - UINT8 ubSlots, ubSoldierID, ubNodeID; + UINT8 ubSlots, ubNodeID; + UINT16 ubSoldierID; FileRead( hfile, &ubSlots, 1, &uiNumBytesRead ); if( uiNumBytesRead != 1 ) @@ -2664,7 +2665,7 @@ void AddProfilesUsingProfileInsertionData() if( !pSoldier ) { //Create a new soldier, as this one doesn't exist SOLDIERCREATE_STRUCT MercCreateStruct; - UINT8 ubID; + UINT16 ubID; //Set up the create struct so that we can properly create the profile soldier. MercCreateStruct.initialize(); @@ -2802,7 +2803,8 @@ BOOLEAN NewWayOfLoadingEnemySoldierInitListLinks( HWFILE hfile ) { UINT32 uiNumBytesRead; SOLDIERINITNODE *curr; - UINT8 ubSlots, ubSoldierID, ubNodeID; + UINT8 ubSlots, ubNodeID; + UINT16 ubSoldierID; FileRead( hfile, &ubSlots, 1, &uiNumBytesRead ); if( uiNumBytesRead != 1 ) @@ -2816,8 +2818,8 @@ BOOLEAN NewWayOfLoadingEnemySoldierInitListLinks( HWFILE hfile ) { return FALSE; } - FileRead( hfile, &ubSoldierID, 1, &uiNumBytesRead ); - if( uiNumBytesRead != 1 ) + FileRead( hfile, &ubSoldierID, 2, &uiNumBytesRead ); + if( uiNumBytesRead != 2 ) { return FALSE; } @@ -2848,7 +2850,8 @@ BOOLEAN NewWayOfLoadingCivilianInitListLinks( HWFILE hfile ) { UINT32 uiNumBytesRead; SOLDIERINITNODE *curr; - UINT8 ubSlots, ubSoldierID, ubNodeID; + UINT8 ubSlots, ubNodeID; + UINT16 ubSoldierID; FileRead( hfile, &ubSlots, 1, &uiNumBytesRead ); if( uiNumBytesRead != 1 ) @@ -2862,8 +2865,8 @@ BOOLEAN NewWayOfLoadingCivilianInitListLinks( HWFILE hfile ) { return FALSE; } - FileRead( hfile, &ubSoldierID, 1, &uiNumBytesRead ); - if( uiNumBytesRead != 1 ) + FileRead( hfile, &ubSoldierID, 2, &uiNumBytesRead ); + if( uiNumBytesRead != 2 ) { return FALSE; } @@ -2894,7 +2897,8 @@ BOOLEAN LookAtButDontProcessEnemySoldierInitListLinks( HWFILE hfile ) { UINT32 uiNumBytesRead; SOLDIERINITNODE *curr; - UINT8 ubSlots, ubSoldierID, ubNodeID; + UINT8 ubSlots, ubNodeID; + UINT16 ubSoldierID; FileRead( hfile, &ubSlots, 1, &uiNumBytesRead ); if( uiNumBytesRead != 1 ) @@ -2908,8 +2912,8 @@ BOOLEAN LookAtButDontProcessEnemySoldierInitListLinks( HWFILE hfile ) { return FALSE; } - FileRead( hfile, &ubSoldierID, 1, &uiNumBytesRead ); - if( uiNumBytesRead != 1 ) + FileRead( hfile, &ubSoldierID, 2, &uiNumBytesRead ); + if( uiNumBytesRead != 2 ) { return FALSE; } diff --git a/Tactical/Soldier Init List.h b/Tactical/Soldier Init List.h index ac47d25d..ed1002a2 100644 --- a/Tactical/Soldier Init List.h +++ b/Tactical/Soldier Init List.h @@ -7,7 +7,7 @@ typedef struct SOLDIERINITNODE { UINT8 ubNodeID; - UINT8 ubSoldierID; + UINT16 ubSoldierID; BASIC_SOLDIERCREATE_STRUCT *pBasicPlacement; SOLDIERCREATE_STRUCT *pDetailedPlacement; SOLDIERTYPE *pSoldier; diff --git a/Tactical/Soldier Profile.cpp b/Tactical/Soldier Profile.cpp index f9fbce1a..b18b23fb 100644 --- a/Tactical/Soldier Profile.cpp +++ b/Tactical/Soldier Profile.cpp @@ -1502,7 +1502,7 @@ INT16 CalcMedicalDeposit( MERCPROFILESTRUCT * pProfile ) SOLDIERTYPE * FindSoldierByProfileID( UINT8 ubProfileID, BOOLEAN fPlayerMercsOnly ) { - UINT8 ubLoop, ubLoopLimit; + UINT16 ubLoop, ubLoopLimit; SOLDIERTYPE * pSoldier; // sevenfm: fix for last soldier in player team @@ -1531,13 +1531,13 @@ SOLDIERTYPE * FindSoldierByProfileID( UINT8 ubProfileID, BOOLEAN fPlayerMercsOnl SOLDIERTYPE *ChangeSoldierTeam( SOLDIERTYPE *pSoldier, UINT8 ubTeam ) { - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE *pNewSoldier = NULL; SOLDIERCREATE_STRUCT MercCreateStruct; UINT32 cnt; INT32 sOldGridNo; - UINT8 ubOldID; + UINT16 ubOldID; UINT32 uiOldUniqueId; UINT32 uiSlot; diff --git a/Tactical/Soldier Tile.cpp b/Tactical/Soldier Tile.cpp index 6a9f16d8..ec7e0da2 100644 --- a/Tactical/Soldier Tile.cpp +++ b/Tactical/Soldier Tile.cpp @@ -101,7 +101,7 @@ void OutputDebugInfoForTurnBasedNextTileWaiting( SOLDIERTYPE * pSoldier ) void SetDelayedTileWaiting( SOLDIERTYPE *pSoldier, INT32 sCauseGridNo, INT8 bValue ) { - UINT8 ubPerson; + UINT16 ubPerson; // Cancel AI Action // CancelAIAction( pSoldier, TRUE ); @@ -210,7 +210,7 @@ void UnMarkMovementReserved( SOLDIERTYPE *pSoldier ) INT8 TileIsClear( SOLDIERTYPE *pSoldier, INT8 bDirection, INT32 sGridNo, INT8 bLevel ) { - UINT8 ubPerson; + UINT16 ubPerson; INT32 sTempDestGridNo; INT32 sNewGridNo; BOOLEAN fSwapInDoor = FALSE; @@ -519,7 +519,7 @@ BOOLEAN HandleNextTileWaiting( SOLDIERTYPE *pSoldier ) INT32 sCost; INT32 sNewGridNo, sCheckGridNo; UINT8 ubDirection, bCauseDirection; - UINT8 ubPerson; + UINT16 ubPerson; UINT8 fFlags = 0; diff --git a/Tactical/Squads.cpp b/Tactical/Squads.cpp index dc6176c9..9c3c5734 100644 --- a/Tactical/Squads.cpp +++ b/Tactical/Squads.cpp @@ -1000,7 +1000,7 @@ void RebuildCurrentSquad( void ) void ExamineCurrentSquadLights( void ) { // rebuilds current squad to reset faces in tactical - UINT8 ubLoop; + UINT16 ubLoop; // OK, we should add lights for any guy currently bInSector who is not bad OKLIFE... ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; @@ -1331,7 +1331,7 @@ void RebuildSquad( INT8 bSquadValue ) void UpdateCurrentlySelectedMerc( SOLDIERTYPE *pSoldier, INT8 bSquadValue ) { - UINT8 ubID; + UINT16 ubID; // if this squad is the current one and and the psoldier is the currently selected soldier, get rid of 'em if( bSquadValue != iCurrentTacticalSquad ) diff --git a/Tactical/Strategic Exit GUI.cpp b/Tactical/Strategic Exit GUI.cpp index b56531d0..4f101117 100644 --- a/Tactical/Strategic Exit GUI.cpp +++ b/Tactical/Strategic Exit GUI.cpp @@ -85,7 +85,7 @@ typedef struct UINT8 ubLeaveSectorCode; UINT8 ubDirection; UINT8 ubNumPeopleOnSquad; - INT8 bSingleMoveWillIsolateEPC; //if not -1, then that means the slot number is an EPC + INT16 bSingleMoveWillIsolateEPC; //if not -1, then that means the slot number is an EPC INT8 bHandled; BOOLEAN fRender; BOOLEAN fGotoSector; @@ -266,8 +266,8 @@ BOOLEAN InternalInitSectorExitMenu( UINT8 ubDirection, INT32 sAdditionalData )// { //check to see if we have one selected merc and one or more EPCs. //If so, don't allow the selected merc to leave by himself. //Assuming that the matching squad assignment is in the same sector. - UINT8 ubNumMercs = 1; //selected soldier is a merc - UINT8 ubNumEPCs = 0; + UINT16 ubNumMercs = 1; //selected soldier is a merc + UINT16 ubNumEPCs = 0; for( i = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; i <= gTacticalStatus.Team[ OUR_TEAM ].bLastID; i++ ) { if( i == gusSelectedSoldier ) @@ -282,7 +282,7 @@ BOOLEAN InternalInitSectorExitMenu( UINT8 ubDirection, INT32 sAdditionalData )// //record the slot of the epc. If there are more than one EPCs, then //it doesn't matter. This is used in building the text message explaining //why the selected merc can't leave. This is how we extract the EPC's name. - gExitDialog.bSingleMoveWillIsolateEPC = (INT8)i; + gExitDialog.bSingleMoveWillIsolateEPC = (INT16)i; } else { //We have more than one merc, so we will allow the selected merc to leave alone if diff --git a/Tactical/Structure Wrap.cpp b/Tactical/Structure Wrap.cpp index cbf36b96..2123504f 100644 --- a/Tactical/Structure Wrap.cpp +++ b/Tactical/Structure Wrap.cpp @@ -522,9 +522,9 @@ BOOLEAN IsCuttableWireFenceAtGridNo( INT32 sGridNo ) } -BOOLEAN IsRepairableStructAtGridNo( INT32 sGridNo, UINT8 *pubID ) +BOOLEAN IsRepairableStructAtGridNo( INT32 sGridNo, UINT16 * pubID ) { - UINT8 ubMerc; + UINT16 ubMerc; // OK, first look for a vehicle.... ubMerc = WhoIsThere2( sGridNo, 0 ); @@ -558,9 +558,9 @@ BOOLEAN IsRepairableStructAtGridNo( INT32 sGridNo, UINT8 *pubID ) } -BOOLEAN IsRefuelableStructAtGridNo( INT32 sGridNo, UINT8 *pubID ) +BOOLEAN IsRefuelableStructAtGridNo( INT32 sGridNo, UINT16 * pubID ) { - UINT8 ubMerc; + UINT16 ubMerc; // OK, first look for a vehicle.... ubMerc = WhoIsThere2( sGridNo, 0 ); diff --git a/Tactical/Structure Wrap.h b/Tactical/Structure Wrap.h index 0679e26c..5187f3b1 100644 --- a/Tactical/Structure Wrap.h +++ b/Tactical/Structure Wrap.h @@ -36,8 +36,8 @@ BOOLEAN CutWireFence( INT32 sGridNo ); BOOLEAN IsCuttableWireFenceAtGridNo( INT32 sGridNo ); BOOLEAN IsCutWireFenceAtGridNo( INT32 sGridNo ); -BOOLEAN IsRepairableStructAtGridNo( INT32 sGridNo, UINT8 *pubID ); -BOOLEAN IsRefuelableStructAtGridNo( INT32 sGridNo, UINT8 *pubID ); +BOOLEAN IsRepairableStructAtGridNo( INT32 sGridNo, UINT16 * pubID ); +BOOLEAN IsRefuelableStructAtGridNo( INT32 sGridNo, UINT16 * pubID ); BOOLEAN IsFortificationPossibleAtGridNo( INT32 sGridNo ); // added by Flugente UINT16 InteractiveActionPossibleAtGridNo( INT32 sGridNo, UINT8 usLevel, UINT16& arusStructIndex ); // added by Flugente diff --git a/Tactical/Tactical Save.cpp b/Tactical/Tactical Save.cpp index a4fcf717..5c70a612 100644 --- a/Tactical/Tactical Save.cpp +++ b/Tactical/Tactical Save.cpp @@ -2161,8 +2161,8 @@ BOOLEAN DoesTempFileExistsForMap( UINT32 uiType, INT16 sMapX, INT16 sMapY, INT8 INT16 GetSoldierIDFromAnyMercID(UINT8 ubMercID) { UINT16 cnt; - UINT8 ubLastTeamID; - SOLDIERTYPE *pTeamSoldier; + UINT16 ubLastTeamID; + SOLDIERTYPE *pTeamSoldier; cnt = gTacticalStatus.Team[ OUR_TEAM ].bFirstID; @@ -2582,7 +2582,7 @@ BOOLEAN SetSectorFlag( INT16 sMapX, INT16 sMapY, UINT8 bMapZ, UINT32 uiFlagToSet UpdateLastDayOfPlayerActivity( (UINT16) GetWorldDay() ); } - for ( UINT8 i = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; i <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; i++ ) + for ( UINT16 i = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; i <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; i++ ) { if( MercPtrs[ i ]->bActive && MercPtrs[ i ]->stats.bLife && !(MercPtrs[ i ]->flags.uiStatusFlags & SOLDIER_VEHICLE) && MercPtrs[ i ]->ubProfile != NO_PROFILE && MercPtrs[ i ]->sSectorX == sMapX && MercPtrs[ i ]->sSectorY == sMapY && MercPtrs[ i ]->bSectorZ == bMapZ && !MercPtrs[ i ]->flags.fBetweenSectors && diff --git a/Tactical/Tactical Turns.cpp b/Tactical/Tactical Turns.cpp index 42fd6adf..9ae4a7d2 100644 --- a/Tactical/Tactical Turns.cpp +++ b/Tactical/Tactical Turns.cpp @@ -35,7 +35,7 @@ extern void DecayPublicOpplist( INT8 bTeam ); //not in overhead.h! -extern UINT8 NumEnemyInSector(); +extern UINT16 NumEnemyInSector(); #ifdef JA2UB @@ -45,10 +45,10 @@ extern UINT8 NumEnemyInSector(); void HandleRPCDescription( ) { // WDS - make number of mercenaries, etc. be configurable - std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); + std::vector ubMercsInSector (CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS, 0); // UINT8 ubMercsInSector[ CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS ] = { 0 }; - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc = 0; + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc = 0; SOLDIERTYPE *pTeamSoldier; INT32 cnt2; BOOLEAN fSAMSite = FALSE; @@ -120,7 +120,7 @@ void HandleRPCDescription( ) pTeamSoldier->ubProfile == CARLOS || pTeamSoldier->ubProfile == DIMITRI ) { - ubMercsInSector[ubNumMercs] = (UINT8)cnt2; + ubMercsInSector[ubNumMercs] = (UINT16)cnt2; ++ubNumMercs; } } @@ -130,7 +130,7 @@ void HandleRPCDescription( ) // If we are > 0 if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); TacticalCharacterDialogueWithSpecialEvent( MercPtrs[ubMercsInSector[ubChosenMerc]], gTacticalStatus.ubGuideDescriptionToUse, DIALOGUE_SPECIAL_EVENT_USE_ALTERNATE_FILES, 0, 0 ); } diff --git a/Tactical/TeamTurns.cpp b/Tactical/TeamTurns.cpp index d299f2cc..b9d6c0d8 100644 --- a/Tactical/TeamTurns.cpp +++ b/Tactical/TeamTurns.cpp @@ -95,15 +95,15 @@ void RecalculateSoldiersAniSpeed() extern void DecayPublicOpplist(INT8 bTeam); extern void VerifyAndDecayOpplist(SOLDIERTYPE *pSoldier); void EndInterrupt( BOOLEAN fMarkInterruptOccurred ); -void DeleteFromIntList( UINT8 ubIndex, BOOLEAN fCommunicate); +void DeleteFromIntList( UINT16 ubIndex, BOOLEAN fCommunicate); #define END_OF_INTERRUPTS 255 -UINT8 gubOutOfTurnOrder[MAXMERCS] = { END_OF_INTERRUPTS, 0 }; -UINT8 gubOutOfTurnPersons = 0; +UINT16 gubOutOfTurnOrder[MAXMERCS] = { END_OF_INTERRUPTS, 0 }; +UINT16 gubOutOfTurnPersons = 0; #define LATEST_INTERRUPT_GUY (gubOutOfTurnOrder[gubOutOfTurnPersons]) -#define REMOVE_LATEST_INTERRUPT_GUY() (DeleteFromIntList( (UINT8) (gubOutOfTurnPersons), TRUE )) +#define REMOVE_LATEST_INTERRUPT_GUY() (DeleteFromIntList( (gubOutOfTurnPersons), TRUE )) #define INTERRUPTS_OVER (gubOutOfTurnPersons == 1) INT16 InterruptOnlyGuynum = NOBODY; @@ -116,7 +116,7 @@ extern UINT8 gubSightFlags; typedef struct { - UINT8 ubOutOfTurnPersons; + UINT16 ubOutOfTurnPersons; INT16 InterruptOnlyGuynum; INT16 sWhoThrewRock; @@ -510,7 +510,7 @@ void BeginTeamTurn( UINT8 ubTeam ) { DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"BeginTeamTurn"); INT32 cnt; - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE *pSoldier; //rain @@ -792,7 +792,7 @@ void DisplayHiddenTurnbased( SOLDIERTYPE * pActingSoldier ) BOOLEAN EveryoneInInterruptListOnSameTeam( void ) { DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"EveryoneInInterruptListOnSameTeam"); - UINT8 ubLoop; + UINT16 ubLoop; UINT8 ubTeam = 255; for (ubLoop = 1; ubLoop <= gubOutOfTurnPersons; ubLoop++) @@ -814,11 +814,11 @@ BOOLEAN EveryoneInInterruptListOnSameTeam( void ) void StartInterrupt( void ) { - UINT8 ubFirstInterrupter; + UINT16 ubFirstInterrupter; INT8 bTeam; SOLDIERTYPE * pSoldier; SOLDIERTYPE * pTempSoldier; - UINT8 ubInterrupter; + UINT16 ubInterrupter; INT32 cnt; DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"StartInterrupt"); @@ -1120,12 +1120,12 @@ void StartInterrupt( void ) void EndInterrupt( BOOLEAN fMarkInterruptOccurred ) { - UINT8 ubInterruptedSoldier; - SOLDIERTYPE * pSoldier; - SOLDIERTYPE * pTempSoldier; - INT32 cnt; - BOOLEAN fFound; - INT16 ubMinAPsToAttack; + UINT16 ubInterruptedSoldier; + SOLDIERTYPE * pSoldier; + SOLDIERTYPE * pTempSoldier; + INT32 cnt; + BOOLEAN fFound; + INT16 ubMinAPsToAttack; DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"EndInterrupt"); @@ -1172,7 +1172,7 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred ) } else { - UINT8 nubFirstInterrupter; + UINT16 nubFirstInterrupter; INT8 nbTeam; SOLDIERTYPE * npSoldier; @@ -1499,7 +1499,7 @@ void EndInterrupt( BOOLEAN fMarkInterruptOccurred ) } -BOOLEAN StandardInterruptConditionsMet( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, INT8 bOldOppList) +BOOLEAN StandardInterruptConditionsMet( SOLDIERTYPE * pSoldier, UINT16 ubOpponentID, INT8 bOldOppList) { DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"StandardInterruptConditionsMet"); // UINT8 ubAniType; @@ -1801,7 +1801,7 @@ BOOLEAN StandardInterruptConditionsMet( SOLDIERTYPE * pSoldier, UINT8 ubOpponent } -INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, BOOLEAN fUseWatchSpots ) +INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, UINT16 ubOpponentID, BOOLEAN fUseWatchSpots ) { INT32 iPoints; INT8 bLightLevel; @@ -2080,11 +2080,11 @@ BOOLEAN InterruptDuel( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pOpponent) } -void DeleteFromIntList( UINT8 ubIndex, BOOLEAN fCommunicate) +void DeleteFromIntList( UINT16 ubIndex, BOOLEAN fCommunicate) { DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"DeleteFromIntList"); - UINT8 ubLoop; - UINT8 ubID; + UINT16 ubLoop; + UINT16 ubID; if ( ubIndex > gubOutOfTurnPersons) { @@ -2122,10 +2122,10 @@ void DeleteFromIntList( UINT8 ubIndex, BOOLEAN fCommunicate) */ } -void AddToIntList( UINT8 ubID, BOOLEAN fGainControl, BOOLEAN fCommunicate ) +void AddToIntList( UINT16 ubID, BOOLEAN fGainControl, BOOLEAN fCommunicate ) { DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"AddToIntList"); - UINT8 ubLoop; + UINT16 ubLoop; // ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%d added to int list", ubID ); DebugMsg( TOPIC_JA2INTERRUPT, DBG_LEVEL_3, String("INTERRUPT: adding ID %d who %s", ubID, fGainControl ? "gains control" : "loses control" ) ); @@ -2186,11 +2186,11 @@ void AddToIntList( UINT8 ubID, BOOLEAN fGainControl, BOOLEAN fCommunicate ) void VerifyOutOfTurnOrderArray() { DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,"VerifyOutOfTurnOrderArray"); - UINT8 ubTeamHighest[ MAXTEAMS ] = { 0 }; + UINT16 ubTeamHighest[ MAXTEAMS ] = { 0 }; UINT8 ubTeamsInList; - UINT8 ubNextInArrayOnTeam, ubNextIndex; + UINT16 ubNextInArrayOnTeam, ubNextIndex; UINT8 ubTeam; - UINT8 ubLoop, ubLoop2; + UINT16 ubLoop, ubLoop2; BOOLEAN fFoundLoop = FALSE; for (ubLoop = 1; ubLoop <= gubOutOfTurnPersons; ubLoop++) @@ -2308,9 +2308,9 @@ void DoneAddingToIntList( SOLDIERTYPE * pSoldier, BOOLEAN fChange, UINT8 ubInter { StartInterrupt(); } - else + else { - UINT8 nubFirstInterrupter; + UINT16 nubFirstInterrupter; INT8 nbTeam; SOLDIERTYPE * npSoldier; @@ -2384,13 +2384,14 @@ void DoneAddingToIntList( SOLDIERTYPE * pSoldier, BOOLEAN fChange, UINT8 ubInter void ResolveInterruptsVs( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType) { DebugMsg (TOPIC_JA2INTERRUPT,DBG_LEVEL_3,String("ResolveInterruptsVs: Soldier ID = %d, APs = %d (interrupt type = %d)",pSoldier->ubID,pSoldier->bActionPoints, ubInterruptType)); - UINT8 ubTeam, ubOpp; - UINT8 ubIntCnt; - UINT8 ubIntList[MAXMERCS]; + UINT8 ubTeam; + UINT16 ubOpp; + UINT16 ubIntCnt; + UINT16 ubIntList[MAXMERCS]; UINT8 ubIntDiff[MAXMERCS]; UINT8 ubSmallestDiff; - UINT8 ubSlot, ubSmallestSlot; - UINT8 ubLoop; + UINT16 ubSlot, ubSmallestSlot; + UINT16 ubLoop; BOOLEAN fIntOccurs; SOLDIERTYPE * pOpponent; BOOLEAN fControlChanged = FALSE; @@ -2594,8 +2595,8 @@ BOOLEAN SaveTeamTurnsToTheSaveGameFile( HWFILE hFile ) TEAM_TURN_SAVE_STRUCT TeamTurnStruct; //Save the gubTurn Order Array - FileWrite( hFile, gubOutOfTurnOrder, sizeof( UINT8 ) * MAXMERCS, &uiNumBytesWritten ); - if( uiNumBytesWritten != sizeof( UINT8 ) * MAXMERCS ) + FileWrite( hFile, gubOutOfTurnOrder, sizeof( UINT16 ) * MAXMERCS, &uiNumBytesWritten ); + if( uiNumBytesWritten != sizeof( UINT16 ) * MAXMERCS ) { return( FALSE ); } @@ -2627,8 +2628,8 @@ BOOLEAN LoadTeamTurnsFromTheSavedGameFile( HWFILE hFile ) TEAM_TURN_SAVE_STRUCT TeamTurnStruct; //Load the gubTurn Order Array - FileRead( hFile, gubOutOfTurnOrder, sizeof( UINT8 ) * MAXMERCS, &uiNumBytesRead ); - if( uiNumBytesRead != sizeof( UINT8 ) * MAXMERCS ) + FileRead( hFile, gubOutOfTurnOrder, sizeof( UINT16 ) * MAXMERCS, &uiNumBytesRead ); + if( uiNumBytesRead != sizeof( UINT16 ) * MAXMERCS ) { return( FALSE ); } diff --git a/Tactical/TeamTurns.h b/Tactical/TeamTurns.h index 1d14dbcf..a53c0489 100644 --- a/Tactical/TeamTurns.h +++ b/Tactical/TeamTurns.h @@ -3,19 +3,19 @@ #include "Soldier Control.h" -extern UINT8 gubOutOfTurnPersons; -extern UINT8 gubOutOfTurnOrder[MAXMERCS] ; +extern UINT16 gubOutOfTurnPersons; +extern UINT16 gubOutOfTurnOrder[MAXMERCS] ; extern BOOLEAN gfHiddenInterrupt; extern BOOLEAN gfHiddenTurnbased; #define INTERRUPT_QUEUED (gubOutOfTurnPersons > 0) -extern BOOLEAN StandardInterruptConditionsMet( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, INT8 bOldOppList); -extern INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, UINT8 ubOpponentID, BOOLEAN fUseWatchSpots ); +extern BOOLEAN StandardInterruptConditionsMet( SOLDIERTYPE * pSoldier, UINT16 ubOpponentID, INT8 bOldOppList); +extern INT8 CalcInterruptDuelPts( SOLDIERTYPE * pSoldier, UINT16 ubOpponentID, BOOLEAN fUseWatchSpots ); extern void EndAITurn( void ); extern void DisplayHiddenInterrupt( SOLDIERTYPE * pSoldier ); extern BOOLEAN InterruptDuel( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pOpponent); -extern void AddToIntList( UINT8 ubID, BOOLEAN fGainControl, BOOLEAN fCommunicate ); +extern void AddToIntList( UINT16 ubID, BOOLEAN fGainControl, BOOLEAN fCommunicate ); extern void DoneAddingToIntList( SOLDIERTYPE * pSoldier, BOOLEAN fChange, UINT8 ubInterruptType); void FreezeInterfaceForEnemyTurn( void ); diff --git a/Tactical/Turn Based Input.cpp b/Tactical/Turn Based Input.cpp index 603f7b1e..3c963248 100644 --- a/Tactical/Turn Based Input.cpp +++ b/Tactical/Turn Based Input.cpp @@ -295,7 +295,7 @@ void ItemCreationCallBack( UINT8 ubResult ); void CheatCreateItem(); // silversurfer: added for merc portrait swapping in tactical void SwapMercPortraits ( SOLDIERTYPE *pSoldier, INT8 bDirection ); -extern INT8 GetTeamSlotFromPlayerID( UINT8 ubID ); +extern INT8 GetTeamSlotFromPlayerID( UINT16 ubID ); extern FACETYPE *gpCurrentTalkingFace; // Flugente: toggle display of enemy role indicators @@ -1263,7 +1263,7 @@ void GetTBMousePositionInput( UINT32 *puiNewEvent ) if ( MercPtrs[ gusUIFullTargetID ]->bTeam != ENEMY_TEAM ) { uiMoveTargetSoldierId = gusUIFullTargetID; - if ( IsValidTalkableNPC( (UINT8)gusUIFullTargetID, FALSE, FALSE, FALSE ) && !_KeyDown( SHIFT ) && !AM_AN_EPC( pSoldier ) && !ValidQuickExchangePosition( ) ) + if ( IsValidTalkableNPC( gusUIFullTargetID, FALSE, FALSE, FALSE ) && !_KeyDown( SHIFT ) && !AM_AN_EPC( pSoldier ) && !ValidQuickExchangePosition( ) ) { *puiNewEvent = T_CHANGE_TO_TALKING; return; @@ -1286,7 +1286,7 @@ void GetTBMousePositionInput( UINT32 *puiNewEvent ) if ( gfUIFullTargetFound ) //if ( gfUIFullTargetFound ) { - if ( IsValidTargetMerc( (UINT8)gusUIFullTargetID ) ) + if ( IsValidTargetMerc( gusUIFullTargetID ) ) { guiUITargetSoldierId = gusUIFullTargetID; @@ -2444,7 +2444,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) { if ( gusSelectedSoldier != NOBODY ) { //Select next merc - UINT8 bID; + UINT16 bID; bID = FindNextMercInTeamPanel( MercPtrs[ gusSelectedSoldier ], FALSE, FALSE ); @@ -4159,7 +4159,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) // swap sungoggles and nightgoggles / put on gas masks case 'N': SOLDIERTYPE *pTeamSoldier; - INT8 bLoop; + UINT16 bLoop; // emergency command: everybody in this sector puts on gasmasks if ( fAlt ) @@ -5443,7 +5443,7 @@ void SetScopeMode( INT32 usMapPos ) ManLooksForOtherTeams( MercPtrs[ gusSelectedSoldier ] ); } } - +#pragma optimize("", off) void ObliterateSector() { INT32 cnt; @@ -5455,8 +5455,8 @@ void ObliterateSector() #ifdef JA2BETAVERSION ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_TESTVERSION, L"Obliterating Sector!" ); #endif - - for ( pTSoldier = MercPtrs[ cnt ]; cnt < MAX_NUM_SOLDIERS; pTSoldier++, cnt++ ) + const INT32 end = MAX_NUM_SOLDIERS; + for ( pTSoldier = MercPtrs[ cnt ]; cnt < end; pTSoldier++, cnt++ ) { if ( pTSoldier->bActive && !pTSoldier->aiData.bNeutral && (pTSoldier->bSide != gbPlayerNum ) ) { @@ -5473,10 +5473,11 @@ void ObliterateSector() // CreateAnimationTile( &AniParams ); //PlayJA2Sample( EXPLOSION_1, RATE_11025, MIDVOLUME, 1, MIDDLEPAN ); - pTSoldier->EVENT_SoldierGotHit( 1, 400, 0, pTSoldier->ubDirection, 320, NOBODY , FIRE_WEAPON_NO_SPECIAL, pTSoldier->bAimShotLocation, 0, NOWHERE ); + pTSoldier->EVENT_SoldierGotHit( 1, 400, 0, pTSoldier->ubDirection, 320, NOBODY, FIRE_WEAPON_NO_SPECIAL, pTSoldier->bAimShotLocation, 0, NOWHERE ); } } } +#pragma optimize("", on) void RandomizeMercProfile() { @@ -5501,8 +5502,6 @@ void CreateNextCivType() // Get Grid Corrdinates of mouse if ( GetMouseMapPos( &usMapPos ) ) { - INT8 iNewIndex; - MercCreateStruct.ubProfile = NO_PROFILE; MercCreateStruct.sSectorX = gWorldSectorX; MercCreateStruct.sSectorY = gWorldSectorY; @@ -5521,7 +5520,8 @@ void CreateNextCivType() MercCreateStruct.sInsertionGridNo = usMapPos; RandomizeNewSoldierStats( &MercCreateStruct ); - if ( TacticalCreateSoldier( &MercCreateStruct, (UINT8 *)&iNewIndex ) ) + UINT16 iNewIndex; + if ( TacticalCreateSoldier( &MercCreateStruct, &iNewIndex ) ) { AddSoldierToSector( iNewIndex ); @@ -5557,8 +5557,6 @@ void CreateCow() // Get Grid Corrdinates of mouse if ( GetMouseMapPos( &usMapPos ) ) { - INT8 iNewIndex; - MercCreateStruct.ubProfile = NO_PROFILE; MercCreateStruct.sSectorX = gWorldSectorX; MercCreateStruct.sSectorY = gWorldSectorY; @@ -5569,7 +5567,8 @@ void CreateCow() MercCreateStruct.sInsertionGridNo = usMapPos; RandomizeNewSoldierStats( &MercCreateStruct ); - if ( TacticalCreateSoldier( &MercCreateStruct, (UINT8 *)&iNewIndex ) ) + UINT16 iNewIndex; + if ( TacticalCreateSoldier( &MercCreateStruct, &iNewIndex ) ) { AddSoldierToSector( iNewIndex ); @@ -5587,8 +5586,6 @@ void CreateBloodCat() // Get Grid Corrdinates of mouse if ( GetMouseMapPos( &usMapPos ) ) { - INT8 iNewIndex; - MercCreateStruct.ubProfile = NO_PROFILE; MercCreateStruct.sSectorX = gWorldSectorX; MercCreateStruct.sSectorY = gWorldSectorY; @@ -5599,7 +5596,8 @@ void CreateBloodCat() MercCreateStruct.sInsertionGridNo = usMapPos; RandomizeNewSoldierStats( &MercCreateStruct ); - if ( TacticalCreateSoldier( &MercCreateStruct, (UINT8 *)&iNewIndex ) ) + UINT16 iNewIndex; + if ( TacticalCreateSoldier( &MercCreateStruct, &iNewIndex ) ) { AddSoldierToSector( iNewIndex ); @@ -5617,8 +5615,6 @@ void CreatePlayerControlledCow() // Get Grid Corrdinates of mouse if ( GetMouseMapPos( &usMapPos ) ) { - INT8 iNewIndex; - MercCreateStruct.ubProfile = 12; MercCreateStruct.sSectorX = gWorldSectorX; MercCreateStruct.sSectorY = gWorldSectorY; @@ -5630,7 +5626,8 @@ void CreatePlayerControlledCow() RandomizeNewSoldierStats( &MercCreateStruct ); - if ( TacticalCreateSoldier( &MercCreateStruct, (UINT8 *)&iNewIndex ) ) + UINT16 iNewIndex; + if ( TacticalCreateSoldier( &MercCreateStruct, &iNewIndex ) ) { AddSoldierToSector( iNewIndex ); @@ -5694,7 +5691,7 @@ void CreatePlayerControlledMonster() if ( GetMouseMapPos( &usMapPos ) ) { SOLDIERCREATE_STRUCT MercCreateStruct; - INT8 iNewIndex; + UINT16 iNewIndex; MercCreateStruct.ubProfile = NO_PROFILE; MercCreateStruct.sSectorX = gWorldSectorX; @@ -5711,7 +5708,7 @@ void CreatePlayerControlledMonster() MercCreateStruct.sInsertionGridNo = usMapPos; RandomizeNewSoldierStats( &MercCreateStruct ); - if ( TacticalCreateSoldier( &MercCreateStruct, (UINT8 *)&iNewIndex ) ) + if ( TacticalCreateSoldier( &MercCreateStruct, &iNewIndex ) ) { AddSoldierToSector( iNewIndex ); } @@ -6309,7 +6306,7 @@ void ChangeCurrentSquad( INT32 iSquad ) void HandleSelectMercSlot( UINT8 ubPanelSlot, INT8 bCode ) { - UINT8 ubID; + UINT16 ubID; if ( GetPlayerIDFromInterfaceTeamSlot( ubPanelSlot, &ubID ) ) { @@ -6363,7 +6360,7 @@ void TestMeanWhile( INT32 iID ) void EscapeUILock( ) { //UNLOCK UI - UnSetUIBusy( (UINT8)gusSelectedSoldier ); + UnSetUIBusy( gusSelectedSoldier ); // Decrease global busy counter... gTacticalStatus.ubAttackBusyCount = 0; @@ -6455,7 +6452,7 @@ void HandleStanceChangeFromUIKeys( UINT8 ubAnimHeight ) { if( gusSelectedSoldier != NOBODY ) { - pSoldier = MercPtrs[ (UINT8)gusSelectedSoldier ]; + pSoldier = MercPtrs[ gusSelectedSoldier ]; // silversurfer: If we decide to stand up or press "s" again while we are standing we should reset movement to walk mode. // If we want to run we have to press "r" which is handled elsewhere. if ( ubAnimHeight == ANIM_STAND ) @@ -7321,8 +7318,8 @@ void SwapMercPortraits ( SOLDIERTYPE *pSoldier, INT8 bDirection ) if ( gpCurrentTalkingFace != NULL ) return; - UINT8 ubSourceMerc = (UINT8)gusSelectedSoldier; - UINT8 ubTargetMerc; + UINT16 ubSourceMerc = gusSelectedSoldier; + UINT16 ubTargetMerc; INT32 iSourceFace; INT32 iTargetFace; UINT8 ubGroupID = pSoldier->ubGroupID; @@ -7553,7 +7550,7 @@ void HandleAltMouseTBX2Button(UINT32 *puiNewEvent) // sevenfm: these functions keep original mouse code functionality void HandleMouseTBWheel( void ) { - UINT8 bID; + UINT16 bID; if ( !( gTacticalStatus.uiFlags & ENGAGED_IN_CONV ) && ( ( gsCurInterfacePanel != SM_PANEL ) || ( ButtonList[ iSMPanelButtons[ NEXTMERC_BUTTON ] ]->uiFlags & BUTTON_ENABLED ) ) ) @@ -7787,41 +7784,41 @@ void HandleTBJumpThroughWindow( void ){ } void HandleTBToggleStealthAll( void ) { - // Toggle squad's stealth mode..... - // For each guy on squad... - SOLDIERTYPE *pTeamSoldier; - INT8 bLoop; - BOOLEAN fStealthOn = FALSE; + // Toggle squad's stealth mode..... + // For each guy on squad... + SOLDIERTYPE *pTeamSoldier; + UINT16 bLoop; + BOOLEAN fStealthOn = FALSE; - // Check if at least one guy is on stealth.... - for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++) - { - if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) ) - { - if ( pTeamSoldier->bStealthMode ) - fStealthOn = TRUE; - } - } + // Check if at least one guy is on stealth.... + for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++) + { + if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) ) + { + if ( pTeamSoldier->bStealthMode ) + fStealthOn = TRUE; + } + } - fStealthOn = !fStealthOn; + fStealthOn = !fStealthOn; - for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++) - { - if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) ) - { - if ( gpSMCurrentMerc != NULL && bLoop == gpSMCurrentMerc->ubID ) - gfUIStanceDifferent = TRUE; - pTeamSoldier->bStealthMode = fStealthOn; - } - } + for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++) + { + if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) ) + { + if ( gpSMCurrentMerc != NULL && bLoop == gpSMCurrentMerc->ubID ) + gfUIStanceDifferent = TRUE; + pTeamSoldier->bStealthMode = fStealthOn; + } + } - fInterfacePanelDirty = DIRTYLEVEL2; + fInterfacePanelDirty = DIRTYLEVEL2; - // OK, display message - if ( fStealthOn ) - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_SQUAD_ON_STEALTHMODE ] ); - else - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_SQUAD_OFF_STEALTHMODE ] ); + // OK, display message + if ( fStealthOn ) + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_SQUAD_ON_STEALTHMODE ] ); + else + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_SQUAD_OFF_STEALTHMODE ] ); } void HandleTBToggleFireMode( void ) { @@ -7956,7 +7953,7 @@ void HandleTBSwapSidearm( void ) void HandleTBSwapGoogles( void ) { SOLDIERTYPE *pTeamSoldier; - INT8 bLoop; + UINT16 bLoop; for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++) { @@ -8056,7 +8053,7 @@ void HandleTBReloadAll( void ) if (! ( gTacticalStatus.fEnemyInSector ) ) { SOLDIERTYPE *pTeamSoldier; - UINT8 bLoop; + UINT16 bLoop; UINT16 bullets; OBJECTTYPE *pGun, *pAmmo, *pAmmoMags; @@ -8259,7 +8256,7 @@ void HandleTBReloadAll( void ) else { SOLDIERTYPE *pTeamSoldier; - UINT8 bLoop; + UINT16 bLoop; OBJECTTYPE *pGun, *pAmmo; for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++bLoop, pTeamSoldier++) @@ -8359,7 +8356,7 @@ void HandleTBGotoLowerStance( void ) } void HandleTBLocateNextMerc( void ) { - UINT8 bID; + UINT16 bID; if ( gusSelectedSoldier != NOBODY ) { //Select next merc bID = FindNextMercInTeamPanel( MercPtrs[ gusSelectedSoldier ], FALSE, FALSE ); @@ -8370,7 +8367,7 @@ void HandleTBLocateNextMerc( void ) } void HandleTBLocatePrevMerc( void ) { - UINT8 bID; + UINT16 bID; if ( gusSelectedSoldier != NOBODY ) { bID = FindPrevActiveAndAliveMerc( MercPtrs[ gusSelectedSoldier ], TRUE, TRUE ); @@ -8419,7 +8416,7 @@ void HandleTBDropBackpacks( void ) { //SOLDIERTYPE *pSoldier = MercPtrs[ gusSelectedSoldier ]; SOLDIERTYPE *pTeamSoldier; - UINT8 ubLoop; + UINT16 ubLoop; INT16 sAPCost = APBPConstants[AP_BACK_PACK]; INT32 iBPCost = APBPConstants[BP_BACK_PACK]; @@ -8457,7 +8454,7 @@ void HandleTBPickUpBackpacks( void ) { //SOLDIERTYPE *pSoldier = MercPtrs[ gusSelectedSoldier ]; SOLDIERTYPE *pTeamSoldier; - UINT8 ubLoop; + UINT16 ubLoop; INT16 sAPCost = APBPConstants[AP_BACK_PACK]; INT32 iBPCost = APBPConstants[BP_BACK_PACK]; @@ -8504,7 +8501,7 @@ void HandleTBSoldierRun( void ) && pSoldier->usUIMovementMode != WALKING_DUAL_RDY && pSoldier->usUIMovementMode != WALKING_ALTERNATIVE_RDY ) { - UIHandleSoldierStanceChange( (UINT8)pSoldier->ubID, ANIM_STAND ); + UIHandleSoldierStanceChange( pSoldier->ubID, ANIM_STAND ); pSoldier->flags.fUIMovementFast = 1; } else @@ -9674,3 +9671,45 @@ BOOLEAN CheckAutoBandage(void) return FALSE; } + +void HandleTBPickUpBackpacks(BOOLEAN fAll) +{ + if (UsingNewInventorySystem() && (fAll || gusSelectedSoldier != NOBODY)) + { + SOLDIERTYPE* pSoldier = NULL; + SOLDIERTYPE* pTeamSoldier; + UINT16 ubLoop; + + if (gusSelectedSoldier != NOBODY) + { + pSoldier = MercPtrs[gusSelectedSoldier]; + } + + INT16 sAPCost = APBPConstants[AP_BACK_PACK]; + INT32 iBPCost = APBPConstants[BP_BACK_PACK]; + + for (ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ubLoop++) + { + pTeamSoldier = MercPtrs[ubLoop]; + + if (pTeamSoldier && + OK_CONTROLLABLE_MERC(pTeamSoldier) && + OK_INTERRUPT_MERC(pTeamSoldier) && + !AM_A_ROBOT(pTeamSoldier) && + //!pTeamSoldier->IsBoxer() && + EnoughPoints(pTeamSoldier, sAPCost, iBPCost, FALSE) && + (fAll || pTeamSoldier->bAssignment == pSoldier->bAssignment) && + !pTeamSoldier->inv[BPACKPOCKPOS].exists() && + pTeamSoldier->flags.DropPackFlag) + { + if (ChangeDropPackStatus(pTeamSoldier, FALSE)) + { + ScreenMsg(FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[11], pTeamSoldier->GetName()); + } + } + } + + fCharacterInfoPanelDirty = TRUE; + fInterfacePanelDirty = DIRTYLEVEL2; + } +} diff --git a/Tactical/UI Cursors.cpp b/Tactical/UI Cursors.cpp index 3e035934..d6f1dd6b 100644 --- a/Tactical/UI Cursors.cpp +++ b/Tactical/UI Cursors.cpp @@ -138,7 +138,7 @@ BOOLEAN GetMouseRecalcAndShowAPFlags( UINT32 *puiCursorFlags, BOOLEAN *pfShowAPs // FUNCTIONS FOR CURSOR DETERMINATION! -UINT8 GetProperItemCursor( UINT8 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos, BOOLEAN fActivated ) +UINT8 GetProperItemCursor( UINT16 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos, BOOLEAN fActivated ) { SOLDIERTYPE *pSoldier; UINT32 uiCursorFlags; @@ -222,7 +222,7 @@ UINT8 GetProperItemCursor( UINT8 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos if ( fRecalc && gfUIFullTargetFound ) { // ATE: Check for ammo - if ( IsValidTargetMerc( (UINT8)gusUIFullTargetID ) && EnoughAmmo( pSoldier, FALSE, HANDPOS ) && + if ( IsValidTargetMerc( gusUIFullTargetID ) && EnoughAmmo( pSoldier, FALSE, HANDPOS ) && (!pSoldier->IsValidSecondHandShotForReloadingPurposes( ) || EnoughAmmo( pSoldier, FALSE, SECONDHANDPOS) ) ) { // IF it's an ememy, goto confirm action mode @@ -393,7 +393,7 @@ UINT8 HandleActivatedTargetCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos, BOOLEA // Determine where we are shooting / aiming //if ( fRecalc ) { - DetermineCursorBodyLocation( (UINT8)gusSelectedSoldier, TRUE, TRUE ); + DetermineCursorBodyLocation( gusSelectedSoldier, TRUE, TRUE ); } UINT8 ubMaxBullets = 1; INT8 bMaxAim; @@ -1238,7 +1238,7 @@ UINT8 HandleNonActivatedTargetCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos , BO if (( ( gTacticalStatus.uiFlags & REALTIME ) || !( gTacticalStatus.uiFlags & INCOMBAT ) ) ) { //DetermineCursorBodyLocation( (UINT8)gusSelectedSoldier, FALSE, fRecalc ); - DetermineCursorBodyLocation( (UINT8)gusSelectedSoldier, fShowAPs, fRecalc ); + DetermineCursorBodyLocation( gusSelectedSoldier, fShowAPs, fRecalc ); if ( pSoldier->flags.fReloading || pSoldier->flags.fPauseAim ) { @@ -1273,7 +1273,7 @@ UINT8 HandleNonActivatedTargetCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos , BO if ( gTacticalStatus.uiFlags & TURNBASED && (gTacticalStatus.uiFlags & INCOMBAT ) ) { - DetermineCursorBodyLocation( (UINT8)gusSelectedSoldier, fShowAPs, fRecalc ); + DetermineCursorBodyLocation( gusSelectedSoldier, fShowAPs, fRecalc ); gsCurrentActionPoints = CalcTotalAPsToAttack( pSoldier, usMapPos, TRUE, (INT8)(pSoldier->aiData.bShownAimTime ) ); @@ -1387,7 +1387,7 @@ UINT8 HandleNonActivatedTargetCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos , BO } -void DetermineCursorBodyLocation( UINT8 ubSoldierID, BOOLEAN fDisplay, BOOLEAN fRecalc ) +void DetermineCursorBodyLocation( UINT16 ubSoldierID, BOOLEAN fDisplay, BOOLEAN fRecalc ) { INT32 usMapPos; SOLDIERTYPE *pTargetSoldier = NULL, *pSoldier; @@ -2230,7 +2230,7 @@ UINT8 HandleBloodbagCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fActiv if ( HasItemFlag( ( &( pSoldier->inv[HANDPOS] ) )->usItem, EMPTY_BLOOD_BAG ) ) { // is there a person here? - UINT8 usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel ); + UINT16 usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel ); if ( usSoldierIndex != NOBODY ) { if ( usSoldierIndex != pSoldier->ubID && MercPtrs[usSoldierIndex]->IsValidBloodDonor() ) @@ -2265,7 +2265,7 @@ UINT8 HandleSplintCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fActivat } // is there a person here? - UINT8 usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel ); + UINT16 usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel ); if ( usSoldierIndex != NOBODY ) { if ( usSoldierIndex != pSoldier->ubID && MercPtrs[usSoldierIndex]->CanReceiveSplint() ) @@ -2351,7 +2351,7 @@ UINT8 HandleHandcuffCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 uiCurso if ( HasItemFlag( (&(pSoldier->inv[HANDPOS]))->usItem, HANDCUFFS ) ) { // is there a person here? - UINT8 usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel ); + UINT16 usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel ); if (usSoldierIndex != NOBODY && MercPtrs[usSoldierIndex] && MercPtrs[usSoldierIndex]->bVisible >= 0 && MercPtrs[usSoldierIndex]->CanBeCaptured()) { return( HANDCUFF_GREY_UICURSOR ); @@ -2373,7 +2373,7 @@ UINT8 HandleApplyItemCursor(SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 uiCurso if (ItemCanBeAppliedToOthers((&(pSoldier->inv[HANDPOS]))->usItem)) { // is there a person here? - UINT8 ubPerson = WhoIsThere2(sGridNo, pSoldier->pathing.bLevel); + UINT16 ubPerson = WhoIsThere2(sGridNo, pSoldier->pathing.bLevel); if (ubPerson != NOBODY && MercPtrs[ubPerson] && MercPtrs[ubPerson]->bVisible >= 0) { return(APPLYITEM_GREY_UICURSOR); @@ -2989,7 +2989,7 @@ UINT8 GetActionModeCursor( SOLDIERTYPE *pSoldier ) if ( GetMouseMapPos( &usMapPos ) ) { // is there a person here? - UINT8 ubPerson = WhoIsThere2(usMapPos, pSoldier->pathing.bLevel); + UINT16 ubPerson = WhoIsThere2(usMapPos, pSoldier->pathing.bLevel); if (ubPerson != NOBODY && MercPtrs[ubPerson] && MercPtrs[ubPerson]->bVisible >= 0) { ubCursor = APPLYITEMCURS; diff --git a/Tactical/UI Cursors.h b/Tactical/UI Cursors.h index c74a1804..b20e97f3 100644 --- a/Tactical/UI Cursors.h +++ b/Tactical/UI Cursors.h @@ -9,8 +9,8 @@ #define REFINE_KNIFE_2 (gGameExternalOptions.fEnhancedCloseCombatSystem ? gSkillTraitValues.ubModifierForAPsAddedOnAimedBladedAttackes*2 : 6) -UINT8 GetProperItemCursor( UINT8 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos, BOOLEAN fActivated ); -void DetermineCursorBodyLocation( UINT8 ubSoldierID, BOOLEAN fDisplay, BOOLEAN fRecalc ); +UINT8 GetProperItemCursor( UINT16 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos, BOOLEAN fActivated ); +void DetermineCursorBodyLocation( UINT16 ubSoldierID, BOOLEAN fDisplay, BOOLEAN fRecalc ); void HandleLeftClickCursor( SOLDIERTYPE *pSoldier ); void HandleRightClickAdjustCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos ); diff --git a/Tactical/Vehicles.cpp b/Tactical/Vehicles.cpp index d16281c3..c3542022 100644 --- a/Tactical/Vehicles.cpp +++ b/Tactical/Vehicles.cpp @@ -53,7 +53,7 @@ VEHICLETYPE *pVehicleList = NULL; // number of vehicle slots on the list UINT8 ubNumberOfVehicles = 0; -// the sqaud mvt groups +// the squad mvt groups extern INT8 SquadMovementGroups[ ]; @@ -180,7 +180,7 @@ INT16 sVehicleInternalOrigArmorValues[ NUMBER_OF_TYPES_OF_VEHICLES ][ NUMBER_OF_ // set the driver of the vehicle -void SetDriver( INT32 iID, UINT8 ubID ); +void SetDriver( INT32 iID, UINT16 ubID ); //void RemoveSoldierFromVehicleBetweenSectors( pSoldier, iId ); @@ -669,7 +669,7 @@ BOOLEAN AddSoldierToVehicle( SOLDIERTYPE *pSoldier, INT32 iId, UINT8 ubSeatIndex // anv: are we taking driver's seat if( gNewVehicle[ pVehicleList[ iId ].ubVehicleType ].VehicleSeats[ubFinalSeatIndex].fDriver ) { - SetDriver( iId , pSoldier->ubID ); + SetDriver( iId, pSoldier->ubID ); } else { @@ -1577,7 +1577,7 @@ SOLDIERTYPE *GetDriver( INT32 iID ) } -void SetDriver( INT32 iID, UINT8 ubID ) +void SetDriver( INT32 iID, UINT16 ubID ) { // anv: first make sure previous driver won't be driver anymore if( pVehicleList[ iID ].ubDriver != NOBODY && MercPtrs[ pVehicleList[ iID ].ubDriver ]->iVehicleId == iID ) @@ -1986,7 +1986,7 @@ void AddPassangersToTeamPanel( INT32 iId ) } -void VehicleTakeDamage( UINT8 ubID, UINT8 ubReason, INT16 sDamage, INT32 sGridNo, UINT8 ubAttackerID ) +void VehicleTakeDamage( UINT8 ubID, UINT8 ubReason, INT16 sDamage, INT32 sGridNo, UINT16 ubAttackerID ) { if ( ubReason != TAKE_DAMAGE_GAS_FIRE && ubReason != TAKE_DAMAGE_GAS_NOTFIRE ) { @@ -2015,7 +2015,7 @@ void VehicleTakeDamage( UINT8 ubID, UINT8 ubReason, INT16 sDamage, INT32 sGridNo } -void HandleCriticalHitForVehicleInLocation( UINT8 ubID, INT16 sDmg, INT32 sGridNo, UINT8 ubAttackerID ) +void HandleCriticalHitForVehicleInLocation( UINT8 ubID, INT16 sDmg, INT32 sGridNo, UINT16 ubAttackerID ) { // 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 @@ -2317,7 +2317,7 @@ BOOLEAN SaveVehicleInformationToSaveGameFile( HWFILE hFile ) //loop through the passengers for( ubPassengerCnt=0; ubPassengerCnt<10; ubPassengerCnt++) { - TempVehicle.pPassengers[ ubPassengerCnt ] = ( SOLDIERTYPE * )NO_PROFILE; + TempVehicle.pPassengers[ ubPassengerCnt ] = ( SOLDIERTYPE * )NO_PROFILE; //if there is a passenger here if( pVehicleList[cnt].pPassengers[ ubPassengerCnt ] ) @@ -2428,28 +2428,28 @@ BOOLEAN LoadVehicleInformationFromSavedGameFile( HWFILE hFile, UINT32 uiSavedGam //loop through all the passengers for(ubPassengerCnt=0; ubPassengerCnt<10; ubPassengerCnt++) { - if ( uiSavedGameVersion < 86 ) - { - if( pVehicleList[cnt].pPassengers[ubPassengerCnt] != 0 ) + if ( uiSavedGameVersion < 86 ) { - // ! The id of the soldier was saved in the passenger pointer. The passenger pointer is converted back - // ! to a UINT8 so we can get the REAL pointer to the soldier. - pVehicleList[cnt].pPassengers[ubPassengerCnt] = FindSoldierByProfileID( (UINT8)(pVehicleList[cnt].pPassengers[ ubPassengerCnt ]), FALSE ); + if( pVehicleList[cnt].pPassengers[ubPassengerCnt] != 0 ) + { + // ! The id of the soldier was saved in the passenger pointer. The passenger pointer is converted back + // ! to a UINT8 so we can get the REAL pointer to the soldier. + pVehicleList[cnt].pPassengers[ubPassengerCnt] = FindSoldierByProfileID( (UINT8)(pVehicleList[cnt].pPassengers[ ubPassengerCnt ]), FALSE ); } - } - else - { - if( pVehicleList[cnt].pPassengers[ubPassengerCnt] != ( SOLDIERTYPE * )NO_PROFILE ) + } + else { - // ! The id of the soldier was saved in the passenger pointer. The passenger pointer is converted back - // ! to a UINT8 so we can get the REAL pointer to the soldier. - pVehicleList[cnt].pPassengers[ubPassengerCnt] = FindSoldierByProfileID( (UINT8)(pVehicleList[cnt].pPassengers[ ubPassengerCnt ]), FALSE ); + if( pVehicleList[cnt].pPassengers[ubPassengerCnt] != ( SOLDIERTYPE * )NO_PROFILE ) + { + // ! The id of the soldier was saved in the passenger pointer. The passenger pointer is converted back + // ! to a UINT8 so we can get the REAL pointer to the soldier. + pVehicleList[cnt].pPassengers[ubPassengerCnt] = FindSoldierByProfileID( (UINT8)(pVehicleList[cnt].pPassengers[ ubPassengerCnt ]), FALSE ); } - else - { - pVehicleList[cnt].pPassengers[ubPassengerCnt] = NULL; - } - } + else + { + pVehicleList[cnt].pPassengers[ubPassengerCnt] = NULL; + } + } } diff --git a/Tactical/Vehicles.h b/Tactical/Vehicles.h index 571fa98e..ceef6143 100644 --- a/Tactical/Vehicles.h +++ b/Tactical/Vehicles.h @@ -289,7 +289,7 @@ typedef struct BOOLEAN fBetweenSectors; // between sectors? INT32 sGridNo; // location in tactical SOLDIERTYPE *pPassengers[ MAXPASSENGERS ]; - UINT8 ubDriver; + UINT16 ubDriver; INT16 sInternalHitLocations[ NUMBER_OF_EXTERNAL_HIT_LOCATIONS_ON_VEHICLE ]; INT16 sArmourType; 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 VehicleTakeDamage( UINT8 ubID, UINT8 ubReason, INT16 sDamage, INT32 sGridNo , UINT8 ubAttackerID ); +void VehicleTakeDamage( UINT8 ubID, UINT8 ubReason, INT16 sDamage, INT32 sGridNo , UINT16 ubAttackerID ); // the soldiertype containing this tactical incarnation of this vehicle SOLDIERTYPE * GetSoldierStructureForVehicle( INT32 iId ); @@ -415,7 +415,7 @@ void AdjustVehicleAPs( SOLDIERTYPE *pSoldier, INT16 *pubPoints ); //INT16 GetOrigInternalArmorValueForVehicleInLocation( UINT8 ubID, UINT8 ubLocation ); // handle crit hit to vehicle in this location -void HandleCriticalHitForVehicleInLocation( UINT8 ubID, INT16 sDmg, INT32 sGridNo, UINT8 ubAttackerID ); +void HandleCriticalHitForVehicleInLocation( UINT8 ubID, INT16 sDmg, INT32 sGridNo, UINT16 ubAttackerID ); // ste up armor values for this vehicle void SetUpArmorForVehicle( UINT8 ubID ); diff --git a/Tactical/Weapons.cpp b/Tactical/Weapons.cpp index 59dac718..06ced271 100644 --- a/Tactical/Weapons.cpp +++ b/Tactical/Weapons.cpp @@ -2443,7 +2443,7 @@ BOOLEAN UseGunNCTH( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) //CHAR8 zBurstString[512]; UINT8 ubDirection; INT32 sNewGridNo; - UINT8 ubMerc; + UINT16 ubMerc; BOOLEAN fGonnaHit = FALSE; FLOAT dExpGain = 0; UINT32 uiDepreciateTest; @@ -3227,7 +3227,7 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ) // CHAR8 zBurstString[512]; UINT8 ubDirection; INT32 sNewGridNo; - UINT8 ubMerc; + UINT16 ubMerc; BOOLEAN fGonnaHit = FALSE; UINT16 usExpGain = 0; UINT32 uiDepreciateTest; @@ -4933,7 +4933,7 @@ BOOLEAN UseThrown( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) { UINT32 uiHitChance; INT8 bLoop; - UINT8 ubTargetID; + UINT16 ubTargetID; SOLDIERTYPE * pTargetSoldier; //INT16 sAPCost = 0;//dnl ch72 180913 @@ -5277,7 +5277,7 @@ BOOLEAN UseLauncher( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) { if (pSoldier->bTeam == 0 || (pSoldier->bTeam == 1 && is_server)) { - send_grenade( pSoldier->pTempObject , pSoldier->pThrowParams->dLifeSpan, pSoldier->pThrowParams->dX, pSoldier->pThrowParams->dY, pSoldier->pThrowParams->dZ, pSoldier->pThrowParams->dForceX, pSoldier->pThrowParams->dForceY, pSoldier->pThrowParams->dForceZ, sTargetGridNo, pSoldier->ubID, pSoldier->pThrowParams->ubActionCode, pSoldier->pThrowParams->uiActionData, iID , false); + send_grenade( pSoldier->pTempObject, pSoldier->pThrowParams->dLifeSpan, pSoldier->pThrowParams->dX, pSoldier->pThrowParams->dY, pSoldier->pThrowParams->dZ, pSoldier->pThrowParams->dForceX, pSoldier->pThrowParams->dForceY, pSoldier->pThrowParams->dForceZ, sTargetGridNo, pSoldier->ubID, pSoldier->pThrowParams->ubActionCode, pSoldier->pThrowParams->uiActionData, iID, false); } } @@ -5304,7 +5304,7 @@ BOOLEAN UseLauncher( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) return( TRUE ); } -BOOLEAN DoSpecialEffectAmmoMiss( UINT8 ubAttackerID, UINT16 usWeaponIndex, INT32 sGridNo, INT16 sXPos, INT16 sYPos, INT16 sZPos, BOOLEAN fSoundOnly, BOOLEAN fFreeupAttacker, INT32 iBullet ) +BOOLEAN DoSpecialEffectAmmoMiss( UINT16 ubAttackerID, UINT16 usWeaponIndex, INT32 sGridNo, INT16 sXPos, INT16 sYPos, INT16 sZPos, BOOLEAN fSoundOnly, BOOLEAN fFreeupAttacker, INT32 iBullet ) { ANITILE_PARAMS AniParams; UINT8 ubAmmoType = 0; @@ -5467,7 +5467,7 @@ BOOLEAN DoSpecialEffectAmmoMiss( UINT8 ubAttackerID, UINT16 usWeaponIndex, INT32 } -void WeaponHit( UINT16 usSoldierID, UINT16 usWeaponIndex, INT16 sDamage, INT16 sBreathLoss, UINT16 usDirection, INT16 sXPos, INT16 sYPos, INT16 sZPos, INT16 sRange , UINT8 ubAttackerID, BOOLEAN fHit, UINT8 ubSpecial, UINT8 ubHitLocation ) +void WeaponHit( UINT16 usSoldierID, UINT16 usWeaponIndex, INT16 sDamage, INT16 sBreathLoss, UINT16 usDirection, INT16 sXPos, INT16 sYPos, INT16 sZPos, INT16 sRange, UINT16 ubAttackerID, BOOLEAN fHit, UINT8 ubSpecial, UINT8 ubHitLocation ) { SOLDIERTYPE* pTargetSoldier = NULL; SOLDIERTYPE* pSoldier = NULL; @@ -5543,7 +5543,7 @@ void WeaponHit( UINT16 usSoldierID, UINT16 usWeaponIndex, INT16 sDamage, INT16 s else if ( AmmoTypes[ubAmmoType].explosionSize > 1) { // re-routed the Highexplosive value to define exposion type - IgniteExplosion( ubAttackerID, sXPos, sYPos, 0, GETWORLDINDEXFROMWORLDCOORDS( sYPos, sXPos ), AmmoTypes[ubAmmoType].highExplosive , pTargetSoldier->pathing.bLevel ); + IgniteExplosion( ubAttackerID, sXPos, sYPos, 0, GETWORLDINDEXFROMWORLDCOORDS( sYPos, sXPos ), AmmoTypes[ubAmmoType].highExplosive, pTargetSoldier->pathing.bLevel ); // pSoldier->inv[pSoldier->ubAttackingHand ][0]->data.gun.usGunAmmoItem = NONE; } } @@ -5578,7 +5578,7 @@ void WeaponHit( UINT16 usSoldierID, UINT16 usWeaponIndex, INT16 sDamage, INT16 s } -void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, UINT8 ubAttackerID, UINT16 sXPos, INT16 sYPos, INT16 sZPos, UINT16 usStructureID, INT32 iImpact, BOOLEAN fStopped ) +void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, UINT16 ubAttackerID, UINT16 sXPos, INT16 sYPos, INT16 sZPos, UINT16 usStructureID, INT32 iImpact, BOOLEAN fStopped ) { BOOLEAN fDoMissForGun = FALSE; ANITILE *pNode; @@ -6237,7 +6237,7 @@ BOOLEAN InRange( SOLDIERTYPE *pSoldier, INT32 sGridNo ) return( FALSE ); } - +#pragma optimize("", off) UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, UINT8 ubAimPos ) { @@ -6258,7 +6258,7 @@ UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi UINT16 usInHand; OBJECTTYPE * pInHand; INT16 sDistVis, sDistVisNoScope; - UINT8 ubTargetID; + UINT16 ubTargetID; bool fCantSeeTarget = false; FLOAT scopeRangeMod = 0.0f; @@ -6589,6 +6589,7 @@ UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi return ((INT32)fFinalChance); } +#pragma optimize("", on) UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, UINT8 ubAimPos ) @@ -6616,7 +6617,8 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, 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; - UINT8 ubTargetID, bLightLevel, ubCoweringDivisor, ubAutoPenaltySinceLastTracer=0; + UINT16 ubTargetID; + UINT8 bLightLevel, ubCoweringDivisor, ubAutoPenaltySinceLastTracer = 0; FLOAT maxBonus, aimTimeBonus, scopeRangeMod = 0.0f, iAimBonus; bool fCantSeeTarget = false, fCoverObscured = false; @@ -9036,7 +9038,7 @@ INT32 HTHImpact( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pTarget, INT32 iHitBy, BO return( iImpact ); } -void ShotMiss( UINT8 ubAttackerID, INT32 iBullet ) +void ShotMiss( UINT16 ubAttackerID, INT32 iBullet ) { BOOLEAN fDoMissForGun = FALSE; SOLDIERTYPE* pAttacker = NULL; @@ -12118,7 +12120,7 @@ FLOAT CalcNewChanceToHitAimTraitBonus(SOLDIERTYPE *pSoldier, FLOAT fAimCap, FLOA extern BOOLEAN IsRoofPresentAtGridNo( INT32 sGridNo ); // Flugente: fire item from A to B (intended for mortarshells and launchable grenades) -BOOLEAN ArtilleryStrike( UINT16 usItem, UINT8 ubOwnerID, UINT32 usStartingGridNo, UINT32 usTargetMapPos ) +BOOLEAN ArtilleryStrike( UINT16 usItem, UINT16 ubOwnerID, UINT32 usStartingGridNo, UINT32 usTargetMapPos ) { FLOAT dForce, dDegrees; INT16 sDestX, sDestY, sSrcX, sSrcY; diff --git a/Tactical/Weapons.h b/Tactical/Weapons.h index 45c9f266..657b34cf 100644 --- a/Tactical/Weapons.h +++ b/Tactical/Weapons.h @@ -454,12 +454,12 @@ extern INT8 ArmourVersusExplosivesPercent( SOLDIERTYPE * pSoldier ); // Flugente: fire resistance INT16 ArmourVersusFirePercent( SOLDIERTYPE * pSoldier ); extern BOOLEAN FireWeapon( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo ); -extern void WeaponHit( UINT16 usSoldierID, UINT16 usWeaponIndex, INT16 sDamage, INT16 sBreathLoss, UINT16 usDirection, INT16 sXPos, INT16 sYPos, INT16 sZPos, INT16 sRange , UINT8 ubAttackerID, BOOLEAN fHit, UINT8 ubSpecial, UINT8 ubHitLocation ); -extern void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, UINT8 ubAttackerID, UINT16 sXPos, INT16 sYPos, INT16 sZPos, UINT16 usStructureID, INT32 iImpact, BOOLEAN fStopped ); +extern void WeaponHit( UINT16 usSoldierID, UINT16 usWeaponIndex, INT16 sDamage, INT16 sBreathLoss, UINT16 usDirection, INT16 sXPos, INT16 sYPos, INT16 sZPos, INT16 sRange, UINT16 ubAttackerID, BOOLEAN fHit, UINT8 ubSpecial, UINT8 ubHitLocation ); +extern void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, UINT16 ubAttackerID, UINT16 sXPos, INT16 sYPos, INT16 sZPos, UINT16 usStructureID, INT32 iImpact, BOOLEAN fStopped ); 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( UINT8 ubAttackerID, INT32 iBullet ); +extern void ShotMiss( UINT16 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 @@ -536,7 +536,7 @@ FLOAT GetOverheatJamThreshold( OBJECTTYPE *pObj ); FLOAT GetOverheatDamageThresholdModifier( OBJECTTYPE *pObj ); FLOAT GetOverheatDamageThreshold( OBJECTTYPE *pObj ); -BOOLEAN ArtilleryStrike( UINT16 usItem, UINT8 ubOwnerID, UINT32 usStartingGridNo, UINT32 usTargetMapPos ); +BOOLEAN ArtilleryStrike( UINT16 usItem, UINT16 ubOwnerID, UINT32 usStartingGridNo, UINT32 usTargetMapPos ); // Flugente: functions for using several barrels at once UINT8 GetNextBarrelMode( UINT16 usItem, UINT8 aBarrelMode ); diff --git a/Tactical/World Items.cpp b/Tactical/World Items.cpp index 8feac68c..0b0e1a50 100644 --- a/Tactical/World Items.cpp +++ b/Tactical/World Items.cpp @@ -609,7 +609,7 @@ void ResizeWorldItems(void)//dnl ch75 271013 #endif } -INT32 AddItemToWorld( INT32 sGridNo, OBJECTTYPE *pObject, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 bVisible, INT8 soldierID ) +INT32 AddItemToWorld( INT32 sGridNo, OBJECTTYPE *pObject, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 bVisible, INT16 soldierID ) { UINT32 iItemIndex; INT32 iReturn; diff --git a/Tactical/World Items.h b/Tactical/World Items.h index 524b67b8..04a07697 100644 --- a/Tactical/World Items.h +++ b/Tactical/World Items.h @@ -72,7 +72,7 @@ public: //Because this value is zero in the saved maps, we can't change it to 100, hence the reversal method. //This check is only performed the first time a map is loaded. Later, it is entirely skipped. UINT8 ubNonExistChance; - INT8 soldierID; + INT16 soldierID; char endOfPod; OBJECTTYPE object; }; @@ -100,13 +100,29 @@ public: OBJECTTYPE object; }; // _OLD_WORLDITEM +class _WORLDITEM_INT8_ID +{ +public: + BOOLEAN fExists; + INT32 sGridNo; + UINT8 ubLevel; + UINT16 usFlags; + INT8 bRenderZHeightAboveLevel; + INT8 bVisible; + UINT8 ubNonExistChance; + INT8 soldierID; + char endOfPod; + OBJECTTYPE object; +}; + #define SIZEOF_WORLDITEM_POD (offsetof(WORLDITEM, endOfPod)) #define _OLD_SIZEOF_WORLDITEM_POD (offsetof(_OLD_WORLDITEM, endOfPod)) +#define _SIZEOF_WORLDITEM_INT8_ID_POD (offsetof(_WORLDITEM_INT8_ID, endOfPod)) extern std::vector gWorldItems;//dnl ch75 261013 extern UINT32 guiNumWorldItems; -INT32 AddItemToWorld( INT32 sGridNo, OBJECTTYPE *pObject, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 bVisible, INT8 soldierID ); +INT32 AddItemToWorld( INT32 sGridNo, OBJECTTYPE *pObject, UINT8 ubLevel, UINT16 usFlags, INT8 bRenderZHeightAboveLevel, INT8 bVisible, INT16 soldierID ); void RemoveItemFromWorld( INT32 iItemIndex ); INT32 FindWorldItem( UINT16 usItem ); diff --git a/Tactical/bullets.cpp b/Tactical/bullets.cpp index e9b8fda9..d04ee742 100644 --- a/Tactical/bullets.cpp +++ b/Tactical/bullets.cpp @@ -76,7 +76,7 @@ void RecountBullets(void) } -INT32 CreateBullet( UINT8 ubFirerID, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem ) +INT32 CreateBullet( UINT16 ubFirerID, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem ) { INT32 iBulletIndex; BULLET *pBullet; diff --git a/Tactical/faces.h b/Tactical/faces.h index 3e374974..4ecc2b6c 100644 --- a/Tactical/faces.h +++ b/Tactical/faces.h @@ -9,7 +9,7 @@ #include "soldier profile type.h" // Defines -#define NUM_FACE_SLOTS 50 +#define NUM_FACE_SLOTS NUM_PROFILES struct audio_gap { @@ -123,7 +123,7 @@ typedef struct UINT32 uiSoundID; // Sound ID if one being played - UINT8 ubSoldierID; // SoldierID if one specified + UINT16 ubSoldierID; // SoldierID if one specified UINT8 ubCharacterNum; // Profile ID num UINT16 usFaceX; // X location to render face @@ -200,14 +200,14 @@ extern FACETYPE gFacesData[ NUM_FACE_SLOTS ]; // FACE HANDLING // // Faces are done like this: Call -INT32 InitFace( UINT8 usMercProfileID, UINT8 ubSoldierID, UINT32 uiInitFlags ); +INT32 InitFace( UINT8 usMercProfileID, UINT16 ubSoldierID, UINT32 uiInitFlags ); // The first parameter is the profile ID and the second is the soldier ID ( which for most cases // will be NOBODY if the face is not created from a SOLDIERTYPE ) // This function allocates a slot in the table for the face, loads it's STI file, sets some // values for X,Y locations of eyes from the profile. Does not mkae the face visible or anything like that // INternal init face, called if you don;t want to give a profile ID ( send NO_PROFILE ) for ID -INT32 InternalInitFace( UINT8 usMercProfileID, UINT8 ubSoldierID, UINT32 uiInitFlags, INT32 iFaceFileID, UINT32 uiBlinkFrequency, UINT32 uiExpressionFrequency ); +INT32 InternalInitFace( UINT8 usMercProfileID, UINT16 ubSoldierID, UINT32 uiInitFlags, INT32 iFaceFileID, UINT32 uiBlinkFrequency, UINT32 uiExpressionFrequency ); // Removes the face from the internal table, deletes any memory allocated if any. @@ -279,10 +279,10 @@ void HandleTalkingAutoFaces( ); // Same Functions but taking soldier ID first to get profile ID INT32 InitSoldierFace( SOLDIERTYPE *pSoldier ); void DeleteSoldierFace( SOLDIERTYPE *pSoldier ); -void SetAutoFaceActiveFromSoldier( UINT32 uiDisplayBuffer, UINT32 uiRestoreBuffer, UINT8 ubSoldierID , UINT16 usFaceX, UINT16 usFaceY ); -void SetAutoFaceInActiveFromSoldier( UINT8 ubSoldierID ); -BOOLEAN RenderAutoFaceFromSoldier( UINT8 ubSoldierID ); -BOOLEAN ExternRenderFaceFromSoldier( UINT32 uiBuffer, UINT8 ubSoldierID, INT16 sX, INT16 sY ); +void SetAutoFaceActiveFromSoldier( UINT32 uiDisplayBuffer, UINT32 uiRestoreBuffer, UINT16 ubSoldierID, UINT16 usFaceX, UINT16 usFaceY ); +void SetAutoFaceInActiveFromSoldier( UINT16 ubSoldierID ); +BOOLEAN RenderAutoFaceFromSoldier( UINT16 ubSoldierID ); +BOOLEAN ExternRenderFaceFromSoldier( UINT32 uiBuffer, UINT16 ubSoldierID, INT16 sX, INT16 sY ); diff --git a/Tactical/fov.cpp b/Tactical/fov.cpp index 12a99df7..79812c23 100644 --- a/Tactical/fov.cpp +++ b/Tactical/fov.cpp @@ -299,7 +299,6 @@ void RevealRoofsAndItems(SOLDIERTYPE *pSoldier, UINT32 itemsToo, BOOLEAN fShowLo INT8 itemVisible = FALSE; INT8 Blocking,twoMoreTiles,markerDir; INT8 nextDir=0; - UINT8 who; //,itemIndex; // for each square checked UINT8 dir,range,Path2; //DBrot: More Rooms //UINT8 ubRoomNo; @@ -359,7 +358,6 @@ void RevealRoofsAndItems(SOLDIERTYPE *pSoldier, UINT32 itemsToo, BOOLEAN fShowLo MercLooksForDoors( pSoldier, TRUE ); - who = pSoldier->ubID; dir = pSoldier->ubDirection; //NumMessage("good old reveal",dir); diff --git a/Tactical/merc entering.h b/Tactical/merc entering.h index 8043d1b1..30b80744 100644 --- a/Tactical/merc entering.h +++ b/Tactical/merc entering.h @@ -4,7 +4,7 @@ extern BOOLEAN gfIngagedInDrop; void ResetHeliSeats( ); -void AddMercToHeli( UINT8 ubID ); +void AddMercToHeli( UINT16 ubID ); // Flugente: we might want to set the helicopter dropoff point without starting it at the same time void SetHelicopterDroppoint( INT32 sGridNo ); @@ -14,7 +14,7 @@ void StartHelicopterRun(); void HandleHeliDrop( BOOLEAN fPlayer = TRUE ); -UINT8 SpawnAirDropElite( INT32 sGridNo ); +UINT16 SpawnAirDropElite( INT32 sGridNo ); void InitiateEnemyAirDropSoldiers( INT32 sGridNo ); void HandleEnemyAirdrop( ); diff --git a/Tactical/opplist.cpp b/Tactical/opplist.cpp index 8f6db0d0..85a5a752 100644 --- a/Tactical/opplist.cpp +++ b/Tactical/opplist.cpp @@ -74,16 +74,16 @@ extern void SetSoldierAniSpeed( SOLDIERTYPE *pSoldier ); // HEADROCK HAM 3.6: Moved to header //void MakeBloodcatsHostile( void ); -void OurNoise( UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ); -void TheirNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage = NULL ); -void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubBaseVolume, UINT8 ubNoiseType, STR16 zNoiseMessage = NULL ); +void OurNoise( UINT16 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ); +void TheirNoise(UINT16 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage = NULL ); +void ProcessNoise(UINT16 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubBaseVolume, UINT8 ubNoiseType, STR16 zNoiseMessage = NULL ); UINT8 CalcEffVolume(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT8 ubNoiseType, UINT8 ubBaseVolume, UINT8 ubTerrType1, UINT8 ubTerrType2); -void HearNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubVolume, UINT8 ubNoiseType, UINT8 *ubSeen); -void TellPlayerAboutNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubVolume, UINT8 ubNoiseType, UINT8 ubNoiseDir, STR16 zNoiseMessage = NULL ); +void HearNoise(SOLDIERTYPE *pSoldier, UINT16 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubVolume, UINT8 ubNoiseType, UINT8 *ubSeen); +void TellPlayerAboutNoise(SOLDIERTYPE *pSoldier, UINT16 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubVolume, UINT8 ubNoiseType, UINT8 ubNoiseDir, STR16 zNoiseMessage = NULL ); void OurTeamSeesSomeone( SOLDIERTYPE * pSoldier, INT8 bNumReRevealed, INT8 bNumNewEnemies ); -void IncrementWatchedLoc( UINT8 ubID, INT32 sGridNo, INT8 bLevel ); -void SetWatchedLocAsUsed( UINT8 ubID, INT32 sGridNo, INT8 bLevel ); +void IncrementWatchedLoc( UINT16 ubID, INT32 sGridNo, INT8 bLevel ); +void SetWatchedLocAsUsed( UINT16 ubID, INT32 sGridNo, INT8 bLevel ); void DecayWatchedLocs( INT8 bTeam ); void HandleManNoLongerSeen( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pOpponent, INT8 * pPersOL, INT8 * pbPublOL ); @@ -91,7 +91,7 @@ void HandleManNoLongerSeen( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pOpponent, INT // The_Bob - real time sneaking code 01/06/09 extern void CancelItemPointer(void); extern BOOLEAN NobodyAlerted(void); -extern void ShowRadioLocator( UINT8 ubID, UINT8 ubLocatorSpeed ); +extern void ShowRadioLocator( UINT16 ubID, UINT8 ubLocatorSpeed ); //#define TESTOPPLIST // for ManSeesMan() @@ -120,7 +120,7 @@ BOOLEAN gfMikeShouldSayHi = FALSE; BOOLEAN gfMorrisShouldSayHi = FALSE; #endif -UINT8 gubBestToMakeSighting[BEST_SIGHTING_ARRAY_SIZE]; +UINT16 gubBestToMakeSighting[BEST_SIGHTING_ARRAY_SIZE]; UINT8 gubBestToMakeSightingSize = 0; //BOOLEAN gfHumanSawSomeoneInRealtime; @@ -128,11 +128,11 @@ BOOLEAN gfDelayResolvingBestSightingDueToDoor = FALSE; #define SHOULD_BECOME_HOSTILE_SIZE 32 -UINT8 gubShouldBecomeHostileOrSayQuote[ SHOULD_BECOME_HOSTILE_SIZE ]; +UINT16 gubShouldBecomeHostileOrSayQuote[ SHOULD_BECOME_HOSTILE_SIZE ]; UINT8 gubNumShouldBecomeHostileOrSayQuote; // NB this ID is set for someone opening a door -UINT8 gubInterruptProvoker = NOBODY; +UINT16 gubInterruptProvoker = NOBODY; INT8 gbPublicOpplist[MAXTEAMS][TOTAL_SOLDIERS]; INT8 gbSeenOpponents[TOTAL_SOLDIERS][TOTAL_SOLDIERS]; @@ -360,7 +360,7 @@ INT16 AdjustMaxSightRangeForEnvEffects( SOLDIERTYPE *pSoldier, INT8 bLightLevel, void SwapBestSightingPositions( INT8 bPos1, INT8 bPos2 ) { - UINT8 ubTemp; + UINT16 ubTemp; ubTemp = gubBestToMakeSighting[ bPos1 ]; gubBestToMakeSighting[ bPos1 ] = gubBestToMakeSighting[ bPos2 ]; @@ -483,7 +483,7 @@ void HandleBestSightingPositionInRealtime( void ) // This function is called for handling interrupts when opening a door in non-combat or // just sighting in non-combat, deciding who gets the first turn - UINT8 ubLoop; + UINT16 ubLoop; if ( gfDelayResolvingBestSightingDueToDoor ) { @@ -513,7 +513,7 @@ void HandleBestSightingPositionInRealtime( void ) CancelItemPointer(); // select (and center screen on) the merc who saw the enemy // HEADROCK HAM 3.6: A much-requested toggle. - if (gusSelectedSoldier != (UINT16)MercPtrs[gubBestToMakeSighting[ 0 ]]->ubID && + if (gusSelectedSoldier != MercPtrs[gubBestToMakeSighting[ 0 ]]->ubID && !gGameExternalOptions.fNoAutoFocusChangeInRealtimeSneak) SelectSoldier (MercPtrs[gubBestToMakeSighting[ 0 ]]->ubID, false, true); // if not quiet, emit a message warning the player @@ -582,7 +582,7 @@ void HandleBestSightingPositionInTurnbased( void ) { // This function is called for handling interrupts when opening a door in turnbased - UINT8 ubLoop, ubLoop2; + UINT16 ubLoop, ubLoop2; BOOLEAN fOk = FALSE; if ( gubBestToMakeSighting[ 0 ] != NOBODY ) @@ -676,9 +676,9 @@ void InitSightArrays( void ) } } -void AddToShouldBecomeHostileOrSayQuoteList( UINT8 ubID ) +void AddToShouldBecomeHostileOrSayQuoteList( UINT16 ubID ) { - UINT8 ubLoop; + UINT16 ubLoop; Assert( gubNumShouldBecomeHostileOrSayQuote < SHOULD_BECOME_HOSTILE_SIZE ); @@ -700,9 +700,9 @@ void AddToShouldBecomeHostileOrSayQuoteList( UINT8 ubID ) gubNumShouldBecomeHostileOrSayQuote++; } -UINT8 SelectSpeakerFromHostileOrSayQuoteList( void ) +UINT16 SelectSpeakerFromHostileOrSayQuoteList( void ) { - UINT8 ubProfileList[ SHOULD_BECOME_HOSTILE_SIZE ]; // NB list of merc IDs, not profiles! + UINT16 ubProfileList[ SHOULD_BECOME_HOSTILE_SIZE ]; // NB list of merc IDs, not profiles! UINT8 ubLoop, ubNumProfiles = 0; SOLDIERTYPE * pSoldier; @@ -749,7 +749,7 @@ void CheckHostileOrSayQuoteList( void ) } else { - UINT8 ubSpeaker, ubLoop; + UINT16 ubSpeaker, ubLoop; SOLDIERTYPE * pSoldier; ubSpeaker = SelectSpeakerFromHostileOrSayQuoteList(); @@ -992,11 +992,11 @@ void HandleSight(SOLDIERTYPE *pSoldier, UINT8 ubSightFlags) } -void OurTeamRadiosRandomlyAbout(UINT8 ubAbout) +void OurTeamRadiosRandomlyAbout(UINT16 ubAbout) { INT32 iLoop; // WDS - make number of mercenaries, etc. be configurable -INT8 radioCnt = 0,radioMan[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS]; +INT16 radioCnt = 0,radioMan[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS]; SOLDIERTYPE *pSoldier; @@ -1025,7 +1025,7 @@ INT8 radioCnt = 0,radioMan[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS]; // if this merc is active, in this sector, and well enough to look if (pSoldier->bActive && pSoldier->bInSector && (pSoldier->stats.bLife >= OKLIFE)) // put him on our list, and increment the counter - radioMan[radioCnt++] = (INT8)iLoop; + radioMan[radioCnt++] = (INT16)iLoop; } @@ -1061,7 +1061,7 @@ INT8 radioCnt = 0,radioMan[CODE_MAXIMUM_NUMBER_OF_PLAYER_SLOTS]; -INT16 TeamNoLongerSeesMan( UINT8 ubTeam, SOLDIERTYPE *pOpponent, UINT8 ubExcludeID, INT8 bIteration ) +INT16 TeamNoLongerSeesMan( UINT8 ubTeam, SOLDIERTYPE *pOpponent, UINT16 ubExcludeID, INT8 bIteration ) { UINT16 bLoop; SOLDIERTYPE *pMate; @@ -1542,7 +1542,7 @@ void TurnOffEveryonesMuzzleFlashes( void ) void TurnOffTeamsMuzzleFlashes( UINT8 ubTeam ) { - UINT8 ubLoop; + UINT16 ubLoop; SOLDIERTYPE * pSoldier; for (ubLoop = gTacticalStatus.Team[ ubTeam ].bFirstID; ubLoop <= gTacticalStatus.Team[ ubTeam ].bLastID; ubLoop++) @@ -3062,16 +3062,16 @@ void RemoveManAsTarget(SOLDIERTYPE *pSoldier) { SOLDIERTYPE *pOpponent; - UINT8 ubTarget,ubLoop; + UINT16 ubTarget,ubLoop; ubTarget = pSoldier->ubID; // clean up the public opponent lists and locations for (ubLoop = 0; ubLoop < MAXTEAMS; ubLoop++) - // never causes any additional looks - UpdatePublic(ubLoop,ubTarget,NOT_HEARD_OR_SEEN,NOWHERE,0); - + { // never causes any additional looks + UpdatePublic(ubLoop, ubTarget, NOT_HEARD_OR_SEEN, NOWHERE, 0); + } /* @@ -3142,7 +3142,7 @@ IAN COMMENTED THIS OUT MAY 1997 - DO WE NEED THIS? -void UpdatePublic(UINT8 ubTeam, UINT8 ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel) +void UpdatePublic(UINT8 ubTeam, UINT16 ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel) { INT32 cnt; INT8 *pbPublOL; @@ -3203,7 +3203,7 @@ void UpdatePublic(UINT8 ubTeam, UINT8 ubID, INT8 bNewOpplist, INT32 sGridNo, INT -void UpdatePersonal(SOLDIERTYPE *pSoldier, UINT8 ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel) +void UpdatePersonal(SOLDIERTYPE *pSoldier, UINT16 ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel) { /* #ifdef RECORDOPPLIST @@ -3464,8 +3464,8 @@ void BetweenTurnsVisibilityAdjustments(void) void SaySeenQuote( SOLDIERTYPE *pSoldier, BOOLEAN fSeenCreature, BOOLEAN fVirginSector, BOOLEAN fSeenJoey ) { SOLDIERTYPE *pTeamSoldier; - UINT8 ubNumEnemies = 0; - UINT8 ubNumAllies = 0; + UINT16 ubNumEnemies = 0; + UINT16 ubNumAllies = 0; UINT32 cnt; #ifdef JA2UB //Ja25 No meanwhiles @@ -3683,12 +3683,12 @@ void OurTeamSeesSomeone( SOLDIERTYPE * pSoldier, INT8 bNumReRevealed, INT8 bNumN } -void RadioSightings(SOLDIERTYPE *pSoldier, UINT8 ubAbout, UINT8 ubTeamToRadioTo ) +void RadioSightings(SOLDIERTYPE *pSoldier, UINT16 ubAbout, UINT8 ubTeamToRadioTo ) { SOLDIERTYPE *pOpponent; INT32 iLoop; - UINT8 start,end,revealedEnemies = 0,unknownEnemies = 0,stillUnseen=TRUE; - UINT8 scrollToGuynum = NOBODY,sightedHatedOpponent = FALSE; + UINT16 start,end,revealedEnemies = 0,unknownEnemies = 0,stillUnseen=TRUE; + UINT16 scrollToGuynum = NOBODY,sightedHatedOpponent = FALSE; //UINT8 oppIsCivilian; INT8 *pPersOL,*pbPublOL; //,dayQuote; BOOLEAN fContactSeen; @@ -5596,7 +5596,7 @@ UINT8 DoorOpeningNoise( SOLDIERTYPE *pSoldier ) return( ubDoorNoise ); } -void MakeNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ) +void MakeNoise(UINT16 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ) { EV_S_NOISE SNoise; @@ -5693,7 +5693,7 @@ void MakeNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, } -void OurNoise( UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ) +void OurNoise( UINT16 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ) { #ifdef BYPASSNOISE return; @@ -5724,7 +5724,8 @@ void OurNoise( UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, -void TheirNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, +void TheirNoise(UINT16 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, + UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ) { // SOLDIERTYPE *pSoldier; @@ -5784,15 +5785,18 @@ void TheirNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType // else if noiseMaker's NOBODY, no opplist changes or interrupts are possible } -void ProcessNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubBaseVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ) +void ProcessNoise(UINT16 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubBaseVolume, UINT8 ubNoiseType, STR16 zNoiseMessage ) { SOLDIERTYPE *pSoldier; - UINT8 bLoop, bTeam; + UINT16 bLoop; + UINT8 bTeam; UINT8 ubLoudestEffVolume, ubEffVolume; // UINT8 ubPlayVolume; - UINT8 ubSourceTerrType, ubSource; + UINT8 ubSourceTerrType; + UINT16 ubSource; INT8 bTellPlayer = FALSE, bHeard, bSeen; - UINT8 ubHeardLoudestBy = NOBODY, ubNoiseDir = 0xff, ubLoudestNoiseDir = 0xff; + UINT16 ubHeardLoudestBy = NOBODY; + UINT8 ubNoiseDir = 0xff, ubLoudestNoiseDir = 0xff; #ifdef RECORDOPPLIST @@ -6425,8 +6429,8 @@ UINT8 CalcEffVolume(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT8 ubN -void HearNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubVolume, - UINT8 ubNoiseType, UINT8 *ubSeen) +void HearNoise(SOLDIERTYPE *pSoldier, UINT16 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, + UINT8 ubVolume, UINT8 ubNoiseType, UINT8 *ubSeen) { INT16 sNoiseX, sNoiseY; INT8 bHadToTurn = FALSE, bSourceSeen = FALSE; @@ -6781,7 +6785,7 @@ void HearNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bL plan_lib->update_plan(pSoldier->bAIIndex, pSoldier, ai_input); } -void TellPlayerAboutNoise( SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubVolume, UINT8 ubNoiseType, UINT8 ubNoiseDir, STR16 zNoiseMessage ) +void TellPlayerAboutNoise( SOLDIERTYPE *pSoldier, UINT16 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubVolume, UINT8 ubNoiseType, UINT8 ubNoiseDir, STR16 zNoiseMessage ) { UINT8 ubVolumeIndex; @@ -7509,10 +7513,10 @@ void NoticeUnseenAttacker( SOLDIERTYPE * pAttacker, SOLDIERTYPE * pDefender, INT void CheckForAlertWhenEnemyDies( SOLDIERTYPE * pDyingSoldier ) { - UINT8 ubID; - SOLDIERTYPE * pSoldier; - INT8 bDir; - INT16 sDistAway, sDistVisible; + UINT16 ubID; + SOLDIERTYPE * pSoldier; + INT8 bDir; + INT16 sDistAway, sDistVisible; for ( ubID = gTacticalStatus.Team[ pDyingSoldier->bTeam ].bFirstID; ubID <= gTacticalStatus.Team[ pDyingSoldier->bTeam ].bLastID; ubID++ ) { @@ -7547,8 +7551,8 @@ void CheckForAlertWhenEnemyDies( SOLDIERTYPE * pDyingSoldier ) BOOLEAN ArmyKnowsOfPlayersPresence( void ) { - UINT8 ubID; - SOLDIERTYPE * pSoldier; + UINT16 ubID; + SOLDIERTYPE * pSoldier; // if anyone is still left... if (gTacticalStatus.Team[ ENEMY_TEAM ].bTeamActive && gTacticalStatus.Team[ ENEMY_TEAM ].bMenInSector > 0 ) @@ -7568,7 +7572,7 @@ BOOLEAN ArmyKnowsOfPlayersPresence( void ) BOOLEAN MercSeesCreature( SOLDIERTYPE * pSoldier ) { - UINT8 ubID; + UINT16 ubID; if (pSoldier->aiData.bOppCnt > 0) { @@ -7584,7 +7588,7 @@ BOOLEAN MercSeesCreature( SOLDIERTYPE * pSoldier ) } -INT8 FindUnusedWatchedLoc( UINT8 ubID ) +INT8 FindUnusedWatchedLoc( UINT16 ubID ) { INT8 bLoop; @@ -7601,7 +7605,7 @@ INT8 FindUnusedWatchedLoc( UINT8 ubID ) return( -1 ); } -INT8 FindWatchedLocWithLessThanXPointsLeft( UINT8 ubID, UINT8 ubPointLimit ) +INT8 FindWatchedLocWithLessThanXPointsLeft( UINT16 ubID, UINT8 ubPointLimit ) { INT8 bLoop; @@ -7615,7 +7619,7 @@ INT8 FindWatchedLocWithLessThanXPointsLeft( UINT8 ubID, UINT8 ubPointLimit ) return( -1 ); } -INT8 FindWatchedLoc( UINT8 ubID, INT32 sGridNo, INT8 bLevel ) +INT8 FindWatchedLoc( UINT16 ubID, INT32 sGridNo, INT8 bLevel ) { INT8 bLoop; @@ -7632,7 +7636,7 @@ INT8 FindWatchedLoc( UINT8 ubID, INT32 sGridNo, INT8 bLevel ) return( -1 ); } -INT8 GetWatchedLocPoints( UINT8 ubID, INT32 sGridNo, INT8 bLevel ) +INT8 GetWatchedLocPoints( UINT16 ubID, INT32 sGridNo, INT8 bLevel ) { INT8 bLoc; @@ -7657,7 +7661,7 @@ INT8 GetWatchedLocPoints( UINT8 ubID, INT32 sGridNo, INT8 bLevel ) } -INT8 GetHighestVisibleWatchedLoc( UINT8 ubID ) +INT8 GetHighestVisibleWatchedLoc( UINT16 ubID ) { INT8 bLoop; INT8 bHighestLoc = -1; @@ -7678,7 +7682,7 @@ INT8 GetHighestVisibleWatchedLoc( UINT8 ubID ) return( bHighestLoc ); } -INT8 GetHighestWatchedLocPoints( UINT8 ubID ) +INT8 GetHighestWatchedLocPoints( UINT16 ubID ) { INT8 bLoop; INT8 bHighestPoints = 0; @@ -7694,10 +7698,10 @@ INT8 GetHighestWatchedLocPoints( UINT8 ubID ) } -void CommunicateWatchedLoc( UINT8 ubID, INT32 sGridNo, INT8 bLevel, UINT8 ubPoints ) +void CommunicateWatchedLoc( UINT16 ubID, INT32 sGridNo, INT8 bLevel, UINT8 ubPoints ) { - UINT8 ubLoop; - INT8 bTeam, bLoopPoint, bPoint; + UINT16 ubLoop; + INT8 bTeam, bLoopPoint, bPoint; bTeam = MercPtrs[ ubID ]->bTeam; @@ -7739,7 +7743,7 @@ void CommunicateWatchedLoc( UINT8 ubID, INT32 sGridNo, INT8 bLevel, UINT8 ubPoin } -void IncrementWatchedLoc( UINT8 ubID, INT32 sGridNo, INT8 bLevel ) +void IncrementWatchedLoc( UINT16 ubID, INT32 sGridNo, INT8 bLevel ) { INT8 bPoint; @@ -7778,7 +7782,7 @@ void IncrementWatchedLoc( UINT8 ubID, INT32 sGridNo, INT8 bLevel ) } } -void SetWatchedLocAsUsed( UINT8 ubID, INT32 sGridNo, INT8 bLevel ) +void SetWatchedLocAsUsed( UINT16 ubID, INT32 sGridNo, INT8 bLevel ) { INT8 bPoint; @@ -7792,7 +7796,7 @@ void SetWatchedLocAsUsed( UINT8 ubID, INT32 sGridNo, INT8 bLevel ) BOOLEAN WatchedLocLocationIsEmpty( INT32 sGridNo, INT8 bLevel, INT8 bTeam ) { // look to see if there is anyone near the watched loc who is not on this team - UINT8 ubID; + UINT16 ubID; INT32 sTempGridNo; INT16 sX, sY; @@ -7817,7 +7821,7 @@ BOOLEAN WatchedLocLocationIsEmpty( INT32 sGridNo, INT8 bLevel, INT8 bTeam ) void DecayWatchedLocs( INT8 bTeam ) { - UINT8 cnt, cnt2; + UINT16 cnt, cnt2; // loop through all soldiers for ( cnt = gTacticalStatus.Team[ bTeam ].bFirstID; cnt <= gTacticalStatus.Team[ bTeam ].bLastID; cnt++ ) diff --git a/Tactical/opplist.h b/Tactical/opplist.h index 9330b7e6..b8791758 100644 --- a/Tactical/opplist.h +++ b/Tactical/opplist.h @@ -117,7 +117,7 @@ void ManSeesMan(SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent, INT32 sOppGridNo, void DecideTrueVisibility(SOLDIERTYPE *pSoldier, UINT8 ubLocate); void AddOneOpponent(SOLDIERTYPE *pSoldier); void RemoveOneOpponent(SOLDIERTYPE *pSoldier); -void UpdatePersonal(SOLDIERTYPE *pSoldier, UINT8 ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel); +void UpdatePersonal(SOLDIERTYPE *pSoldier, UINT16 ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel); INT16 MaxNormalDistanceVisible( void ); INT16 DistanceVisible( SOLDIERTYPE *pSoldier, INT8 bFacingDir, INT8 bSubjectDir, INT32 sSubjectGridNo, INT8 bLevel, const BOOLEAN& isCowering, const UINT8& tunnelVision); void ResetLastKnownLocs(SOLDIERTYPE *ptr); @@ -129,9 +129,9 @@ void InitOpponentKnowledgeSystem(void); void InitSoldierOppList(SOLDIERTYPE *pSoldier); void BetweenTurnsVisibilityAdjustments(void); void RemoveManAsTarget(SOLDIERTYPE *pSoldier); -void UpdatePublic(UINT8 ubTeam, UINT8 ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel ); -void RadioSightings(SOLDIERTYPE *pSoldier, UINT8 ubAbout, UINT8 ubTeamToRadioTo ); -void OurTeamRadiosRandomlyAbout(UINT8 ubAbout); +void UpdatePublic(UINT8 ubTeam, UINT16 ubID, INT8 bNewOpplist, INT32 sGridNo, INT8 bLevel ); +void RadioSightings(SOLDIERTYPE *pSoldier, UINT16 ubAbout, UINT8 ubTeamToRadioTo ); +void OurTeamRadiosRandomlyAbout(UINT16 ubAbout); void DebugSoldierPage1( ); void DebugSoldierPage2( ); void DebugSoldierPage3( ); @@ -139,8 +139,8 @@ void DebugSoldierPage4( ); UINT8 MovementNoise( SOLDIERTYPE *pSoldier ); UINT8 DoorOpeningNoise( SOLDIERTYPE *pSoldier ); -void MakeNoise(UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage = NULL ); -void OurNoise( UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage = NULL ); +void MakeNoise(UINT16 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage = NULL ); +void OurNoise( UINT16 ubNoiseMaker, INT32 sGridNo, INT8 bLevel, UINT8 ubTerrType, UINT8 ubVolume, UINT8 ubNoiseType, STR16 zNoiseMessage = NULL ); void ResolveInterruptsVs( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType); @@ -151,9 +151,9 @@ void NoticeUnseenAttacker( SOLDIERTYPE * pAttacker, SOLDIERTYPE * pDefender, INT BOOLEAN MercSeesCreature( SOLDIERTYPE * pSoldier ); -INT8 GetWatchedLocPoints( UINT8 ubID, INT32 sGridNo, INT8 bLevel ); -INT8 GetHighestVisibleWatchedLoc( UINT8 ubID ); -INT8 GetHighestWatchedLocPoints( UINT8 ubID ); +INT8 GetWatchedLocPoints( UINT16 ubID, INT32 sGridNo, INT8 bLevel ); +INT8 GetHighestVisibleWatchedLoc( UINT16 ubID ); +INT8 GetHighestWatchedLocPoints( UINT16 ubID ); void TurnOffEveryonesMuzzleFlashes( void ); void TurnOffTeamsMuzzleFlashes( UINT8 ubTeam ); @@ -164,7 +164,7 @@ void CheckHostileOrSayQuoteList( void ); void InitOpplistForDoorOpening( void ); UINT8 DoorOpeningNoise( SOLDIERTYPE * pSoldier ); -void AddToShouldBecomeHostileOrSayQuoteList( UINT8 ubID ); +void AddToShouldBecomeHostileOrSayQuoteList( UINT16 ubID ); //extern INT8 gbLightSighting[1][16]; diff --git a/TacticalAI/AIInternals.h b/TacticalAI/AIInternals.h index cc7afa94..4373a496 100644 --- a/TacticalAI/AIInternals.h +++ b/TacticalAI/AIInternals.h @@ -131,7 +131,7 @@ class ATTACKTYPE { public: UINT8 ubPossible; // is this attack form possible - UINT8 ubOpponent; // which soldier is the victim + UINT16 ubOpponent; // which soldier is the victim //CHANGED STRUCTURE VALUE BY GOTTHARD 7/14/07 INT16 ubAimTime; // how many extra APs to spend on aiming INT16 ubChanceToReallyHit; // chance to hit * chance to get through cover @@ -213,7 +213,7 @@ void CreatureDecideAlertStatus( SOLDIERTYPE *pCreature ); // sevenfm: void CheckTossSelfSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow); void CheckTossFriendSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow); -void CheckTossAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, UINT8 ubOpponentID); +void CheckTossAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, UINT16 ubOpponentID); INT32 FindTossSpotInDirection(INT32 sSpot, INT8 bLevel, INT32 sTargetSpot, BOOLEAN fCheckAdjacentDirections, BOOLEAN fCheckFarther); void CheckTossGrenadeAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, UINT8 ubGrenadeType); @@ -319,7 +319,7 @@ BOOLEAN GetBestAoEGridNo(SOLDIERTYPE *pSoldier, INT32* pGridNo, INT16 aRadius, U // Get the ID of the farthest opponent we can see, with an optional minimum range // puID - ID of the farthest opponent pSoldier can see // sRange - only return true and give an idea if opponent found is further away than this -BOOLEAN GetFarthestOpponent(SOLDIERTYPE *pSoldier, UINT8* puID, INT16 sRange); +BOOLEAN GetFarthestOpponent(SOLDIERTYPE *pSoldier, UINT16 * puID, INT16 sRange); // are there more allies than friends in adjacent sectors? BOOLEAN MoreFriendsThanEnemiesinNearbysectors(UINT8 ausTeam, INT16 aX, INT16 aY, INT8 aZ); \ No newline at end of file diff --git a/TacticalAI/AIList.cpp b/TacticalAI/AIList.cpp index 8dc6f568..85d12220 100644 --- a/TacticalAI/AIList.cpp +++ b/TacticalAI/AIList.cpp @@ -28,11 +28,11 @@ AILIST gAIList[ AI_LIST_SIZE ]; AILIST * gpFirstAIListEntry = NULL; -BOOLEAN SatisfiesAIListConditions( SOLDIERTYPE * pSoldier, UINT8 * pubDoneCount, BOOLEAN fDoRandomChecks ); +BOOLEAN SatisfiesAIListConditions( SOLDIERTYPE * pSoldier, UINT16 * pubDoneCount, BOOLEAN fDoRandomChecks ); void ClearAIList( void ) { - UINT8 ubLoop; + UINT16 ubLoop; for ( ubLoop = 0; ubLoop < AI_LIST_SIZE; ubLoop++ ) { @@ -50,9 +50,9 @@ void DeleteAIListEntry( AILIST * pEntry ) pEntry->pNext = NULL; } -UINT8 FindEmptyAIListEntry( void ) +UINT16 FindEmptyAIListEntry( void ) { - UINT8 ubLoop; + UINT16 ubLoop; for ( ubLoop = 0; ubLoop < AI_LIST_SIZE; ubLoop++ ) { @@ -65,7 +65,7 @@ UINT8 FindEmptyAIListEntry( void ) return( AI_LIST_SIZE ); } -AILIST * CreateNewAIListEntry( UINT8 ubNewEntry, UINT8 ubID, INT8 bPriority ) +AILIST * CreateNewAIListEntry( UINT16 ubNewEntry, UINT16 ubID, INT8 bPriority ) { gAIList[ ubNewEntry ].ubID = ubID; gAIList[ ubNewEntry ].bPriority = bPriority; @@ -73,10 +73,10 @@ AILIST * CreateNewAIListEntry( UINT8 ubNewEntry, UINT8 ubID, INT8 bPriority ) return( &(gAIList[ ubNewEntry ]) ); } -UINT8 RemoveFirstAIListEntry( void ) +UINT16 RemoveFirstAIListEntry( void ) { - AILIST * pOldFirstEntry; - UINT8 ubID; + AILIST *pOldFirstEntry; + UINT16 ubID; while ( gpFirstAIListEntry != NULL) { @@ -98,7 +98,7 @@ UINT8 RemoveFirstAIListEntry( void ) return( NOBODY ); } -void RemoveAIListEntryForID( UINT8 ubID ) +void RemoveAIListEntryForID( UINT16 ubID ) { AILIST * pEntry; AILIST * pPrevEntry; @@ -127,9 +127,9 @@ void RemoveAIListEntryForID( UINT8 ubID ) // none found, that's okay } -BOOLEAN InsertIntoAIList( UINT8 ubID, INT8 bPriority ) +BOOLEAN InsertIntoAIList( UINT16 ubID, INT8 bPriority ) { - UINT8 ubNewEntry; + UINT16 ubNewEntry; AILIST * pEntry, * pNewEntry, * pPrevEntry = NULL; ubNewEntry = FindEmptyAIListEntry(); @@ -182,7 +182,7 @@ BOOLEAN InsertIntoAIList( UINT8 ubID, INT8 bPriority ) return( FALSE ); } -BOOLEAN SatisfiesAIListConditions( SOLDIERTYPE * pSoldier, UINT8 * pubDoneCount, BOOLEAN fDoRandomChecks ) +BOOLEAN SatisfiesAIListConditions( SOLDIERTYPE * pSoldier, UINT16 * pubDoneCount, BOOLEAN fDoRandomChecks ) { if ( (gTacticalStatus.bBoxingState == BOXING) && !(pSoldier->flags.uiStatusFlags & SOLDIER_BOXER) ) { @@ -280,12 +280,12 @@ BOOLEAN SatisfiesAIListConditions( SOLDIERTYPE * pSoldier, UINT8 * pubDoneCount, return( TRUE ); } -BOOLEAN MoveToFrontOfAIList( UINT8 ubID ) +BOOLEAN MoveToFrontOfAIList( UINT16 ubID ) { // we'll have to fake this guy's alert status (in the list) to be the same as the current // front of the list INT8 bPriority; - UINT8 ubNewEntry; + UINT16 ubNewEntry; AILIST * pNewEntry; if ( !SatisfiesAIListConditions( MercPtrs[ ubID ], NULL, FALSE ) ) @@ -320,8 +320,8 @@ BOOLEAN BuildAIListForTeam( INT8 bTeam ) BOOLEAN fInsertRet; SOLDIERTYPE * pSoldier; BOOLEAN fRet = FALSE; - UINT8 ubCount = 0; - UINT8 ubDoneCount = 0; + UINT16 ubCount = 0; + UINT16 ubDoneCount = 0; INT8 bPriority; // this team is being given control so reset their muzzle flashes diff --git a/TacticalAI/AIList.h b/TacticalAI/AIList.h index d67bfc6d..bb44ac29 100644 --- a/TacticalAI/AIList.h +++ b/TacticalAI/AIList.h @@ -2,7 +2,7 @@ typedef struct AILIST { - UINT8 ubID; + UINT16 ubID; INT8 bPriority; UINT8 ubUnused; struct AILIST * pNext; @@ -11,8 +11,8 @@ typedef struct AILIST #define MAX_AI_PRIORITY 100 extern void ClearAIList( void ); -extern AILIST * CreateNewAIListEntry( UINT8 ubNewEntry, UINT8 ubID, INT8 bAlertStatus ); -extern BOOLEAN InsertIntoAIList( UINT8 ubID, INT8 bAlertStatus ); -extern UINT8 RemoveFirstAIListEntry( void ); +extern AILIST * CreateNewAIListEntry( UINT16 ubNewEntry, UINT16 ubID, INT8 bAlertStatus ); +extern BOOLEAN InsertIntoAIList( UINT16 ubID, INT8 bAlertStatus ); +extern UINT16 RemoveFirstAIListEntry( void ); extern BOOLEAN BuildAIListForTeam( INT8 bTeam ); -extern BOOLEAN MoveToFrontOfAIList( UINT8 ubID ); +extern BOOLEAN MoveToFrontOfAIList( UINT16 ubID ); diff --git a/TacticalAI/AIMain.cpp b/TacticalAI/AIMain.cpp index 50342612..075021ef 100644 --- a/TacticalAI/AIMain.cpp +++ b/TacticalAI/AIMain.cpp @@ -402,7 +402,7 @@ BOOLEAN InitAI( void ) // remove all individual files CHAR8 buf[1024]; - for (UINT8 cnt = 0; cnt < TOTAL_SOLDIERS; cnt++) + for (UINT16 cnt = 0; cnt < TOTAL_SOLDIERS; cnt++) { sprintf(buf, "Logs\\AI_Decisions [%d].txt", cnt); remove(buf); @@ -883,7 +883,7 @@ void HandleSoldierAI( SOLDIERTYPE *pSoldier ) // FIXME - this function is named void EndAIGuysTurn( SOLDIERTYPE *pSoldier ) { - UINT8 ubID; + UINT16 ubID; if (gfTurnBasedAI) { @@ -1174,12 +1174,12 @@ INT32 FindAdjacentSpotBeside(SOLDIERTYPE *pSoldier, INT32 sGridNo) return(sCheapestDest); } -UINT8 GetMostThreateningOpponent( SOLDIERTYPE *pSoldier ) +UINT16 GetMostThreateningOpponent( SOLDIERTYPE *pSoldier ) { UINT32 uiLoop; INT32 iThreatVal,iMinThreat = 30000; SOLDIERTYPE *pTargetSoldier; - UINT8 ubTargetSoldier = NOBODY; + UINT16 ubTargetSoldier = NOBODY; // Loop through all mercs @@ -1263,7 +1263,7 @@ void FreeUpNPCFromPendingAction( SOLDIERTYPE *pSoldier ) } } -void FreeUpNPCFromAttacking(UINT8 ubID) +void FreeUpNPCFromAttacking(UINT16 ubID) { SOLDIERTYPE *pSoldier; @@ -2659,7 +2659,7 @@ INT8 ExecuteAction(SOLDIERTYPE *pSoldier) case AI_ACTION_USE_SKILL: { - UINT8 ubID = WhoIsThere2( pSoldier->aiData.usActionData, 0 ); + UINT16 ubID = WhoIsThere2( pSoldier->aiData.usActionData, 0 ); BOOLEAN result = pSoldier->UseSkill(pSoldier->usAISkillUse, pSoldier->aiData.usActionData, ubID); diff --git a/TacticalAI/AIUtils.cpp b/TacticalAI/AIUtils.cpp index c577b762..ff6ceda0 100644 --- a/TacticalAI/AIUtils.cpp +++ b/TacticalAI/AIUtils.cpp @@ -837,7 +837,7 @@ INT16 RandomFriendWithin(SOLDIERTYPE *pSoldier) { UINT32 uiLoop; UINT16 usMaxDist; - UINT8 ubFriendCount, ubFriendIDs[MAXMERCS], ubFriendID; + UINT16 ubFriendCount, ubFriendIDs[MAXMERCS], ubFriendID; UINT8 ubDirection; UINT8 ubDirsLeft; BOOLEAN fDirChecked[8]; @@ -1385,7 +1385,7 @@ INT32 ClosestReachableDisturbance(SOLDIERTYPE *pSoldier, BOOLEAN * pfChangeLevel } -INT32 ClosestKnownOpponent(SOLDIERTYPE *pSoldier, INT32 * psGridNo, INT8 * pbLevel, UINT8 *pubOpponentID) +INT32 ClosestKnownOpponent(SOLDIERTYPE *pSoldier, INT32 * psGridNo, INT8 * pbLevel, UINT16 * pubOpponentID) { INT32 *psLastLoc,sGridNo, sClosestOpponent = NOWHERE; UINT32 uiLoop; @@ -1710,7 +1710,7 @@ INT32 ClosestPC( SOLDIERTYPE *pSoldier, INT32 * psDistance ) // NOTE: skips EPCs! - UINT8 ubLoop; + UINT16 ubLoop; SOLDIERTYPE *pTargetSoldier; INT32 sMinDist = WORLD_MAX; INT32 sDist; @@ -1769,7 +1769,7 @@ INT32 ClosestUnDisguisedPC( SOLDIERTYPE *pSoldier, INT32 * psDistance ) // used by NPCs... find the closest PC // NOTE: skips EPCs! - UINT8 ubLoop; + UINT16 ubLoop; SOLDIERTYPE *pTargetSoldier; INT32 sMinDist = WORLD_MAX; INT32 sDist; @@ -2028,7 +2028,7 @@ INT16 EstimatePathCostToLocation( SOLDIERTYPE * pSoldier, INT32 sDestGridNo, INT BOOLEAN GuySawEnemy( SOLDIERTYPE * pSoldier, UINT8 ubMax ) { UINT8 ubTeamLoop; - UINT8 ubIDLoop; + UINT16 ubIDLoop; SOLDIERTYPE *pOpponent; for ( ubTeamLoop = 0; ubTeamLoop < MAXTEAMS; ++ubTeamLoop ) @@ -2181,7 +2181,7 @@ INT32 ClosestReachableFriendInTrouble(SOLDIERTYPE *pSoldier, BOOLEAN * pfClimbin INT16 DistanceToClosestFriend( SOLDIERTYPE * pSoldier ) { // find the distance to the closest person on the same team - UINT8 ubLoop; + UINT16 ubLoop; SOLDIERTYPE *pTargetSoldier; INT16 sMinDist = 1000; INT16 sDist; @@ -3452,9 +3452,9 @@ INT32 CalcStraightThreatValue( SOLDIERTYPE *pEnemy ) } // Flugente: get the id of the closest soldier with a specific flag that we can currently see -UINT8 GetClosestFlaggedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam, UINT32 aFlag, BOOLEAN fCheckSight ) +UINT16 GetClosestFlaggedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam, UINT32 aFlag, BOOLEAN fCheckSight ) { - UINT8 id = NOBODY; + UINT16 id = NOBODY; UINT32 uiLoop; SOLDIERTYPE * pFriend; INT16 range = aRange; @@ -3505,9 +3505,9 @@ UINT8 GetClosestFlaggedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 au } // get the id of the closest soldier (closer than x tiles) of a specific team that is wounded that we can currently see -UINT8 GetClosestWoundedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam ) +UINT16 GetClosestWoundedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam ) { - UINT8 id = NOBODY; + UINT16 id = NOBODY; UINT32 uiLoop; SOLDIERTYPE * pFriend; INT16 range = aRange; @@ -3554,9 +3554,9 @@ UINT8 GetClosestWoundedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 au } // get the id of the closest medic (closer than x tiles) of a specific team -UINT8 GetClosestMedicSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam ) +UINT16 GetClosestMedicSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam ) { - UINT8 id = NOBODY; + UINT16 id = NOBODY; UINT32 uiLoop; SOLDIERTYPE * pFriend; INT16 range = aRange; @@ -3618,18 +3618,18 @@ INT16 MaxNormalVisionDistance( void ) // sevenfm: check friendly soldiers between me and noise gridno // count only friends that are active and not stationary/onguard/sniper -UINT8 CountFriendsInDirection( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) +UINT16 CountFriendsInDirection( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) { SOLDIERTYPE * pFriend; UINT8 ubFriendDir, ubMyDir; - UINT8 ubFriends = 0; + UINT16 ubFriends = 0; CHECKF(pSoldier); ubMyDir = atan8(CenterX(sTargetGridNo),CenterY(sTargetGridNo),CenterX(pSoldier->sGridNo),CenterY(pSoldier->sGridNo)); // Run through each friendly. - for ( UINT8 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ ) + for ( UINT16 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ ) { pFriend = MercPtrs[ iCounter ]; ubFriendDir = atan8(CenterX(sTargetGridNo),CenterY(sTargetGridNo),CenterX(pFriend->sGridNo),CenterY(pFriend->sGridNo)); @@ -3651,17 +3651,17 @@ UINT8 CountFriendsInDirection( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ) } // sevenfm: count nearby friend soldiers -UINT8 CountNearbyFriends( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistance ) +UINT16 CountNearbyFriends( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistance ) { SOLDIERTYPE * pFriend; - UINT8 ubFriendCount = 0; + UINT16 ubFriendCount = 0; // safety check if( !pSoldier ) return 0; // Run through each friendly. - for ( UINT8 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ ) + for ( UINT16 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ ) { pFriend = MercPtrs[ iCounter ]; // Make sure that character is alive, not too shocked, and conscious, and of higher experience level @@ -3970,7 +3970,7 @@ BOOLEAN WeAttack(INT8 bTeam) SOLDIERTYPE * pFriend; // Run through each friendly. - for (UINT8 iCounter = gTacticalStatus.Team[bTeam].bFirstID; iCounter <= gTacticalStatus.Team[bTeam].bLastID; iCounter++) + for (UINT16 iCounter = gTacticalStatus.Team[bTeam].bFirstID; iCounter <= gTacticalStatus.Team[bTeam].bLastID; iCounter++) { pFriend = MercPtrs[iCounter]; @@ -3994,7 +3994,7 @@ UINT8 CountNearbyFriendsLastAttackHit( SOLDIERTYPE *pSoldier, INT32 sGridNo, UIN UINT8 ubFriendCount = 0; // Run through each friendly. - for ( UINT8 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ ) + for ( UINT16 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ ) { pFriend = MercPtrs[ iCounter ]; @@ -4034,7 +4034,7 @@ UINT8 CountFriendsFlankSameSpot(SOLDIERTYPE *pSoldier, INT32 sSpot) } // Run through each friendly. - for (UINT8 iCounter = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; iCounter <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; iCounter++) + for (UINT16 iCounter = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; iCounter <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; iCounter++) { pFriend = MercPtrs[iCounter]; @@ -4116,7 +4116,7 @@ UINT8 CountFriendsBlack( SOLDIERTYPE *pSoldier, INT32 sClosestOpponent ) } // Run through each friendly. - for ( UINT8 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ ) + for ( UINT16 iCounter = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID ; iCounter <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID ; iCounter ++ ) { pFriend = MercPtrs[ iCounter ]; @@ -4145,17 +4145,17 @@ UINT8 CountFriendsBlack( SOLDIERTYPE *pSoldier, INT32 sClosestOpponent ) } // count friends under fire or with shock -UINT8 CountTeamUnderAttack(INT8 bTeam, INT32 sGridNo, INT16 sDistance) +UINT16 CountTeamUnderAttack(INT8 bTeam, INT32 sGridNo, INT16 sDistance) { SOLDIERTYPE * pFriend; - UINT8 ubFriendCount = 0; + UINT16 ubFriendCount = 0; // safety check if (bTeam >= MAXTEAMS) return 0; // Run through each friendly. - for (UINT8 iCounter = gTacticalStatus.Team[bTeam].bFirstID; iCounter <= gTacticalStatus.Team[bTeam].bLastID; iCounter++) + for (UINT16 iCounter = gTacticalStatus.Team[bTeam].bFirstID; iCounter <= gTacticalStatus.Team[bTeam].bLastID; iCounter++) { pFriend = MercPtrs[iCounter]; @@ -4397,10 +4397,10 @@ BOOLEAN EnemySeenSoldierRecently( SOLDIERTYPE *pSoldier, UINT8 ubMax ) return FALSE; } -UINT8 CountTeamSeeSoldier( INT8 bTeam, SOLDIERTYPE *pSoldier ) +UINT16 CountTeamSeeSoldier( INT8 bTeam, SOLDIERTYPE *pSoldier ) { SOLDIERTYPE *pFriend; - UINT8 ubFriends = 0; + UINT16 ubFriends = 0; CHECKF( pSoldier ); @@ -4846,13 +4846,13 @@ BOOLEAN AnyCoverFromSpot( INT32 sSpot, INT8 bLevel, INT32 sThreatLoc, INT8 bThre return FALSE; } -UINT8 CountSeenEnemiesLastTurn( SOLDIERTYPE* pSoldier ) +UINT16 CountSeenEnemiesLastTurn( SOLDIERTYPE* pSoldier ) { CHECKF(pSoldier); UINT8 ubTeamLoop; - UINT8 ubIDLoop; - UINT8 cnt = 0; + UINT16 ubIDLoop; + UINT16 cnt = 0; for( ubTeamLoop = 0; ubTeamLoop < MAXTEAMS; ubTeamLoop++ ) { @@ -5677,7 +5677,7 @@ BOOLEAN DuskLight(void) return FALSE; } -BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) +BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) { INT8 bPersonalKnowledge; INT8 bPublicKnowledge; @@ -5701,7 +5701,7 @@ BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) return FALSE; } -INT8 Knowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) +INT8 Knowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5716,7 +5716,7 @@ INT8 Knowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) return PublicKnowledge(pSoldier->bTeam, ubOpponentID); } -INT32 KnownLocation(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) +INT32 KnownLocation(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5731,7 +5731,7 @@ INT32 KnownLocation(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) return KnownPublicLocation(pSoldier->bTeam, ubOpponentID); } -INT8 KnownLevel(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) +INT8 KnownLevel(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5746,7 +5746,7 @@ INT8 KnownLevel(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) return KnownPublicLevel(pSoldier->bTeam, ubOpponentID); } -INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) +INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5756,7 +5756,7 @@ INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) return pSoldier->aiData.bOppList[ubOpponentID]; } -INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) +INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5770,7 +5770,7 @@ INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) return gsLastKnownOppLoc[pSoldier->ubID][ubOpponentID]; } -INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) +INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID) { if (!pSoldier || ubOpponentID == NOBODY) { @@ -5780,7 +5780,7 @@ INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID) return gbLastKnownOppLevel[pSoldier->ubID][ubOpponentID]; } -INT8 PublicKnowledge(UINT8 bTeam, UINT8 ubOpponentID) +INT8 PublicKnowledge(UINT8 bTeam, UINT16 ubOpponentID) { if (bTeam >= MAXTEAMS || ubOpponentID == NOBODY) { @@ -5790,7 +5790,7 @@ INT8 PublicKnowledge(UINT8 bTeam, UINT8 ubOpponentID) return gbPublicOpplist[bTeam][ubOpponentID]; } -INT32 KnownPublicLocation(UINT8 bTeam, UINT8 ubOpponentID) +INT32 KnownPublicLocation(UINT8 bTeam, UINT16 ubOpponentID) { if (bTeam >= MAXTEAMS || ubOpponentID == NOBODY) { @@ -5804,7 +5804,7 @@ INT32 KnownPublicLocation(UINT8 bTeam, UINT8 ubOpponentID) return gsPublicLastKnownOppLoc[bTeam][ubOpponentID]; } -INT8 KnownPublicLevel(UINT8 bTeam, UINT8 ubOpponentID) +INT8 KnownPublicLevel(UINT8 bTeam, UINT16 ubOpponentID) { if (bTeam >= MAXTEAMS || ubOpponentID == NOBODY) { @@ -5945,14 +5945,14 @@ INT32 RandomizeOpponentLocation(INT32 sSpot, SOLDIERTYPE *pOpponent, INT16 sMaxD } // first call PrepareThreatlist to make threat list -UINT8 ClosestKnownThreatID(SOLDIERTYPE *pSoldier) +UINT16 ClosestKnownThreatID(SOLDIERTYPE *pSoldier) { CHECKF(pSoldier); UINT32 uiLoop; INT32 sClosestOpponent = NOWHERE; INT32 iRange, iClosestRange; - UINT8 ubClosestOpponentID = NOBODY; + UINT16 ubClosestOpponentID = NOBODY; // use global defined threat list for (uiLoop = 0; uiLoop < guiThreatCnt; uiLoop++) @@ -5975,14 +5975,14 @@ UINT8 ClosestKnownThreatID(SOLDIERTYPE *pSoldier) } // first call PrepareThreatlist to make threat list -UINT8 ClosestSeenThreatID(SOLDIERTYPE *pSoldier, UINT8 ubMax) +UINT16 ClosestSeenThreatID(SOLDIERTYPE *pSoldier, UINT8 ubMax) { CHECKF(pSoldier); UINT32 uiLoop; INT32 sClosestOpponent = NOWHERE; INT32 iRange, iClosestRange; - UINT8 ubClosestOpponentID = NOBODY; + UINT16 ubClosestOpponentID = NOBODY; // use global defined threat list for (uiLoop = 0; uiLoop < guiThreatCnt; uiLoop++) @@ -6103,7 +6103,7 @@ void PrepareThreatlist(SOLDIERTYPE *pSoldier) } } -UINT8 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 sDistance) +UINT16 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 sDistance) { CHECKF(pSoldier); @@ -6113,7 +6113,7 @@ UINT8 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 sDista INT32 sThreatLoc; INT8 iThreatLevel; - UINT8 ubNum = 0; + UINT16 ubNum = 0; // loop through all the enemies for (uiLoop = 0; uiLoop < guiNumMercSlots; ++uiLoop) @@ -6157,7 +6157,7 @@ UINT8 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 sDista return ubNum; } -UINT8 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier) +UINT16 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier) { CHECKF(pSoldier); @@ -6167,7 +6167,7 @@ UINT8 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier) INT32 sThreatLoc; INT8 iThreatLevel; - UINT8 ubNum = 0; + UINT16 ubNum = 0; // loop through all the enemies for (uiLoop = 0; uiLoop < guiNumMercSlots; ++uiLoop) diff --git a/TacticalAI/Attacks.cpp b/TacticalAI/Attacks.cpp index b3fee114..fb7df79f 100644 --- a/TacticalAI/Attacks.cpp +++ b/TacticalAI/Attacks.cpp @@ -850,13 +850,13 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) { DebugMsg (TOPIC_JA2,DBG_LEVEL_3,"calcbestthrow"); // September 9, 1998: added code for LAWs (CJC) - UINT8 ubLoop, ubLoop2; + UINT16 ubLoop, ubLoop2; INT32 iAttackValue; INT32 iHitRate, iThreatValue, iTotalThreatValue,iOppThreatValue[MAXMERCS]; INT32 sGridNo, sEndGridNo, sFriendTile[MAXMERCS], sOpponentTile[MAXMERCS]; INT8 bFriendLevel[MAXMERCS], bOpponentLevel[MAXMERCS]; INT32 iEstDamage; - UINT8 ubFriendCnt = 0,ubOpponentCnt = 0, ubOpponentID[MAXMERCS]; + UINT16 ubFriendCnt = 0,ubOpponentCnt = 0, ubOpponentID[MAXMERCS]; UINT8 ubMaxPossibleAimTime; INT16 sRawAPCost, sMinAPcost; UINT8 ubChanceToHit, ubChanceToGetThrough, ubChanceToReallyHit, ubFriendlyFireChance; @@ -3484,9 +3484,9 @@ UINT8 UnderFire::Chance(INT8 bTeam, INT8 bSide, BOOLEAN fCheckNeutral) // if an enemy soldier fulfils taboo, make sure to not hit him at all! BOOLEAN GetBestAoEGridNo(SOLDIERTYPE *pSoldier, INT32* pGridNo, INT16 aRadius, UINT8 uCheckFriends, UINT8 aMinRating, SOLDIER_CONDITION cond, SOLDIER_CONDITION taboo) { - UINT8 ubLoop, ubLoop2; + UINT16 ubLoop, ubLoop2; INT32 sGridNo, sFriendTile[MAXMERCS], sOpponentTile[MAXMERCS], sTabooTile[MAXMERCS]; - UINT8 ubFriendCnt = 0,ubOpponentCnt = 0, ubTabooCnt = 0, ubOpponentID[MAXMERCS]; + UINT16 ubFriendCnt = 0,ubOpponentCnt = 0, ubTabooCnt = 0, ubOpponentID[MAXMERCS]; INT32 bMaxLeft,bMaxRight,bMaxUp,bMaxDown, i, j; INT8 bPersOL, bPublOL; SOLDIERTYPE *pFriend; @@ -3676,7 +3676,7 @@ BOOLEAN GetBestAoEGridNo(SOLDIERTYPE *pSoldier, INT32* pGridNo, INT16 aRadius, U // Get the ID of the farthest opponent we can see, with an optional minimum range // puID - ID of the farthest opponent pSoldier can see // sRange - only return an true and give an idea if opponent found is further away than this -BOOLEAN GetFarthestOpponent(SOLDIERTYPE *pSoldier, UINT8* puID, INT16 sRange) +BOOLEAN GetFarthestOpponent(SOLDIERTYPE *pSoldier, UINT16 * puID, INT16 sRange) { INT32 sGridNo; UINT32 uiLoop; @@ -3800,9 +3800,7 @@ void CheckTossSelfSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) INT8 bTargetLevel = bLevel; INT32 sClosestThreat; - UINT8 ubClosestThreatID; - - ubClosestThreatID = pSoldier->ubPreviousAttackerID; + UINT16 ubClosestThreatID = pSoldier->ubPreviousAttackerID; // try to find good spot for smoke if (ubClosestThreatID != NOBODY && @@ -3901,7 +3899,7 @@ void CheckTossFriendSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) SOLDIERTYPE * pFriend; INT32 sClosestFriendSpot = NOWHERE; INT8 bClosestFriendLevel = 0; - UINT8 ubClosestFriendID = NOBODY; + UINT16 ubClosestFriendID = NOBODY; INT32 sFriendSpot; INT8 bFriendLevel; @@ -3914,7 +3912,7 @@ void CheckTossFriendSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) UINT8 ubDirection; // Run through each friendly. - for (UINT8 iCounter = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; iCounter <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; iCounter++) + for (UINT16 iCounter = gTacticalStatus.Team[pSoldier->bTeam].bFirstID; iCounter <= gTacticalStatus.Team[pSoldier->bTeam].bLastID; iCounter++) { pFriend = MercPtrs[iCounter]; @@ -4012,7 +4010,7 @@ void CheckTossFriendSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow) // check if we can toss grenade at spot, and prepare attack data // grenade should be in hand -void CheckTossAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, UINT8 ubOpponentID) +void CheckTossAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, UINT16 ubOpponentID) { UINT16 usInHand, usGrenade; INT32 iTossRange; diff --git a/TacticalAI/CreatureDecideAction.cpp b/TacticalAI/CreatureDecideAction.cpp index fe0ac6f5..4cdf9380 100644 --- a/TacticalAI/CreatureDecideAction.cpp +++ b/TacticalAI/CreatureDecideAction.cpp @@ -70,7 +70,7 @@ INT8 gbHuntCallPriority[NUM_CREATURE_CALLS] = void CreatureCall( SOLDIERTYPE * pCaller ) { UINT8 ubCallerType=0; - UINT8 ubReceiver; + UINT16 ubReceiver; INT8 bFullPriority; INT8 bPriority; SOLDIERTYPE * pReceiver; diff --git a/TacticalAI/DecideAction.cpp b/TacticalAI/DecideAction.cpp index 5732115d..2aaa460b 100644 --- a/TacticalAI/DecideAction.cpp +++ b/TacticalAI/DecideAction.cpp @@ -47,7 +47,7 @@ extern BOOLEAN gfHiddenInterrupt; extern BOOLEAN gfUseAlternateQueenPosition; extern UINT16 PickSoldierReadyAnimation( SOLDIERTYPE *pSoldier, BOOLEAN fEndReady, BOOLEAN fHipStance ); -extern void IncrementWatchedLoc(UINT8 ubID, INT32 sGridNo, INT8 bLevel); +extern void IncrementWatchedLoc(UINT16 ubID, INT32 sGridNo, INT8 bLevel); void LogDecideInfo(SOLDIERTYPE *pSoldier); void LogKnowledgeInfo(SOLDIERTYPE *pSoldier); @@ -759,7 +759,7 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier) { // WANNE: This should fix the bug if any merc are still under PC control. This could happen after boxing in SAN MONA. SOLDIERTYPE *pTeamSoldier; - for (INT8 bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++) + for (UINT16 bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++) { pTeamSoldier=MercPtrs[bLoop]; @@ -938,7 +938,7 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier) // Flugente: if we see one of our buddies in handcuffs, its a clear sign of enemy activity! if ( gGameExternalOptions.fAllowPrisonerSystem && pSoldier->bTeam == ENEMY_TEAM && !gTacticalStatus.Team[pSoldier->bTeam].bAwareOfOpposition ) { - UINT8 ubPerson = GetClosestFlaggedSoldierID( pSoldier, 20, ENEMY_TEAM, SOLDIER_POW, TRUE ); + UINT16 ubPerson = GetClosestFlaggedSoldierID( pSoldier, 20, ENEMY_TEAM, SOLDIER_POW, TRUE ); if ( ubPerson != NOBODY ) { @@ -950,7 +950,7 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier) // if we are a doctor with medical gear, we might be able to help a wounded ally if ( pSoldier->CanMedicAI() ) { - UINT8 ubPerson = GetClosestWoundedSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius, pSoldier->bTeam); + UINT16 ubPerson = GetClosestWoundedSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius, pSoldier->bTeam); // are we ourselves the patient? if ( ubPerson == pSoldier->ubID ) @@ -1004,7 +1004,7 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier) // if we are not a medic, but are wounded, seek a medic else if ( pSoldier->iHealableInjury >= gGameExternalOptions.sEnemyMedicsWoundMinAmount ) { - UINT8 ubPerson = GetClosestMedicSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius / 2, pSoldier->bTeam); + UINT16 ubPerson = GetClosestMedicSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius / 2, pSoldier->bTeam); if ( ubPerson != NOBODY ) { @@ -1661,7 +1661,7 @@ INT8 DecideActionYellow(SOLDIERTYPE *pSoldier) // Flugente: if we see one of our buddies captured, it is a clear sign of enemy activity! if ( gGameExternalOptions.fAllowPrisonerSystem && pSoldier->bTeam == ENEMY_TEAM ) { - UINT8 ubPerson = GetClosestFlaggedSoldierID( pSoldier, 20, ENEMY_TEAM, SOLDIER_POW, TRUE ); + UINT16 ubPerson = GetClosestFlaggedSoldierID( pSoldier, 20, ENEMY_TEAM, SOLDIER_POW, TRUE ); if ( ubPerson != NOBODY ) { @@ -1705,7 +1705,7 @@ INT8 DecideActionYellow(SOLDIERTYPE *pSoldier) // if we are a doctor with medical gear, we might be able to help a wounded ally if ( pSoldier->CanMedicAI() ) { - UINT8 ubPerson = GetClosestWoundedSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius, pSoldier->bTeam); + UINT16 ubPerson = GetClosestWoundedSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius, pSoldier->bTeam); // are we ourselves the patient? if ( ubPerson == pSoldier->ubID ) @@ -1759,7 +1759,7 @@ INT8 DecideActionYellow(SOLDIERTYPE *pSoldier) // if we are not a medic, but are wounded, seek a medic else if ( pSoldier->iHealableInjury >= gGameExternalOptions.sEnemyMedicsWoundMinAmount ) { - UINT8 ubPerson = GetClosestMedicSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius / 2, pSoldier->bTeam); + UINT16 ubPerson = GetClosestMedicSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius / 2, pSoldier->bTeam); if ( ubPerson != NOBODY ) { @@ -3286,7 +3286,7 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier) // Flugente: if we see one of our buddies captured, it is a clear sign of enemy activity! if ( gGameExternalOptions.fAllowPrisonerSystem && pSoldier->bTeam == ENEMY_TEAM ) { - UINT8 ubPerson = GetClosestFlaggedSoldierID( pSoldier, 20, ENEMY_TEAM, SOLDIER_POW, TRUE ); + UINT16 ubPerson = GetClosestFlaggedSoldierID( pSoldier, 20, ENEMY_TEAM, SOLDIER_POW, TRUE ); if ( ubPerson != NOBODY ) { @@ -3325,7 +3325,7 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier) // if we are a doctor with medical gear, we might be able to help a wounded ally if ( pSoldier->CanMedicAI() ) { - UINT8 ubPerson = GetClosestWoundedSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius, pSoldier->bTeam); + UINT16 ubPerson = GetClosestWoundedSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius, pSoldier->bTeam); // are we ourselves the patient? if ( ubPerson == pSoldier->ubID ) @@ -3379,7 +3379,7 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier) // if we are not a medic, but are wounded, seek a medic else if ( pSoldier->iHealableInjury >= gGameExternalOptions.sEnemyMedicsWoundMinAmount ) { - UINT8 ubPerson = GetClosestMedicSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius / 2, pSoldier->bTeam); + UINT16 ubPerson = GetClosestMedicSoldierID( pSoldier, gGameExternalOptions.sEnemyMedicsSearchRadius / 2, pSoldier->bTeam); if ( ubPerson != NOBODY ) { @@ -6842,7 +6842,7 @@ L_NEWAIM: { DebugAI(AI_MSG_TOPIC, pSoldier, String("[Make boxer close if possible]")); - UINT8 ubOpponentID; + UINT16 ubOpponentID; sClosestOpponent = ClosestKnownOpponent(pSoldier, NULL, NULL, &ubOpponentID); DebugAI(AI_MSG_INFO, pSoldier, String("boxer: found closest opponent [%d] at %d", ubOpponentID, sClosestOpponent)); diff --git a/TacticalAI/FindLocations.cpp b/TacticalAI/FindLocations.cpp index 5cc98c7c..4ed9142d 100644 --- a/TacticalAI/FindLocations.cpp +++ b/TacticalAI/FindLocations.cpp @@ -123,7 +123,7 @@ void AICenterXY( INT32 sGridNo, FLOAT * pdX, FLOAT * pdY ) *pdY = (FLOAT) (sYPos * CELL_Y_SIZE + CELL_Y_SIZE / 2); } -INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, UINT8 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) +INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, UINT16 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) { // When considering a gridno for cover, we want to take into account cover if we // lie down, so we return the LOWEST chance to get through for that location. @@ -162,7 +162,7 @@ INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, UINT8 ubOppID, INT32 sOpp return( bWorstCTGT ); } -INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, UINT8 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) +INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, UINT16 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) { // When considering a gridno for cover, we want to take into account cover if we // lie down, so we return the LOWEST chance to get through for that location. @@ -196,7 +196,7 @@ INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, UINT8 ubOppID, INT32 sO } -INT8 CalcBestCTGT( SOLDIERTYPE *pSoldier, UINT8 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) +INT8 CalcBestCTGT( SOLDIERTYPE *pSoldier, UINT16 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ) { // NOTE: CTGT stands for "ChanceToGetThrough..." @@ -595,7 +595,8 @@ INT32 CalcCoverValue(SOLDIERTYPE *pMe, INT32 sMyGridNo, INT32 iMyThreat, INT32 i UINT8 NumberOfTeamMatesAdjacent( SOLDIERTYPE * pSoldier, INT32 sGridNo ) { - UINT8 ubLoop, ubCount, ubWhoIsThere; + UINT8 ubLoop, ubCount; + UINT16 ubWhoIsThere; INT32 sTempGridNo; ubCount = 0; diff --git a/TacticalAI/Medical.cpp b/TacticalAI/Medical.cpp index 86bf9eb8..4d38e791 100644 --- a/TacticalAI/Medical.cpp +++ b/TacticalAI/Medical.cpp @@ -44,9 +44,9 @@ BOOLEAN FindAutobandageClimbPoint( INT32 sDesiredGridNo, BOOLEAN fClimbUp ) { // checks for existance of location to climb up to building, not occupied by a medic BUILDING * pBuilding; - UINT8 ubNumClimbSpots; + UINT8 ubNumClimbSpots; UINT8 ubLoop; - UINT8 ubWhoIsThere; + UINT16 ubWhoIsThere; pBuilding = FindBuilding( sDesiredGridNo ); if (!pBuilding) @@ -76,8 +76,8 @@ BOOLEAN FindAutobandageClimbPoint( INT32 sDesiredGridNo, BOOLEAN fClimbUp ) BOOLEAN FullPatientCheck( SOLDIERTYPE * pPatient ) { - UINT8 cnt; - SOLDIERTYPE * pSoldier; + UINT16 cnt; + SOLDIERTYPE * pSoldier; if ( CanCharacterAutoBandageTeammate( pPatient ) ) { @@ -123,10 +123,10 @@ BOOLEAN FullPatientCheck( SOLDIERTYPE * pPatient ) BOOLEAN CanAutoBandage( BOOLEAN fDoFullCheck ) { // returns false if we should stop being in auto-bandage mode - UINT8 cnt; - UINT8 ubMedics = 0, ubPatients = 0; + UINT16 cnt; + UINT16 ubMedics = 0, ubPatients = 0; SOLDIERTYPE * pSoldier; - static UINT8 ubIDForFullCheck = NOBODY; + static UINT16 ubIDForFullCheck = NOBODY; // run though the list of chars on team cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; @@ -231,18 +231,19 @@ BOOLEAN CanCharacterBeAutoBandagedByTeammate( SOLDIERTYPE *pSoldier ) INT8 FindBestPatient( SOLDIERTYPE * pSoldier, BOOLEAN * pfDoClimb ) { - UINT8 cnt, cnt2; - INT32 bBestPriority = 0, sBestAdjGridNo = NOWHERE; - INT32 sPatientGridNo = NOWHERE, sBestPatientGridNo = NOWHERE; - INT16 sShortestPath = 1000, sPathCost, sOtherMedicPathCost; - SOLDIERTYPE * pPatient; - SOLDIERTYPE * pBestPatient = NULL; - SOLDIERTYPE * pOtherMedic; - INT8 bPatientPriority; - UINT8 ubDirection; + UINT16 cnt; + UINT8 cnt2; + INT32 bBestPriority = 0, sBestAdjGridNo = NOWHERE; + INT32 sPatientGridNo = NOWHERE, sBestPatientGridNo = NOWHERE; + INT16 sShortestPath = 1000, sPathCost, sOtherMedicPathCost; + SOLDIERTYPE * pPatient; + SOLDIERTYPE * pBestPatient = NULL; + SOLDIERTYPE * pOtherMedic; + INT8 bPatientPriority; + UINT8 ubDirection; INT32 sAdjustedGridNo, sAdjacentGridNo, sOtherAdjacentGridNo; - INT32 sClimbGridNo, sBestClimbGridNo = NOWHERE, sShortestClimbPath = 1000; - BOOLEAN fClimbingNecessary; + INT32 sClimbGridNo, sBestClimbGridNo = NOWHERE, sShortestClimbPath = 1000; + BOOLEAN fClimbingNecessary; gubGlobalPathFlags = PATH_THROUGH_PEOPLE; @@ -478,7 +479,7 @@ INT8 DecideAutoBandage( SOLDIERTYPE * pSoldier ) BOOLEAN DoctorIsPresent( SOLDIERTYPE * pPatient, BOOLEAN fOnDoctorAssignmentCheck ) { SOLDIERTYPE * pMedic = NULL; - UINT8 cnt; + UINT16 cnt; INT8 bSlot; BOOLEAN fDoctorHasBeenFound = FALSE; diff --git a/TacticalAI/NPC.cpp b/TacticalAI/NPC.cpp index 3a501194..c7d08178 100644 --- a/TacticalAI/NPC.cpp +++ b/TacticalAI/NPC.cpp @@ -2566,7 +2566,8 @@ void Converse( UINT8 ubNPC, UINT8 ubMerc, INT8 bApproach, UINT32 uiApproachData INT32 NPCConsiderInitiatingConv( SOLDIERTYPE * pNPC, UINT8 * pubDesiredMerc ) { INT32 sMyGridNo, sDist, sDesiredMercDist = 100; - UINT8 ubNPC, ubMerc, ubDesiredMerc = NOBODY; + UINT8 ubNPC; + UINT16 ubMerc, ubDesiredMerc = NOBODY; UINT8 ubTalkDesire, ubHighestTalkDesire = 0; SOLDIERTYPE * pMerc; SOLDIERTYPE * pDesiredMerc = NULL; @@ -2913,9 +2914,9 @@ BOOLEAN PCDoesFirstAidOnNPC( UINT8 ubNPC ) void TriggerClosestMercWhoCanSeeNPC( UINT8 ubNPC, NPCQuoteInfo *pQuotePtr ) { // Loop through all mercs, gather closest mercs who can see and trigger one! - UINT8 ubMercsInSector[ 40 ] = { 0 }; - UINT8 ubNumMercs = 0; - UINT8 ubChosenMerc; + UINT16 ubMercsInSector[CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS] = { 0 }; //std::vector would probably be better here + UINT16 ubNumMercs = 0; + UINT16 ubChosenMerc; SOLDIERTYPE *pTeamSoldier, *pSoldier; INT32 cnt; @@ -2933,7 +2934,7 @@ void TriggerClosestMercWhoCanSeeNPC( UINT8 ubNPC, NPCQuoteInfo *pQuotePtr ) // Add guy if he's a candidate... if ( OK_INSECTOR_MERC( pTeamSoldier ) && pTeamSoldier->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY ) { - ubMercsInSector[ ubNumMercs ] = (UINT8)cnt; + ubMercsInSector[ ubNumMercs ] = (UINT16)cnt; ubNumMercs++; } } @@ -2941,7 +2942,7 @@ void TriggerClosestMercWhoCanSeeNPC( UINT8 ubNPC, NPCQuoteInfo *pQuotePtr ) // If we are > 0 if ( ubNumMercs > 0 ) { - ubChosenMerc = (UINT8)Random( ubNumMercs ); + ubChosenMerc = (UINT16)Random( ubNumMercs ); // Post action to close panel NPCClosePanel( ); @@ -3649,12 +3650,12 @@ BOOLEAN LoadBackupNPCInfoFromSavedGameFile( HWFILE hFile, UINT32 uiSaveGameVersi void TriggerFriendWithHostileQuote( UINT8 ubNPC ) { - UINT8 ubMercsAvailable[ 40 ] = { 0 }; - UINT8 ubNumMercsAvailable = 0, ubChosenMerc; - SOLDIERTYPE * pTeamSoldier; - SOLDIERTYPE * pSoldier; - INT32 cnt; - INT8 bTeam; + UINT16 ubMercsAvailable[CODE_MAXIMUM_NUMBER_OF_PLAYER_MERCS] = { 0 }; + UINT16 ubNumMercsAvailable = 0, ubChosenMerc; + SOLDIERTYPE * pTeamSoldier; + SOLDIERTYPE * pSoldier; + INT32 cnt; + INT8 bTeam; // First get pointer to NPC pSoldier = FindSoldierByProfileID( ubNPC, FALSE ); @@ -3697,7 +3698,7 @@ void TriggerFriendWithHostileQuote( UINT8 ubNPC ) if (ubNumMercsAvailable > 0) { PauseAITemporarily(); - ubChosenMerc = (UINT8) Random( ubNumMercsAvailable ); + ubChosenMerc = (UINT16) Random( ubNumMercsAvailable ); TriggerNPCWithIHateYouQuote( ubMercsAvailable[ ubChosenMerc ] ); } else diff --git a/TacticalAI/PanicButtons.cpp b/TacticalAI/PanicButtons.cpp index 970879b9..64471ef4 100644 --- a/TacticalAI/PanicButtons.cpp +++ b/TacticalAI/PanicButtons.cpp @@ -19,7 +19,7 @@ void MakeClosestEnemyChosenOne() UINT32 cnt; INT16 sPathCost, sShortestPath = 1000; INT8 bOldKeys = -1; - UINT8 ubClosestEnemy = NOBODY; + UINT16 ubClosestEnemy = NOBODY; SOLDIERTYPE * pSoldier; INT8 bPanicTrigger; INT32 sPanicTriggerGridNo; diff --git a/TacticalAI/ZombieDecideAction.cpp b/TacticalAI/ZombieDecideAction.cpp index 9ed67fb8..c21c50a7 100644 --- a/TacticalAI/ZombieDecideAction.cpp +++ b/TacticalAI/ZombieDecideAction.cpp @@ -575,7 +575,7 @@ INT8 ZombieDecideActionRed(SOLDIERTYPE *pSoldier) INT8 bInWater, bInDeepWater; INT8 bSeekPts = 0, bHelpPts = 0, bWatchPts = 0; BOOLEAN fClimb; - UINT8 ubThreatID = NOBODY; + UINT16 ubThreatID = NOBODY; INT32 sThreatSpot = NOWHERE; INT8 bThreatLevel = 0; @@ -914,7 +914,7 @@ INT8 ZombieDecideActionBlack(SOLDIERTYPE *pSoldier) INT8 bWeaponIn; BOOLEAN fClimb; INT32 iDummy; - UINT8 ubThreatID = NOBODY; + UINT16 ubThreatID = NOBODY; INT32 sThreatSpot = NOWHERE; INT8 bThreatLevel = 0; diff --git a/TacticalAI/ai.h b/TacticalAI/ai.h index c30be8cb..41508367 100644 --- a/TacticalAI/ai.h +++ b/TacticalAI/ai.h @@ -175,7 +175,7 @@ void CheckForChangingOrders(SOLDIERTYPE *pSoldier ); INT8 ClosestPanicTrigger( SOLDIERTYPE * pSoldier ); -INT32 ClosestKnownOpponent(SOLDIERTYPE *pSoldier, INT32 * psGridNo, INT8 * pbLevel, UINT8 *pubOpponentID = NULL); +INT32 ClosestKnownOpponent(SOLDIERTYPE *pSoldier, INT32 * psGridNo, INT8 * pbLevel, UINT16 * pubOpponentID = NULL); INT32 ClosestPC( SOLDIERTYPE *pSoldier, INT32 * psDistance ); INT32 ClosestUnDisguisedPC( SOLDIERTYPE *pSoldier, INT32 * psDistance ); // Flugente: like ClosestPC(...), but does not account for covert or not visible mercs BOOLEAN CanAutoBandage( BOOLEAN fDoFullCheck ); @@ -220,7 +220,7 @@ BOOLEAN FindRoofClimbingPoints( SOLDIERTYPE * pSoldier, INT16 sDesiredSpot ); INT32 FindSpotMaxDistFromOpponents(SOLDIERTYPE *pSoldier); INT32 FindSweetCoverSpot(SOLDIERTYPE *pSoldier); -void FreeUpNPCFromAttacking(UINT8 ubID); +void FreeUpNPCFromAttacking(UINT16 ubID); void FreeUpNPCFromPendingAction( SOLDIERTYPE * pSoldier ); void FreeUpNPCFromTurning(SOLDIERTYPE *pSoldier, INT8 bLook); void FreeUpNPCFromStanceChange(SOLDIERTYPE *pSoldier ); @@ -228,7 +228,7 @@ void FreeUpNPCFromLoweringGun( SOLDIERTYPE *pSoldier ); void FreeUpNPCFromRoofClimb(SOLDIERTYPE *pSoldier ); UINT8 GetClosestOpponent( SOLDIERTYPE *pSoldier ); -UINT8 GetMostThreateningOpponent( SOLDIERTYPE *pSoldier ); +UINT16 GetMostThreateningOpponent( SOLDIERTYPE *pSoldier ); void HandleSoldierAI( SOLDIERTYPE *pSoldier ); void HandleInitialRedAlert( INT8 bTeam, UINT8 ubCommunicate); @@ -271,19 +271,19 @@ INT32 FindFlankingSpot(SOLDIERTYPE *pSoldier, INT32 sPos, INT8 bAction ); BOOLEAN CanClimbFromHere (SOLDIERTYPE * pSoldier, BOOLEAN fUp ); // HEADROCK HAM 3.6: Adding includes for A* cover calculations -INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, UINT8 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); -INT8 CalcBestCTGT( SOLDIERTYPE *pSoldier, UINT8 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); -INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, UINT8 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); +INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, UINT16 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); +INT8 CalcBestCTGT( SOLDIERTYPE *pSoldier, UINT16 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); +INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, UINT16 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft ); UINT8 NumberOfTeamMatesAdjacent( SOLDIERTYPE * pSoldier, INT32 sGridNo ); // Flugente: get the id of the closest soldier (coser than x tiles) of a specific team with a specific flag that we can currently see -UINT8 GetClosestFlaggedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam, UINT32 aFlag, BOOLEAN fCheckSight = TRUE ); +UINT16 GetClosestFlaggedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam, UINT32 aFlag, BOOLEAN fCheckSight = TRUE ); // get the id of the closest soldier (closer than x tiles) of a specific team that is wounded that we can currently see -UINT8 GetClosestWoundedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam ); +UINT16 GetClosestWoundedSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam ); // get the id of the closest medic (closer than x tiles) of a specific team -UINT8 GetClosestMedicSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam ); +UINT16 GetClosestMedicSoldierID( SOLDIERTYPE * pSoldier, INT16 aRange, UINT8 auTeam ); // sevenfm: BOOLEAN NightLight(void); @@ -291,15 +291,15 @@ BOOLEAN DuskLight(void); BOOLEAN InSmokeNearby(INT32 sGridNo, INT8 bLevel); INT16 MaxNormalVisionDistance( void ); UINT8 MinFlankDirections( SOLDIERTYPE *pSoldier ); -UINT8 CountFriendsInDirection( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ); +UINT16 CountFriendsInDirection( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo ); BOOLEAN GuySawEnemy( SOLDIERTYPE * pSoldier, UINT8 ubMax = SEEN_3_TURNS_AGO ); -UINT8 CountNearbyFriends( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistance ); +UINT16 CountNearbyFriends( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistance ); UINT8 CountNearbyFriendsLastAttackHit( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT8 ubDistance ); UINT8 CountFriendsFlankSameSpot(SOLDIERTYPE *pSoldier, INT32 sSpot = NOWHERE); UINT8 CountFriendsBlack( SOLDIERTYPE *pSoldier, INT32 sClosestOpponent = NOWHERE ); -UINT8 CountTeamUnderAttack(INT8 bTeam, INT32 sGridNo, INT16 sDistance); -UINT8 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 sDistance); -UINT8 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier); +UINT16 CountTeamUnderAttack(INT8 bTeam, INT32 sGridNo, INT16 sDistance); +UINT16 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 sDistance); +UINT16 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier); UINT8 SectorCurfew(BOOLEAN fNight); UINT8 TeamPercentKilled(INT8 bTeam); @@ -308,15 +308,15 @@ UINT8 ArmyPercentKilled(void); UINT8 ArmyPercentKilledTolerance(void); BOOLEAN EnemySeenSoldierRecently( SOLDIERTYPE *pSoldier, UINT8 ubMax = SEEN_3_TURNS_AGO ); -UINT8 CountTeamSeeSoldier( INT8 bTeam, SOLDIERTYPE *pSoldier ); +UINT16 CountTeamSeeSoldier( INT8 bTeam, SOLDIERTYPE *pSoldier ); BOOLEAN AICheckFriendsNoContact( SOLDIERTYPE *pSoldier ); BOOLEAN AICheckIsFlanking( SOLDIERTYPE *pSoldier ); INT8 CalcMoraleNew(SOLDIERTYPE *pSoldier); void PrepareThreatlist(SOLDIERTYPE *pSoldier); -UINT8 ClosestSeenThreatID(SOLDIERTYPE *pSoldier, UINT8 ubMax = SEEN_CURRENTLY); // first call PrepareThreatlist to make threat list -UINT8 ClosestKnownThreatID(SOLDIERTYPE *pSoldier); // first call PrepareThreatlist to make threat list +UINT16 ClosestSeenThreatID(SOLDIERTYPE *pSoldier, UINT8 ubMax = SEEN_CURRENTLY); // first call PrepareThreatlist to make threat list +UINT16 ClosestKnownThreatID(SOLDIERTYPE *pSoldier); // first call PrepareThreatlist to make threat list BOOLEAN ProneSightCoverAtSpot(SOLDIERTYPE *pSoldier, INT32 sSpot, BOOLEAN fUnlimited); BOOLEAN SightCoverAtSpot(SOLDIERTYPE *pSoldier, INT32 sSpot, BOOLEAN fUnlimited); @@ -336,7 +336,7 @@ UINT8 TerrainDensity(INT32 sSpot, INT8 bLevel, UINT8 ubDistance, BOOLEAN fGrass) BOOLEAN FindNearbyExplosiveStructure(INT32 sSpot, INT8 bLevel); INT16 DistanceToClosestActiveOpponent(SOLDIERTYPE *pSoldier, INT32 sSpot); BOOLEAN ValidOpponent(SOLDIERTYPE* pSoldier, SOLDIERTYPE* pOpponent); -UINT8 CountSeenEnemiesLastTurn( SOLDIERTYPE *pSoldier ); +UINT16 CountSeenEnemiesLastTurn( SOLDIERTYPE *pSoldier ); BOOLEAN FindObstacleNearSpot(INT32 sSpot, INT8 bLevel); BOOLEAN CheckNPCDestination(SOLDIERTYPE *pSoldier, INT32 sGridNo); UINT8 SpotDangerLevel(SOLDIERTYPE *pSoldier, INT32 sGridNo); @@ -387,19 +387,19 @@ BOOLEAN AICheckSpecialRole(SOLDIERTYPE *pSoldier); // Knowledge functions // ************************************************************* -INT8 Knowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID); -INT32 KnownLocation(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID); -INT8 KnownLevel(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID); +INT8 Knowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID); +INT32 KnownLocation(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID); +INT8 KnownLevel(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID); -BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID); +BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID); -INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID); -INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID); -INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, UINT8 ubOpponentID); +INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID); +INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID); +INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID); -INT8 PublicKnowledge(UINT8 bTeam, UINT8 ubOpponentID); -INT32 KnownPublicLocation(UINT8 bTeam, UINT8 ubOpponentID); -INT8 KnownPublicLevel(UINT8 bTeam, UINT8 ubOpponentID); +INT8 PublicKnowledge(UINT8 bTeam, UINT16 ubOpponentID); +INT32 KnownPublicLocation(UINT8 bTeam, UINT16 ubOpponentID); +INT8 KnownPublicLevel(UINT8 bTeam, UINT16 ubOpponentID); #define MAX_FLANKS_RED 25 #define MAX_FLANKS_YELLOW 25 diff --git a/TileEngine/Explosion Control.cpp b/TileEngine/Explosion Control.cpp index b4fbfb45..258d73c5 100644 --- a/TileEngine/Explosion Control.cpp +++ b/TileEngine/Explosion Control.cpp @@ -69,19 +69,19 @@ BOOLEAN HookerInRoom( UINT16 usRoom ); // MODULE FOR EXPLOSIONS // Spreads the effects of explosions... -BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usItem, UINT8 ubOwner, INT16 sSubsequent, BOOLEAN *pfMercHit, INT8 bLevel, INT32 iSmokeEffectID ); +BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usItem, UINT16 ubOwner, INT16 sSubsequent, BOOLEAN *pfMercHit, INT8 bLevel, INT32 iSmokeEffectID ); // Flashbang effect on soldier UINT8 DetermineFlashbangEffect( SOLDIERTYPE *pSoldier, INT8 ubExplosionDir, BOOLEAN fInBuilding); // HEADROCK HAM 5.1: Explosion Fragments launcher -void FireFragments( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, UINT16 usItem, UINT8 ubDirection = DIRECTION_IRRELEVANT ); +void FireFragments( UINT16 ubOwner, INT16 sX, INT16 sY, INT16 sZ, UINT16 usItem, UINT8 ubDirection = DIRECTION_IRRELEVANT ); // Flugente: shoot a gun without anyone operating it (used for makeshift traps wih guns) void FireFragmentsTrapGun( SOLDIERTYPE* pThrower, INT32 gridno, INT16 sZ, OBJECTTYPE* pObj, UINT8 ubDirection = NORTH ); extern INT8 gbSAMGraphicList[ MAX_NUMBER_OF_SAMS ]; -extern void AddToShouldBecomeHostileOrSayQuoteList( UINT8 ubID ); +extern void AddToShouldBecomeHostileOrSayQuoteList( UINT16 ubID ); extern void RecompileLocalMovementCostsForWall( INT32 sGridNo, UINT8 ubOrientation ); void FatigueCharacter( SOLDIERTYPE *pSoldier ); @@ -182,11 +182,11 @@ UINT8 gubElementsOnExplosionQueue = 0; BOOLEAN gfExplosionQueueActive = FALSE; BOOLEAN gfExplosionQueueMayHaveChangedSight = FALSE; -UINT8 gubPersonToSetOffExplosions = NOBODY; +UINT16 gubPersonToSetOffExplosions = NOBODY; INT32 gsTempActionGridNo = NOWHERE; -extern UINT8 gubInterruptProvoker; +extern UINT16 gubInterruptProvoker; #define NUM_EXPLOSION_SLOTS 100 @@ -198,7 +198,7 @@ UINT32 guiNumExplosions = 0; INT32 GetFreeExplosion( void ); void RecountExplosions( void ); void GenerateExplosionFromExplosionPointer( EXPLOSIONTYPE *pExplosion ); -void HandleBuldingDestruction( INT32 sGridNo, UINT8 ubOwner ); +void HandleBuldingDestruction( INT32 sGridNo, UINT16 ubOwner ); #ifdef JA2UB //JA25 UB @@ -251,7 +251,7 @@ void RecountExplosions( void ) extern void HandleLoyaltyForDemolitionOfBuilding( SOLDIERTYPE *pSoldier, INT16 sPointsDmg ); // GENERATE EXPLOSION -void InternalIgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj ) +void InternalIgniteExplosion( UINT16 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj ) { #ifdef JA2BETAVERSION if (is_networked) { @@ -392,7 +392,7 @@ void InternalIgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 } -void IgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj ) +void IgniteExplosion( UINT16 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj ) { InternalIgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, usItem, TRUE, bLevel, ubDirection, pObj ); } @@ -654,8 +654,9 @@ void HandleFencePartnerCheck( INT32 sStructGridNo ) -INT8 ExplosiveDamageStructureAtGridNo( STRUCTURE * pCurrent, STRUCTURE **ppNextCurrent, INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist, - BOOLEAN *pfRecompileMovementCosts, BOOLEAN fOnlyWalls, BOOLEAN fSubSequentMultiTilesTransitionDamage, UINT8 ubOwner, INT8 bLevel, +INT8 ExplosiveDamageStructureAtGridNo( STRUCTURE * pCurrent, STRUCTURE **ppNextCurrent, INT32 sGridNo, INT16 sWoundAmt, + UINT32 uiDist, + BOOLEAN *pfRecompileMovementCosts, BOOLEAN fOnlyWalls, BOOLEAN fSubSequentMultiTilesTransitionDamage, UINT16 ubOwner, INT8 bLevel, UINT8 ubReason ) { #ifdef JA2BETAVERSION @@ -1335,8 +1336,10 @@ INT8 ExplosiveDamageStructureAtGridNo( STRUCTURE * pCurrent, STRUCTURE **ppNextC STRUCTURE *gStruct; -void ExplosiveDamageGridNo( INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist, BOOLEAN *pfRecompileMovementCosts, - BOOLEAN fOnlyWalls, INT8 bMultiStructSpecialFlag, BOOLEAN fSubSequentMultiTilesTransitionDamage, UINT8 ubOwner, INT8 bLevel, +void ExplosiveDamageGridNo( INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist, + BOOLEAN *pfRecompileMovementCosts, + BOOLEAN fOnlyWalls, INT8 bMultiStructSpecialFlag, BOOLEAN fSubSequentMultiTilesTransitionDamage, UINT16 ubOwner, + INT8 bLevel, UINT8 ubReason ) { #ifdef JA2BETAVERSION @@ -1519,7 +1522,7 @@ void ExplosiveDamageGridNo( INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist, BOOLE } -BOOLEAN DamageSoldierFromBlast( UINT8 ubPerson, UINT8 ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent , BOOL fFromRemoteClient ) +BOOLEAN DamageSoldierFromBlast( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent, BOOL fFromRemoteClient ) { // OJW - 20091028 if (is_networked && is_client) @@ -1889,12 +1892,12 @@ BOOLEAN DamageSoldierFromBlast( UINT8 ubPerson, UINT8 ubOwner, INT32 sBombGridNo if (IsOurSoldier(pSoldier) || (pSoldier->bTeam == 1 && is_server) && !fFromRemoteClient) { // if it gets here then we can let the other clients know our merc took damage - send_explosivedamage( ubPerson , ubOwner , sBombGridNo , sNewWoundAmt , sBreathAmt , uiDist , usItem , sSubsequent ); + send_explosivedamage( ubPerson, ubOwner, sBombGridNo, sNewWoundAmt, sBreathAmt, uiDist, usItem, sSubsequent ); } } // OJW - 20091028 - If from a remote client, use unadjusted damage amount - pSoldier->EVENT_SoldierGotHit( usItem, (fFromRemoteClient ? sWoundAmt : sNewWoundAmt) , sBreathAmt, ubDirection, (INT16)uiDist, ubOwner, ubSpecial, ANIM_CROUCH, sSubsequent, sBombGridNo ); + pSoldier->EVENT_SoldierGotHit( usItem, (fFromRemoteClient ? sWoundAmt : sNewWoundAmt), sBreathAmt, ubDirection, (INT16)uiDist, ubOwner, ubSpecial, ANIM_CROUCH, sSubsequent, sBombGridNo ); pSoldier->ubMiscSoldierFlags |= SOLDIER_MISC_HURT_BY_EXPLOSION; @@ -1906,7 +1909,7 @@ BOOLEAN DamageSoldierFromBlast( UINT8 ubPerson, UINT8 ubOwner, INT32 sBombGridNo return( TRUE ); } -BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, UINT8 ubOwner , BOOL fFromRemoteClient ) +BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, UINT16 ubOwner, BOOL fFromRemoteClient ) { // OJW - 20091028 if (is_networked && is_client) @@ -2154,7 +2157,7 @@ BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, IN // and align them with our random number generator if (IsOurSoldier(pSoldier) || (pSoldier->bTeam == 1 && is_server) && !fFromRemoteClient) { - send_gasdamage( pSoldier , pExplosive->uiIndex , sSubsequent , fRecompileMovementCosts , sWoundAmt , sBreathAmt , ubOwner ); + send_gasdamage( pSoldier, pExplosive->uiIndex, sSubsequent, fRecompileMovementCosts, sWoundAmt, sBreathAmt, ubOwner ); } } @@ -2171,7 +2174,7 @@ BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, IN return( fRecompileMovementCosts ); } -BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usItem, UINT8 ubOwner, INT16 sSubsequent, BOOLEAN *pfMercHit, INT8 bLevel, INT32 iSmokeEffectID ) +BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usItem, UINT16 ubOwner, INT16 sSubsequent, BOOLEAN *pfMercHit, INT8 bLevel, INT32 iSmokeEffectID ) { #ifdef JA2BETAVERSION if (is_networked) { @@ -2182,7 +2185,7 @@ BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usIte #endif INT16 sWoundAmt = 0,sBreathAmt = 0, /* sNewWoundAmt = 0, sNewBreathAmt = 0, */ sStructDmgAmt; - UINT8 ubPerson; + UINT16 ubPerson; SOLDIERTYPE *pSoldier; EXPLOSIVETYPE *pExplosive; INT16 sX, sY; @@ -2307,7 +2310,7 @@ BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usIte // ATE: Make sure guys get pissed at us! - HandleBuldingDestruction( sGridNo ,ubOwner ); + HandleBuldingDestruction( sGridNo,ubOwner ); if ( fBlastEffect ) @@ -2374,7 +2377,7 @@ BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usIte } } - ExplosiveDamageGridNo( sGridNo, sStructDmgAmt, uiDist, &fRecompileMovementCosts, FALSE, -1, 0 , ubOwner, bLevel, STRUCTURE_DAMAGE_EXPLOSION ); + ExplosiveDamageGridNo( sGridNo, sStructDmgAmt, uiDist, &fRecompileMovementCosts, FALSE, -1, 0, ubOwner, bLevel, STRUCTURE_DAMAGE_EXPLOSION ); // ATE: Look for damage to walls ONLY for next two gridnos sNewGridNo = NewGridNo( sGridNo, DirectionInc( NORTH ) ); @@ -2926,7 +2929,7 @@ void GetRayStopInfo( UINT32 uiNewSpot, UINT8 ubDir, INT8 bLevel, BOOLEAN fSmokeE -void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT8 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID , BOOL fFromRemoteClient , BOOL fNewSmokeEffect ) +void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT16 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID, BOOL fFromRemoteClient, BOOL fNewSmokeEffect ) { if (is_networked && is_client) { @@ -3291,7 +3294,7 @@ void BillyBlocksDoorCallback( void ) BOOLEAN HookerInRoom( UINT16 usRoom ) { //DBrot: More Rooms - UINT8 ubLoop;//, ubTempRoom; + UINT16 ubLoop;//, ubTempRoom; UINT16 usTempRoom; SOLDIERTYPE * pSoldier; @@ -3804,7 +3807,7 @@ void AddBombToQueue( UINT32 uiWorldBombIndex, UINT32 uiTimeStamp, BOOL fFromRemo WORLDITEM wi = gWorldItems[iWorldIndex]; if (wi.fExists) { - INT8 soldierID = wi.soldierID; // bomb's owner + INT16 soldierID = wi.soldierID; // bomb's owner if (soldierID == -1) soldierID = wi.object[0]->data.misc.ubBombOwner - 2; // undo the hack @@ -3835,7 +3838,7 @@ void AddBombToQueue( UINT32 uiWorldBombIndex, UINT32 uiTimeStamp, BOOL fFromRemo } // 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( UINT8 ubID, INT32 sGridNo, INT8 bLevel, UINT32 ubFlag ) +BOOLEAN ActivateSurroundingTripwire( UINT16 ubID, INT32 sGridNo, INT8 bLevel, UINT32 ubFlag ) { UINT32 uiTimeStamp= GetJA2Clock(); BOOLEAN fFoundMine = FALSE; @@ -3970,7 +3973,7 @@ BOOLEAN ActivateSurroundingTripwire( UINT8 ubID, INT32 sGridNo, INT8 bLevel, UIN } // 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, UINT8 ubId, UINT8 ubDirection ) +void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, UINT16 ubId, UINT8 ubDirection ) { if ( !pObj ) return; @@ -4063,7 +4066,7 @@ void HandleExplosionQueue( void ) if ( sSoundID > NO_ALT_SOUND ) PlayJA2Sample( sSoundID, RATE_11025, SoundVolume( HIGHVOLUME, sGridNo ), 1, SoundDir( sGridNo ) ); - UINT8 ubID = WhoIsThere2( sGridNo, ubLevel ); + UINT16 ubID = WhoIsThere2( sGridNo, ubLevel ); if ( ubID != NOBODY ) { @@ -4294,7 +4297,7 @@ void HandleExplosionQueue( void ) if (gfExplosionQueueMayHaveChangedSight) { - UINT8 ubLoop; + UINT16 ubLoop; SOLDIERTYPE * pTeamSoldier; // set variable so we may at least have someone to resolve interrupts vs @@ -4669,7 +4672,7 @@ void DecayBombTimers( void ) } } -void SetOffBombsByFrequency( UINT8 ubID, INT8 bFrequency ) +void SetOffBombsByFrequency( UINT16 ubID, INT8 bFrequency ) { UINT32 uiWorldBombIndex; UINT32 uiTimeStamp; @@ -4749,7 +4752,7 @@ void SetOffBombsByFrequency( UINT8 ubID, INT8 bFrequency ) // OJW - 20091029 - disarm explosives if (is_networked && is_client) - send_disarm_explosive( sGridNo , gWorldBombs[uiWorldBombIndex].iItemIndex, ubID ); + send_disarm_explosive( sGridNo, gWorldBombs[uiWorldBombIndex].iItemIndex, ubID ); // set back ubWireNetworkFlag and bDefuseFrequency, but not the direction... bomb is still aimed, it is just turned off (*pObj)[0]->data.ubWireNetworkFlag = 0; @@ -4857,7 +4860,7 @@ void SetOffBombsByFrequency( UINT8 ubID, INT8 bFrequency ) } } -void SetOffPanicBombs( UINT8 ubID, INT8 bPanicTrigger ) +void SetOffPanicBombs( UINT16 ubID, INT8 bPanicTrigger ) { // need to turn off gridnos & flags in gTacticalStatus gTacticalStatus.sPanicTriggerGridNo[ bPanicTrigger ] = NOWHERE; @@ -4895,7 +4898,7 @@ void SetOffPanicBombs( UINT8 ubID, INT8 bPanicTrigger ) } } -BOOLEAN SetOffBombsInGridNo( UINT8 ubID, INT32 sGridNo, BOOLEAN fAllBombs, INT8 bLevel ) +BOOLEAN SetOffBombsInGridNo( UINT16 ubID, INT32 sGridNo, BOOLEAN fAllBombs, INT8 bLevel ) { UINT32 uiWorldBombIndex; UINT32 uiTimeStamp; @@ -5006,7 +5009,7 @@ BOOLEAN SetOffBombsInGridNo( UINT8 ubID, INT32 sGridNo, BOOLEAN fAllBombs, INT8 return( fFoundMine ); } -void ActivateSwitchInGridNo( UINT8 ubID, INT32 sGridNo ) +void ActivateSwitchInGridNo( UINT16 ubID, INT32 sGridNo ) { UINT32 uiWorldBombIndex; OBJECTTYPE * pObj; @@ -5307,10 +5310,10 @@ 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, UINT8 ubOwner ) +void HandleBuldingDestruction( INT32 sGridNo, UINT16 ubOwner ) { SOLDIERTYPE * pSoldier; - UINT8 cnt; + UINT16 cnt; if ( ubOwner == NOBODY ) { @@ -5432,7 +5435,7 @@ UINT8 DetermineFlashbangEffect( SOLDIERTYPE *pSoldier, INT8 ubExplosionDir, BOOL // HEADROCK HAM 5.1: This handles launching fragments out of an explosion. The number of fragments is read from // the Explosives.XML file, and they each have a set amount of damage and range as well. They are currently // fired at completely random trajectories. -void FireFragments( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, UINT16 usItem, UINT8 ubDirection ) +void FireFragments( UINT16 ubOwner, INT16 sX, INT16 sY, INT16 sZ, UINT16 usItem, UINT8 ubDirection ) { // WANNE: Disable Fragments in a multiplayer game, because this can lead to crashes when stepping on mines, ... if (is_networked) @@ -5951,7 +5954,7 @@ BOOLEAN HandleAttachedExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, IN NewLightEffect( sGridNo, (UINT8)Explosive[ Item[iter->usItem].ubClassIndex ].ubDuration, (UINT8)Explosive[iter->usItem].ubStartRadius ); } else { - IgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, Item[iter->usItem].uiIndex, bLevel, direction , NULL ); + IgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, Item[iter->usItem].uiIndex, bLevel, direction, NULL ); } fAttFound = TRUE; } @@ -5960,17 +5963,17 @@ BOOLEAN HandleAttachedExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, IN { if(Item[iter->usItem].gascan) { - IgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, GAS_EXPLOSION, bLevel, DIRECTION_IRRELEVANT , NULL ); + IgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, GAS_EXPLOSION, bLevel, DIRECTION_IRRELEVANT, NULL ); fAttFound = TRUE; } if ( Item[iter->usItem].alcohol > 0.0f ) { - IgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, MOLOTOV_EXPLOSION, bLevel, DIRECTION_IRRELEVANT , NULL ); + IgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, MOLOTOV_EXPLOSION, bLevel, DIRECTION_IRRELEVANT, NULL ); fAttFound = TRUE; } if(Item[iter->usItem].marbles) { - IgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, FRAG_EXPLOSION, bLevel, DIRECTION_IRRELEVANT , NULL ); + IgniteExplosion( ubOwner, sX, sY, sZ, sGridNo, FRAG_EXPLOSION, bLevel, DIRECTION_IRRELEVANT, NULL ); fAttFound = TRUE; } } diff --git a/TileEngine/Explosion Control.h b/TileEngine/Explosion Control.h index acea7f41..b668dd86 100644 --- a/TileEngine/Explosion Control.h +++ b/TileEngine/Explosion Control.h @@ -15,7 +15,7 @@ typedef struct { UINT32 uiFlags; - UINT8 ubOwner; + UINT16 ubOwner; INT8 ubTypeID; UINT16 usItem; @@ -100,8 +100,8 @@ extern EXPLOSIONTYPE gExplosionData[ NUM_EXPLOSION_SLOTS ]; extern UINT8 gubElementsOnExplosionQueue; extern BOOLEAN gfExplosionQueueActive; -void IgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubDirection = DIRECTION_IRRELEVANT, OBJECTTYPE * pObj =NULL ); -void InternalIgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection = DIRECTION_IRRELEVANT, OBJECTTYPE * pObj =NULL ); +void IgniteExplosion( UINT16 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubDirection = DIRECTION_IRRELEVANT, OBJECTTYPE * pObj =NULL ); +void InternalIgniteExplosion( UINT16 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection = DIRECTION_IRRELEVANT, OBJECTTYPE * pObj =NULL ); void GenerateExplosion( EXPLOSION_PARAMS *pExpParams ); @@ -110,10 +110,10 @@ void GenerateExplosion( EXPLOSION_PARAMS *pExpParams ); void HandleExplosionWarningAnimations( ); void DecayBombTimers( void ); -void SetOffBombsByFrequency( UINT8 ubID, INT8 bFrequency ); -BOOLEAN SetOffBombsInGridNo( UINT8 ubID, INT32 sGridNo, BOOLEAN fAllBombs, INT8 bLevel ); -void ActivateSwitchInGridNo( UINT8 ubID, INT32 sGridNo ); -void SetOffPanicBombs( UINT8 ubID, INT8 bPanicTrigger ); +void SetOffBombsByFrequency( UINT16 ubID, INT8 bFrequency ); +BOOLEAN SetOffBombsInGridNo( UINT16 ubID, INT32 sGridNo, BOOLEAN fAllBombs, INT8 bLevel ); +void ActivateSwitchInGridNo( UINT16 ubID, INT32 sGridNo ); +void SetOffPanicBombs( UINT16 ubID, INT8 bPanicTrigger ); void UpdateExplosionFrame( INT32 iIndex, INT16 sCurrentFrame ); void RemoveExplosionData( INT32 iIndex ); @@ -136,16 +136,16 @@ void RemoveActiveExplosionMarkers(); #define GASMASK_MIN_STATUS 70 // OJW - 20091028 - Explosion damage sync -BOOLEAN DamageSoldierFromBlast( UINT8 ubPerson, UINT8 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, UINT8 ubOwner , BOOL fFromRemoteClient = FALSE ); -void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT8 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectNum , BOOL fFromRemoteClient = FALSE , BOOL fNewSmokeEffect = FALSE ); +BOOLEAN DamageSoldierFromBlast( UINT16 ubPerson, UINT16 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, UINT16 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 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( UINT8 ubID, INT32 sGridNo, INT8 bLevel, UINT32 ubFlag ); +BOOLEAN ActivateSurroundingTripwire( UINT16 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, UINT8 ubId, UINT8 ubDirection ); +void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, UINT16 ubId, UINT8 ubDirection ); extern void ToggleActionItemsByFrequency( INT8 bFrequency ); extern void PerformItemAction( INT32 sGridNo, OBJECTTYPE * pObj ); @@ -168,8 +168,10 @@ extern void HandleSeeingPowerGenFan( UINT32 sGridNo ); extern void HandleSeeingFortifiedDoor( UINT32 sGridNo );//Ja25 UB #endif -void ExplosiveDamageGridNo( INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist, BOOLEAN *pfRecompileMovementCosts, - BOOLEAN fOnlyWalls, INT8 bMultiStructSpecialFlag, BOOLEAN fSubSequentMultiTilesTransitionDamage, UINT8 ubOwner, INT8 bLevel, +void ExplosiveDamageGridNo( INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist, + BOOLEAN *pfRecompileMovementCosts, + BOOLEAN fOnlyWalls, INT8 bMultiStructSpecialFlag, BOOLEAN fSubSequentMultiTilesTransitionDamage, UINT16 ubOwner, + INT8 bLevel, UINT8 ubReason ); // Flugente: handle secondary explosive effects diff --git a/TileEngine/LightEffects.cpp b/TileEngine/LightEffects.cpp index 91a0669a..d11e7fe7 100644 --- a/TileEngine/LightEffects.cpp +++ b/TileEngine/LightEffects.cpp @@ -538,7 +538,7 @@ void ResetLightEffects() } // Flugente: create and destroy light sources tied to a person -void CreatePersonalLight( INT32 sGridNo, UINT8 ubID ) +void CreatePersonalLight( INT32 sGridNo, UINT16 ubID ) { INT32 iLightIndex = NewLightEffectInternal( sGridNo, 0, 1 ); @@ -549,7 +549,7 @@ void CreatePersonalLight( INT32 sGridNo, UINT8 ubID ) } } -void RemovePersonalLights( UINT8 ubID ) +void RemovePersonalLights( UINT16 ubID ) { LIGHTEFFECT *pLight; diff --git a/TileEngine/LightEffects.h b/TileEngine/LightEffects.h index 783f6695..869d2e82 100644 --- a/TileEngine/LightEffects.h +++ b/TileEngine/LightEffects.h @@ -25,7 +25,7 @@ typedef struct // Flugente: added variables necessary for dynamic (flash-)lighting INT32 flags; - UINT8 ubOwner; + UINT16 ubOwner; } LIGHTEFFECT; @@ -55,7 +55,7 @@ void ResetLightEffects(); BOOLEAN IsLightEffectAtTile( INT32 sGridNo ); // Flugente: create and destroy light sources tied to a person -void CreatePersonalLight( INT32 sGridNo, UINT8 ubID ); -void RemovePersonalLights( UINT8 ubID ); +void CreatePersonalLight( INT32 sGridNo, UINT16 ubID ); +void RemovePersonalLights( UINT16 ubID ); #endif \ No newline at end of file diff --git a/TileEngine/SmokeEffects.cpp b/TileEngine/SmokeEffects.cpp index 798d8488..78213ddc 100644 --- a/TileEngine/SmokeEffects.cpp +++ b/TileEngine/SmokeEffects.cpp @@ -196,7 +196,7 @@ UINT16 FromSmokeTypeToWorldFlags( INT8 bType ) -INT32 NewSmokeEffect( INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner, BOOL fFromRemoteClient ) +INT32 NewSmokeEffect( INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT16 ubOwner, BOOL fFromRemoteClient ) { SMOKEEFFECT *pSmoke; INT32 iSmokeIndex; @@ -331,12 +331,12 @@ INT32 NewSmokeEffect( INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner, } // ATE: FALSE into subsequent-- it's the first one! - SpreadEffect( pSmoke->sGridNo, pSmoke->ubRadius, pSmoke->usItem, pSmoke->ubOwner, FALSE, bLevel, iSmokeIndex , fFromRemoteClient , TRUE ); + SpreadEffect( pSmoke->sGridNo, pSmoke->ubRadius, pSmoke->usItem, pSmoke->ubOwner, FALSE, bLevel, iSmokeIndex, fFromRemoteClient, TRUE ); return( iSmokeIndex ); } -INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner, BOOLEAN fFromRemoteClient, UINT8 ubDuration, UINT8 ubRadius, UINT8 ubGeneration) +INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT16 ubOwner, BOOLEAN fFromRemoteClient, UINT8 ubDuration, UINT8 ubRadius, UINT8 ubGeneration) { SMOKEEFFECT *pSmoke; INT32 iSmokeIndex; diff --git a/TileEngine/SmokeEffects.h b/TileEngine/SmokeEffects.h index 996a40d6..590f1d8a 100644 --- a/TileEngine/SmokeEffects.h +++ b/TileEngine/SmokeEffects.h @@ -33,7 +33,7 @@ typedef struct TAG_SMOKE_EFFECT BOOLEAN fAllocated; INT8 bType; UINT16 usItem; - UINT8 ubOwner; + UINT16 ubOwner; UINT8 ubGeneration; UINT32 uiTimeOfLastUpdate; INT8 iMPTeamIndex; @@ -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, UINT8 ubOwner, BOOLEAN fFromRemoteClient = 0, UINT8 ubDuration = 0, UINT8 ubRadius = 0, UINT8 ubGeneration = 0); +INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT16 ubOwner, BOOLEAN fFromRemoteClient = 0, UINT8 ubDuration = 0, UINT8 ubRadius = 0, UINT8 ubGeneration = 0); BOOLEAN SaveSmokeEffectsToSaveGameFile( HWFILE hFile ); BOOLEAN LoadSmokeEffectsFromLoadGameFile( HWFILE hFile ); diff --git a/TileEngine/overhead map.cpp b/TileEngine/overhead map.cpp index ddad42f9..134f0d65 100644 --- a/TileEngine/overhead map.cpp +++ b/TileEngine/overhead map.cpp @@ -751,7 +751,7 @@ void GoIntoOverheadMap( ) // Make sure we are in team panel mode... gfSwitchPanel = TRUE; gbNewPanel = TEAM_PANEL; - gubNewPanelParam = (UINT8)gusSelectedSoldier; + gubNewPanelParam = gusSelectedSoldier; fInterfacePanelDirty = DIRTYLEVEL2; // Disable tactical buttons...... @@ -772,7 +772,7 @@ void HandleOverheadUI(void) { INT32 sMousePos = 0; InputAtom InputEvent; - UINT8 ubID; + UINT16 ubID; // CHECK FOR MOUSE OVER REGIONS... if(GetOverheadMouseGridNo(&sMousePos)) diff --git a/TileEngine/physics.cpp b/TileEngine/physics.cpp index b3a15711..d9b8dfff 100644 --- a/TileEngine/physics.cpp +++ b/TileEngine/physics.cpp @@ -218,7 +218,7 @@ void RecountObjectSlots(void) } -INT32 CreatePhysicalObject( OBJECTTYPE *pGameObj, real dLifeLength, real xPos, real yPos, real zPos, real xForce, real yForce, real zForce, UINT8 ubOwner, UINT8 ubActionCode, UINT32 uiActionData, BOOLEAN fTestObject ) +INT32 CreatePhysicalObject( OBJECTTYPE *pGameObj, real dLifeLength, real xPos, real yPos, real zPos, real xForce, real yForce, real zForce, UINT16 ubOwner, UINT8 ubActionCode, UINT32 uiActionData, BOOLEAN fTestObject ) { INT32 iObjectIndex; FLOAT mass; diff --git a/TileEngine/physics.h b/TileEngine/physics.h index e27d8aad..81effb21 100644 --- a/TileEngine/physics.h +++ b/TileEngine/physics.h @@ -118,7 +118,7 @@ public: FLOAT dLifeSpan; BOOLEAN fFirstTimeMoved; INT32 sFirstGridNo; - UINT8 ubOwner; + UINT16 ubOwner; UINT8 ubActionCode; UINT32 uiActionData; BOOLEAN fDropItem; @@ -153,7 +153,7 @@ extern REAL_OBJECT ObjectSlots[ NUM_OBJECT_SLOTS ]; // OBJECT LIST STUFF -INT32 CreatePhysicalObject( OBJECTTYPE *pGameObj, real dLifeLength, real xPos, real yPos, real zPos, real xForce, real yForce, real zForce, UINT8 ubOwner, UINT8 ubActionCode, UINT32 uiActionData, BOOLEAN fTestObject ); +INT32 CreatePhysicalObject( OBJECTTYPE *pGameObj, real dLifeLength, real xPos, real yPos, real zPos, real xForce, real yForce, real zForce, UINT16 ubOwner, UINT8 ubActionCode, UINT32 uiActionData, BOOLEAN fTestObject ); BOOLEAN RemoveObjectSlot( INT32 iObject ); void RemoveAllPhysicsObjects( ); // OJW - 20091002 - mp explosives diff --git a/TileEngine/pits.cpp b/TileEngine/pits.cpp index 2194a51d..fc875bb9 100644 --- a/TileEngine/pits.cpp +++ b/TileEngine/pits.cpp @@ -211,7 +211,7 @@ void RemoveAllPits() void SearchForOtherMembersWithinPitRadiusAndMakeThemFall( INT32 sGridNo, INT16 sRadius ) { INT32 x, y, sNewGridNo; - UINT8 ubID; + UINT16 ubID; SOLDIERTYPE *pSoldier; @@ -241,7 +241,7 @@ void SearchForOtherMembersWithinPitRadiusAndMakeThemFall( INT32 sGridNo, INT16 s } } -void HandleFallIntoPitFromAnimation( UINT8 ubID ) +void HandleFallIntoPitFromAnimation( UINT16 ubID ) { SOLDIERTYPE *pSoldier = MercPtrs[ ubID ]; EXITGRID ExitGrid; diff --git a/TileEngine/pits.h b/TileEngine/pits.h index 0ffb99c1..5050fe6f 100644 --- a/TileEngine/pits.h +++ b/TileEngine/pits.h @@ -14,7 +14,7 @@ void RemoveAllPits(); extern BOOLEAN gfShowPits; extern BOOLEAN gfLoadPitsWithoutArming; -void HandleFallIntoPitFromAnimation( UINT8 ubID ); +void HandleFallIntoPitFromAnimation( UINT16 ubID ); #endif \ No newline at end of file diff --git a/TileEngine/structure.cpp b/TileEngine/structure.cpp index 1b2fb135..3af1798c 100644 --- a/TileEngine/structure.cpp +++ b/TileEngine/structure.cpp @@ -1788,7 +1788,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, UINT8 ubOwner, INT32 sAntiMaterialImpact ) +INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, INT32 sGridNo, INT16 sX, INT16 sY, UINT16 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 d9fd6793..2870deac 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, UINT8 ubOwner, INT32 sAntiMaterialImpact = 0 ); +INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, INT32 sGridNo, INT16 sX, INT16 sY, UINT16 ubOwner, INT32 sAntiMaterialImpact = 0 ); // Material armour type enumeration enum diff --git a/TileEngine/worlddef.h b/TileEngine/worlddef.h index 0d60208e..acac1b00 100644 --- a/TileEngine/worlddef.h +++ b/TileEngine/worlddef.h @@ -36,7 +36,7 @@ class OBJECTTYPE; class SOLDIERTYPE; // SB: new map version, with map dimensions added -#define MAJOR_MAP_VERSION 7.0 +#define MAJOR_MAP_VERSION 8.0 // 7.0 -> 8.0 Due to increased teamsizes. //Current minor map version updater. #define MINOR_MAP_OVERHEATING 28 // 27 -> 28: Flugente:: increased to 28 because of included weapon overheated and tripwire feature. See ObjectClass for the new Tags! //#define MINOR_MAP_VERSION 29 // 28 -> 29: increased range of roomnumbers to full UINT16 by DBrot @@ -273,7 +273,7 @@ typedef struct UINT8 ubAdjacentSoldierCnt; UINT8 ubTerrainID; - UINT8 ubReservedSoldierID; + UINT16 ubReservedSoldierID; UINT8 ubBloodInfo; UINT8 ubSmellInfo; } MAP_ELEMENT; diff --git a/TileEngine/worldman.cpp b/TileEngine/worldman.cpp index 68880690..0526775f 100644 --- a/TileEngine/worldman.cpp +++ b/TileEngine/worldman.cpp @@ -3758,7 +3758,7 @@ BOOLEAN IsRoofVisible2( INT32 sMapPos ) } -UINT8 WhoIsThere2( INT32 sGridNo, INT8 bLevel ) +UINT16 WhoIsThere2( INT32 sGridNo, INT8 bLevel ) { STRUCTURE * pStructure; @@ -3782,7 +3782,7 @@ UINT8 WhoIsThere2( INT32 sGridNo, INT8 bLevel ) { // found a person, on the right level! // structure ID and merc ID are identical for merc structures - return( (UINT8) pStructure->usStructureID ); + return( pStructure->usStructureID ); } } pStructure = pStructure->pNext; @@ -3790,7 +3790,7 @@ UINT8 WhoIsThere2( INT32 sGridNo, INT8 bLevel ) } - return( (UINT8)NOBODY ); + return( NOBODY ); } UINT8 GetTerrainType( INT32 sGridNo ) @@ -4167,7 +4167,7 @@ void UpdateTreeVisibility() // find visible soldier near spot if (!TileIsOutOfBounds(sSpot) && !fHideTree) { - for (UINT8 uiLoop = 0; uiLoop < guiNumMercSlots; uiLoop++) + for (UINT16 uiLoop = 0; uiLoop < guiNumMercSlots; uiLoop++) { pOpponent = MercSlots[uiLoop]; diff --git a/TileEngine/worldman.h b/TileEngine/worldman.h index 7e504d12..eed5ca67 100644 --- a/TileEngine/worldman.h +++ b/TileEngine/worldman.h @@ -128,7 +128,7 @@ BOOLEAN RemoveShadowFromLevelNode( INT32 iMapIndex, LEVELNODE *pNode ); BOOLEAN AddMercToHead( INT32 iMapIndex, SOLDIERTYPE *pSoldier, BOOLEAN fAddStructInfo ); BOOLEAN RemoveMerc( INT32 iMapIndex, SOLDIERTYPE *pSoldier, BOOLEAN fPlaceHolder ); -UINT8 WhoIsThere2( INT32 sGridNo, INT8 bLevel ); +UINT16 WhoIsThere2( INT32 sGridNo, INT8 bLevel ); BOOLEAN AddMercStructureInfo( INT32 sGridNo, SOLDIERTYPE *pSoldier ); BOOLEAN AddMercStructureInfoFromAnimSurface( INT32 sGridNo, SOLDIERTYPE *pSoldier, UINT16 usAnimSurface, UINT16 usAnimState ); BOOLEAN UpdateMercStructureInfo( SOLDIERTYPE *pSoldier ); diff --git a/Utils/Event Pump.h b/Utils/Event Pump.h index 536d0ab5..066f648e 100644 --- a/Utils/Event Pump.h +++ b/Utils/Event Pump.h @@ -163,7 +163,7 @@ typedef struct INT16 sYPos; INT16 sZPos; INT16 sRange; - UINT8 ubAttackerID; + UINT16 ubAttackerID; BOOLEAN fHit; UINT8 ubSpecial; UINT8 ubLocation; @@ -179,7 +179,7 @@ typedef struct INT16 sZPos; UINT16 usWeaponIndex; INT16 bWeaponStatus; - UINT8 ubAttackerID; + UINT16 ubAttackerID; UINT16 usStructureID; INT32 iImpact; INT32 iBullet; @@ -193,19 +193,19 @@ typedef struct UINT16 usStructureID; BOOLEAN fBlowWindowSouth; BOOLEAN fLargeForce; - UINT8 ubAttackerID; + UINT16 ubAttackerID; INT32 iBullet; } EV_S_WINDOWHIT; typedef struct { - UINT8 ubAttackerID; + UINT16 ubAttackerID; INT32 iBullet; } EV_S_MISS; typedef struct { - UINT8 ubNoiseMaker; + UINT16 ubNoiseMaker; INT32 sGridNo; UINT8 bLevel; UINT8 ubTerrType; @@ -231,7 +231,7 @@ typedef struct typedef struct { - UINT8 usSoldierID; + UINT16 usSoldierID; // UINT32 uiUniqueId; UINT16 usPathDataSize; // Size of Path INT32 sAtGridNo; // Owner merc is at this tile when sending packet @@ -249,7 +249,7 @@ typedef struct typedef struct { - UINT8 usSoldierID; + UINT16 usSoldierID; //UINT32 uiUniqueId; INT32 sAtGridNo; // Owner merc is at this tile when sending packet INT8 bActionPoints; // current A.P. value diff --git a/Utils/PopUpBox.cpp b/Utils/PopUpBox.cpp index 26480dd1..f0bfc3c8 100644 --- a/Utils/PopUpBox.cpp +++ b/Utils/PopUpBox.cpp @@ -395,7 +395,7 @@ void AddMonoString(UINT32 *hStringHandle, STR16 pString) } -// adds a SECOND column string to the CURRENT popup box +// Adds string to the current popup box 2nd column. !!! String's position is the LAST used position in the 1st column !!! void AddSecondColumnMonoString( UINT32 *hStringHandle, STR16 pString ) { STR16 pLocalString=NULL; @@ -441,6 +441,52 @@ void AddSecondColumnMonoString( UINT32 *hStringHandle, STR16 pString ) return; } +// Adds a string to the first available slot in the second column +void AddMonoStringToSecondColumn(UINT32* hStringHandle, STR16 pString) +{ + STR16 pLocalString = NULL; + POPUPSTRINGPTR pStringSt = NULL; + INT32 iCounter = 0; + + + if ((guiCurrentBox < 0) || (guiCurrentBox >= MAX_POPUP_BOX_COUNT)) + return; + + Assert(PopUpBoxList[guiCurrentBox] != NULL); + + // find the free text string index in 2nd column + for (iCounter = 0; (iCounter < MAX_POPUP_BOX_STRING_COUNT) && (PopUpBoxList[guiCurrentBox]->pSecondColumnString[iCounter] != NULL); iCounter++); + + if (iCounter >= MAX_POPUP_BOX_STRING_COUNT) + { + // using too many text lines, or not freeing them up properly + Assert(0); + return; + } + + pStringSt = (POPUPSTRING*)(MemAlloc(sizeof(POPUPSTRING))); + if (pStringSt == NULL) + return; + + pLocalString = (STR16)MemAlloc((wcslen(pString) + 1) * sizeof(CHAR16)); + if (pLocalString == NULL) + return; + + wcscpy(pLocalString, pString); + + RemoveCurrentBoxSecondaryText(iCounter); + + PopUpBoxList[guiCurrentBox]->pSecondColumnString[iCounter] = pStringSt; + PopUpBoxList[guiCurrentBox]->pSecondColumnString[iCounter]->fColorFlag = FALSE; + PopUpBoxList[guiCurrentBox]->pSecondColumnString[iCounter]->pString = pLocalString; + PopUpBoxList[guiCurrentBox]->pSecondColumnString[iCounter]->fShadeFlag = FALSE; + PopUpBoxList[guiCurrentBox]->pSecondColumnString[iCounter]->fHighLightFlag = FALSE; + + *hStringHandle = iCounter; + + return; +} + // Adds a COLORED first column string to the CURRENT box void AddColorString(INT32 *hStringHandle, STR16 pString) @@ -543,6 +589,27 @@ UINT32 GetNumberOfLinesOfTextInBox( INT32 hBoxHandle ) } +UINT32 GetNumberOfSecondaryLinesOfTextInBox(INT32 hBoxHandle) +{ + INT32 iCounter = 0; + + if ((hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT)) + return(0); + + // count number of lines + // check string size + for (iCounter = 0; iCounter < MAX_POPUP_BOX_STRING_COUNT; iCounter++) + { + if (PopUpBoxList[hBoxHandle]->pSecondColumnString[iCounter] == NULL) + { + break; + } + } + + return(iCounter); +} + + void SetBoxFont(INT32 hBoxHandle, UINT32 uiFont) { @@ -585,6 +652,15 @@ void SetBoxSecondColumnCurrentOffset( INT32 hBoxHandle, UINT32 uiCurrentOffset ) return; } +void SetBoxSecondColumnOffsetAdjustment(INT32 hBoxHandle, INT16 x) +{ + if ((hBoxHandle < 0) || (hBoxHandle >= MAX_POPUP_BOX_COUNT)) + return; + + PopUpBoxList[hBoxHandle]->usSecondColumnOffsetAdjustment = x; + return; +} + void SetBoxSecondColumnFont(INT32 hBoxHandle, UINT32 uiFont) { UINT32 iCounter=0; @@ -1284,7 +1360,7 @@ BOOLEAN DrawBox(UINT32 uiCounter) usTopX=(UINT16)PopUpBoxList[uiCounter]->Position.iX; usTopY=(UINT16)PopUpBoxList[uiCounter]->Position.iY; - usWidth=((UINT16)(PopUpBoxList[uiCounter]->Dimensions.iRight-PopUpBoxList[uiCounter]->Dimensions.iLeft)); + usWidth=((UINT16)(PopUpBoxList[uiCounter]->Dimensions.iRight-PopUpBoxList[uiCounter]->Dimensions.iLeft + PopUpBoxList[uiCounter]->usSecondColumnOffsetAdjustment)); usHeight=((UINT16)(PopUpBoxList[uiCounter]->Dimensions.iBottom-PopUpBoxList[uiCounter]->Dimensions.iTop)); //CHRISL: Adjust position for screen limits @@ -1306,7 +1382,7 @@ BOOLEAN DrawBox(UINT32 uiCounter) } // make sure it will fit on screen! - Assert( usTopX + usWidth <= SCREEN_WIDTH ); + Assert( usTopX + usWidth <= SCREEN_WIDTH ); Assert( usTopY + usHeight <= SCREEN_HEIGHT ); // subtract 4 because the 2 2-pixel corners are handled separately @@ -1392,100 +1468,94 @@ BOOLEAN DrawBoxText(UINT32 uiCounter) // there is text in this line? if(PopUpBoxList[uiCounter]->Text[uiCount]) { - // set font - SetFont(PopUpBoxList[uiCounter]->Text[uiCount]->uiFont); + SetFont(PopUpBoxList[uiCounter]->Text[uiCount]->uiFont); // are we highlighting?...shading?..or neither if( ( PopUpBoxList[ uiCounter ]->Text[ uiCount ]->fHighLightFlag == FALSE )&&( PopUpBoxList[ uiCounter ]->Text[ uiCount ]->fShadeFlag == FALSE) &&( PopUpBoxList[ uiCounter ]->Text[ uiCount ]->fSecondaryShadeFlag == FALSE ) ) { // neither - SetFontForeground(PopUpBoxList[uiCounter]->Text[uiCount]->ubForegroundColor); + SetFontForeground(PopUpBoxList[uiCounter]->Text[uiCount]->ubForegroundColor); } - else if( ( PopUpBoxList[ uiCounter ]->Text[ uiCount ]->fHighLightFlag == TRUE ) ) + else if( ( PopUpBoxList[ uiCounter ]->Text[ uiCount ]->fHighLightFlag == TRUE ) ) { - // highlight - SetFontForeground(PopUpBoxList[uiCounter]->Text[uiCount]->ubHighLight); + SetFontForeground(PopUpBoxList[uiCounter]->Text[uiCount]->ubHighLight); } else if( ( PopUpBoxList[ uiCounter ]->Text[ uiCount ]->fSecondaryShadeFlag == TRUE ) ) { SetFontForeground(PopUpBoxList[uiCounter]->Text[uiCount]->ubSecondaryShade); } - else + else { //shading SetFontForeground(PopUpBoxList[uiCounter]->Text[uiCount]->ubShade); } // set background - SetFontBackground(PopUpBoxList[uiCounter]->Text[uiCount]->ubBackgroundColor); + SetFontBackground(PopUpBoxList[uiCounter]->Text[uiCount]->ubBackgroundColor); // copy string - wcsncpy(sString, PopUpBoxList[uiCounter]->Text[uiCount]->pString, wcslen(PopUpBoxList[uiCounter]->Text[uiCount]->pString)+1); + wcsncpy(sString, PopUpBoxList[uiCounter]->Text[uiCount]->pString, wcslen(PopUpBoxList[uiCounter]->Text[uiCount]->pString)+1); - // cnetering? - if(PopUpBoxList[uiCounter]->uiFlags & POPUP_BOX_FLAG_CENTER_TEXT) + // centering? + if(PopUpBoxList[uiCounter]->uiFlags & POPUP_BOX_FLAG_CENTER_TEXT) { - FindFontCenterCoordinates(((INT16)(PopUpBoxList[uiCounter]->Position.iX+PopUpBoxList[uiCounter]->uiLeftMargin)),((INT16)(PopUpBoxList[uiCounter]->Position.iY+uiCount*GetFontHeight(PopUpBoxList[uiCounter]->Text[uiCount]->uiFont)+PopUpBoxList[uiCounter]->uiTopMargin+uiCount*PopUpBoxList[uiCounter]->uiLineSpace)),((INT16)(PopUpBoxList[uiCounter]->Dimensions.iRight-(PopUpBoxList[uiCounter]->uiRightMargin+PopUpBoxList[uiCounter]->uiLeftMargin+2))),((INT16)GetFontHeight(PopUpBoxList[uiCounter]->Text[uiCount]->uiFont)),(sString),((INT32)PopUpBoxList[uiCounter]->Text[uiCount]->uiFont) ,&uX, &uY); + FindFontCenterCoordinates(((INT16)(PopUpBoxList[uiCounter]->Position.iX+PopUpBoxList[uiCounter]->uiLeftMargin)),((INT16)(PopUpBoxList[uiCounter]->Position.iY+uiCount*GetFontHeight(PopUpBoxList[uiCounter]->Text[uiCount]->uiFont)+PopUpBoxList[uiCounter]->uiTopMargin+uiCount*PopUpBoxList[uiCounter]->uiLineSpace)),((INT16)(PopUpBoxList[uiCounter]->Dimensions.iRight-(PopUpBoxList[uiCounter]->uiRightMargin+PopUpBoxList[uiCounter]->uiLeftMargin+2))),((INT16)GetFontHeight(PopUpBoxList[uiCounter]->Text[uiCount]->uiFont)),(sString),((INT32)PopUpBoxList[uiCounter]->Text[uiCount]->uiFont) ,&uX, &uY); } - else + else { - uX=((INT16)(PopUpBoxList[uiCounter]->Position.iX+PopUpBoxList[uiCounter]->uiLeftMargin)); - uY=((INT16)(PopUpBoxList[uiCounter]->Position.iY+uiCount*GetFontHeight(PopUpBoxList[uiCounter]->Text[uiCount]->uiFont)+PopUpBoxList[uiCounter]->uiTopMargin+uiCount*PopUpBoxList[uiCounter]->uiLineSpace)); + uX=((INT16)(PopUpBoxList[uiCounter]->Position.iX+PopUpBoxList[uiCounter]->uiLeftMargin)); + uY=((INT16)(PopUpBoxList[uiCounter]->Position.iY+uiCount*GetFontHeight(PopUpBoxList[uiCounter]->Text[uiCount]->uiFont)+PopUpBoxList[uiCounter]->uiTopMargin+uiCount*PopUpBoxList[uiCounter]->uiLineSpace)); } // print - //gprintfdirty(uX,uY,PopUpBoxList[uiCounter]->Text[uiCount]->pString ); - mprintf(uX,uY,PopUpBoxList[uiCounter]->Text[uiCount]->pString); + mprintf(uX,uY,PopUpBoxList[uiCounter]->Text[uiCount]->pString); } // there is secondary text in this line? if(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]) { - // set font - SetFont(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->uiFont); + SetFont(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->uiFont); // are we highlighting?...shading?..or neither if( ( PopUpBoxList[ uiCounter ]->pSecondColumnString[ uiCount ]->fHighLightFlag == FALSE )&&( PopUpBoxList[ uiCounter ]->pSecondColumnString[ uiCount ]->fShadeFlag == FALSE) ) { // neither - SetFontForeground(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->ubForegroundColor); + SetFontForeground(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->ubForegroundColor); } - else if( ( PopUpBoxList[ uiCounter ]->pSecondColumnString[ uiCount ]->fHighLightFlag == TRUE ) ) + else if( ( PopUpBoxList[ uiCounter ]->pSecondColumnString[ uiCount ]->fHighLightFlag == TRUE ) ) { - // highlight - SetFontForeground(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->ubHighLight); + SetFontForeground(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->ubHighLight); } - else + else { //shading SetFontForeground(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->ubShade); } // set background - SetFontBackground(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->ubBackgroundColor); + SetFontBackground(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->ubBackgroundColor); // copy string - wcsncpy(sString, PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->pString, wcslen(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->pString)+1); + wcsncpy(sString, PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->pString, wcslen(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->pString)+1); - // cnetering? - if(PopUpBoxList[uiCounter]->uiFlags & POPUP_BOX_FLAG_CENTER_TEXT) + // centering? + if(PopUpBoxList[uiCounter]->uiFlags & POPUP_BOX_FLAG_CENTER_TEXT) { - FindFontCenterCoordinates(((INT16)(PopUpBoxList[uiCounter]->Position.iX+PopUpBoxList[uiCounter]->uiLeftMargin)),((INT16)(PopUpBoxList[uiCounter]->Position.iY+uiCount*GetFontHeight(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->uiFont)+PopUpBoxList[uiCounter]->uiTopMargin+uiCount*PopUpBoxList[uiCounter]->uiLineSpace)),((INT16)(PopUpBoxList[uiCounter]->Dimensions.iRight-(PopUpBoxList[uiCounter]->uiRightMargin+PopUpBoxList[uiCounter]->uiLeftMargin+2))),((INT16)GetFontHeight(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->uiFont)),(sString),((INT32)PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->uiFont) ,&uX, &uY); + FindFontCenterCoordinates(((INT16)(PopUpBoxList[uiCounter]->Position.iX+PopUpBoxList[uiCounter]->uiLeftMargin)),((INT16)(PopUpBoxList[uiCounter]->Position.iY+uiCount*GetFontHeight(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->uiFont)+PopUpBoxList[uiCounter]->uiTopMargin+uiCount*PopUpBoxList[uiCounter]->uiLineSpace)),((INT16)(PopUpBoxList[uiCounter]->Dimensions.iRight-(PopUpBoxList[uiCounter]->uiRightMargin+PopUpBoxList[uiCounter]->uiLeftMargin+2))),((INT16)GetFontHeight(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->uiFont)),(sString),((INT32)PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->uiFont) ,&uX, &uY); } - else + else { - uX=((INT16)(PopUpBoxList[uiCounter]->Position.iX+PopUpBoxList[uiCounter]->uiLeftMargin + PopUpBoxList[uiCounter]->uiSecondColumnCurrentOffset ) ); - uY=((INT16)(PopUpBoxList[uiCounter]->Position.iY+uiCount*GetFontHeight(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->uiFont)+PopUpBoxList[uiCounter]->uiTopMargin+uiCount*PopUpBoxList[uiCounter]->uiLineSpace)); + uX=((INT16)(PopUpBoxList[uiCounter]->Position.iX+PopUpBoxList[uiCounter]->uiLeftMargin + PopUpBoxList[uiCounter]->uiSecondColumnCurrentOffset + PopUpBoxList[uiCounter]->usSecondColumnOffsetAdjustment)); + uY=((INT16)(PopUpBoxList[uiCounter]->Position.iY+uiCount*GetFontHeight(PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->uiFont)+PopUpBoxList[uiCounter]->uiTopMargin+uiCount*PopUpBoxList[uiCounter]->uiLineSpace)); } // print - //gprintfdirty(uX,uY,PopUpBoxList[uiCounter]->Text[uiCount]->pString ); - mprintf(uX,uY,PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->pString); + mprintf(uX,uY,PopUpBoxList[uiCounter]->pSecondColumnString[uiCount]->pString); } } @@ -1550,6 +1620,13 @@ void ResizeBoxToText(INT32 hBoxHandle) // Flugente we shouldn't have added more popup options than we can display anyway, but I have no idea where to stop that, so at least we can fix this PopUpBoxList[hBoxHandle]->Dimensions.iBottom = min( iHeight, SCREEN_HEIGHT - PopUpBoxList[hBoxHandle]->Position.iY); PopUpBoxList[hBoxHandle]->Dimensions.iRight = min( iWidth, SCREEN_WIDTH - PopUpBoxList[hBoxHandle]->Position.iX ); + + // Constrain popup box height to background graphics max height. Otherwise we get blue graphics glitches + const auto popupBoxHeight = PopUpBoxList[hBoxHandle]->Dimensions.iBottom - PopUpBoxList[hBoxHandle]->Dimensions.iTop; + if (popupBoxHeight > 480) + { + PopUpBoxList[hBoxHandle]->Dimensions.iBottom = PopUpBoxList[hBoxHandle]->Dimensions.iTop + 480; + } } diff --git a/Utils/PopUpBox.h b/Utils/PopUpBox.h index 033e6227..4f3b6dd7 100644 --- a/Utils/PopUpBox.h +++ b/Utils/PopUpBox.h @@ -46,6 +46,7 @@ struct popupbox{ UINT32 uiBuffer; UINT32 uiSecondColumnMinimunOffset; UINT32 uiSecondColumnCurrentOffset; + INT16 usSecondColumnOffsetAdjustment; UINT32 uiBoxMinWidth; BOOLEAN fUpdated; BOOLEAN fShowBox; @@ -74,6 +75,7 @@ void SetBoxBuffer(INT32 hBoxHandle, UINT32 uiBuffer); void SetBoxPosition(INT32 hBoxHandle,SGPPoint Position); void GetBoxPosition( INT32 hBoxHandle, SGPPoint *Position ); UINT32 GetNumberOfLinesOfTextInBox( INT32 hBoxHandle ); +UINT32 GetNumberOfSecondaryLinesOfTextInBox(INT32 hBoxHandle); void SetBoxSize( INT32 hBoxHandle, SGPRect Dimensions ); void GetBoxSize( INT32 hBoxHandle, SGPRect *Dimensions ); void SetBoxFlags( INT32 hBoxHandle, UINT32 uiFlags); @@ -136,6 +138,7 @@ void HideAllBoxes( void ); // add the second column monocrome string void AddSecondColumnMonoString( UINT32 *hStringHandle, STR16 pString ); +void AddMonoStringToSecondColumn(UINT32* hStringHandle, STR16 pString); // set the 2nd column font for this box void SetBoxSecondColumnFont(INT32 hBoxHandle, UINT32 uiFont); @@ -156,6 +159,8 @@ void SetBoxSecondColumnForeground(INT32 hBoxHandle, UINT8 ubColor); void SetBoxSecondColumnBackground(INT32 hBoxHandle, UINT8 ubColor); void SetBoxSecondColumnHighLight(INT32 hBoxHandle, UINT8 ubColor); void SetBoxSecondColumnShade(INT32 hBoxHandle, UINT8 ubColor); +// Manual adjustment for 2nd column offset, eg. when 1st column has a title text that's wider than the rest and you want to move 2nd column texts towards the 1st column some. +void SetBoxSecondColumnOffsetAdjustment(INT32 hBoxHandle, INT16 x); // secondary shades for boxes diff --git a/builddefines.h b/builddefines.h index 5e48f506..4ca80242 100644 --- a/builddefines.h +++ b/builddefines.h @@ -33,7 +33,9 @@ // ----------------------------- // Map Editor version - you should use the MapEditor configuration instead of messing with these defines (ChrisL) -//#define JA2BETAVERSION +#ifndef JA2BETAVERSION +#define JA2BETAVERSION +#endif //#define JA2EDITOR // Normal test version //#define JA2TESTVERSION diff --git a/gamescreen.cpp b/gamescreen.cpp index a6a05c8a..3c5be8e6 100644 --- a/gamescreen.cpp +++ b/gamescreen.cpp @@ -117,7 +117,7 @@ BOOLEAN gfExitToNewSector = FALSE; BOOLEAN gfGameScreenLocateToSoldier = FALSE; BOOLEAN gfEnteringMapScreen = FALSE; UINT32 uiOldMouseCursor; -UINT8 gubPreferredInitialSelectedGuy = NOBODY; +UINT16 gubPreferredInitialSelectedGuy = NOBODY; BOOLEAN gfTacticalIsModal = FALSE; MOUSE_REGION gTacticalDisableRegion; @@ -1030,7 +1030,7 @@ void TacticalScreenLocateToSoldier( ) { INT32 cnt; SOLDIERTYPE *pSoldier; - INT16 bLastTeamID; + UINT16 bLastTeamID; BOOLEAN fPreferedGuyUsed = FALSE; if ( gubPreferredInitialSelectedGuy != NOBODY ) @@ -1075,7 +1075,7 @@ void UpdateTeamPanelAssignments( ) { INT32 cnt; SOLDIERTYPE *pSoldier; - INT16 bLastTeamID; + UINT16 bLastTeamID; // Remove all players RemoveAllPlayersFromSlot( ); diff --git a/gamescreen.h b/gamescreen.h index 38403749..49a65019 100644 --- a/gamescreen.h +++ b/gamescreen.h @@ -16,7 +16,7 @@ typedef void (*MODAL_HOOK)( void ); extern BOOLEAN gfGameScreenLocateToSoldier; extern BOOLEAN gfEnteringMapScreen; -extern UINT8 gubPreferredInitialSelectedGuy; +extern UINT16 gubPreferredInitialSelectedGuy; void EnterMapScreen( ); diff --git a/lua/lua_VS2019.vcxproj b/lua/lua_VS2019.vcxproj index 3052380a..863ddc7b 100644 --- a/lua/lua_VS2019.vcxproj +++ b/lua/lua_VS2019.vcxproj @@ -78,67 +78,67 @@ StaticLibrary true NotSet - v142 + v143 StaticLibrary true NotSet - v142 + v143 StaticLibrary true NotSet - v142 + v143 StaticLibrary true NotSet - v142 + v143 StaticLibrary false false NotSet - v142 + v143 StaticLibrary false false NotSet - v142 + v143 StaticLibrary false false NotSet - v142 + v143 StaticLibrary false false NotSet - v142 + v143 StaticLibrary false false NotSet - v142 + v143 StaticLibrary false false NotSet - v142 + v143 diff --git a/lua/lua_VS2019.vcxproj.user b/lua/lua_VS2019.vcxproj.user new file mode 100644 index 00000000..88a55094 --- /dev/null +++ b/lua/lua_VS2019.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file