dded new character trait "Coward" (charrcter trait #13)

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8362 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2017-01-12 23:24:41 +00:00
parent 556ce68586
commit 3419fd1c5d
27 changed files with 86 additions and 91 deletions
+8
View File
@@ -432,6 +432,7 @@ void CreateSpeechEventsFromDynamicOpinionEvent( DynamicOpinionSpeechEvent aEvent
case(CHAR_TRAIT_PACIFIST) : agreemodifier_personal += 20; break;
case(CHAR_TRAIT_MALICIOUS) : agreemodifier_personal += -8; break;
case(CHAR_TRAIT_SHOWOFF) : agreemodifier_personal += -3; break;
case CHAR_TRAIT_COWARD: agreemodifier_personal += 5; break;
}
// if the event is positive, then we are much more likely to agree
@@ -566,6 +567,10 @@ void CreateSpeechEventsFromDynamicOpinionEvent( DynamicOpinionSpeechEvent aEvent
chance_to_reason += -2;
chance_to_agression += 2;
break;
case CHAR_TRAIT_COWARD:
chance_to_reason += 20;
chance_to_agression += -20;
break;
}
if ( Chance( chance_to_reason ) )
@@ -2189,6 +2194,9 @@ void HandleDynamicOpinionChange( SOLDIERTYPE* pSoldier, UINT8 usEvent, BOOLEAN f
break;
case OPINIONEVENT_ORDEREDRETREAT:
// cowards obviously won't complain about a retreat, pacifists are also okay with it
if ( DoesMercHavePersonality( pTeamSoldier, CHAR_TRAIT_COWARD ) || DoesMercHavePersonality( pTeamSoldier, CHAR_TRAIT_PACIFIST ) )
continue;
break;
case OPINIONEVENT_CIVKILLER:
+24 -4
View File
@@ -103,7 +103,9 @@ MoraleEvent gbMoraleEvent[NUM_MORALE_EVENTS] =
{ TACTICAL_MORALE_EVENT, 5}, //MORALE_GOOD_FOOD,
{ TACTICAL_MORALE_EVENT, -1}, //MORALE_BAD_FOOD,
{ TACTICAL_MORALE_EVENT, -5}, //MORALE_LOATHSOME_FOOD,
{TACTICAL_MORALE_EVENT, -8}, //MORALE_FEAR_OF_HEIGHTS,
{ TACTICAL_MORALE_EVENT, -8}, //MORALE_FEAR_OF_HEIGHTS,
{ TACTICAL_MORALE_EVENT, +5}, //MORALE_RAN_AWAY_COWARD,
{ TACTICAL_MORALE_EVENT, +5}, //MORALE_ENEMYGROUP_COWARD,
// added by anv
{ STRATEGIC_MORALE_EVENT, -5}, //MORALE_BUDDY_FIRED,
{ STRATEGIC_MORALE_EVENT, -8}, //MORALE_BUDDY_FIRED_ON_BAD_TERMS,
@@ -789,12 +791,16 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
if ( !HAS_SKILL_TRAIT( pTeamSoldier, COVERT_NT ) || ( (pTeamSoldier->usSoldierFlagMask & (SOLDIER_COVERT_CIV|SOLDIER_COVERT_SOLDIER)) == 0) )
{
// SANDRO - no penalty for pacifists to run away
if ( !DoesMercHavePersonality( pTeamSoldier, CHAR_TRAIT_PACIFIST ) )
if ( !DoesMercHavePersonality( pTeamSoldier, CHAR_TRAIT_PACIFIST ) && !DoesMercHavePersonality( pTeamSoldier, CHAR_TRAIT_COWARD ) )
HandleMoraleEventForSoldier( pTeamSoldier, MORALE_RAN_AWAY );
// Double morale drop for aggressive people
if ( DoesMercHavePersonality( pTeamSoldier, CHAR_TRAIT_AGGRESSIVE ) )
HandleMoraleEventForSoldier( pTeamSoldier, MORALE_RAN_AWAY );
// Flugente: cowards actually gain morale this way
if ( DoesMercHavePersonality( pTeamSoldier, CHAR_TRAIT_COWARD ) )
HandleMoraleEventForSoldier( pTeamSoldier, MORALE_RAN_AWAY_COWARD );
}
}
else
@@ -807,7 +813,8 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
HandleMoraleEventForSoldier( pTeamSoldier, MORALE_RAN_AWAY );
break;
case ATT_COWARD:
// no penalty - cowards are perfectly happy to avoid fights!
// Flugente: cowards actually gain morale this way
HandleMoraleEventForSoldier( pTeamSoldier, MORALE_RAN_AWAY_COWARD );
break;
default:
HandleMoraleEventForSoldier( pTeamSoldier, MORALE_RAN_AWAY );
@@ -1010,6 +1017,19 @@ void HandleMoraleEvent( SOLDIERTYPE *pSoldier, INT8 bMoraleEvent, INT16 sMapX, I
HandleMoraleEventForSoldier( pSoldier, bMoraleEvent );
break;
case MORALE_ENEMYGROUP_COWARD:
// affects coward in sector
ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID;
for ( pTeamSoldier = MercPtrs[ubLoop]; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ubLoop++, pTeamSoldier++ )
{
if ( pTeamSoldier->bActive && (pTeamSoldier->sSectorX == sMapX) && (pTeamSoldier->sSectorY == sMapY) && (pTeamSoldier->bSectorZ == bMapZ) )
{
if ( DoesMercHavePersonality( pTeamSoldier, CHAR_TRAIT_COWARD ) )
HandleMoraleEventForSoldier( pTeamSoldier, bMoraleEvent );
}
}
break;
case MORALE_BUDDY_FIRED:
case MORALE_BUDDY_FIRED_EARLY:
case MORALE_BUDDY_FIRED_ON_BAD_TERMS:
+2
View File
@@ -55,6 +55,8 @@ typedef enum
MORALE_BAD_FOOD,
MORALE_LOATHSOME_FOOD,
MORALE_FEAR_OF_HEIGHTS,
MORALE_RAN_AWAY_COWARD,
MORALE_ENEMYGROUP_COWARD,
// added by anv
MORALE_BUDDY_FIRED,
+1
View File
@@ -198,6 +198,7 @@ typedef enum
CHAR_TRAIT_PACIFIST,
CHAR_TRAIT_MALICIOUS,
CHAR_TRAIT_SHOWOFF,
CHAR_TRAIT_COWARD,
NUM_CHAR_TRAITS
} CharacterTraits;