mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +02:00
Merged New Inventory Project into main branch
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@1871 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+38
-38
@@ -56,18 +56,18 @@ void ExitBoxing( void )
|
||||
|
||||
if ( pSoldier != NULL )
|
||||
{
|
||||
if ( ( pSoldier->uiStatusFlags & SOLDIER_BOXER ) && InARoom( pSoldier->sGridNo, &ubRoom ) && ubRoom == BOXING_RING )
|
||||
if ( ( pSoldier->flags.uiStatusFlags & SOLDIER_BOXER ) && InARoom( pSoldier->sGridNo, &ubRoom ) && ubRoom == BOXING_RING )
|
||||
{
|
||||
if ( pSoldier->uiStatusFlags & SOLDIER_PC )
|
||||
if ( pSoldier->flags.uiStatusFlags & SOLDIER_PC )
|
||||
{
|
||||
if ( ubPass == 0 ) // pass 0, only handle AI
|
||||
{
|
||||
continue;
|
||||
}
|
||||
// put guy under AI control temporarily
|
||||
pSoldier->uiStatusFlags |= SOLDIER_PCUNDERAICONTROL;
|
||||
pSoldier->flags.uiStatusFlags |= SOLDIER_PCUNDERAICONTROL;
|
||||
//SB: this flag don't allow merc leave the ring
|
||||
pSoldier->uiStatusFlags &= ~SOLDIER_ENGAGEDINACTION;
|
||||
pSoldier->flags.uiStatusFlags &= ~SOLDIER_ENGAGEDINACTION;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -80,19 +80,19 @@ void ExitBoxing( void )
|
||||
RecalculateOppCntsDueToBecomingNeutral( pSoldier );
|
||||
}
|
||||
CancelAIAction( pSoldier, TRUE );
|
||||
pSoldier->bAlertStatus = STATUS_GREEN;
|
||||
pSoldier->bUnderFire = 0;
|
||||
pSoldier->aiData.bAlertStatus = STATUS_GREEN;
|
||||
pSoldier->aiData.bUnderFire = 0;
|
||||
|
||||
// if necessary, revive boxer so he can leave ring
|
||||
if (pSoldier->bLife > 0 && (pSoldier->bLife < OKLIFE || pSoldier->bBreath < OKBREATH ) )
|
||||
if (pSoldier->stats.bLife > 0 && (pSoldier->stats.bLife < OKLIFE || pSoldier->bBreath < OKBREATH ) )
|
||||
{
|
||||
pSoldier->bLife = __max( OKLIFE * 2, pSoldier->bLife );
|
||||
pSoldier->stats.bLife = __max( OKLIFE * 2, pSoldier->stats.bLife );
|
||||
if (pSoldier->bBreath < 100)
|
||||
{
|
||||
// deduct -ve BPs to grant some BPs back (properly)
|
||||
DeductPoints( pSoldier, 0, (INT16) - ( (100 - pSoldier->bBreath) * 100 ) );
|
||||
}
|
||||
BeginSoldierGetup( pSoldier );
|
||||
pSoldier->BeginSoldierGetup( );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -135,7 +135,7 @@ void BoxingPlayerDisqualified( SOLDIERTYPE * pOffender, INT8 bReason )
|
||||
{
|
||||
if (bReason == BOXER_OUT_OF_RING || bReason == NON_BOXER_IN_RING)
|
||||
{
|
||||
EVENT_StopMerc( pOffender, pOffender->sGridNo, pOffender->ubDirection );
|
||||
pOffender->EVENT_StopMerc( pOffender->sGridNo, pOffender->ubDirection );
|
||||
}
|
||||
SetBoxingState( DISQUALIFIED );
|
||||
TriggerNPCRecord( DARREN, 21 );
|
||||
@@ -216,11 +216,11 @@ void CountPeopleInBoxingRingAndDoActions( void )
|
||||
}
|
||||
ubTotalInRing++;
|
||||
|
||||
if ( pSoldier->uiStatusFlags & SOLDIER_PC )
|
||||
if ( pSoldier->flags.uiStatusFlags & SOLDIER_PC )
|
||||
{
|
||||
ubPlayersInRing++;
|
||||
|
||||
if ( !pNonBoxingPlayer && !(pSoldier->uiStatusFlags & SOLDIER_BOXER) )
|
||||
if ( !pNonBoxingPlayer && !(pSoldier->flags.uiStatusFlags & SOLDIER_BOXER) )
|
||||
{
|
||||
pNonBoxingPlayer = pSoldier;
|
||||
}
|
||||
@@ -267,10 +267,10 @@ void CountPeopleInBoxingRingAndDoActions( void )
|
||||
// ladieees and gennleman, we have a fight!
|
||||
for ( uiLoop = 0; uiLoop < 2; uiLoop++ )
|
||||
{
|
||||
if ( ! ( pInRing[ uiLoop ]->uiStatusFlags & SOLDIER_BOXER ) )
|
||||
if ( ! ( pInRing[ uiLoop ]->flags.uiStatusFlags & SOLDIER_BOXER ) )
|
||||
{
|
||||
// set as boxer!
|
||||
pInRing[ uiLoop ]->uiStatusFlags |= SOLDIER_BOXER;
|
||||
pInRing[ uiLoop ]->flags.uiStatusFlags |= SOLDIER_BOXER;
|
||||
}
|
||||
}
|
||||
// start match!
|
||||
@@ -317,7 +317,7 @@ BOOLEAN CheckOnBoxers( void )
|
||||
{
|
||||
if ( FindObjClass( MercPtrs[ ubID ], IC_WEAPON ) == NO_SLOT &&
|
||||
IS_MERC_BODY_TYPE( MercPtrs[ ubID ] ) )
|
||||
{
|
||||
{
|
||||
// no weapon and not a civilian so this guy is a boxer
|
||||
gubBoxerID[ uiLoop ] = ubID;
|
||||
}
|
||||
@@ -359,29 +359,29 @@ BOOLEAN PickABoxer( void )
|
||||
if ( gfBoxerFought[ uiLoop ] )
|
||||
{
|
||||
// pathetic attempt to prevent multiple AI boxers
|
||||
MercPtrs[ gubBoxerID[ uiLoop ] ]->uiStatusFlags &= ~SOLDIER_BOXER;
|
||||
MercPtrs[ gubBoxerID[ uiLoop ] ]->flags.uiStatusFlags &= ~SOLDIER_BOXER;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
pBoxer = MercPtrs[ gubBoxerID[ uiLoop ] ];
|
||||
// pick this boxer!
|
||||
if ( pBoxer->bActive && pBoxer->bInSector && pBoxer->bLife >= OKLIFE )
|
||||
if ( pBoxer->bActive && pBoxer->bInSector && pBoxer->stats.bLife >= OKLIFE )
|
||||
{
|
||||
pBoxer->uiStatusFlags |= SOLDIER_BOXER;
|
||||
pBoxer->flags.uiStatusFlags |= SOLDIER_BOXER;
|
||||
SetSoldierNonNeutral( pBoxer );
|
||||
RecalculateOppCntsDueToNoLongerNeutral( pBoxer );
|
||||
CancelAIAction( pBoxer, TRUE );
|
||||
RESETTIMECOUNTER( pBoxer->AICounter, 0 );
|
||||
RESETTIMECOUNTER( pBoxer->timeCounters.AICounter, 0 );
|
||||
gfBoxerFought[ uiLoop ] = TRUE;
|
||||
// improve stats based on the # of rests these guys have had
|
||||
pBoxer->bStrength = __min( 100, pBoxer->bStrength += gubBoxersRests * 5 );
|
||||
pBoxer->bDexterity = __min( 100, pBoxer->bDexterity + gubBoxersRests * 5 );
|
||||
pBoxer->bAgility = __min( 100, pBoxer->bAgility + gubBoxersRests * 5 );
|
||||
pBoxer->bLifeMax = __min( 100, pBoxer->bLifeMax + gubBoxersRests * 5 );
|
||||
// give the 3rd boxer martial arts
|
||||
pBoxer->stats.bStrength = __min( 100, pBoxer->stats.bStrength += gubBoxersRests * 5 );
|
||||
pBoxer->stats.bDexterity = __min( 100, pBoxer->stats.bDexterity + gubBoxersRests * 5 );
|
||||
pBoxer->stats.bAgility = __min( 100, pBoxer->stats.bAgility + gubBoxersRests * 5 );
|
||||
pBoxer->stats.bLifeMax = __min( 100, pBoxer->stats.bLifeMax + gubBoxersRests * 5 );
|
||||
// give the 3rd boxer martial arts
|
||||
if ( (uiLoop == NUM_BOXERS - 1) && pBoxer->ubBodyType == REGMALE )
|
||||
{
|
||||
pBoxer->ubSkillTrait1 = MARTIALARTS;
|
||||
pBoxer->stats.ubSkillTrait1 = MARTIALARTS;
|
||||
}
|
||||
return( TRUE );
|
||||
}
|
||||
@@ -413,9 +413,9 @@ BOOLEAN BoxerAvailable( void )
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
// NOTE THIS IS NOW BROKEN BECAUSE NPC.C ASSUMES THAT BOXERSAVAILABLE < 3 IS A
|
||||
// NOTE THIS IS NOW BROKEN BECAUSE NPC.C ASSUMES THAT BOXERSAVAILABLE < 3 IS A
|
||||
// SEQUEL FIGHT. Maybe we could check Kingpin's location instead!
|
||||
UINT8 BoxersAvailable( void )
|
||||
UINT8 BoxersAvailable( void )
|
||||
{
|
||||
UINT8 ubLoop;
|
||||
UINT8 ubCount = 0;
|
||||
@@ -440,7 +440,7 @@ BOOLEAN AnotherFightPossible( void )
|
||||
UINT8 ubLoop;
|
||||
SOLDIERTYPE * pSoldier;
|
||||
UINT8 ubAvailable;
|
||||
|
||||
|
||||
ubAvailable = BoxersAvailable();
|
||||
|
||||
if ( ubAvailable == NUM_BOXERS || ubAvailable == 0 )
|
||||
@@ -453,7 +453,7 @@ BOOLEAN AnotherFightPossible( void )
|
||||
pSoldier = MercPtrs[ ubLoop ];
|
||||
for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++,pSoldier++ )
|
||||
{
|
||||
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->bLife > (OKLIFE + 5) && !pSoldier->bCollapsed )
|
||||
if ( pSoldier->bActive && pSoldier->bInSector && pSoldier->stats.bLife > (OKLIFE + 5) && !pSoldier->bCollapsed )
|
||||
{
|
||||
return( TRUE );
|
||||
}
|
||||
@@ -472,19 +472,19 @@ void BoxingMovementCheck( SOLDIERTYPE * pSoldier )
|
||||
// someone moving in/into the ring
|
||||
CountPeopleInBoxingRingAndDoActions();
|
||||
}
|
||||
else if ( ( gTacticalStatus.bBoxingState == BOXING ) && ( pSoldier->uiStatusFlags & SOLDIER_BOXER ) )
|
||||
else if ( ( gTacticalStatus.bBoxingState == BOXING ) && ( pSoldier->flags.uiStatusFlags & SOLDIER_BOXER ) )
|
||||
{
|
||||
// boxer stepped out of the ring!
|
||||
BoxingPlayerDisqualified( pSoldier, BOXER_OUT_OF_RING );
|
||||
// add the history record here.
|
||||
AddHistoryToPlayersLog( HISTORY_DISQUALIFIED_BOXING, pSoldier->ubProfile, GetWorldTotalMin(), gWorldSectorX, gWorldSectorY );
|
||||
// make not a boxer any more
|
||||
pSoldier->uiStatusFlags &= ~(SOLDIER_BOXER);
|
||||
pSoldier->uiStatusFlags &= (~SOLDIER_PCUNDERAICONTROL);
|
||||
pSoldier->flags.uiStatusFlags &= ~(SOLDIER_BOXER);
|
||||
pSoldier->flags.uiStatusFlags &= (~SOLDIER_PCUNDERAICONTROL);
|
||||
}
|
||||
}
|
||||
|
||||
void SetBoxingState( INT8 bNewState )
|
||||
void SetBoxingState( INT8 bNewState )
|
||||
{
|
||||
if ( gTacticalStatus.bBoxingState == NOT_BOXING )
|
||||
{
|
||||
@@ -501,7 +501,7 @@ void SetBoxingState( INT8 bNewState )
|
||||
{
|
||||
// unpause time
|
||||
UnPauseGame();
|
||||
|
||||
|
||||
if ( BoxersAvailable() == NUM_BOXERS )
|
||||
{
|
||||
// set one boxer to be set as boxed so that the game will allow another
|
||||
@@ -523,9 +523,9 @@ void ClearAllBoxerFlags( void )
|
||||
|
||||
for( uiSlot = 0; uiSlot < guiNumMercSlots; uiSlot++ )
|
||||
{
|
||||
if ( MercSlots[ uiSlot ] && MercSlots[ uiSlot ]->uiStatusFlags & SOLDIER_BOXER )
|
||||
if ( MercSlots[ uiSlot ] && MercSlots[ uiSlot ]->flags.uiStatusFlags & SOLDIER_BOXER )
|
||||
{
|
||||
MercSlots[ uiSlot ]->uiStatusFlags &= ~(SOLDIER_BOXER);
|
||||
MercSlots[ uiSlot ]->flags.uiStatusFlags &= ~(SOLDIER_BOXER);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user