diff --git a/Laptop/CampaignStats.cpp b/Laptop/CampaignStats.cpp index 5d70d11e..bfc4e91d 100644 --- a/Laptop/CampaignStats.cpp +++ b/Laptop/CampaignStats.cpp @@ -736,7 +736,10 @@ void FinishIncident(INT16 sX, INT16 sY, INT8 sZ) gCurrentIncident.usOneTimeEventFlags |= INCIDENT_ONETIMEEVENT_OMERTA; // dynamic opinions - HandleDynamicOpinionBattleFinished( (gCurrentIncident.usIncidentFlags & INCIDENT_WIN) != 0 ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionBattleFinished((gCurrentIncident.usIncidentFlags & INCIDENT_WIN) != 0); + } gCampaignStats.AddNewIncident(gCurrentIncident); diff --git a/Laptop/finances.cpp b/Laptop/finances.cpp index c7f9aa4d..b02b4c97 100644 --- a/Laptop/finances.cpp +++ b/Laptop/finances.cpp @@ -199,7 +199,10 @@ UINT32 AddTransactionToPlayersBook (UINT8 ubCode, UINT8 ubSecondCode, UINT32 uiD // process the actual data // Flugente: dynamic opinion - HandleDynamicOpinionOnContractExtension( ubCode, ubSecondCode ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionOnContractExtension(ubCode, ubSecondCode); + } // // If this transaction is for the hiring/extending of a mercs contract diff --git a/Strategic/Assignments.cpp b/Strategic/Assignments.cpp index 8e07f29c..ad9773f1 100644 --- a/Strategic/Assignments.cpp +++ b/Strategic/Assignments.cpp @@ -5863,7 +5863,10 @@ void FatigueCharacter( SOLDIERTYPE *pSoldier ) bMaxBreathLoss = (float)min( 127, iBreathLoss ); // Flugente: dynamic opinions: other mercs might get annoyed, because we are slowing down the team - HandleDynamicOpinionChange( pSoldier, OPINIONEVENT_SLOWSUSDOWN, TRUE, TRUE ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionChange(pSoldier, OPINIONEVENT_SLOWSUSDOWN, TRUE, TRUE); + } } } diff --git a/Strategic/Auto Resolve.cpp b/Strategic/Auto Resolve.cpp index 8e9e056f..54ae42c5 100644 --- a/Strategic/Auto Resolve.cpp +++ b/Strategic/Auto Resolve.cpp @@ -4887,7 +4887,7 @@ void AttackTarget( SOLDIERCELL *pAttacker, SOLDIERCELL *pTarget ) gMercProfiles[ pAttacker->pSoldier->ubProfile ].records.usKillsOthers++; // Flugente: dynamic opinions: if this guy is not hostile towards us, then some mercs will complain about killing civilians - if ( (pTarget->pSoldier->bTeam != OUR_TEAM) && (pTarget->pSoldier->aiData.bNeutral || pTarget->pSoldier->bSide == pAttacker->pSoldier->bSide) ) + if ((gGameExternalOptions.fDynamicOpinions) && (pTarget->pSoldier->bTeam != OUR_TEAM) && (pTarget->pSoldier->aiData.bNeutral || pTarget->pSoldier->bSide == pAttacker->pSoldier->bSide) ) { // not for killing animals though... if ( pTarget->pSoldier->ubBodyType != CROW && pTarget->pSoldier->ubBodyType != COW ) diff --git a/Strategic/Hourly Update.cpp b/Strategic/Hourly Update.cpp index 3a30bee5..ec0cb0f4 100644 --- a/Strategic/Hourly Update.cpp +++ b/Strategic/Hourly Update.cpp @@ -461,7 +461,10 @@ void HourlyLarryUpdate() fTookDrugs = TRUE; // Flugente: dynamic opinion - HandleDynamicOpinionChange( pSoldier, OPINIONEVENT_ADDICT, TRUE, FALSE ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionChange(pSoldier, OPINIONEVENT_ADDICT, TRUE, FALSE); + } if ( fBar ) { @@ -645,7 +648,10 @@ void HourlyDisabilityUpdate( ) pSoldier->bBleeding = oldbleeding; // Flugente: dynamic opinions - HandleDynamicOpinionChange( pSoldier, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionChange(pSoldier, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE); + } // say something (which might also alert the player to what we just did) TacticalCharacterDialogue( pSoldier, QUOTE_PERSONALITY_TRAIT ); @@ -820,7 +826,10 @@ void HourlyStealUpdate() } // Flugente: dynamic opinion - HandleDynamicOpinionChange( pSoldier, OPINIONEVENT_THIEF, TRUE, FALSE ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionChange(pSoldier, OPINIONEVENT_THIEF, TRUE, FALSE); + } } } } diff --git a/Strategic/Strategic Merc Handler.cpp b/Strategic/Strategic Merc Handler.cpp index 9ae99093..328fa3bf 100644 --- a/Strategic/Strategic Merc Handler.cpp +++ b/Strategic/Strategic Merc Handler.cpp @@ -601,7 +601,10 @@ void MercDailyUpdate() HandleSnitchCheck(); // Flugente: dynmaic opinion rollover - HandleDynamicOpinionsDailyRefresh( ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionsDailyRefresh(); + } // Flugente: disease HandleDiseaseDailyRefresh(); diff --git a/Strategic/Strategic Town Loyalty.cpp b/Strategic/Strategic Town Loyalty.cpp index 6ff7bf81..50d96128 100644 --- a/Strategic/Strategic Town Loyalty.cpp +++ b/Strategic/Strategic Town Loyalty.cpp @@ -2178,7 +2178,7 @@ void HandleLoyaltyImplicationsOfMercRetreat( INT8 bRetreatCode, INT16 sSectorX, // Flugente: dynamic opinion: mercs retreated. Someone has to be blamed for this shameful defeat! // only do this if the enemy actually noticed us - no need to punish the player for a successful stealth operation - if ( gTacticalStatus.Team[ENEMY_TEAM].bAwareOfOpposition ) + if (gGameExternalOptions.fDynamicOpinions && gTacticalStatus.Team[ENEMY_TEAM].bAwareOfOpposition ) { HandleDynamicOpinionRetreat(); } diff --git a/Tactical/Campaign.cpp b/Tactical/Campaign.cpp index beac53b9..abbbd912 100644 --- a/Tactical/Campaign.cpp +++ b/Tactical/Campaign.cpp @@ -850,7 +850,7 @@ void ChangeStat( MERCPROFILESTRUCT *pProfile, SOLDIERTYPE *pSoldier, UINT8 ubSta } // Flugente: dynamic opinions - if ( FROM_TRAINING == ubReason ) + if (gGameExternalOptions.fDynamicOpinions && FROM_TRAINING == ubReason ) HandleDynamicOpinionTeaching( pSoldier, ubStat ); } } diff --git a/Tactical/Disease.cpp b/Tactical/Disease.cpp index 559c7c18..8cbfc32a 100644 --- a/Tactical/Disease.cpp +++ b/Tactical/Disease.cpp @@ -147,14 +147,17 @@ void HandleDisease() } // if we are infected, this might disgust other people, but only if it's visisble to them (we assume doctors dont mention this to others) - for ( int i = 0; i < NUM_DISEASES; ++i ) + if (gGameExternalOptions.fDynamicOpinions) { - if ( (Disease[i].usDiseaseProperties & DISEASE_PROPERTY_DISGUSTING) && - (pSoldier->sDiseaseFlag[i] & SOLDIERDISEASE_DIAGNOSED) && - (pSoldier->sDiseaseFlag[i] & SOLDIERDISEASE_OUTBREAK) ) + for (int i = 0; i < NUM_DISEASES; ++i) { - HandleDynamicOpinionChange( pSoldier, OPINIONEVENT_DISEASE_DISGUSTING, TRUE, TRUE ); - break; + if ((Disease[i].usDiseaseProperties & DISEASE_PROPERTY_DISGUSTING) && + (pSoldier->sDiseaseFlag[i] & SOLDIERDISEASE_DIAGNOSED) && + (pSoldier->sDiseaseFlag[i] & SOLDIERDISEASE_OUTBREAK)) + { + HandleDynamicOpinionChange(pSoldier, OPINIONEVENT_DISEASE_DISGUSTING, TRUE, TRUE); + break; + } } } } diff --git a/Tactical/Drugs And Alcohol.cpp b/Tactical/Drugs And Alcohol.cpp index 7bfad197..90d65514 100644 --- a/Tactical/Drugs And Alcohol.cpp +++ b/Tactical/Drugs And Alcohol.cpp @@ -173,7 +173,7 @@ BOOLEAN ApplyDrugs_New( SOLDIERTYPE *pSoldier, UINT16 usItem, UINT16 uStatusUsed gMercProfiles[LARRY_NORMAL].bNPCData = __max( gMercProfiles[LARRY_NORMAL].bNPCData, LARRY_FALLS_OFF_WAGON ); } - if ( NewDrug[drugused].opinionevent ) + if (gGameExternalOptions.fDynamicOpinions && NewDrug[drugused].opinionevent ) { HandleDynamicOpinionChange( pSoldier, OPINIONEVENT_ADDICT, TRUE, TRUE ); } @@ -194,7 +194,10 @@ BOOLEAN ApplyDrugs_New( SOLDIERTYPE *pSoldier, UINT16 usItem, UINT16 uStatusUsed ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[MSG_DRANK_SOME], pSoldier->GetName( ), ShortItemNames[usItem] ); - HandleDynamicOpinionTeamDrinking( pSoldier ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionTeamDrinking(pSoldier); + } } else { diff --git a/Tactical/Food.cpp b/Tactical/Food.cpp index 032a8233..8aafdcca 100644 --- a/Tactical/Food.cpp +++ b/Tactical/Food.cpp @@ -647,8 +647,11 @@ void HourlyFoodAutoDigestion( SOLDIERTYPE *pSoldier ) EatFromInventory( pSoldier, FALSE ); } - // dynamic opinions: if we're still really hungry an someone in this sector has food, we get a lwoer opinion of him, as he obviously doesn't share - HandleDynamicOpinionChange( pSoldier, OPINIONEVENT_NOSHARINGFOOD, FALSE, FALSE ); + if (gGameExternalOptions.fDynamicOpinions) + { + // dynamic opinions: if we're still really hungry an someone in this sector has food, we get a lwoer opinion of him, as he obviously doesn't share + HandleDynamicOpinionChange(pSoldier, OPINIONEVENT_NOSHARINGFOOD, FALSE, FALSE); + } } } diff --git a/Tactical/Merc Hiring.cpp b/Tactical/Merc Hiring.cpp index 5c5b4b79..53aed4e9 100644 --- a/Tactical/Merc Hiring.cpp +++ b/Tactical/Merc Hiring.cpp @@ -410,7 +410,10 @@ INT8 HireMerc( MERC_HIRE_STRUCT *pHireMerc) RemoveNewlyHiredMercFromPersonnelDepartedList( pSoldier->ubProfile ); // Flugente: dynamic opinions - CheckForFriendsofHated( pSoldier ); + if (gGameExternalOptions.fDynamicOpinions) + { + CheckForFriendsofHated(pSoldier); + } gfAtLeastOneMercWasHired = TRUE; diff --git a/Tactical/Morale.cpp b/Tactical/Morale.cpp index c03dcf2e..9e6309fc 100644 --- a/Tactical/Morale.cpp +++ b/Tactical/Morale.cpp @@ -326,15 +326,18 @@ void DecayTacticalMoraleModifiers( void ) else { // alone, no recovery... in fact, if tact morale is high, decay - if ( !(pSoldier->usQuoteSaidFlags & SOLDIER_QUOTE_SAID_PERSONALITY) ) + if (!(pSoldier->usQuoteSaidFlags & SOLDIER_QUOTE_SAID_PERSONALITY)) { - TacticalCharacterDialogue( pSoldier, QUOTE_PERSONALITY_TRAIT ); + TacticalCharacterDialogue(pSoldier, QUOTE_PERSONALITY_TRAIT); pSoldier->usQuoteSaidFlags |= SOLDIER_QUOTE_SAID_PERSONALITY; } - HandleMoraleEvent( pSoldier, MORALE_NERVOUS_ALONE, pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ ); + HandleMoraleEvent(pSoldier, MORALE_NERVOUS_ALONE, pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ); // Flugente: dynamic opinions - HandleDynamicOpinionChange( pSoldier, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionChange(pSoldier, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE); + } } } } @@ -1528,7 +1531,10 @@ void HandleSnitchesReports( std::vector& aVec ) event2.ubEventType = NUM_SNITCH_EVENTS; // Flugente: dynamic opinions - AddOpinionEvent( event2.ubTargetProfile, pSnitch->ubProfile, OPINIONEVENT_SNITCHSOLDMEOUT ); + if (gGameExternalOptions.fDynamicOpinions) + { + AddOpinionEvent(event2.ubTargetProfile, pSnitch->ubProfile, OPINIONEVENT_SNITCHSOLDMEOUT); + } } } diff --git a/Tactical/Overhead.cpp b/Tactical/Overhead.cpp index 370d71c3..04841271 100644 --- a/Tactical/Overhead.cpp +++ b/Tactical/Overhead.cpp @@ -2558,7 +2558,10 @@ BOOLEAN HandleGotoNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving, BOOLE UnSetUIBusy( pSoldier->ubID ); // Flugente: dynamic opinions - HandleDynamicOpinionChange( pSoldier, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionChange(pSoldier, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE); + } } } @@ -3418,7 +3421,10 @@ void InternalSelectSoldier( UINT16 usSoldierID, BOOLEAN fAcknowledge, BOOLEAN fF pSoldier->usQuoteSaidFlags |= SOLDIER_QUOTE_SAID_PERSONALITY; // Flugente: dynamic opinions - HandleDynamicOpinionChange( pSoldier, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionChange(pSoldier, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE); + } } } } @@ -11008,7 +11014,7 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue ) } // dynamic opinion: a merc caused the remaining enemies to give up - if ( gusSelectedSoldier != NOBODY ) + if (gGameExternalOptions.fDynamicOpinions && gusSelectedSoldier != NOBODY ) HandleDynamicOpinionChange( MercPtrs[gusSelectedSoldier], OPINIONEVENT_BATTLE_TOOK_PRISONER, TRUE, TRUE ); } else diff --git a/Tactical/SkillCheck.cpp b/Tactical/SkillCheck.cpp index fa8f9619..ff8f1831 100644 --- a/Tactical/SkillCheck.cpp +++ b/Tactical/SkillCheck.cpp @@ -880,7 +880,10 @@ INT32 SkillCheck( SOLDIERTYPE * pSoldier, INT8 bReason, INT8 bChanceMod ) TacticalCharacterDialogue( pSoldier, QUOTE_PERSONALITY_TRAIT ); // Flugente: dynamic opinions - HandleDynamicOpinionChange( pSoldier, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionChange(pSoldier, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE); + } } // do we realize that we just can't do this? if ( (100 - (pSoldier->ubSkillCheckAttempts - 2) * 20) < EffectiveWisdom( pSoldier ) ) diff --git a/Tactical/Soldier Ani.cpp b/Tactical/Soldier Ani.cpp index 2868d0a4..797edb8b 100644 --- a/Tactical/Soldier Ani.cpp +++ b/Tactical/Soldier Ani.cpp @@ -4041,7 +4041,7 @@ BOOLEAN HandleSoldierDeath( SOLDIERTYPE *pSoldier , BOOLEAN *pfMadeCorpse ) gMercProfiles[ MercPtrs[ ubAttacker ]->ubProfile ].records.usKillsOthers++; // Flugente: dynamic opinions: if this guy is not hostile towards us, then some mercs will complain about killing civilians - if ( pSoldier->bTeam != OUR_TEAM && (pSoldier->aiData.bNeutral || pSoldier->bSide == MercPtrs[ubAttacker]->bSide) ) + if (gGameExternalOptions.fDynamicOpinions && pSoldier->bTeam != OUR_TEAM && (pSoldier->aiData.bNeutral || pSoldier->bSide == MercPtrs[ubAttacker]->bSide) ) { // not for killing animals though... if ( pSoldier->ubBodyType != CROW && pSoldier->ubBodyType != COW ) @@ -4055,23 +4055,26 @@ BOOLEAN HandleSoldierDeath( SOLDIERTYPE *pSoldier , BOOLEAN *pfMadeCorpse ) gStrategicStatus.usPlayerKills++; // Flugente: dynamic opinions: if this guy is not hostile towards us, then some mercs will complain about killing civilians - if ( pSoldier->bTeam != OUR_TEAM && (pSoldier->aiData.bNeutral || pSoldier->bSide == MercPtrs[ubAttacker]->bSide) ) + if (gGameExternalOptions.fDynamicOpinions) { - // not for killing animals though... - if ( pSoldier->ubBodyType != CROW && pSoldier->ubBodyType != COW ) - HandleDynamicOpinionChange( MercPtrs[ubAttacker], OPINIONEVENT_CIVKILLER, TRUE, TRUE ); - } - else - { - // if this enemy was attacking a freshly wounded merc, it is likely they posed a real threat - the merc will be thankful for saving their life - if ( pSoldier->ubTargetID != NOBODY && MercPtrs[pSoldier->ubTargetID]->bBleeding > 10 ) + if (pSoldier->bTeam != OUR_TEAM && (pSoldier->aiData.bNeutral || pSoldier->bSide == MercPtrs[ubAttacker]->bSide)) { - AddOpinionEvent( MercPtrs[pSoldier->ubTargetID]->ubProfile, MercPtrs[ubAttacker]->ubProfile, OPINIONEVENT_BATTLE_SAVIOUR ); + // not for killing animals though... + if (pSoldier->ubBodyType != CROW && pSoldier->ubBodyType != COW) + HandleDynamicOpinionChange(MercPtrs[ubAttacker], OPINIONEVENT_CIVKILLER, TRUE, TRUE); } else { - // complain about a fragthief, or thank for assistance - correct event is chosen internally - HandleDynamicOpinionChange( MercPtrs[ubAttacker], OPINIONEVENT_FRAGTHIEF, TRUE, TRUE ); + // if this enemy was attacking a freshly wounded merc, it is likely they posed a real threat - the merc will be thankful for saving their life + if (pSoldier->ubTargetID != NOBODY && MercPtrs[pSoldier->ubTargetID]->bBleeding > 10) + { + AddOpinionEvent(MercPtrs[pSoldier->ubTargetID]->ubProfile, MercPtrs[ubAttacker]->ubProfile, OPINIONEVENT_BATTLE_SAVIOUR); + } + else + { + // complain about a fragthief, or thank for assistance - correct event is chosen internally + HandleDynamicOpinionChange(MercPtrs[ubAttacker], OPINIONEVENT_FRAGTHIEF, TRUE, TRUE); + } } } } diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index 5632328d..ca0738a7 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -6815,7 +6815,7 @@ void SoldierGotHitGunFire( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sD pSoldier->ChangeToFlybackAnimation( (UINT8)bDirection ); // Flugente: dynamic opinions - if ( ubAttackerID != NOBODY ) + if (gGameExternalOptions.fDynamicOpinions && ubAttackerID != NOBODY ) HandleDynamicOpinionChange( MercPtrs[ubAttackerID], OPINIONEVENT_BRUTAL_GOOD, TRUE, TRUE ); return; @@ -6830,7 +6830,7 @@ void SoldierGotHitGunFire( SOLDIERTYPE *pSoldier, UINT16 usWeaponIndex, INT16 sD pSoldier->EVENT_InitNewSoldierAnim( JFK_HITDEATH, 0, FALSE ); // Flugente: dynamic opinions - if ( ubAttackerID != NOBODY ) + if (gGameExternalOptions.fDynamicOpinions && ubAttackerID != NOBODY ) HandleDynamicOpinionChange( MercPtrs[ubAttackerID], OPINIONEVENT_BRUTAL_GOOD, TRUE, TRUE ); return; @@ -8077,7 +8077,10 @@ void SOLDIERTYPE::EVENT_BeginMercTurn( BOOLEAN fFromRealTime, INT32 iRealTimeCou this->usQuoteSaidFlags |= SOLDIER_QUOTE_SAID_PERSONALITY; // Flugente: dynamic opinions - HandleDynamicOpinionChange( this, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionChange(this, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE); + } } } } @@ -8093,7 +8096,10 @@ void SOLDIERTYPE::EVENT_BeginMercTurn( BOOLEAN fFromRealTime, INT32 iRealTimeCou this->usQuoteSaidFlags |= SOLDIER_QUOTE_SAID_PERSONALITY; // Flugente: dynamic opinions - HandleDynamicOpinionChange( this, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionChange(this, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE); + } } } } @@ -8110,7 +8116,10 @@ void SOLDIERTYPE::EVENT_BeginMercTurn( BOOLEAN fFromRealTime, INT32 iRealTimeCou this->usQuoteSaidFlags |= SOLDIER_QUOTE_SAID_PERSONALITY; // Flugente: dynamic opinions - HandleDynamicOpinionChange( this, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionChange(this, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE); + } } } } @@ -8129,7 +8138,10 @@ void SOLDIERTYPE::EVENT_BeginMercTurn( BOOLEAN fFromRealTime, INT32 iRealTimeCou this->usQuoteSaidFlags |= SOLDIER_QUOTE_SAID_PERSONALITY; // Flugente: dynamic opinions - HandleDynamicOpinionChange( this, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionChange(this, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE); + } } } } @@ -9723,7 +9735,10 @@ void SOLDIERTYPE::BeginSoldierClimbUpRoof(void) this->usQuoteSaidFlags |= SOLDIER_QUOTE_SAID_PERSONALITY; // Flugente: dynamic opinions - HandleDynamicOpinionChange(this, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionChange(this, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE); + } } // otherwise remove flag, so we'll complain every second time we climb roof else @@ -10201,17 +10216,20 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr this->ubLastDamageReason = ubReason; // Flugente: dynamic opinions - if ( ubAttacker != NOBODY && MercPtrs[ubAttacker] ) + if (ubAttacker != NOBODY && MercPtrs[ubAttacker] ) { - AddOpinionEvent( this->ubProfile, MercPtrs[ubAttacker]->ubProfile, OPINIONEVENT_FRIENDLYFIRE ); - - // if this is a civilian, other mercs can complain about mercs shooting innocents - // Flugente: dynamic opinions: if this guy is not hostile towards us, then some mercs will complain about killing civilians - if ( (this->bTeam != OUR_TEAM) && (this->aiData.bNeutral || this->bSide == MercPtrs[ubAttacker]->bSide) ) + if (gGameExternalOptions.fDynamicOpinions) { - // not for killing animals though... - if ( this->ubBodyType != CROW && this->ubBodyType != COW ) - HandleDynamicOpinionChange( MercPtrs[ubAttacker], OPINIONEVENT_CIV_ATTACKER, TRUE, TRUE ); + AddOpinionEvent(this->ubProfile, MercPtrs[ubAttacker]->ubProfile, OPINIONEVENT_FRIENDLYFIRE); + + // if this is a civilian, other mercs can complain about mercs shooting innocents + // Flugente: dynamic opinions: if this guy is not hostile towards us, then some mercs will complain about killing civilians + if ((this->bTeam != OUR_TEAM) && (this->aiData.bNeutral || this->bSide == MercPtrs[ubAttacker]->bSide)) + { + // not for killing animals though... + if (this->ubBodyType != CROW && this->ubBodyType != COW) + HandleDynamicOpinionChange(MercPtrs[ubAttacker], OPINIONEVENT_CIV_ATTACKER, TRUE, TRUE); + } } // if we are a turncoat, lose the flag if we were attacked by player forces @@ -13550,7 +13568,10 @@ UINT32 SOLDIERTYPE::SoldierDressWound( SOLDIERTYPE *pVictim, INT16 sKitPts, INT1 } // Flugente: dynamic opinions - AddOpinionEvent( pVictim->ubProfile, this->ubProfile, OPINIONEVENT_BANDAGED ); + if (gGameExternalOptions.fDynamicOpinions) + { + AddOpinionEvent(pVictim->ubProfile, this->ubProfile, OPINIONEVENT_BANDAGED); + } bInitialBleeding = pVictim->bBleeding; @@ -14575,7 +14596,10 @@ BOOLEAN SOLDIERTYPE::CheckForBreathCollapse( void ) TacticalCharacterDialogue( this, QUOTE_PERSONALITY_TRAIT ); // Flugente: dynamic opinions - HandleDynamicOpinionChange( this, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE ); + if (gGameExternalOptions.fDynamicOpinions) + { + HandleDynamicOpinionChange(this, OPINIONEVENT_ANNOYINGDISABILITY, TRUE, TRUE); + } } else { @@ -15026,7 +15050,10 @@ BOOLEAN SOLDIERTYPE::IsWeaponMounted( void ) applybipod = TRUE; // Flugente: dynamic opinions - AddOpinionEvent( MercPtrs[usPersonID]->ubProfile, this->ubProfile, OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS ); + if (gGameExternalOptions.fDynamicOpinions) + { + AddOpinionEvent(MercPtrs[usPersonID]->ubProfile, this->ubProfile, OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS); + } } } } @@ -15093,7 +15120,10 @@ BOOLEAN SOLDIERTYPE::IsWeaponMounted( void ) applybipod = TRUE; // Flugente: dynamic opinions - AddOpinionEvent( MercPtrs[usPersonID]->ubProfile, this->ubProfile, OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS ); + if (gGameExternalOptions.fDynamicOpinions) + { + AddOpinionEvent(MercPtrs[usPersonID]->ubProfile, this->ubProfile, OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS); + } } } } diff --git a/gameloop.cpp b/gameloop.cpp index d3524f4f..5189a407 100644 --- a/gameloop.cpp +++ b/gameloop.cpp @@ -417,7 +417,10 @@ void GameLoop(void) } // Flugente: dynamic opinions: Dialogue Boxes need to be refreshed - RefreshBoxes( ); + if (gGameExternalOptions.fDynamicOpinions) + { + RefreshBoxes();//todo shadooow: tohle mozna zpusobuje bug s opakovanim kecu po vitezstvi + } // Flugente:disguised mercs can distract enemies by talking to them. In order to display that, we sometimes display excerpts of their 'chats' CheckChatPartners();