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:
+18
-18
@@ -535,18 +535,18 @@ typedef struct
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UINT8 ubDamageFunc; // 1 - gas damage , 2 - explosive damage
|
||||
UINT16 ubSoldierID;
|
||||
UINT16 usExplosiveClassID;
|
||||
INT16 sSubsequent;
|
||||
BOOL fRecompileMovementCosts;
|
||||
INT16 sWoundAmt;
|
||||
INT16 sBreathAmt;
|
||||
UINT16 ubAttackerID;
|
||||
UINT16 usItem;
|
||||
INT32 sBombGridNo;
|
||||
UINT32 uiDist;
|
||||
UINT32 uiPreRandomIndex;
|
||||
UINT8 ubDamageFunc; // 1 - gas damage , 2 - explosive damage
|
||||
SoldierID ubSoldierID;
|
||||
UINT16 usExplosiveClassID;
|
||||
INT16 sSubsequent;
|
||||
BOOL fRecompileMovementCosts;
|
||||
INT16 sWoundAmt;
|
||||
INT16 sBreathAmt;
|
||||
SoldierID ubAttackerID;
|
||||
UINT16 usItem;
|
||||
INT32 sBombGridNo;
|
||||
UINT32 uiDist;
|
||||
UINT32 uiPreRandomIndex;
|
||||
} explosiondamage_struct;
|
||||
|
||||
bullets_table bTable[11][50];
|
||||
@@ -2920,7 +2920,7 @@ void recieveMAPCHANGE( RPCParameters *rpcParameters )
|
||||
}
|
||||
|
||||
// 20091002 - OJW - Explosives
|
||||
void send_grenade (OBJECTTYPE *pGameObj, float dLifeLength, float xPos, float yPos, float zPos, float xForce, float yForce, float zForce, UINT32 sTargetGridNo, UINT16 ubOwner, UINT8 ubActionCode, UINT32 uiActionData, INT32 iRealObjectID, bool bIsThrownGrenade)
|
||||
void send_grenade (OBJECTTYPE *pGameObj, float dLifeLength, float xPos, float yPos, float zPos, float xForce, float yForce, float zForce, UINT32 sTargetGridNo, SoldierID ubOwner, UINT8 ubActionCode, UINT32 uiActionData, INT32 iRealObjectID, bool bIsThrownGrenade)
|
||||
{
|
||||
ubOwner = MPEncodeSoldierID(ubOwner); // translate our soldier to the "network" version
|
||||
|
||||
@@ -3229,11 +3229,11 @@ void recievePLANTEXPLOSIVE (RPCParameters *rpcParameters)
|
||||
}
|
||||
}
|
||||
|
||||
void send_detonate_explosive (UINT32 uiWorldIndex, UINT16 ubID)
|
||||
void send_detonate_explosive (UINT32 uiWorldIndex, SoldierID ubID)
|
||||
{
|
||||
ubID = MPEncodeSoldierID(ubID);
|
||||
|
||||
SOLDIERTYPE* pSoldier = MercPtrs[ubID];
|
||||
SOLDIERTYPE* pSoldier = ubID;
|
||||
if (pSoldier != NULL)
|
||||
{
|
||||
// explosive detonated on this client, notify the other clients
|
||||
@@ -3466,7 +3466,7 @@ void recieveDISARMEXPLOSIVE (RPCParameters *rpcParameters)
|
||||
}
|
||||
}
|
||||
|
||||
void send_spreadeffect ( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT16 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID )
|
||||
void send_spreadeffect ( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, SoldierID ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID )
|
||||
{
|
||||
spreadeffect_struct sef;
|
||||
|
||||
@@ -3551,7 +3551,7 @@ void recieveSPREADEFFECT (RPCParameters *rpcParameters)
|
||||
}
|
||||
}
|
||||
|
||||
void send_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT16 ubOwner, INT32 iSmokeEffectID)
|
||||
void send_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, SoldierID ubOwner, INT32 iSmokeEffectID)
|
||||
{
|
||||
// i'm reusing this struct, the parameters are essentially the same
|
||||
spreadeffect_struct sef;
|
||||
@@ -3634,7 +3634,7 @@ void send_gasdamage( SOLDIERTYPE * pSoldier, UINT16 usExplosiveClassID, INT16 sS
|
||||
client->RPC("sendEXPLOSIONDAMAGE",(const char*)&exp, (int)sizeof(explosiondamage_struct)*8, HIGH_PRIORITY, RELIABLE, 0, UNASSIGNED_SYSTEM_ADDRESS, true, 0, UNASSIGNED_NETWORK_ID,0);
|
||||
}
|
||||
|
||||
void send_explosivedamage( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent )
|
||||
void send_explosivedamage( SoldierID ubPerson, SoldierID ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent )
|
||||
{
|
||||
explosiondamage_struct exp;
|
||||
exp.ubDamageFunc = 2;
|
||||
|
||||
@@ -111,19 +111,19 @@ void send_stop (EV_S_STOP_MERC *SStopMerc);
|
||||
void send_interrupt(SOLDIERTYPE *pSoldier);
|
||||
|
||||
// OJW - 20091002 - explosives
|
||||
void send_grenade (OBJECTTYPE *pGameObj, float dLifeLength, float xPos, float yPos, float zPos, float xForce, float yForce, float zForce, UINT32 sTargetGridNo, UINT16 ubOwner, UINT8 ubActionCode, UINT32 uiActionData, INT32 iRealObjectID, bool bIsThrownGrenade);
|
||||
void send_grenade (OBJECTTYPE *pGameObj, float dLifeLength, float xPos, float yPos, float zPos, float xForce, float yForce, float zForce, UINT32 sTargetGridNo, SoldierID ubOwner, UINT8 ubActionCode, UINT32 uiActionData, INT32 iRealObjectID, bool bIsThrownGrenade);
|
||||
void send_grenade_result (float xPos, float yPos, float zPos, INT32 sGridNo, SoldierID ubOwnerID, INT32 iRealObjectID, bool bIsDud);
|
||||
void send_plant_explosive (UINT16 ubID,UINT16 usItem,UINT8 ubItemStatus,UINT16 usFlags, UINT32 sGridNo,UINT8 ubLevel, UINT32 uiWorldIndex);
|
||||
void send_detonate_explosive (UINT32 uiWorldIndex, UINT16 ubID);
|
||||
void send_spreadeffect ( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT16 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID );
|
||||
void send_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT16 ubOwner, INT32 iSmokeEffectID);
|
||||
void send_detonate_explosive (UINT32 uiWorldIndex, SoldierID ubID);
|
||||
void send_spreadeffect ( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, SoldierID ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID );
|
||||
void send_newsmokeeffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, SoldierID ubOwner, INT32 iSmokeEffectID);
|
||||
void send_gasdamage( SOLDIERTYPE * pSoldier, UINT16 usExplosiveClassID, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, SoldierID ubOwner );
|
||||
void send_explosivedamage( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent );
|
||||
void send_explosivedamage( SoldierID ubPerson, SoldierID ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent );
|
||||
void send_disarm_explosive(UINT32 sGridNo, UINT32 uiWorldIndex, SoldierID ubID);
|
||||
|
||||
void OpenChatMsgBox(void);
|
||||
|
||||
INT8 FireBullet( UINT16 ubFirer, BULLET * pBullet, BOOLEAN fFake );
|
||||
INT8 FireBullet( SoldierID ubFirer, BULLET * pBullet, BOOLEAN fFake );
|
||||
|
||||
void reapplySETTINGS();
|
||||
|
||||
|
||||
+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;
|
||||
|
||||
|
||||
+10
-10
@@ -5670,7 +5670,7 @@ BOOLEAN DuskLight(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID)
|
||||
BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID)
|
||||
{
|
||||
INT8 bPersonalKnowledge;
|
||||
INT8 bPublicKnowledge;
|
||||
@@ -5694,7 +5694,7 @@ BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
INT8 Knowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID)
|
||||
INT8 Knowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID)
|
||||
{
|
||||
if (!pSoldier || ubOpponentID == NOBODY)
|
||||
{
|
||||
@@ -5709,7 +5709,7 @@ INT8 Knowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID)
|
||||
return PublicKnowledge(pSoldier->bTeam, ubOpponentID);
|
||||
}
|
||||
|
||||
INT32 KnownLocation(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID)
|
||||
INT32 KnownLocation(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID)
|
||||
{
|
||||
if (!pSoldier || ubOpponentID == NOBODY)
|
||||
{
|
||||
@@ -5724,7 +5724,7 @@ INT32 KnownLocation(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID)
|
||||
return KnownPublicLocation(pSoldier->bTeam, ubOpponentID);
|
||||
}
|
||||
|
||||
INT8 KnownLevel(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID)
|
||||
INT8 KnownLevel(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID)
|
||||
{
|
||||
if (!pSoldier || ubOpponentID == NOBODY)
|
||||
{
|
||||
@@ -5739,7 +5739,7 @@ INT8 KnownLevel(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID)
|
||||
return KnownPublicLevel(pSoldier->bTeam, ubOpponentID);
|
||||
}
|
||||
|
||||
INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID)
|
||||
INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID)
|
||||
{
|
||||
if (!pSoldier || ubOpponentID == NOBODY)
|
||||
{
|
||||
@@ -5749,7 +5749,7 @@ INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID)
|
||||
return pSoldier->aiData.bOppList[ubOpponentID];
|
||||
}
|
||||
|
||||
INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID)
|
||||
INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID)
|
||||
{
|
||||
if (!pSoldier || ubOpponentID == NOBODY)
|
||||
{
|
||||
@@ -5763,7 +5763,7 @@ INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID)
|
||||
return gsLastKnownOppLoc[pSoldier->ubID][ubOpponentID];
|
||||
}
|
||||
|
||||
INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID)
|
||||
INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID)
|
||||
{
|
||||
if (!pSoldier || ubOpponentID == NOBODY)
|
||||
{
|
||||
@@ -5773,7 +5773,7 @@ INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID)
|
||||
return gbLastKnownOppLevel[pSoldier->ubID][ubOpponentID];
|
||||
}
|
||||
|
||||
INT8 PublicKnowledge(UINT8 bTeam, UINT16 ubOpponentID)
|
||||
INT8 PublicKnowledge(UINT8 bTeam, SoldierID ubOpponentID)
|
||||
{
|
||||
if (bTeam >= MAXTEAMS || ubOpponentID == NOBODY)
|
||||
{
|
||||
@@ -5783,7 +5783,7 @@ INT8 PublicKnowledge(UINT8 bTeam, UINT16 ubOpponentID)
|
||||
return gbPublicOpplist[bTeam][ubOpponentID];
|
||||
}
|
||||
|
||||
INT32 KnownPublicLocation(UINT8 bTeam, UINT16 ubOpponentID)
|
||||
INT32 KnownPublicLocation(UINT8 bTeam, SoldierID ubOpponentID)
|
||||
{
|
||||
if (bTeam >= MAXTEAMS || ubOpponentID == NOBODY)
|
||||
{
|
||||
@@ -5797,7 +5797,7 @@ INT32 KnownPublicLocation(UINT8 bTeam, UINT16 ubOpponentID)
|
||||
return gsPublicLastKnownOppLoc[bTeam][ubOpponentID];
|
||||
}
|
||||
|
||||
INT8 KnownPublicLevel(UINT8 bTeam, UINT16 ubOpponentID)
|
||||
INT8 KnownPublicLevel(UINT8 bTeam, SoldierID ubOpponentID)
|
||||
{
|
||||
if (bTeam >= MAXTEAMS || ubOpponentID == NOBODY)
|
||||
{
|
||||
|
||||
+10
-10
@@ -387,19 +387,19 @@ BOOLEAN AICheckSpecialRole(SOLDIERTYPE *pSoldier);
|
||||
// Knowledge functions
|
||||
// *************************************************************
|
||||
|
||||
INT8 Knowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID);
|
||||
INT32 KnownLocation(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID);
|
||||
INT8 KnownLevel(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID);
|
||||
INT8 Knowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID);
|
||||
INT32 KnownLocation(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID);
|
||||
INT8 KnownLevel(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID);
|
||||
|
||||
BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID);
|
||||
BOOLEAN UsePersonalKnowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID);
|
||||
|
||||
INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID);
|
||||
INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID);
|
||||
INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, UINT16 ubOpponentID);
|
||||
INT8 PersonalKnowledge(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID);
|
||||
INT32 KnownPersonalLocation(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID);
|
||||
INT8 KnownPersonalLevel(SOLDIERTYPE *pSoldier, SoldierID ubOpponentID);
|
||||
|
||||
INT8 PublicKnowledge(UINT8 bTeam, UINT16 ubOpponentID);
|
||||
INT32 KnownPublicLocation(UINT8 bTeam, UINT16 ubOpponentID);
|
||||
INT8 KnownPublicLevel(UINT8 bTeam, UINT16 ubOpponentID);
|
||||
INT8 PublicKnowledge(UINT8 bTeam, SoldierID ubOpponentID);
|
||||
INT32 KnownPublicLocation(UINT8 bTeam, SoldierID ubOpponentID);
|
||||
INT8 KnownPublicLevel(UINT8 bTeam, SoldierID ubOpponentID);
|
||||
|
||||
#define MAX_FLANKS_RED 25
|
||||
#define MAX_FLANKS_YELLOW 25
|
||||
|
||||
@@ -63,7 +63,7 @@ BOOLEAN HookerInRoom( UINT16 usRoom );
|
||||
// MODULE FOR EXPLOSIONS
|
||||
|
||||
// Spreads the effects of explosions...
|
||||
BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usItem, UINT16 ubOwner, INT16 sSubsequent, BOOLEAN *pfMercHit, INT8 bLevel, INT32 iSmokeEffectID );
|
||||
BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usItem, SoldierID ubOwner, INT16 sSubsequent, BOOLEAN *pfMercHit, INT8 bLevel, INT32 iSmokeEffectID );
|
||||
|
||||
// Flashbang effect on soldier
|
||||
UINT8 DetermineFlashbangEffect( SOLDIERTYPE *pSoldier, INT8 ubExplosionDir, BOOLEAN fInBuilding);
|
||||
@@ -192,7 +192,7 @@ UINT32 guiNumExplosions = 0;
|
||||
INT32 GetFreeExplosion( void );
|
||||
void RecountExplosions( void );
|
||||
void GenerateExplosionFromExplosionPointer( EXPLOSIONTYPE *pExplosion );
|
||||
void HandleBuldingDestruction( INT32 sGridNo, UINT16 ubOwner );
|
||||
void HandleBuldingDestruction( INT32 sGridNo, SoldierID ubOwner );
|
||||
|
||||
#ifdef JA2UB
|
||||
//JA25 UB
|
||||
@@ -650,13 +650,13 @@ void HandleFencePartnerCheck( INT32 sStructGridNo )
|
||||
|
||||
INT8 ExplosiveDamageStructureAtGridNo( STRUCTURE * pCurrent, STRUCTURE **ppNextCurrent, INT32 sGridNo, INT16 sWoundAmt,
|
||||
UINT32 uiDist,
|
||||
BOOLEAN *pfRecompileMovementCosts, BOOLEAN fOnlyWalls, BOOLEAN fSubSequentMultiTilesTransitionDamage, UINT16 ubOwner, INT8 bLevel,
|
||||
BOOLEAN *pfRecompileMovementCosts, BOOLEAN fOnlyWalls, BOOLEAN fSubSequentMultiTilesTransitionDamage, SoldierID ubOwner, INT8 bLevel,
|
||||
UINT8 ubReason )
|
||||
{
|
||||
#ifdef JA2BETAVERSION
|
||||
if (is_networked) {
|
||||
CHAR tmpMPDbgString[512];
|
||||
sprintf(tmpMPDbgString,"ExplosiveDamageStructureAtGridNo ( sGridNo : %i , sWoundAmt : %i , uiDist : %i , fRecompMoveCosts : %i , fOnlyWalls : %i , SubsMulTilTransDmg : %i , ubOwner : %i , bLevel : %i )\n", sGridNo, sWoundAmt , uiDist, (int)*pfRecompileMovementCosts , (int)fOnlyWalls , (int)fSubSequentMultiTilesTransitionDamage , ubOwner , bLevel );
|
||||
sprintf(tmpMPDbgString,"ExplosiveDamageStructureAtGridNo ( sGridNo : %i , sWoundAmt : %i , uiDist : %i , fRecompMoveCosts : %i , fOnlyWalls : %i , SubsMulTilTransDmg : %i , ubOwner : %i , bLevel : %i )\n", sGridNo, sWoundAmt , uiDist, (int)*pfRecompileMovementCosts , (int)fOnlyWalls , (int)fSubSequentMultiTilesTransitionDamage , ubOwner.i , bLevel );
|
||||
MPDebugMsg(tmpMPDbgString);
|
||||
}
|
||||
#endif
|
||||
@@ -1329,14 +1329,14 @@ STRUCTURE *gStruct;
|
||||
|
||||
void ExplosiveDamageGridNo( INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist,
|
||||
BOOLEAN *pfRecompileMovementCosts,
|
||||
BOOLEAN fOnlyWalls, INT8 bMultiStructSpecialFlag, BOOLEAN fSubSequentMultiTilesTransitionDamage, UINT16 ubOwner,
|
||||
BOOLEAN fOnlyWalls, INT8 bMultiStructSpecialFlag, BOOLEAN fSubSequentMultiTilesTransitionDamage, SoldierID ubOwner,
|
||||
INT8 bLevel,
|
||||
UINT8 ubReason )
|
||||
{
|
||||
#ifdef JA2BETAVERSION
|
||||
if (is_networked) {
|
||||
CHAR tmpMPDbgString[512];
|
||||
sprintf(tmpMPDbgString,"ExplosiveDamageGridNo ( sGridNo : %i , sWoundAmt : %i , uiDist : %i , fRecompileMoveCosts : %i , fOnlyWalls : %i , MultiStructSpecialFlag : %i ,fSubsequentMultiTilesTransDmg : %i , ubOwner : %i , bLevel : %i )\n", sGridNo, sWoundAmt ,uiDist, (int)*pfRecompileMovementCosts , (int)fOnlyWalls , bMultiStructSpecialFlag , (int)fSubSequentMultiTilesTransitionDamage , ubOwner , bLevel );
|
||||
sprintf(tmpMPDbgString,"ExplosiveDamageGridNo ( sGridNo : %i , sWoundAmt : %i , uiDist : %i , fRecompileMoveCosts : %i , fOnlyWalls : %i , MultiStructSpecialFlag : %i ,fSubsequentMultiTilesTransDmg : %i , ubOwner : %i , bLevel : %i )\n", sGridNo, sWoundAmt ,uiDist, (int)*pfRecompileMovementCosts , (int)fOnlyWalls , bMultiStructSpecialFlag , (int)fSubSequentMultiTilesTransitionDamage , ubOwner.i , bLevel );
|
||||
MPDebugMsg(tmpMPDbgString);
|
||||
}
|
||||
#endif
|
||||
@@ -1511,12 +1511,12 @@ void ExplosiveDamageGridNo( INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist,
|
||||
}
|
||||
|
||||
|
||||
BOOLEAN DamageSoldierFromBlast( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent, BOOL fFromRemoteClient )
|
||||
BOOLEAN DamageSoldierFromBlast( SoldierID ubPerson, SoldierID ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent, BOOL fFromRemoteClient )
|
||||
{
|
||||
// OJW - 20091028
|
||||
if (is_networked && is_client)
|
||||
{
|
||||
SOLDIERTYPE* pSoldier = MercPtrs[ubPerson];
|
||||
SOLDIERTYPE* pSoldier = ubPerson;
|
||||
if (pSoldier != NULL)
|
||||
{
|
||||
// only the owner of a merc may send damage (as this takes into account equipped armor)
|
||||
@@ -1532,9 +1532,9 @@ BOOLEAN DamageSoldierFromBlast( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGrid
|
||||
}
|
||||
}
|
||||
#ifdef JA2BETAVERSION
|
||||
CHAR tmpMPDbgString[512];
|
||||
sprintf(tmpMPDbgString,"DamageSoldierFromBlast ( ubPerson : %i , ubOwner : %i , sBombGridNo : %i , sWoundAmt : %i , sBreathAmt : %i , uiDist : %i , usItem : %i , sSubs : %i , fFromRemoteClient : %i )\n",ubPerson, ubOwner , sBombGridNo , sWoundAmt , sBreathAmt , uiDist , usItem , sSubsequent , fFromRemoteClient );
|
||||
MPDebugMsg(tmpMPDbgString);
|
||||
CHAR tmpMPDbgString[512];
|
||||
sprintf(tmpMPDbgString,"DamageSoldierFromBlast ( ubPerson : %i , ubOwner : %i , sBombGridNo : %i , sWoundAmt : %i , sBreathAmt : %i , uiDist : %i , usItem : %i , sSubs : %i , fFromRemoteClient : %i )\n",ubPerson.i, ubOwner.i , sBombGridNo , sWoundAmt , sBreathAmt , uiDist , usItem , sSubsequent , fFromRemoteClient );
|
||||
MPDebugMsg(tmpMPDbgString);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1547,7 +1547,7 @@ BOOLEAN DamageSoldierFromBlast( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGrid
|
||||
BOOLEAN fFlashbang = Explosive[Item[usItem].ubClassIndex].ubType == EXPLOSV_FLASHBANG;
|
||||
UINT16 usHalfExplosionRadius;
|
||||
|
||||
pSoldier = MercPtrs[ ubPerson ]; // someone is here, and they're gonna get hurt
|
||||
pSoldier = ubPerson; // someone is here, and they're gonna get hurt
|
||||
|
||||
if (!pSoldier->bActive || !pSoldier->bInSector || !pSoldier->stats.bLife )
|
||||
return( FALSE );
|
||||
@@ -1612,29 +1612,29 @@ BOOLEAN DamageSoldierFromBlast( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGrid
|
||||
// SANDRO - STOMP traits
|
||||
else
|
||||
{
|
||||
if ( ubOwner < TOTAL_SOLDIERS && (MercPtrs[ ubOwner ] != NULL) && gGameOptions.fNewTraitSystem)
|
||||
if ( ubOwner < TOTAL_SOLDIERS && gGameOptions.fNewTraitSystem)
|
||||
{
|
||||
// Demolitions damage bonus with bombs and mines
|
||||
if ( HAS_SKILL_TRAIT( MercPtrs[ ubOwner ], DEMOLITIONS_NT ) &&
|
||||
if ( HAS_SKILL_TRAIT( ubOwner, DEMOLITIONS_NT ) &&
|
||||
Explosive[Item[usItem].ubClassIndex].ubType == EXPLOSV_NORMAL && Item[usItem].usItemClass == IC_BOMB &&
|
||||
(!ItemIsAttachment(usItem) || ItemIsMine(usItem)))
|
||||
{
|
||||
sNewWoundAmt = (INT16)(sNewWoundAmt * (100 + gSkillTraitValues.ubDEDamageOfBombsAndMines) / 100.0f + 0.5f);
|
||||
}
|
||||
// Heavy Weapons trait bonus damage to tanks
|
||||
if ( HAS_SKILL_TRAIT( MercPtrs[ubOwner], HEAVY_WEAPONS_NT ) && (ARMED_VEHICLE( pSoldier ) || ENEMYROBOT( pSoldier )) &&
|
||||
if ( HAS_SKILL_TRAIT( ubOwner, HEAVY_WEAPONS_NT ) && (ARMED_VEHICLE( pSoldier ) || ENEMYROBOT( pSoldier )) &&
|
||||
Explosive[Item[usItem].ubClassIndex].ubType == EXPLOSV_NORMAL )
|
||||
{
|
||||
sNewWoundAmt = (INT16)(sNewWoundAmt * (100 + gSkillTraitValues.ubHWDamageTanksBonusPercent * NUM_SKILL_TRAITS( MercPtrs[ ubOwner ], HEAVY_WEAPONS_NT )) / 100.0f + 0.5f); // +30%
|
||||
sNewWoundAmt = (INT16)(sNewWoundAmt * (100 + gSkillTraitValues.ubHWDamageTanksBonusPercent * NUM_SKILL_TRAITS( ubOwner, HEAVY_WEAPONS_NT )) / 100.0f + 0.5f); // +30%
|
||||
}
|
||||
// Heavy Weapons trait bonus damage with rocket, grenade launchers and mortar
|
||||
else if ( HAS_SKILL_TRAIT( MercPtrs[ ubOwner ], HEAVY_WEAPONS_NT ) &&
|
||||
else if ( HAS_SKILL_TRAIT( ubOwner, HEAVY_WEAPONS_NT ) &&
|
||||
Explosive[Item[usItem].ubClassIndex].ubType == EXPLOSV_NORMAL &&
|
||||
((Item[usItem].usItemClass == IC_BOMB && ItemIsAttachment(usItem) && !ItemIsMine(usItem) ) || // mortar shells
|
||||
(Item[usItem].usItemClass == IC_GRENADE && (ItemIsGLgrenade(usItem) || ItemIsElectronic(usItem)) ) || // rockets for rocketlaunchers (I haven't found any other way)
|
||||
(Item[usItem].usItemClass == IC_LAUNCHER ) || ItemIsRocketLauncher(usItem) || ItemIsSingleShotRocketLauncher(usItem) ) )
|
||||
{
|
||||
sNewWoundAmt = (INT16)(sNewWoundAmt * (100 + gSkillTraitValues.ubHWDamageBonusPercentForHW * NUM_SKILL_TRAITS( MercPtrs[ ubOwner ], HEAVY_WEAPONS_NT )) / 100.0f + 0.5f); // +15%
|
||||
sNewWoundAmt = (INT16)(sNewWoundAmt * (100 + gSkillTraitValues.ubHWDamageBonusPercentForHW * NUM_SKILL_TRAITS( ubOwner, HEAVY_WEAPONS_NT )) / 100.0f + 0.5f); // +15%
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1890,9 +1890,9 @@ BOOLEAN DamageSoldierFromBlast( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGrid
|
||||
|
||||
pSoldier->ubMiscSoldierFlags |= SOLDIER_MISC_HURT_BY_EXPLOSION;
|
||||
|
||||
if ( ubOwner != NOBODY && MercPtrs[ ubOwner ]->bTeam == gbPlayerNum && pSoldier->bTeam != gbPlayerNum )
|
||||
if ( ubOwner != NOBODY && ubOwner->bTeam == gbPlayerNum && pSoldier->bTeam != gbPlayerNum )
|
||||
{
|
||||
ProcessImplicationsOfPCAttack( MercPtrs[ ubOwner ], &pSoldier, REASON_EXPLOSION );
|
||||
ProcessImplicationsOfPCAttack( ubOwner, &pSoldier, REASON_EXPLOSION );
|
||||
}
|
||||
|
||||
return( TRUE );
|
||||
@@ -2163,7 +2163,7 @@ BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, IN
|
||||
return( fRecompileMovementCosts );
|
||||
}
|
||||
|
||||
BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usItem, UINT16 ubOwner, INT16 sSubsequent, BOOLEAN *pfMercHit, INT8 bLevel, INT32 iSmokeEffectID )
|
||||
BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usItem, SoldierID ubOwner, INT16 sSubsequent, BOOLEAN *pfMercHit, INT8 bLevel, INT32 iSmokeEffectID )
|
||||
{
|
||||
#ifdef JA2BETAVERSION
|
||||
if (is_networked) {
|
||||
@@ -2174,7 +2174,7 @@ BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usIte
|
||||
#endif
|
||||
|
||||
INT16 sWoundAmt = 0,sBreathAmt = 0, /* sNewWoundAmt = 0, sNewBreathAmt = 0, */ sStructDmgAmt;
|
||||
UINT16 ubPerson;
|
||||
SoldierID ubPerson;
|
||||
SOLDIERTYPE *pSoldier;
|
||||
EXPLOSIVETYPE *pExplosive;
|
||||
INT16 sX, sY;
|
||||
@@ -2533,7 +2533,7 @@ BOOLEAN ExpAffect( INT32 sBombGridNo, INT32 sGridNo, UINT32 uiDist, UINT16 usIte
|
||||
return( fRecompileMovementCosts );
|
||||
}
|
||||
|
||||
pSoldier = MercPtrs[ ubPerson ]; // someone is here, and they're gonna get hurt
|
||||
pSoldier = ubPerson; // someone is here, and they're gonna get hurt
|
||||
|
||||
// silversurfer: Gas now only has an effect when the container had time to emit some. Initially it will do nothing.
|
||||
// This prevents the problem that we have to suffer two times without a chance to react (1st when the grenade hits our position, 2nd when our turn starts)
|
||||
@@ -2918,11 +2918,11 @@ void GetRayStopInfo( UINT32 uiNewSpot, UINT8 ubDir, INT8 bLevel, BOOLEAN fSmokeE
|
||||
|
||||
|
||||
|
||||
void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT16 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID, BOOL fFromRemoteClient, BOOL fNewSmokeEffect )
|
||||
void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, SoldierID ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectID, BOOL fFromRemoteClient, BOOL fNewSmokeEffect )
|
||||
{
|
||||
if (is_networked && is_client)
|
||||
{
|
||||
SOLDIERTYPE* pAttacker = MercPtrs[ubOwner];
|
||||
SOLDIERTYPE* pAttacker = ubOwner;
|
||||
if (pAttacker != NULL)
|
||||
{
|
||||
if (IsOurSoldier(pAttacker) || (pAttacker->bTeam == 1 && is_server))
|
||||
@@ -2932,7 +2932,7 @@ void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT16 ubOwner,
|
||||
{
|
||||
// let all the other clients know we are spawning this effect
|
||||
// and align them with our random number generator
|
||||
send_spreadeffect(sGridNo,ubRadius,usItem,ubOwner,fSubsequent,bLevel,iSmokeEffectID);
|
||||
send_spreadeffect(sGridNo, ubRadius, usItem, ubOwner, fSubsequent, bLevel, iSmokeEffectID);
|
||||
}
|
||||
}
|
||||
else if (!fFromRemoteClient)
|
||||
@@ -3803,7 +3803,7 @@ void AddBombToQueue( UINT32 uiWorldBombIndex, UINT32 uiTimeStamp, BOOL fFromRemo
|
||||
if (IsOurSoldier((SOLDIERTYPE*)gubPersonToSetOffExplosions) || IsOurSoldier((SOLDIERTYPE*)soldierID))
|
||||
{
|
||||
// we set off the bomb (could be failed disarm) or we own it, tell the other clients we are setting it off
|
||||
send_detonate_explosive(iWorldIndex,gubPersonToSetOffExplosions);
|
||||
send_detonate_explosive(iWorldIndex, gubPersonToSetOffExplosions);
|
||||
}
|
||||
else if (gWorldBombs[uiWorldBombIndex].bIsFromRemotePlayer && !fFromRemoteClient)
|
||||
{
|
||||
@@ -3932,10 +3932,10 @@ BOOLEAN ActivateSurroundingTripwire( SoldierID ubID, INT32 sGridNo, INT8 bLevel,
|
||||
|
||||
// SANDRO - merc records
|
||||
// only if we blew up somebody not in our team(no achievement for blowing our guys :)), only if owner exists and have profile
|
||||
if ( (MercPtrs[ubID]->bTeam != gbPlayerNum) && ((*pObj)[0]->data.misc.ubBombOwner > 1) )
|
||||
if ( (ubID->bTeam != gbPlayerNum) && ((*pObj)[0]->data.misc.ubBombOwner > 1) )
|
||||
{
|
||||
if ( MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->ubProfile != NO_PROFILE && MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->bTeam == gbPlayerNum )
|
||||
gMercProfiles[ MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->ubProfile ].records.usExpDetonated++;
|
||||
if ( ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile != NO_PROFILE && ((*pObj)[0]->data.misc.ubBombOwner - 2)->bTeam == gbPlayerNum )
|
||||
gMercProfiles[ ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile ].records.usExpDetonated++;
|
||||
}
|
||||
|
||||
/*if (pObj->usItem != ACTION_ITEM || (*pObj)[0]->data.misc.bActionValue == ACTION_ITEM_BLOW_UP)
|
||||
@@ -3962,7 +3962,7 @@ BOOLEAN ActivateSurroundingTripwire( SoldierID ubID, INT32 sGridNo, INT8 bLevel,
|
||||
}
|
||||
|
||||
// Flugente: A special function for tripwire gun traps. Search if pObj has a gun attached. If so, fire a shot from that gun in a specific direction. Afterwards place the gun on the ground
|
||||
void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, UINT16 ubId, UINT8 ubDirection )
|
||||
void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, SoldierID ubId, UINT8 ubDirection )
|
||||
{
|
||||
if ( !pObj )
|
||||
return;
|
||||
@@ -3980,7 +3980,7 @@ void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, UINT
|
||||
gTacticalStatus.uiFlags |= (DISALLOW_SIGHT | CHECK_SIGHT_AT_END_OF_ATTACK);
|
||||
}
|
||||
|
||||
FireFragmentsTrapGun( MercPtrs[ubId], sGridNo, 0, pObj, ubDirection );
|
||||
FireFragmentsTrapGun( ubId, sGridNo, 0, pObj, ubDirection );
|
||||
|
||||
// this is important... if not set, the game will remain in a loop
|
||||
gTacticalStatus.ubAttackBusyCount = 0;
|
||||
@@ -4055,11 +4055,11 @@ void HandleExplosionQueue( void )
|
||||
if ( sSoundID > NO_ALT_SOUND )
|
||||
PlayJA2Sample( sSoundID, RATE_11025, SoundVolume( HIGHVOLUME, sGridNo ), 1, SoundDir( sGridNo ) );
|
||||
|
||||
UINT16 ubID = WhoIsThere2( sGridNo, ubLevel );
|
||||
SoldierID ubID = WhoIsThere2( sGridNo, ubLevel );
|
||||
|
||||
if ( ubID != NOBODY )
|
||||
{
|
||||
SOLDIERTYPE* pSoldier = MercPtrs[ubID];
|
||||
SOLDIERTYPE* pSoldier = ubID;
|
||||
|
||||
INT16 damage = Explosive[Item[pObj->usItem].ubClassIndex].ubDamage * 0.67f + Random( Explosive[Item[pObj->usItem].ubClassIndex].ubDamage * 0.67f );
|
||||
INT16 breathdamage = Explosive[Item[pObj->usItem].ubClassIndex].ubStunDamage * 0.67f + Random( Explosive[Item[pObj->usItem].ubClassIndex].ubStunDamage * 0.67f );
|
||||
@@ -4172,7 +4172,7 @@ void HandleExplosionQueue( void )
|
||||
INT16 sX, sY;
|
||||
ConvertGridNoToCenterCellXY(sGridNo, &sX, &sY);
|
||||
|
||||
fAttFound=HandleAttachedExplosions( (UINT8) ((*pObj)[0]->data.misc.ubBombOwner - 2), sX, sY, 0,
|
||||
fAttFound = HandleAttachedExplosions( ((*pObj)[0]->data.misc.ubBombOwner - 2), sX, sY, 0,
|
||||
sGridNo, (*pObj)[0]->data.misc.usBombItem, FALSE, ubLevel, (*pObj)[0]->data.ubDirection, pObj);
|
||||
}
|
||||
}
|
||||
@@ -4219,7 +4219,7 @@ void HandleExplosionQueue( void )
|
||||
// determine gridno to attack - smoke signal required. Otherwise, it is assumed the radio operator ordered the bombing of his OWN position
|
||||
// if we cannot even find a radio operator, all bets are off - target a random gridno
|
||||
// the usual +/- 2 shenanigans
|
||||
UINT16 usOwner = NOBODY;
|
||||
SoldierID usOwner = NOBODY;
|
||||
if ( (*pObj)[0]->data.misc.ubBombOwner > 1 )
|
||||
usOwner = (*pObj)[0]->data.misc.ubBombOwner - 2;
|
||||
|
||||
@@ -4251,7 +4251,7 @@ void HandleExplosionQueue( void )
|
||||
// bomb objects only store the SIDE who placed the bomb! :-(
|
||||
if ( (*pObj)[0]->data.misc.ubBombOwner > 1 )
|
||||
{
|
||||
IgniteExplosion( (UINT8) ((*pObj)[0]->data.misc.ubBombOwner - 2), sX, sY, 0, sGridNo, (*pObj)[0]->data.misc.usBombItem, ubLevel, (*pObj)[0]->data.ubDirection, pObj);
|
||||
IgniteExplosion( ((*pObj)[0]->data.misc.ubBombOwner - 2), sX, sY, 0, sGridNo, (*pObj)[0]->data.misc.usBombItem, ubLevel, (*pObj)[0]->data.ubDirection, pObj);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -4704,12 +4704,12 @@ void SetOffBombsByFrequency( SoldierID ubID, INT8 bFrequency )
|
||||
// SANDRO - added merc records and some exp
|
||||
if ( ((*pObj)[0]->data.misc.ubBombOwner) > 1 )
|
||||
{
|
||||
if ( MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->ubProfile != NO_PROFILE &&
|
||||
MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->bTeam == gbPlayerNum )
|
||||
if ( ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile != NO_PROFILE &&
|
||||
((*pObj)[0]->data.misc.ubBombOwner - 2)->bTeam == gbPlayerNum )
|
||||
{
|
||||
gMercProfiles[MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->ubProfile].records.usExpDetonated++;
|
||||
gMercProfiles[((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile].records.usExpDetonated++;
|
||||
|
||||
StatChange( MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)], EXPLODEAMT, ( 5 ), FALSE );
|
||||
StatChange( ((*pObj)[0]->data.misc.ubBombOwner - 2), EXPLODEAMT, ( 5 ), FALSE );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4804,12 +4804,12 @@ void SetOffBombsByFrequency( SoldierID ubID, INT8 bFrequency )
|
||||
// SANDRO - added merc records and some exp
|
||||
if ( ((*pObj)[0]->data.misc.ubBombOwner) > 1 )
|
||||
{
|
||||
if ( MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->ubProfile != NO_PROFILE &&
|
||||
MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->bTeam == gbPlayerNum )
|
||||
if ( ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile != NO_PROFILE &&
|
||||
((*pObj)[0]->data.misc.ubBombOwner - 2)->bTeam == gbPlayerNum )
|
||||
{
|
||||
gMercProfiles[MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)]->ubProfile].records.usExpDetonated++;
|
||||
gMercProfiles[((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile].records.usExpDetonated++;
|
||||
|
||||
StatChange( MercPtrs[((*pObj)[0]->data.misc.ubBombOwner - 2)], EXPLODEAMT, ( 5 ), FALSE );
|
||||
StatChange( ((*pObj)[0]->data.misc.ubBombOwner - 2), EXPLODEAMT, ( 5 ), FALSE );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4979,8 +4979,8 @@ BOOLEAN SetOffBombsInGridNo( SoldierID ubID, INT32 sGridNo, BOOLEAN fAllBombs, I
|
||||
// only if we blew up somebody not in our team(no achievement for blowing our guys :)), only if owner exists and have profile
|
||||
if ( (ubID->bTeam != gbPlayerNum) && ((*pObj)[0]->data.misc.ubBombOwner > 1) )
|
||||
{
|
||||
if ( MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->ubProfile != NO_PROFILE && MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->bTeam == gbPlayerNum )
|
||||
gMercProfiles[ MercPtrs[ ((*pObj)[0]->data.misc.ubBombOwner - 2) ]->ubProfile ].records.usExpDetonated++;
|
||||
if ( ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile != NO_PROFILE && ((*pObj)[0]->data.misc.ubBombOwner - 2)->bTeam == gbPlayerNum )
|
||||
gMercProfiles[ ((*pObj)[0]->data.misc.ubBombOwner - 2)->ubProfile ].records.usExpDetonated++;
|
||||
}
|
||||
|
||||
/*if (pObj->usItem != ACTION_ITEM || (*pObj)[0]->data.misc.bActionValue == ACTION_ITEM_BLOW_UP)
|
||||
@@ -5305,7 +5305,7 @@ void UpdateSAMDoneRepair( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ )
|
||||
// loop through civ team and find
|
||||
// anybody who is an NPC and
|
||||
// see if they get angry
|
||||
void HandleBuldingDestruction( INT32 sGridNo, UINT16 ubOwner )
|
||||
void HandleBuldingDestruction( INT32 sGridNo, SoldierID ubOwner )
|
||||
{
|
||||
SOLDIERTYPE * pSoldier;
|
||||
UINT16 cnt;
|
||||
@@ -5315,7 +5315,7 @@ void HandleBuldingDestruction( INT32 sGridNo, UINT16 ubOwner )
|
||||
return;
|
||||
}
|
||||
|
||||
if ( MercPtrs[ ubOwner ]->bTeam != gbPlayerNum )
|
||||
if ( ubOwner->bTeam != gbPlayerNum )
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -5339,7 +5339,7 @@ void HandleBuldingDestruction( INT32 sGridNo, UINT16 ubOwner )
|
||||
|
||||
if ( DoesNPCOwnBuilding( pSoldier, sGridNo ) )
|
||||
{
|
||||
MakeNPCGrumpyForMinorOffense( pSoldier, MercPtrs[ ubOwner ] );
|
||||
MakeNPCGrumpyForMinorOffense( pSoldier, ubOwner );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5624,9 +5624,9 @@ void HavePersonAtGridnoStop( UINT32 sGridNo )
|
||||
SoldierID ubID = WhoIsThere2( sGridNo, 0 );
|
||||
|
||||
//is it a valid person
|
||||
if ( (ubID != NOBODY) && (MercPtrs[ ubID ]->bTeam == gbPlayerNum) )
|
||||
if ( (ubID != NOBODY) && (ubID->bTeam == gbPlayerNum) )
|
||||
{
|
||||
SOLDIERTYPE *pSoldier = MercPtrs[ ubID ];
|
||||
SOLDIERTYPE *pSoldier = ubID;
|
||||
|
||||
//Stop the merc
|
||||
pSoldier->EVENT_StopMerc( pSoldier->sGridNo, pSoldier->ubDirection );
|
||||
@@ -5732,10 +5732,10 @@ void HandleDestructionOfPowerGenFan()
|
||||
// Have a qualified merc say a quote
|
||||
//
|
||||
//Get a random qualified merc to say the quote
|
||||
INT16 bID = RandomSoldierIdFromNewMercsOnPlayerTeam();
|
||||
if( bID != -1 )
|
||||
SoldierID bID = RandomSoldierIdFromNewMercsOnPlayerTeam();
|
||||
if( bID != NOBODY )
|
||||
{
|
||||
DelayedMercQuote( Menptr[ bID ].ubProfile, QUOTE_ACCEPT_CONTRACT_RENEWAL, GetWorldTotalSeconds() + 2 );
|
||||
DelayedMercQuote( bID->ubProfile, QUOTE_ACCEPT_CONTRACT_RENEWAL, GetWorldTotalSeconds() + 2 );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5773,8 +5773,8 @@ void HandleSeeingFortifiedDoor( UINT32 sGridNo )
|
||||
gJa25SaveStruct.uiJa25GeneralFlags |= JA_GF__PLAYER_HAS_SEEN_FORTIFIED_DOOR;
|
||||
|
||||
//find out whos is the one walking across the trap
|
||||
INT16 sID = WhoIsThere2( sGridNo, 0 );
|
||||
if( sID != NOBODY && IsSoldierQualifiedMerc( &Menptr[ sID ] ) )
|
||||
SoldierID sID = WhoIsThere2( sGridNo, 0 );
|
||||
if( sID != NOBODY && IsSoldierQualifiedMerc( sID ) )
|
||||
{
|
||||
}
|
||||
else
|
||||
@@ -5783,10 +5783,10 @@ void HandleSeeingFortifiedDoor( UINT32 sGridNo )
|
||||
sID = RandomSoldierIdFromNewMercsOnPlayerTeam();
|
||||
}
|
||||
|
||||
if( sID != -1 )
|
||||
if( sID != NOBODY )
|
||||
{
|
||||
//say the quote
|
||||
TacticalCharacterDialogue( &Menptr[ sID ], QUOTE_LENGTH_OF_CONTRACT );
|
||||
TacticalCharacterDialogue( sID, QUOTE_LENGTH_OF_CONTRACT );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5801,11 +5801,11 @@ void HandleSwitchToOpenFortifiedDoor( UINT32 sGridNo )
|
||||
//remeber that the switch to open the forified door on level 1, has been pulled
|
||||
gJa25SaveStruct.ubStatusOfFortifiedDoor = FD__OPEN;
|
||||
|
||||
INT16 bID = RandomSoldierIdFromNewMercsOnPlayerTeam();
|
||||
SoldierID bID = RandomSoldierIdFromNewMercsOnPlayerTeam();
|
||||
|
||||
if( bID != -1 )
|
||||
if( bID != NOBODY )
|
||||
{
|
||||
TacticalCharacterDialogue( &Menptr[ bID ], QUOTE_COMMENT_BEFORE_HANG_UP );
|
||||
TacticalCharacterDialogue( bID, QUOTE_COMMENT_BEFORE_HANG_UP );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5834,7 +5834,7 @@ void HandleSeeingPowerGenFan( UINT32 sGridNo )
|
||||
|
||||
if( ubPerson != NOBODY )
|
||||
{
|
||||
pSoldier = &Menptr[ ubPerson ];
|
||||
pSoldier = ubPerson;
|
||||
|
||||
//if the fan is stopped And is this merc is a qualified merc but Not a power gen fan qualified merc?
|
||||
if( IsSoldierQualifiedMerc( pSoldier ) && fFanIsStopped )
|
||||
@@ -5886,7 +5886,7 @@ void HandleSeeingPowerGenFan( UINT32 sGridNo )
|
||||
}
|
||||
#endif
|
||||
|
||||
void HandleBuddyExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection )
|
||||
void HandleBuddyExplosions(SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection )
|
||||
{
|
||||
// Flugente: Items can have secondary explosions
|
||||
if ( Item[usItem].usBuddyItem )
|
||||
@@ -5907,7 +5907,7 @@ void HandleBuddyExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sG
|
||||
}
|
||||
|
||||
// sevenfm: handle explosive items from attachments
|
||||
BOOLEAN HandleAttachedExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj)
|
||||
BOOLEAN HandleAttachedExplosions( SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj)
|
||||
{
|
||||
BOOLEAN binderFound = FALSE;
|
||||
BOOLEAN detonator = FALSE;
|
||||
@@ -6264,10 +6264,10 @@ void RoofDestruction( INT32 sGridNo, BOOLEAN fWithExplosion )
|
||||
|
||||
// if there is anybody at the floor level, damage them with the debris
|
||||
// we have to do this BEFORE people drop down. It would otherwise be possible for a falling person to avoid this damage, depending on order of collapsing and possible gridno-shifts.
|
||||
UINT16 ubId = WhoIsThere2( sGridNo, 0 );
|
||||
SoldierID ubId = WhoIsThere2( sGridNo, 0 );
|
||||
if ( ubId != NOBODY )
|
||||
{
|
||||
pSoldier = MercPtrs[ubId];
|
||||
pSoldier = ubId;
|
||||
|
||||
pSoldier->EVENT_StopMerc( pSoldier->sGridNo, pSoldier->ubDirection );
|
||||
|
||||
@@ -6283,7 +6283,7 @@ void RoofDestruction( INT32 sGridNo, BOOLEAN fWithExplosion )
|
||||
ubId = WhoIsThere2( sGridNo, 1 );
|
||||
if ( ubId != NOBODY )
|
||||
{
|
||||
pSoldier = MercPtrs[ubId];
|
||||
pSoldier = ubId;
|
||||
|
||||
INT32 soldierdropoffgridno = sGridNo;
|
||||
if ( !IsLocationSittable( soldierdropoffgridno, FALSE ) )
|
||||
|
||||
@@ -132,16 +132,16 @@ void RemoveActiveExplosionMarkers();
|
||||
#define GASMASK_MIN_STATUS 70
|
||||
|
||||
// OJW - 20091028 - Explosion damage sync
|
||||
BOOLEAN DamageSoldierFromBlast( UINT16 ubPerson, UINT16 ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent, BOOL fFromRemoteClient = FALSE );
|
||||
BOOLEAN DamageSoldierFromBlast( SoldierID ubPerson, SoldierID ubOwner, INT32 sBombGridNo, INT16 sWoundAmt, INT16 sBreathAmt, UINT32 uiDist, UINT16 usItem, INT16 sSubsequent, BOOL fFromRemoteClient = FALSE );
|
||||
BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, SoldierID ubOwner, BOOL fFromRemoteClient = FALSE );
|
||||
void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT16 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectNum, BOOL fFromRemoteClient = FALSE, BOOL fNewSmokeEffect = FALSE );
|
||||
void SpreadEffect( INT32 sGridNo, UINT8 ubRadius, UINT16 usItem, SoldierID ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectNum, BOOL fFromRemoteClient = FALSE, BOOL fNewSmokeEffect = FALSE );
|
||||
void AddBombToQueue( UINT32 uiWorldBombIndex, UINT32 uiTimeStamp, BOOL fFromRemoteClient = FALSE );
|
||||
|
||||
// Flugente: activate everything connected to a tripwire in the surrounding if sGridNo on level bLevel with regard to the tripwire netwrok and hierarchy determined by ubFlag
|
||||
BOOLEAN ActivateSurroundingTripwire( SoldierID ubID, INT32 sGridNo, INT8 bLevel, UINT32 ubFlag );
|
||||
|
||||
// Flugente: A special function for tripwire gun traps. Search if pObj has a gun attached. If so, fire a shot from that gun in a specific direction. Afterwards place the gun on the ground
|
||||
void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, UINT16 ubId, UINT8 ubDirection );
|
||||
void CheckAndFireTripwireGun( OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel, SoldierID ubId, UINT8 ubDirection );
|
||||
|
||||
extern void ToggleActionItemsByFrequency( INT8 bFrequency );
|
||||
extern void PerformItemAction( INT32 sGridNo, OBJECTTYPE * pObj );
|
||||
@@ -166,15 +166,15 @@ extern void HandleSeeingFortifiedDoor( UINT32 sGridNo );//Ja25 UB
|
||||
|
||||
void ExplosiveDamageGridNo( INT32 sGridNo, INT16 sWoundAmt, UINT32 uiDist,
|
||||
BOOLEAN *pfRecompileMovementCosts,
|
||||
BOOLEAN fOnlyWalls, INT8 bMultiStructSpecialFlag, BOOLEAN fSubSequentMultiTilesTransitionDamage, UINT16 ubOwner,
|
||||
BOOLEAN fOnlyWalls, INT8 bMultiStructSpecialFlag, BOOLEAN fSubSequentMultiTilesTransitionDamage, SoldierID ubOwner,
|
||||
INT8 bLevel,
|
||||
UINT8 ubReason );
|
||||
|
||||
// Flugente: handle secondary explosive effects
|
||||
void HandleBuddyExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection );
|
||||
void HandleBuddyExplosions( SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection );
|
||||
|
||||
// sevenfm: handle explosive items from attachments
|
||||
BOOLEAN HandleAttachedExplosions(UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj );
|
||||
BOOLEAN HandleAttachedExplosions( SoldierID ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT32 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel, UINT8 ubDirection, OBJECTTYPE * pObj );
|
||||
void CheckForBuriedBombsAndRemoveFlags( INT32 sGridNo, INT8 bLevel );
|
||||
UINT16 CalcTotalVolatility(OBJECTTYPE * pObj);
|
||||
BOOLEAN FindBinderAttachment (OBJECTTYPE * pObj);
|
||||
|
||||
@@ -332,7 +332,7 @@ INT32 NewSmokeEffect( INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT16 ubOwner,
|
||||
return( iSmokeIndex );
|
||||
}
|
||||
|
||||
INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT16 ubOwner, BOOLEAN fFromRemoteClient, UINT8 ubDuration, UINT8 ubRadius, UINT8 ubGeneration)
|
||||
INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, SoldierID ubOwner, BOOLEAN fFromRemoteClient, UINT8 ubDuration, UINT8 ubRadius, UINT8 ubGeneration)
|
||||
{
|
||||
SMOKEEFFECT *pSmoke;
|
||||
INT32 iSmokeIndex;
|
||||
|
||||
@@ -57,7 +57,7 @@ void AddSmokeEffectToTile( INT32 iSmokeEffectID, INT8 bType, INT32 sGridNo, INT8
|
||||
|
||||
void RemoveSmokeEffectFromTile( INT32 sGridNo, INT8 bLevel );
|
||||
|
||||
INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT16 ubOwner, BOOLEAN fFromRemoteClient = 0, UINT8 ubDuration = 0, UINT8 ubRadius = 0, UINT8 ubGeneration = 0);
|
||||
INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, SoldierID ubOwner, BOOLEAN fFromRemoteClient = 0, UINT8 ubDuration = 0, UINT8 ubRadius = 0, UINT8 ubGeneration = 0);
|
||||
|
||||
BOOLEAN SaveSmokeEffectsToSaveGameFile( HWFILE hFile );
|
||||
BOOLEAN LoadSmokeEffectsFromLoadGameFile( HWFILE hFile );
|
||||
@@ -77,4 +77,4 @@ BOOLEAN CheckSmokeEffect(INT32 sGridNo, INT8 bLevel, INT8 bType);
|
||||
// find smoke effect on visible screen
|
||||
BOOLEAN FindVisibleSmokeEffect(INT8 bType);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
+50
-50
@@ -38,70 +38,70 @@
|
||||
|
||||
typedef struct TAG_anitile
|
||||
{
|
||||
struct TAG_anitile *pNext;
|
||||
UINT32 uiFlags; // flags struct
|
||||
UINT32 uiTimeLastUpdate; // Stuff for animated tiles
|
||||
struct TAG_anitile *pNext;
|
||||
UINT32 uiFlags; // flags struct
|
||||
UINT32 uiTimeLastUpdate; // Stuff for animated tiles
|
||||
|
||||
LEVELNODE *pLevelNode;
|
||||
UINT8 ubLevelID;
|
||||
INT16 sCurrentFrame;
|
||||
INT16 sStartFrame;
|
||||
INT16 sDelay;
|
||||
UINT16 usTileType;
|
||||
UINT16 usNumFrames;
|
||||
LEVELNODE *pLevelNode;
|
||||
UINT8 ubLevelID;
|
||||
INT16 sCurrentFrame;
|
||||
INT16 sStartFrame;
|
||||
INT16 sDelay;
|
||||
UINT16 usTileType;
|
||||
UINT16 usNumFrames;
|
||||
|
||||
UINT16 usMissAnimationPlayed;
|
||||
UINT16 ubAttackerMissed;
|
||||
INT16 sRelativeX;
|
||||
INT16 sRelativeY;
|
||||
INT16 sRelativeZ;
|
||||
INT32 sGridNo;
|
||||
UINT16 usTileIndex;
|
||||
UINT16 usMissAnimationPlayed;
|
||||
SoldierID ubAttackerMissed;
|
||||
INT16 sRelativeX;
|
||||
INT16 sRelativeY;
|
||||
INT16 sRelativeZ;
|
||||
INT32 sGridNo;
|
||||
UINT16 usTileIndex;
|
||||
|
||||
UINT16 usCachedTileSubIndex; // sub Index
|
||||
INT16 sCachedTileID; // Index into cached tile ID
|
||||
UINT16 usCachedTileSubIndex; // sub Index
|
||||
INT16 sCachedTileID; // Index into cached tile ID
|
||||
|
||||
UINT8 ubOwner;
|
||||
UINT8 ubKeyFrame1;
|
||||
UINT32 uiKeyFrame1Code;
|
||||
UINT8 ubKeyFrame2;
|
||||
UINT32 uiKeyFrame2Code;
|
||||
UINT8 ubOwner;
|
||||
UINT8 ubKeyFrame1;
|
||||
UINT32 uiKeyFrame1Code;
|
||||
UINT8 ubKeyFrame2;
|
||||
UINT32 uiKeyFrame2Code;
|
||||
|
||||
UINT32 uiUserData;
|
||||
UINT8 ubUserData2;
|
||||
UINT32 uiUserData3;
|
||||
UINT32 uiUserData;
|
||||
UINT8 ubUserData2;
|
||||
UINT32 uiUserData3;
|
||||
|
||||
INT8 bFrameCountAfterStart;
|
||||
INT32 lightSprite;
|
||||
INT8 bFrameCountAfterStart;
|
||||
INT32 lightSprite;
|
||||
} ANITILE;
|
||||
|
||||
|
||||
typedef struct TAG_anitile_params
|
||||
{
|
||||
UINT32 uiFlags; // flags struct
|
||||
UINT8 ubLevelID; // Level ID for rendering layer
|
||||
INT16 sStartFrame; // Start frame
|
||||
INT16 sDelay; // Delay time
|
||||
UINT16 usTileType; // Tile databse type ( optional )
|
||||
UINT16 usTileIndex; // Tile database index ( optional )
|
||||
INT16 sX; // World X ( optional )
|
||||
INT16 sY; // World Y ( optional )
|
||||
INT16 sZ; // World Z ( optional )
|
||||
INT32 sGridNo; // World GridNo
|
||||
UINT32 uiFlags; // flags struct
|
||||
UINT8 ubLevelID; // Level ID for rendering layer
|
||||
INT16 sStartFrame; // Start frame
|
||||
INT16 sDelay; // Delay time
|
||||
UINT16 usTileType; // Tile databse type ( optional )
|
||||
UINT16 usTileIndex; // Tile database index ( optional )
|
||||
INT16 sX; // World X ( optional )
|
||||
INT16 sY; // World Y ( optional )
|
||||
INT16 sZ; // World Z ( optional )
|
||||
INT32 sGridNo; // World GridNo
|
||||
|
||||
LEVELNODE *pGivenLevelNode; // Levelnode for existing tile ( optional )
|
||||
CHAR8 zCachedFile[ 100 ]; // Filename for cached tile name ( optional )
|
||||
LEVELNODE *pGivenLevelNode; // Levelnode for existing tile ( optional )
|
||||
CHAR8 zCachedFile[ 100 ]; // Filename for cached tile name ( optional )
|
||||
|
||||
UINT8 ubOwner; // UBID for the owner
|
||||
UINT8 ubKeyFrame1; // Key frame 1
|
||||
UINT32 uiKeyFrame1Code; // Key frame code
|
||||
UINT8 ubKeyFrame2; // Key frame 2
|
||||
UINT32 uiKeyFrame2Code; // Key frame code
|
||||
UINT8 ubOwner; // UBID for the owner
|
||||
UINT8 ubKeyFrame1; // Key frame 1
|
||||
UINT32 uiKeyFrame1Code; // Key frame code
|
||||
UINT8 ubKeyFrame2; // Key frame 2
|
||||
UINT32 uiKeyFrame2Code; // Key frame code
|
||||
|
||||
UINT32 uiUserData;
|
||||
UINT8 ubUserData2;
|
||||
UINT32 uiUserData3;
|
||||
INT32 lightSprite;
|
||||
UINT32 uiUserData;
|
||||
UINT8 ubUserData2;
|
||||
UINT32 uiUserData3;
|
||||
INT32 lightSprite;
|
||||
} ANITILE_PARAMS;
|
||||
|
||||
|
||||
|
||||
@@ -1764,7 +1764,7 @@ BOOLEAN StructureDensity( STRUCTURE * pStructure, UINT8 * pubLevel0, UINT8 * pub
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, INT32 sGridNo, INT16 sX, INT16 sY, UINT16 ubOwner, INT32 sAntiMaterialImpact )
|
||||
INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, INT32 sGridNo, INT16 sX, INT16 sY, SoldierID ubOwner, INT32 sAntiMaterialImpact )
|
||||
{
|
||||
// do damage to a structure; returns TRUE if the structure should be removed
|
||||
STRUCTURE *pBase;
|
||||
|
||||
@@ -91,7 +91,7 @@ STRUCTURE* GetTallestStructureOnGridnoDrag( INT32 sGridNo, INT8 bLevel );
|
||||
// FUNCTIONS FOR DETERMINING STUFF THAT BLOCKS VIEW FOR TILE_bASED LOS
|
||||
INT8 GetBlockingStructureInfo( INT32 sGridNo, INT8 bDir, INT8 bNextDir, INT8 bLevel, INT8 *pStructHeight, STRUCTURE ** ppTallestStructure, BOOLEAN fWallsBlock );
|
||||
|
||||
INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, INT32 sGridNo, INT16 sX, INT16 sY, UINT16 ubOwner, INT32 sAntiMaterialImpact = 0 );
|
||||
INT8 DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, INT32 sGridNo, INT16 sX, INT16 sY, SoldierID ubOwner, INT32 sAntiMaterialImpact = 0 );
|
||||
|
||||
// Material armour type enumeration
|
||||
enum
|
||||
|
||||
Reference in New Issue
Block a user