From 5844c7265c95da93e63af0c9fca11c64fc89b16d Mon Sep 17 00:00:00 2001 From: Flugente Date: Tue, 6 Nov 2012 23:28:13 +0000 Subject: [PATCH] if disguised mercs with the covert trait retreat from battle, it is assumed they were on a reconnaissance mission, thus they do not suffer a morale penalty for retreating git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5678 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Tactical/Morale.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Tactical/Morale.cpp b/Tactical/Morale.cpp index 073cd837..25def544 100644 --- a/Tactical/Morale.cpp +++ b/Tactical/Morale.cpp @@ -710,12 +710,16 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I { if ( gGameOptions.fNewTraitSystem ) { - // SANDRO - no penalty for pacifists to run away - if ( gMercProfiles[pTeamSoldier->ubProfile].bCharacterTrait != CHAR_TRAIT_PACIFIST ) - HandleMoraleEventForSoldier( pTeamSoldier, MORALE_RAN_AWAY ); - // Double morale drop for aggressive people - if ( gMercProfiles[pTeamSoldier->ubProfile].bCharacterTrait == CHAR_TRAIT_AGGRESSIVE ) - HandleMoraleEventForSoldier( pTeamSoldier, MORALE_RAN_AWAY ); + // Flugente: if we have the covert trait and are covert, we might simply be returning from a reconnaissance mission in enemy territory. No need for a morale drop in this case + if ( !HAS_SKILL_TRAIT( pTeamSoldier, COVERT_NT ) || ( pTeamSoldier->bSoldierFlagMask & (SOLDIER_COVERT_CIV|SOLDIER_COVERT_SOLDIER) == 0) ) + { + // SANDRO - no penalty for pacifists to run away + if ( gMercProfiles[pTeamSoldier->ubProfile].bCharacterTrait != CHAR_TRAIT_PACIFIST ) + HandleMoraleEventForSoldier( pTeamSoldier, MORALE_RAN_AWAY ); + // Double morale drop for aggressive people + if ( gMercProfiles[pTeamSoldier->ubProfile].bCharacterTrait == CHAR_TRAIT_AGGRESSIVE ) + HandleMoraleEventForSoldier( pTeamSoldier, MORALE_RAN_AWAY ); + } } else {