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:
Wanne
2013-10-28 20:02:19 +00:00
parent decc986649
commit 08e6bc4aca
14 changed files with 415 additions and 50 deletions
+77 -3
View File
@@ -102,7 +102,7 @@
#define SIZE_MERC_ADDITIONAL_INFO 160 * 2 #define SIZE_MERC_ADDITIONAL_INFO 160 * 2
#define MERC_ANNOYED_WONT_CONTACT_TIME_MINUTES 6 * 60 #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_X IMAGE_OFFSET_X + 121
#define STATS_Y IMAGE_OFFSET_Y + 66 #define STATS_Y IMAGE_OFFSET_Y + 66
@@ -3350,7 +3350,17 @@ BOOLEAN CanMercBeHired()
for(i=0; i< NUMBER_HATED_MERCS_ONTEAM; i++) for(i=0; i< NUMBER_HATED_MERCS_ONTEAM; i++)
{ {
//see if someone the merc hates is on the team //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 ) if( bMercID < 0 )
continue; continue;
@@ -3368,7 +3378,17 @@ BOOLEAN CanMercBeHired()
for(j=0; j< NUMBER_HATED_MERCS_ONTEAM; j++) for(j=0; j< NUMBER_HATED_MERCS_ONTEAM; j++)
{ {
//if a buddy is on the team, the merc will join //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 ) if( bMercID < 0 )
continue; continue;
@@ -3383,6 +3403,18 @@ BOOLEAN CanMercBeHired()
{ {
InitVideoFaceTalking(gbCurrentSoldier, QUOTE_JOINING_CAUSE_BUDDY_2_ON_TEAM); 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 else
{ {
InitVideoFaceTalking(gbCurrentSoldier, QUOTE_JOINING_CAUSE_LEARNED_TO_LIKE_BUDDY_ON_TEAM); InitVideoFaceTalking(gbCurrentSoldier, QUOTE_JOINING_CAUSE_LEARNED_TO_LIKE_BUDDY_ON_TEAM);
@@ -3423,6 +3455,48 @@ BOOLEAN CanMercBeHired()
fRetVal = TRUE; 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 else
{ {
WaitForMercToFinishTalkingOrUserToClick(); WaitForMercToFinishTalkingOrUserToClick();
+26 -5
View File
@@ -510,9 +510,19 @@ BOOLEAN WillMercRenew( SOLDIERTYPE *pSoldier, BOOLEAN fSayQuote )
// find out if the merc has a buddy working for the player // find out if the merc has a buddy working for the player
// loop through the list of people the merc considers buddies // 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 ) if( bMercID < 0 )
continue; continue;
@@ -526,6 +536,12 @@ BOOLEAN WillMercRenew( SOLDIERTYPE *pSoldier, BOOLEAN fSayQuote )
usBuddyQuote = QUOTE_RENEWING_CAUSE_BUDDY_1_ON_TEAM; usBuddyQuote = QUOTE_RENEWING_CAUSE_BUDDY_1_ON_TEAM;
else if( i == 1 ) else if( i == 1 )
usBuddyQuote = QUOTE_RENEWING_CAUSE_BUDDY_2_ON_TEAM; 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 else
usBuddyQuote = QUOTE_RENEWING_CAUSE_LEARNED_TO_LIKE_BUDDY_ON_TEAM; 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 // see if someone the merc hates is on the team
// loop through the list of people the merc hates // 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 ]; bMercID = gMercProfiles[ pSoldier->ubProfile ].bHated[ i ];
@@ -570,9 +586,14 @@ BOOLEAN WillMercRenew( SOLDIERTYPE *pSoldier, BOOLEAN fSayQuote )
{ {
if( i == 0 ) if( i == 0 )
usReasonQuote = QUOTE_HATE_MERC_1_ON_TEAM_WONT_RENEW; usReasonQuote = QUOTE_HATE_MERC_1_ON_TEAM_WONT_RENEW;
else else if( i == 1 )
usReasonQuote = QUOTE_HATE_MERC_2_ON_TEAM_WONT_RENEW; 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 // use first hated in case there are multiple
break; break;
} }
+89 -9
View File
@@ -954,12 +954,15 @@ void UpdateBuddyAndHatedCounters( void )
ubOtherProfileID = pOtherSoldier->ubProfile; ubOtherProfileID = pOtherSoldier->ubProfile;
for ( iLoop = 0; iLoop < 4; iLoop++ ) for ( iLoop = 0; iLoop < 7; iLoop++ )
{ {
switch( iLoop ) switch( iLoop )
{ {
case 0: case 0:
case 1: case 1:
case 2:
case 3:
case 4:
if (pProfile->bHated[iLoop] == ubOtherProfileID) if (pProfile->bHated[iLoop] == ubOtherProfileID)
{ {
// arrgs, we're on assignment with the person we loathe! // arrgs, we're on assignment with the person we loathe!
@@ -978,10 +981,31 @@ void UpdateBuddyAndHatedCounters( void )
{ {
TacticalCharacterDialogue( pSoldier, QUOTE_HATED_MERC_ONE ); TacticalCharacterDialogue( pSoldier, QUOTE_HATED_MERC_ONE );
} }
else else if (iLoop == 1)
{ {
TacticalCharacterDialogue( pSoldier, QUOTE_HATED_MERC_TWO ); 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(); StopTimeCompression();
} }
else if ( pProfile->bHatedCount[iLoop] == 0 ) else if ( pProfile->bHatedCount[iLoop] == 0 )
@@ -994,10 +1018,22 @@ void UpdateBuddyAndHatedCounters( void )
{ {
TacticalCharacterDialogue( pSoldier, QUOTE_MERC_QUIT_HATED1 ); TacticalCharacterDialogue( pSoldier, QUOTE_MERC_QUIT_HATED1 );
} }
else else if (iLoop == 1)
{ {
TacticalCharacterDialogue( pSoldier, QUOTE_MERC_QUIT_HATED2 ); 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 ).... // Leave now! ( handle equipment too )....
TacticalCharacterDialogueWithSpecialEvent( pSoldier, 0, DIALOGUE_SPECIAL_EVENT_CONTRACT_ENDING, 0,0 ); TacticalCharacterDialogueWithSpecialEvent( pSoldier, 0, DIALOGUE_SPECIAL_EVENT_CONTRACT_ENDING, 0,0 );
@@ -1011,10 +1047,31 @@ void UpdateBuddyAndHatedCounters( void )
{ {
TacticalCharacterDialogue( pSoldier, QUOTE_HATED_MERC_ONE ); TacticalCharacterDialogue( pSoldier, QUOTE_HATED_MERC_ONE );
} }
else else if (iLoop == 1)
{ {
TacticalCharacterDialogue( pSoldier, QUOTE_HATED_MERC_TWO ); 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; pProfile->ubTimeTillNextHatedComplaint = TIME_BETWEEN_HATED_COMPLAINTS - 1;
} }
} }
@@ -1043,15 +1100,36 @@ void UpdateBuddyAndHatedCounters( void )
{ {
TacticalCharacterDialogue( pSoldier, QUOTE_HATED_MERC_ONE ); TacticalCharacterDialogue( pSoldier, QUOTE_HATED_MERC_ONE );
} }
else else if (iLoop == 1)
{ {
TacticalCharacterDialogue( pSoldier, QUOTE_HATED_MERC_TWO ); 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; break;
case 2: case 5:
if (pProfile->bLearnToHate == ubOtherProfileID) if (pProfile->bLearnToHate == ubOtherProfileID)
{ {
if ( pProfile->bLearnToHateCount > 0 ) if ( pProfile->bLearnToHateCount > 0 )
@@ -1071,8 +1149,9 @@ void UpdateBuddyAndHatedCounters( void )
else if (pProfile->bLearnToHateCount == 0) else if (pProfile->bLearnToHateCount == 0)
{ {
// set as bHated[2]; // 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)) { if (OKToCheckOpinion(ubOtherProfileID)) {
pProfile->bHated[2] = pProfile->bLearnToHate; //pProfile->bHated[2] = pProfile->bLearnToHate;
pProfile->bMercOpinion[ubOtherProfileID] = HATED_OPINION; pProfile->bMercOpinion[ubOtherProfileID] = HATED_OPINION;
} }
#ifdef JA2UB #ifdef JA2UB
@@ -1125,15 +1204,16 @@ void UpdateBuddyAndHatedCounters( void )
} }
} }
break; break;
case 3: case 6:
if (pProfile->bLearnToLikeCount > 0 && pProfile->bLearnToLike == ubOtherProfileID) if (pProfile->bLearnToLikeCount > 0 && pProfile->bLearnToLike == ubOtherProfileID)
{ {
pProfile->bLearnToLikeCount--; pProfile->bLearnToLikeCount--;
if (pProfile->bLearnToLikeCount == 0) if (pProfile->bLearnToLikeCount == 0)
{ {
// add to liked! // 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)) { if (OKToCheckOpinion(ubOtherProfileID)) {
pProfile->bBuddy[2] = pProfile->bLearnToLike; //pProfile->bBuddy[2] = pProfile->bLearnToLike;
pProfile->bMercOpinion[ubOtherProfileID] = BUDDY_OPINION; pProfile->bMercOpinion[ubOtherProfileID] = BUDDY_OPINION;
} }
} }
+21
View File
@@ -122,6 +122,27 @@ void HandleSoldierDeadComments( SOLDIERTYPE *pSoldier )
TacticalCharacterDialogue( pTeamSoldier, QUOTE_BUDDY_TWO_KILLED ); TacticalCharacterDialogue( pTeamSoldier, QUOTE_BUDDY_TWO_KILLED );
break; break;
case 2: 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! // learn to like buddy died!
TacticalCharacterDialogue( pTeamSoldier, QUOTE_LEARNED_TO_LIKE_MERC_KILLED ); TacticalCharacterDialogue( pTeamSoldier, QUOTE_LEARNED_TO_LIKE_MERC_KILLED );
break; break;
+62 -16
View File
@@ -120,26 +120,38 @@ enum DialogQuoteIDs
QUOTE_SPARE2, QUOTE_SPARE2,
//80 //80
QUOTE_REPUTATION_REFUSAL, QUOTE_REPUTATION_REFUSAL, //80
QUOTE_DEATH_RATE_REFUSAL, //= 99, 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_LAME_REFUSAL, //= 82,
QUOTE_WONT_RENEW_CONTRACT_LAME_REFUSAL, // ARM: now unused QUOTE_NON_AIM_BUDDY_FIVE_KILLED = QUOTE_LAME_REFUSAL,
QUOTE_ANSWERING_MACHINE_MSG, QUOTE_WONT_RENEW_CONTRACT_LAME_REFUSAL, //=83,
QUOTE_DEPARTING_COMMENT_CONTRACT_NOT_RENEWED_OR_48_OR_MORE, QUOTE_NON_AIM_HATED_MERC_THREE = QUOTE_WONT_RENEW_CONTRACT_LAME_REFUSAL,
QUOTE_HATE_MERC_1_ON_TEAM,// = 100, QUOTE_ANSWERING_MACHINE_MSG, //= 84,
QUOTE_HATE_MERC_2_ON_TEAM,// = 101, QUOTE_NON_AIM_HATED_MERC_FOUR = QUOTE_ANSWERING_MACHINE_MSG,
QUOTE_LEARNED_TO_HATE_MERC_ON_TEAM,// = 102, 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_CONTRACTS_OVER,// = 89,
QUOTE_MERC_QUIT_HATED3 = QUOTE_CONTRACTS_OVER,
//90 //90
QUOTE_ACCEPT_CONTRACT_RENEWAL, QUOTE_ACCEPT_CONTRACT_RENEWAL, // =90,
QUOTE_CONTRACT_ACCEPTANCE, QUOTE_MERC_QUIT_HATED4 = QUOTE_ACCEPT_CONTRACT_RENEWAL,
QUOTE_JOINING_CAUSE_BUDDY_1_ON_TEAM,// = 103, QUOTE_CONTRACT_ACCEPTANCE,// =91,
QUOTE_JOINING_CAUSE_BUDDY_2_ON_TEAM,// = 104, QUOTE_MERC_QUIT_HATED5 = QUOTE_CONTRACT_ACCEPTANCE,
QUOTE_JOINING_CAUSE_LEARNED_TO_LIKE_BUDDY_ON_TEAM,// = 105, 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_REFUSAL_RENEW_DUE_TO_MORALE,// = 95,
QUOTE_PRECEDENT_TO_REPEATING_ONESELF,// = 106, QUOTE_PRECEDENT_TO_REPEATING_ONESELF,// = 96,
QUOTE_REFUSAL_TO_JOIN_LACK_OF_FUNDS,// = 107, QUOTE_REFUSAL_TO_JOIN_LACK_OF_FUNDS,// = 97,
QUOTE_DEPART_COMMET_CONTRACT_NOT_RENEWED_OR_TERMINATED_UNDER_48,// = 98, QUOTE_DEPART_COMMET_CONTRACT_NOT_RENEWED_OR_TERMINATED_UNDER_48,// = 98,
QUOTE_DEATH_RATE_RENEWAL, QUOTE_DEATH_RATE_RENEWAL,
@@ -168,6 +180,40 @@ enum DialogQuoteIDs
QUOTE_ENTER_SECTOR_WITH_FAN_2, QUOTE_ENTER_SECTOR_WITH_FAN_2,
#endif #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,
} ; } ;
+9
View File
@@ -716,6 +716,15 @@ void HandleMercArrivesQuotes( SOLDIERTYPE *pSoldier )
case 1: case 1:
TacticalCharacterDialogue( pTeamSoldier, QUOTE_HATED_2_ARRIVES ); TacticalCharacterDialogue( pTeamSoldier, QUOTE_HATED_2_ARRIVES );
break; 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: default:
break; break;
} }
+1 -1
View File
@@ -1244,7 +1244,7 @@ void HourlyMoraleUpdate( void )
if (bOpinion == HATED_OPINION) if (bOpinion == HATED_OPINION)
{ {
bHated = WhichHated( pSoldier->ubProfile, pOtherSoldier->ubProfile ); bHated = WhichHated( pSoldier->ubProfile, pOtherSoldier->ubProfile );
if ( bHated >= 2 ) if ( bHated >= 5 )
{ {
// learn to hate which has become full-blown hatred, full strength // learn to hate which has become full-blown hatred, full strength
fFoundHated = TRUE; fFoundHated = TRUE;
+31 -7
View File
@@ -3371,13 +3371,34 @@ void HandlePlayerTeamMemberDeath( SOLDIERTYPE *pSoldier )
// buddy #2 died! // buddy #2 died!
TacticalCharacterDialogue( pTeamSoldier, QUOTE_BUDDY_TWO_KILLED ); TacticalCharacterDialogue( pTeamSoldier, QUOTE_BUDDY_TWO_KILLED );
break; break;
case 2: case 2:
// learn to like buddy died! // buddy #3 died!
TacticalCharacterDialogue( pTeamSoldier, QUOTE_LEARNED_TO_LIKE_MERC_KILLED ); if( pTeamSoldier->ubWhatKindOfMercAmI == MERC_TYPE__AIM_MERC )
break; TacticalCharacterDialogue( pTeamSoldier, QUOTE_AIM_BUDDY_THREE_KILLED );
default: else
break; 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 #ifdef JA2UB
#else #else
// anv: handle Speck witnessing his employee death // 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_1_WITNESSED);
pTeamSoldier->usQuoteSaidExtFlags &= (~SOLDIER_QUOTE_SAID_BUDDY_2_WITNESSED); pTeamSoldier->usQuoteSaidExtFlags &= (~SOLDIER_QUOTE_SAID_BUDDY_2_WITNESSED);
pTeamSoldier->usQuoteSaidExtFlags &= (~SOLDIER_QUOTE_SAID_BUDDY_3_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.... // toggle stealth mode....
gfUIStanceDifferent = TRUE; gfUIStanceDifferent = TRUE;
+21
View File
@@ -840,6 +840,27 @@ INT32 SkillCheck( SOLDIERTYPE * pSoldier, INT8 bReason, INT8 bChanceMod )
TacticalCharacterDialogue( pTeamSoldier, QUOTE_BUDDY_2_GOOD ); TacticalCharacterDialogue( pTeamSoldier, QUOTE_BUDDY_2_GOOD );
break; break;
case 2: 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! // learn to like buddy did something good!
TacticalCharacterDialogue( pTeamSoldier, QUOTE_LEARNED_TO_LIKE_WITNESSED ); TacticalCharacterDialogue( pTeamSoldier, QUOTE_LEARNED_TO_LIKE_WITNESSED );
break; break;
+47 -2
View File
@@ -3457,6 +3457,27 @@ void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo,
continue; continue;
} }
break; 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 // TO LOS check to killed
@@ -3502,9 +3523,33 @@ void SayBuddyWitnessedQuoteFromKill( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo,
break; break;
case 2: 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; MercPtrs[ ubMercsInSector[ ubChosenMerc ] ]->usQuoteSaidExtFlags |= SOLDIER_QUOTE_SAID_BUDDY_3_WITNESSED;
break; 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 ); 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 ); BOOLEAN fCanWeSeeLocation = ( SoldierTo3DLocationLineOfSightTest( pKillerSoldier, sGridNo, bLevel, 3, TRUE, CALC_FROM_ALL_DIRS ) != 0 );
// Are we killing mike? // 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? // Can we see?
if ( fCanWeSeeLocation ) if ( fCanWeSeeLocation )
+3
View File
@@ -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_1_WITNESSED 0x0040
#define SOLDIER_QUOTE_SAID_BUDDY_2_WITNESSED 0x0080 #define SOLDIER_QUOTE_SAID_BUDDY_2_WITNESSED 0x0080
#define SOLDIER_QUOTE_SAID_BUDDY_3_WITNESSED 0x0100 #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 #ifdef JA2UB
#define SOLDIER_QUOTE_SAID_THOUGHT_KILLED_YOU 0x0200 #define SOLDIER_QUOTE_SAID_THOUGHT_KILLED_YOU 0x0200
+25 -4
View File
@@ -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 // 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[0] = gMercProfiles[ uiLoop ].bHatedTime[0];
gMercProfiles[ uiLoop ].bHatedCount[1] = gMercProfiles[ uiLoop ].bHatedTime[1]; 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 ].bLearnToHateCount = gMercProfiles[ uiLoop ].bLearnToHateTime;
gMercProfiles[ uiLoop ].bLearnToLikeCount = gMercProfiles[ uiLoop ].bLearnToLikeTime; gMercProfiles[ uiLoop ].bLearnToLikeCount = gMercProfiles[ uiLoop ].bLearnToLikeTime;
@@ -2034,13 +2037,17 @@ INT8 WhichBuddy( UINT8 ubCharNum, UINT8 ubBuddy )
pProfile = &( gMercProfiles[ ubCharNum ] ); pProfile = &( gMercProfiles[ ubCharNum ] );
for (bLoop = 0; bLoop < 3; bLoop++) for (bLoop = 0; bLoop < 5; bLoop++)
{ {
if ( pProfile->bBuddy[bLoop] == ubBuddy ) if ( pProfile->bBuddy[bLoop] == ubBuddy )
{ {
return( bLoop ); return( bLoop );
} }
} }
if( pProfile->bLearnToLike == ubBuddy && pProfile->bLearnToLikeCount == 0 )
{
return( 5 );
}
return( -1 ); return( -1 );
} }
@@ -2051,13 +2058,17 @@ INT8 WhichHated( UINT8 ubCharNum, UINT8 ubHated )
pProfile = &( gMercProfiles[ ubCharNum ] ); pProfile = &( gMercProfiles[ ubCharNum ] );
for (bLoop = 0; bLoop < 3; bLoop++) for (bLoop = 0; bLoop < 5; bLoop++)
{ {
if ( pProfile->bHated[bLoop] == ubHated ) if ( pProfile->bHated[bLoop] == ubHated )
{ {
return( bLoop ); return( bLoop );
} }
} }
if( pProfile->bLearnToHate == ubHated && pProfile->bLearnToHateCount == 0 )
{
return( 5 );
}
return( -1 ); return( -1 );
} }
@@ -2161,10 +2172,20 @@ BOOLEAN DoesMercHaveABuddyOnTheTeam( UINT8 ubMercID )
UINT8 bBuddyID; UINT8 bBuddyID;
// loop through the list of people the merc is buddies with // 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 //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 its not a valid 'buddy'
if( bBuddyID < 0 ) if( bBuddyID < 0 )
+1 -1
View File
@@ -2439,7 +2439,7 @@ void ManSeesMan(SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent, INT32 sOppGridNo,
gfMorrisShouldSayHi = TRUE; gfMorrisShouldSayHi = TRUE;
} }
#else #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) if (gfMikeShouldSayHi == FALSE)
{ {
+2 -2
View File
@@ -364,8 +364,8 @@ typedef enum
ONEQUARTER_EVOLUTION, ONEQUARTER_EVOLUTION,
} CharacterEvolution; } CharacterEvolution;
#define BUDDY_MERC( prof, bud ) ((prof)->bBuddy[0] == (bud) || (prof)->bBuddy[1] == (bud) || (prof)->bBuddy[2] == (bud) ) #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) ) #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 BUDDY_OPINION +25
#define HATED_OPINION -25 #define HATED_OPINION -25