mirror of
https://github.com/1dot13/source.git
synced 2026-08-12 14:10:23 +02:00
adjusted AI SAM site repairs:
- SAM sites are no longer repaired instantly when AI takes control of a sector - repairs begin 24 hours after the AI takes control, and repeat every 24 hours until the SAM is back at 100% - repairs can be interrupted by the player regaining control of the SAM site - time to repair a fully-destroyed SAM site depends on difficulty: novice takes 5 repair cycles, experienced takes 4, expert 3, and insane 2 - moved RepairSamSite() from ASD.h (where it was unused) into strategicmap.h - this sets up the existing but previously unused strategic event hook EVENT_SAMSITE_REPAIRED git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9349 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -5480,6 +5480,39 @@ BOOLEAN IsThisSectorASAMSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ )
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
void RepairSamSite( UINT16 strategicIndex )
|
||||
{
|
||||
INT8 repairAmount = 0;
|
||||
switch (gGameOptions.ubDifficultyLevel)
|
||||
{
|
||||
case DIF_LEVEL_EASY: repairAmount = AI_SAMSITE_REPAIR_EASY; break;
|
||||
case DIF_LEVEL_MEDIUM: repairAmount = AI_SAMSITE_REPAIR_MEDIUM; break;
|
||||
case DIF_LEVEL_HARD: repairAmount = AI_SAMSITE_REPAIR_HARD; break;
|
||||
case DIF_LEVEL_INSANE: repairAmount = AI_SAMSITE_REPAIR_INSANE; break;
|
||||
}
|
||||
|
||||
if ( StrategicMap[strategicIndex].fEnemyControlled && (StrategicMap[strategicIndex].usFlags & SAMSITE_REPAIR_ORDERED) && IsThisSectorASAMSector( GET_X_FROM_STRATEGIC_INDEX( strategicIndex ), GET_Y_FROM_STRATEGIC_INDEX( strategicIndex ), 0 ) )
|
||||
{
|
||||
if (StrategicMap[strategicIndex].bSAMCondition > 100 - repairAmount)
|
||||
StrategicMap[strategicIndex].bSAMCondition = 100;
|
||||
else
|
||||
StrategicMap[strategicIndex].bSAMCondition += repairAmount;
|
||||
|
||||
if (StrategicMap[strategicIndex].sSamHackStatus > 100 - repairAmount)
|
||||
StrategicMap[strategicIndex].sSamHackStatus = 100;
|
||||
else
|
||||
StrategicMap[strategicIndex].sSamHackStatus += repairAmount;
|
||||
|
||||
if (StrategicMap[strategicIndex].bSAMCondition < 100 || StrategicMap[strategicIndex].sSamHackStatus < 100)
|
||||
AddStrategicEvent(EVENT_SAMSITE_REPAIRED, GetWorldTotalMin() + 24 * 60, strategicIndex);
|
||||
else
|
||||
StrategicMap[strategicIndex].usFlags &= ~SAMSITE_REPAIR_ORDERED;
|
||||
|
||||
if (StrategicMap[strategicIndex].bSAMCondition >= MIN_CONDITION_FOR_SAM_SITE_TO_WORK)
|
||||
UpdateSAMDoneRepair( GET_X_FROM_STRATEGIC_INDEX( strategicIndex ), GET_Y_FROM_STRATEGIC_INDEX( strategicIndex ), 0 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// is this sector part of the town?
|
||||
BOOLEAN SectorIsPartOfTown( INT8 bTownId, INT16 sSectorX, INT16 sSectorY )
|
||||
|
||||
Reference in New Issue
Block a user