mirror of
https://github.com/1dot13/source.git
synced 2026-08-12 14:10:23 +02:00
Convert to SoldierID
This commit is contained in:
+33
-33
@@ -30,49 +30,49 @@ typedef struct
|
||||
LEVELNODE* pNodes[BULLET_TRACER_MAX_LENGTH];
|
||||
//afp-end
|
||||
INT32 iBullet;
|
||||
UINT16 ubFirerID;
|
||||
UINT16 ubTargetID;
|
||||
INT8 bStartCubesAboveLevelZ;
|
||||
INT8 bEndCubesAboveLevelZ;
|
||||
INT32 sGridNo;
|
||||
SoldierID ubFirerID;
|
||||
SoldierID ubTargetID;
|
||||
INT8 bStartCubesAboveLevelZ;
|
||||
INT8 bEndCubesAboveLevelZ;
|
||||
INT32 sGridNo;
|
||||
INT16 sUnused;
|
||||
UINT16 usLastStructureHit;
|
||||
FIXEDPT qCurrX;
|
||||
FIXEDPT qCurrY;
|
||||
FIXEDPT qCurrZ;
|
||||
FIXEDPT qIncrX;
|
||||
FIXEDPT qIncrY;
|
||||
FIXEDPT qIncrZ;
|
||||
DOUBLE ddHorizAngle;
|
||||
UINT16 usLastStructureHit;
|
||||
FIXEDPT qCurrX;
|
||||
FIXEDPT qCurrY;
|
||||
FIXEDPT qCurrZ;
|
||||
FIXEDPT qIncrX;
|
||||
FIXEDPT qIncrY;
|
||||
FIXEDPT qIncrZ;
|
||||
DOUBLE ddHorizAngle;
|
||||
INT32 iCurrTileX;
|
||||
INT32 iCurrTileY;
|
||||
INT8 bLOSIndexX;
|
||||
INT8 bLOSIndexY;
|
||||
BOOLEAN fCheckForRoof;
|
||||
INT8 bLOSIndexX;
|
||||
INT8 bLOSIndexY;
|
||||
BOOLEAN fCheckForRoof;
|
||||
INT32 iCurrCubesZ;
|
||||
INT32 iLoop;
|
||||
BOOLEAN fAllocated;
|
||||
BOOLEAN fToDelete;
|
||||
BOOLEAN fLocated;
|
||||
BOOLEAN fReal;
|
||||
BOOLEAN fAimed;
|
||||
UINT32 uiLastUpdate;
|
||||
BOOLEAN fAllocated;
|
||||
BOOLEAN fToDelete;
|
||||
BOOLEAN fLocated;
|
||||
BOOLEAN fReal;
|
||||
BOOLEAN fAimed;
|
||||
UINT32 uiLastUpdate;
|
||||
UINT8 ubTilesPerUpdate;
|
||||
UINT16 usClockTicksPerUpdate;
|
||||
SOLDIERTYPE *pFirer; // Flugente: WARNING! We cannot assume this will be valid. Check wether ubFirerID is NOBODY first
|
||||
INT32 sOrigGridNo; // HEADROCK HAM 5.1: Original tile does not necessarily have to be the pFirer's tile
|
||||
INT32 sTargetGridNo;
|
||||
UINT16 usClockTicksPerUpdate;
|
||||
SOLDIERTYPE *pFirer; // Flugente: WARNING! We cannot assume this will be valid. Check wether ubFirerID is NOBODY first
|
||||
INT32 sOrigGridNo; // HEADROCK HAM 5.1: Original tile does not necessarily have to be the pFirer's tile
|
||||
INT32 sTargetGridNo;
|
||||
INT16 sHitBy;
|
||||
INT32 iImpact;
|
||||
INT32 iImpactReduction;
|
||||
INT32 iRange;
|
||||
INT32 iDistanceLimit;
|
||||
UINT16 usFlags;
|
||||
ANITILE *pAniTile;
|
||||
ANITILE *pShadowAniTile;
|
||||
UINT16 usFlags;
|
||||
ANITILE *pAniTile;
|
||||
ANITILE *pShadowAniTile;
|
||||
UINT16 ubItemStatus;
|
||||
UINT16 fromItem;
|
||||
INT32 flash;
|
||||
UINT16 fromItem;
|
||||
INT32 flash;
|
||||
// HEADROCK HAM B2.5: Experimental bullet tracer info. If the new tracer system is activated, this flag tells
|
||||
// the bullet animation functions to create a lightpath for this bullet. This means now all bullets in a tracer
|
||||
// magazine will cause a lightshow (that's the intended result).
|
||||
@@ -83,7 +83,7 @@ typedef struct
|
||||
|
||||
extern UINT32 guiNumBullets;
|
||||
|
||||
INT32 CreateBullet( UINT16 ubFirerID, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem );
|
||||
INT32 CreateBullet( SoldierID ubFirerID, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem );
|
||||
void RemoveBullet( INT32 iBullet );
|
||||
void StopBullet( INT32 iBullet );
|
||||
void UpdateBullets( );
|
||||
@@ -107,4 +107,4 @@ BOOLEAN SaveBulletStructureToSaveGameFile( HWFILE hFile );
|
||||
BOOLEAN LoadBulletStructureFromSavedGameFile( HWFILE hFile );
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -661,7 +661,7 @@ void HandleDialogue( )
|
||||
SOLDIERTYPE *pSoldier;
|
||||
INT16 sPlayerGridNo;
|
||||
SoldierID ubPlayerID;
|
||||
UINT8 ubQualifiedSoldierIDArray[ NUM_MERCS_WITH_NEW_QUOTES ];
|
||||
SoldierID ubQualifiedSoldierIDArray[ NUM_MERCS_WITH_NEW_QUOTES ];
|
||||
UINT8 ubNumQualifiedMercs=0;
|
||||
UINT8 ubCnt=0;
|
||||
|
||||
@@ -693,7 +693,7 @@ void HandleDialogue( )
|
||||
//loop through all the mercs
|
||||
for( ubCnt=0; ubCnt<ubNumQualifiedMercs; ++ubCnt )
|
||||
{
|
||||
pSoldier = MercPtrs[ ubQualifiedSoldierIDArray[ ubCnt ] ];
|
||||
pSoldier = ubQualifiedSoldierIDArray[ ubCnt ];
|
||||
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_JOINING_CAUSE_LEARNED_TO_LIKE_BUDDY_ON_TEAM );
|
||||
pSoldier->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_EXT_MORRIS;
|
||||
|
||||
@@ -5206,10 +5206,10 @@ void CarmenLeavesSectorCallback( void )
|
||||
|
||||
void PerformJerryMiloAction301()
|
||||
{
|
||||
UINT8 ubMercsPresent[NUM_MERCS_WITH_NEW_QUOTES];
|
||||
SoldierID ubMercsPresent[NUM_MERCS_WITH_NEW_QUOTES];
|
||||
UINT8 usNumMercsPresent;
|
||||
SOLDIERTYPE *pSoldier=NULL;
|
||||
UINT8 ubId;
|
||||
SoldierID ubId;
|
||||
|
||||
//Get the number and array of the new soldiers
|
||||
usNumMercsPresent = GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( ubMercsPresent, NULL );
|
||||
@@ -5219,7 +5219,7 @@ void PerformJerryMiloAction301()
|
||||
{
|
||||
ubId = ubMercsPresent[ cnt ];
|
||||
|
||||
TacticalCharacterDialogue( MercPtrs[ubId], QUOTE_DEATH_RATE_REFUSAL );
|
||||
TacticalCharacterDialogue( ubId, QUOTE_DEATH_RATE_REFUSAL );
|
||||
}
|
||||
|
||||
//Trigger Jerry Milo's script record 11 ( call action 302 )
|
||||
@@ -5231,8 +5231,8 @@ void PerformJerryMiloAction301()
|
||||
|
||||
void PerformJerryMiloAction302()
|
||||
{
|
||||
UINT8 ubMercsPresent[NUM_MERCS_WITH_NEW_QUOTES];
|
||||
UINT8 usNumMercsPresent;
|
||||
SoldierID ubMercsPresent[NUM_MERCS_WITH_NEW_QUOTES];
|
||||
UINT8 usNumMercsPresent;
|
||||
|
||||
//off jazz
|
||||
//Get the number and array of the new soldiers
|
||||
@@ -5384,11 +5384,11 @@ void HandleSpecificQuoteWhenLeavingNpcTalkMenu()
|
||||
|
||||
void HaveQualifiedMercSayQuoteAboutNpcWhenLeavingTalkScreen( UINT8 ubNpcProfileID, UINT32 uiQuoteNum )
|
||||
{
|
||||
UINT8 usNumMercsPresent;
|
||||
UINT8 SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES];
|
||||
UINT8 ValidSoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES] = {0};
|
||||
UINT8 ubNumValidSoldiers=0;
|
||||
UINT8 ubCnt;
|
||||
UINT8 usNumMercsPresent;
|
||||
SoldierID SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES];
|
||||
SoldierID ValidSoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES] = {0};
|
||||
UINT8 ubNumValidSoldiers=0;
|
||||
UINT8 ubCnt;
|
||||
SOLDIERTYPE *pSoldier=NULL;
|
||||
SOLDIERTYPE * pNPC;
|
||||
|
||||
|
||||
+1
-1
@@ -9304,7 +9304,7 @@ void CheckEquipmentForFragileItemDamage( SOLDIERTYPE *pSoldier, INT32 iDamage )
|
||||
}
|
||||
|
||||
|
||||
BOOLEAN DamageItemOnGround( OBJECTTYPE * pObject, INT32 sGridNo, INT8 bLevel, INT32 iDamage, UINT16 ubOwner )
|
||||
BOOLEAN DamageItemOnGround( OBJECTTYPE * pObject, INT32 sGridNo, INT8 bLevel, INT32 iDamage, SoldierID ubOwner )
|
||||
{
|
||||
#ifdef JA2BETAVERSION
|
||||
CHAR tmpMPDbgString[512];
|
||||
|
||||
+1
-1
@@ -296,7 +296,7 @@ UINT16 StandardGunListReplacement( UINT16 usGun );
|
||||
UINT16 FindReplacementMagazine( UINT8 ubCalibre, UINT16 ubMagSize, UINT8 ubAmmoType);
|
||||
UINT16 FindReplacementMagazineIfNecessary( UINT16 usOldGun, UINT16 usOldAmmo, UINT16 usNewGun );
|
||||
|
||||
BOOLEAN DamageItemOnGround( OBJECTTYPE * pObject, INT32 sGridNo, INT8 bLevel, INT32 iDamage, UINT16 ubOwner );
|
||||
BOOLEAN DamageItemOnGround( OBJECTTYPE * pObject, INT32 sGridNo, INT8 bLevel, INT32 iDamage, SoldierID ubOwner );
|
||||
|
||||
BOOLEAN CompatibleFaceItem( UINT16 usItem1, UINT16 usItem2 );
|
||||
|
||||
|
||||
+12
-12
@@ -452,7 +452,7 @@ BOOLEAN IsSoldierQualifiedInitialHireMerc( SOLDIERTYPE *pSoldier )
|
||||
}
|
||||
}
|
||||
|
||||
UINT8 GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( UINT8 *pSoldierIdArray, UINT8 *pProfileIdArray )
|
||||
UINT8 GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( SoldierID *pSoldierIdArray, UINT8 *pProfileIdArray )
|
||||
{
|
||||
SOLDIERTYPE *pSoldier=NULL;
|
||||
UINT8 usNumMercsPresent=0;
|
||||
@@ -523,10 +523,10 @@ INT16 RandomProfileIdFromNewMercsOnPlayerTeam()
|
||||
}
|
||||
}
|
||||
|
||||
INT16 RandomSoldierIdFromNewMercsOnPlayerTeam()
|
||||
SoldierID RandomSoldierIdFromNewMercsOnPlayerTeam()
|
||||
{
|
||||
UINT8 usNumMercsPresent;
|
||||
UINT8 SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES];
|
||||
UINT8 usNumMercsPresent;
|
||||
SoldierID SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES];
|
||||
|
||||
//Get the number and array of the new soldiers
|
||||
usNumMercsPresent = GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( SoldierIdArray, NULL );
|
||||
@@ -536,20 +536,20 @@ INT16 RandomSoldierIdFromNewMercsOnPlayerTeam()
|
||||
if( usNumMercsPresent > 0 )
|
||||
{
|
||||
//return a random merc from the array
|
||||
return( (INT16)( SoldierIdArray[ Random( usNumMercsPresent ) ] ));
|
||||
return( ( SoldierIdArray[ Random( usNumMercsPresent ) ] ));
|
||||
}
|
||||
else
|
||||
{
|
||||
return( -1 );
|
||||
return( NOBODY );
|
||||
}
|
||||
}
|
||||
|
||||
UINT8 RandomArrayOfQualifiedMercs( UINT8 *pRandomSoldierIdArray )
|
||||
{
|
||||
UINT8 usNumMercsPresent;
|
||||
UINT8 SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES];
|
||||
BOOLEAN UsedArray[NUM_MERCS_WITH_NEW_QUOTES];
|
||||
BOOLEAN fFound=FALSE;
|
||||
UINT8 usNumMercsPresent;
|
||||
SoldierID SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES];
|
||||
BOOLEAN UsedArray[NUM_MERCS_WITH_NEW_QUOTES];
|
||||
BOOLEAN fFound=FALSE;
|
||||
UINT8 ubRand;
|
||||
|
||||
memset( UsedArray, 0, NUM_MERCS_WITH_NEW_QUOTES );
|
||||
@@ -1060,8 +1060,8 @@ void HandlePlayingQuoteWhenHiringNpc( UINT8 ubProfile )
|
||||
|
||||
BOOLEAN SayQuoteFromAllNewHiredMercButDoGastonLast( UINT8 ubProfile, UINT32 uiQuoteNum )
|
||||
{
|
||||
UINT8 usNumMercsPresent;
|
||||
UINT8 SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES];
|
||||
UINT8 usNumMercsPresent;
|
||||
SoldierID SoldierIdArray[NUM_MERCS_WITH_NEW_QUOTES];
|
||||
SOLDIERTYPE *pSoldier=NULL;
|
||||
|
||||
//Get an array of the mercs on the team
|
||||
|
||||
@@ -37,8 +37,8 @@ typedef struct
|
||||
extern BOOLEAN gfFirstTimeInGameHeliCrash;
|
||||
|
||||
INT16 RandomProfileIdFromNewMercsOnPlayerTeam();
|
||||
INT16 RandomSoldierIdFromNewMercsOnPlayerTeam();
|
||||
UINT8 GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( UINT8 *pSoldierIdArray, UINT8 *pProfileIdArray );
|
||||
SoldierID RandomSoldierIdFromNewMercsOnPlayerTeam();
|
||||
UINT8 GetNumSoldierIdAndProfileIdOfTheNewMercsOnPlayerTeam( SoldierID *pSoldierIdArray, UINT8 *pProfileIdArray );
|
||||
BOOLEAN IsSoldierQualifiedMerc( SOLDIERTYPE *pSoldier );
|
||||
BOOLEAN IsSoldierQualifiedInitialHireMerc( SOLDIERTYPE *pSoldier );
|
||||
BOOLEAN IsSoldierQualifiedMercForSeeingPowerGenFan( SOLDIERTYPE *pSoldier );
|
||||
|
||||
+42
-43
@@ -2435,7 +2435,7 @@ INT32 SoldierTo3DLocationLineOfSightTest( SOLDIERTYPE * pStartSoldier, INT32 sGr
|
||||
{
|
||||
FLOAT dStartZPos, dEndZPos;
|
||||
INT16 sX, sY, sX2, sY2;
|
||||
UINT16 ubTargetID;
|
||||
SoldierID ubTargetID;
|
||||
BOOLEAN fOk;
|
||||
|
||||
CHECKF( pStartSoldier );
|
||||
@@ -2455,7 +2455,7 @@ INT32 SoldierTo3DLocationLineOfSightTest( SOLDIERTYPE * pStartSoldier, INT32 sGr
|
||||
if (ubTargetID != NOBODY)
|
||||
{
|
||||
// there's a merc there; do a soldier-to-soldier test
|
||||
return( SoldierToSoldierLineOfSightTest( pStartSoldier, MercPtrs[ubTargetID], bAware, iTileSightLimit, LOS_POS, adjustForSight) );
|
||||
return( SoldierToSoldierLineOfSightTest( pStartSoldier, ubTargetID, bAware, iTileSightLimit, LOS_POS, adjustForSight) );
|
||||
}
|
||||
// else... assume standing height
|
||||
dEndZPos = STANDING_LOS_POS + bLevel * HEIGHT_UNITS;
|
||||
@@ -4640,7 +4640,7 @@ void CalculateFiringIncrementsSimple( DOUBLE ddHorizAngle, DOUBLE ddVerticAngle,
|
||||
pBullet->qIncrZ = FloatToFixed( (FLOAT) ( sin( ddVerticAngle ) / sin( (PI/2) - ddVerticAngle ) * HEIGHTUNITS_PER_CELL ) );//dnl ch60 010913
|
||||
}
|
||||
|
||||
INT8 FireBullet( UINT16 ubFirer, BULLET * pBullet, BOOLEAN fFake )
|
||||
INT8 FireBullet( SoldierID ubFirer, BULLET * pBullet, BOOLEAN fFake )
|
||||
{
|
||||
//DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("FireBullet"));
|
||||
|
||||
@@ -4654,7 +4654,7 @@ INT8 FireBullet( UINT16 ubFirer, BULLET * pBullet, BOOLEAN fFake )
|
||||
pBullet->sGridNo = MAPROWCOLTOPOS( pBullet->iCurrTileY, pBullet->iCurrTileX );
|
||||
|
||||
if ( ubFirer != NOBODY )
|
||||
pBullet->pFirer = MercPtrs[ ubFirer ];
|
||||
pBullet->pFirer = ubFirer;
|
||||
else
|
||||
pBullet->pFirer = NULL;
|
||||
|
||||
@@ -5775,7 +5775,7 @@ INT8 FireBulletGivenTarget( SOLDIERTYPE * pFirer, FLOAT dEndX, FLOAT dEndY, FLOA
|
||||
// Note that this function does not make provisions for Fake Firing. There is no need for it, and it would needlessly
|
||||
// complicate things anyway.
|
||||
// Also note we receive start coordinates from the bomb itself, because there's nowhere else to get them.
|
||||
INT8 FireFragmentGivenTarget( UINT16 ubOwner, FLOAT dStartX, FLOAT dStartY, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usExplosiveItem )
|
||||
INT8 FireFragmentGivenTarget( SoldierID ubOwner, FLOAT dStartX, FLOAT dStartY, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usExplosiveItem )
|
||||
{
|
||||
// Artificial...
|
||||
dStartZ++;
|
||||
@@ -6986,9 +6986,8 @@ INT8 ChanceToGetThrough(SOLDIERTYPE * pFirer, FLOAT dEndX, FLOAT dEndY, FLOAT dE
|
||||
|
||||
void MoveBullet( INT32 iBullet )
|
||||
{
|
||||
BULLET *pBullet;
|
||||
|
||||
FIXEDPT qLandHeight;
|
||||
BULLET *pBullet;
|
||||
FIXEDPT qLandHeight;
|
||||
INT32 iCurrAboveLevelZ;
|
||||
INT32 iCurrCubesAboveLevelZ;
|
||||
INT16 sDesiredLevel;
|
||||
@@ -6997,48 +6996,48 @@ void MoveBullet( INT32 iBullet )
|
||||
INT32 iOldTileY;
|
||||
INT32 iOldCubesZ;
|
||||
|
||||
MAP_ELEMENT * pMapElement;
|
||||
STRUCTURE * pStructure;
|
||||
STRUCTURE * pRoofStructure = NULL;
|
||||
MAP_ELEMENT *pMapElement;
|
||||
STRUCTURE *pStructure;
|
||||
STRUCTURE *pRoofStructure = NULL;
|
||||
|
||||
FIXEDPT qLastZ;
|
||||
FIXEDPT qLastZ;
|
||||
|
||||
SOLDIERTYPE * pTarget;
|
||||
UINT16 ubTargetID;
|
||||
BOOLEAN fIntended;
|
||||
BOOLEAN fStopped;
|
||||
INT8 bOldLOSIndexX;
|
||||
INT8 bOldLOSIndexY;
|
||||
SOLDIERTYPE *pTarget;
|
||||
SoldierID ubTargetID;
|
||||
BOOLEAN fIntended;
|
||||
BOOLEAN fStopped;
|
||||
INT8 bOldLOSIndexX;
|
||||
INT8 bOldLOSIndexY;
|
||||
|
||||
UINT32 uiTileInc = 0;
|
||||
UINT32 uiTime;
|
||||
UINT32 uiTileInc = 0;
|
||||
UINT32 uiTime;
|
||||
|
||||
INT8 bDir;
|
||||
INT32 iGridNo, iAdjGridNo;
|
||||
INT8 bDir;
|
||||
INT32 iGridNo, iAdjGridNo;
|
||||
|
||||
INT32 iRemainingImpact;
|
||||
INT32 iRemainingImpact;
|
||||
|
||||
FIXEDPT qDistToTravelX;
|
||||
FIXEDPT qDistToTravelY;
|
||||
INT32 iStepsToTravelX;
|
||||
INT32 iStepsToTravelY;
|
||||
INT32 iStepsToTravel;
|
||||
FIXEDPT qDistToTravelX;
|
||||
FIXEDPT qDistToTravelY;
|
||||
INT32 iStepsToTravelX;
|
||||
INT32 iStepsToTravelY;
|
||||
INT32 iStepsToTravel;
|
||||
|
||||
INT32 iNumLocalStructures;
|
||||
INT32 iStructureLoop;
|
||||
UINT32 uiChanceOfHit;
|
||||
INT32 iNumLocalStructures;
|
||||
INT32 iStructureLoop;
|
||||
UINT32 uiChanceOfHit;
|
||||
|
||||
BOOLEAN fResolveHit;
|
||||
BOOLEAN fResolveHit;
|
||||
|
||||
INT32 i;
|
||||
BOOLEAN fGoingOver = FALSE;
|
||||
BOOLEAN fHitStructure;
|
||||
INT32 i;
|
||||
BOOLEAN fGoingOver = FALSE;
|
||||
BOOLEAN fHitStructure;
|
||||
|
||||
FIXEDPT qWallHeight;
|
||||
FIXEDPT qWindowBottomHeight;
|
||||
FIXEDPT qWindowTopHeight;
|
||||
FIXEDPT qWallHeight;
|
||||
FIXEDPT qWindowBottomHeight;
|
||||
FIXEDPT qWindowTopHeight;
|
||||
|
||||
UINT16 lastriotshieldholder = NOBODY; // added by Flugente
|
||||
SoldierID lastriotshieldholder = NOBODY; // added by Flugente
|
||||
|
||||
pBullet = GetBulletPtr( iBullet );
|
||||
|
||||
@@ -7358,7 +7357,7 @@ void MoveBullet( INT32 iBullet )
|
||||
ubTargetID = WhoIsThere2( iAdjGridNo, (INT8) sDesiredLevel );
|
||||
if (ubTargetID != NOBODY)
|
||||
{
|
||||
pTarget = MercPtrs[ ubTargetID ];
|
||||
pTarget = ubTargetID;
|
||||
if ( IS_MERC_BODY_TYPE( pTarget ) && (pBullet->ubFirerID == NOBODY || pBullet->pFirer->bSide != pTarget->bSide) )
|
||||
{
|
||||
// buckshot has only a 1 in 2 chance of applying a suppression point
|
||||
@@ -9911,7 +9910,7 @@ UINT32 CalcCounterForceAccuracy(SOLDIERTYPE *pShooter, OBJECTTYPE *pWeapon, UINT
|
||||
// If we can't see the target, but buddies can see it, CF-Accuracy drops by 50%
|
||||
// If we can't see the target and neither can buddies, CF-Accuracy drops by 75%
|
||||
|
||||
UINT16 ubTargetID = WhoIsThere2( pShooter->sTargetGridNo, pShooter->bTargetLevel ); // Target ubID
|
||||
SoldierID ubTargetID = WhoIsThere2( pShooter->sTargetGridNo, pShooter->bTargetLevel ); // Target ubID
|
||||
INT16 sDistVis = pShooter->GetMaxDistanceVisible(pShooter->sTargetGridNo, pShooter->bTargetLevel, CALC_FROM_ALL_DIRS ) * CELL_X_SIZE;
|
||||
gbForceWeaponNotReady = true;
|
||||
INT16 sDistVisNoScope = pShooter->GetMaxDistanceVisible(pShooter->sTargetGridNo, pShooter->bTargetLevel, CALC_FROM_ALL_DIRS ) * CELL_X_SIZE;
|
||||
@@ -9920,12 +9919,12 @@ UINT32 CalcCounterForceAccuracy(SOLDIERTYPE *pShooter, OBJECTTYPE *pWeapon, UINT
|
||||
|
||||
INT32 iSightRange = 0;
|
||||
if (ubTargetID != NOBODY)
|
||||
iSightRange = SoldierToSoldierLineOfSightTest( pShooter, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pShooter->bAimShotLocation, false );
|
||||
iSightRange = SoldierToSoldierLineOfSightTest( pShooter, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pShooter->bAimShotLocation, false );
|
||||
if (iSightRange == 0) { // didn't do a bodypart-based test or can't see specific body part aimed at
|
||||
iSightRange = SoldierTo3DLocationLineOfSightTest( pShooter, pShooter->sTargetGridNo, pShooter->bTargetLevel, pShooter->bTargetCubeLevel, TRUE, NO_DISTANCE_LIMIT, false );
|
||||
}
|
||||
if (iSightRange == 0) { // Can't see the target but we still need to know what the sight range would be if we could so we can deal with cover penalties
|
||||
iSightRange = SoldierToSoldierLineOfSightTest( pShooter, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pShooter->bAimShotLocation, false, true );
|
||||
iSightRange = SoldierToSoldierLineOfSightTest( pShooter, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pShooter->bAimShotLocation, false, true );
|
||||
}
|
||||
|
||||
// Modify iSightRange for scope use
|
||||
|
||||
+1
-1
@@ -69,7 +69,7 @@ INT8 FireBulletGivenTarget( SOLDIERTYPE * pFirer, FLOAT dEndX, FLOAT dEndY, FLOA
|
||||
// HEADROCK HAM 4: Changed the name of one argument to avoid confusion with the new CTH system.
|
||||
INT8 FireBulletGivenTargetNCTH( SOLDIERTYPE * pFirer, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usHandItem, INT16 sApertureRatio, BOOLEAN fBuckshot, BOOLEAN fFake );
|
||||
// HEADROCK HAM 5: Function for fragments ejected from an explosion.
|
||||
INT8 FireFragmentGivenTarget( UINT16 ubOwner, FLOAT dStartX, FLOAT dStartY, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usExplosiveItem );
|
||||
INT8 FireFragmentGivenTarget( SoldierID ubOwner, FLOAT dStartX, FLOAT dStartY, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, UINT16 usExplosiveItem );
|
||||
|
||||
// Flugente: fire a shot from a gun that has no user (used for traps with attached guns)
|
||||
INT8 FireBulletGivenTargetTrapOnly( SOLDIERTYPE* pThrower, OBJECTTYPE* pObj, INT32 gridno, FLOAT dStartZ, FLOAT dEndX, FLOAT dEndY, FLOAT dEndZ, INT16 sHitBy);
|
||||
|
||||
@@ -25194,13 +25194,13 @@ BOOLEAN MajorTrait( UINT8 uiSkillTraitNumber )
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOLEAN GetRadioOperatorSignal( UINT8 usOwner, INT32* psTargetGridNo )
|
||||
BOOLEAN GetRadioOperatorSignal( SoldierID usOwner, INT32* psTargetGridNo )
|
||||
{
|
||||
// get the 'real owner'
|
||||
if ( usOwner > 1 )
|
||||
{
|
||||
// a merc planted this - if he's a radio operator, use his gridno
|
||||
SOLDIERTYPE* pSoldier = MercPtrs[usOwner - 2];
|
||||
SOLDIERTYPE* pSoldier = (usOwner - 2);
|
||||
|
||||
if ( pSoldier && pSoldier->CanUseRadio( FALSE ) && pSoldier->bActive && pSoldier->bInSector && (pSoldier->sSectorX == gWorldSectorX) && (pSoldier->sSectorY == gWorldSectorY) && (pSoldier->bSectorZ == gbWorldSectorZ) )
|
||||
{
|
||||
|
||||
@@ -2227,7 +2227,7 @@ BOOLEAN DecideAltAnimForBigMerc( SOLDIERTYPE * pSoldier );
|
||||
// added by Flugente
|
||||
BOOLEAN TwoStagedTrait( UINT8 uiSkillTraitNumber ); // determine if this (new) trait has two stages
|
||||
BOOLEAN MajorTrait( UINT8 uiSkillTraitNumber ); // determine if this is a major trait
|
||||
BOOLEAN GetRadioOperatorSignal(UINT8 usOwner, INT32* psTargetGridNo); // retrieve the gridno of a radio operator who (or whose team) ordered an artillery strike
|
||||
BOOLEAN GetRadioOperatorSignal( SoldierID usOwner, INT32* psTargetGridNo); // retrieve the gridno of a radio operator who (or whose team) ordered an artillery strike
|
||||
BOOLEAN IsValidArtilleryOrderSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, UINT8 bTeam ); // can an artillery strike be ordered FROM this sector
|
||||
BOOLEAN SectorJammed();
|
||||
BOOLEAN PlayerTeamIsScanning();
|
||||
|
||||
@@ -114,10 +114,10 @@ typedef struct
|
||||
{
|
||||
UINT16 ubOutOfTurnPersons;
|
||||
|
||||
INT16 InterruptOnlyGuynum;
|
||||
SoldierID InterruptOnlyGuynum;
|
||||
INT16 sWhoThrewRock;
|
||||
BOOLEAN InterruptsAllowed;
|
||||
BOOLEAN fHiddenInterrupt;
|
||||
BOOLEAN InterruptsAllowed;
|
||||
BOOLEAN fHiddenInterrupt;
|
||||
UINT8 ubLastInterruptedGuy;
|
||||
|
||||
UINT8 ubFiller[16];
|
||||
|
||||
+31
-31
@@ -2444,7 +2444,7 @@ BOOLEAN UseGunNCTH( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo )
|
||||
//CHAR8 zBurstString[512];
|
||||
UINT8 ubDirection;
|
||||
INT32 sNewGridNo;
|
||||
UINT16 ubMerc;
|
||||
SoldierID ubMerc;
|
||||
BOOLEAN fGonnaHit = FALSE;
|
||||
FLOAT dExpGain = 0;
|
||||
UINT32 uiDepreciateTest;
|
||||
@@ -2967,14 +2967,14 @@ BOOLEAN UseGunNCTH( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo )
|
||||
|
||||
if ( ubMerc != NOBODY )
|
||||
{
|
||||
if ( gAnimControl[ MercPtrs[ ubMerc ]->usAnimState ].ubHeight != ANIM_PRONE )
|
||||
if ( gAnimControl[ ubMerc->usAnimState ].ubHeight != ANIM_PRONE )
|
||||
{
|
||||
// Increment attack counter...
|
||||
// gTacticalStatus.ubAttackBusyCount++;
|
||||
DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("Incrementing Attack: Exaust from LAW", gTacticalStatus.ubAttackBusyCount ) );
|
||||
DebugAttackBusy( "Incrementing Attack: Exaust from LAW\n" );
|
||||
|
||||
MercPtrs[ ubMerc ]->EVENT_SoldierGotHit( MINI_GRENADE, 10, 200, pSoldier->ubDirection, 0, pSoldier->ubID, 0, ANIM_CROUCH, 0, sNewGridNo );
|
||||
ubMerc->EVENT_SoldierGotHit( MINI_GRENADE, 10, 200, pSoldier->ubDirection, 0, pSoldier->ubID, 0, ANIM_CROUCH, 0, sNewGridNo );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3232,7 +3232,7 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo )
|
||||
// CHAR8 zBurstString[512];
|
||||
UINT8 ubDirection;
|
||||
INT32 sNewGridNo;
|
||||
UINT16 ubMerc;
|
||||
SoldierID ubMerc;
|
||||
BOOLEAN fGonnaHit = FALSE;
|
||||
UINT16 usExpGain = 0;
|
||||
UINT32 uiDepreciateTest;
|
||||
@@ -3785,14 +3785,14 @@ BOOLEAN UseGun( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo )
|
||||
|
||||
if ( ubMerc != NOBODY )
|
||||
{
|
||||
if ( gAnimControl[ MercPtrs[ ubMerc ]->usAnimState ].ubHeight != ANIM_PRONE )
|
||||
if ( gAnimControl[ ubMerc->usAnimState ].ubHeight != ANIM_PRONE )
|
||||
{
|
||||
// Increment attack counter...
|
||||
// gTacticalStatus.ubAttackBusyCount++;
|
||||
DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("Incrementing Attack: Exaust from LAW", gTacticalStatus.ubAttackBusyCount ) );
|
||||
DebugAttackBusy( "Incrementing Attack: Exaust from LAW\n" );
|
||||
|
||||
MercPtrs[ ubMerc ]->EVENT_SoldierGotHit( MINI_GRENADE, 10, 200, pSoldier->ubDirection, 0, pSoldier->ubID, 0, ANIM_CROUCH, 0, sNewGridNo );
|
||||
ubMerc->EVENT_SoldierGotHit( MINI_GRENADE, 10, 200, pSoldier->ubDirection, 0, pSoldier->ubID, 0, ANIM_CROUCH, 0, sNewGridNo );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4097,15 +4097,15 @@ BOOLEAN UseBlade( SOLDIERTYPE *pSoldier , INT32 sTargetGridNo )
|
||||
PossiblyStartEnemyTaunt( pTargetSoldier, TAUNT_GOT_MISSED_BLADE, pSoldier->ubID );
|
||||
|
||||
// if it was another team shooting at someone under our control
|
||||
if ( (pSoldier->bTeam != Menptr[ pTargetSoldier->ubID ].bTeam ) )
|
||||
if ( (pSoldier->bTeam != pTargetSoldier->ubID->bTeam ) )
|
||||
{
|
||||
if (pTargetSoldier->bTeam == gbPlayerNum)
|
||||
{
|
||||
// AGILITY GAIN (10): Target avoids a knife attack
|
||||
// Snap: stat gains should match stat requirements
|
||||
StatChange( MercPtrs[ pTargetSoldier->ubID ], DEXTAMT, 15, FALSE);
|
||||
StatChange( MercPtrs[ pTargetSoldier->ubID ], AGILAMT, 5, FALSE);
|
||||
StatChange( MercPtrs[ pTargetSoldier->ubID ], STRAMT, 5, FALSE);
|
||||
StatChange( pTargetSoldier->ubID, DEXTAMT, 15, FALSE);
|
||||
StatChange( pTargetSoldier->ubID, AGILAMT, 5, FALSE);
|
||||
StatChange( pTargetSoldier->ubID, STRAMT, 5, FALSE);
|
||||
}
|
||||
}
|
||||
// 0verhaul: Another case that is handled by the animation transition system.
|
||||
@@ -4940,10 +4940,10 @@ BOOLEAN UseHandToHand( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo, BOOLEAN fStea
|
||||
|
||||
BOOLEAN UseThrown( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo )
|
||||
{
|
||||
UINT32 uiHitChance;
|
||||
UINT32 uiHitChance;
|
||||
INT8 bLoop;
|
||||
UINT16 ubTargetID;
|
||||
SOLDIERTYPE * pTargetSoldier;
|
||||
SoldierID ubTargetID;
|
||||
SOLDIERTYPE *pTargetSoldier;
|
||||
//INT16 sAPCost = 0;//dnl ch72 180913
|
||||
|
||||
uiHitChance = CalcThrownChanceToHit( pSoldier, sTargetGridNo, pSoldier->aiData.bAimTime, AIM_SHOT_TORSO );
|
||||
@@ -4965,7 +4965,7 @@ BOOLEAN UseThrown( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo )
|
||||
}
|
||||
else
|
||||
{
|
||||
pTargetSoldier = MercPtrs[ ubTargetID ];
|
||||
pTargetSoldier = ubTargetID;
|
||||
}
|
||||
|
||||
if ( pTargetSoldier && pTargetSoldier->bTeam == pSoldier->bTeam )
|
||||
@@ -4987,7 +4987,7 @@ BOOLEAN UseThrown( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo )
|
||||
pTargetSoldier = NULL;
|
||||
if ( ubTargetID != NOBODY )
|
||||
{
|
||||
pTargetSoldier = MercPtrs[ ubTargetID ];
|
||||
pTargetSoldier = ubTargetID;
|
||||
if ( pTargetSoldier->bTeam != pSoldier->bTeam )
|
||||
{
|
||||
usNumTargets++;
|
||||
@@ -5315,7 +5315,7 @@ BOOLEAN UseLauncher( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo )
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
BOOLEAN DoSpecialEffectAmmoMiss( UINT16 ubAttackerID, UINT16 usWeaponIndex, INT32 sGridNo, INT16 sXPos, INT16 sYPos, INT16 sZPos, BOOLEAN fSoundOnly, BOOLEAN fFreeupAttacker, INT32 iBullet )
|
||||
BOOLEAN DoSpecialEffectAmmoMiss( SoldierID ubAttackerID, UINT16 usWeaponIndex, INT32 sGridNo, INT16 sXPos, INT16 sYPos, INT16 sZPos, BOOLEAN fSoundOnly, BOOLEAN fFreeupAttacker, INT32 iBullet )
|
||||
{
|
||||
ANITILE_PARAMS AniParams;
|
||||
UINT8 ubAmmoType = 0;
|
||||
@@ -5324,7 +5324,7 @@ BOOLEAN DoSpecialEffectAmmoMiss( UINT16 ubAttackerID, UINT16 usWeaponIndex, INT3
|
||||
// Flugente: check for underbarrel weapons and use that object if necessary
|
||||
if ( ubAttackerID != NOBODY )
|
||||
{
|
||||
OBJECTTYPE* pObj = MercPtrs[ ubAttackerID ]->GetUsedWeapon( &MercPtrs[ ubAttackerID ]->inv[ MercPtrs[ ubAttackerID ]->ubAttackingHand ] );
|
||||
OBJECTTYPE* pObj = ubAttackerID->GetUsedWeapon( &ubAttackerID->inv[ ubAttackerID->ubAttackingHand ] );
|
||||
|
||||
ubAmmoType = (*pObj)[0]->data.gun.ubGunAmmoType;
|
||||
usItem = (*pObj).usItem;
|
||||
@@ -6036,7 +6036,7 @@ void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStatus, Sol
|
||||
|
||||
// Set attacker ID
|
||||
pNode->usMissAnimationPlayed = usMissTileType;
|
||||
pNode->ubAttackerMissed = ubAttackerID;
|
||||
pNode->ubAttackerMissed = ubAttackerID;
|
||||
// Adjust for absolute positioning
|
||||
pNode->pLevelNode->uiFlags |= LEVELNODE_USEABSOLUTEPOS;
|
||||
pNode->pLevelNode->sRelativeX = sXPos;
|
||||
@@ -6278,7 +6278,7 @@ UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi
|
||||
UINT16 usInHand;
|
||||
OBJECTTYPE * pInHand;
|
||||
INT16 sDistVis, sDistVisNoScope;
|
||||
UINT16 ubTargetID;
|
||||
SoldierID ubTargetID;
|
||||
bool fCantSeeTarget = false;
|
||||
FLOAT scopeRangeMod = 0.0f;
|
||||
|
||||
@@ -6327,7 +6327,7 @@ UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi
|
||||
|
||||
if (ubTargetID != NOBODY && (pSoldier->aiData.bOppList[ubTargetID] == SEEN_CURRENTLY || gbPublicOpplist[pSoldier->bTeam][ubTargetID] == SEEN_CURRENTLY))
|
||||
{
|
||||
iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false );
|
||||
iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false );
|
||||
}
|
||||
if (iSightRange == 0)
|
||||
{
|
||||
@@ -6338,7 +6338,7 @@ UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTi
|
||||
{
|
||||
// Can't see the target but we still need to know what the sight range would be if we could so we can deal with cover penalties
|
||||
if (ubTargetID != NOBODY)
|
||||
iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false, true );
|
||||
iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false, true );
|
||||
fCantSeeTarget = true;
|
||||
}
|
||||
|
||||
@@ -6639,8 +6639,8 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime,
|
||||
INT16 bonusProgression[8] = {500,500,600,600,750,750,750,1000}; //Aiming progression
|
||||
UINT16 usInHand, usShockPenalty, MIN_RANGE_FOR_FULL_COWER, MAX_TARGET_COWERING_PENALTY;
|
||||
UINT16 iBulletsLeft, iTracersFired = 0, iBulletsPerTracer, iBulletsSinceLastTracer=0, iRoundsFiredPreviously;
|
||||
INT8 bBandaged, maxClickBonus = 10, AIM_PENALTY_PER_TARGET_SHOCK;
|
||||
UINT16 ubTargetID;
|
||||
INT8 bBandaged, maxClickBonus = 10, AIM_PENALTY_PER_TARGET_SHOCK;
|
||||
SoldierID ubTargetID;
|
||||
UINT8 bLightLevel, ubCoweringDivisor, ubAutoPenaltySinceLastTracer = 0;
|
||||
FLOAT maxBonus, aimTimeBonus, scopeRangeMod = 0.0f, iAimBonus;
|
||||
bool fCantSeeTarget = false, fCoverObscured = false;
|
||||
@@ -6685,7 +6685,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime,
|
||||
iScopeVisionRangeBonus = GetTotalVisionRangeBonus(pSoldier, bLightLevel); // not an actual range value, simply a modifier for range calculations
|
||||
|
||||
if (ubTargetID != NOBODY && ( pSoldier->aiData.bOppList[ubTargetID] == SEEN_CURRENTLY || gbPublicOpplist[pSoldier->bTeam][ubTargetID] == SEEN_CURRENTLY ) )
|
||||
iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false );
|
||||
iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false );
|
||||
|
||||
if (iSightRange == 0)
|
||||
{
|
||||
@@ -6698,7 +6698,7 @@ UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime,
|
||||
{
|
||||
// Can't see the target but we still need to know what the sight range would be if we could so we can deal with cover penalties
|
||||
if (ubTargetID != NOBODY)
|
||||
iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, MercPtrs[ubTargetID], TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false, true );
|
||||
iSightRange = SoldierToSoldierLineOfSightTest( pSoldier, ubTargetID, TRUE, NO_DISTANCE_LIMIT, pSoldier->bAimShotLocation, false, true );
|
||||
fCantSeeTarget = true;
|
||||
fCoverObscured = false;
|
||||
}
|
||||
@@ -9061,7 +9061,7 @@ INT32 HTHImpact( SOLDIERTYPE * pSoldier, SOLDIERTYPE * pTarget, INT32 iHitBy, BO
|
||||
return( iImpact );
|
||||
}
|
||||
|
||||
void ShotMiss( UINT16 ubAttackerID, INT32 iBullet )
|
||||
void ShotMiss( SoldierID ubAttackerID, INT32 iBullet )
|
||||
{
|
||||
BOOLEAN fDoMissForGun = FALSE;
|
||||
SOLDIERTYPE* pAttacker = NULL;
|
||||
@@ -9070,7 +9070,7 @@ void ShotMiss( UINT16 ubAttackerID, INT32 iBullet )
|
||||
if ( ubAttackerID == NOBODY )
|
||||
return;
|
||||
|
||||
pAttacker = MercPtrs[ ubAttackerID ];
|
||||
pAttacker = ubAttackerID;
|
||||
|
||||
if ( pAttacker->ubOppNum != NOBODY )
|
||||
{
|
||||
@@ -9086,7 +9086,7 @@ void ShotMiss( UINT16 ubAttackerID, INT32 iBullet )
|
||||
}
|
||||
}
|
||||
|
||||
switch( Weapon[ MercPtrs[ ubAttackerID ]->usAttackingWeapon ].ubWeaponClass )
|
||||
switch( Weapon[ ubAttackerID->usAttackingWeapon ].ubWeaponClass )
|
||||
{
|
||||
case HANDGUNCLASS:
|
||||
case RIFLECLASS:
|
||||
@@ -9095,11 +9095,11 @@ void ShotMiss( UINT16 ubAttackerID, INT32 iBullet )
|
||||
case MGCLASS:
|
||||
|
||||
// Guy has missed, play random sound
|
||||
if ( MercPtrs[ ubAttackerID ]->bTeam == gbPlayerNum )
|
||||
if ( ubAttackerID->bTeam == gbPlayerNum )
|
||||
{
|
||||
if ( Random(40) == 0 )
|
||||
{
|
||||
MercPtrs[ ubAttackerID ]->DoMercBattleSound( BATTLE_SOUND_CURSE1 );
|
||||
ubAttackerID->DoMercBattleSound( BATTLE_SOUND_CURSE1 );
|
||||
}
|
||||
}
|
||||
fDoMissForGun = TRUE;
|
||||
@@ -9142,7 +9142,7 @@ void ShotMiss( UINT16 ubAttackerID, INT32 iBullet )
|
||||
// PLAY SOUND AND FLING DEBRIS
|
||||
// RANDOMIZE SOUND SYSTEM
|
||||
|
||||
if ( !DoSpecialEffectAmmoMiss( ubAttackerID, MercPtrs[ ubAttackerID ]->usAttackingWeapon, NOWHERE, 0, 0, 0, TRUE, TRUE, 0 ) )
|
||||
if ( !DoSpecialEffectAmmoMiss( ubAttackerID, ubAttackerID->usAttackingWeapon, NOWHERE, 0, 0, 0, TRUE, TRUE, 0 ) )
|
||||
{
|
||||
PlayJA2Sample( MISS_1 + Random(8), RATE_11025, HIGHVOLUME, 1, MIDDLEPAN );
|
||||
}
|
||||
|
||||
+1
-1
@@ -459,7 +459,7 @@ extern void StructureHit( INT32 iBullet, UINT16 usWeaponIndex, INT16 bWeaponStat
|
||||
extern void WindowHit( INT32 sGridNo, UINT16 usStructureID, BOOLEAN fBlowWindowSouth, BOOLEAN fLargeForce );
|
||||
// HEADROCK HAM 5.1: Moved to Bullets.h
|
||||
extern BOOLEAN InRange( SOLDIERTYPE *pSoldier, INT32 sGridNo );
|
||||
extern void ShotMiss( UINT16 ubAttackerID, INT32 iBullet );
|
||||
extern void ShotMiss( SoldierID ubAttackerID, INT32 iBullet );
|
||||
extern UINT32 CalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, UINT8 ubAimPos );
|
||||
extern UINT32 CalcNewChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, UINT8 ubAimPos );
|
||||
extern UINT32 AICalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTime, UINT8 ubAimPos, INT8 bTargetLevel, UINT16 usAnimState);//dnl ch59 180813
|
||||
|
||||
@@ -71,7 +71,7 @@ void RecountBullets(void)
|
||||
}
|
||||
|
||||
|
||||
INT32 CreateBullet( UINT16 ubFirerID, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem )
|
||||
INT32 CreateBullet( SoldierID ubFirerID, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem )
|
||||
{
|
||||
INT32 iBulletIndex;
|
||||
BULLET *pBullet;
|
||||
@@ -245,7 +245,7 @@ void LocateBullet( INT32 iBulletIndex )
|
||||
// Check if a bad guy fired!
|
||||
if ( gBullets[ iBulletIndex ].ubFirerID != NOBODY )
|
||||
{
|
||||
if ( MercPtrs[ gBullets[ iBulletIndex ].ubFirerID ]->bSide == gbPlayerNum )
|
||||
if ( gBullets[ iBulletIndex ].ubFirerID->bSide == gbPlayerNum )
|
||||
{
|
||||
if ( !gBullets[ iBulletIndex ].fLocated )
|
||||
{
|
||||
@@ -633,7 +633,7 @@ BOOLEAN LoadBulletStructureFromSavedGameFile( HWFILE hFile )
|
||||
//Set some parameters
|
||||
gBullets[usCnt].uiLastUpdate = 0;
|
||||
if( gBullets[usCnt].ubFirerID != NOBODY )
|
||||
gBullets[usCnt].pFirer = &Menptr[ gBullets[usCnt].ubFirerID ];
|
||||
gBullets[usCnt].pFirer = gBullets[usCnt].ubFirerID;
|
||||
else
|
||||
gBullets[usCnt].pFirer = NULL;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user