mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +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:
@@ -3656,6 +3656,8 @@ void LoadMoraleSettings()
|
||||
gMoraleSettings.bValues[MORALE_BAD_FOOD] = iniReader.ReadInteger("Tactical Morale Settings","MORALE_BAD_FOOD", -1, -100, 100);
|
||||
gMoraleSettings.bValues[MORALE_LOATHSOME_FOOD] = iniReader.ReadInteger("Tactical Morale Settings","MORALE_LOATHSOME_FOOD", -5, -100, 100);
|
||||
gMoraleSettings.bValues[MORALE_FEAR_OF_HEIGHTS] = iniReader.ReadInteger( "Tactical Morale Settings", "MORALE_FEAR_OF_HEIGHTS", -8, -100, 100 );
|
||||
gMoraleSettings.bValues[MORALE_RAN_AWAY_COWARD] = iniReader.ReadInteger( "Tactical Morale Settings", "MORALE_RAN_AWAY_COWARD", 5, -100, 100 );
|
||||
gMoraleSettings.bValues[MORALE_ENEMYGROUP_COWARD] = iniReader.ReadInteger( "Tactical Morale Settings", "MORALE_ENEMYGROUP_COWARD", -3, -100, 100 );
|
||||
|
||||
gMoraleSettings.bValues[MORALE_KILLED_CIVILIAN] = iniReader.ReadInteger("Strategic Morale Settings","MORALE_KILLED_CIVILIAN", -5, -100, 100);
|
||||
gMoraleSettings.bValues[MORALE_BATTLE_WON] = iniReader.ReadInteger("Strategic Morale Settings","MORALE_BATTLE_WON", 4, -100, 100);
|
||||
|
||||
@@ -712,7 +712,6 @@ BOOLEAN IsBackGroundAllowed( UINT16 ubNumber )
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
switch ( iAttitude )
|
||||
{
|
||||
case CHAR_TRAIT_SOCIABLE:
|
||||
@@ -723,17 +722,6 @@ BOOLEAN IsBackGroundAllowed( UINT16 ubNumber )
|
||||
if ( zBackground[ ubNumber ].value[BG_LEADERSHIP] > 0 )
|
||||
return FALSE;
|
||||
break;
|
||||
case CHAR_TRAIT_OPTIMIST:
|
||||
case CHAR_TRAIT_ASSERTIVE:
|
||||
case CHAR_TRAIT_INTELLECTUAL:
|
||||
case CHAR_TRAIT_PRIMITIVE:
|
||||
case CHAR_TRAIT_AGGRESSIVE:
|
||||
case CHAR_TRAIT_PHLEGMATIC:
|
||||
case CHAR_TRAIT_DAUNTLESS:
|
||||
case CHAR_TRAIT_PACIFIST:
|
||||
case CHAR_TRAIT_MALICIOUS:
|
||||
case CHAR_TRAIT_SHOWOFF:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ INT32 giIMPCharacterTraitFinsihButtonImage;
|
||||
//image handle
|
||||
UINT32 guiIST_GreyGoldBox2;
|
||||
|
||||
MOUSE_REGION gMR_CharacterTraitHelpTextRegions[IMP_NUMBER_CHARACTER_TRAITS];
|
||||
MOUSE_REGION gMR_CharacterTraitHelpTextRegions[NUM_CHAR_TRAITS];
|
||||
|
||||
//*******************************************************************
|
||||
//
|
||||
@@ -102,7 +102,6 @@ void AssignCharacterTraitHelpText( UINT8 ubNumber );
|
||||
|
||||
void EnterIMPCharacterTrait( void )
|
||||
{
|
||||
// UINT32 ubCnt;
|
||||
VOBJECT_DESC VObjectDesc;
|
||||
|
||||
//add the skill trait buttons
|
||||
@@ -117,8 +116,6 @@ void EnterIMPCharacterTrait( void )
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
giIMPCharacterTraitFinsihButtonImage = LoadButtonImage( "LAPTOP\\button_5.sti" ,-1,0,-1,1,-1 );
|
||||
giIMPCharacterTraitFinsihButton = CreateIconAndTextButton( giIMPCharacterTraitFinsihButtonImage, pImpButtonText[ 13 ], FONT12ARIAL,
|
||||
FONT_WHITE, DEFAULT_SHADOW,
|
||||
@@ -126,9 +123,7 @@ void EnterIMPCharacterTrait( void )
|
||||
TEXT_CJUSTIFIED,
|
||||
LAPTOP_SCREEN_UL_X + ( 350 ), LAPTOP_SCREEN_WEB_UL_Y + ( 340 ), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
||||
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPCharacterTraitFinishCallback );
|
||||
|
||||
|
||||
|
||||
|
||||
SetButtonCursor( giIMPCharacterTraitFinsihButton, CURSOR_WWW);
|
||||
|
||||
//if we are not DONE and are just reviewing
|
||||
@@ -145,7 +140,7 @@ void EnterIMPCharacterTrait( void )
|
||||
// add regions for help texts
|
||||
UINT16 usPosX = IMP_CHARACTER_1ST_COLUMN_START_X + 62;
|
||||
UINT16 usPosY = IMP_CHARACTER_1ST_COLUMN_START_Y + 8;
|
||||
for( UINT8 ubCnt=0; ubCnt<(gGameOptions.fNewTraitSystem ? IMP_NUMBER_CHARACTER_TRAITS : IMP_NUMBER_ATTITUDES); ubCnt++ )
|
||||
for ( UINT8 ubCnt = 0; ubCnt<(gGameOptions.fNewTraitSystem ? NUM_CHAR_TRAITS : NUM_ATTITUDES); ++ubCnt )
|
||||
{
|
||||
MSYS_DefineRegion( &gMR_CharacterTraitHelpTextRegions[ubCnt], ( usPosX ), ( usPosY ),
|
||||
(usPosX + 156), ( usPosY + 17), MSYS_PRIORITY_HIGH,
|
||||
@@ -167,7 +162,6 @@ void EnterIMPCharacterTrait( void )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RenderIMPCharacterTrait( void )
|
||||
{
|
||||
//render the metal background graphic
|
||||
@@ -175,22 +169,19 @@ void RenderIMPCharacterTrait( void )
|
||||
|
||||
//Display the title
|
||||
if ( gGameOptions.fNewTraitSystem )
|
||||
DrawTextToScreen( gzIMPCharacterTraitText[IMP_NUMBER_CHARACTER_TRAITS], LAPTOP_SCREEN_UL_X - 111, LAPTOP_TITLE_Y, LAPTOP_TEXT_WIDTH, FONT14ARIAL, FONT_MCOLOR_WHITE, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
||||
DrawTextToScreen( gzIMPCharacterTraitText[NUM_CHAR_TRAITS], LAPTOP_SCREEN_UL_X - 111, LAPTOP_TITLE_Y, LAPTOP_TEXT_WIDTH, FONT14ARIAL, FONT_MCOLOR_WHITE, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
||||
else
|
||||
DrawTextToScreen( gzIMPAttitudesText[IMP_NUMBER_ATTITUDES], LAPTOP_SCREEN_UL_X - 111, LAPTOP_TITLE_Y, LAPTOP_TEXT_WIDTH, FONT14ARIAL, FONT_MCOLOR_WHITE, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
||||
DrawTextToScreen( gzIMPAttitudesText[NUM_ATTITUDES], LAPTOP_SCREEN_UL_X - 111, LAPTOP_TITLE_Y, LAPTOP_TEXT_WIDTH, FONT14ARIAL, FONT_MCOLOR_WHITE, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED );
|
||||
|
||||
IMPCharacterTraitDisplayCharacterTraits();
|
||||
}
|
||||
|
||||
|
||||
void ExitIMPCharacterTrait( void )
|
||||
{
|
||||
INT32 iCnt;
|
||||
|
||||
DeleteVideoObjectFromIndex( guiIST_GreyGoldBox2 );
|
||||
|
||||
//remove the skill buttons
|
||||
for(iCnt = 0; iCnt < (gGameOptions.fNewTraitSystem ? IMP_NUMBER_CHARACTER_TRAITS : IMP_NUMBER_ATTITUDES); iCnt++)
|
||||
for ( INT32 iCnt = 0; iCnt < (gGameOptions.fNewTraitSystem ? NUM_CHAR_TRAITS : NUM_ATTITUDES); ++iCnt )
|
||||
{
|
||||
//if there is a button allocated
|
||||
if( giIMPCharacterTraitAnswerButton[iCnt] != -1 )
|
||||
@@ -207,7 +198,6 @@ void ExitIMPCharacterTrait( void )
|
||||
UnloadButtonImage( giIMPCharacterTraitFinsihButtonImage );
|
||||
}
|
||||
|
||||
|
||||
void HandleIMPCharacterTrait( void )
|
||||
{
|
||||
if( gfIST_Redraw2 )
|
||||
@@ -221,13 +211,12 @@ void HandleIMPCharacterTrait( void )
|
||||
|
||||
void AddImpCharacterTraitButtons()
|
||||
{
|
||||
INT32 iCnt = 0;
|
||||
UINT16 usPosX, usPosY;
|
||||
|
||||
usPosX = IMP_CHARACTER_1ST_COLUMN_START_X;
|
||||
usPosY = IMP_CHARACTER_1ST_COLUMN_START_Y;
|
||||
|
||||
for(iCnt = 0; iCnt < (gGameOptions.fNewTraitSystem ? IMP_NUMBER_CHARACTER_TRAITS : IMP_NUMBER_ATTITUDES) ; iCnt++)
|
||||
for ( INT32 iCnt = 0; iCnt < (gGameOptions.fNewTraitSystem ? NUM_CHAR_TRAITS : NUM_ATTITUDES); ++iCnt )
|
||||
{
|
||||
//reset
|
||||
giIMPCharacterTraitAnswerButton[iCnt] = -1;
|
||||
@@ -287,8 +276,6 @@ void BtnIMPCharacterTraitAnswerCallback(GUI_BUTTON *btn,INT32 reason)
|
||||
|
||||
void HandleIMPCharacterTraitAnswers( UINT32 uiSkillPressed )
|
||||
{
|
||||
INT8 bCnt;
|
||||
|
||||
//if we are DONE and are just reviewing
|
||||
if( iCurrentProfileMode == IMP__FINISH )
|
||||
{
|
||||
@@ -296,13 +283,13 @@ void HandleIMPCharacterTraitAnswers( UINT32 uiSkillPressed )
|
||||
}
|
||||
|
||||
//reset all other buttons
|
||||
for( bCnt=0; bCnt < (gGameOptions.fNewTraitSystem ? IMP_NUMBER_CHARACTER_TRAITS : IMP_NUMBER_ATTITUDES); bCnt++ )
|
||||
for ( INT8 bCnt = 0; bCnt < (gGameOptions.fNewTraitSystem ? NUM_CHAR_TRAITS : NUM_ATTITUDES); ++bCnt )
|
||||
{
|
||||
gfCharacterTraitQuestions[ bCnt ] = FALSE;
|
||||
}
|
||||
|
||||
//make sure its a valid character trait
|
||||
if( uiSkillPressed > (UINT32)(gGameOptions.fNewTraitSystem ? IMP_NUMBER_CHARACTER_TRAITS : IMP_NUMBER_ATTITUDES) )
|
||||
if ( uiSkillPressed >( UINT32 )(gGameOptions.fNewTraitSystem ? NUM_CHAR_TRAITS : NUM_ATTITUDES) )
|
||||
{
|
||||
Assert( 0 );
|
||||
return;
|
||||
@@ -337,11 +324,8 @@ void HandleIMPCharacterTraitAnswers( UINT32 uiSkillPressed )
|
||||
|
||||
void HandleCharacterTraitButtonStates( )
|
||||
{
|
||||
INT8 bCnt;
|
||||
|
||||
for( bCnt=0; bCnt < (gGameOptions.fNewTraitSystem ? IMP_NUMBER_CHARACTER_TRAITS : IMP_NUMBER_ATTITUDES); bCnt++ )
|
||||
for ( INT8 bCnt = 0; bCnt < (gGameOptions.fNewTraitSystem ? NUM_CHAR_TRAITS : NUM_ATTITUDES); ++bCnt )
|
||||
{
|
||||
|
||||
//if the skill is selected ( ie depressed )
|
||||
if( gfCharacterTraitQuestions[ bCnt ] )
|
||||
{
|
||||
@@ -356,7 +340,6 @@ void HandleCharacterTraitButtonStates( )
|
||||
|
||||
void IMPCharacterTraitDisplayCharacterTraits()
|
||||
{
|
||||
INT8 bCnt;
|
||||
UINT16 usPosX, usPosY;
|
||||
UINT16 usBoxPosX, usBoxPosY;
|
||||
HVOBJECT hImageHandle;
|
||||
@@ -367,7 +350,7 @@ void IMPCharacterTraitDisplayCharacterTraits()
|
||||
usPosX = IMP_CHARACTER_1ST_COLUMN_START_X + IMP_CHARACTER_TRAIT__TEXT_OFFSET_X;
|
||||
usPosY = IMP_CHARACTER_1ST_COLUMN_START_Y + IMP_CHARACTER_TRAIT__TEXT_OFFSET_Y;
|
||||
|
||||
for( bCnt=0; bCnt<(gGameOptions.fNewTraitSystem ? IMP_NUMBER_CHARACTER_TRAITS : IMP_NUMBER_ATTITUDES); bCnt++ )
|
||||
for ( INT8 bCnt = 0; bCnt<(gGameOptions.fNewTraitSystem ? NUM_CHAR_TRAITS : NUM_ATTITUDES); ++bCnt )
|
||||
{
|
||||
usBoxPosX = usPosX - IMP_CHARACTER_TRAIT__GREY_BOX_OFFSET_X;
|
||||
usBoxPosY = usPosY - IMP_CHARACTER_TRAIT__GREY_BOX_OFFSET_Y;
|
||||
@@ -409,7 +392,6 @@ void IMPCharacterTraitDisplayCharacterTraits()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void BtnIMPCharacterTraitFinishCallback(GUI_BUTTON *btn,INT32 reason)
|
||||
{
|
||||
// btn callback for IMP personality quiz answer button
|
||||
@@ -443,7 +425,6 @@ void BtnIMPCharacterTraitFinishCallback(GUI_BUTTON *btn,INT32 reason)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BOOLEAN CameBackToCharacterTraitPageButNotFinished()
|
||||
{
|
||||
//if we are in a page that comes after this one
|
||||
@@ -459,21 +440,18 @@ BOOLEAN CameBackToCharacterTraitPageButNotFinished()
|
||||
|
||||
INT8 iChosenCharacterTrait()
|
||||
{
|
||||
INT8 bCnt;
|
||||
INT8 iCharacterTraitNumber = 0;
|
||||
|
||||
//loop through all the buttons and reset them
|
||||
for( bCnt=0; bCnt<(gGameOptions.fNewTraitSystem ? IMP_NUMBER_CHARACTER_TRAITS : IMP_NUMBER_ATTITUDES); bCnt++ )
|
||||
for ( INT8 bCnt = 0; bCnt<(gGameOptions.fNewTraitSystem ? NUM_CHAR_TRAITS : NUM_ATTITUDES); ++bCnt )
|
||||
{
|
||||
//if the trait is selected
|
||||
if( gfCharacterTraitQuestions[ bCnt ] )
|
||||
{
|
||||
iCharacterTraitNumber = bCnt;
|
||||
return bCnt;
|
||||
}
|
||||
}
|
||||
return( iCharacterTraitNumber );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void AssignCharacterTraitHelpText( UINT8 ubNumber )
|
||||
{
|
||||
@@ -484,6 +462,4 @@ void AssignCharacterTraitHelpText( UINT8 ubNumber )
|
||||
// Set region help text
|
||||
SetRegionFastHelpText( &(gMR_CharacterTraitHelpTextRegions[ubNumber]), apStr );
|
||||
SetRegionHelpEndCallback( &gMR_CharacterTraitHelpTextRegions[ubNumber], MSYS_NO_CALLBACK );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -8,41 +8,6 @@ void RenderIMPCharacterTrait( void );
|
||||
void ExitIMPCharacterTrait( void );
|
||||
void HandleIMPCharacterTrait( void );
|
||||
|
||||
//enum
|
||||
//{
|
||||
typedef enum
|
||||
{
|
||||
IMP_ATTITUDE_NORMAL = 0,
|
||||
IMP_ATTITUDE_FRIENDLY,
|
||||
IMP_ATTITUDE_LONER,
|
||||
IMP_ATTITUDE_OPTIMIST,
|
||||
IMP_ATTITUDE_PESSIMIST,
|
||||
IMP_ATTITUDE_AGGRESSIVE,
|
||||
IMP_ATTITUDE_ARROGANT,
|
||||
IMP_ATTITUDE_BIGSHOT,
|
||||
IMP_ATTITUDE_ASSHOLE,
|
||||
IMP_ATTITUDE_COWARD,
|
||||
IMP_NUMBER_ATTITUDES,
|
||||
};
|
||||
|
||||
typedef enum
|
||||
{
|
||||
IMP_CHARACTER_TRAIT_NORMAL = 0,
|
||||
IMP_CHARACTER_TRAIT_SOCIABLE,
|
||||
IMP_CHARACTER_TRAIT_LONER,
|
||||
IMP_CHARACTER_TRAIT_OPTIMIST,
|
||||
IMP_CHARACTER_TRAIT_ASSERTIVE,
|
||||
IMP_CHARACTER_TRAIT_INTELLECTUAL,
|
||||
IMP_CHARACTER_TRAIT_PRIMITIVE,
|
||||
IMP_CHARACTER_TRAIT_AGGRESSIVE,
|
||||
IMP_CHARACTER_TRAIT_PHLEGMATIC,
|
||||
IMP_CHARACTER_TRAIT_DAUNTLESS,
|
||||
IMP_CHARACTER_TRAIT_PACIFIST,
|
||||
IMP_CHARACTER_TRAIT_MALICIOUS,
|
||||
IMP_CHARACTER_TRAIT_SHOWOFF,
|
||||
IMP_NUMBER_CHARACTER_TRAITS,
|
||||
};
|
||||
|
||||
INT8 iChosenCharacterTrait();
|
||||
|
||||
STR16 gzIMPCharacterTraitText[];
|
||||
|
||||
@@ -4287,6 +4287,10 @@ void HandleIMPCharProfileResultsMessage( void)
|
||||
wcscpy(pString, gzIMPCharacterTraitText[CHAR_TRAIT_SHOWOFF]);
|
||||
iOffSet = IMP_ATTITUDE_ARROGANT;
|
||||
break;
|
||||
case CHAR_TRAIT_COWARD:
|
||||
wcscpy( pString, gzIMPCharacterTraitText[CHAR_TRAIT_COWARD] );
|
||||
iOffSet = IMP_ATTITUDE_COWARD;
|
||||
break;
|
||||
}
|
||||
|
||||
wcscat(pString, L". ±");
|
||||
|
||||
@@ -1075,6 +1075,19 @@ void PrepareForPreBattleInterface( GROUP *pPlayerDialogGroup, GROUP *pInitiating
|
||||
#endif
|
||||
SetMusicMode( MUSIC_TACTICAL_ENEMYPRESENT );
|
||||
|
||||
// Flugente: for cowards, check our teamsize and that of the enemy...
|
||||
if ( gGameOptions.fNewTraitSystem )
|
||||
{
|
||||
UINT16 enemyteamsize = NumNonPlayerTeamMembersInSector( pPlayerDialogGroup->ubSectorX, pPlayerDialogGroup->ubSectorY, ENEMY_TEAM );
|
||||
UINT16 militiateamsize = NumNonPlayerTeamMembersInSector( pPlayerDialogGroup->ubSectorX, pPlayerDialogGroup->ubSectorY, MILITIA_TEAM );
|
||||
UINT16 mercsteamsize = PlayerMercsInSector( pPlayerDialogGroup->ubSectorX, pPlayerDialogGroup->ubSectorY, pPlayerDialogGroup->ubSectorZ );
|
||||
|
||||
if ( enemyteamsize >= 2 * (militiateamsize + mercsteamsize) && mercsteamsize )
|
||||
{
|
||||
HandleMoraleEvent( NULL, MORALE_ENEMYGROUP_COWARD, pPlayerDialogGroup->ubSectorX, pPlayerDialogGroup->ubSectorY, pPlayerDialogGroup->ubSectorZ );
|
||||
}
|
||||
}
|
||||
|
||||
if( gfTacticalTraversal && pInitiatingBattleGroup == gpTacticalTraversalGroup ||
|
||||
pInitiatingBattleGroup && pInitiatingBattleGroup->usGroupTeam != OUR_TEAM &&
|
||||
pInitiatingBattleGroup->ubSectorX == gWorldSectorX &&
|
||||
|
||||
@@ -187,7 +187,7 @@ BOOLEAN MercIsOwedTooMuchMoney( UINT8 ubProfileID )
|
||||
BOOLEAN MercThinksPlayerIsInactiveTooLong( UINT8 ubProfileID )
|
||||
{
|
||||
UINT8 ubTolerance = gMoraleSettings.bValues[MORALE_PLAYER_INACTIVE_DAYS];
|
||||
if( gMercProfiles[ubProfileID].bCharacterTrait == CHAR_TRAIT_PACIFIST )
|
||||
if ( gMercProfiles[ubProfileID].bCharacterTrait == CHAR_TRAIT_PACIFIST || gMercProfiles[ubProfileID].bCharacterTrait == CHAR_TRAIT_COWARD )
|
||||
{
|
||||
ubTolerance = max(0, ubTolerance + gMoraleSettings.bValues[MORALE_PLAYER_INACTIVE_DAYS_PACIFIST_BONUS]);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -7797,6 +7797,7 @@ STR16 gzIMPCharacterTraitText[]=
|
||||
L"和平主义者",
|
||||
L"恶毒",
|
||||
L"爱炫耀",
|
||||
L"Coward", // TODO.Translate
|
||||
L"I.M.P. 性格特征",
|
||||
};
|
||||
|
||||
|
||||
@@ -7810,6 +7810,7 @@ STR16 gzIMPCharacterTraitText[]=
|
||||
L"Pacifist",
|
||||
L"Malicious",
|
||||
L"Show-off",
|
||||
L"Coward", // TODO.Translate
|
||||
L"I.M.P. Character Traits",
|
||||
};
|
||||
|
||||
|
||||
@@ -7798,6 +7798,7 @@ STR16 gzIMPCharacterTraitText[]=
|
||||
L"Pacifist",
|
||||
L"Malicious",
|
||||
L"Show-off",
|
||||
L"Coward",
|
||||
L"I.M.P. Character Traits",
|
||||
};
|
||||
|
||||
|
||||
@@ -7804,6 +7804,7 @@ STR16 gzIMPCharacterTraitText[]=
|
||||
L"Pacifiste",
|
||||
L"Malicieux",
|
||||
L"Frimeur",
|
||||
L"Coward", // TODO.Translate
|
||||
L"IMP : Traits de caractère",
|
||||
};
|
||||
|
||||
|
||||
@@ -7631,6 +7631,7 @@ STR16 gzIMPCharacterTraitText[]=
|
||||
L"Pazifistisch",
|
||||
L"Sadistisch",
|
||||
L"Machohaft", //LOOTF - alt. "Angeberisch"
|
||||
L"Feigling",
|
||||
L"B.S.E. - Charakterzüge",
|
||||
};
|
||||
|
||||
|
||||
@@ -7800,6 +7800,7 @@ STR16 gzIMPCharacterTraitText[]=
|
||||
L"Pacifist",
|
||||
L"Malicious",
|
||||
L"Show-off",
|
||||
L"Coward", // TODO.Translate
|
||||
L"I.M.P. Character Traits",
|
||||
};
|
||||
|
||||
|
||||
@@ -463,6 +463,7 @@ STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
L"优点:进行非战斗任务时士气会提升(除了训练民兵)。\n缺点:杀人不增加士气。",// L"A: He gains morale when on non-combat assignments (except training militia).\nD: Gains no morale for killing.",
|
||||
L"优点:攻击有更高的几率能造成受害者属性值降低,和更严重的创伤,同时提高自己的士气。\n缺点:与其他人交流是个问题,脱离战斗后士气也会快速下沉。",// L"A: Has bigger chance for inflicting stat loss and can inflict special painful wounds when able to\n Gains bonus morale for inflicting stat loss.\nD: Has penalty for communication with people and his morale sinks faster if not fighting.",
|
||||
L"优点:附近有异性雇佣兵时表现更佳。\n缺点:附近所有同性雇佣兵士气提升得慢。",// L"A: Has better performance when there are some mercs of opposite gender nearby.\nD: Morale of other mercs of the same gender grows slower if nearby.",
|
||||
L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPDisabilitiesHelpTexts[]=
|
||||
|
||||
@@ -462,6 +462,7 @@ STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
L"A: Gains morale on non-combat assignments (except training militia).\nD: Gains no morale for killing.",
|
||||
L"A: Higher chance for inflicting stat loss, which may also inflict special painful wounds.\n Gains bonus morale for inflicting stat loss.\nD: Penalty in communicating with people and morale sinks faster while not in battle.",
|
||||
L"A: Better performance when mercs of opposite gender are nearby.\nD: Morale for mercs of the same gender grows slower when nearby.",
|
||||
L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPDisabilitiesHelpTexts[]=
|
||||
|
||||
@@ -463,6 +463,7 @@ STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
L"A: Gains morale on non-combat assignments (except training militia).\nD: Gains no morale for killing.",
|
||||
L"A: Higher chance for inflicting stat loss, which may also inflict special painful wounds.\n Gains bonus morale for inflicting stat loss.\nD: Penalty in communicating with people and morale sinks faster while not in battle.",
|
||||
L"A: Better performance when mercs of opposite gender are nearby.\nD: Morale for mercs of the same gender grows slower when nearby.",
|
||||
L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.",
|
||||
};
|
||||
|
||||
STR16 gzIMPDisabilitiesHelpTexts[]=
|
||||
|
||||
@@ -461,6 +461,7 @@ STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
L"+ : Gagne du moral lorsque vous faites une mission qui n'est pas liée au combat (excepté l'entraînement de milice).\n- : Pas de gains lorsque vous tuez quelqu'un.",
|
||||
L"+ : A plus de chance d'infliger des pertes de stats sur l'ennemi, qui peut aussi infliger de lourds dégâts.\n Gagne du moral lorsque vous infligez des pertes de stats sur l'ennemi.\n- : A une pénalité pour la communication et son moral baisse plus rapidement lorsqu'il ne combat pas.",
|
||||
L"+ : A de meilleures performances lorsqu'un certain type d'ennemi est opposé à lui.\n- : Les mercenaires qui possèdent le même type que l'ennemi gagne moins de moral.",
|
||||
L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -464,6 +464,7 @@ STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
L"V: Erhält Moralzuwachs für nichtkämpferische Tätigkeiten (Außnahme: Milizausbildung).\nN: Erhält keinen Moralzuwachs für das Töten von Gegnern.",
|
||||
L"V: Hat eine höhere Chance, Statusschäden anzurichten, und kann besonders fiese Wunden verursachen.\n Erhält mehr Moral für erfolgreiche Statusschäden.\nN: Kann schlechter mit Leuten reden. Die Moral sinkt ohne Kampf schneller.",
|
||||
L"V: Ist leistungsfähiger, wenn Söldner des anderen Geschlechts in der Nähe sind.\nN: Die Moral anderer naher Söldner des gleichen Geschlechts steigt langsamer.",
|
||||
L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPDisabilitiesHelpTexts[]=
|
||||
|
||||
@@ -460,6 +460,7 @@ STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
L"A: Gains morale on non-combat assignments (except training militia).\nD: Gains no morale for killing.",
|
||||
L"A: Higher chance for inflicting stat loss, which may also inflict special painful wounds.\n Gains bonus morale for inflicting stat loss.\nD: Penalty in communicating with people and morale sinks faster while not in battle.",
|
||||
L"A: Better performance when mercs of opposite gender are nearby.\nD: Morale for mercs of the same gender grows slower when nearby.",
|
||||
L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPDisabilitiesHelpTexts[]=
|
||||
|
||||
@@ -462,6 +462,7 @@ STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
L"A: Gains morale on non-combat assignments (except training militia).\nD: Gains no morale for killing.",
|
||||
L"A: Higher chance for inflicting stat loss, which may also inflict special painful wounds.\n Gains bonus morale for inflicting stat loss.\nD: Penalty in communicating with people and morale sinks faster while not in battle.",
|
||||
L"A: Better performance when mercs of opposite gender are nearby.\nD: Morale for mercs of the same gender grows slower when nearby.",
|
||||
L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPDisabilitiesHelpTexts[]=
|
||||
|
||||
@@ -463,6 +463,7 @@ STR16 gzIMPNewCharacterTraitsHelpTexts[]=
|
||||
L"плюсы: Боевой дух повышается при выполнении небоевых заданий (кроме тренировки ополчения).\n \nминусы: Убийство врагов не повышает боевой дух.", //Pacifist
|
||||
L"плюсы: Имеет больший шанс нанести болезненные раны и травмы, приводящие к ухудшению параметров.\nБоевой дух повышается при нанесении таких ран.\n \nминусы: Имеет проблемы в общении и быстро теряет боевой дух, если не сражается.", //Malicious
|
||||
L"плюсы: Лучше работает в компании представителей противоположного пола.\n \nминусы: Боевой дух бойцов того же пола в его присутствии растёт медленнее.", //Show-off
|
||||
L"A: Gains morale when retreating.\nD: Loses morale when encountering numerically superior enemy forces.", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPDisabilitiesHelpTexts[]=
|
||||
|
||||
@@ -7815,6 +7815,7 @@ STR16 gzIMPCharacterTraitText[]=
|
||||
L"Pacyfista",
|
||||
L"Podstępny",
|
||||
L"Gwiazdor",
|
||||
L"Coward", // TODO.Translate
|
||||
L"Cechy charakteru I.M.P.-a",
|
||||
};
|
||||
|
||||
|
||||
@@ -7798,6 +7798,7 @@ STR16 gzIMPCharacterTraitText[]=
|
||||
L"Миролюбивый", //Pacifist
|
||||
L"Злобный", //Malicious
|
||||
L"Хвастун", //Show-off
|
||||
L"Coward", // TODO.Translate
|
||||
L"I.M.P.: Личностные качества", //I.M.P. Character Traits
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user