diff --git a/Tactical/Boxing.cpp b/Tactical/Boxing.cpp index 823e3127..d0f0680a 100644 --- a/Tactical/Boxing.cpp +++ b/Tactical/Boxing.cpp @@ -273,7 +273,14 @@ void CountPeopleInBoxingRingAndDoActions( void ) { // time to go to pre-boxing SetBoxingState( PRE_BOXING ); + + // Flugente: in order for boxing to work while covert, we require the boxer to recognize our covert merc as a boxer, but that flag is not yet set + // so temporarily set the flag, recognize our merc, and then remove the flag again. it will be properly set later + pInRing[0]->flags.uiStatusFlags |= SOLDIER_BOXER; + PickABoxer(); + + pInRing[0]->DeleteBoxingFlag(); } } else @@ -555,8 +562,13 @@ void ClearAllBoxerFlags( void ) { if ( MercSlots[ uiSlot ] && MercSlots[ uiSlot ]->flags.uiStatusFlags & SOLDIER_BOXER ) { + // Flugente: nuke the entire opponent count, remove boxing flag, reevaluate opponent list + DecayIndividualOpplist(MercSlots[uiSlot]); + MercSlots[ uiSlot ]->DeleteBoxingFlag(); + ManLooksForOtherTeams(MercSlots[uiSlot]); + if ( MercSlots[uiSlot]->bTeam == gbPlayerNum ) MercSlots[uiSlot]->flags.uiStatusFlags &= (~SOLDIER_PCUNDERAICONTROL); } diff --git a/Tactical/Soldier Control.h b/Tactical/Soldier Control.h index 12cd952a..519cc707 100644 --- a/Tactical/Soldier Control.h +++ b/Tactical/Soldier Control.h @@ -644,7 +644,7 @@ extern CLOTHES_STRUCT Clothes[CLOTHES_MAX]; #define CONSIDERED_NEUTRAL( me, them ) (\ ( them->aiData.bNeutral || them->usSoldierFlagMask & (SOLDIER_COVERT_CIV|SOLDIER_COVERT_SOLDIER|SOLDIER_POW) ) \ && ( me->bTeam != CREATURE_TEAM || (them->flags.uiStatusFlags & SOLDIER_VEHICLE) ) \ - && !( me->flags.uiStatusFlags & SOLDIER_BOXER || them->flags.uiStatusFlags & SOLDIER_BOXER ) \ + && !( me->flags.uiStatusFlags & SOLDIER_BOXER && them->flags.uiStatusFlags & SOLDIER_BOXER ) \ ) typedef struct