From 3a0d52e8826b86baf933421a06862daeb93b97f5 Mon Sep 17 00:00:00 2001 From: Flugente Date: Fri, 25 Mar 2016 14:30:04 +0000 Subject: [PATCH] Built in safety check so that global offensives cannot be called more than once. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8123 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Strategic/Quests.h | 8 ++++++-- Strategic/Strategic AI.cpp | 5 +++++ Tactical/Campaign.cpp | 6 ++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Strategic/Quests.h b/Strategic/Quests.h index b7ed442f8..f41a73c4b 100644 --- a/Strategic/Quests.h +++ b/Strategic/Quests.h @@ -79,7 +79,7 @@ enum Quests QUEST_24 = 24, QUEST_KILL_DEIDRANNA = 25, - QUEST_KINGPIN_ANGEL_MARIA, // Flugente: new quest: if the palyer rescued Maria without implicating himself, Kingpin hires bounty hunters to kill them + QUEST_KINGPIN_ANGEL_MARIA, // Flugente: new quest: if the player rescued Maria without implicating himself, Kingpin hires bounty hunters to kill them #endif } ; /* @@ -566,7 +566,7 @@ enum Facts FACT_BOUNTYHUNTER_SECTOR_2, FACT_BOUNTYHUNTER_KILLED_1, FACT_BOUNTYHUNTER_KILLED_2, - + #ifdef JA2UB //Ja25 UB FACT_IMPORTED_SAVE_AND_MARY_WAS_DEAD = 400, @@ -595,6 +595,10 @@ enum Facts FACT_BIGGENS_ON_TEAM_AND_FAN_STOPPED,// 423 FACT_PLAYER_KNOWS_ABOUT_FAN_STOPPING,// 424 #endif + + // Flugente: for safety reasons, remember if we've already had an offensive + FACT_GLOBAL_OFFENSIVE_1_ORDERED, + FACT_GLOBAL_OFFENSIVE_2_ORDERED, } ; //** END FACTS ************************* diff --git a/Strategic/Strategic AI.cpp b/Strategic/Strategic AI.cpp index f2a96a024..1984c0077 100644 --- a/Strategic/Strategic AI.cpp +++ b/Strategic/Strategic AI.cpp @@ -5254,6 +5254,11 @@ void ExecuteStrategicAIAction( UINT16 usActionCode, INT16 sSectorX, INT16 sSecto giReinforcementPool = max( giReinforcementPool, 0 ); } + + if ( usActionCode == NPC_ACTION_GLOBAL_OFFENSIVE_1 ) + SetFactTrue( FACT_GLOBAL_OFFENSIVE_1_ORDERED ); + else if ( usActionCode == NPC_ACTION_GLOBAL_OFFENSIVE_2 ) + SetFactTrue( FACT_GLOBAL_OFFENSIVE_2_ORDERED ); } break; diff --git a/Tactical/Campaign.cpp b/Tactical/Campaign.cpp index 5d459c976..3546fcaeb 100644 --- a/Tactical/Campaign.cpp +++ b/Tactical/Campaign.cpp @@ -1708,12 +1708,14 @@ void HourlyProgressUpdate(void) // Flugente: on certain progress levels, the queen decides to initiate major attacks if ( ubCurrentProgress >= gGameExternalOptions.ubGameProgressOffensiveStage1 && gStrategicStatus.ubHighestProgress < gGameExternalOptions.ubGameProgressOffensiveStage1 ) { - ExecuteStrategicAIAction( NPC_ACTION_GLOBAL_OFFENSIVE_1, 0, 0 ); + if ( !CheckFact( FACT_GLOBAL_OFFENSIVE_1_ORDERED , 0) ) + ExecuteStrategicAIAction( NPC_ACTION_GLOBAL_OFFENSIVE_1, 0, 0 ); } if ( ubCurrentProgress >= gGameExternalOptions.ubGameProgressOffensiveStage2 && gStrategicStatus.ubHighestProgress < gGameExternalOptions.ubGameProgressOffensiveStage2 ) { - ExecuteStrategicAIAction( NPC_ACTION_GLOBAL_OFFENSIVE_2, 0, 0 ); + if ( !CheckFact( FACT_GLOBAL_OFFENSIVE_2_ORDERED, 0 ) ) + ExecuteStrategicAIAction( NPC_ACTION_GLOBAL_OFFENSIVE_2, 0, 0 ); } gStrategicStatus.ubHighestProgress = ubCurrentProgress;