mirror of
https://github.com/1dot13/source.git
synced 2026-08-19 14:20:30 +02:00
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:
@@ -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
@@ -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:
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -198,6 +198,7 @@ typedef enum
|
||||
CHAR_TRAIT_PACIFIST,
|
||||
CHAR_TRAIT_MALICIOUS,
|
||||
CHAR_TRAIT_SHOWOFF,
|
||||
CHAR_TRAIT_COWARD,
|
||||
NUM_CHAR_TRAITS
|
||||
} CharacterTraits;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user