diff --git a/GameSettings.cpp b/GameSettings.cpp index 417c9e625..fe1afbb84 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -1289,6 +1289,10 @@ void LoadGameExternalOptions() gGameExternalOptions.fNoEnemyAutoReadyWeapon = iniReader.ReadInteger("Tactical Gameplay Settings", "NO_ENEMY_AUTOMATIC_WEAPON_READYING", 1, 0, 2); + + // enable schedules and decision making for any named npc regardless of their team + gGameExternalOptions.fAllNamedNpcsDecideAction = iniReader.ReadBoolean("Tactical Gameplay Settings", "ALL_NAMED_NPCS_DECIDE_ACTION", FALSE); + //################# Tactical Cover System Settings ################## // CPT: Cover System Settings diff --git a/GameSettings.h b/GameSettings.h index eb7004c09..3ca503ff5 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -344,6 +344,7 @@ typedef struct BOOLEAN fAllowInstantInterruptsOnSight; BOOLEAN fNoEnemyAutoReadyWeapon; + BOOLEAN fAllNamedNpcsDecideAction; UINT16 usAwardSpecialExpForQuests; diff --git a/TacticalAI/DecideAction.cpp b/TacticalAI/DecideAction.cpp index 05ababce2..b55d0a669 100644 --- a/TacticalAI/DecideAction.cpp +++ b/TacticalAI/DecideAction.cpp @@ -813,7 +813,7 @@ INT8 DecideActionGreen(SOLDIERTYPE *pSoldier) // if real-time, and not in the way, do nothing 90% of the time (for GUARDS!) // unless in water (could've started there), then we better swim to shore! - if (fCivilian) + if (fCivilian || (gGameExternalOptions.fAllNamedNpcsDecideAction && pSoldier->ubProfile != NO_PROFILE)) { // special stuff for civs @@ -1427,7 +1427,7 @@ INT8 DecideActionYellow(SOLDIERTYPE *pSoldier) return( ZombieDecideActionYellow(pSoldier) ); #endif - if (fCivilian) + if (fCivilian || (gGameExternalOptions.fAllNamedNpcsDecideAction && pSoldier->ubProfile != NO_PROFILE)) { if (pSoldier->flags.uiStatusFlags & SOLDIER_COWERING) {