mirror of
https://github.com/1dot13/source.git
synced 2026-09-16 14:47:17 +02:00
Merged revision(s) 7006 from branches/ja2_source_official_2014:
Fix: in certain conditions, radio operators were not correctly identified to be jamming communications git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7007 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -1084,10 +1084,8 @@ BOOLEAN CheckIfRadioIsEquipped( void )
|
|||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
return FALSE;
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -17272,7 +17272,7 @@ STR16 SOLDIERTYPE::PrintSkillDesc( INT8 iSkill )
|
|||||||
return skilldescarray;
|
return skilldescarray;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN SOLDIERTYPE::CanUseRadio()
|
BOOLEAN SOLDIERTYPE::CanUseRadio(BOOLEAN fCheckForAP)
|
||||||
{
|
{
|
||||||
// new inventory system required, as the radio set has to be in a specific slot
|
// new inventory system required, as the radio set has to be in a specific slot
|
||||||
if ( !UsingNewInventorySystem() )
|
if ( !UsingNewInventorySystem() )
|
||||||
@@ -17282,7 +17282,8 @@ BOOLEAN SOLDIERTYPE::CanUseRadio()
|
|||||||
if ( !NUM_SKILL_TRAITS( this, RADIO_OPERATOR_NT ) )
|
if ( !NUM_SKILL_TRAITS( this, RADIO_OPERATOR_NT ) )
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if ( !EnoughPoints( this, APBPConstants[AP_RADIO], 0, FALSE ) )
|
// if we check wether we have enough AP, exit if we don't
|
||||||
|
if ( fCheckForAP && !EnoughPoints( this, APBPConstants[AP_RADIO], 0, FALSE ) )
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
// only player mercs use new inventory system
|
// only player mercs use new inventory system
|
||||||
@@ -17933,7 +17934,7 @@ BOOLEAN SOLDIERTYPE::OrderArtilleryStrike( UINT32 usSectorNr, INT32 sTargetGridN
|
|||||||
|
|
||||||
BOOLEAN SOLDIERTYPE::IsJamming()
|
BOOLEAN SOLDIERTYPE::IsJamming()
|
||||||
{
|
{
|
||||||
return ( (bSoldierFlagMask & SOLDIER_RADIO_OPERATOR_JAMMING) && CanUseRadio() );
|
return ( (bSoldierFlagMask & SOLDIER_RADIO_OPERATOR_JAMMING) && CanUseRadio(FALSE) );
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN SOLDIERTYPE::JamCommunications()
|
BOOLEAN SOLDIERTYPE::JamCommunications()
|
||||||
@@ -17963,7 +17964,7 @@ BOOLEAN SOLDIERTYPE::JamCommunications()
|
|||||||
|
|
||||||
BOOLEAN SOLDIERTYPE::IsScanning()
|
BOOLEAN SOLDIERTYPE::IsScanning()
|
||||||
{
|
{
|
||||||
return ( (bSoldierFlagMask & SOLDIER_RADIO_OPERATOR_SCANNING) && CanUseRadio() );
|
return ( (bSoldierFlagMask & SOLDIER_RADIO_OPERATOR_SCANNING) && CanUseRadio(FALSE) );
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN SOLDIERTYPE::ScanForJam()
|
BOOLEAN SOLDIERTYPE::ScanForJam()
|
||||||
@@ -17993,7 +17994,7 @@ BOOLEAN SOLDIERTYPE::ScanForJam()
|
|||||||
|
|
||||||
BOOLEAN SOLDIERTYPE::IsRadioListening()
|
BOOLEAN SOLDIERTYPE::IsRadioListening()
|
||||||
{
|
{
|
||||||
return ( (bSoldierFlagMask & SOLDIER_RADIO_OPERATOR_LISTENING) && CanUseRadio() );
|
return ( (bSoldierFlagMask & SOLDIER_RADIO_OPERATOR_LISTENING) && CanUseRadio(FALSE) );
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN SOLDIERTYPE::RadioListen()
|
BOOLEAN SOLDIERTYPE::RadioListen()
|
||||||
@@ -18080,7 +18081,7 @@ SOLDIERTYPE::RadioFail()
|
|||||||
|
|
||||||
void SOLDIERTYPE::DepleteActiveRadioSetEnergy(BOOLEAN fActivation, BOOLEAN fAssignment)
|
void SOLDIERTYPE::DepleteActiveRadioSetEnergy(BOOLEAN fActivation, BOOLEAN fAssignment)
|
||||||
{
|
{
|
||||||
if ( !CanUseRadio() )
|
if ( !CanUseRadio(FALSE) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
FLOAT cost = 0;
|
FLOAT cost = 0;
|
||||||
@@ -21330,7 +21331,7 @@ BOOLEAN GetRadioOperatorSignal(UINT8 usOwner, INT32* psTargetGridNo)
|
|||||||
// a merc planted this - if he's a radio operator, use his gridno
|
// a merc planted this - if he's a radio operator, use his gridno
|
||||||
SOLDIERTYPE* pSoldier = MercPtrs[usOwner - 2];
|
SOLDIERTYPE* pSoldier = MercPtrs[usOwner - 2];
|
||||||
|
|
||||||
if ( pSoldier && pSoldier->CanUseRadio() && pSoldier->bActive && pSoldier->bInSector && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
|
if ( pSoldier && pSoldier->CanUseRadio(FALSE) && pSoldier->bActive && pSoldier->bInSector && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
|
||||||
{
|
{
|
||||||
*psTargetGridNo = pSoldier->sGridNo;
|
*psTargetGridNo = pSoldier->sGridNo;
|
||||||
pSoldier->bSide;
|
pSoldier->bSide;
|
||||||
@@ -21349,7 +21350,7 @@ BOOLEAN GetRadioOperatorSignal(UINT8 usOwner, INT32* psTargetGridNo)
|
|||||||
INT32 lastid = gTacticalStatus.Team[ bTeam ].bLastID;
|
INT32 lastid = gTacticalStatus.Team[ bTeam ].bLastID;
|
||||||
for ( pSoldier = MercPtrs[ cnt ]; cnt < lastid; ++cnt, ++pSoldier)
|
for ( pSoldier = MercPtrs[ cnt ]; cnt < lastid; ++cnt, ++pSoldier)
|
||||||
{
|
{
|
||||||
if ( pSoldier && pSoldier->CanUseRadio() && pSoldier->bActive && pSoldier->bInSector && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
|
if ( pSoldier && pSoldier->CanUseRadio(FALSE) && pSoldier->bActive && pSoldier->bInSector && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
|
||||||
{
|
{
|
||||||
*psTargetGridNo = pSoldier->sGridNo;
|
*psTargetGridNo = pSoldier->sGridNo;
|
||||||
pSoldier->bSide;
|
pSoldier->bSide;
|
||||||
@@ -21409,7 +21410,7 @@ BOOLEAN IsValidArtilleryOrderSector( INT16 sSectorX, INT16 sSectorY, INT8 bSecto
|
|||||||
if ( !pSoldier || !pSoldier->bActive || pSoldier->sSectorX != sSectorX || pSoldier->sSectorY != sSectorY || pSoldier->bSectorZ != bSectorZ || pSoldier->bAssignment > ON_DUTY )
|
if ( !pSoldier || !pSoldier->bActive || pSoldier->sSectorX != sSectorX || pSoldier->sSectorY != sSectorY || pSoldier->bSectorZ != bSectorZ || pSoldier->bAssignment > ON_DUTY )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( pSoldier->CanUseRadio() )
|
if ( pSoldier->CanUseRadio(FALSE) )
|
||||||
activeradio = TRUE;
|
activeradio = TRUE;
|
||||||
|
|
||||||
if ( pSoldier->HasMortar() )
|
if ( pSoldier->HasMortar() )
|
||||||
|
|||||||
@@ -1798,7 +1798,7 @@ public:
|
|||||||
STR16 PrintSkillDesc( INT8 iSkill);
|
STR16 PrintSkillDesc( INT8 iSkill);
|
||||||
|
|
||||||
// Flugente: functions for the radio operator trait
|
// Flugente: functions for the radio operator trait
|
||||||
BOOLEAN CanUseRadio(); // can we use radio, if we even have one?
|
BOOLEAN CanUseRadio(BOOLEAN fCheckForAP = TRUE); // can we use radio, if we even have one?
|
||||||
BOOLEAN UseRadio(); // simply drain the batteries
|
BOOLEAN UseRadio(); // simply drain the batteries
|
||||||
BOOLEAN HasMortar();
|
BOOLEAN HasMortar();
|
||||||
BOOLEAN GetSlotOfSignalShellIfMortar(UINT8* pbLoop); // if we have a mortar and a fitting signal shell, return the inventory slot it is in
|
BOOLEAN GetSlotOfSignalShellIfMortar(UINT8* pbLoop); // if we have a mortar and a fitting signal shell, return the inventory slot it is in
|
||||||
|
|||||||
Reference in New Issue
Block a user