diff --git a/Tactical/DynamicDialogue.cpp b/Tactical/DynamicDialogue.cpp index b17b35f83..8b81ffc7b 100644 --- a/Tactical/DynamicDialogue.cpp +++ b/Tactical/DynamicDialogue.cpp @@ -1119,7 +1119,7 @@ void AddOpinionEvent( UINT8 usProfileA, UINT8 usProfileB, UINT8 usEvent, BOOLEAN // 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 ) + if ( !pSoldier || pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE || AM_A_ROBOT(pSoldier)) return; pSoldier = FindSoldierByProfileID( usProfileB, TRUE ); @@ -1632,7 +1632,7 @@ void HandleDynamicOpinionsDailyRefresh( ) for ( pSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pSoldier++ ) { if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE && - !(pSoldier->bAssignment == IN_TRANSIT || + !(pSoldier->bAssignment == IN_TRANSIT || AM_A_ROBOT(pSoldier) || pSoldier->bAssignment == ASSIGNMENT_DEAD) ) { // or each profile, check wether everyone else is a friend of someone else we hate @@ -1674,7 +1674,7 @@ void CheckForFriendsofHated( SOLDIERTYPE* pSoldier ) SOLDIERTYPE* pThirdSoldier; // make sure we ourselves aren't in transit - if ( !pSoldier->bActive || pSoldier->ubProfile == NO_PROFILE || pSoldier->bAssignment == IN_TRANSIT || pSoldier->bAssignment == ASSIGNMENT_DEAD ) + if ( !pSoldier->bActive || pSoldier->ubProfile == NO_PROFILE || AM_A_ROBOT(pSoldier) || pSoldier->bAssignment == IN_TRANSIT || pSoldier->bAssignment == ASSIGNMENT_DEAD ) return; bMercID = pSoldier->ubID; @@ -1835,7 +1835,7 @@ void HandleDynamicOpinionRetreat( ) void HandleDynamicOpinionTeamDrinking( SOLDIERTYPE* pSoldier ) { // need to be drunk for this - if ( !pSoldier || pSoldier->ubProfile == NO_PROFILE || pSoldier->newdrugs.drinkstaken <= 0.0 ) + if ( !pSoldier || pSoldier->ubProfile == NO_PROFILE || AM_A_ROBOT(pSoldier) || pSoldier->newdrugs.drinkstaken <= 0.0 ) return; SOLDIERTYPE* pTeamSoldier = NULL; @@ -1873,7 +1873,7 @@ void HandleDynamicOpinionTeamDrinking( SOLDIERTYPE* pSoldier ) void HandleDynamicOpinionTeaching( SOLDIERTYPE* pSoldier, UINT8 ubStat ) { - if ( !pSoldier || pSoldier->ubProfile == NO_PROFILE ) + if ( !pSoldier || pSoldier->ubProfile == NO_PROFILE || AM_A_ROBOT(pSoldier)) return; // because this code is as annoying as it is, ubStat has a different numbering than bTrainStat. The only reasonable explanation for that is that the designers decided to be jerks on purpose @@ -2079,7 +2079,7 @@ UINT8 HighestInventoryCoolness( SOLDIERTYPE* pSoldier ) void HandleDynamicOpinionChange( SOLDIERTYPE* pSoldier, UINT8 usEvent, BOOLEAN fOffender, BOOLEAN fStartDialogue ) { - if ( !pSoldier || pSoldier->ubProfile == NO_PROFILE ) + if ( !pSoldier || pSoldier->ubProfile == NO_PROFILE || AM_A_ROBOT(pSoldier)) return; // we might have to compare the soldier to other teammates, determine relevant values diff --git a/Tactical/Points.cpp b/Tactical/Points.cpp index 29de69226..ba157d8f9 100644 --- a/Tactical/Points.cpp +++ b/Tactical/Points.cpp @@ -933,9 +933,8 @@ BOOLEAN EnoughPoints( SOLDIERTYPE *pSoldier, INT16 sAPCost, INT32 iBPCost, BOOLE // AI guy on special move off map return( TRUE ); } - // IN realtime.. only care about BPs - if ( ( gTacticalStatus.uiFlags & REALTIME ) || !(gTacticalStatus.uiFlags & INCOMBAT ) ) + if ( ( gTacticalStatus.uiFlags & REALTIME ) || !(gTacticalStatus.uiFlags & INCOMBAT ) || !pSoldier->bInSector) { sAPCost = 0; } @@ -1001,7 +1000,7 @@ void DeductPoints( SOLDIERTYPE *pSoldier, INT16 sAPCost, INT32 iBPCost, UINT8 ub } // in real time, there IS no AP cost, (only breath cost) - if (!(gTacticalStatus.uiFlags & TURNBASED) || !(gTacticalStatus.uiFlags & INCOMBAT ) ) + if (!(gTacticalStatus.uiFlags & TURNBASED) || !(gTacticalStatus.uiFlags & INCOMBAT ) || !pSoldier->bInSector) { sAPCost = 0; } diff --git a/Tactical/Tactical Turns.cpp b/Tactical/Tactical Turns.cpp index 3be556498..64836d5e8 100644 --- a/Tactical/Tactical Turns.cpp +++ b/Tactical/Tactical Turns.cpp @@ -102,7 +102,7 @@ void HandleRPCDescription( ) // OK, count how many rpc guys we have.... // set up soldier ptr as first element in mercptrs list cnt2 = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; - + if (gTacticalStatus.ubGuideDescriptionToUse != 100) { // run through list for ( pTeamSoldier = MercPtrs[cnt2]; cnt2 <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt2, pTeamSoldier++ )