mirror of
https://github.com/1dot13/source.git
synced 2026-08-05 14:00:23 +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:
+65
-61
@@ -3,7 +3,7 @@
|
||||
#include "PreBattle Interface.h"
|
||||
#include "Intro.h"
|
||||
#else
|
||||
#include "Soldier Control.h"
|
||||
|
||||
#include "Overhead.h"
|
||||
#include "Boxing.h"
|
||||
#include "Render Fun.h"
|
||||
@@ -44,11 +44,16 @@
|
||||
#include "screenids.h"
|
||||
#endif
|
||||
|
||||
//forward declarations of common classes to eliminate includes
|
||||
class OBJECTTYPE;
|
||||
class SOLDIERTYPE;
|
||||
|
||||
|
||||
INT16 sStatueGridNos[] = { 13829, 13830, 13669, 13670 };
|
||||
|
||||
SOLDIERTYPE *gpKillerSoldier = NULL;
|
||||
INT16 gsGridNo;
|
||||
INT8 gbLevel;
|
||||
INT16 gsGridNo;
|
||||
INT8 gbLevel;
|
||||
|
||||
|
||||
// This function checks if our statue exists in the current sector at given gridno
|
||||
@@ -88,21 +93,21 @@ void ChangeO3SectorStatue( BOOLEAN fFromExplosion )
|
||||
ApplyMapChangesToMapTempFile( TRUE );
|
||||
// Remove it!
|
||||
// Get index for it...
|
||||
GetTileIndexFromTypeSubIndex( EIGHTOSTRUCT, (INT8)( 5 ), &usTileIndex );
|
||||
GetTileIndexFromTypeSubIndex( EIGHTOSTRUCT, (INT8)( 5 ), &usTileIndex );
|
||||
RemoveStruct( 13830, usTileIndex );
|
||||
|
||||
|
||||
// Add new one...
|
||||
if ( fFromExplosion )
|
||||
{
|
||||
// Use damaged peice
|
||||
GetTileIndexFromTypeSubIndex( EIGHTOSTRUCT, (INT8)( 7 ), &usTileIndex );
|
||||
GetTileIndexFromTypeSubIndex( EIGHTOSTRUCT, (INT8)( 7 ), &usTileIndex );
|
||||
}
|
||||
else
|
||||
{
|
||||
GetTileIndexFromTypeSubIndex( EIGHTOSTRUCT, (INT8)( 8 ), &usTileIndex );
|
||||
GetTileIndexFromTypeSubIndex( EIGHTOSTRUCT, (INT8)( 8 ), &usTileIndex );
|
||||
// Play sound...
|
||||
|
||||
PlayJA2Sample( OPEN_STATUE, RATE_11025, HIGHVOLUME, 1, MIDDLEPAN );
|
||||
PlayJA2Sample( OPEN_STATUE, RATE_11025, HIGHVOLUME, 1, MIDDLEPAN );
|
||||
|
||||
}
|
||||
AddStructToHead( 13830, usTileIndex );
|
||||
@@ -111,7 +116,7 @@ void ChangeO3SectorStatue( BOOLEAN fFromExplosion )
|
||||
ExitGrid.ubGotoSectorX = 3;
|
||||
ExitGrid.ubGotoSectorY = MAP_ROW_O;
|
||||
ExitGrid.ubGotoSectorZ = 1;
|
||||
ExitGrid.usGridNo = 13037;
|
||||
ExitGrid.sGridNo = 13037;
|
||||
|
||||
AddExitGridToWorld( 13669, &ExitGrid );
|
||||
gpWorldLevelData[ 13669 ].uiFlags |= MAPELEMENT_REVEALED;
|
||||
@@ -142,7 +147,7 @@ void BeginHandleDeidrannaDeath( SOLDIERTYPE *pKillerSoldier, INT16 sGridNo, INT8
|
||||
{
|
||||
gpKillerSoldier = pKillerSoldier;
|
||||
gsGridNo = sGridNo;
|
||||
gbLevel = bLevel;
|
||||
gbLevel = bLevel;
|
||||
|
||||
// Lock the UI.....
|
||||
gTacticalStatus.uiFlags |= ENGAGED_IN_CONV;
|
||||
@@ -159,7 +164,6 @@ void HandleDeidrannaDeath( SOLDIERTYPE *pKillerSoldier, INT16 sGridNo, INT8 bLev
|
||||
{
|
||||
SOLDIERTYPE *pTeamSoldier;
|
||||
INT32 cnt;
|
||||
INT16 sDistVisible = FALSE;
|
||||
UINT8 ubKillerSoldierID = NOBODY;
|
||||
|
||||
// Start victory music here...
|
||||
@@ -168,26 +172,26 @@ void HandleDeidrannaDeath( SOLDIERTYPE *pKillerSoldier, INT16 sGridNo, INT8 bLev
|
||||
|
||||
if ( pKillerSoldier )
|
||||
{
|
||||
TacticalCharacterDialogue( pKillerSoldier, QUOTE_KILLING_DEIDRANNA );
|
||||
TacticalCharacterDialogue( pKillerSoldier, QUOTE_KILLING_DEIDRANNA );
|
||||
ubKillerSoldierID = pKillerSoldier->ubID;
|
||||
}
|
||||
|
||||
// STEP 1 ) START ALL QUOTES GOING!
|
||||
// OK - loop through all witnesses and see if they want to say something abou this...
|
||||
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
|
||||
// run through list
|
||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ )
|
||||
{
|
||||
if ( cnt != ubKillerSoldierID )
|
||||
{
|
||||
if ( OK_INSECTOR_MERC( pTeamSoldier ) && !( pTeamSoldier->uiStatusFlags & SOLDIER_GASSED ) && !AM_AN_EPC( pTeamSoldier ) )
|
||||
if ( OK_INSECTOR_MERC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !AM_AN_EPC( pTeamSoldier ) )
|
||||
{
|
||||
if ( QuoteExp_WitnessDeidrannaDeath[ pTeamSoldier->ubProfile ] )
|
||||
{
|
||||
if ( SoldierTo3DLocationLineOfSightTest( pTeamSoldier, sGridNo, bLevel, 3, TRUE, CALC_FROM_ALL_DIRS ) )
|
||||
{
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_KILLING_DEIDRANNA );
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_KILLING_DEIDRANNA );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -231,11 +235,11 @@ void DoneFadeOutKilledQueen( void )
|
||||
// For one, loop through our current squad and move them over
|
||||
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
|
||||
// look for all mercs on the same team,
|
||||
// look for all mercs on the same team,
|
||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++)
|
||||
{
|
||||
{
|
||||
// Are we in this sector, On the current squad?
|
||||
if ( pSoldier->bActive && pSoldier->bLife >= OKLIFE && pSoldier->bInSector && pSoldier->bAssignment == CurrentSquad( ) )
|
||||
if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && pSoldier->bInSector && pSoldier->bAssignment == CurrentSquad( ) )
|
||||
{
|
||||
gfTacticalTraversal = TRUE;
|
||||
SetGroupSectorValue( 3, MAP_ROW_P, 0, pSoldier->ubGroupID );
|
||||
@@ -249,23 +253,23 @@ void DoneFadeOutKilledQueen( void )
|
||||
pSoldier->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO;
|
||||
pSoldier->usStrategicInsertionData = 5687;
|
||||
// Set direction to face....
|
||||
pSoldier->ubInsertionDirection = 100 + NORTHWEST;
|
||||
pSoldier->ubInsertionDirection = 100 + NORTHWEST;
|
||||
}
|
||||
}
|
||||
|
||||
// Kill all enemies in world.....
|
||||
cnt = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID;
|
||||
|
||||
// look for all mercs on the same team,
|
||||
// look for all mercs on the same team,
|
||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ ENEMY_TEAM ].bLastID; cnt++,pTeamSoldier++)
|
||||
{
|
||||
{
|
||||
// Are we active and in sector.....
|
||||
if ( pTeamSoldier->bActive )
|
||||
if ( pTeamSoldier->bActive )
|
||||
{
|
||||
// For sure for flag thet they are dead is not set
|
||||
// Check for any more badguys
|
||||
// ON THE STRAGETY LAYER KILL BAD GUYS!
|
||||
if ( !pTeamSoldier->bNeutral && (pTeamSoldier->bSide != gbPlayerNum ) )
|
||||
if ( !pTeamSoldier->aiData.bNeutral && (pTeamSoldier->bSide != gbPlayerNum ) )
|
||||
{
|
||||
ProcessQueenCmdImplicationsOfDeath( pTeamSoldier );
|
||||
}
|
||||
@@ -284,9 +288,9 @@ void DoneFadeOutKilledQueen( void )
|
||||
HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_QUEEN_BATTLE_WON, 3, MAP_ROW_P, 0 );
|
||||
|
||||
SetMusicMode( MUSIC_TACTICAL_VICTORY );
|
||||
|
||||
|
||||
SetThisSectorAsPlayerControlled( gWorldSectorX, gWorldSectorY, gbWorldSectorZ, TRUE );
|
||||
|
||||
|
||||
// ATE: Force change of level set z to 1
|
||||
gbWorldSectorZ = 1;
|
||||
|
||||
@@ -298,8 +302,8 @@ void DoneFadeOutKilledQueen( void )
|
||||
SectorInfo[ SEC_P3 ].ubTroopsInBattle = 0;
|
||||
SectorInfo[ SEC_P3 ].ubElitesInBattle = 0;
|
||||
|
||||
// ATE: GEt rid of elliot in P3...
|
||||
gMercProfiles[ ELLIOT ].sSectorX = 1;
|
||||
// ATE: GEt rid of elliot in P3...
|
||||
gMercProfiles[ ELLIOT ].sSectorX = 1;
|
||||
|
||||
ChangeNpcToDifferentSector( DEREK, 3, MAP_ROW_P, 0 );
|
||||
ChangeNpcToDifferentSector( OLIVER, 3, MAP_ROW_P, 0 );
|
||||
@@ -323,7 +327,7 @@ void HandleDoneLastKilledQueenQuote( )
|
||||
{
|
||||
gFadeOutDoneCallback = DoneFadeOutKilledQueen;
|
||||
|
||||
FadeOutGameScreen( );
|
||||
FadeOutGameScreen( );
|
||||
}
|
||||
|
||||
|
||||
@@ -333,18 +337,18 @@ void EndQueenDeathEndgameBeginEndCimenatic( )
|
||||
SOLDIERTYPE *pSoldier;
|
||||
|
||||
// Start end cimimatic....
|
||||
gTacticalStatus.uiFlags |= IN_ENDGAME_SEQUENCE;
|
||||
gTacticalStatus.uiFlags |= IN_ENDGAME_SEQUENCE;
|
||||
|
||||
// first thing is to loop through team and say end quote...
|
||||
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
|
||||
// look for all mercs on the same team,
|
||||
// look for all mercs on the same team,
|
||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pSoldier++)
|
||||
{
|
||||
{
|
||||
// Are we in this sector, On the current squad?
|
||||
if ( pSoldier->bActive && pSoldier->bLife >= OKLIFE && !AM_AN_EPC( pSoldier ) )
|
||||
if ( pSoldier->bActive && pSoldier->stats.bLife >= OKLIFE && !AM_AN_EPC( pSoldier ) )
|
||||
{
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_END_GAME_COMMENT );
|
||||
TacticalCharacterDialogue( pSoldier, QUOTE_END_GAME_COMMENT );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -368,7 +372,7 @@ void DoneFadeOutEndCinematic( void )
|
||||
{
|
||||
// DAVE PUT SMAKER STUFF HERE!!!!!!!!!!!!
|
||||
// :)
|
||||
gTacticalStatus.uiFlags &= (~IN_ENDGAME_SEQUENCE);
|
||||
gTacticalStatus.uiFlags &= (~IN_ENDGAME_SEQUENCE);
|
||||
|
||||
|
||||
// For now, just quit the freaken game...
|
||||
@@ -388,7 +392,7 @@ void HandleDoneLastEndGameQuote( )
|
||||
|
||||
gFadeOutDoneCallback = DoneFadeOutEndCinematic;
|
||||
|
||||
FadeOutGameScreen( );
|
||||
FadeOutGameScreen( );
|
||||
}
|
||||
|
||||
|
||||
@@ -407,12 +411,12 @@ void BeginHandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT16 sGridNo, INT
|
||||
|
||||
gpKillerSoldier = pKillerSoldier;
|
||||
gsGridNo = sGridNo;
|
||||
gbLevel = bLevel;
|
||||
gbLevel = bLevel;
|
||||
|
||||
// Lock the UI.....
|
||||
gTacticalStatus.uiFlags |= ENGAGED_IN_CONV;
|
||||
gTacticalStatus.uiFlags |= ENGAGED_IN_CONV;
|
||||
// Increment refrence count...
|
||||
giNPCReferenceCount = 1;
|
||||
giNPCReferenceCount = 1;
|
||||
|
||||
// gTacticalStatus.uiFlags |= IN_DEIDRANNA_ENDGAME;
|
||||
|
||||
@@ -422,22 +426,22 @@ void BeginHandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT16 sGridNo, INT
|
||||
// Kill all enemies in creature team.....
|
||||
cnt = gTacticalStatus.Team[ CREATURE_TEAM ].bFirstID;
|
||||
|
||||
// look for all mercs on the same team,
|
||||
// look for all mercs on the same team,
|
||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ CREATURE_TEAM ].bLastID; cnt++,pTeamSoldier++)
|
||||
{
|
||||
{
|
||||
// Are we active and ALIVE and in sector.....
|
||||
if ( pTeamSoldier->bActive && pTeamSoldier->bLife > 0 )
|
||||
if ( pTeamSoldier->bActive && pTeamSoldier->stats.bLife > 0 )
|
||||
{
|
||||
// For sure for flag thet they are dead is not set
|
||||
// Check for any more badguys
|
||||
// ON THE STRAGETY LAYER KILL BAD GUYS!
|
||||
|
||||
// HELLO! THESE ARE CREATURES! THEY CAN'T BE NEUTRAL!
|
||||
//if ( !pTeamSoldier->bNeutral && (pTeamSoldier->bSide != gbPlayerNum ) )
|
||||
// HELLO! THESE ARE CREATURES! THEY CAN'T BE NEUTRAL!
|
||||
//if ( !pTeamSoldier->aiData.bNeutral && (pTeamSoldier->bSide != gbPlayerNum ) )
|
||||
{
|
||||
// gTacticalStatus.ubAttackBusyCount++;
|
||||
// gTacticalStatus.ubAttackBusyCount++;
|
||||
DebugAttackBusy( "Killing off a queen ally.\n");
|
||||
EVENT_SoldierGotHit( pTeamSoldier, 0, 10000, 0, pTeamSoldier->ubDirection, 320, NOBODY , FIRE_WEAPON_NO_SPECIAL, pTeamSoldier->bAimShotLocation, 0, NOWHERE );
|
||||
pTeamSoldier->EVENT_SoldierGotHit( 0, 10000, 0, pTeamSoldier->ubDirection, 320, NOBODY , FIRE_WEAPON_NO_SPECIAL, pTeamSoldier->bAimShotLocation, 0, NOWHERE );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -449,7 +453,6 @@ void HandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT16 sGridNo, INT8 bLe
|
||||
{
|
||||
SOLDIERTYPE *pTeamSoldier;
|
||||
INT32 cnt;
|
||||
INT16 sDistVisible = FALSE;
|
||||
UINT8 ubKillerSoldierID = NOBODY;
|
||||
|
||||
// Start victory music here...
|
||||
@@ -457,26 +460,26 @@ void HandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT16 sGridNo, INT8 bLe
|
||||
|
||||
if ( pKillerSoldier )
|
||||
{
|
||||
TacticalCharacterDialogue( pKillerSoldier, QUOTE_KILLING_QUEEN );
|
||||
TacticalCharacterDialogue( pKillerSoldier, QUOTE_KILLING_QUEEN );
|
||||
ubKillerSoldierID = pKillerSoldier->ubID;
|
||||
}
|
||||
|
||||
// STEP 1 ) START ALL QUOTES GOING!
|
||||
// OK - loop through all witnesses and see if they want to say something abou this...
|
||||
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
|
||||
// run through list
|
||||
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; cnt++,pTeamSoldier++ )
|
||||
{
|
||||
if ( cnt != ubKillerSoldierID )
|
||||
{
|
||||
if ( OK_INSECTOR_MERC( pTeamSoldier ) && !( pTeamSoldier->uiStatusFlags & SOLDIER_GASSED ) && !AM_AN_EPC( pTeamSoldier ) )
|
||||
if ( OK_INSECTOR_MERC( pTeamSoldier ) && !( pTeamSoldier->flags.uiStatusFlags & SOLDIER_GASSED ) && !AM_AN_EPC( pTeamSoldier ) )
|
||||
{
|
||||
if ( QuoteExp_WitnessQueenBugDeath[ pTeamSoldier->ubProfile ] )
|
||||
{
|
||||
if ( SoldierTo3DLocationLineOfSightTest( pTeamSoldier, sGridNo, bLevel, 3, TRUE, CALC_FROM_ALL_DIRS ) )
|
||||
{
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_KILLING_QUEEN );
|
||||
TacticalCharacterDialogue( pTeamSoldier, QUOTE_KILLING_QUEEN );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -485,16 +488,17 @@ void HandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT16 sGridNo, INT8 bLe
|
||||
|
||||
|
||||
// Set fact that she is dead!
|
||||
if ( CheckFact( FACT_QUEEN_DEAD, 0 ) )
|
||||
{
|
||||
EndQueenDeathEndgameBeginEndCimenatic( );
|
||||
}
|
||||
else
|
||||
{
|
||||
// Unset flags...
|
||||
gTacticalStatus.uiFlags &= (~ENGAGED_IN_CONV );
|
||||
// Increment refrence count...
|
||||
giNPCReferenceCount = 0;
|
||||
}
|
||||
if ( CheckFact( FACT_QUEEN_DEAD, 0 ) )
|
||||
{
|
||||
EndQueenDeathEndgameBeginEndCimenatic( );
|
||||
}
|
||||
else
|
||||
{
|
||||
// Unset flags...
|
||||
gTacticalStatus.uiFlags &= (~ENGAGED_IN_CONV );
|
||||
// Increment refrence count...
|
||||
giNPCReferenceCount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user