mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
- Moved ASD & Enemy Heli-related settings from JA2_Options.ini to Mod_Settings.ini.
- Enemy Helis can also be unlocked if a certain game progress is reached. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8017 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+12
-9
@@ -1977,8 +1977,6 @@ void LoadGameExternalOptions()
|
|||||||
|
|
||||||
gGameExternalOptions.fASDActive = iniReader.ReadBoolean( "Strategic Additional Enemy AI Settings", "ASD_ACTIVE", FALSE );
|
gGameExternalOptions.fASDActive = iniReader.ReadBoolean( "Strategic Additional Enemy AI Settings", "ASD_ACTIVE", FALSE );
|
||||||
|
|
||||||
gGameExternalOptions.usASDSupplyArrivalSector = iniReader.ReadInteger( "Strategic Additional Enemy AI Settings", "ASD_SUPPLY_ARRIVAL_SECTOR", 210, 0, 255 );
|
|
||||||
|
|
||||||
gGameExternalOptions.gASDResource_Cost[ASD_MONEY] = 1;
|
gGameExternalOptions.gASDResource_Cost[ASD_MONEY] = 1;
|
||||||
gGameExternalOptions.gASDResource_Cost[ASD_FUEL] = iniReader.ReadInteger( "Strategic Additional Enemy AI Settings", "ASD_COST_FUEL", 10, 1, 100 );
|
gGameExternalOptions.gASDResource_Cost[ASD_FUEL] = iniReader.ReadInteger( "Strategic Additional Enemy AI Settings", "ASD_COST_FUEL", 10, 1, 100 );
|
||||||
gGameExternalOptions.gASDResource_Cost[ASD_HELI] = iniReader.ReadInteger( "Strategic Additional Enemy AI Settings", "ASD_COST_HELI", 100000, 10000, 1000000 );
|
gGameExternalOptions.gASDResource_Cost[ASD_HELI] = iniReader.ReadInteger( "Strategic Additional Enemy AI Settings", "ASD_COST_HELI", 100000, 10000, 1000000 );
|
||||||
@@ -1995,6 +1993,7 @@ void LoadGameExternalOptions()
|
|||||||
//################# Enemy Helicopter Settings ##################
|
//################# Enemy Helicopter Settings ##################
|
||||||
|
|
||||||
gGameExternalOptions.fEnemyHeliActive = iniReader.ReadBoolean( "Enemy Helicopter Settings", "ENEMYHELI_ACTIVE", TRUE );
|
gGameExternalOptions.fEnemyHeliActive = iniReader.ReadBoolean( "Enemy Helicopter Settings", "ENEMYHELI_ACTIVE", TRUE );
|
||||||
|
gGameExternalOptions.usEnemyHeliMinimumProgress = iniReader.ReadInteger( "Enemy Helicopter Settings", "ENEMYHELI_DEFINITE_UNLOCK_AT_PROGRESS", 30, 0, 100 );
|
||||||
|
|
||||||
gGameExternalOptions.gEnemyHeliMaxHP = iniReader.ReadInteger( "Enemy Helicopter Settings", "ENEMYHELI_HP", 100, 1, 500 );
|
gGameExternalOptions.gEnemyHeliMaxHP = iniReader.ReadInteger( "Enemy Helicopter Settings", "ENEMYHELI_HP", 100, 1, 500 );
|
||||||
gGameExternalOptions.gEnemyHeliTimePerHPRepair = iniReader.ReadInteger( "Enemy Helicopter Settings", "ENEMYHELI_HP_REPAIRTIME", 6, 1, 20 );
|
gGameExternalOptions.gEnemyHeliTimePerHPRepair = iniReader.ReadInteger( "Enemy Helicopter Settings", "ENEMYHELI_HP_REPAIRTIME", 6, 1, 20 );
|
||||||
@@ -2009,13 +2008,6 @@ void LoadGameExternalOptions()
|
|||||||
gGameExternalOptions.gEnemyHeliMANPADSDamage_Base = iniReader.ReadInteger( "Enemy Helicopter Settings", "ENEMYHELI_MANPADS_DAMAGE_BASE", 40, 10, 100 );
|
gGameExternalOptions.gEnemyHeliMANPADSDamage_Base = iniReader.ReadInteger( "Enemy Helicopter Settings", "ENEMYHELI_MANPADS_DAMAGE_BASE", 40, 10, 100 );
|
||||||
gGameExternalOptions.gEnemyHeliMANPADSDamage_Var = iniReader.ReadInteger( "Enemy Helicopter Settings", "ENEMYHELI_MANPADS_DAMAGE_VAR", 80, 10, 100 );
|
gGameExternalOptions.gEnemyHeliMANPADSDamage_Var = iniReader.ReadInteger( "Enemy Helicopter Settings", "ENEMYHELI_MANPADS_DAMAGE_VAR", 80, 10, 100 );
|
||||||
|
|
||||||
gGameExternalOptions.usEnemyHeliBaseSector = iniReader.ReadInteger( "Enemy Helicopter Settings", "ENEMYHELI_BASE", 210, 0, 255 );
|
|
||||||
|
|
||||||
gGameExternalOptions.sEnemyHeliBaseParkGridno[0] = iniReader.ReadInteger( "Enemy Helicopter Settings", "ENEMYHELI_BASE_PARKPOSITION_1", 18475, -1, 2147483647 );
|
|
||||||
gGameExternalOptions.sEnemyHeliBaseParkGridno[1] = iniReader.ReadInteger( "Enemy Helicopter Settings", "ENEMYHELI_BASE_PARKPOSITION_2", 18469, -1, 2147483647 );
|
|
||||||
gGameExternalOptions.sEnemyHeliBaseParkTileIndex = iniReader.ReadInteger( "Enemy Helicopter Settings", "ENEMYHELI_BASE_PARK_TILEINDEX", 1689, -1, 50000 );
|
|
||||||
|
|
||||||
|
|
||||||
//################# Militia Training Settings ##################
|
//################# Militia Training Settings ##################
|
||||||
|
|
||||||
gGameExternalOptions.iMaxMilitiaPerSector = iniReader.ReadInteger("Militia Training Settings","MAX_MILITIA_PER_SECTOR",20, 1, CODE_MAXIMUM_NUMBER_OF_REBELS);
|
gGameExternalOptions.iMaxMilitiaPerSector = iniReader.ReadInteger("Militia Training Settings","MAX_MILITIA_PER_SECTOR",20, 1, CODE_MAXIMUM_NUMBER_OF_REBELS);
|
||||||
@@ -2811,6 +2803,17 @@ void LoadModSettings(){
|
|||||||
gModSettings.ubEndGameVictorySectorY = iniReader.ReadInteger("End Game", "VICTORY_SECTOR_Y", 16);
|
gModSettings.ubEndGameVictorySectorY = iniReader.ReadInteger("End Game", "VICTORY_SECTOR_Y", 16);
|
||||||
gModSettings.iEndGameVictoryGridNo = iniReader.ReadInteger("End Game", "VICTORY_POSITION", 5687);
|
gModSettings.iEndGameVictoryGridNo = iniReader.ReadInteger("End Game", "VICTORY_POSITION", 5687);
|
||||||
|
|
||||||
|
// [ASD]
|
||||||
|
gModSettings.usASDSupplyArrivalSectorX = iniReader.ReadInteger( "ASD", "ASD_SUPPLY_ARRIVAL_SECTOR_X", 3, 1, 16 );
|
||||||
|
gModSettings.usASDSupplyArrivalSectorY = iniReader.ReadInteger( "ASD", "ASD_SUPPLY_ARRIVAL_SECTOR_Y", 14, 1, 16 );
|
||||||
|
|
||||||
|
// [Enemy Heli]
|
||||||
|
gModSettings.usEnemyHeliBaseSectorX = iniReader.ReadInteger( "Enemy Heli", "ENEMYHELI_BASE_X", 3, 1, 16 );
|
||||||
|
gModSettings.usEnemyHeliBaseSectorY = iniReader.ReadInteger( "Enemy Heli", "ENEMYHELI_BASE_Y", 14, 1, 16 );
|
||||||
|
|
||||||
|
gModSettings.sEnemyHeliBaseParkGridno[0] = iniReader.ReadInteger( "Enemy Heli", "ENEMYHELI_BASE_PARKPOSITION_1", 18475, -1, 2147483647 );
|
||||||
|
gModSettings.sEnemyHeliBaseParkGridno[1] = iniReader.ReadInteger( "Enemy Heli", "ENEMYHELI_BASE_PARKPOSITION_2", 18469, -1, 2147483647 );
|
||||||
|
gModSettings.sEnemyHeliBaseParkTileIndex = iniReader.ReadInteger( "Enemy Heli", "ENEMYHELI_BASE_PARK_TILEINDEX", 1689, -1, 50000 );
|
||||||
}
|
}
|
||||||
|
|
||||||
// silversurfer: load item property modifiers
|
// silversurfer: load item property modifiers
|
||||||
|
|||||||
+12
-7
@@ -614,12 +614,13 @@ typedef struct
|
|||||||
|
|
||||||
// Flugente: ASD
|
// Flugente: ASD
|
||||||
BOOLEAN fASDActive;
|
BOOLEAN fASDActive;
|
||||||
UINT8 usASDSupplyArrivalSector;
|
|
||||||
INT32 gASDResource_Cost[ASD_RESOURCE_MAX];
|
INT32 gASDResource_Cost[ASD_RESOURCE_MAX];
|
||||||
INT32 gASDResource_BuyTime[ASD_RESOURCE_MAX];
|
INT32 gASDResource_BuyTime[ASD_RESOURCE_MAX];
|
||||||
|
|
||||||
// Flugente: enemy heli
|
// Flugente: enemy heli
|
||||||
BOOLEAN fEnemyHeliActive;
|
BOOLEAN fEnemyHeliActive;
|
||||||
|
UINT8 usEnemyHeliMinimumProgress;
|
||||||
|
|
||||||
UINT16 gEnemyHeliMaxHP;
|
UINT16 gEnemyHeliMaxHP;
|
||||||
UINT16 gEnemyHeliTimePerHPRepair;
|
UINT16 gEnemyHeliTimePerHPRepair;
|
||||||
@@ -633,12 +634,6 @@ typedef struct
|
|||||||
UINT16 gEnemyHeliMANPADSDamage_Base;
|
UINT16 gEnemyHeliMANPADSDamage_Base;
|
||||||
UINT16 gEnemyHeliMANPADSDamage_Var;
|
UINT16 gEnemyHeliMANPADSDamage_Var;
|
||||||
|
|
||||||
UINT8 usEnemyHeliBaseSector;
|
|
||||||
INT32 sEnemyHeliBaseParkGridno[2];
|
|
||||||
INT32 sEnemyHeliBaseParkTileIndex;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
INT32 ubEnemiesItemDrop;
|
INT32 ubEnemiesItemDrop;
|
||||||
|
|
||||||
BOOLEAN gfUseExternalLoadscreens;
|
BOOLEAN gfUseExternalLoadscreens;
|
||||||
@@ -2212,6 +2207,16 @@ typedef struct
|
|||||||
BOOLEAN AllMeanwhileCutscene;
|
BOOLEAN AllMeanwhileCutscene;
|
||||||
BOOLEAN CreatureMeanwhileCutscene;
|
BOOLEAN CreatureMeanwhileCutscene;
|
||||||
|
|
||||||
|
// [ASD]
|
||||||
|
UINT8 usASDSupplyArrivalSectorX;
|
||||||
|
UINT8 usASDSupplyArrivalSectorY;
|
||||||
|
|
||||||
|
// [Enemy Heli]
|
||||||
|
UINT8 usEnemyHeliBaseSectorX;
|
||||||
|
UINT8 usEnemyHeliBaseSectorY;
|
||||||
|
INT32 sEnemyHeliBaseParkGridno[2];
|
||||||
|
INT32 sEnemyHeliBaseParkTileIndex;
|
||||||
|
|
||||||
}MOD_SETTINGS;
|
}MOD_SETTINGS;
|
||||||
|
|
||||||
// silversurfer: item property modifiers
|
// silversurfer: item property modifiers
|
||||||
|
|||||||
+11
-9
@@ -190,6 +190,10 @@ void UpdateASD( )
|
|||||||
if ( DidGameJustStart( ) )
|
if ( DidGameJustStart( ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// enemy helis are unlocked either by a cutscene OR if a minimum progress threshold has been reached
|
||||||
|
if ( !(gASD_Flags & ASDFACT_HELI_UNLOCKED) && HighestPlayerProgressPercentage( ) >= gGameExternalOptions.usEnemyHeliMinimumProgress )
|
||||||
|
SetASDFlag( ASDFACT_HELI_UNLOCKED );
|
||||||
|
|
||||||
// determine whether we need to buy new toys
|
// determine whether we need to buy new toys
|
||||||
ASDDecideOnPurchases();
|
ASDDecideOnPurchases();
|
||||||
|
|
||||||
@@ -518,11 +522,9 @@ void AddStrategicAIResources( UINT8 aType, INT32 aAmount )
|
|||||||
AddNewHeli( );
|
AddNewHeli( );
|
||||||
}
|
}
|
||||||
|
|
||||||
void ASDReceiveOrderedStrategicAIResources(UINT8 aType, INT32 aAmount)
|
void ASDReduceOrderedStrategicResources( UINT8 aType, INT32 aAmount )
|
||||||
{
|
{
|
||||||
gASDResource_Ordered[aType] = max( 0, gASDResource_Ordered[aType] - aAmount );
|
gASDResource_Ordered[aType] = max( 0, gASDResource_Ordered[aType] - aAmount );
|
||||||
|
|
||||||
AddStrategicAIResources( aType, aAmount );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////// enemy helis /////////////////////////////////////////////////////////
|
//////////////////////////////////////////// enemy helis /////////////////////////////////////////////////////////
|
||||||
@@ -654,7 +656,7 @@ void AddNewHeli( )
|
|||||||
if ( (*it).flagmask & ENEMYHELI_DESTROYED )
|
if ( (*it).flagmask & ENEMYHELI_DESTROYED )
|
||||||
{
|
{
|
||||||
(*it).flagmask = 0;
|
(*it).flagmask = 0;
|
||||||
(*it).sector_home = gGameExternalOptions.usEnemyHeliBaseSector;
|
(*it).sector_home = SECTOR( gModSettings.usEnemyHeliBaseSectorX, gModSettings.usEnemyHeliBaseSectorY );
|
||||||
(*it).sector_destination = 0;
|
(*it).sector_destination = 0;
|
||||||
(*it).sector_waypoint = 0;
|
(*it).sector_waypoint = 0;
|
||||||
(*it).sector_current = (*it).sector_home;
|
(*it).sector_current = (*it).sector_home;
|
||||||
@@ -676,7 +678,7 @@ void AddNewHeli( )
|
|||||||
ENEMY_HELI data;
|
ENEMY_HELI data;
|
||||||
|
|
||||||
data.flagmask = 0;
|
data.flagmask = 0;
|
||||||
data.sector_home = gGameExternalOptions.usEnemyHeliBaseSector;
|
data.sector_home = SECTOR( gModSettings.usEnemyHeliBaseSectorX, gModSettings.usEnemyHeliBaseSectorY );
|
||||||
data.sector_destination = 0;
|
data.sector_destination = 0;
|
||||||
data.sector_waypoint = 0;
|
data.sector_waypoint = 0;
|
||||||
data.sector_current = data.sector_home;
|
data.sector_current = data.sector_home;
|
||||||
@@ -1316,7 +1318,7 @@ void HandleEnemyHelicopterOnGroundGraphic( )
|
|||||||
UINT8 currentsector = SECTOR( gWorldSectorX, gWorldSectorY );
|
UINT8 currentsector = SECTOR( gWorldSectorX, gWorldSectorY );
|
||||||
|
|
||||||
// only relevant if this is the enemies' heli hub
|
// only relevant if this is the enemies' heli hub
|
||||||
if ( currentsector != gGameExternalOptions.usEnemyHeliBaseSector )
|
if ( currentsector != SECTOR( gModSettings.usEnemyHeliBaseSectorX, gModSettings.usEnemyHeliBaseSectorY ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
INT16 id = -1;
|
INT16 id = -1;
|
||||||
@@ -1330,7 +1332,7 @@ void HandleEnemyHelicopterOnGroundGraphic( )
|
|||||||
if ( id >= ENEMYHELI_MAX )
|
if ( id >= ENEMYHELI_MAX )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
AddEnemyHelicopterToMaps( ((*it).sector_current == currentsector), ((*it).flagmask & ENEMYHELI_DESTROYED), gGameExternalOptions.sEnemyHeliBaseParkGridno[id], gGameExternalOptions.sEnemyHeliBaseParkTileIndex );
|
AddEnemyHelicopterToMaps( ((*it).sector_current == currentsector), ((*it).flagmask & ENEMYHELI_DESTROYED), gModSettings.sEnemyHeliBaseParkGridno[id], gModSettings.sEnemyHeliBaseParkTileIndex );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Invalidate rendering (if we have any helis at all)
|
// Invalidate rendering (if we have any helis at all)
|
||||||
@@ -1347,7 +1349,7 @@ void UpdateAndDamageEnemyHeliIfFound( INT16 sSectorX, INT16 sSectorY, INT16 sSec
|
|||||||
UINT8 currentsector = SECTOR( gWorldSectorX, gWorldSectorY );
|
UINT8 currentsector = SECTOR( gWorldSectorX, gWorldSectorY );
|
||||||
|
|
||||||
// only relevant if this is the enemies' heli hub
|
// only relevant if this is the enemies' heli hub
|
||||||
if ( currentsector != gGameExternalOptions.usEnemyHeliBaseSector )
|
if ( currentsector != SECTOR( gModSettings.usEnemyHeliBaseSectorX, gModSettings.usEnemyHeliBaseSectorY ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// helicopter tiles are multi-tiled. Search for the base gridno
|
// helicopter tiles are multi-tiled. Search for the base gridno
|
||||||
@@ -1390,7 +1392,7 @@ void UpdateAndDamageEnemyHeliIfFound( INT16 sSectorX, INT16 sSectorY, INT16 sSec
|
|||||||
|
|
||||||
if ( (*it).sector_current == currentsector )
|
if ( (*it).sector_current == currentsector )
|
||||||
{
|
{
|
||||||
if ( gGameExternalOptions.sEnemyHeliBaseParkGridno[id] == sBaseGridNo )
|
if ( gModSettings.sEnemyHeliBaseParkGridno[id] == sBaseGridNo )
|
||||||
{
|
{
|
||||||
if ( aDestroyed )
|
if ( aDestroyed )
|
||||||
{
|
{
|
||||||
|
|||||||
+3
-1
@@ -57,7 +57,9 @@ UINT32 ASDResourceCostMoney( UINT8 aType );
|
|||||||
|
|
||||||
// add resources to the AIs resource pool
|
// add resources to the AIs resource pool
|
||||||
void AddStrategicAIResources( UINT8 aType, INT32 aAmount );
|
void AddStrategicAIResources( UINT8 aType, INT32 aAmount );
|
||||||
void ASDReceiveOrderedStrategicAIResources( UINT8 aType, INT32 aAmount );
|
|
||||||
|
// when we receive an ordered shipment, reduce our backlog
|
||||||
|
void ASDReduceOrderedStrategicResources( UINT8 aType, INT32 aAmount );
|
||||||
|
|
||||||
// enemy helis
|
// enemy helis
|
||||||
class ENEMY_HELI
|
class ENEMY_HELI
|
||||||
|
|||||||
@@ -582,23 +582,31 @@ BOOLEAN ExecuteStrategicEvent( STRATEGICEVENT *pEvent )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case EVENT_ASD_PURCHASE_FUEL:
|
case EVENT_ASD_PURCHASE_FUEL:
|
||||||
if ( IsSectorEnemyControlled( SECTORX( gGameExternalOptions.usASDSupplyArrivalSector ), SECTORY( gGameExternalOptions.usASDSupplyArrivalSector ), 0 ) )
|
ASDReduceOrderedStrategicResources( ASD_FUEL, pEvent->uiParam );
|
||||||
ASDReceiveOrderedStrategicAIResources( ASD_FUEL, pEvent->uiParam );
|
|
||||||
|
if ( IsSectorEnemyControlled( gModSettings.usASDSupplyArrivalSectorX, gModSettings.usASDSupplyArrivalSectorY, 0 ) )
|
||||||
|
AddStrategicAIResources( ASD_FUEL, pEvent->uiParam );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EVENT_ASD_PURCHASE_JEEP:
|
case EVENT_ASD_PURCHASE_JEEP:
|
||||||
if ( IsSectorEnemyControlled( SECTORX( gGameExternalOptions.usASDSupplyArrivalSector ), SECTORY( gGameExternalOptions.usASDSupplyArrivalSector ), 0 ) )
|
ASDReduceOrderedStrategicResources( ASD_JEEP, pEvent->uiParam );
|
||||||
ASDReceiveOrderedStrategicAIResources( ASD_JEEP, pEvent->uiParam );
|
|
||||||
|
if ( IsSectorEnemyControlled( gModSettings.usASDSupplyArrivalSectorX, gModSettings.usASDSupplyArrivalSectorY, 0 ) )
|
||||||
|
AddStrategicAIResources( ASD_JEEP, pEvent->uiParam );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EVENT_ASD_PURCHASE_TANK:
|
case EVENT_ASD_PURCHASE_TANK:
|
||||||
if ( IsSectorEnemyControlled( SECTORX( gGameExternalOptions.usASDSupplyArrivalSector ), SECTORY( gGameExternalOptions.usASDSupplyArrivalSector ), 0 ) )
|
ASDReduceOrderedStrategicResources( ASD_TANK, pEvent->uiParam );
|
||||||
ASDReceiveOrderedStrategicAIResources( ASD_TANK, pEvent->uiParam );
|
|
||||||
|
if ( IsSectorEnemyControlled( gModSettings.usASDSupplyArrivalSectorX, gModSettings.usASDSupplyArrivalSectorY, 0 ) )
|
||||||
|
AddStrategicAIResources( ASD_TANK, pEvent->uiParam );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EVENT_ASD_PURCHASE_HELI:
|
case EVENT_ASD_PURCHASE_HELI:
|
||||||
if ( IsSectorEnemyControlled( SECTORX( gGameExternalOptions.usEnemyHeliBaseSector ), SECTORY( gGameExternalOptions.usEnemyHeliBaseSector ), 0 ) )
|
ASDReduceOrderedStrategicResources( ASD_HELI, pEvent->uiParam );
|
||||||
ASDReceiveOrderedStrategicAIResources( ASD_HELI, pEvent->uiParam );
|
|
||||||
|
if ( IsSectorEnemyControlled( gModSettings.usEnemyHeliBaseSectorX, gModSettings.usEnemyHeliBaseSectorY, 0 ) )
|
||||||
|
AddStrategicAIResources( ASD_HELI, pEvent->uiParam );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EVENT_ENEMY_HELI_UPDATE:
|
case EVENT_ENEMY_HELI_UPDATE:
|
||||||
|
|||||||
Reference in New Issue
Block a user