From b7f212b51bb8c553c2983cec056b05d75c1af495 Mon Sep 17 00:00:00 2001 From: Flugente Date: Wed, 15 Jul 2015 18:51:08 +0000 Subject: [PATCH] - Fix: attacking squadmates called OPINIONEVENT_CIV_ATTACKER in addition to OPINIONEVENT_FRIENDLYFIRE dynmic opinion event. - If a dynmic opinion event's opinion moifier is set to 0, this event is not used, thereby allowing to turn specific events off. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7919 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Strategic/Auto Resolve.cpp | 2 +- Tactical/DynamicDialogue.cpp | 4 ++++ Tactical/Soldier Ani.cpp | 4 ++-- Tactical/Soldier Control.cpp | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Strategic/Auto Resolve.cpp b/Strategic/Auto Resolve.cpp index 831f069f2..27a71d7d1 100644 --- a/Strategic/Auto Resolve.cpp +++ b/Strategic/Auto Resolve.cpp @@ -4653,7 +4653,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->aiData.bNeutral || pTarget->pSoldier->bSide == pAttacker->pSoldier->bSide ) + if ( (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/Tactical/DynamicDialogue.cpp b/Tactical/DynamicDialogue.cpp index 558fa30b3..5e70705d9 100644 --- a/Tactical/DynamicDialogue.cpp +++ b/Tactical/DynamicDialogue.cpp @@ -1112,6 +1112,10 @@ void AddOpinionEvent( UINT8 usProfileA, UINT8 usProfileB, UINT8 usEvent, BOOLEAN if ( usEvent >= OPINIONEVENT_MAX ) return; + // don't use event if opinion modifier is off (thereby providing an easy way to turn off parts of this feature) + if ( !gDynamicOpinionEvent[usEvent].sOpinionModifier ) + return; + // we don't want any events for people not on our team or vehicles SOLDIERTYPE* pSoldier = FindSoldierByProfileID( usProfileA, TRUE ); if ( !pSoldier || pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE ) diff --git a/Tactical/Soldier Ani.cpp b/Tactical/Soldier Ani.cpp index a30de04b9..41f0bb35a 100644 --- a/Tactical/Soldier Ani.cpp +++ b/Tactical/Soldier Ani.cpp @@ -3953,7 +3953,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->aiData.bNeutral || pSoldier->bSide == MercPtrs[ubAttacker]->bSide ) + if ( pSoldier->bTeam != OUR_TEAM && (pSoldier->aiData.bNeutral || pSoldier->bSide == MercPtrs[ubAttacker]->bSide) ) { // not for killing animals though... if ( pSoldier->ubBodyType != CROW && pSoldier->ubBodyType != COW ) @@ -3967,7 +3967,7 @@ 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 == CIV_TEAM && (pSoldier->aiData.bNeutral || pSoldier->bSide == MercPtrs[ubAttacker]->bSide) ) + if ( pSoldier->bTeam != OUR_TEAM && (pSoldier->aiData.bNeutral || pSoldier->bSide == MercPtrs[ubAttacker]->bSide) ) { // not for killing animals though... if ( pSoldier->ubBodyType != CROW && pSoldier->ubBodyType != COW ) diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index 38c2d2ecc..459d8ed2b 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -9765,7 +9765,7 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr // 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->aiData.bNeutral || this->bSide == MercPtrs[ubAttacker]->bSide ) + 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 )