- 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
This commit is contained in:
Flugente
2015-07-15 18:51:08 +00:00
parent 56072fdd0f
commit b7f212b51b
4 changed files with 8 additions and 4 deletions
+1 -1
View File
@@ -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 )
+4
View File
@@ -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 )
+2 -2
View File
@@ -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 )
+1 -1
View File
@@ -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 )