mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
Convert to SoldierID
This commit is contained in:
+5
-5
@@ -108,10 +108,10 @@ INT32 giCounterPeriodOverlay = 0;
|
||||
BOOLEAN gfExitToNewSector = FALSE;
|
||||
//UINT8 gubNewSectorExitDirection;
|
||||
|
||||
BOOLEAN gfGameScreenLocateToSoldier = FALSE;
|
||||
BOOLEAN gfEnteringMapScreen = FALSE;
|
||||
UINT32 uiOldMouseCursor;
|
||||
UINT16 gubPreferredInitialSelectedGuy = NOBODY;
|
||||
BOOLEAN gfGameScreenLocateToSoldier = FALSE;
|
||||
BOOLEAN gfEnteringMapScreen = FALSE;
|
||||
UINT32 uiOldMouseCursor;
|
||||
SoldierID gubPreferredInitialSelectedGuy = NOBODY;
|
||||
|
||||
BOOLEAN gfTacticalIsModal = FALSE;
|
||||
MOUSE_REGION gTacticalDisableRegion;
|
||||
@@ -1038,7 +1038,7 @@ void TacticalScreenLocateToSoldier( )
|
||||
if ( gubPreferredInitialSelectedGuy != NOBODY )
|
||||
{
|
||||
// ATE: Put condition here...
|
||||
if ( OK_CONTROLLABLE_MERC( MercPtrs[ gubPreferredInitialSelectedGuy ] ) && OK_INTERRUPT_MERC( MercPtrs[ gubPreferredInitialSelectedGuy ] ) )
|
||||
if ( OK_CONTROLLABLE_MERC( gubPreferredInitialSelectedGuy ) && OK_INTERRUPT_MERC( gubPreferredInitialSelectedGuy ) )
|
||||
{
|
||||
LocateSoldier( gubPreferredInitialSelectedGuy, 10 );
|
||||
SelectSoldier( gubPreferredInitialSelectedGuy, FALSE, TRUE );
|
||||
|
||||
+5
-5
@@ -1,7 +1,7 @@
|
||||
#ifndef _GAMESCREEN_H
|
||||
#define _GAMESCREEN_H
|
||||
|
||||
|
||||
#include "Overhead Types.h"
|
||||
#include "fade screen.h"
|
||||
|
||||
#define ARE_IN_FADE_IN( ) ( gfFadeIn || gfFadeInitialized )
|
||||
@@ -14,9 +14,9 @@ void FadeOutGameScreen( );
|
||||
typedef void (*MODAL_HOOK)( void );
|
||||
|
||||
|
||||
extern BOOLEAN gfGameScreenLocateToSoldier;
|
||||
extern BOOLEAN gfEnteringMapScreen;
|
||||
extern UINT16 gubPreferredInitialSelectedGuy;
|
||||
extern BOOLEAN gfGameScreenLocateToSoldier;
|
||||
extern BOOLEAN gfEnteringMapScreen;
|
||||
extern SoldierID gubPreferredInitialSelectedGuy;
|
||||
|
||||
|
||||
void EnterMapScreen( );
|
||||
@@ -41,4 +41,4 @@ void InitHelicopterEntranceByMercs( void );
|
||||
|
||||
void InternalLeaveTacticalScreen( UINT32 uiNewScreen );
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -1091,7 +1091,7 @@ void EnemyHeliSAMCheck( INT16 id )
|
||||
// also check whether this sector is not enemy-controlled - we can't have the AI shooting at its own helis
|
||||
if ( pSAMStrategicMap && !pSAMStrategicMap->fEnemyControlled )
|
||||
{
|
||||
UINT16 ubBestSAMOperatorID = NOBODY;
|
||||
SoldierID ubBestSAMOperatorID = NOBODY;
|
||||
FLOAT samcth = GetBestSAMOperatorCTH_Player( gpSamSectorX[i], gpSamSectorY[i], 0, &ubBestSAMOperatorID );
|
||||
|
||||
// cth is reduced if SAM is damaged, even if it can still operate
|
||||
|
||||
@@ -3776,7 +3776,7 @@ UINT32 CalculateSnitchInterrogationValue(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPt
|
||||
}
|
||||
|
||||
// Flugente: Determine the best cth with SAMs in a sector, and which merc has that cth if present
|
||||
FLOAT GetBestSAMOperatorCTH_Player( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ, UINT16 *pubID )
|
||||
FLOAT GetBestSAMOperatorCTH_Player( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ, SoldierID *pubID )
|
||||
{
|
||||
// if nobody is here, nobody can fire
|
||||
FLOAT bestsamcth = 0.0f;
|
||||
|
||||
@@ -318,7 +318,7 @@ UINT32 CalculatePrisonGuardValue(SOLDIERTYPE *pSoldier );
|
||||
UINT32 CalculateSnitchInterrogationValue(SOLDIERTYPE *pSoldier, UINT16 *pusMaxPts );
|
||||
|
||||
// Flugente: Determine the best cth with SAMs in a sector, and which merc has that cth if present
|
||||
FLOAT GetBestSAMOperatorCTH_Player( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ, UINT16 *pubID );
|
||||
FLOAT GetBestSAMOperatorCTH_Player( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ, SoldierID *pubID );
|
||||
|
||||
INT16 GetTrainWorkerPts(SOLDIERTYPE *pSoldier);
|
||||
|
||||
@@ -592,4 +592,4 @@ UINT8 CalcSoldierNeedForSleep( SOLDIERTYPE *pSoldier );
|
||||
// Flugente: administration assignment
|
||||
FLOAT GetAdministrationPercentage( INT16 sX, INT16 sY );
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -3009,9 +3009,7 @@ void MercCellMouseClickCallback( MOUSE_REGION *reg, INT32 reason )
|
||||
|
||||
if( gpAR->pRobotCell )
|
||||
{ //if controller is retreating, make the robot retreat too.
|
||||
UINT16 ubRobotControllerID;
|
||||
|
||||
ubRobotControllerID = gpAR->pRobotCell->pSoldier->ubRobotRemoteHolderID;
|
||||
SoldierID ubRobotControllerID = gpAR->pRobotCell->pSoldier->ubRobotRemoteHolderID;
|
||||
|
||||
if( ubRobotControllerID == NOBODY )
|
||||
{
|
||||
|
||||
+61
-61
@@ -293,7 +293,7 @@ BOOLEAN gfResetUIMovementOptimization = FALSE;
|
||||
BOOLEAN gfResetUIItemCursorOptimization = FALSE;
|
||||
BOOLEAN gfBeginVehicleCursor = FALSE;
|
||||
INT32 gsOutOfRangeGridNo = NOWHERE;
|
||||
UINT16 gubOutOfRangeMerc = NOBODY;
|
||||
SoldierID gubOutOfRangeMerc = NOBODY;
|
||||
BOOLEAN gfOKForExchangeCursor = FALSE;
|
||||
UINT32 guiUIInterfaceSwapCursorsTime = 0;
|
||||
INT32 gsJumpOverGridNo = 0;
|
||||
@@ -463,29 +463,29 @@ BOOLEAN gfUICanBeginAllMoveCycle = FALSE; // GEts set so we know that the ne
|
||||
|
||||
INT32 gsSelectedGridNo = 0;
|
||||
INT16 gsSelectedLevel = I_GROUND_LEVEL;
|
||||
INT16 gsSelectedGuy = NOBODY;
|
||||
SoldierID gsSelectedGuy = NOBODY;
|
||||
|
||||
BOOLEAN gfUIDisplayDamage = FALSE;
|
||||
INT8 gbDamage = 0;
|
||||
INT32 gsDamageGridNo = 0;
|
||||
BOOLEAN gfUIDisplayDamage = FALSE;
|
||||
INT8 gbDamage = 0;
|
||||
INT32 gsDamageGridNo = 0;
|
||||
|
||||
BOOLEAN gfUIRefreshArrows = FALSE;
|
||||
BOOLEAN gfUIRefreshArrows = FALSE;
|
||||
|
||||
|
||||
// Thse flags are not re-set after each frame
|
||||
BOOLEAN gfPlotNewMovement = FALSE;
|
||||
BOOLEAN gfPlotNewMovementNOCOST = FALSE;
|
||||
UINT32 guiShowUPDownArrows = ARROWS_HIDE_UP | ARROWS_HIDE_DOWN;
|
||||
INT8 gbAdjustStanceDiff = 0;
|
||||
INT8 gbClimbID = 0;
|
||||
BOOLEAN gfPlotNewMovement = FALSE;
|
||||
BOOLEAN gfPlotNewMovementNOCOST = FALSE;
|
||||
UINT32 guiShowUPDownArrows = ARROWS_HIDE_UP | ARROWS_HIDE_DOWN;
|
||||
INT8 gbAdjustStanceDiff = 0;
|
||||
INT8 gbClimbID = 0;
|
||||
|
||||
BOOLEAN gfUIShowExitEast = FALSE;
|
||||
BOOLEAN gfUIShowExitWest = FALSE;
|
||||
BOOLEAN gfUIShowExitNorth = FALSE;
|
||||
BOOLEAN gfUIShowExitSouth = FALSE;
|
||||
BOOLEAN gfUIShowExitExitGrid = FALSE;
|
||||
BOOLEAN gfUIShowExitEast = FALSE;
|
||||
BOOLEAN gfUIShowExitWest = FALSE;
|
||||
BOOLEAN gfUIShowExitNorth = FALSE;
|
||||
BOOLEAN gfUIShowExitSouth = FALSE;
|
||||
BOOLEAN gfUIShowExitExitGrid = FALSE;
|
||||
|
||||
BOOLEAN gfUINewStateForIntTile = FALSE;
|
||||
BOOLEAN gfUINewStateForIntTile = FALSE;
|
||||
|
||||
BOOLEAN gfUIForceReExamineCursorData = FALSE;
|
||||
|
||||
@@ -2210,7 +2210,7 @@ UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent )
|
||||
// anv: if we selected vehicle driver, move his vehicle
|
||||
if ( pSoldier->flags.uiStatusFlags & (SOLDIER_DRIVER ) )
|
||||
{
|
||||
pSoldier = GetSoldierStructureForVehicle( MercPtrs[ pSoldier->ubID ]->iVehicleId );
|
||||
pSoldier = GetSoldierStructureForVehicle( pSoldier->iVehicleId );
|
||||
// anv: if shift is pressed, treat is as ram + move - flag has to be set for later add structure checks
|
||||
if ( _KeyDown( SHIFT ) )
|
||||
{
|
||||
@@ -2981,7 +2981,7 @@ UINT32 UIHandleCAMercShoot( UI_EVENT *pUIEvent )
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
// Get target soldier, if one exists
|
||||
pTSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
pTSoldier = gusUIFullTargetID;
|
||||
}
|
||||
|
||||
if ( pTSoldier != NULL )
|
||||
@@ -3464,7 +3464,7 @@ BOOLEAN SelectedMercCanAffordMove( )
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
void GetMercClimbDirection( UINT16 ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp )
|
||||
void GetMercClimbDirection( SoldierID ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp )
|
||||
{
|
||||
INT8 bNewDirection;
|
||||
SOLDIERTYPE *pSoldier;
|
||||
@@ -3625,11 +3625,11 @@ void ToggleLookCursorMode( UINT32 *puiNewEvent )
|
||||
|
||||
BOOLEAN UIHandleOnMerc( BOOLEAN fMovementMode )
|
||||
{
|
||||
SOLDIERTYPE *pSoldier;
|
||||
UINT16 usSoldierIndex;
|
||||
UINT32 uiMercFlags;
|
||||
INT32 usMapPos;
|
||||
BOOLEAN fFoundMerc = FALSE;
|
||||
SOLDIERTYPE *pSoldier;
|
||||
SoldierID usSoldierIndex;
|
||||
UINT32 uiMercFlags;
|
||||
INT32 usMapPos;
|
||||
BOOLEAN fFoundMerc = FALSE;
|
||||
|
||||
if( !GetMouseMapPos( &usMapPos) )
|
||||
{
|
||||
@@ -3768,16 +3768,16 @@ BOOLEAN UIHandleOnMerc( BOOLEAN fMovementMode )
|
||||
ErasePath( TRUE );
|
||||
|
||||
// Show cursor with highlight on selected merc
|
||||
guiNewUICursor = NO_UICURSOR;
|
||||
guiNewUICursor = NO_UICURSOR;
|
||||
// Show cursor with highlight
|
||||
gfUIHandleSelection = ENEMY_GUY_SELECTION;
|
||||
gsSelectedGridNo = pSoldier->sGridNo;
|
||||
gsSelectedLevel = pSoldier->pathing.bLevel;
|
||||
gfUIHandleSelection = ENEMY_GUY_SELECTION;
|
||||
gsSelectedGridNo = pSoldier->sGridNo;
|
||||
gsSelectedLevel = pSoldier->pathing.bLevel;
|
||||
}
|
||||
}
|
||||
|
||||
gfUIHandleSelectionAboveGuy = TRUE;
|
||||
gsSelectedGuy = usSoldierIndex;
|
||||
gfUIHandleSelectionAboveGuy = TRUE;
|
||||
gsSelectedGuy = usSoldierIndex;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -3838,9 +3838,9 @@ UINT32 UIHandleIETOnTerrain( UI_EVENT *pUIEvent )
|
||||
}
|
||||
|
||||
|
||||
void UIHandleSoldierStanceChange( UINT16 ubSoldierID, INT8 bNewStance )
|
||||
void UIHandleSoldierStanceChange( SoldierID ubSoldierID, INT8 bNewStance )
|
||||
{
|
||||
SOLDIERTYPE *pSoldier = MercPtrs[ ubSoldierID ];
|
||||
SOLDIERTYPE *pSoldier = ubSoldierID;
|
||||
|
||||
if( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) )
|
||||
{
|
||||
@@ -4058,7 +4058,7 @@ void GetCursorMovementFlags( UINT32 *puiCursorFlags )
|
||||
BOOLEAN HandleUIMovementCursor( SOLDIERTYPE *pSoldier, UINT32 uiCursorFlags, INT32 usMapPos, UINT32 uiFlags )
|
||||
{
|
||||
BOOLEAN fSetCursor = FALSE;
|
||||
static UINT16 usTargetID = NOBODY;
|
||||
static SoldierID usTargetID = NOBODY;
|
||||
static BOOLEAN fTargetFound = FALSE;
|
||||
BOOLEAN fTargetFoundAndLookingForOne = FALSE;
|
||||
|
||||
@@ -4588,7 +4588,7 @@ INT8 DrawUIMovementPath( SOLDIERTYPE *pSoldier, INT32 usMapPos, UINT32 uiFlags )
|
||||
// Check if we are on a target
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
sActionGridNo = FindAdjacentGridEx( pSoldier, MercPtrs[ gusUIFullTargetID ]->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE );
|
||||
sActionGridNo = FindAdjacentGridEx( pSoldier, gusUIFullTargetID->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE );
|
||||
if ( sActionGridNo == -1 )
|
||||
{
|
||||
sActionGridNo = sAdjustedGridNo;
|
||||
@@ -4596,7 +4596,7 @@ INT8 DrawUIMovementPath( SOLDIERTYPE *pSoldier, INT32 usMapPos, UINT32 uiFlags )
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////
|
||||
// CHANGED BY SANDRO - REDUCE AP COST TO STEAL FOR MARTIAL ARTS AND HAND TO HAND NEW TRAITS
|
||||
if (MercPtrs[ gusUIFullTargetID ]->bCollapsed && gGameExternalOptions.fEnhancedCloseCombatSystem)
|
||||
if (gusUIFullTargetID->bCollapsed && gGameExternalOptions.fEnhancedCloseCombatSystem)
|
||||
{
|
||||
sAPCost += (GetBasicAPsToPickupItem( pSoldier )); // stealing from collapsed soldiers is treated differently
|
||||
}
|
||||
@@ -4641,7 +4641,7 @@ INT8 DrawUIMovementPath( SOLDIERTYPE *pSoldier, INT32 usMapPos, UINT32 uiFlags )
|
||||
{
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
sActionGridNo = FindAdjacentGridEx( pSoldier, MercPtrs[ gusUIFullTargetID ]->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE );
|
||||
sActionGridNo = FindAdjacentGridEx( pSoldier, gusUIFullTargetID->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE );
|
||||
|
||||
if (!TileIsOutOfBounds(sActionGridNo))
|
||||
{
|
||||
@@ -4813,7 +4813,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo;
|
||||
usMapPos = gusUIFullTargetID->sGridNo;
|
||||
}
|
||||
|
||||
if ( IsRepairableStructAtGridNo( usMapPos, NULL ) && pSoldier->pathing.bLevel == 0 )
|
||||
@@ -4830,7 +4830,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo;
|
||||
usMapPos = gusUIFullTargetID->sGridNo;
|
||||
}
|
||||
|
||||
if ( IsRefuelableStructAtGridNo( usMapPos, NULL ) && pSoldier->pathing.bLevel == 0 )
|
||||
@@ -4847,7 +4847,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo;
|
||||
usMapPos = gusUIFullTargetID->sGridNo;
|
||||
}
|
||||
|
||||
if ( pSoldier->pathing.bLevel == 0 )
|
||||
@@ -4874,7 +4874,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
usMapPos = MercPtrs[gusUIFullTargetID]->sGridNo;
|
||||
usMapPos = gusUIFullTargetID->sGridNo;
|
||||
}
|
||||
|
||||
UINT16 structindex;
|
||||
@@ -4893,7 +4893,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo;
|
||||
usMapPos = gusUIFullTargetID->sGridNo;
|
||||
|
||||
return( TRUE );
|
||||
}
|
||||
@@ -4916,7 +4916,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
if ( pSoldier->ubID != gusUIFullTargetID && MercPtrs[gusUIFullTargetID]->IsValidBloodDonor() )
|
||||
if ( pSoldier->ubID != gusUIFullTargetID && gusUIFullTargetID->IsValidBloodDonor() )
|
||||
return( TRUE );
|
||||
}
|
||||
}
|
||||
@@ -4930,7 +4930,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
if ( pSoldier->ubID != gusUIFullTargetID && MercPtrs[gusUIFullTargetID]->CanReceiveSplint() )
|
||||
if ( pSoldier->ubID != gusUIFullTargetID && gusUIFullTargetID->CanReceiveSplint() )
|
||||
return( TRUE );
|
||||
}
|
||||
}
|
||||
@@ -4944,7 +4944,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo;
|
||||
usMapPos = gusUIFullTargetID->sGridNo;
|
||||
|
||||
return( TRUE );
|
||||
}
|
||||
@@ -4998,7 +4998,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier )
|
||||
}
|
||||
|
||||
// IF a guy's here, chack if they need medical help!
|
||||
pTSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
pTSoldier = gusUIFullTargetID;
|
||||
|
||||
// If we are a vehicle...
|
||||
if ( ( pTSoldier->flags.uiStatusFlags & ( SOLDIER_VEHICLE | SOLDIER_ROBOT ) ) )
|
||||
@@ -5578,12 +5578,12 @@ UINT32 UIHandleLCLook( UI_EVENT *pUIEvent )
|
||||
|
||||
UINT32 UIHandleTOnTerrain( UI_EVENT *pUIEvent )
|
||||
{
|
||||
SOLDIERTYPE *pSoldier;
|
||||
UINT16 ubTargID;
|
||||
UINT32 uiRange;
|
||||
INT32 usMapPos;
|
||||
BOOLEAN fValidTalkableGuy = FALSE;
|
||||
INT32 sTargetGridNo;
|
||||
SOLDIERTYPE *pSoldier;
|
||||
SoldierID ubTargID;
|
||||
UINT32 uiRange;
|
||||
INT32 usMapPos;
|
||||
BOOLEAN fValidTalkableGuy = FALSE;
|
||||
INT32 sTargetGridNo;
|
||||
|
||||
// Get soldier
|
||||
if ( !GetSoldier( &pSoldier, gusSelectedSoldier ) )
|
||||
@@ -5616,7 +5616,7 @@ UINT32 UIHandleTOnTerrain( UI_EVENT *pUIEvent )
|
||||
// Get distance away
|
||||
if ( fValidTalkableGuy )
|
||||
{
|
||||
sTargetGridNo = MercPtrs[ ubTargID ]->sGridNo;
|
||||
sTargetGridNo = ubTargID->sGridNo;
|
||||
}
|
||||
|
||||
uiRange = PythSpacesAway( pSoldier->sGridNo, sTargetGridNo );
|
||||
@@ -6365,7 +6365,7 @@ UINT32 UIHandleLAEndLockOurTurn( UI_EVENT *pUIEvent )
|
||||
|
||||
|
||||
|
||||
BOOLEAN IsValidTalkableNPCFromMouse( UINT16 * pubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed )
|
||||
BOOLEAN IsValidTalkableNPCFromMouse( SoldierID *pubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed )
|
||||
{
|
||||
// Check if there is a guy here to talk to!
|
||||
if ( gfUIFullTargetFound )
|
||||
@@ -6790,7 +6790,7 @@ INT8 UIHandleInteractiveTilesAndItemsOnTerrain( SOLDIERTYPE *pSoldier, INT32 usM
|
||||
// unless we are over our own vehicle, then we can call vehicle menu
|
||||
if( gfUIFullTargetFound )
|
||||
{
|
||||
pTSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
pTSoldier = gusUIFullTargetID;
|
||||
if( pSoldier->iVehicleId == pTSoldier->bVehicleID )
|
||||
{
|
||||
guiNewUICursor = ENTER_VEHICLE_UICURSOR;
|
||||
@@ -6803,7 +6803,7 @@ INT8 UIHandleInteractiveTilesAndItemsOnTerrain( SOLDIERTYPE *pSoldier, INT32 usM
|
||||
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
pTSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
pTSoldier = gusUIFullTargetID;
|
||||
|
||||
// anv: added condition - make sure we won't put vehicle in another vehicle
|
||||
if ( OK_ENTERABLE_VEHICLE( pTSoldier ) && pTSoldier->bVisible != -1 && !( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER | SOLDIER_VEHICLE ) ) )
|
||||
@@ -7198,7 +7198,7 @@ BOOLEAN ValidQuickExchangePosition( )
|
||||
// Check if we over a civ
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
pOverSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
pOverSoldier = gusUIFullTargetID;
|
||||
|
||||
//KM: Replaced this older if statement for the new one which allows exchanging with militia
|
||||
//if ( ( pOverSoldier->bSide != gbPlayerNum ) && pOverSoldier->aiData.bNeutral )
|
||||
@@ -7265,7 +7265,7 @@ 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;
|
||||
UINT16 ubGuyThere;
|
||||
SoldierID ubGuyThere;
|
||||
UINT8 ubMovementCost, ubDirection;
|
||||
INT8 bTileHeight = 0;
|
||||
|
||||
@@ -7370,7 +7370,7 @@ BOOLEAN IsValidJumpLocation( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fChec
|
||||
ubGuyThere = WhoIsThere2( sInBetween, pSoldier->pathing.bLevel );
|
||||
if ( ubGuyThere != NOBODY && ubGuyThere != pSoldier->ubID )
|
||||
{
|
||||
if ( gAnimControl[ MercPtrs[ ubGuyThere ]->usAnimState ].ubHeight != ANIM_PRONE )
|
||||
if ( gAnimControl[ ubGuyThere->usAnimState ].ubHeight != ANIM_PRONE )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
@@ -7444,12 +7444,12 @@ BOOLEAN IsValidJumpLocation( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN fChec
|
||||
|
||||
// If there's a guy on any of the two middle tiles, and he's not prone, we can't jump over him
|
||||
ubGuyThere = WhoIsThere2( sInBetween, pSoldier->pathing.bLevel );
|
||||
if ( ubGuyThere != NOBODY && ubGuyThere != pSoldier->ubID && gAnimControl[ MercPtrs[ ubGuyThere ]->usAnimState ].ubHeight != ANIM_PRONE )
|
||||
if ( ubGuyThere != NOBODY && ubGuyThere != pSoldier->ubID && gAnimControl[ ubGuyThere->usAnimState ].ubHeight != ANIM_PRONE )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
ubGuyThere = WhoIsThere2( sInBetween2, pSoldier->pathing.bLevel );
|
||||
if ( ubGuyThere != NOBODY && ubGuyThere != pSoldier->ubID && gAnimControl[ MercPtrs[ ubGuyThere ]->usAnimState ].ubHeight != ANIM_PRONE )
|
||||
if ( ubGuyThere != NOBODY && ubGuyThere != pSoldier->ubID && gAnimControl[ ubGuyThere->usAnimState ].ubHeight != ANIM_PRONE )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
@@ -198,7 +198,7 @@ extern UINT32 guiShowUPDownArrows;
|
||||
extern BOOLEAN gfUIHandleSelection;
|
||||
extern BOOLEAN gfUIHandleSelectionAboveGuy;
|
||||
extern INT32 gsSelectedGridNo;
|
||||
extern INT16 gsSelectedGuy;
|
||||
extern SoldierID gsSelectedGuy;
|
||||
extern BOOLEAN gfUIInDeadlock;
|
||||
extern UINT16 gUIDeadlockedSoldier;
|
||||
|
||||
@@ -320,13 +320,13 @@ void AdjustSoldierCreationStartValues( );
|
||||
|
||||
BOOLEAN SelectedMercCanAffordAttack( );
|
||||
BOOLEAN SelectedMercCanAffordMove( );
|
||||
void GetMercClimbDirection( UINT16 ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp );
|
||||
void GetMercClimbDirection( SoldierID ubSoldierID, BOOLEAN *pfGoDown, BOOLEAN *pfGoUp );
|
||||
|
||||
void ToggleHandCursorMode( UINT32 *puiNewEvent );
|
||||
void ToggleTalkCursorMode( UINT32 *puiNewEvent );
|
||||
void ToggleLookCursorMode( UINT32 *puiNewEvent );
|
||||
|
||||
void UIHandleSoldierStanceChange( UINT16 ubSoldierID, INT8 bNewStance );
|
||||
void UIHandleSoldierStanceChange( SoldierID ubSoldierID, INT8 bNewStance );
|
||||
void GetCursorMovementFlags( UINT32 *puiCursorFlags );
|
||||
|
||||
BOOLEAN HandleUIMovementCursor( SOLDIERTYPE *pSoldier, UINT32 uiCursorFlags, INT32 usMapPos, UINT32 uiFlags );
|
||||
@@ -334,7 +334,7 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier );
|
||||
|
||||
BOOLEAN UIOkForItemPickup( SOLDIERTYPE *pSoldier, INT32 sGridNo );
|
||||
|
||||
BOOLEAN IsValidTalkableNPCFromMouse( UINT16 * pubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed );
|
||||
BOOLEAN IsValidTalkableNPCFromMouse( SoldierID *pubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed );
|
||||
BOOLEAN IsValidTalkableNPC( SoldierID ubSoldierID, BOOLEAN fGive, BOOLEAN fAllowMercs, BOOLEAN fCheckCollapsed );
|
||||
|
||||
BOOLEAN HandleTalkInit( );
|
||||
|
||||
@@ -335,7 +335,7 @@ BOOLEAN DrawUICursor( )
|
||||
// If we are over a target, jump to that....
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
gusTargetDropPos = MercPtrs[ gusUIFullTargetID ]->sGridNo;
|
||||
gusTargetDropPos = gusUIFullTargetID->sGridNo;
|
||||
}
|
||||
|
||||
// Put tile on the floor
|
||||
|
||||
@@ -8773,23 +8773,23 @@ BOOLEAN SoldierCanSeeCatchComing( SOLDIERTYPE *pSoldier, INT32 sSrcGridNo )
|
||||
|
||||
void DrawItemTileCursor( )
|
||||
{
|
||||
INT32 usMapPos;
|
||||
UINT16 usIndex;
|
||||
UINT16 ubSoldierID;
|
||||
INT16 sAPCost;
|
||||
BOOLEAN fRecalc;
|
||||
UINT32 uiCursorFlags;
|
||||
INT32 sFinalGridNo;
|
||||
UINT32 uiCursorId = CURSOR_ITEM_GOOD_THROW;
|
||||
SOLDIERTYPE *pSoldier;
|
||||
BOOLEAN fGiveItem = FALSE;
|
||||
INT32 sActionGridNo;
|
||||
UINT8 ubDirection;
|
||||
static UINT32 uiOldCursorId = 0;
|
||||
static UINT16 usOldMousePos = 0;
|
||||
INT16 sEndZ = 0;
|
||||
INT16 sDist;
|
||||
INT8 bLevel;
|
||||
INT32 usMapPos;
|
||||
UINT16 usIndex;
|
||||
SoldierID ubSoldierID;
|
||||
INT16 sAPCost;
|
||||
BOOLEAN fRecalc;
|
||||
UINT32 uiCursorFlags;
|
||||
INT32 sFinalGridNo;
|
||||
UINT32 uiCursorId = CURSOR_ITEM_GOOD_THROW;
|
||||
SOLDIERTYPE *pSoldier;
|
||||
BOOLEAN fGiveItem = FALSE;
|
||||
INT32 sActionGridNo;
|
||||
UINT8 ubDirection;
|
||||
static UINT32 uiOldCursorId = 0;
|
||||
static UINT16 usOldMousePos = 0;
|
||||
INT16 sEndZ = 0;
|
||||
INT16 sDist;
|
||||
INT8 bLevel;
|
||||
|
||||
if (GetMouseMapPos( &usMapPos) )
|
||||
{
|
||||
@@ -9120,15 +9120,15 @@ BOOLEAN HandleItemPointerClick( INT32 usMapPos )
|
||||
}
|
||||
|
||||
|
||||
UINT8 ubDirection;
|
||||
UINT16 ubSoldierID;
|
||||
UINT16 usItem;
|
||||
UINT8 ubDirection;
|
||||
SoldierID ubSoldierID;
|
||||
UINT16 usItem;
|
||||
INT16 sAPCost;
|
||||
SOLDIERTYPE *pSoldier=NULL;
|
||||
UINT8 ubThrowActionCode=0;
|
||||
UINT32 uiThrowActionData=0;
|
||||
UINT32 uiThrowActionData=0;
|
||||
INT16 sEndZ = 0;
|
||||
BOOLEAN fGiveItem = FALSE;
|
||||
BOOLEAN fGiveItem = FALSE;
|
||||
INT32 sGridNo;
|
||||
INT16 sDist;
|
||||
|
||||
|
||||
@@ -6403,10 +6403,10 @@ void ShowRadioLocator( SoldierID ubID, UINT8 ubLocatorSpeed )
|
||||
}
|
||||
}
|
||||
|
||||
void EndRadioLocator( UINT16 ubID )
|
||||
void EndRadioLocator( SoldierID ubID )
|
||||
{
|
||||
MercPtrs[ ubID ]->flags.fFlashLocator = FALSE;
|
||||
MercPtrs[ ubID ]->flags.fShowLocator = FALSE;
|
||||
ubID->flags.fFlashLocator = FALSE;
|
||||
ubID->flags.fShowLocator = FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ extern INT8 gbNewItemCycle[ NUM_INV_SLOTS ];
|
||||
extern UINT8 gubNewItemMerc;
|
||||
|
||||
void ShowRadioLocator( SoldierID ubID, UINT8 ubLocatorSpeed );
|
||||
void EndRadioLocator( UINT16 ubID );
|
||||
void EndRadioLocator( SoldierID ubID );
|
||||
|
||||
|
||||
extern MOUSE_REGION gSMPanelRegion;
|
||||
|
||||
@@ -1667,7 +1667,7 @@ void DrawCTHPixelToBuffer( UINT16 *pBuffer, UINT32 uiPitch, INT16 sLeft, INT16 s
|
||||
|
||||
//QUOTE_SYSTEM_STRUCT soldierTTInfo;
|
||||
|
||||
void DrawSelectedUIAboveGuy( UINT16 usSoldierID )
|
||||
void DrawSelectedUIAboveGuy( SoldierID usSoldierID )
|
||||
{
|
||||
SOLDIERTYPE *pSoldier;
|
||||
INT16 sXPos, sYPos;
|
||||
|
||||
@@ -458,7 +458,7 @@ void HandleInterfaceBackgrounds( );
|
||||
void BeginOverlayMessage( UINT32 uiFont, STR16 pFontString, ... );
|
||||
void EndOverlayMessage( );
|
||||
|
||||
void DrawSelectedUIAboveGuy( UINT16 usSoldierID );
|
||||
void DrawSelectedUIAboveGuy( SoldierID usSoldierID );
|
||||
|
||||
// HEADROCK HAM 4: Draw the CTH indicator, using values grabbed from the global CTH array
|
||||
BOOLEAN DrawCTHIndicator();
|
||||
|
||||
+38
-38
@@ -355,7 +355,7 @@ UINT8 ubHeliScripts[ NUM_HELI_STATES ][ MAX_HELI_SCRIPT ] =
|
||||
|
||||
|
||||
BOOLEAN gfHandleHeli = FALSE;
|
||||
UINT16 gusHeliSeats[ MAX_MERC_IN_HELI ];
|
||||
SoldierID gusHeliSeats[ MAX_MERC_IN_HELI ];
|
||||
INT8 gbNumHeliSeatsOccupied = 0;
|
||||
|
||||
BOOLEAN gfFirstGuyDown = FALSE;
|
||||
@@ -392,7 +392,7 @@ void ResetHeliSeats( )
|
||||
gbNumHeliSeatsOccupied = 0;
|
||||
}
|
||||
|
||||
void AddMercToHeli( UINT16 ubID )
|
||||
void AddMercToHeli( SoldierID ubID )
|
||||
{
|
||||
if ( gbNumHeliSeatsOccupied < MAX_MERC_IN_HELI )
|
||||
{
|
||||
@@ -502,21 +502,21 @@ void HandleHeliDrop( BOOLEAN fPlayer )
|
||||
{
|
||||
// Add merc to sector
|
||||
#ifdef JA2UB
|
||||
//MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH;
|
||||
MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO;
|
||||
MercPtrs[ gusHeliSeats[ cnt ] ]->usStrategicInsertionData = gGameUBOptions.LOCATEGRIDNO;
|
||||
//gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH;
|
||||
gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO;
|
||||
gusHeliSeats[ cnt ]->usStrategicInsertionData = gGameUBOptions.LOCATEGRIDNO;
|
||||
#else
|
||||
//MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH;
|
||||
MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO;
|
||||
MercPtrs[ gusHeliSeats[ cnt ] ]->usStrategicInsertionData = gGameExternalOptions.iInitialMercArrivalLocation;
|
||||
//gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH;
|
||||
gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO;
|
||||
gusHeliSeats[ cnt ]->usStrategicInsertionData = gGameExternalOptions.iInitialMercArrivalLocation;
|
||||
#endif
|
||||
// HEADROCK HAM 3.5: Externalized!
|
||||
UpdateMercInSector( MercPtrs[ gusHeliSeats[ cnt ] ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ );
|
||||
UpdateMercInSector( gusHeliSeats[ cnt ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ );
|
||||
|
||||
// Check for merc arrives quotes...
|
||||
HandleMercArrivesQuotes( MercPtrs[ gusHeliSeats[ cnt ] ] );
|
||||
HandleMercArrivesQuotes( gusHeliSeats[ cnt ] );
|
||||
|
||||
ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], MercPtrs[ gusHeliSeats[ cnt ] ]->GetName() );
|
||||
ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], gusHeliSeats[ cnt ]->GetName() );
|
||||
|
||||
}
|
||||
|
||||
@@ -558,23 +558,23 @@ void HandleHeliDrop( BOOLEAN fPlayer )
|
||||
{
|
||||
// Add merc to sector
|
||||
#ifdef JA2UB
|
||||
//MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH;
|
||||
MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO;
|
||||
MercPtrs[ gusHeliSeats[ cnt ] ]->usStrategicInsertionData = gGameUBOptions.LOCATEGRIDNO;
|
||||
//gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH;
|
||||
gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO;
|
||||
gusHeliSeats[ cnt ]->usStrategicInsertionData = gGameUBOptions.LOCATEGRIDNO;
|
||||
#else
|
||||
//MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH;
|
||||
MercPtrs[ gusHeliSeats[ cnt ] ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO;
|
||||
//gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_NORTH;
|
||||
gusHeliSeats[ cnt ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO;
|
||||
// sevenfm: if soldiers land into enemy sector, use gsGridNoSweetSpot
|
||||
//MercPtrs[ gusHeliSeats[ cnt ] ]->usStrategicInsertionData = gGameExternalOptions.iInitialMercArrivalLocation;
|
||||
MercPtrs[gusHeliSeats[cnt]]->usStrategicInsertionData = gsGridNoSweetSpot;
|
||||
//gusHeliSeats[ cnt ]->usStrategicInsertionData = gGameExternalOptions.iInitialMercArrivalLocation;
|
||||
gusHeliSeats[ cnt ]->usStrategicInsertionData = gsGridNoSweetSpot;
|
||||
#endif
|
||||
// HEADROCK HAM 3.5: Externalized!
|
||||
UpdateMercInSector( MercPtrs[ gusHeliSeats[ cnt ] ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ );
|
||||
UpdateMercInSector( gusHeliSeats[ cnt ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ );
|
||||
|
||||
// Check for merc arrives quotes...
|
||||
HandleMercArrivesQuotes( MercPtrs[ gusHeliSeats[ cnt ] ] );
|
||||
HandleMercArrivesQuotes( gusHeliSeats[ cnt ] );
|
||||
|
||||
ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], MercPtrs[ gusHeliSeats[ cnt ] ]->GetName() );
|
||||
ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], gusHeliSeats[ cnt ]->GetName() );
|
||||
}
|
||||
|
||||
// Remove heli
|
||||
@@ -698,24 +698,24 @@ void HandleHeliDrop( BOOLEAN fPlayer )
|
||||
{
|
||||
// Flugente: it is now possible to use airdrops with soldiers after they have arrived in Arulco. In that case, they might have an animation that breaks EVENT_InitNewSoldierAnim prematurely.
|
||||
// In the worst case, this can cause the game to be unable to finish the airdrop. For that reason, we set all those soldiers to the STANDING animation.
|
||||
MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->usAnimState = STANDING;
|
||||
MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->EVENT_InitNewSoldierAnim( HELIDROP, 0 , FALSE );
|
||||
gusHeliSeats[ gbCurDrop ]->usAnimState = STANDING;
|
||||
gusHeliSeats[ gbCurDrop ]->EVENT_InitNewSoldierAnim( HELIDROP, 0 , FALSE );
|
||||
|
||||
// Change insertion code
|
||||
MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO;
|
||||
MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->usStrategicInsertionData = gsGridNoSweetSpot;
|
||||
gusHeliSeats[ gbCurDrop ]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO;
|
||||
gusHeliSeats[ gbCurDrop ]->usStrategicInsertionData = gsGridNoSweetSpot;
|
||||
|
||||
// HEADROCK HAM 3.5: Externalized!
|
||||
UpdateMercInSector( MercPtrs[ gusHeliSeats[ gbCurDrop ] ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ );
|
||||
//EVENT_SetSoldierPosition( MercPtrs[ gusHeliSeats[ gbCurDrop ] ], sWorldX, sWorldY );
|
||||
UpdateMercInSector( gusHeliSeats[ gbCurDrop ], gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY, startingZ );
|
||||
//EVENT_SetSoldierPosition( gusHeliSeats[ gbCurDrop ], sWorldX, sWorldY );
|
||||
|
||||
// IF the first guy down, set squad!
|
||||
if ( gfFirstGuyDown )
|
||||
{
|
||||
gfFirstGuyDown = FALSE;
|
||||
SetCurrentSquad( MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->bAssignment, TRUE );
|
||||
SetCurrentSquad( gusHeliSeats[ gbCurDrop ]->bAssignment, TRUE );
|
||||
}
|
||||
ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->GetName() );
|
||||
ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ MERC_HAS_ARRIVED_STR ], gusHeliSeats[ gbCurDrop ]->GetName() );
|
||||
|
||||
++gbCurDrop;
|
||||
|
||||
@@ -1024,7 +1024,7 @@ void HandleFirstHeliDropOfGame( )
|
||||
CharacterDialogueWithSpecialEvent( 0, 0, 0, DIALOGUE_TACTICAL_UI , FALSE , FALSE , DIALOGUE_SPECIAL_EVENT_ENABLE_AI ,0, 0 );
|
||||
}
|
||||
|
||||
UINT16 SpawnAirDropElite( INT32 sGridNo )
|
||||
SoldierID SpawnAirDropElite( INT32 sGridNo )
|
||||
{
|
||||
SOLDIERTYPE *pSoldier;
|
||||
|
||||
@@ -1076,7 +1076,7 @@ void InitiateEnemyAirDropSoldiers( INT32 sGridNo )
|
||||
|
||||
for ( int i = 0; i < 6; ++i )
|
||||
{
|
||||
UINT16 id = SpawnAirDropElite( gMapInformation.sSouthGridNo + i );
|
||||
SoldierID id = SpawnAirDropElite( gMapInformation.sSouthGridNo + i );
|
||||
|
||||
if ( id == NOBODY )
|
||||
return;
|
||||
@@ -1192,23 +1192,23 @@ void HandleEnemyAirdrop( )
|
||||
{
|
||||
// Flugente: it is now possible to use airdrops with soldiers after they have arrived in Arulco. In that case, they might have an animation that breaks EVENT_InitNewSoldierAnim prematurely.
|
||||
// In the worst case, this can cause the game to be unable to finish the airdrop. For that reason, we set all those soldiers to the STANDING aniamtion.
|
||||
//MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->usAnimState = STANDING;
|
||||
MercPtrs[gusHeliSeats[gbCurDrop]]->EVENT_InitNewSoldierAnim( HELIDROP, 0, FALSE );
|
||||
//gusHeliSeats[ gbCurDrop ]->usAnimState = STANDING;
|
||||
gusHeliSeats[gbCurDrop]->EVENT_InitNewSoldierAnim( HELIDROP, 0, FALSE );
|
||||
|
||||
// Change insertion code
|
||||
MercPtrs[gusHeliSeats[gbCurDrop]]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO;
|
||||
MercPtrs[gusHeliSeats[gbCurDrop]]->usStrategicInsertionData = gsGridNoSweetSpot;
|
||||
gusHeliSeats[gbCurDrop]->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO;
|
||||
gusHeliSeats[gbCurDrop]->usStrategicInsertionData = gsGridNoSweetSpot;
|
||||
|
||||
// HEADROCK HAM 3.5: Externalized!
|
||||
UpdateMercInSector( MercPtrs[gusHeliSeats[gbCurDrop]], gWorldSectorX, gWorldSectorY, startingZ );
|
||||
UpdateMercInSector( gusHeliSeats[gbCurDrop], gWorldSectorX, gWorldSectorY, startingZ );
|
||||
|
||||
// IF the first guy down, set squad!
|
||||
if ( gfFirstGuyDown )
|
||||
{
|
||||
gfFirstGuyDown = FALSE;
|
||||
//SetCurrentSquad( MercPtrs[ gusHeliSeats[ gbCurDrop ] ]->bAssignment, TRUE );
|
||||
//SetCurrentSquad( gusHeliSeats[ gbCurDrop ]->bAssignment, TRUE );
|
||||
}
|
||||
ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[MERC_HAS_ARRIVED_STR], MercPtrs[gusHeliSeats[gbCurDrop]]->GetName( ) );
|
||||
ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[MERC_HAS_ARRIVED_STR], gusHeliSeats[gbCurDrop]->GetName( ) );
|
||||
|
||||
++gbCurDrop;
|
||||
|
||||
|
||||
@@ -425,7 +425,7 @@ INT8 HireMerc( MERC_HIRE_STRUCT *pHireMerc)
|
||||
}
|
||||
|
||||
|
||||
void MercArrivesCallback( UINT16 ubSoldierID )
|
||||
void MercArrivesCallback( SoldierID ubSoldierID )
|
||||
{
|
||||
MERCPROFILESTRUCT *pMerc;
|
||||
SOLDIERTYPE *pSoldier;
|
||||
@@ -457,7 +457,7 @@ void MercArrivesCallback( UINT16 ubSoldierID )
|
||||
// stop time compression until player restarts it
|
||||
StopTimeCompression();
|
||||
|
||||
pSoldier = &Menptr[ ubSoldierID ];
|
||||
pSoldier = ubSoldierID;
|
||||
|
||||
pMerc = &gMercProfiles[ pSoldier->ubProfile ];
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ extern INT16 gsMercArriveSectorY;
|
||||
|
||||
|
||||
INT8 HireMerc( MERC_HIRE_STRUCT *pHireMerc);
|
||||
void MercArrivesCallback( UINT16 ubSoldierID );
|
||||
void MercArrivesCallback( SoldierID ubSoldierID );
|
||||
BOOLEAN IsMercHireable( UINT8 ubMercID );
|
||||
BOOLEAN IsMercDead( UINT8 ubMercID );
|
||||
UINT16 NumberOfMercsOnPlayerTeam();
|
||||
|
||||
@@ -361,7 +361,7 @@ typedef CHAR8 PaletteRepID[ 30 ];
|
||||
typedef struct
|
||||
{
|
||||
UINT8 ubType;
|
||||
PaletteRepID ID;
|
||||
PaletteRepID ID;
|
||||
UINT8 ubPaletteSize;
|
||||
UINT8 *r;
|
||||
UINT8 *g;
|
||||
|
||||
@@ -1489,7 +1489,7 @@ void GetRTMousePositionInput( UINT32 *puiNewEvent )
|
||||
{
|
||||
if( gfUIFullTargetFound )
|
||||
{
|
||||
if ( IsValidTalkableNPC( 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 ) && gusUIFullTargetID->bTeam != ENEMY_TEAM && !ValidQuickExchangePosition( ) )
|
||||
{
|
||||
uiMoveTargetSoldierId = gusUIFullTargetID;
|
||||
*puiNewEvent = T_CHANGE_TO_TALKING;
|
||||
@@ -1536,7 +1536,7 @@ void GetRTMousePositionInput( UINT32 *puiNewEvent )
|
||||
{
|
||||
guiUITargetSoldierId = gusUIFullTargetID;
|
||||
|
||||
if ( MercPtrs[ gusUIFullTargetID ]->bTeam != gbPlayerNum )
|
||||
if ( gusUIFullTargetID->bTeam != gbPlayerNum )
|
||||
{
|
||||
fOnValidGuy = TRUE;
|
||||
}
|
||||
|
||||
+59
-59
@@ -788,65 +788,65 @@ public:
|
||||
void ConvertFrom_101_To_102(const OLDSOLDIERTYPE_101& src);
|
||||
public:
|
||||
// AI STUFF from before the changes to the memory structure
|
||||
INT8 bOppList[MAX_NUM_SOLDIERS]; // AI knowledge database
|
||||
INT8 bLastAction;
|
||||
INT8 bAction;
|
||||
INT32 usActionData;
|
||||
INT8 bNextAction;
|
||||
INT32 usNextActionData;
|
||||
INT8 bActionInProgress;
|
||||
INT8 bAlertStatus;
|
||||
INT8 bOppCnt;
|
||||
INT8 bNeutral;
|
||||
INT8 bNewSituation;
|
||||
INT8 bNextTargetLevel;
|
||||
INT8 bOrders;
|
||||
INT8 bAttitude;
|
||||
INT8 bUnderFire;
|
||||
INT8 bShock;
|
||||
INT8 bUnderEscort;
|
||||
INT8 bBypassToGreen;
|
||||
UINT8 ubLastMercToRadio;
|
||||
INT8 bDominantDir; // AI main direction to face...
|
||||
INT8 bPatrolCnt; // number of patrol gridnos
|
||||
INT8 bNextPatrolPnt; // index to next patrol gridno
|
||||
INT32 sPatrolGrid[MAXPATROLGRIDS];// AI list for ptr->orders==PATROL
|
||||
INT32 sNoiseGridno;
|
||||
UINT8 ubNoiseVolume;
|
||||
INT8 bLastAttackHit;
|
||||
UINT16 ubXRayedBy;
|
||||
FLOAT dHeightAdjustment;
|
||||
INT8 bMorale;
|
||||
INT8 bTeamMoraleMod;
|
||||
INT8 bTacticalMoraleMod;
|
||||
INT8 bStrategicMoraleMod;
|
||||
INT8 bAIMorale;
|
||||
UINT8 ubPendingAction;
|
||||
UINT8 ubPendingActionAnimCount;
|
||||
UINT32 uiPendingActionData1;
|
||||
INT32 sPendingActionData2;
|
||||
INT8 bPendingActionData3;
|
||||
INT8 ubDoorHandleCode;
|
||||
UINT32 uiPendingActionData4;
|
||||
INT8 bInterruptDuelPts;
|
||||
INT8 bPassedLastInterrupt;
|
||||
INT16 bIntStartAPs; //100AP
|
||||
INT8 bMoved;
|
||||
INT8 bHunting;
|
||||
UINT8 ubLastCall;
|
||||
UINT16 ubCaller;
|
||||
INT32 sCallerGridNo;
|
||||
UINT8 bCallPriority;
|
||||
INT8 bCallActedUpon;
|
||||
INT8 bFrenzied;
|
||||
INT8 bNormalSmell;
|
||||
INT8 bMonsterSmell;
|
||||
INT8 bMobility;
|
||||
INT8 bRTPCombat;
|
||||
INT8 fAIFlags;
|
||||
INT16 bAimTime; //100AP
|
||||
INT8 bShownAimTime;
|
||||
UINT8 ubInterruptCounter[MAX_NUM_SOLDIERS]; // SANDRO - interrupt counter added
|
||||
INT8 bOppList[MAX_NUM_SOLDIERS]; // AI knowledge database
|
||||
INT8 bLastAction;
|
||||
INT8 bAction;
|
||||
INT32 usActionData;
|
||||
INT8 bNextAction;
|
||||
INT32 usNextActionData;
|
||||
INT8 bActionInProgress;
|
||||
INT8 bAlertStatus;
|
||||
INT8 bOppCnt;
|
||||
INT8 bNeutral;
|
||||
INT8 bNewSituation;
|
||||
INT8 bNextTargetLevel;
|
||||
INT8 bOrders;
|
||||
INT8 bAttitude;
|
||||
INT8 bUnderFire;
|
||||
INT8 bShock;
|
||||
INT8 bUnderEscort;
|
||||
INT8 bBypassToGreen;
|
||||
UINT8 ubLastMercToRadio;
|
||||
INT8 bDominantDir; // AI main direction to face...
|
||||
INT8 bPatrolCnt; // number of patrol gridnos
|
||||
INT8 bNextPatrolPnt; // index to next patrol gridno
|
||||
INT32 sPatrolGrid[MAXPATROLGRIDS];// AI list for ptr->orders==PATROL
|
||||
INT32 sNoiseGridno;
|
||||
UINT8 ubNoiseVolume;
|
||||
INT8 bLastAttackHit;
|
||||
UINT16 ubXRayedBy;
|
||||
FLOAT dHeightAdjustment;
|
||||
INT8 bMorale;
|
||||
INT8 bTeamMoraleMod;
|
||||
INT8 bTacticalMoraleMod;
|
||||
INT8 bStrategicMoraleMod;
|
||||
INT8 bAIMorale;
|
||||
UINT8 ubPendingAction;
|
||||
UINT8 ubPendingActionAnimCount;
|
||||
UINT32 uiPendingActionData1;
|
||||
INT32 sPendingActionData2;
|
||||
INT8 bPendingActionData3;
|
||||
INT8 ubDoorHandleCode;
|
||||
UINT32 uiPendingActionData4;
|
||||
INT8 bInterruptDuelPts;
|
||||
INT8 bPassedLastInterrupt;
|
||||
INT16 bIntStartAPs; //100AP
|
||||
INT8 bMoved;
|
||||
INT8 bHunting;
|
||||
UINT8 ubLastCall;
|
||||
SoldierID ubCaller;
|
||||
INT32 sCallerGridNo;
|
||||
UINT8 bCallPriority;
|
||||
INT8 bCallActedUpon;
|
||||
INT8 bFrenzied;
|
||||
INT8 bNormalSmell;
|
||||
INT8 bMonsterSmell;
|
||||
INT8 bMobility;
|
||||
INT8 bRTPCombat;
|
||||
INT8 fAIFlags;
|
||||
INT16 bAimTime; //100AP
|
||||
INT8 bShownAimTime;
|
||||
UINT8 ubInterruptCounter[MAX_NUM_SOLDIERS]; // SANDRO - interrupt counter added
|
||||
};
|
||||
|
||||
class STRUCT_Flags//last edited at version 102
|
||||
|
||||
@@ -133,7 +133,7 @@ void SoldierTooltip( SOLDIERTYPE* pSoldier )
|
||||
{
|
||||
//CHRISL: Changed the second parameter to use the same information as the 'F' hotkey uses.
|
||||
//iRangeToTarget = GetRangeInCellCoordsFromGridNoDiff( gusSelectedSoldier->sGridNo, sSoldierGridNo ) / 10;
|
||||
iRangeToTarget = GetRangeInCellCoordsFromGridNoDiff( gusSelectedSoldier->sGridNo, MercPtrs[ gusUIFullTargetID ]->sGridNo ) / 10;
|
||||
iRangeToTarget = GetRangeInCellCoordsFromGridNoDiff( gusSelectedSoldier->sGridNo, gusUIFullTargetID->sGridNo ) / 10;
|
||||
}
|
||||
// WANNE: If we want to show the tooltip of milita and no merc is present in the sector
|
||||
else
|
||||
@@ -145,7 +145,7 @@ void SoldierTooltip( SOLDIERTYPE* pSoldier )
|
||||
// SANDRO - don't use this if detail set to debug!
|
||||
if ( gGameExternalOptions.gfAllowUDTRange && gGameExternalOptions.ubSoldierTooltipDetailLevel != DL_Debug && !(gTacticalStatus.uiFlags & SHOW_ALL_MERCS) )
|
||||
{
|
||||
uiMaxTooltipDistance = (UINT32)( gusSelectedSoldier->GetMaxDistanceVisible(MercPtrs[ gusUIFullTargetID ]->sGridNo, 0, CALC_FROM_WANTED_DIR) * (gGameExternalOptions.ubUDTModifier));
|
||||
uiMaxTooltipDistance = (UINT32)( gusSelectedSoldier->GetMaxDistanceVisible(gusUIFullTargetID->sGridNo, 0, CALC_FROM_WANTED_DIR) * (gGameExternalOptions.ubUDTModifier));
|
||||
uiMaxTooltipDistance /= 100;
|
||||
}
|
||||
//SCORE: Otherwise if we're using dynamics then do this
|
||||
|
||||
@@ -573,7 +573,7 @@ void QueryTBLeftButton( UINT32 *puiNewEvent )
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
// Select guy
|
||||
if ( ( guiUIFullTargetFlags & SELECTED_MERC) && !( guiUIFullTargetFlags & UNCONSCIOUS_MERC ) && !( MercPtrs[ gusUIFullTargetID ]->flags.uiStatusFlags & SOLDIER_VEHICLE ) )
|
||||
if ( ( guiUIFullTargetFlags & SELECTED_MERC) && !( guiUIFullTargetFlags & UNCONSCIOUS_MERC ) && !( gusUIFullTargetID->flags.uiStatusFlags & SOLDIER_VEHICLE ) )
|
||||
{
|
||||
*puiNewEvent = M_CHANGE_TO_ADJPOS_MODE;
|
||||
fIgnoreLeftUp = FALSE;
|
||||
@@ -1250,7 +1250,7 @@ void GetTBMousePositionInput( UINT32 *puiNewEvent )
|
||||
if( gfUIFullTargetFound )
|
||||
{
|
||||
// ATE: Don't do this automatically for enemies......
|
||||
if ( MercPtrs[ gusUIFullTargetID ]->bTeam != ENEMY_TEAM )
|
||||
if ( gusUIFullTargetID->bTeam != ENEMY_TEAM )
|
||||
{
|
||||
uiMoveTargetSoldierId = gusUIFullTargetID;
|
||||
if ( IsValidTalkableNPC( gusUIFullTargetID, FALSE, FALSE, FALSE ) && !_KeyDown( SHIFT ) && !AM_AN_EPC( pSoldier ) && !ValidQuickExchangePosition( ) )
|
||||
@@ -1280,7 +1280,7 @@ void GetTBMousePositionInput( UINT32 *puiNewEvent )
|
||||
{
|
||||
guiUITargetSoldierId = gusUIFullTargetID;
|
||||
|
||||
if ( MercPtrs[ gusUIFullTargetID ]->bTeam != gbPlayerNum )
|
||||
if ( gusUIFullTargetID->bTeam != gbPlayerNum )
|
||||
{
|
||||
fOnValidGuy = TRUE;
|
||||
//ddd turn off flag that indicates aim/autofire mode adjustment (aimed burst/auto)
|
||||
@@ -3593,7 +3593,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
//Display the range to the target
|
||||
DisplayRangeToTarget( gusSelectedSoldier, MercPtrs[gusUIFullTargetID]->sGridNo );
|
||||
DisplayRangeToTarget( gusSelectedSoldier, gusUIFullTargetID->sGridNo );
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -4648,7 +4648,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
// Get soldier...
|
||||
pSoldier2 = MercPtrs[ gusUIFullTargetID ];
|
||||
pSoldier2 = gusUIFullTargetID;
|
||||
|
||||
// Check if both OK....
|
||||
if ( pSoldier1->stats.bLife >= OKLIFE && pSoldier2->ubID != gusSelectedSoldier )
|
||||
@@ -5677,7 +5677,7 @@ INT8 CheckForAndHandleHandleVehicleInteractiveClick( SOLDIERTYPE *pSoldier, UINT
|
||||
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
pTSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
pTSoldier = gusUIFullTargetID;
|
||||
|
||||
// anv: added condition - make sure we won't put vehicle in another vehicle
|
||||
if ( OK_ENTERABLE_VEHICLE( pTSoldier ) && pTSoldier->bVisible != -1 && OKUseVehicle( pTSoldier->ubProfile ) && !( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER | SOLDIER_VEHICLE ) ) )
|
||||
@@ -5824,18 +5824,18 @@ void HandleHandCursorClick( INT32 usMapPos, UINT32 *puiNewEvent )
|
||||
// Flugente: allow stealing if the other guy is an enemy, OR if we are on the same team
|
||||
if ( (( guiUIFullTargetFlags & ENEMY_MERC ) && !( guiUIFullTargetFlags & UNCONSCIOUS_MERC )) || (AllowedToStealFromTeamMate(pSoldier->ubID, (UINT8)gusUIFullTargetID) && guiUIFullTargetFlags & OWNED_MERC) )
|
||||
{
|
||||
sActionGridNo = FindAdjacentGridEx( pSoldier, MercPtrs[ gusUIFullTargetID ]->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE );
|
||||
sActionGridNo = FindAdjacentGridEx( pSoldier, gusUIFullTargetID->sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE );
|
||||
if ( sActionGridNo == -1 )
|
||||
{
|
||||
sActionGridNo = sAdjustedGridNo;
|
||||
}
|
||||
|
||||
// Steal!
|
||||
sAPCost = GetAPsToStealItem( pSoldier, MercPtrs[ gusUIFullTargetID ], sActionGridNo ); // SANDRO - added target variable
|
||||
sAPCost = GetAPsToStealItem( pSoldier, gusUIFullTargetID, sActionGridNo ); // SANDRO - added target variable
|
||||
|
||||
if ( EnoughPoints( pSoldier, sAPCost, 0, TRUE ) )
|
||||
{
|
||||
MercStealFromMerc( pSoldier, MercPtrs[ gusUIFullTargetID ] );
|
||||
MercStealFromMerc( pSoldier, gusUIFullTargetID );
|
||||
|
||||
*puiNewEvent = A_CHANGE_TO_MOVE;
|
||||
|
||||
@@ -5962,7 +5962,7 @@ void HandleHandCursorRightClick( INT32 usMapPos, UINT32 *puiNewEvent )
|
||||
|
||||
if( gfUIFullTargetFound )
|
||||
{
|
||||
pTSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
pTSoldier = gusUIFullTargetID;
|
||||
if( OK_ENTERABLE_VEHICLE( pTSoldier ) && pTSoldier->bVisible != -1 && OKUseVehicle( pTSoldier->ubProfile ) )
|
||||
{
|
||||
// anv: if we are passengers, only show menu when clicking on vehicle we're in
|
||||
@@ -6058,10 +6058,10 @@ INT8 HandleMoveModeInteractiveClick( INT32 usMapPos, UINT32 *puiNewEvent )
|
||||
if ( ValidQuickExchangePosition( ) )
|
||||
{
|
||||
// Check if we can...
|
||||
if ( CanExchangePlaces( pSoldier, MercPtrs[ gusUIFullTargetID ], TRUE ) )
|
||||
if ( CanExchangePlaces( pSoldier, gusUIFullTargetID, TRUE ) )
|
||||
{
|
||||
gpExchangeSoldier1 = pSoldier;
|
||||
gpExchangeSoldier2 = MercPtrs[ gusUIFullTargetID ];
|
||||
gpExchangeSoldier2 = gusUIFullTargetID;
|
||||
|
||||
// Do message box...
|
||||
//DoMessageBox( MSG_BOX_BASIC_STYLE, TacticalStr[ EXCHANGE_PLACES_REQUESTER ], GAME_SCREEN, ( UINT8 )MSG_BOX_FLAG_YESNO, ExchangeMessageBoxCallBack, NULL );
|
||||
|
||||
+18
-18
@@ -134,7 +134,7 @@ BOOLEAN GetMouseRecalcAndShowAPFlags( UINT32 *puiCursorFlags, BOOLEAN *pfShowAPs
|
||||
|
||||
|
||||
// FUNCTIONS FOR CURSOR DETERMINATION!
|
||||
UINT8 GetProperItemCursor( UINT16 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos, BOOLEAN fActivated )
|
||||
UINT8 GetProperItemCursor( SoldierID ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos, BOOLEAN fActivated )
|
||||
{
|
||||
SOLDIERTYPE *pSoldier;
|
||||
UINT32 uiCursorFlags;
|
||||
@@ -144,7 +144,7 @@ UINT8 GetProperItemCursor( UINT16 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPo
|
||||
UINT8 ubCursorID=0;
|
||||
UINT8 ubItemCursor = 0;
|
||||
|
||||
pSoldier = MercPtrs[ ubSoldierID ];
|
||||
pSoldier = ubSoldierID;
|
||||
|
||||
fRecalc = GetMouseRecalcAndShowAPFlags( &uiCursorFlags, &fShowAPs );
|
||||
|
||||
@@ -159,7 +159,7 @@ UINT8 GetProperItemCursor( UINT16 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPo
|
||||
// Calculate target gridno!
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
sTargetGridNo = MercPtrs[ gusUIFullTargetID ]->sGridNo;
|
||||
sTargetGridNo = gusUIFullTargetID->sGridNo;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -573,7 +573,7 @@ UINT8 HandleActivatedTargetCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos, BOOLEA
|
||||
{
|
||||
if ( gusUIFullTargetID != NOBODY )
|
||||
{
|
||||
if ( SoldierToSoldierBodyPartChanceToGetThrough( pSoldier, MercPtrs[ gusUIFullTargetID ], pSoldier->bAimShotLocation ) < OK_CHANCE_TO_GET_THROUGH )
|
||||
if ( SoldierToSoldierBodyPartChanceToGetThrough( pSoldier, gusUIFullTargetID, pSoldier->bAimShotLocation ) < OK_CHANCE_TO_GET_THROUGH )
|
||||
{
|
||||
gfCannotGetThrough = TRUE;
|
||||
}
|
||||
@@ -1556,7 +1556,7 @@ void DetermineCursorBodyLocation( UINT16 ubSoldierID, BOOLEAN fDisplay, BOOLEAN
|
||||
// Check if we can find a soldier here
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
pTargetSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
pTargetSoldier = gusUIFullTargetID;
|
||||
|
||||
if ( FindRelativeSoldierPosition( pTargetSoldier, &usFlags, gusMouseXPos, gusMouseYPos ) )
|
||||
{
|
||||
@@ -1594,7 +1594,7 @@ void DetermineCursorBodyLocation( UINT16 ubSoldierID, BOOLEAN fDisplay, BOOLEAN
|
||||
{
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
pTargetSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
pTargetSoldier = gusUIFullTargetID;
|
||||
|
||||
if ( pTargetSoldier->ubBodyType == CROW )
|
||||
{
|
||||
@@ -2583,7 +2583,7 @@ void HandleRightClickAdjustCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos )
|
||||
// 'snap' cursor to target tile....
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
usMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo;
|
||||
usMapPos = gusUIFullTargetID->sGridNo;
|
||||
}
|
||||
|
||||
|
||||
@@ -2609,7 +2609,7 @@ void HandleRightClickAdjustCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos )
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
// Get target soldier, if one exists
|
||||
pTSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
pTSoldier = gusUIFullTargetID;
|
||||
sGridNo = pTSoldier->sGridNo;
|
||||
bTargetLevel = pSoldier->pathing.bLevel;
|
||||
|
||||
@@ -2727,7 +2727,7 @@ void HandleRightClickAdjustCursor( SOLDIERTYPE *pSoldier, INT32 usMapPos )
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
// Get target soldier, if one exists
|
||||
pTSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
pTSoldier = gusUIFullTargetID;
|
||||
sGridNo = pTSoldier->sGridNo;
|
||||
bTargetLevel = pSoldier->pathing.bLevel;
|
||||
|
||||
@@ -3172,7 +3172,7 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT16 sMapPos, INT16 sDelta
|
||||
// 'snap' cursor to target tile....
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
sMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo;
|
||||
sMapPos = gusUIFullTargetID->sGridNo;
|
||||
}
|
||||
|
||||
switch( ubCursor )
|
||||
@@ -3180,8 +3180,8 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT16 sMapPos, INT16 sDelta
|
||||
case TARGETCURS:
|
||||
// warn if bad chance to get through
|
||||
if ( gfUIFullTargetFound &&
|
||||
!HandleCheckForBadChangeToGetThrough( pSoldier, MercPtrs[ gusUIFullTargetID ],
|
||||
MercPtrs[ gusUIFullTargetID ]->sGridNo , MercPtrs[ gusUIFullTargetID ]->pathing.bLevel ) )
|
||||
!HandleCheckForBadChangeToGetThrough( pSoldier, gusUIFullTargetID,
|
||||
gusUIFullTargetID->sGridNo , gusUIFullTargetID->pathing.bLevel ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -3370,7 +3370,7 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT16 sMapPos, INT16 sDelta
|
||||
// 'snap' cursor to target tile....
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
sMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo;
|
||||
sMapPos = gusUIFullTargetID->sGridNo;
|
||||
}
|
||||
|
||||
|
||||
@@ -3442,7 +3442,7 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT16 sMapPos, INT16 sDelta
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
// Get target soldier, if one exists
|
||||
pTSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
pTSoldier = gusUIFullTargetID;
|
||||
sGridNo = pTSoldier->sGridNo;
|
||||
bTargetLevel = pSoldier->pathing.bLevel;
|
||||
|
||||
@@ -3608,7 +3608,7 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT32 sMapPos, INT32 sDelta
|
||||
|
||||
// 'snap' cursor to target tile....
|
||||
if ( gfUIFullTargetFound )
|
||||
sMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo;
|
||||
sMapPos = gusUIFullTargetID->sGridNo;
|
||||
|
||||
int aimlevelchange = 1;
|
||||
int maxAimCanAfford = 0;
|
||||
@@ -3681,7 +3681,7 @@ void HandleWheelAdjustCursor( SOLDIERTYPE *pSoldier, INT32 sMapPos, INT32 sDelta
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
// Get target soldier, if one exists
|
||||
pTSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
pTSoldier = gusUIFullTargetID;
|
||||
sGridNo = pTSoldier->sGridNo;
|
||||
bTargetLevel = pSoldier->pathing.bLevel;
|
||||
|
||||
@@ -3836,7 +3836,7 @@ void HandleWheelAdjustCursorWOAB( SOLDIERTYPE *pSoldier, INT32 sMapPos, INT32 sD
|
||||
// 'snap' cursor to target tile....
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
sMapPos = MercPtrs[ gusUIFullTargetID ]->sGridNo;
|
||||
sMapPos = gusUIFullTargetID->sGridNo;
|
||||
}
|
||||
|
||||
|
||||
@@ -3908,7 +3908,7 @@ void HandleWheelAdjustCursorWOAB( SOLDIERTYPE *pSoldier, INT32 sMapPos, INT32 sD
|
||||
if ( gfUIFullTargetFound )
|
||||
{
|
||||
// Get target soldier, if one exists
|
||||
pTSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
pTSoldier = gusUIFullTargetID;
|
||||
sGridNo = pTSoldier->sGridNo;
|
||||
bTargetLevel = pSoldier->pathing.bLevel;
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#define REFINE_KNIFE_2 (gGameExternalOptions.fEnhancedCloseCombatSystem ? gSkillTraitValues.ubModifierForAPsAddedOnAimedBladedAttackes*2 : 6)
|
||||
|
||||
|
||||
UINT8 GetProperItemCursor( UINT16 ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos, BOOLEAN fActivated );
|
||||
UINT8 GetProperItemCursor( SoldierID ubSoldierID, UINT16 ubItemIndex, INT32 usMapPos, BOOLEAN fActivated );
|
||||
void DetermineCursorBodyLocation( UINT16 ubSoldierID, BOOLEAN fDisplay, BOOLEAN fRecalc );
|
||||
|
||||
void HandleLeftClickCursor( SOLDIERTYPE *pSoldier );
|
||||
@@ -30,4 +30,4 @@ BOOLEAN GetMouseRecalcAndShowAPFlags( UINT32 *puiCursorFlags, BOOLEAN *pfShowAPs
|
||||
// based on how trained the shooter is.
|
||||
UINT32 ChanceToHitApproximation( SOLDIERTYPE * pSoldier, UINT32 uiChance );
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
extern BOOLEAN gfIngagedInDrop;
|
||||
|
||||
void ResetHeliSeats( );
|
||||
void AddMercToHeli( UINT16 ubID );
|
||||
void AddMercToHeli( SoldierID 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 );
|
||||
|
||||
UINT16 SpawnAirDropElite( INT32 sGridNo );
|
||||
SoldierID SpawnAirDropElite( INT32 sGridNo );
|
||||
|
||||
void InitiateEnemyAirDropSoldiers( INT32 sGridNo );
|
||||
void HandleEnemyAirdrop( );
|
||||
|
||||
+15
-15
@@ -130,20 +130,20 @@ typedef struct
|
||||
class ATTACKTYPE
|
||||
{
|
||||
public:
|
||||
UINT8 ubPossible; // is this attack form possible
|
||||
UINT16 ubOpponent; // which soldier is the victim
|
||||
UINT8 ubPossible; // is this attack form possible
|
||||
SoldierID 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
|
||||
INT16 ubAimTime; // how many extra APs to spend on aiming
|
||||
INT16 ubChanceToReallyHit; // chance to hit * chance to get through cover
|
||||
//END STRUCTURE CHANGE BY GOTTHARD 7/14/07
|
||||
INT16 ubAPCost; // how many APs the attack will use up
|
||||
INT32 iAttackValue; // relative worthiness of this type of attack
|
||||
INT32 sTarget; // target gridno of this attack
|
||||
INT8 bTargetLevel; // target level of this attack
|
||||
INT8 bWeaponIn; // the inv slot of the weapon in question
|
||||
INT8 bScopeMode; // SANDRO: added for scope mode and alternative weapon holding
|
||||
UINT8 ubStance; // recommended stance for attack
|
||||
UINT8 ubFriendlyFireChance; // highest chance to hit someone of our guys //dnl ch61 180813
|
||||
INT16 ubAPCost; // how many APs the attack will use up
|
||||
INT32 iAttackValue; // relative worthiness of this type of attack
|
||||
INT32 sTarget; // target gridno of this attack
|
||||
INT8 bTargetLevel; // target level of this attack
|
||||
INT8 bWeaponIn; // the inv slot of the weapon in question
|
||||
INT8 bScopeMode; // SANDRO: added for scope mode and alternative weapon holding
|
||||
UINT8 ubStance; // recommended stance for attack
|
||||
UINT8 ubFriendlyFireChance; // highest chance to hit someone of our guys //dnl ch61 180813
|
||||
|
||||
ATTACKTYPE(void){ InitAttackType(this); }
|
||||
void InitAttackType(ATTACKTYPE *pAttack);
|
||||
@@ -212,7 +212,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, UINT16 ubOpponentID);
|
||||
void CheckTossAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, SoldierID 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);
|
||||
|
||||
@@ -254,7 +254,7 @@ INT32 InternalGoAsFarAsPossibleTowards(SOLDIERTYPE *pSoldier, INT32 sDesGrid, IN
|
||||
int LegalNPCDestination(SOLDIERTYPE *pSoldier, INT32 sGridno, UINT8 ubPathMode, UINT8 ubWaterOK, UINT8 fFlags);
|
||||
void LoadWeaponIfNeeded(SOLDIERTYPE *pSoldier);
|
||||
INT32 MostImportantNoiseHeard( SOLDIERTYPE *pSoldier, INT32 *piRetValue, BOOLEAN * pfClimbingNecessary, BOOLEAN * pfReachable );
|
||||
INT32 NPCConsiderInitiatingConv( SOLDIERTYPE * pNPC, UINT8 * pubDesiredMerc );
|
||||
INT32 NPCConsiderInitiatingConv( SOLDIERTYPE * pNPC, SoldierID * pubDesiredMerc );
|
||||
void NPCDoesAct(SOLDIERTYPE *pSoldier);
|
||||
void NPCDoesNothing(SOLDIERTYPE *pSoldier);
|
||||
INT8 OKToAttack(SOLDIERTYPE *ptr, int target);
|
||||
@@ -318,7 +318,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, UINT16 * puID, INT16 sRange);
|
||||
BOOLEAN GetFarthestOpponent(SOLDIERTYPE *pSoldier, SoldierID *puID, INT16 sRange);
|
||||
|
||||
// are there more allies than friends in adjacent sectors?
|
||||
BOOLEAN MoreFriendsThanEnemiesinNearbysectors(UINT8 ausTeam, INT16 aX, INT16 aY, INT8 aZ);
|
||||
|
||||
+11
-11
@@ -46,7 +46,7 @@ void DeleteAIListEntry( AILIST * pEntry )
|
||||
pEntry->pNext = NULL;
|
||||
}
|
||||
|
||||
UINT16 FindEmptyAIListEntry( void )
|
||||
SoldierID FindEmptyAIListEntry( void )
|
||||
{
|
||||
UINT16 ubLoop;
|
||||
|
||||
@@ -61,7 +61,7 @@ UINT16 FindEmptyAIListEntry( void )
|
||||
return( AI_LIST_SIZE );
|
||||
}
|
||||
|
||||
AILIST * CreateNewAIListEntry( UINT16 ubNewEntry, UINT16 ubID, INT8 bPriority )
|
||||
AILIST * CreateNewAIListEntry( UINT16 ubNewEntry, SoldierID ubID, INT8 bPriority )
|
||||
{
|
||||
gAIList[ ubNewEntry ].ubID = ubID;
|
||||
gAIList[ ubNewEntry ].bPriority = bPriority;
|
||||
@@ -69,10 +69,10 @@ AILIST * CreateNewAIListEntry( UINT16 ubNewEntry, UINT16 ubID, INT8 bPriority )
|
||||
return( &(gAIList[ ubNewEntry ]) );
|
||||
}
|
||||
|
||||
UINT16 RemoveFirstAIListEntry( void )
|
||||
SoldierID RemoveFirstAIListEntry( void )
|
||||
{
|
||||
AILIST *pOldFirstEntry;
|
||||
UINT16 ubID;
|
||||
SoldierID ubID;
|
||||
|
||||
while ( gpFirstAIListEntry != NULL)
|
||||
{
|
||||
@@ -94,7 +94,7 @@ UINT16 RemoveFirstAIListEntry( void )
|
||||
return( NOBODY );
|
||||
}
|
||||
|
||||
void RemoveAIListEntryForID( UINT16 ubID )
|
||||
void RemoveAIListEntryForID( SoldierID ubID )
|
||||
{
|
||||
AILIST * pEntry;
|
||||
AILIST * pPrevEntry;
|
||||
@@ -123,9 +123,9 @@ void RemoveAIListEntryForID( UINT16 ubID )
|
||||
// none found, that's okay
|
||||
}
|
||||
|
||||
BOOLEAN InsertIntoAIList( UINT16 ubID, INT8 bPriority )
|
||||
BOOLEAN InsertIntoAIList( SoldierID ubID, INT8 bPriority )
|
||||
{
|
||||
UINT16 ubNewEntry;
|
||||
SoldierID ubNewEntry;
|
||||
AILIST * pEntry, * pNewEntry, * pPrevEntry = NULL;
|
||||
|
||||
ubNewEntry = FindEmptyAIListEntry();
|
||||
@@ -276,15 +276,15 @@ BOOLEAN SatisfiesAIListConditions( SOLDIERTYPE * pSoldier, UINT16 * pubDoneCount
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
BOOLEAN MoveToFrontOfAIList( UINT16 ubID )
|
||||
BOOLEAN MoveToFrontOfAIList( SoldierID 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;
|
||||
UINT16 ubNewEntry;
|
||||
AILIST * pNewEntry;
|
||||
SoldierID ubNewEntry;
|
||||
AILIST *pNewEntry;
|
||||
|
||||
if ( !SatisfiesAIListConditions( MercPtrs[ ubID ], NULL, FALSE ) )
|
||||
if ( !SatisfiesAIListConditions( ubID, NULL, FALSE ) )
|
||||
{
|
||||
// can't do dat!
|
||||
return( FALSE );
|
||||
|
||||
+9
-9
@@ -1,18 +1,18 @@
|
||||
#include "Types.h"
|
||||
#include "Overhead Types.h"
|
||||
|
||||
typedef struct AILIST
|
||||
{
|
||||
UINT16 ubID;
|
||||
INT8 bPriority;
|
||||
UINT8 ubUnused;
|
||||
struct AILIST * pNext;
|
||||
SoldierID ubID;
|
||||
INT8 bPriority;
|
||||
UINT8 ubUnused;
|
||||
struct AILIST *pNext;
|
||||
} AILIST;
|
||||
|
||||
#define MAX_AI_PRIORITY 100
|
||||
|
||||
extern void ClearAIList( void );
|
||||
extern AILIST * CreateNewAIListEntry( UINT16 ubNewEntry, UINT16 ubID, INT8 bAlertStatus );
|
||||
extern BOOLEAN InsertIntoAIList( UINT16 ubID, INT8 bAlertStatus );
|
||||
extern UINT16 RemoveFirstAIListEntry( void );
|
||||
extern AILIST * CreateNewAIListEntry( UINT16 ubNewEntry, SoldierID ubID, INT8 bAlertStatus );
|
||||
extern BOOLEAN InsertIntoAIList( SoldierID ubID, INT8 bAlertStatus );
|
||||
extern SoldierID RemoveFirstAIListEntry( void );
|
||||
extern BOOLEAN BuildAIListForTeam( INT8 bTeam );
|
||||
extern BOOLEAN MoveToFrontOfAIList( UINT16 ubID );
|
||||
extern BOOLEAN MoveToFrontOfAIList( SoldierID ubID );
|
||||
|
||||
+17
-17
@@ -874,7 +874,7 @@ void HandleSoldierAI( SOLDIERTYPE *pSoldier ) // FIXME - this function is named
|
||||
|
||||
void EndAIGuysTurn( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
UINT16 ubID;
|
||||
SoldierID ubID;
|
||||
|
||||
if (gfTurnBasedAI)
|
||||
{
|
||||
@@ -885,19 +885,19 @@ void EndAIGuysTurn( SOLDIERTYPE *pSoldier )
|
||||
}
|
||||
|
||||
// search for any player merc to say close call quote
|
||||
for ( ubID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubID <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubID++ )
|
||||
for ( ubID = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubID <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++ubID )
|
||||
{
|
||||
if ( OK_INSECTOR_MERC( MercPtrs[ ubID ] ) )
|
||||
if ( OK_INSECTOR_MERC( ubID ) )
|
||||
{
|
||||
if ( MercPtrs[ ubID ]->flags.fCloseCall )
|
||||
if ( ubID->flags.fCloseCall )
|
||||
{
|
||||
if ( !gTacticalStatus.fSomeoneHit && MercPtrs[ ubID ]->bNumHitsThisTurn == 0 && !(MercPtrs[ ubID ]->usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_EXT_CLOSE_CALL) && Random( 3 ) == 0 )
|
||||
if ( !gTacticalStatus.fSomeoneHit && ubID->bNumHitsThisTurn == 0 && !(ubID->usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_EXT_CLOSE_CALL) && Random( 3 ) == 0 )
|
||||
{
|
||||
// say close call quote!
|
||||
TacticalCharacterDialogue( MercPtrs[ ubID ], QUOTE_CLOSE_CALL );
|
||||
MercPtrs[ ubID ]->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_EXT_CLOSE_CALL;
|
||||
TacticalCharacterDialogue( ubID, QUOTE_CLOSE_CALL );
|
||||
ubID->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_EXT_CLOSE_CALL;
|
||||
}
|
||||
MercPtrs[ ubID ]->flags.fCloseCall = FALSE;
|
||||
ubID->flags.fCloseCall = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -942,7 +942,7 @@ void EndAIGuysTurn( SOLDIERTYPE *pSoldier )
|
||||
ubID = RemoveFirstAIListEntry();
|
||||
if (ubID != NOBODY)
|
||||
{
|
||||
StartNPCAI( MercPtrs[ ubID ] );
|
||||
StartNPCAI( ubID );
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1165,12 +1165,12 @@ INT32 FindAdjacentSpotBeside(SOLDIERTYPE *pSoldier, INT32 sGridNo)
|
||||
return(sCheapestDest);
|
||||
}
|
||||
|
||||
UINT16 GetMostThreateningOpponent( SOLDIERTYPE *pSoldier )
|
||||
SoldierID GetMostThreateningOpponent( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
UINT32 uiLoop;
|
||||
INT32 iThreatVal,iMinThreat = 30000;
|
||||
SOLDIERTYPE *pTargetSoldier;
|
||||
UINT16 ubTargetSoldier = NOBODY;
|
||||
UINT32 uiLoop;
|
||||
INT32 iThreatVal,iMinThreat = 30000;
|
||||
SOLDIERTYPE *pTargetSoldier;
|
||||
SoldierID ubTargetSoldier = NOBODY;
|
||||
|
||||
// Loop through all mercs
|
||||
|
||||
@@ -1914,7 +1914,7 @@ INT8 ExecuteAction(SOLDIERTYPE *pSoldier)
|
||||
UINT16 usHandItem = pSoldier->inv[HANDPOS].usItem;
|
||||
|
||||
INT8 bSlot;
|
||||
UINT16 usSoldierIndex; // added by SANDRO
|
||||
SoldierID usSoldierIndex; // added by SANDRO
|
||||
|
||||
#ifdef TESTAICONTROL
|
||||
if (gfTurnBasedAI || gTacticalStatus.fAutoBandageMode)
|
||||
@@ -2594,7 +2594,7 @@ INT8 ExecuteAction(SOLDIERTYPE *pSoldier)
|
||||
usSoldierIndex = WhoIsThere2( pSoldier->aiData.usActionData, pSoldier->bTargetLevel);
|
||||
if ( usSoldierIndex != NOBODY )
|
||||
{
|
||||
MercStealFromMerc( pSoldier, MercPtrs[usSoldierIndex] );
|
||||
MercStealFromMerc( pSoldier, usSoldierIndex );
|
||||
PossiblyStartEnemyTaunt( pSoldier, TAUNT_STEAL, usSoldierIndex );
|
||||
}
|
||||
|
||||
@@ -2628,7 +2628,7 @@ INT8 ExecuteAction(SOLDIERTYPE *pSoldier)
|
||||
|
||||
case AI_ACTION_USE_SKILL:
|
||||
{
|
||||
UINT16 ubID = WhoIsThere2( pSoldier->aiData.usActionData, 0 );
|
||||
SoldierID ubID = WhoIsThere2( pSoldier->aiData.usActionData, 0 );
|
||||
|
||||
BOOLEAN result = pSoldier->UseSkill(pSoldier->usAISkillUse, pSoldier->aiData.usActionData, ubID);
|
||||
|
||||
|
||||
+28
-26
@@ -716,16 +716,16 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot)
|
||||
//dnl ch62 180813 ignore firing into breathless targets if there are targets in better condition
|
||||
// sevenfm: check that best opponent exists
|
||||
if (pBestShot->ubOpponent != NOBODY &&
|
||||
(Menptr[pBestShot->ubOpponent].bCollapsed || Menptr[pBestShot->ubOpponent].bBreathCollapsed) &&
|
||||
Menptr[pBestShot->ubOpponent].bBreath < OKBREATH
|
||||
&& Menptr[pBestShot->ubOpponent].bBreath < pOpponent->bBreath)
|
||||
(pBestShot->ubOpponent->bCollapsed || pBestShot->ubOpponent->bBreathCollapsed) &&
|
||||
pBestShot->ubOpponent->bBreath < OKBREATH
|
||||
&& pBestShot->ubOpponent->bBreath < pOpponent->bBreath)
|
||||
{
|
||||
iPercentBetter = PERCENT_TO_IGNORE_THREAT;
|
||||
}
|
||||
|
||||
// sevenfm: if best opponent is dying and new opponent is ok, use new opponent
|
||||
if (pBestShot->ubOpponent != NOBODY &&
|
||||
Menptr[pBestShot->ubOpponent].stats.bLife < OKLIFE &&
|
||||
pBestShot->ubOpponent->stats.bLife < OKLIFE &&
|
||||
pOpponent->stats.bLife >= OKLIFE)
|
||||
{
|
||||
iPercentBetter = PERCENT_TO_IGNORE_THREAT;
|
||||
@@ -735,7 +735,7 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot)
|
||||
// guy is conscious at all
|
||||
if (iPercentBetter < -PERCENT_TO_IGNORE_THREAT &&
|
||||
pBestShot->ubOpponent != NOBODY &&
|
||||
Menptr[pBestShot->ubOpponent].stats.bLife >= OKLIFE)
|
||||
pBestShot->ubOpponent->stats.bLife >= OKLIFE)
|
||||
{
|
||||
// then stick with the older guy as the better target
|
||||
continue;
|
||||
@@ -753,7 +753,7 @@ void CalcBestShot(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestShot)
|
||||
|
||||
// sevenfm: if new opponent is dying and best opponent is ok, ignore new opponent
|
||||
if (pBestShot->ubOpponent != NOBODY &&
|
||||
Menptr[pBestShot->ubOpponent].stats.bLife >= OKLIFE &&
|
||||
pBestShot->ubOpponent->stats.bLife >= OKLIFE &&
|
||||
pOpponent->stats.bLife < OKLIFE)
|
||||
{
|
||||
//DebugShot(pSoldier, String("new opponent is dying, best opponent is ok - skip"));
|
||||
@@ -845,7 +845,8 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow)
|
||||
INT32 sGridNo, sEndGridNo, sFriendTile[MAXMERCS], sOpponentTile[MAXMERCS];
|
||||
INT8 bFriendLevel[MAXMERCS], bOpponentLevel[MAXMERCS];
|
||||
INT32 iEstDamage;
|
||||
UINT16 ubFriendCnt = 0,ubOpponentCnt = 0, ubOpponentID[MAXMERCS];
|
||||
UINT16 ubFriendCnt = 0, ubOpponentCnt = 0;
|
||||
SoldierID ubOpponentID[MAXMERCS];
|
||||
UINT8 ubMaxPossibleAimTime;
|
||||
INT16 sRawAPCost, sMinAPcost;
|
||||
UINT8 ubChanceToHit, ubChanceToGetThrough, ubChanceToReallyHit, ubFriendlyFireChance;
|
||||
@@ -1479,7 +1480,7 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow)
|
||||
iThreatValue = iOppThreatValue[ubLoop2];
|
||||
|
||||
// estimate how much damage this tossed item would do to him
|
||||
iEstDamage = EstimateThrowDamage(pSoldier,bPayloadPocket,MercPtrs[ubOpponentID[ubLoop2]],sGridNo);
|
||||
iEstDamage = EstimateThrowDamage(pSoldier, bPayloadPocket, ubOpponentID[ubLoop2], sGridNo);
|
||||
|
||||
if (usOppDist)
|
||||
{
|
||||
@@ -1492,7 +1493,7 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow)
|
||||
iTotalThreatValue += (iThreatValue * iEstDamage);
|
||||
|
||||
// only count opponents still standing worth shooting at (in range)
|
||||
if (Menptr[ ubOpponentID[ubLoop2] ].stats.bLife >= OKLIFE)
|
||||
if (ubOpponentID[ubLoop2]->stats.bLife >= OKLIFE)
|
||||
{
|
||||
ubOppsInRange++;
|
||||
if (usOppDist < 2)
|
||||
@@ -1599,7 +1600,7 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow)
|
||||
// limit RPG use, unless can hit several enemies, shooting at tank or opponent is in a room
|
||||
if (ItemIsRocketLauncher(usInHand) &&
|
||||
ubOppsInRange < 2 &&
|
||||
!ARMED_VEHICLE(MercPtrs[ubOpponentID[ubLoop]]) &&
|
||||
!ARMED_VEHICLE(ubOpponentID[ubLoop]) &&
|
||||
(!InARoom(sOpponentTile[ubLoop], NULL) || pSoldier->bTeam != ENEMY_TEAM))
|
||||
{
|
||||
continue; // next gridno
|
||||
@@ -1691,7 +1692,7 @@ void CalcBestThrow(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow)
|
||||
{
|
||||
ubMinChanceToReallyHit = 30;
|
||||
}
|
||||
else if (EXPLOSIVE_GUN(usInHand) && !ARMED_VEHICLE(pSoldier) && (pBestThrow->ubOpponent == NOBODY || !ARMED_VEHICLE(MercPtrs[pBestThrow->ubOpponent])))
|
||||
else if (EXPLOSIVE_GUN(usInHand) && !ARMED_VEHICLE(pSoldier) && (pBestThrow->ubOpponent == NOBODY || !ARMED_VEHICLE(pBestThrow->ubOpponent)))
|
||||
{
|
||||
ubMinChanceToReallyHit = 80;
|
||||
}
|
||||
@@ -1916,7 +1917,7 @@ void CalcBestStab(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestStab, BOOLEAN fBladeAt
|
||||
// guy is conscious at all
|
||||
if (iPercentBetter < -PERCENT_TO_IGNORE_THREAT &&
|
||||
pBestStab->ubOpponent != NOBODY &&
|
||||
Menptr[pBestStab->ubOpponent].stats.bLife >= OKLIFE)
|
||||
pBestStab->ubOpponent->stats.bLife >= OKLIFE)
|
||||
{
|
||||
// then stick with the older guy as the better target
|
||||
continue;
|
||||
@@ -1937,12 +1938,12 @@ void CalcBestStab(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestStab, BOOLEAN fBladeAt
|
||||
// OOOF! That was a lot of work! But we've got a new best target!
|
||||
pBestStab->ubPossible = TRUE;
|
||||
pBestStab->ubOpponent = pOpponent->ubID;
|
||||
pBestStab->ubAimTime = ubBestAimTime;
|
||||
pBestStab->ubChanceToReallyHit = ubChanceToReallyHit;
|
||||
pBestStab->sTarget = pOpponent->sGridNo;
|
||||
pBestStab->bTargetLevel = pOpponent->pathing.bLevel;
|
||||
pBestStab->iAttackValue = iAttackValue;
|
||||
pBestStab->ubAPCost = ubMinAPCost + ubBestAimTime;
|
||||
pBestStab->ubAimTime = ubBestAimTime;
|
||||
pBestStab->ubChanceToReallyHit = ubChanceToReallyHit;
|
||||
pBestStab->sTarget = pOpponent->sGridNo;
|
||||
pBestStab->bTargetLevel = pOpponent->pathing.bLevel;
|
||||
pBestStab->iAttackValue = iAttackValue;
|
||||
pBestStab->ubAPCost = ubMinAPCost + ubBestAimTime;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3480,7 +3481,8 @@ BOOLEAN GetBestAoEGridNo(SOLDIERTYPE *pSoldier, INT32* pGridNo, INT16 aRadius, U
|
||||
{
|
||||
UINT16 ubLoop, ubLoop2;
|
||||
INT32 sGridNo, sFriendTile[MAXMERCS], sOpponentTile[MAXMERCS], sTabooTile[MAXMERCS];
|
||||
UINT16 ubFriendCnt = 0,ubOpponentCnt = 0, ubTabooCnt = 0, ubOpponentID[MAXMERCS];
|
||||
UINT16 ubFriendCnt = 0, ubOpponentCnt = 0, ubTabooCnt = 0;
|
||||
SoldierID ubOpponentID[MAXMERCS];
|
||||
INT32 bMaxLeft,bMaxRight,bMaxUp,bMaxDown, i, j;
|
||||
INT8 bPersOL, bPublOL;
|
||||
SOLDIERTYPE *pFriend;
|
||||
@@ -3670,7 +3672,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, UINT16 * puID, INT16 sRange)
|
||||
BOOLEAN GetFarthestOpponent(SOLDIERTYPE *pSoldier, SoldierID *puID, INT16 sRange)
|
||||
{
|
||||
INT32 sGridNo;
|
||||
UINT32 uiLoop;
|
||||
@@ -3885,13 +3887,13 @@ void CheckTossFriendSmoke(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow)
|
||||
INT8 bLevel = pSoldier->pathing.bLevel;
|
||||
|
||||
// check all friends
|
||||
SOLDIERTYPE * pFriend;
|
||||
INT32 sClosestFriendSpot = NOWHERE;
|
||||
INT8 bClosestFriendLevel = 0;
|
||||
UINT16 ubClosestFriendID = NOBODY;
|
||||
SOLDIERTYPE *pFriend;
|
||||
INT32 sClosestFriendSpot = NOWHERE;
|
||||
INT8 bClosestFriendLevel = 0;
|
||||
SoldierID ubClosestFriendID = NOBODY;
|
||||
|
||||
INT32 sFriendSpot;
|
||||
INT8 bFriendLevel;
|
||||
INT8 bFriendLevel;
|
||||
|
||||
INT32 sClosestOpponent;
|
||||
|
||||
@@ -3999,7 +4001,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, UINT16 ubOpponentID)
|
||||
void CheckTossAt(SOLDIERTYPE *pSoldier, ATTACKTYPE *pBestThrow, INT32 sTargetSpot, INT8 bTargetLevel, SoldierID ubOpponentID)
|
||||
{
|
||||
UINT16 usInHand, usGrenade;
|
||||
INT32 iTossRange;
|
||||
|
||||
@@ -1154,8 +1154,8 @@ INT8 CreatureDecideActionBlack( SOLDIERTYPE * pSoldier )
|
||||
// if the selected opponent is not a threat (unconscious & !serviced)
|
||||
// (usually, this means all the guys we see our unconscious, but, on
|
||||
// rare occasions, we may not be able to shoot a healthy guy, too)
|
||||
if ((Menptr[BestShot.ubOpponent].stats.bLife < OKLIFE) &&
|
||||
!Menptr[BestShot.ubOpponent].bService)
|
||||
if ((BestShot.ubOpponent->stats.bLife < OKLIFE) &&
|
||||
!BestShot.ubOpponent->bService)
|
||||
{
|
||||
// if our attitude is NOT aggressive
|
||||
if (pSoldier->aiData.bAttitude != AGGRESSIVE)
|
||||
|
||||
@@ -595,10 +595,10 @@ INT8 DecideActionBoxerEnteringRing(SOLDIERTYPE *pSoldier)
|
||||
|
||||
INT8 DecideActionNamedNPC( SOLDIERTYPE * pSoldier )
|
||||
{
|
||||
INT32 sDesiredMercLoc;
|
||||
UINT8 ubDesiredMercDir;
|
||||
UINT8 ubDesiredMerc;
|
||||
INT32 sDesiredMercDist;
|
||||
INT32 sDesiredMercLoc;
|
||||
UINT8 ubDesiredMercDir;
|
||||
SoldierID ubDesiredMerc;
|
||||
INT32 sDesiredMercDist;
|
||||
#ifdef DEBUGDECISIONS
|
||||
STR16 tempstr;
|
||||
#endif
|
||||
|
||||
@@ -119,7 +119,7 @@ void AICenterXY( INT32 sGridNo, FLOAT * pdX, FLOAT * pdY )
|
||||
*pdY = (FLOAT) (sYPos * CELL_Y_SIZE + CELL_Y_SIZE / 2);
|
||||
}
|
||||
|
||||
INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, UINT16 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft )
|
||||
INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, SoldierID 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.
|
||||
@@ -158,7 +158,7 @@ INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, UINT16 ubOppID, INT32 sOp
|
||||
return( bWorstCTGT );
|
||||
}
|
||||
|
||||
INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, UINT16 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft )
|
||||
INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, SoldierID 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.
|
||||
@@ -192,7 +192,7 @@ INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, UINT16 ubOppID, INT32 s
|
||||
}
|
||||
|
||||
|
||||
INT8 CalcBestCTGT( SOLDIERTYPE *pSoldier, UINT16 ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft )
|
||||
INT8 CalcBestCTGT( SOLDIERTYPE *pSoldier, SoldierID ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft )
|
||||
{
|
||||
// NOTE: CTGT stands for "ChanceToGetThrough..."
|
||||
|
||||
@@ -592,7 +592,7 @@ INT32 CalcCoverValue(SOLDIERTYPE *pMe, INT32 sMyGridNo, INT32 iMyThreat, INT32 i
|
||||
UINT8 NumberOfTeamMatesAdjacent( SOLDIERTYPE * pSoldier, INT32 sGridNo )
|
||||
{
|
||||
UINT8 ubLoop, ubCount;
|
||||
UINT16 ubWhoIsThere;
|
||||
SoldierID ubWhoIsThere;
|
||||
INT32 sTempGridNo;
|
||||
|
||||
ubCount = 0;
|
||||
@@ -603,7 +603,7 @@ UINT8 NumberOfTeamMatesAdjacent( SOLDIERTYPE * pSoldier, INT32 sGridNo )
|
||||
if ( sTempGridNo != sGridNo )
|
||||
{
|
||||
ubWhoIsThere = WhoIsThere2( sTempGridNo, pSoldier->pathing.bLevel );
|
||||
if ( ubWhoIsThere != NOBODY && ubWhoIsThere != pSoldier->ubID && MercPtrs[ ubWhoIsThere ]->bTeam == pSoldier->bTeam )
|
||||
if ( ubWhoIsThere != NOBODY && ubWhoIsThere != pSoldier->ubID && ubWhoIsThere->bTeam == pSoldier->bTeam )
|
||||
{
|
||||
ubCount++;
|
||||
}
|
||||
|
||||
@@ -200,7 +200,7 @@ INT32 MostImportantNoiseHeard( SOLDIERTYPE *pSoldier, INT32 *piRetValue, BOOLEAN
|
||||
if (*pbPublOL < NOT_HEARD_OR_SEEN)
|
||||
{
|
||||
// calculate how far this noise was, and its relative "importance"
|
||||
iDistAway = SpacesAway(pSoldier->sGridNo,gsPublicLastKnownOppLoc[pSoldier->bTeam][pTemp->ubID]);
|
||||
iDistAway = SpacesAway(pSoldier->sGridNo, gsPublicLastKnownOppLoc[pSoldier->bTeam][pTemp->ubID]);
|
||||
iNoiseValue = (*pbPublOL) * iDistAway; // always a negative number!
|
||||
|
||||
if (iNoiseValue > iBestValue)
|
||||
|
||||
@@ -42,7 +42,7 @@ BOOLEAN FindAutobandageClimbPoint( INT32 sDesiredGridNo, BOOLEAN fClimbUp )
|
||||
BUILDING * pBuilding;
|
||||
UINT8 ubNumClimbSpots;
|
||||
UINT8 ubLoop;
|
||||
UINT16 ubWhoIsThere;
|
||||
SoldierID ubWhoIsThere;
|
||||
|
||||
pBuilding = FindBuilding( sDesiredGridNo );
|
||||
if (!pBuilding)
|
||||
@@ -55,12 +55,12 @@ BOOLEAN FindAutobandageClimbPoint( INT32 sDesiredGridNo, BOOLEAN fClimbUp )
|
||||
for ( ubLoop = 0; ubLoop < ubNumClimbSpots; ubLoop++ )
|
||||
{
|
||||
ubWhoIsThere = WhoIsThere2( pBuilding->sUpClimbSpots[ ubLoop ], 1 );
|
||||
if ( ubWhoIsThere != NOBODY && !CanCharacterAutoBandageTeammate( MercPtrs[ ubWhoIsThere ] ) )
|
||||
if ( ubWhoIsThere != NOBODY && !CanCharacterAutoBandageTeammate( ubWhoIsThere ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
ubWhoIsThere = WhoIsThere2( pBuilding->sDownClimbSpots[ ubLoop ], 0 );
|
||||
if ( ubWhoIsThere != NOBODY && !CanCharacterAutoBandageTeammate( MercPtrs[ ubWhoIsThere ] ) )
|
||||
if ( ubWhoIsThere != NOBODY && !CanCharacterAutoBandageTeammate( ubWhoIsThere ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -122,7 +122,7 @@ BOOLEAN CanAutoBandage( BOOLEAN fDoFullCheck )
|
||||
UINT16 cnt;
|
||||
UINT16 ubMedics = 0, ubPatients = 0;
|
||||
SOLDIERTYPE * pSoldier;
|
||||
static UINT16 ubIDForFullCheck = NOBODY;
|
||||
static SoldierID ubIDForFullCheck = NOBODY;
|
||||
|
||||
// run though the list of chars on team
|
||||
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
@@ -311,7 +311,7 @@ INT8 FindBestPatient( SOLDIERTYPE * pSoldier, BOOLEAN * pfDoClimb )
|
||||
{
|
||||
// only switch to this patient if our distance is closer than
|
||||
// the other medic's
|
||||
pOtherMedic = MercPtrs[ pPatient->ubAutoBandagingMedic ];
|
||||
pOtherMedic = pPatient->ubAutoBandagingMedic;
|
||||
sOtherAdjacentGridNo = FindAdjacentGridEx( pOtherMedic, sPatientGridNo, &ubDirection, &sAdjustedGridNo, FALSE, FALSE );
|
||||
if (sOtherAdjacentGridNo != -1)
|
||||
{
|
||||
@@ -379,8 +379,8 @@ INT8 FindBestPatient( SOLDIERTYPE * pSoldier, BOOLEAN * pfDoClimb )
|
||||
if (pBestPatient->ubAutoBandagingMedic != NOBODY)
|
||||
{
|
||||
// cancel that medic
|
||||
DebugAI(AI_MSG_INFO, MercPtrs[pBestPatient->ubAutoBandagingMedic], String("CancelAIAction: medic: find patient"));
|
||||
CancelAIAction( MercPtrs[ pBestPatient->ubAutoBandagingMedic ], TRUE );
|
||||
DebugAI(AI_MSG_INFO, pBestPatient->ubAutoBandagingMedic, String("CancelAIAction: medic: find patient"));
|
||||
CancelAIAction( pBestPatient->ubAutoBandagingMedic, TRUE );
|
||||
}
|
||||
pBestPatient->ubAutoBandagingMedic = pSoldier->ubID;
|
||||
*pfDoClimb = FALSE;
|
||||
|
||||
+6
-5
@@ -2557,12 +2557,13 @@ void Converse( UINT8 ubNPC, UINT8 ubMerc, INT8 bApproach, UINT32 uiApproachData
|
||||
}
|
||||
}
|
||||
|
||||
INT32 NPCConsiderInitiatingConv( SOLDIERTYPE * pNPC, UINT8 * pubDesiredMerc )
|
||||
INT32 NPCConsiderInitiatingConv( SOLDIERTYPE * pNPC, SoldierID * pubDesiredMerc )
|
||||
{
|
||||
INT32 sMyGridNo, sDist, sDesiredMercDist = 100;
|
||||
UINT8 ubNPC;
|
||||
UINT16 ubMerc, ubDesiredMerc = NOBODY;
|
||||
UINT8 ubTalkDesire, ubHighestTalkDesire = 0;
|
||||
INT32 sMyGridNo, sDist, sDesiredMercDist = 100;
|
||||
UINT8 ubNPC;
|
||||
UINT16 ubMerc;
|
||||
SoldierID ubDesiredMerc = NOBODY;
|
||||
UINT8 ubTalkDesire, ubHighestTalkDesire = 0;
|
||||
SOLDIERTYPE * pMerc;
|
||||
SOLDIERTYPE * pDesiredMerc = NULL;
|
||||
NPCQuoteInfo * pNPCQuoteInfoArray;
|
||||
|
||||
+4
-4
@@ -228,7 +228,7 @@ void FreeUpNPCFromLoweringGun( SOLDIERTYPE *pSoldier );
|
||||
void FreeUpNPCFromRoofClimb(SOLDIERTYPE *pSoldier );
|
||||
|
||||
UINT8 GetClosestOpponent( SOLDIERTYPE *pSoldier );
|
||||
UINT16 GetMostThreateningOpponent( SOLDIERTYPE *pSoldier );
|
||||
SoldierID GetMostThreateningOpponent( SOLDIERTYPE *pSoldier );
|
||||
|
||||
void HandleSoldierAI( SOLDIERTYPE *pSoldier );
|
||||
void HandleInitialRedAlert( INT8 bTeam, UINT8 ubCommunicate);
|
||||
@@ -271,9 +271,9 @@ 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, 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 );
|
||||
INT8 CalcWorstCTGTForPosition( SOLDIERTYPE * pSoldier, SoldierID ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft );
|
||||
INT8 CalcBestCTGT( SOLDIERTYPE *pSoldier, SoldierID ubOppID, INT32 sOppGridNo, INT8 bLevel, INT32 iMyAPsLeft );
|
||||
INT8 CalcAverageCTGTForPosition( SOLDIERTYPE * pSoldier, SoldierID 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
|
||||
|
||||
@@ -4855,7 +4855,7 @@ void SetOffBombsByFrequency( SoldierID ubID, INT8 bFrequency )
|
||||
}
|
||||
}
|
||||
|
||||
void SetOffPanicBombs( UINT16 ubID, INT8 bPanicTrigger )
|
||||
void SetOffPanicBombs( SoldierID ubID, INT8 bPanicTrigger )
|
||||
{
|
||||
// need to turn off gridnos & flags in gTacticalStatus
|
||||
gTacticalStatus.sPanicTriggerGridNo[ bPanicTrigger ] = NOWHERE;
|
||||
|
||||
@@ -109,7 +109,7 @@ void DecayBombTimers( void );
|
||||
void SetOffBombsByFrequency( SoldierID ubID, INT8 bFrequency );
|
||||
BOOLEAN SetOffBombsInGridNo( SoldierID ubID, INT32 sGridNo, BOOLEAN fAllBombs, INT8 bLevel );
|
||||
void ActivateSwitchInGridNo( SoldierID ubID, INT32 sGridNo );
|
||||
void SetOffPanicBombs( UINT16 ubID, INT8 bPanicTrigger );
|
||||
void SetOffPanicBombs( SoldierID ubID, INT8 bPanicTrigger );
|
||||
|
||||
void UpdateExplosionFrame( INT32 iIndex, INT16 sCurrentFrame );
|
||||
void RemoveExplosionData( INT32 iIndex );
|
||||
|
||||
@@ -348,7 +348,7 @@ INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, SoldierID ubOwne
|
||||
// OJW - 20091027 - Synchronizing smoke effect start for multiplayer
|
||||
if (is_networked && is_client)
|
||||
{
|
||||
SOLDIERTYPE* pSoldier = MercPtrs[ubOwner];
|
||||
SOLDIERTYPE* pSoldier = ubOwner;
|
||||
if (pSoldier != NULL)
|
||||
{
|
||||
if (pSoldier->bTeam == 0 || (pSoldier->bTeam == 1 && is_server))
|
||||
|
||||
@@ -28,16 +28,16 @@ typedef struct TAG_SMOKE_EFFECT
|
||||
|
||||
UINT8 ubDuration; // the number of turns gas will remain effective
|
||||
UINT8 ubRadius; // the current radius of the cloud in map tiles
|
||||
UINT8 bFlags; // 0 - outdoors (fast spread), 1 - indoors (slow)
|
||||
UINT8 bFlags; // 0 - outdoors (fast spread), 1 - indoors (slow)
|
||||
UINT8 bAge; // the number of turns gas has been around
|
||||
BOOLEAN fAllocated;
|
||||
INT8 bType;
|
||||
UINT16 usItem;
|
||||
UINT16 ubOwner;
|
||||
UINT8 ubGeneration;
|
||||
UINT32 uiTimeOfLastUpdate;
|
||||
INT8 iMPTeamIndex;
|
||||
INT32 iMPSmokeEffectID;
|
||||
BOOLEAN fAllocated;
|
||||
INT8 bType;
|
||||
UINT16 usItem;
|
||||
SoldierID ubOwner;
|
||||
UINT8 ubGeneration;
|
||||
UINT32 uiTimeOfLastUpdate;
|
||||
INT8 iMPTeamIndex;
|
||||
INT32 iMPSmokeEffectID;
|
||||
} SMOKEEFFECT;
|
||||
|
||||
extern SMOKEEFFECT gSmokeEffectData[ NUM_SMOKE_EFFECT_SLOTS ];
|
||||
|
||||
@@ -768,7 +768,7 @@ void HandleOverheadUI(void)
|
||||
{
|
||||
INT32 sMousePos = 0;
|
||||
InputAtom InputEvent;
|
||||
UINT16 ubID;
|
||||
SoldierID ubID;
|
||||
|
||||
// CHECK FOR MOUSE OVER REGIONS...
|
||||
if(GetOverheadMouseGridNo(&sMousePos))
|
||||
|
||||
@@ -2734,7 +2734,7 @@ void HandleArmedObjectImpact( REAL_OBJECT *pObject )
|
||||
(*pObj)[0]->data.misc.bDelay = 1;
|
||||
|
||||
// for non-player grenades, add turn so player could disarm grenade or run away
|
||||
if ( pObject->ubOwner != NOBODY && MercPtrs[pObject->ubOwner]->bTeam != gbPlayerNum )
|
||||
if ( pObject->ubOwner != NOBODY && pObject->ubOwner->bTeam != gbPlayerNum )
|
||||
{
|
||||
(*pObj)[0]->data.misc.bDelay++;
|
||||
}
|
||||
@@ -2762,7 +2762,7 @@ void HandleArmedObjectImpact( REAL_OBJECT *pObject )
|
||||
|
||||
if ( pObject->ubOwner != NOBODY && !fGoodStatus )
|
||||
{
|
||||
MercPtrs[ pObject->ubOwner ]->DoMercBattleSound( (INT8)( BATTLE_SOUND_CURSE1 ) );
|
||||
pObject->ubOwner->DoMercBattleSound( (INT8)( BATTLE_SOUND_CURSE1 ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -207,7 +207,7 @@ void RemoveAllPits()
|
||||
void SearchForOtherMembersWithinPitRadiusAndMakeThemFall( INT32 sGridNo, INT16 sRadius )
|
||||
{
|
||||
INT32 x, y, sNewGridNo;
|
||||
UINT16 ubID;
|
||||
SoldierID ubID;
|
||||
SOLDIERTYPE *pSoldier;
|
||||
|
||||
|
||||
@@ -227,7 +227,7 @@ void SearchForOtherMembersWithinPitRadiusAndMakeThemFall( INT32 sGridNo, INT16 s
|
||||
{
|
||||
// OK, make guy fall...
|
||||
// Set data to look for exit grid....
|
||||
pSoldier = MercPtrs[ ubID ];
|
||||
pSoldier = ubID;
|
||||
|
||||
pSoldier->aiData.uiPendingActionData4 = sNewGridNo;
|
||||
|
||||
|
||||
@@ -1915,9 +1915,9 @@ INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, IN
|
||||
gpWorldLevelData[ tmpgridno ].uiFlags |= MAPELEMENT_STRUCTURE_DAMAGED;
|
||||
|
||||
// handle structure revenge - damage to vehicle - to be resolved after movement
|
||||
if ( ubOwner != NOBODY && MercPtrs[ubOwner] && !ARMED_VEHICLE( MercPtrs[ubOwner] ) )
|
||||
if ( ubOwner != NOBODY && !ARMED_VEHICLE( ubOwner ) )
|
||||
{
|
||||
MercPtrs[ubOwner]->SoldierTakeDelayedDamage(0, Random(max(0,(ubBaseArmour-10)/5)) + max(0,(ubBaseArmour-10)/5), 0, TAKE_DAMAGE_STRUCTURE_EXPLOSION, NOBODY, MercPtrs[ ubOwner ]->sGridNo, 0, TRUE);
|
||||
ubOwner->SoldierTakeDelayedDamage(0, Random(max(0,(ubBaseArmour-10)/5)) + max(0,(ubBaseArmour-10)/5), 0, TAKE_DAMAGE_STRUCTURE_EXPLOSION, NOBODY, ubOwner->sGridNo, 0, TRUE);
|
||||
}
|
||||
|
||||
// recompile = TRUE means that we destroyed something
|
||||
|
||||
Reference in New Issue
Block a user