mirror of
https://github.com/1dot13/source.git
synced 2026-08-05 14:00:23 +02:00
Add BOXER() & ISVIP() macros
This commit is contained in:
+6
-5
@@ -22,6 +22,7 @@
|
||||
#include "Font Control.h"
|
||||
#include "message.h"
|
||||
#include "GameSettings.h" // added by SANDRO
|
||||
#include "Soldier macros.h"
|
||||
|
||||
INT32 gsBoxerGridNo[ NUM_BOXERS ] = { 11393, 11233, 11073 };
|
||||
UINT8 gubBoxerID[ NUM_BOXERS ] = { NOBODY, NOBODY, NOBODY };
|
||||
@@ -55,7 +56,7 @@ void ExitBoxing( void )
|
||||
|
||||
if ( pSoldier != NULL )
|
||||
{
|
||||
if ( ( pSoldier->flags.uiStatusFlags & SOLDIER_BOXER ) && InARoom( pSoldier->sGridNo, &usRoom ) && usRoom == BOXING_RING )
|
||||
if ( BOXER(pSoldier) && InARoom( pSoldier->sGridNo, &usRoom ) && usRoom == BOXING_RING )
|
||||
{
|
||||
if ( pSoldier->flags.uiStatusFlags & SOLDIER_PC )
|
||||
{
|
||||
@@ -239,7 +240,7 @@ void CountPeopleInBoxingRingAndDoActions( void )
|
||||
{
|
||||
++ubPlayersInRing;
|
||||
|
||||
if ( !pNonBoxingPlayer && !(pSoldier->flags.uiStatusFlags & SOLDIER_BOXER) )
|
||||
if ( !pNonBoxingPlayer && !BOXER(pSoldier) )
|
||||
{
|
||||
pNonBoxingPlayer = pSoldier;
|
||||
}
|
||||
@@ -291,7 +292,7 @@ void CountPeopleInBoxingRingAndDoActions( void )
|
||||
// ladieees and gennleman, we have a fight!
|
||||
for (uiLoop = 0; uiLoop < 2; ++uiLoop)
|
||||
{
|
||||
if (!(pInRing[uiLoop]->flags.uiStatusFlags & SOLDIER_BOXER))
|
||||
if (!BOXER(pInRing[uiLoop]))
|
||||
{
|
||||
// set as boxer!
|
||||
pInRing[uiLoop]->flags.uiStatusFlags |= SOLDIER_BOXER;
|
||||
@@ -515,7 +516,7 @@ void BoxingMovementCheck( SOLDIERTYPE * pSoldier )
|
||||
// someone moving in/into the ring
|
||||
CountPeopleInBoxingRingAndDoActions();
|
||||
}
|
||||
else if ( ( gTacticalStatus.bBoxingState == BOXING ) && ( pSoldier->flags.uiStatusFlags & SOLDIER_BOXER ) )
|
||||
else if ( ( gTacticalStatus.bBoxingState == BOXING ) && BOXER(pSoldier) )
|
||||
{
|
||||
// boxer stepped out of the ring!
|
||||
BoxingPlayerDisqualified( pSoldier, BOXER_OUT_OF_RING );
|
||||
@@ -565,7 +566,7 @@ void ClearAllBoxerFlags( void )
|
||||
{
|
||||
for (UINT32 uiSlot = 0; uiSlot < guiNumMercSlots; ++uiSlot)
|
||||
{
|
||||
if ( MercSlots[ uiSlot ] && MercSlots[ uiSlot ]->flags.uiStatusFlags & SOLDIER_BOXER )
|
||||
if ( MercSlots[ uiSlot ] && BOXER(MercSlots[ uiSlot ]) )
|
||||
{
|
||||
// Flugente: nuke the entire opponent count, remove boxing flag, reevaluate opponent list
|
||||
DecayIndividualOpplist(MercSlots[uiSlot]);
|
||||
|
||||
@@ -6299,7 +6299,7 @@ BOOLEAN ShowSoldierRoleSymbol(SOLDIERTYPE* pSoldier)
|
||||
if ( pSoldier->usSkillCounter[SOLDIER_COUNTER_ROLE_OBSERVED] >= gGameExternalOptions.usTurnsToUncover )
|
||||
{
|
||||
// are we a VIP? show that only when the player knows a VIP is in this sector. otherwise, don't even show our officer property
|
||||
if ( pSoldier->usSoldierFlagMask & SOLDIER_VIP && !pSoldier->bSectorZ )
|
||||
if (ISVIP(pSoldier) && !pSoldier->bSectorZ )
|
||||
{
|
||||
if ( PlayerKnowsAboutVIP( pSoldier->sSectorX, pSoldier->sSectorY ) )
|
||||
{
|
||||
|
||||
@@ -3043,7 +3043,7 @@ BOOLEAN HandleAtNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving )
|
||||
|
||||
// sevenfm: check all nearby enemy boxers for opportunity attack
|
||||
if (IS_MERC_BODY_TYPE(pSoldier) &&
|
||||
(pSoldier->flags.uiStatusFlags & SOLDIER_BOXER) &&
|
||||
BOXER(pSoldier) &&
|
||||
gTacticalStatus.bBoxingState == BOXING &&
|
||||
pSoldier->aiData.bAlertStatus >= STATUS_RED)
|
||||
{
|
||||
@@ -3064,7 +3064,7 @@ BOOLEAN HandleAtNewGridNo( SOLDIERTYPE *pSoldier, BOOLEAN *pfKeepMoving )
|
||||
pOpponent->bCollapsed ||
|
||||
pOpponent->bBreathCollapsed ||
|
||||
!IS_MERC_BODY_TYPE(pOpponent) ||
|
||||
!(pOpponent->flags.uiStatusFlags & SOLDIER_BOXER) ||
|
||||
!BOXER(pOpponent) ||
|
||||
gAnimControl[pOpponent->usAnimState].ubEndHeight < ANIM_STAND ||
|
||||
pOpponent->pathing.bLevel != pSoldier->pathing.bLevel ||
|
||||
!SoldierToSoldierLineOfSightTest(pOpponent, pSoldier, TRUE, CALC_FROM_WANTED_DIR) ||
|
||||
@@ -7233,7 +7233,7 @@ void RemoveCapturedEnemiesFromSectorInfo( INT16 sMapX, INT16 sMapY, INT8 bMapZ )
|
||||
//if ( pTeamSoldier->stats.bLife >= OKLIFE && pTeamSoldier->stats.bLife != 0 )
|
||||
{
|
||||
// officers and generals are 'special' prisoners...
|
||||
if ( pTeamSoldier->usSoldierFlagMask & SOLDIER_VIP )
|
||||
if (ISVIP(pTeamSoldier))
|
||||
++sNumPrisoner[PRISONER_GENERAL];
|
||||
// downed pilots count as officers too, even though they are civilians. This makes capturing them more rewarding
|
||||
else if ( (pTeamSoldier->usSoldierFlagMask & SOLDIER_ENEMY_OFFICER) || pTeamSoldier->ubCivilianGroup == DOWNEDPILOT_CIV_GROUP )
|
||||
@@ -7262,7 +7262,7 @@ void RemoveCapturedEnemiesFromSectorInfo( INT16 sMapX, INT16 sMapY, INT8 bMapZ )
|
||||
}
|
||||
|
||||
// Flugente: VIPs
|
||||
if ( pTeamSoldier->usSoldierFlagMask & SOLDIER_VIP )
|
||||
if (ISVIP(pTeamSoldier))
|
||||
DeleteVIP( pTeamSoldier->sSectorX, pTeamSoldier->sSectorY );
|
||||
|
||||
// Flugente: turncoats
|
||||
@@ -9320,10 +9320,10 @@ BOOLEAN ProcessImplicationsOfPCAttack( SOLDIERTYPE * pSoldier, SOLDIERTYPE ** pp
|
||||
if ( gTacticalStatus.bBoxingState == BOXING )
|
||||
{
|
||||
// should have a check for "in boxing ring", no?
|
||||
if ( ( pSoldier->usAttackingWeapon != NOTHING && !Item[pSoldier->usAttackingWeapon].brassknuckles ) || !( pSoldier->flags.uiStatusFlags & SOLDIER_BOXER ) || pSoldier->IsRiotShieldEquipped() )
|
||||
if ( ( pSoldier->usAttackingWeapon != NOTHING && !Item[pSoldier->usAttackingWeapon].brassknuckles ) || !BOXER(pSoldier) || pSoldier->IsRiotShieldEquipped() )
|
||||
{
|
||||
// someone's cheating!
|
||||
if ( (Item[ pSoldier->usAttackingWeapon ].usItemClass == IC_BLADE || Item[ pSoldier->usAttackingWeapon ].usItemClass == IC_PUNCH) && (pTarget->flags.uiStatusFlags & SOLDIER_BOXER) )
|
||||
if ( (Item[ pSoldier->usAttackingWeapon ].usItemClass == IC_BLADE || Item[ pSoldier->usAttackingWeapon ].usItemClass == IC_PUNCH) && BOXER(pTarget) )
|
||||
{
|
||||
// knife or brass knuckles disqualify the player!
|
||||
BoxingPlayerDisqualified( pSoldier, BAD_ATTACK );
|
||||
@@ -9334,7 +9334,7 @@ BOOLEAN ProcessImplicationsOfPCAttack( SOLDIERTYPE * pSoldier, SOLDIERTYPE ** pp
|
||||
//gTacticalStatus.bBoxingState = NOT_BOXING;
|
||||
SetBoxingState( NOT_BOXING );
|
||||
// if we are attacking a boxer we should set them to neutral (temporarily) so that the rest of the civgroup code works...
|
||||
if ( (pTarget->bTeam == CIV_TEAM) && (pTarget->flags.uiStatusFlags & SOLDIER_BOXER) )
|
||||
if ( (pTarget->bTeam == CIV_TEAM) && BOXER(pTarget) )
|
||||
{
|
||||
SetSoldierNeutral( pTarget );
|
||||
}
|
||||
@@ -9481,7 +9481,7 @@ BOOLEAN ProcessImplicationsOfPCAttack( SOLDIERTYPE * pSoldier, SOLDIERTYPE ** pp
|
||||
//TriggerNPCWithIHateYouQuote( pTarget->ubProfile );
|
||||
}
|
||||
}
|
||||
else if ( pTarget->ubCivilianGroup != NON_CIV_GROUP && !( pTarget->flags.uiStatusFlags & SOLDIER_BOXER ) )
|
||||
else if ( pTarget->ubCivilianGroup != NON_CIV_GROUP && !BOXER(pTarget) )
|
||||
{
|
||||
// Firing at a civ in a civ group who isn't hostile... if anyone in that civ group can see this
|
||||
// going on they should become hostile.
|
||||
@@ -10927,7 +10927,7 @@ void TurnCoatAttemptMessageBoxCallBack( UINT8 ubExitValue )
|
||||
UINT8 approachchance = MercPtrs[gusSelectedSoldier]->GetTurncoatConvinctionChance( prisonerdialoguetargetID, approachselected );
|
||||
|
||||
// you can never turn a VIP (though we don't tell the player if someone is a VIP, lest they have an exploit to find out)
|
||||
if ( pSoldier->usSoldierFlagMask & SOLDIER_VIP )
|
||||
if (ISVIP(pSoldier))
|
||||
approachchance = 0;
|
||||
|
||||
// as using random numbers to pass the check would result in players savescumming, use a number based on the soldier's stats
|
||||
|
||||
@@ -4234,7 +4234,7 @@ BOOLEAN HandleSoldierDeath( SOLDIERTYPE *pSoldier , BOOLEAN *pfMadeCorpse )
|
||||
}
|
||||
|
||||
// Flugente: VIPs
|
||||
if ( pSoldier->usSoldierFlagMask & SOLDIER_VIP )
|
||||
if (ISVIP(pSoldier))
|
||||
{
|
||||
DeleteVIP( pSoldier->sSectorX, pSoldier->sSectorY );
|
||||
}
|
||||
|
||||
@@ -9847,7 +9847,7 @@ void SOLDIERTYPE::BeginSoldierGetup( void )
|
||||
else
|
||||
{
|
||||
this->bTurnsCollapsed++;
|
||||
if ( (gTacticalStatus.bBoxingState == BOXING) && (this->flags.uiStatusFlags & SOLDIER_BOXER) )
|
||||
if ( (gTacticalStatus.bBoxingState == BOXING) && (BOXER(this)) )
|
||||
{
|
||||
if ( this->bTurnsCollapsed > 1 )
|
||||
{
|
||||
|
||||
@@ -37,8 +37,10 @@
|
||||
#define TANK( p ) (p->ubBodyType == TANK_NE || p->ubBodyType == TANK_NW )
|
||||
#define ENEMYROBOT( p ) (p->ubBodyType == ROBOTNOWEAPON && p->bTeam == ENEMY_TEAM)
|
||||
#define ARMED_VEHICLE( p ) ( TANK( p ) || COMBAT_JEEP(p) )
|
||||
#define BOXER( p ) ( p->flags.uiStatusFlags & SOLDIER_BOXER )
|
||||
#define ISVIP( p ) ( p->usSoldierFlagMask & SOLDIER_VIP )
|
||||
|
||||
//#define OK_ENTERABLE_VEHICLE( p ) ( ( p->flags.uiStatusFlags & SOLDIER_VEHICLE ) && !TANK( p ) && p->stats.bLife >= OKLIFE )
|
||||
#define OK_ENTERABLE_VEHICLE( p ) ( ( p->flags.uiStatusFlags & SOLDIER_VEHICLE ) && (!ARMED_VEHICLE( p ) || !(p->flags.uiStatusFlags & SOLDIER_ENEMY) ) && p->stats.bLife >= OKLIFE )
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -4260,10 +4260,10 @@ BOOLEAN UseHandToHand( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo, BOOLEAN fStea
|
||||
|
||||
// sevenfm: bonus for boxers for attack from the back
|
||||
if (iHitChance < 100 &&
|
||||
(pSoldier->flags.uiStatusFlags & SOLDIER_BOXER) &&
|
||||
BOXER(pSoldier) &&
|
||||
!pSoldier->bBlindedCounter &&
|
||||
gAnimControl[pTargetSoldier->usAnimState].ubEndHeight > ANIM_PRONE &&
|
||||
(pTargetSoldier->flags.uiStatusFlags & SOLDIER_BOXER) &&
|
||||
BOXER(pTargetSoldier) &&
|
||||
pTargetSoldier->usSoldierFlagMask2 & SOLDIER_BACK_ATTACK)
|
||||
{
|
||||
iHitChance += (100 - iHitChance) / 2;
|
||||
@@ -4879,7 +4879,7 @@ BOOLEAN UseHandToHand( SOLDIERTYPE *pSoldier, INT32 sTargetGridNo, BOOLEAN fStea
|
||||
if (pTargetSoldier->bActionPoints > 0 &&
|
||||
gGameOptions.fNewTraitSystem &&
|
||||
gTacticalStatus.bBoxingState == BOXING &&
|
||||
(pTargetSoldier->flags.uiStatusFlags & SOLDIER_BOXER) &&
|
||||
BOXER(pTargetSoldier) &&
|
||||
Chance(ubCounterattackChance) &&
|
||||
IS_MERC_BODY_TYPE(pSoldier) &&
|
||||
IS_MERC_BODY_TYPE(pTargetSoldier) &&
|
||||
@@ -9719,7 +9719,7 @@ UINT32 CalcChanceHTH( SOLDIERTYPE * pAttacker,SOLDIERTYPE *pDefender, INT16 ubAi
|
||||
{
|
||||
// Changed from DG by CJC to give higher chances of hitting with a stab or punch
|
||||
// sevenfm: lowered chance for boxers
|
||||
if (pAttacker->flags.uiStatusFlags & SOLDIER_BOXER)
|
||||
if (BOXER(pAttacker))
|
||||
iChance = 50 + (iAttRating - iDefRating) / 3;
|
||||
else
|
||||
iChance = 67 + (iAttRating - iDefRating) / 3;
|
||||
@@ -9774,8 +9774,8 @@ UINT32 CalcChanceHTH( SOLDIERTYPE * pAttacker,SOLDIERTYPE *pDefender, INT16 ubAi
|
||||
|
||||
// sevenfm: bonus for boxers for attacking from the back
|
||||
if (ubMode == HTH_MODE_PUNCH &&
|
||||
(pAttacker->flags.uiStatusFlags & SOLDIER_BOXER) &&
|
||||
(pDefender->flags.uiStatusFlags & SOLDIER_BOXER) &&
|
||||
BOXER(pAttacker) &&
|
||||
BOXER(pDefender) &&
|
||||
iChance < 100 &&
|
||||
!pAttacker->bBlindedCounter &&
|
||||
gAnimControl[pDefender->usAnimState].ubEndHeight > ANIM_PRONE &&
|
||||
|
||||
Reference in New Issue
Block a user