mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
new radio operator settings: RADIO_OPERATOR_ARTILLERY disables artillery for all teams, RADIO_OPERATOR_ARTILLERY_DISTRIBUTED_OVER_TURNS causes artillery to not fire one massive barrage, but to fire over multipe turns
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6556 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -2356,6 +2356,8 @@ void LoadSkillTraitsExternalSettings()
|
||||
gSkillTraitValues.fCOElitesDetectNextTile = iniReader.ReadBoolean("Covert Ops","COVERT_ELITES_DETECT_NEXTTILE", TRUE);
|
||||
|
||||
// Flugente: RADIO OPERATOR
|
||||
gSkillTraitValues.fROAllowArtillery = iniReader.ReadBoolean("Radio Operator","RADIO_OPERATOR_ARTILLERY", TRUE);
|
||||
gSkillTraitValues.fROArtilleryDistributedOverTurns = iniReader.ReadBoolean("Radio Operator","RADIO_OPERATOR_ARTILLERY_DISTRIBUTED_OVER_TURNS", FALSE);
|
||||
gSkillTraitValues.bVOArtillerySectorFrequency = iniReader.ReadInteger("Radio Operator","RADIO_OPERATOR_ARTILLERY_SECTOR_FREQUENCY", 120, 20, 1440);
|
||||
gSkillTraitValues.usVOMortarCountDivisor = iniReader.ReadInteger("Radio Operator","RADIO_OPERATOR_MORTAR_COUNT_DIVISOR", 6, 5, 20);
|
||||
gSkillTraitValues.usVOMortarShellDivisor = iniReader.ReadInteger("Radio Operator","RADIO_OPERATOR_MORTAR_SHELL_DIVISOR", 30, 2, 100);
|
||||
|
||||
+3
-1
@@ -1580,7 +1580,9 @@ typedef struct
|
||||
BOOLEAN fCOElitesDetectNextTile;
|
||||
|
||||
// RADIO OPERATOR
|
||||
INT16 bVOArtillerySectorFrequency; // ability to call an a artillery strike from a sector every '_' minutes. Only applies if ordered from enemy/militia
|
||||
BOOLEAN fROAllowArtillery; // artillery can be forbidden for all teams with this setting
|
||||
BOOLEAN fROArtilleryDistributedOverTurns; // shells don't come in at once, but over multiple turns
|
||||
INT16 bVOArtillerySectorFrequency; // ability to call an a artillery strike from a sector every '_' minutes. Only applies if ordered from enemy/militia
|
||||
UINT8 usVOMortarCountDivisor;
|
||||
UINT8 usVOMortarShellDivisor;
|
||||
UINT8 usVOMortarPointsAdmin;
|
||||
|
||||
@@ -17266,6 +17266,9 @@ BOOLEAN SOLDIERTYPE::GetSlotOfSignalShellIfMortar(UINT8* pbLoop)
|
||||
|
||||
BOOLEAN SOLDIERTYPE::CanAnyArtilleryStrikeBeOrdered(UINT32* pSectorID) // can any artillery strikes be ordered by this guy's team from the neighbouring sectors?
|
||||
{
|
||||
if ( !gSkillTraitValues.fROAllowArtillery )
|
||||
return FALSE;
|
||||
|
||||
if ( this->bSectorZ )
|
||||
return FALSE;
|
||||
|
||||
@@ -17450,6 +17453,10 @@ BOOLEAN SOLDIERTYPE::OrderArtilleryStrike( UINT32 usSectorNr, INT32 sTargetGridN
|
||||
for (INT16 i = 0; i < numwaves; ++i)
|
||||
{
|
||||
AddItemToPool( sStartingGridNo, &shellobj, HIDDEN_ITEM, 1, WORLD_ITEM_ARMED_BOMB, 0 );
|
||||
|
||||
// if option is set, delay each wave by one turn
|
||||
if ( gSkillTraitValues.fROArtilleryDistributedOverTurns )
|
||||
shellobj[0]->data.misc.bDelay += 1;
|
||||
}
|
||||
|
||||
// update the sector Artillery time
|
||||
@@ -17582,7 +17589,12 @@ BOOLEAN SOLDIERTYPE::OrderArtilleryStrike( UINT32 usSectorNr, INT32 sTargetGridN
|
||||
// check if soldier exists in this sector
|
||||
if ( !pSoldier || !pSoldier->bActive || pSoldier->sSectorX != sSectorX || pSoldier->sSectorY != sSectorY || pSoldier->bSectorZ != bSectorZ|| pSoldier->bAssignment > ON_DUTY )
|
||||
continue;
|
||||
|
||||
|
||||
INT8 shelldelay = 1;
|
||||
// In realtime the player could choose to put down a bomb right before a turn expires, so add 1 to the setting in RT
|
||||
if ( !(gTacticalStatus.uiFlags & TURNBASED && gTacticalStatus.uiFlags & INCOMBAT) )
|
||||
++shelldelay;
|
||||
|
||||
INT8 invsize = (INT8)pSoldier->inv.size(); // remember inventorysize, so we don't call size() repeatedly
|
||||
for ( INT8 bLoop = 0; bLoop < invsize; ++bLoop)
|
||||
{
|
||||
@@ -17596,6 +17608,10 @@ BOOLEAN SOLDIERTYPE::OrderArtilleryStrike( UINT32 usSectorNr, INT32 sTargetGridN
|
||||
// only fire if not signal shell, we already fired one, no need to do so again
|
||||
if ( pAttObj )//&& !HasItemFlag(pAttObj->usItem, SIGNAL_SHELL) )
|
||||
{
|
||||
// if option is set, delay each wave by one turn
|
||||
if ( gSkillTraitValues.fROArtilleryDistributedOverTurns )
|
||||
++shelldelay;
|
||||
|
||||
// create mortar shell item
|
||||
OBJECTTYPE shellobj;
|
||||
CreateItem( pAttObj->usItem, 100, &shellobj );
|
||||
@@ -17606,10 +17622,7 @@ BOOLEAN SOLDIERTYPE::OrderArtilleryStrike( UINT32 usSectorNr, INT32 sTargetGridN
|
||||
shellobj[0]->data.misc.usBombItem = shellobj.usItem;
|
||||
shellobj[0]->data.misc.ubBombOwner = this->ubID + 2;
|
||||
|
||||
// In realtime the player could choose to put down a bomb right before a turn expires, so add 1 to the setting in RT
|
||||
shellobj[0]->data.misc.bDelay = 1;
|
||||
if ( !(gTacticalStatus.uiFlags & TURNBASED && gTacticalStatus.uiFlags & INCOMBAT) )
|
||||
shellobj[0]->data.misc.bDelay++;
|
||||
shellobj[0]->data.misc.bDelay = shelldelay;
|
||||
|
||||
shellobj[0]->data.ubWireNetworkFlag = ARTILLERY_STRIKE_COUNT_1;
|
||||
|
||||
@@ -17633,6 +17646,10 @@ BOOLEAN SOLDIERTYPE::OrderArtilleryStrike( UINT32 usSectorNr, INT32 sTargetGridN
|
||||
// only fire if not signal shell, we already fired one, no need to do so again
|
||||
if ( pShellObj && !HasItemFlag(pShellObj->usItem, SIGNAL_SHELL) )
|
||||
{
|
||||
// if option is set, delay each wave by one turn
|
||||
if ( gSkillTraitValues.fROArtilleryDistributedOverTurns )
|
||||
++shelldelay;
|
||||
|
||||
// create mortar shell item
|
||||
OBJECTTYPE shellobj;
|
||||
CreateItem( pShellObj->usItem, 100, &shellobj );
|
||||
@@ -17643,10 +17660,7 @@ BOOLEAN SOLDIERTYPE::OrderArtilleryStrike( UINT32 usSectorNr, INT32 sTargetGridN
|
||||
shellobj[0]->data.misc.usBombItem = shellobj.usItem;
|
||||
shellobj[0]->data.misc.ubBombOwner = this->ubID + 2;
|
||||
|
||||
// In realtime the player could choose to put down a bomb right before a turn expires, so add 1 to the setting in RT
|
||||
shellobj[0]->data.misc.bDelay = 1;
|
||||
if ( !(gTacticalStatus.uiFlags & TURNBASED && gTacticalStatus.uiFlags & INCOMBAT) )
|
||||
shellobj[0]->data.misc.bDelay++;
|
||||
shellobj[0]->data.misc.bDelay = shelldelay;
|
||||
|
||||
shellobj[0]->data.ubWireNetworkFlag = ARTILLERY_STRIKE_COUNT_1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user