mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
More buddies/foes (by anv)
- Currently MercProfiles.xml contains 5 records for buddies and 5 for foes + 1 per "learn to", but in code only 2 first + "learn to" are handled. I changed it so all possible buddies and foes can be used, and it's possible to add their specific like/dislike quotes to quote .edts. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6538 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+77
-3
@@ -102,7 +102,7 @@
|
||||
#define SIZE_MERC_ADDITIONAL_INFO 160 * 2
|
||||
|
||||
#define MERC_ANNOYED_WONT_CONTACT_TIME_MINUTES 6 * 60
|
||||
#define NUMBER_HATED_MERCS_ONTEAM 3
|
||||
#define NUMBER_HATED_MERCS_ONTEAM 6
|
||||
|
||||
#define STATS_X IMAGE_OFFSET_X + 121
|
||||
#define STATS_Y IMAGE_OFFSET_Y + 66
|
||||
@@ -3350,7 +3350,17 @@ BOOLEAN CanMercBeHired()
|
||||
for(i=0; i< NUMBER_HATED_MERCS_ONTEAM; i++)
|
||||
{
|
||||
//see if someone the merc hates is on the team
|
||||
bMercID = gMercProfiles[ gbCurrentSoldier ].bHated[i];
|
||||
if( i< NUMBER_HATED_MERCS_ONTEAM - 1 )
|
||||
{
|
||||
bMercID = gMercProfiles[ gbCurrentSoldier ].bHated[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
bMercID = gMercProfiles[ gbCurrentSoldier ].bLearnToHate;
|
||||
// ignore learn to hate, if he's not a foe yet
|
||||
if( gMercProfiles[ gbCurrentSoldier ].bLearnToHateCount > 0 )
|
||||
continue;
|
||||
}
|
||||
|
||||
if( bMercID < 0 )
|
||||
continue;
|
||||
@@ -3368,7 +3378,17 @@ BOOLEAN CanMercBeHired()
|
||||
for(j=0; j< NUMBER_HATED_MERCS_ONTEAM; j++)
|
||||
{
|
||||
//if a buddy is on the team, the merc will join
|
||||
bMercID = gMercProfiles[ gbCurrentSoldier ].bBuddy[j];
|
||||
if( i< NUMBER_HATED_MERCS_ONTEAM - 1 )
|
||||
{
|
||||
bMercID = gMercProfiles[ gbCurrentSoldier ].bBuddy[j];
|
||||
}
|
||||
else
|
||||
{
|
||||
bMercID = gMercProfiles[ gbCurrentSoldier ].bLearnToLike;
|
||||
// ignore learn to like, if he's not a buddy yet
|
||||
if( gMercProfiles[ gbCurrentSoldier ].bLearnToLikeCount > 0 )
|
||||
continue;
|
||||
}
|
||||
|
||||
if( bMercID < 0 )
|
||||
continue;
|
||||
@@ -3383,6 +3403,18 @@ BOOLEAN CanMercBeHired()
|
||||
{
|
||||
InitVideoFaceTalking(gbCurrentSoldier, QUOTE_JOINING_CAUSE_BUDDY_2_ON_TEAM);
|
||||
}
|
||||
else if(j == 2 )
|
||||
{
|
||||
InitVideoFaceTalking(gbCurrentSoldier, QUOTE_JOINING_CAUSE_BUDDY_3_ON_TEAM);
|
||||
}
|
||||
else if(j == 3 )
|
||||
{
|
||||
InitVideoFaceTalking(gbCurrentSoldier, QUOTE_JOINING_CAUSE_BUDDY_4_ON_TEAM);
|
||||
}
|
||||
else if(j == 4 )
|
||||
{
|
||||
InitVideoFaceTalking(gbCurrentSoldier, QUOTE_JOINING_CAUSE_BUDDY_5_ON_TEAM);
|
||||
}
|
||||
else
|
||||
{
|
||||
InitVideoFaceTalking(gbCurrentSoldier, QUOTE_JOINING_CAUSE_LEARNED_TO_LIKE_BUDDY_ON_TEAM);
|
||||
@@ -3423,6 +3455,48 @@ BOOLEAN CanMercBeHired()
|
||||
fRetVal = TRUE;
|
||||
}
|
||||
}
|
||||
else if( i == 2)
|
||||
{
|
||||
if( gMercProfiles[ gbCurrentSoldier ].bHatedTime[ i ] < 24 )
|
||||
{
|
||||
WaitForMercToFinishTalkingOrUserToClick();
|
||||
InitVideoFaceTalking(gbCurrentSoldier, QUOTE_HATE_MERC_3_ON_TEAM);
|
||||
fRetVal = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
InitVideoFaceTalking(gbCurrentSoldier, QUOTE_PERSONALITY_BIAS_WITH_MERC_3);
|
||||
fRetVal = TRUE;
|
||||
}
|
||||
}
|
||||
else if( i == 3)
|
||||
{
|
||||
if( gMercProfiles[ gbCurrentSoldier ].bHatedTime[ i ] < 24 )
|
||||
{
|
||||
WaitForMercToFinishTalkingOrUserToClick();
|
||||
InitVideoFaceTalking(gbCurrentSoldier, QUOTE_HATE_MERC_4_ON_TEAM);
|
||||
fRetVal = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
InitVideoFaceTalking(gbCurrentSoldier, QUOTE_PERSONALITY_BIAS_WITH_MERC_4);
|
||||
fRetVal = TRUE;
|
||||
}
|
||||
}
|
||||
else if( i == 4)
|
||||
{
|
||||
if( gMercProfiles[ gbCurrentSoldier ].bHatedTime[ i ] < 24 )
|
||||
{
|
||||
WaitForMercToFinishTalkingOrUserToClick();
|
||||
InitVideoFaceTalking(gbCurrentSoldier, QUOTE_HATE_MERC_5_ON_TEAM);
|
||||
fRetVal = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
InitVideoFaceTalking(gbCurrentSoldier, QUOTE_PERSONALITY_BIAS_WITH_MERC_5);
|
||||
fRetVal = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
WaitForMercToFinishTalkingOrUserToClick();
|
||||
|
||||
@@ -510,9 +510,19 @@ BOOLEAN WillMercRenew( SOLDIERTYPE *pSoldier, BOOLEAN fSayQuote )
|
||||
|
||||
// find out if the merc has a buddy working for the player
|
||||
// loop through the list of people the merc considers buddies
|
||||
for(i=0; i<5; i++)
|
||||
for(i=0; i<6; i++)
|
||||
{
|
||||
bMercID = gMercProfiles[ pSoldier->ubProfile ].bBuddy[i];
|
||||
if( i<5 )
|
||||
{
|
||||
bMercID = gMercProfiles[ pSoldier->ubProfile ].bBuddy[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
bMercID = gMercProfiles[ pSoldier->ubProfile ].bLearnToLike;
|
||||
// ignore learn to like, if he's not a buddy yet
|
||||
if( gMercProfiles[ pSoldier->ubProfile ].bLearnToLikeCount > 0 )
|
||||
continue;
|
||||
}
|
||||
|
||||
if( bMercID < 0 )
|
||||
continue;
|
||||
@@ -526,6 +536,12 @@ BOOLEAN WillMercRenew( SOLDIERTYPE *pSoldier, BOOLEAN fSayQuote )
|
||||
usBuddyQuote = QUOTE_RENEWING_CAUSE_BUDDY_1_ON_TEAM;
|
||||
else if( i == 1 )
|
||||
usBuddyQuote = QUOTE_RENEWING_CAUSE_BUDDY_2_ON_TEAM;
|
||||
else if( i == 2 )
|
||||
usBuddyQuote = QUOTE_RENEWING_CAUSE_BUDDY_3_ON_TEAM;
|
||||
else if( i == 3 )
|
||||
usBuddyQuote = QUOTE_RENEWING_CAUSE_BUDDY_4_ON_TEAM;
|
||||
else if( i == 4 )
|
||||
usBuddyQuote = QUOTE_RENEWING_CAUSE_BUDDY_5_ON_TEAM;
|
||||
else
|
||||
usBuddyQuote = QUOTE_RENEWING_CAUSE_LEARNED_TO_LIKE_BUDDY_ON_TEAM;
|
||||
|
||||
@@ -541,7 +557,7 @@ BOOLEAN WillMercRenew( SOLDIERTYPE *pSoldier, BOOLEAN fSayQuote )
|
||||
|
||||
// see if someone the merc hates is on the team
|
||||
// loop through the list of people the merc hates
|
||||
for(i=0; i<2; i++)
|
||||
for(i=0; i<5; i++)
|
||||
{
|
||||
bMercID = gMercProfiles[ pSoldier->ubProfile ].bHated[ i ];
|
||||
|
||||
@@ -570,9 +586,14 @@ BOOLEAN WillMercRenew( SOLDIERTYPE *pSoldier, BOOLEAN fSayQuote )
|
||||
{
|
||||
if( i == 0 )
|
||||
usReasonQuote = QUOTE_HATE_MERC_1_ON_TEAM_WONT_RENEW;
|
||||
else
|
||||
else if( i == 1 )
|
||||
usReasonQuote = QUOTE_HATE_MERC_2_ON_TEAM_WONT_RENEW;
|
||||
|
||||
else if( i == 2 )
|
||||
usReasonQuote = QUOTE_HATE_MERC_3_ON_TEAM_WONT_RENEW;
|
||||
else if( i == 3 )
|
||||
usReasonQuote = QUOTE_HATE_MERC_4_ON_TEAM_WONT_RENEW;
|
||||
else if( i == 4 )
|
||||
usReasonQuote = QUOTE_HATE_MERC_5_ON_TEAM_WONT_RENEW;
|
||||
// use first hated in case there are multiple
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -954,12 +954,15 @@ void UpdateBuddyAndHatedCounters( void )
|
||||
|
||||
ubOtherProfileID = pOtherSoldier->ubProfile;
|
||||
|
||||
for ( iLoop = 0; iLoop < 4; iLoop++ )
|
||||
for ( iLoop = 0; iLoop < 7; iLoop++ )
|
||||
{
|
||||
switch( iLoop )
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
if (pProfile->bHated[iLoop] == ubOtherProfileID)
|
||||
{
|
||||
// arrgs, we're on assignment with the person we loathe!
|
||||
@@ -978,10 +981,31 @@ void UpdateBuddyAndHatedCounters( void )
|
||||
{
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_HATED_MERC_ONE );
|
||||
}
|
||||
else
|
||||
else if (iLoop == 1)
|
||||
{
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_HATED_MERC_TWO );
|
||||
}
|
||||
else if (iLoop == 2)
|
||||
{
|
||||
if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_AIM_HATED_MERC_THREE );
|
||||
else
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_NON_AIM_HATED_MERC_THREE );
|
||||
}
|
||||
else if (iLoop == 3)
|
||||
{
|
||||
if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_AIM_HATED_MERC_FOUR );
|
||||
else
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_NON_AIM_HATED_MERC_FOUR );
|
||||
}
|
||||
else if (iLoop == 4)
|
||||
{
|
||||
if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_AIM_HATED_MERC_FIVE );
|
||||
else
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_NON_AIM_HATED_MERC_FIVE );
|
||||
}
|
||||
StopTimeCompression();
|
||||
}
|
||||
else if ( pProfile->bHatedCount[iLoop] == 0 )
|
||||
@@ -994,10 +1018,22 @@ void UpdateBuddyAndHatedCounters( void )
|
||||
{
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_MERC_QUIT_HATED1 );
|
||||
}
|
||||
else
|
||||
else if (iLoop == 1)
|
||||
{
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_MERC_QUIT_HATED2 );
|
||||
}
|
||||
else if (iLoop == 2)
|
||||
{
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_MERC_QUIT_HATED3 );
|
||||
}
|
||||
else if (iLoop == 3)
|
||||
{
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_MERC_QUIT_HATED4 );
|
||||
}
|
||||
else if (iLoop == 4)
|
||||
{
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_MERC_QUIT_HATED5 );
|
||||
}
|
||||
|
||||
// Leave now! ( handle equipment too )....
|
||||
TacticalCharacterDialogueWithSpecialEvent( pSoldier, 0, DIALOGUE_SPECIAL_EVENT_CONTRACT_ENDING, 0,0 );
|
||||
@@ -1011,10 +1047,31 @@ void UpdateBuddyAndHatedCounters( void )
|
||||
{
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_HATED_MERC_ONE );
|
||||
}
|
||||
else
|
||||
else if (iLoop == 1)
|
||||
{
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_HATED_MERC_TWO );
|
||||
}
|
||||
else if (iLoop == 2)
|
||||
{
|
||||
if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_AIM_HATED_MERC_THREE );
|
||||
else
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_NON_AIM_HATED_MERC_THREE );
|
||||
}
|
||||
else if (iLoop == 3)
|
||||
{
|
||||
if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_AIM_HATED_MERC_FOUR );
|
||||
else
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_NON_AIM_HATED_MERC_FOUR );
|
||||
}
|
||||
else if (iLoop == 4)
|
||||
{
|
||||
if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_AIM_HATED_MERC_FIVE );
|
||||
else
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_NON_AIM_HATED_MERC_FIVE );
|
||||
}
|
||||
pProfile->ubTimeTillNextHatedComplaint = TIME_BETWEEN_HATED_COMPLAINTS - 1;
|
||||
}
|
||||
}
|
||||
@@ -1043,15 +1100,36 @@ void UpdateBuddyAndHatedCounters( void )
|
||||
{
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_HATED_MERC_ONE );
|
||||
}
|
||||
else
|
||||
else if (iLoop == 1)
|
||||
{
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_HATED_MERC_TWO );
|
||||
}
|
||||
else if (iLoop == 2)
|
||||
{
|
||||
if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_AIM_HATED_MERC_THREE );
|
||||
else
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_NON_AIM_HATED_MERC_THREE );
|
||||
}
|
||||
else if (iLoop == 3)
|
||||
{
|
||||
if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_AIM_HATED_MERC_FOUR );
|
||||
else
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_NON_AIM_HATED_MERC_FOUR );
|
||||
}
|
||||
else if (iLoop == 4)
|
||||
{
|
||||
if( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_AIM_HATED_MERC_FIVE );
|
||||
else
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_NON_AIM_HATED_MERC_FIVE );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case 5:
|
||||
if (pProfile->bLearnToHate == ubOtherProfileID)
|
||||
{
|
||||
if ( pProfile->bLearnToHateCount > 0 )
|
||||
@@ -1071,8 +1149,9 @@ void UpdateBuddyAndHatedCounters( void )
|
||||
else if (pProfile->bLearnToHateCount == 0)
|
||||
{
|
||||
// set as bHated[2];
|
||||
// anv: nope, we don't want to overwrite possible standard foe, instead added extra check to WhichHated(), CanMercBeHired()
|
||||
if (OKToCheckOpinion(ubOtherProfileID)) {
|
||||
pProfile->bHated[2] = pProfile->bLearnToHate;
|
||||
//pProfile->bHated[2] = pProfile->bLearnToHate;
|
||||
pProfile->bMercOpinion[ubOtherProfileID] = HATED_OPINION;
|
||||
}
|
||||
#ifdef JA2UB
|
||||
@@ -1125,15 +1204,16 @@ void UpdateBuddyAndHatedCounters( void )
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
case 6:
|
||||
if (pProfile->bLearnToLikeCount > 0 && pProfile->bLearnToLike == ubOtherProfileID)
|
||||
{
|
||||
pProfile->bLearnToLikeCount--;
|
||||
if (pProfile->bLearnToLikeCount == 0)
|
||||
{
|
||||
// add to liked!
|
||||
// anv: nope, we don't want to overwrite possible standard buddy, instead added extra check to WhichBuddy(), DoesMercHaveABuddyOnTheTeam(), CanMercBeHired()
|
||||
if (OKToCheckOpinion(ubOtherProfileID)) {
|
||||
pProfile->bBuddy[2] = pProfile->bLearnToLike;
|
||||
//pProfile->bBuddy[2] = pProfile->bLearnToLike;
|
||||
pProfile->bMercOpinion[ubOtherProfileID] = BUDDY_OPINION;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,6 +122,27 @@ void HandleSoldierDeadComments( SOLDIERTYPE *pSoldier )
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_BUDDY_TWO_KILLED );
|
||||
break;
|
||||
case 2:
|
||||
// buddy #3 died!
|
||||
if( pTeamSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_AIM_BUDDY_THREE_KILLED );
|
||||
else
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_NON_AIM_BUDDY_THREE_KILLED );
|
||||
break;
|
||||
case 3:
|
||||
// buddy #4 died!
|
||||
if( pTeamSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_AIM_BUDDY_FOUR_KILLED );
|
||||
else
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_NON_AIM_BUDDY_FOUR_KILLED );
|
||||
break;
|
||||
case 4:
|
||||
// buddy #5 died!
|
||||
if( pTeamSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_AIM_BUDDY_FIVE_KILLED );
|
||||
else
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_NON_AIM_BUDDY_FIVE_KILLED );
|
||||
break;
|
||||
case 5:
|
||||
// learn to like buddy died!
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_LEARNED_TO_LIKE_MERC_KILLED );
|
||||
break;
|
||||
|
||||
+62
-16
@@ -120,26 +120,38 @@ enum DialogQuoteIDs
|
||||
QUOTE_SPARE2,
|
||||
|
||||
//80
|
||||
QUOTE_REPUTATION_REFUSAL,
|
||||
QUOTE_DEATH_RATE_REFUSAL, //= 99,
|
||||
QUOTE_REPUTATION_REFUSAL, //80
|
||||
QUOTE_NON_AIM_BUDDY_THREE_KILLED = QUOTE_REPUTATION_REFUSAL,
|
||||
QUOTE_DEATH_RATE_REFUSAL, //= 81,
|
||||
QUOTE_NON_AIM_BUDDY_FOUR_KILLED = QUOTE_DEATH_RATE_REFUSAL,
|
||||
QUOTE_LAME_REFUSAL, //= 82,
|
||||
QUOTE_WONT_RENEW_CONTRACT_LAME_REFUSAL, // ARM: now unused
|
||||
QUOTE_ANSWERING_MACHINE_MSG,
|
||||
QUOTE_DEPARTING_COMMENT_CONTRACT_NOT_RENEWED_OR_48_OR_MORE,
|
||||
QUOTE_HATE_MERC_1_ON_TEAM,// = 100,
|
||||
QUOTE_HATE_MERC_2_ON_TEAM,// = 101,
|
||||
QUOTE_LEARNED_TO_HATE_MERC_ON_TEAM,// = 102,
|
||||
QUOTE_NON_AIM_BUDDY_FIVE_KILLED = QUOTE_LAME_REFUSAL,
|
||||
QUOTE_WONT_RENEW_CONTRACT_LAME_REFUSAL, //=83,
|
||||
QUOTE_NON_AIM_HATED_MERC_THREE = QUOTE_WONT_RENEW_CONTRACT_LAME_REFUSAL,
|
||||
QUOTE_ANSWERING_MACHINE_MSG, //= 84,
|
||||
QUOTE_NON_AIM_HATED_MERC_FOUR = QUOTE_ANSWERING_MACHINE_MSG,
|
||||
QUOTE_DEPARTING_COMMENT_CONTRACT_NOT_RENEWED_OR_48_OR_MORE, //=85,
|
||||
QUOTE_NON_AIM_HATED_MERC_FIVE = QUOTE_DEPARTING_COMMENT_CONTRACT_NOT_RENEWED_OR_48_OR_MORE,
|
||||
QUOTE_HATE_MERC_1_ON_TEAM,// = 86,
|
||||
QUOTE_NON_AIM_BUDDY_3_GOOD = QUOTE_HATE_MERC_1_ON_TEAM,
|
||||
QUOTE_HATE_MERC_2_ON_TEAM,// = 87,
|
||||
QUOTE_NON_AIM_BUDDY_4_GOOD = QUOTE_HATE_MERC_2_ON_TEAM,
|
||||
QUOTE_LEARNED_TO_HATE_MERC_ON_TEAM,// = 88,
|
||||
QUOTE_NON_AIM_BUDDY_5_GOOD = QUOTE_LEARNED_TO_HATE_MERC_ON_TEAM,
|
||||
QUOTE_CONTRACTS_OVER,// = 89,
|
||||
|
||||
QUOTE_MERC_QUIT_HATED3 = QUOTE_CONTRACTS_OVER,
|
||||
|
||||
//90
|
||||
QUOTE_ACCEPT_CONTRACT_RENEWAL,
|
||||
QUOTE_CONTRACT_ACCEPTANCE,
|
||||
QUOTE_JOINING_CAUSE_BUDDY_1_ON_TEAM,// = 103,
|
||||
QUOTE_JOINING_CAUSE_BUDDY_2_ON_TEAM,// = 104,
|
||||
QUOTE_JOINING_CAUSE_LEARNED_TO_LIKE_BUDDY_ON_TEAM,// = 105,
|
||||
QUOTE_ACCEPT_CONTRACT_RENEWAL, // =90,
|
||||
QUOTE_MERC_QUIT_HATED4 = QUOTE_ACCEPT_CONTRACT_RENEWAL,
|
||||
QUOTE_CONTRACT_ACCEPTANCE,// =91,
|
||||
QUOTE_MERC_QUIT_HATED5 = QUOTE_CONTRACT_ACCEPTANCE,
|
||||
QUOTE_JOINING_CAUSE_BUDDY_1_ON_TEAM,// = 92,
|
||||
QUOTE_JOINING_CAUSE_BUDDY_2_ON_TEAM,// = 93,
|
||||
QUOTE_JOINING_CAUSE_LEARNED_TO_LIKE_BUDDY_ON_TEAM,// = 94,
|
||||
QUOTE_REFUSAL_RENEW_DUE_TO_MORALE,// = 95,
|
||||
QUOTE_PRECEDENT_TO_REPEATING_ONESELF,// = 106,
|
||||
QUOTE_REFUSAL_TO_JOIN_LACK_OF_FUNDS,// = 107,
|
||||
QUOTE_PRECEDENT_TO_REPEATING_ONESELF,// = 96,
|
||||
QUOTE_REFUSAL_TO_JOIN_LACK_OF_FUNDS,// = 97,
|
||||
QUOTE_DEPART_COMMET_CONTRACT_NOT_RENEWED_OR_TERMINATED_UNDER_48,// = 98,
|
||||
QUOTE_DEATH_RATE_RENEWAL,
|
||||
|
||||
@@ -168,6 +180,40 @@ enum DialogQuoteIDs
|
||||
QUOTE_ENTER_SECTOR_WITH_FAN_2,
|
||||
#endif
|
||||
|
||||
QUOTE_AIM_BUDDY_THREE_KILLED = 119,
|
||||
|
||||
//120
|
||||
QUOTE_AIM_BUDDY_FOUR_KILLED,
|
||||
QUOTE_AIM_BUDDY_FIVE_KILLED,
|
||||
QUOTE_AIM_HATED_MERC_THREE,
|
||||
QUOTE_AIM_HATED_MERC_FOUR,
|
||||
QUOTE_AIM_HATED_MERC_FIVE,
|
||||
QUOTE_HATED_3_ARRIVES,
|
||||
QUOTE_HATED_4_ARRIVES,
|
||||
QUOTE_HATED_5_ARRIVES,
|
||||
QUOTE_AIM_BUDDY_3_GOOD,
|
||||
QUOTE_AIM_BUDDY_4_GOOD,
|
||||
|
||||
//130
|
||||
QUOTE_AIM_BUDDY_5_GOOD,
|
||||
QUOTE_HATE_MERC_3_ON_TEAM,
|
||||
QUOTE_HATE_MERC_4_ON_TEAM,
|
||||
QUOTE_HATE_MERC_5_ON_TEAM,
|
||||
QUOTE_JOINING_CAUSE_BUDDY_3_ON_TEAM,
|
||||
QUOTE_JOINING_CAUSE_BUDDY_4_ON_TEAM,
|
||||
QUOTE_JOINING_CAUSE_BUDDY_5_ON_TEAM,
|
||||
QUOTE_HATE_MERC_3_ON_TEAM_WONT_RENEW,
|
||||
QUOTE_HATE_MERC_4_ON_TEAM_WONT_RENEW,
|
||||
QUOTE_HATE_MERC_5_ON_TEAM_WONT_RENEW,
|
||||
|
||||
//140
|
||||
QUOTE_RENEWING_CAUSE_BUDDY_3_ON_TEAM,
|
||||
QUOTE_RENEWING_CAUSE_BUDDY_4_ON_TEAM,
|
||||
QUOTE_RENEWING_CAUSE_BUDDY_5_ON_TEAM,
|
||||
QUOTE_PERSONALITY_BIAS_WITH_MERC_3,
|
||||
QUOTE_PERSONALITY_BIAS_WITH_MERC_4,
|
||||
QUOTE_PERSONALITY_BIAS_WITH_MERC_5,
|
||||
|
||||
|
||||
|
||||
} ;
|
||||
|
||||
@@ -716,6 +716,15 @@ void HandleMercArrivesQuotes( SOLDIERTYPE *pSoldier )
|
||||
case 1:
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_HATED_2_ARRIVES );
|
||||
break;
|
||||
case 2:
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_HATED_3_ARRIVES );
|
||||
break;
|
||||
case 3:
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_HATED_4_ARRIVES );
|
||||
break;
|
||||
case 4:
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_HATED_5_ARRIVES );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
+1
-1
@@ -1244,7 +1244,7 @@ void HourlyMoraleUpdate( void )
|
||||
if (bOpinion == HATED_OPINION)
|
||||
{
|
||||
bHated = WhichHated( pSoldier->ubProfile, pOtherSoldier->ubProfile );
|
||||
if ( bHated >= 2 )
|
||||
if ( bHated >= 5 )
|
||||
{
|
||||
// learn to hate which has become full-blown hatred, full strength
|
||||
fFoundHated = TRUE;
|
||||
|
||||
+31
-7
@@ -3371,13 +3371,34 @@ void HandlePlayerTeamMemberDeath( SOLDIERTYPE *pSoldier )
|
||||
// buddy #2 died!
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_BUDDY_TWO_KILLED );
|
||||
break;
|
||||
case 2:
|
||||
// learn to like buddy died!
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_LEARNED_TO_LIKE_MERC_KILLED );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
// buddy #3 died!
|
||||
if( pTeamSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_AIM_BUDDY_THREE_KILLED );
|
||||
else
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_NON_AIM_BUDDY_THREE_KILLED );
|
||||
break;
|
||||
case 3:
|
||||
// buddy #4 died!
|
||||
if( pTeamSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_AIM_BUDDY_FOUR_KILLED );
|
||||
else
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_NON_AIM_BUDDY_FOUR_KILLED );
|
||||
break;
|
||||
case 4:
|
||||
// buddy #5 died!
|
||||
if( pTeamSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_AIM_BUDDY_FIVE_KILLED );
|
||||
else
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_NON_AIM_BUDDY_FIVE_KILLED );
|
||||
break;
|
||||
case 5:
|
||||
// learn to like buddy died!
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_LEARNED_TO_LIKE_MERC_KILLED );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#ifdef JA2UB
|
||||
#else
|
||||
// anv: handle Speck witnessing his employee death
|
||||
@@ -7075,6 +7096,9 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated )
|
||||
pTeamSoldier->usQuoteSaidExtFlags &= (~SOLDIER_QUOTE_SAID_BUDDY_1_WITNESSED);
|
||||
pTeamSoldier->usQuoteSaidExtFlags &= (~SOLDIER_QUOTE_SAID_BUDDY_2_WITNESSED);
|
||||
pTeamSoldier->usQuoteSaidExtFlags &= (~SOLDIER_QUOTE_SAID_BUDDY_3_WITNESSED);
|
||||
pTeamSoldier->usQuoteSaidExtFlags &= (~SOLDIER_QUOTE_SAID_BUDDY_4_WITNESSED);
|
||||
pTeamSoldier->usQuoteSaidExtFlags &= (~SOLDIER_QUOTE_SAID_BUDDY_5_WITNESSED);
|
||||
pTeamSoldier->usQuoteSaidExtFlags &= (~SOLDIER_QUOTE_SAID_BUDDY_6_WITNESSED);
|
||||
|
||||
// toggle stealth mode....
|
||||
gfUIStanceDifferent = TRUE;
|
||||
|
||||
@@ -840,6 +840,27 @@ INT32 SkillCheck( SOLDIERTYPE * pSoldier, INT8 bReason, INT8 bChanceMod )
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_BUDDY_2_GOOD );
|
||||
break;
|
||||
case 2:
|
||||
// buddy #3 did something good!
|
||||
if( pTeamSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_AIM_BUDDY_3_GOOD );
|
||||
else
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_NON_AIM_BUDDY_3_GOOD );
|
||||
break;
|
||||
case 3:
|
||||
// buddy #4 did something good!
|
||||
if( pTeamSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_AIM_BUDDY_4_GOOD );
|
||||
else
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_NON_AIM_BUDDY_4_GOOD );
|
||||
break;
|
||||
case 4:
|
||||
// buddy #5 did something good!
|
||||
if( pTeamSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_AIM_BUDDY_5_GOOD );
|
||||
else
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_NON_AIM_BUDDY_5_GOOD );
|
||||
break;
|
||||
case 5:
|
||||
// learn to like buddy did something good!
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_LEARNED_TO_LIKE_WITNESSED );
|
||||
break;
|
||||
|
||||
@@ -3457,6 +3457,27 @@ void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo,
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if ( pTeamSoldier->usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_BUDDY_4_WITNESSED )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
if ( pTeamSoldier->usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_BUDDY_5_WITNESSED )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
|
||||
case 5:
|
||||
if ( pTeamSoldier->usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_BUDDY_6_WITNESSED )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// TO LOS check to killed
|
||||
@@ -3502,9 +3523,33 @@ void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo,
|
||||
break;
|
||||
|
||||
case 2:
|
||||
usQuoteNum = QUOTE_LEARNED_TO_LIKE_WITNESSED;
|
||||
if( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
usQuoteNum = QUOTE_AIM_BUDDY_3_GOOD;
|
||||
else
|
||||
usQuoteNum = QUOTE_NON_AIM_BUDDY_3_GOOD;
|
||||
MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_3_WITNESSED;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
usQuoteNum = QUOTE_AIM_BUDDY_4_GOOD;
|
||||
else
|
||||
usQuoteNum = QUOTE_NON_AIM_BUDDY_4_GOOD;
|
||||
MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_4_WITNESSED;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
if( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
usQuoteNum = QUOTE_AIM_BUDDY_5_GOOD;
|
||||
else
|
||||
usQuoteNum = QUOTE_NON_AIM_BUDDY_5_GOOD;
|
||||
MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_5_WITNESSED;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
usQuoteNum = QUOTE_LEARNED_TO_LIKE_WITNESSED;
|
||||
MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_6_WITNESSED;
|
||||
break;
|
||||
}
|
||||
TacticalCharacterDialogue( MercPtrs[ ubMercsInSector[ ubChosenMerc ] ], usQuoteNum );
|
||||
}
|
||||
@@ -3529,7 +3574,7 @@ void HandleKilledQuote( SOLDIERTYPE *pKilledSoldier, SOLDIERTYPE *pKillerSoldier
|
||||
BOOLEAN fCanWeSeeLocation = ( SoldierTo3DLocationLineOfSightTest( pKillerSoldier, sGridNo, bLevel, 3, TRUE, CALC_FROM_ALL_DIRS ) != 0 );
|
||||
|
||||
// Are we killing mike?
|
||||
if ( pKilledSoldier->ubProfile == MIKE && pKillerSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
|
||||
if ( pKilledSoldier->ubProfile == MIKE && ( pKillerSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC || ( pKillerSoldier->ubWhatKindOfMercAmI == MERC_TYPE__MERC && gMercProfiles[pKillerSoldier->ubProfile].bLearnToHate == 255 ) ) )
|
||||
{
|
||||
// Can we see?
|
||||
if ( fCanWeSeeLocation )
|
||||
|
||||
@@ -152,6 +152,9 @@ INT8 NUM_SKILL_TRAITS( SOLDIERTYPE * pSoldier, UINT8 uiSkillTraitNumber );
|
||||
#define SOLDIER_QUOTE_SAID_BUDDY_1_WITNESSED 0x0040
|
||||
#define SOLDIER_QUOTE_SAID_BUDDY_2_WITNESSED 0x0080
|
||||
#define SOLDIER_QUOTE_SAID_BUDDY_3_WITNESSED 0x0100
|
||||
#define SOLDIER_QUOTE_SAID_BUDDY_4_WITNESSED 0x0400
|
||||
#define SOLDIER_QUOTE_SAID_BUDDY_5_WITNESSED 0x0800
|
||||
#define SOLDIER_QUOTE_SAID_BUDDY_6_WITNESSED 0x1000
|
||||
|
||||
#ifdef JA2UB
|
||||
#define SOLDIER_QUOTE_SAID_THOUGHT_KILLED_YOU 0x0200
|
||||
|
||||
@@ -834,6 +834,9 @@ BOOLEAN LoadMercProfiles(void)
|
||||
// ARM: this is also being done inside the profile editor, but put it here too, so this project's code makes sense
|
||||
gMercProfiles[ uiLoop ].bHatedCount[0] = gMercProfiles[ uiLoop ].bHatedTime[0];
|
||||
gMercProfiles[ uiLoop ].bHatedCount[1] = gMercProfiles[ uiLoop ].bHatedTime[1];
|
||||
gMercProfiles[ uiLoop ].bHatedCount[2] = gMercProfiles[ uiLoop ].bHatedTime[2];
|
||||
gMercProfiles[ uiLoop ].bHatedCount[3] = gMercProfiles[ uiLoop ].bHatedTime[3];
|
||||
gMercProfiles[ uiLoop ].bHatedCount[4] = gMercProfiles[ uiLoop ].bHatedTime[4];
|
||||
gMercProfiles[ uiLoop ].bLearnToHateCount = gMercProfiles[ uiLoop ].bLearnToHateTime;
|
||||
gMercProfiles[ uiLoop ].bLearnToLikeCount = gMercProfiles[ uiLoop ].bLearnToLikeTime;
|
||||
|
||||
@@ -2034,13 +2037,17 @@ INT8 WhichBuddy( UINT8 ubCharNum, UINT8 ubBuddy )
|
||||
|
||||
pProfile = &( gMercProfiles[ ubCharNum ] );
|
||||
|
||||
for (bLoop = 0; bLoop < 3; bLoop++)
|
||||
for (bLoop = 0; bLoop < 5; bLoop++)
|
||||
{
|
||||
if ( pProfile->bBuddy[bLoop] == ubBuddy )
|
||||
{
|
||||
return( bLoop );
|
||||
}
|
||||
}
|
||||
if( pProfile->bLearnToLike == ubBuddy && pProfile->bLearnToLikeCount == 0 )
|
||||
{
|
||||
return( 5 );
|
||||
}
|
||||
return( -1 );
|
||||
}
|
||||
|
||||
@@ -2051,13 +2058,17 @@ INT8 WhichHated( UINT8 ubCharNum, UINT8 ubHated )
|
||||
|
||||
pProfile = &( gMercProfiles[ ubCharNum ] );
|
||||
|
||||
for (bLoop = 0; bLoop < 3; bLoop++)
|
||||
for (bLoop = 0; bLoop < 5; bLoop++)
|
||||
{
|
||||
if ( pProfile->bHated[bLoop] == ubHated )
|
||||
{
|
||||
return( bLoop );
|
||||
}
|
||||
}
|
||||
if( pProfile->bLearnToHate == ubHated && pProfile->bLearnToHateCount == 0 )
|
||||
{
|
||||
return( 5 );
|
||||
}
|
||||
return( -1 );
|
||||
}
|
||||
|
||||
@@ -2161,10 +2172,20 @@ BOOLEAN DoesMercHaveABuddyOnTheTeam( UINT8 ubMercID )
|
||||
UINT8 bBuddyID;
|
||||
|
||||
// loop through the list of people the merc is buddies with
|
||||
for(ubCnt=0; ubCnt< 3; ubCnt++)
|
||||
for(ubCnt=0; ubCnt< 6; ubCnt++)
|
||||
{
|
||||
//see if the merc has a buddy on the team
|
||||
bBuddyID = gMercProfiles[ ubMercID ].bBuddy[ubCnt];
|
||||
if( ubCnt<5 )
|
||||
{
|
||||
bBuddyID = gMercProfiles[ ubMercID ].bBuddy[ubCnt];
|
||||
}
|
||||
else
|
||||
{
|
||||
bBuddyID = gMercProfiles[ ubMercID ].bLearnToLike;
|
||||
// ignore learn to like, if he's not a buddy yet
|
||||
if( gMercProfiles[ ubMercID ].bLearnToLikeCount > 0 )
|
||||
continue;
|
||||
}
|
||||
|
||||
//If its not a valid 'buddy'
|
||||
if( bBuddyID < 0 )
|
||||
|
||||
@@ -2439,7 +2439,7 @@ void ManSeesMan(SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent, INT32 sOppGridNo,
|
||||
gfMorrisShouldSayHi = TRUE;
|
||||
}
|
||||
#else
|
||||
if ( (pOpponent->ubProfile == MIKE) && ( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC ) && !(pSoldier->usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_EXT_MIKE) )
|
||||
if ( (pOpponent->ubProfile == MIKE) && ( pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC || pSoldier->ubWhatKindOfMercAmI == MERC_TYPE__MERC ) && !(pSoldier->usQuoteSaidExtFlags & SOLDIER_QUOTE_SAID_EXT_MIKE) )
|
||||
{
|
||||
if (gfMikeShouldSayHi == FALSE)
|
||||
{
|
||||
|
||||
@@ -364,8 +364,8 @@ typedef enum
|
||||
ONEQUARTER_EVOLUTION,
|
||||
} CharacterEvolution;
|
||||
|
||||
#define BUDDY_MERC( prof, bud ) ((prof)->bBuddy[0] == (bud) || (prof)->bBuddy[1] == (bud) || (prof)->bBuddy[2] == (bud) )
|
||||
#define HATED_MERC( prof, hat ) ((prof)->bHated[0] == (hat) || (prof)->bHated[1] == (hat) || (prof)->bHated[2] == (hat) )
|
||||
#define BUDDY_MERC( prof, bud ) ((prof)->bBuddy[0] == (bud) || (prof)->bBuddy[1] == (bud) || (prof)->bBuddy[2] == (bud) || (prof)->bBuddy[3] == (bud) || (prof)->bBuddy[4] == (bud) || ( (prof)->bLearnToLike == (bud) && (prof)->bLearnToLikeCount == 0 ) )
|
||||
#define HATED_MERC( prof, hat ) ((prof)->bHated[0] == (hat) || (prof)->bHated[1] == (hat) || (prof)->bHated[2] == (hat) || (prof)->bHated[3] == (hat) || (prof)->bHated[4] == (hat) || ( (prof)->bLearnToHate == (hat) && (prof)->bLearnToHateCount == 0 ) )
|
||||
|
||||
#define BUDDY_OPINION +25
|
||||
#define HATED_OPINION -25
|
||||
|
||||
Reference in New Issue
Block a user