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:
lalien
2008-03-08 15:15:25 +00:00
parent e16d166277
commit 43ca24dda8
649 changed files with 93359 additions and 82507 deletions
+250 -251
View File
@@ -18,8 +18,8 @@
#include "tile animation.h"
#include "Interactive Tiles.h"
#include "handle doors.h"
#include "sound control.h"
#include "interface.h"
#include "Sound Control.h"
#include "interface.h"
#include "keys.h"
#include "message.h"
#include "text.h"
@@ -52,7 +52,7 @@ void HandleDoorChangeFromGridNo( SOLDIERTYPE *pSoldier, INT16 sGridNo, BOOLEAN f
if ( pStructure == NULL )
{
#ifdef JA2TESTVERSION
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_TESTVERSION, L"ERROR: Told to handle door that does not exist at %d.", sGridNo );
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_TESTVERSION, L"ERROR: Told to handle door that does not exist at %d.", sGridNo );
#endif
return;
}
@@ -87,148 +87,148 @@ UINT16 GetAnimStateForInteraction( SOLDIERTYPE *pSoldier, BOOLEAN fDoor, UINT16
{
case OPEN_DOOR:
if ( pSoldier->ubBodyType == CRIPPLECIV )
{
return( CRIPPLE_OPEN_DOOR );
}
else
{
if ( fDoor )
{
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( OPEN_DOOR_CROUCHED );
}
else
{
return( usAnimState );
}
}
else
{
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( BEGIN_OPENSTRUCT_CROUCHED );
}
else
{
return( BEGIN_OPENSTRUCT );
}
}
}
if ( pSoldier->ubBodyType == CRIPPLECIV )
{
return( CRIPPLE_OPEN_DOOR );
}
else
{
if ( fDoor )
{
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( OPEN_DOOR_CROUCHED );
}
else
{
return( usAnimState );
}
}
else
{
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( BEGIN_OPENSTRUCT_CROUCHED );
}
else
{
return( BEGIN_OPENSTRUCT );
}
}
}
break;
case CLOSE_DOOR:
if ( pSoldier->ubBodyType == CRIPPLECIV )
{
return( CRIPPLE_CLOSE_DOOR );
}
else
{
if ( fDoor )
{
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( CLOSE_DOOR_CROUCHED );
}
else
{
return( usAnimState );
}
}
else
{
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( OPEN_STRUCT_CROUCHED );
}
else
{
return( OPEN_STRUCT );
}
}
}
if ( pSoldier->ubBodyType == CRIPPLECIV )
{
return( CRIPPLE_CLOSE_DOOR );
}
else
{
if ( fDoor )
{
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( CLOSE_DOOR_CROUCHED );
}
else
{
return( usAnimState );
}
}
else
{
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( OPEN_STRUCT_CROUCHED );
}
else
{
return( OPEN_STRUCT );
}
}
}
break;
case END_OPEN_DOOR:
if ( pSoldier->ubBodyType == CRIPPLECIV )
{
return( CRIPPLE_END_OPEN_DOOR );
}
else
{
if ( fDoor )
{
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( END_OPEN_DOOR_CROUCHED );
}
else
{
return( usAnimState );
}
}
else
{
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( END_OPENSTRUCT_CROUCHED );
}
else
{
return( END_OPENSTRUCT );
}
}
}
if ( pSoldier->ubBodyType == CRIPPLECIV )
{
return( CRIPPLE_END_OPEN_DOOR );
}
else
{
if ( fDoor )
{
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( END_OPEN_DOOR_CROUCHED );
}
else
{
return( usAnimState );
}
}
else
{
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( END_OPENSTRUCT_CROUCHED );
}
else
{
return( END_OPENSTRUCT );
}
}
}
break;
case END_OPEN_LOCKED_DOOR:
if ( pSoldier->ubBodyType == CRIPPLECIV )
{
return( CRIPPLE_END_OPEN_LOCKED_DOOR );
}
else
{
if ( fDoor )
{
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( END_OPEN_LOCKED_DOOR_CROUCHED );
}
else
{
return( END_OPEN_LOCKED_DOOR );
}
}
else
{
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( END_OPENSTRUCT_LOCKED_CROUCHED );
}
else
{
return( END_OPENSTRUCT_LOCKED );
}
}
}
if ( pSoldier->ubBodyType == CRIPPLECIV )
{
return( CRIPPLE_END_OPEN_LOCKED_DOOR );
}
else
{
if ( fDoor )
{
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( END_OPEN_LOCKED_DOOR_CROUCHED );
}
else
{
return( END_OPEN_LOCKED_DOOR );
}
}
else
{
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( END_OPENSTRUCT_LOCKED_CROUCHED );
}
else
{
return( END_OPENSTRUCT_LOCKED );
}
}
}
break;
case PICK_LOCK:
if ( gAnimControl[ pSoldier->usAnimState ].ubEndHeight != ANIM_STAND )
{
return( LOCKPICK_CROUCHED );
}
else
{
return( PICK_LOCK );
}
break;
return( LOCKPICK_CROUCHED );
}
else
{
return( PICK_LOCK );
}
break;
default:
// should never happen!
@@ -241,7 +241,7 @@ UINT16 GetAnimStateForInteraction( SOLDIERTYPE *pSoldier, BOOLEAN fDoor, UINT16
void InteractWithClosedDoor( SOLDIERTYPE *pSoldier, UINT8 ubHandleCode )
{
pSoldier->ubDoorHandleCode = ubHandleCode;
pSoldier->aiData.ubDoorHandleCode = ubHandleCode;
switch( ubHandleCode )
{
@@ -253,17 +253,17 @@ void InteractWithClosedDoor( SOLDIERTYPE *pSoldier, UINT8 ubHandleCode )
case HANDLE_DOOR_UNTRAP:
case HANDLE_DOOR_CROWBAR:
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, TRUE, OPEN_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, TRUE, OPEN_DOOR ), 0, FALSE );
break;
case HANDLE_DOOR_FORCE:
ChangeSoldierState( pSoldier, KICK_DOOR, 0 , FALSE );
pSoldier->ChangeSoldierState( KICK_DOOR, 0 , FALSE );
break;
case HANDLE_DOOR_LOCKPICK:
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, TRUE, PICK_LOCK ), 0 , FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, TRUE, PICK_LOCK ), 0 , FALSE );
break;
}
@@ -283,11 +283,11 @@ BOOLEAN DoTrapCheckOnStartingMenu( SOLDIERTYPE * pSoldier, DOOR * pDoor )
TacticalCharacterDialogue( pSoldier, QUOTE_BOOBYTRAP_ITEM );
UpdateDoorPerceivedValue( pDoor );
return( TRUE );
return( TRUE );
}
}
return( FALSE );
return( FALSE );
}
void InteractWithOpenableStruct( SOLDIERTYPE *pSoldier, STRUCTURE *pStructure, UINT8 ubDirection, BOOLEAN fDoor )
@@ -296,7 +296,7 @@ void InteractWithOpenableStruct( SOLDIERTYPE *pSoldier, STRUCTURE *pStructure, U
BOOLEAN fDoMenu = FALSE;
DOOR * pDoor = NULL;
DOOR_STATUS * pDoorStatus;
BOOLEAN fTrapsFound = FALSE;
BOOLEAN fTrapsFound = FALSE;
pBaseStructure = FindBaseStructure( pStructure );
@@ -307,21 +307,21 @@ void InteractWithOpenableStruct( SOLDIERTYPE *pSoldier, STRUCTURE *pStructure, U
if ( pDoorStatus && (pDoorStatus->ubFlags & DOOR_BUSY) )
{
// Send this guy into stationary stance....
EVENT_StopMerc( pSoldier, pSoldier->sGridNo, pSoldier->ubDirection );
pSoldier->EVENT_StopMerc( pSoldier->sGridNo, pSoldier->ubDirection );
if ( pSoldier->bTeam == gbPlayerNum )
{
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ DOOR_IS_BUSY ] );
}
else
{
DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("Trying to open door and door is busy: %d", pSoldier->ubID ) );
}
else
{
DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String("Trying to open door and door is busy: %d", pSoldier->ubID ) );
}
return;
}
}
EVENT_SetSoldierDesiredDirection( pSoldier, ubDirection );
pSoldier->EVENT_SetSoldierDesiredDirection( ubDirection );
// Is the door opened?
if ( pStructure->fFlags & STRUCTURE_OPEN )
@@ -329,27 +329,27 @@ void InteractWithOpenableStruct( SOLDIERTYPE *pSoldier, STRUCTURE *pStructure, U
if ( pSoldier->ubID <= gTacticalStatus.Team[ gbPlayerNum ].bLastID && !( pStructure->fFlags & STRUCTURE_SWITCH ) )
{
// Bring up menu to decide what to do....
SoldierGotoStationaryStance( pSoldier );
pSoldier->SoldierGotoStationaryStance( );
pDoor = FindDoorInfoAtGridNo( pBaseStructure->sGridNo );
if ( pDoor )
{
if ( DoTrapCheckOnStartingMenu( pSoldier, pDoor ) )
{
fTrapsFound = TRUE;
}
{
fTrapsFound = TRUE;
}
}
// Pull Up Menu
if ( !fTrapsFound )
{
InitDoorOpenMenu( pSoldier, pStructure, ubDirection, TRUE );
}
if ( !fTrapsFound )
{
InitDoorOpenMenu( pSoldier, pStructure, ubDirection, TRUE );
}
}
else
{
// Easily close door....
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, CLOSE_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, CLOSE_DOOR ), 0, FALSE );
}
}
else
@@ -361,31 +361,31 @@ void InteractWithOpenableStruct( SOLDIERTYPE *pSoldier, STRUCTURE *pStructure, U
if ( pDoor != NULL )
{
// Assume true
// Assume true
fDoMenu = TRUE;
// Check if it's locked.....
// If not locked, don't bring it up!
if ( !pDoor->fLocked )
{
fDoMenu = FALSE;
}
// Check if it's locked.....
// If not locked, don't bring it up!
if ( !pDoor->fLocked )
{
fDoMenu = FALSE;
}
}
}
if ( fDoMenu )
{
// Bring up menu to decide what to do....
SoldierGotoStationaryStance( pSoldier );
pSoldier->SoldierGotoStationaryStance( );
if ( DoTrapCheckOnStartingMenu( pSoldier, pDoor ) )
{
fTrapsFound = TRUE;
}
{
fTrapsFound = TRUE;
}
// Pull Up Menu
if ( !fTrapsFound )
{
if ( !fTrapsFound )
{
// In autobandage mode, assuming no traps are found, try to automatically unlock the door. If we can't, then we can't
if (gTacticalStatus.fAutoBandageMode)
{
@@ -393,18 +393,18 @@ void InteractWithOpenableStruct( SOLDIERTYPE *pSoldier, STRUCTURE *pStructure, U
return;
}
InitDoorOpenMenu( pSoldier, pStructure, ubDirection, FALSE );
}
else
{
UnSetUIBusy( pSoldier->ubID );
}
InitDoorOpenMenu( pSoldier, pStructure, ubDirection, FALSE );
}
else
{
pSoldier->ubDoorHandleCode = HANDLE_DOOR_OPEN;
UnSetUIBusy( pSoldier->ubID );
}
}
else
{
pSoldier->aiData.ubDoorHandleCode = HANDLE_DOOR_OPEN;
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, OPEN_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, OPEN_DOOR ), 0, FALSE );
}
}
@@ -423,7 +423,7 @@ void ProcessImplicationsOfPCMessingWithDoor( SOLDIERTYPE * pSoldier )
for ( ubLoop = gTacticalStatus.Team[ CIV_TEAM ].bFirstID; ubLoop <= gTacticalStatus.Team[ CIV_TEAM ].bLastID; ubLoop++ )
{
pGoon = MercPtrs[ ubLoop ];
if ( pGoon->ubCivilianGroup == KINGPIN_CIV_GROUP && pGoon->bActive && pGoon->bInSector && pGoon->bLife >= OKLIFE && pGoon->bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY )
if ( pGoon->ubCivilianGroup == KINGPIN_CIV_GROUP && pGoon->bActive && pGoon->bInSector && pGoon->stats.bLife >= OKLIFE && pGoon->aiData.bOppList[ pSoldier->ubID ] == SEEN_CURRENTLY )
{
MakeCivHostile( pGoon, 2 );
if ( ! (gTacticalStatus.uiFlags & INCOMBAT) )
@@ -437,10 +437,10 @@ void ProcessImplicationsOfPCMessingWithDoor( SOLDIERTYPE * pSoldier )
if ( gWorldSectorX == TIXA_SECTOR_X && gWorldSectorY == TIXA_SECTOR_Y )
{
pGoon = FindSoldierByProfileID( WARDEN, FALSE );
if ( pGoon && pGoon->bAlertStatus < STATUS_RED && PythSpacesAway( pSoldier->sGridNo, pGoon->sGridNo ) <= 5 )
if ( pGoon && pGoon->aiData.bAlertStatus < STATUS_RED && PythSpacesAway( pSoldier->sGridNo, pGoon->sGridNo ) <= 5 )
{
// alert her if she hasn't been alerted
pGoon->bAlertStatus = STATUS_RED;
pGoon->aiData.bAlertStatus = STATUS_RED;
CheckForChangingOrders( pGoon );
CancelAIAction( pGoon, TRUE );
}
@@ -456,8 +456,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
DOOR *pDoor;
BOOLEAN fTrapFound = FALSE;
BOOLEAN fDoAction = TRUE;
BOOLEAN fDoor = FALSE;
INT8 bItemIn = FALSE;
BOOLEAN fDoor = FALSE;
// Are we a door?
if (pStructure->fFlags & STRUCTURE_ANYDOOR)
@@ -486,7 +485,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
pDoor = FindDoorInfoAtGridNo( sGridNo );
// Alrighty, first check for traps ( unless we are examining.... )
if ( pSoldier->ubDoorHandleCode != HANDLE_DOOR_EXAMINE && pSoldier->ubDoorHandleCode != HANDLE_DOOR_UNTRAP && pSoldier->ubDoorHandleCode != HANDLE_DOOR_UNLOCK )
if ( pSoldier->aiData.ubDoorHandleCode != HANDLE_DOOR_EXAMINE && pSoldier->aiData.ubDoorHandleCode != HANDLE_DOOR_UNTRAP && pSoldier->aiData.ubDoorHandleCode != HANDLE_DOOR_UNLOCK )
{
if ( pDoor != NULL )
{
@@ -500,8 +499,8 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
// Set AP costs to that of opening a door
sAPCost = AP_OPEN_DOOR;
sBPCost = BP_OPEN_DOOR;
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
// Did we inadvertently set it off?
if ( HasDoorTrapGoneOff( pSoldier, pDoor ) )
@@ -512,7 +511,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
if (DoorTrapTable[pDoor->ubTrapID].fFlags & DOOR_TRAP_STOPS_ACTION)
{
// trap stops person from opening door!
fDoAction = FALSE;
fDoAction = FALSE;
}
if (!( DoorTrapTable[pDoor->ubTrapID].fFlags & DOOR_TRAP_RECURRING ) )
{
@@ -543,7 +542,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
}
// Stop action this time....
fDoAction = FALSE;
fDoAction = FALSE;
// report!
TacticalCharacterDialogue( pSoldier, QUOTE_BOOBYTRAP_ITEM );
@@ -555,7 +554,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
if (DoorTrapTable[pDoor->ubTrapID].fFlags & DOOR_TRAP_STOPS_ACTION)
{
// trap stops person from opening door!
fDoAction = FALSE;
fDoAction = FALSE;
}
if (!( DoorTrapTable[pDoor->ubTrapID].fFlags & DOOR_TRAP_RECURRING ) )
{
@@ -574,7 +573,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
if ( fDoAction )
{
// OK, switch based on how we are going to open door....
switch( pSoldier->ubDoorHandleCode )
switch( pSoldier->aiData.ubDoorHandleCode )
{
case HANDLE_DOOR_OPEN:
@@ -586,7 +585,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
sBPCost = BP_OPEN_DOOR;
// Open if it's not locked....
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
fHandleDoor = TRUE;
break;
}
@@ -595,13 +594,13 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
if ( pDoor->fLocked )
{
// it's locked....
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_LOCKED_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_LOCKED_DOOR ), 0, FALSE );
// Do we have a quote for locked stuff?
// Now just show on message bar
if ( !AM_AN_EPC( pSoldier ) )
{
DoMercBattleSound( pSoldier, BATTLE_SOUND_LOCKED );
pSoldier->DoMercBattleSound( BATTLE_SOUND_LOCKED );
}
else
{
@@ -610,14 +609,14 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
}
else
{
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
fHandleDoor = TRUE;
}
UpdateDoorPerceivedValue( pDoor );
break;
}
break;
case HANDLE_DOOR_FORCE:
// Set costs for these
@@ -627,7 +626,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
// OK, using force, if we have no lock, just open the door!
if ( pDoor == NULL )
{
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
fHandleDoor = TRUE;
ScreenMsg( MSG_FONT_YELLOW, MSG_INTERFACE, TacticalStr[ DOOR_THERE_IS_NO_LOCK_STR ] );
@@ -638,7 +637,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
if ( AttemptToSmashDoor( pSoldier, pDoor ) )
{
//ScreenMsg( MSG_FONT_YELLOW, MSG_INTERFACE, TacticalStr[ DOOR_LOCK_DESTROYED_STR ] );
// DoMercBattleSound( pSoldier, BATTLE_SOUND_COOL1 );
// pSoldier->DoMercBattleSound( BATTLE_SOUND_COOL1 );
fHandleDoor = TRUE;
}
else
@@ -660,7 +659,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
// OK, using force, if we have no lock, just open the door!
if ( pDoor == NULL )
{
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
fHandleDoor = TRUE;
ScreenMsg( MSG_FONT_YELLOW, MSG_INTERFACE, TacticalStr[ DOOR_THERE_IS_NO_LOCK_STR ] );
@@ -671,7 +670,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
if ( AttemptToCrowbarLock( pSoldier, pDoor ) )
{
//ScreenMsg( MSG_FONT_YELLOW, MSG_INTERFACE, TacticalStr[ DOOR_LOCK_DESTROYED_STR ] );
//DoMercBattleSound( pSoldier, BATTLE_SOUND_COOL1 );
//pSoldier->DoMercBattleSound( BATTLE_SOUND_COOL1 );
fHandleDoor = TRUE;
}
else
@@ -699,7 +698,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
// Attempt to force door
if ( AttemptToBlowUpLock( pSoldier, pDoor ) )
{
//DoMercBattleSound( pSoldier, BATTLE_SOUND_COOL1 );
//pSoldier->DoMercBattleSound( BATTLE_SOUND_COOL1 );
//ScreenMsg( MSG_FONT_YELLOW, MSG_INTERFACE, TacticalStr[ DOOR_LOCK_DESTROYED_STR ] );
fHandleDoor = TRUE;
}
@@ -727,7 +726,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
{
if ( AttemptToPickLock( pSoldier, pDoor ) )
{
DoMercBattleSound( pSoldier, BATTLE_SOUND_COOL1 );
pSoldier->DoMercBattleSound( BATTLE_SOUND_COOL1 );
//ScreenMsg( MSG_FONT_YELLOW, MSG_INTERFACE, TacticalStr[ DOOR_LOCK_HAS_BEEN_PICKED_STR ] );
fHandleDoor = TRUE;
}
@@ -748,7 +747,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
// Attempt to examine door
// Whatever the result, end the open animation
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
if ( pDoor == NULL )
{
@@ -794,7 +793,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
{
// Open if it's not locked....
//ScreenMsg( MSG_FONT_YELLOW, MSG_INTERFACE, TacticalStr[ DOOR_THERE_IS_NO_LOCK_STR ] );
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
break;
}
else
@@ -805,16 +804,16 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
if ( AttemptToUnlockDoor( pSoldier, pDoor ) )
{
//ScreenMsg( MSG_FONT_YELLOW, MSG_INTERFACE, TacticalStr[ DOOR_LOCK_HAS_BEEN_UNLOCKED_STR ] );
//DoMercBattleSound( pSoldier, BATTLE_SOUND_COOL1 );
//pSoldier->DoMercBattleSound( BATTLE_SOUND_COOL1 );
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
UpdateDoorPerceivedValue( pDoor );
fHandleDoor = TRUE;
}
else
{
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_LOCKED_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_LOCKED_DOOR ), 0, FALSE );
// Do we have a quote for locked stuff?
// Now just show on message bar
//ScreenMsg( MSG_FONT_YELLOW, MSG_INTERFACE, TacticalStr[ DOOR_NOT_PROPER_KEY_STR ], pSoldier->name );
@@ -822,7 +821,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
// OK PLay damn battle sound
if ( Random( 2 ) )
{
DoMercBattleSound( pSoldier, BATTLE_SOUND_CURSE1 );
pSoldier->DoMercBattleSound( BATTLE_SOUND_CURSE1 );
}
}
}
@@ -840,7 +839,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
{
// Open if it's not locked....
ScreenMsg( MSG_FONT_YELLOW, MSG_INTERFACE, TacticalStr[ DOOR_THERE_IS_NO_LOCK_STR ] );
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
break;
}
else
@@ -856,14 +855,14 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
if ( AttemptToUntrapDoor( pSoldier, pDoor ) )
{
//ScreenMsg( MSG_FONT_YELLOW, MSG_INTERFACE, TacticalStr[ DOOR_LOCK_HAS_BEEN_UNTRAPPED_STR ] );
DoMercBattleSound( pSoldier, BATTLE_SOUND_COOL1 );
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
pSoldier->DoMercBattleSound( BATTLE_SOUND_COOL1 );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
UpdateDoorPerceivedValue( pDoor );
//fHandleDoor = TRUE;
}
else
{
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_LOCKED_DOOR ), 0, FALSE );
{
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_LOCKED_DOOR ), 0, FALSE );
// Now just show on message bar
HandleDoorTrap( pSoldier, pDoor );
@@ -897,7 +896,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
{
// Open if it's not locked....
ScreenMsg( MSG_FONT_YELLOW, MSG_INTERFACE, TacticalStr[ DOOR_THERE_IS_NO_LOCK_STR ] );
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
break;
}
else
@@ -908,12 +907,12 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
if ( AttemptToLockDoor( pSoldier, pDoor ) )
{
ScreenMsg( MSG_FONT_YELLOW, MSG_INTERFACE, TacticalStr[ DOOR_LOCK_HAS_BEEN_LOCKED_STR ] );
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
UpdateDoorPerceivedValue( pDoor );
}
else
{
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_LOCKED_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_LOCKED_DOOR ), 0, FALSE );
// Do we have a quote for locked stuff?
// Now just show on message bar
ScreenMsg( MSG_FONT_YELLOW, MSG_INTERFACE, TacticalStr[ DOOR_NOT_PROPER_KEY_STR ], pSoldier->name );
@@ -933,7 +932,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
sBPCost = BP_OPEN_DOOR;
// Open if it's not locked....
ChangeSoldierState( pSoldier, GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
pSoldier->ChangeSoldierState( GetAnimStateForInteraction( pSoldier, fDoor, END_OPEN_DOOR ), 0, FALSE );
fHandleDoor = TRUE;
}
}
@@ -960,7 +959,7 @@ BOOLEAN HandleOpenableStruct( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *p
}
BOOLEAN HandleDoorsOpenClose( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE * pStructure, BOOLEAN fNoAnimations )
BOOLEAN HandleDoorsOpenClose( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE * pStructure, BOOLEAN fNoAnimations )
{
LEVELNODE * pShadowNode;
LEVELNODE * pNode;
@@ -1016,7 +1015,7 @@ BOOLEAN HandleDoorsOpenClose( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *
SetRenderFlags(RENDER_FLAG_FULL);
}
}
}
}
}
@@ -1083,7 +1082,7 @@ BOOLEAN HandleDoorsOpenClose( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *
fDoAnimation = FALSE;
}
if ( fDoAnimation )
if ( fDoAnimation )
{
// Update perceived value
ModifyDoorStatus( sGridNo, DONTSETDOORSTATUS, TRUE );
@@ -1093,13 +1092,13 @@ BOOLEAN HandleDoorsOpenClose( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *
memset( &AniParams, 0, sizeof( ANITILE_PARAMS ) );
AniParams.sGridNo = sGridNo;
AniParams.ubLevelID = ANI_STRUCT_LEVEL;
AniParams.usTileType = (UINT16)gTileDatabase[ pNode->usIndex ].fType;
AniParams.usTileType = (UINT16)gTileDatabase[ pNode->usIndex ].fType;
AniParams.usTileIndex = pNode->usIndex;
AniParams.sDelay = INTTILE_DOOR_OPENSPEED;
AniParams.sStartFrame = pNode->sCurrentFrame;
AniParams.uiFlags = ANITILE_DOOR | ANITILE_FORWARD | ANITILE_EXISTINGTILE;
AniParams.pGivenLevelNode = pNode;
CreateAnimationTile( &AniParams );
}
else
@@ -1107,7 +1106,7 @@ BOOLEAN HandleDoorsOpenClose( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *
memset( &AniParams, 0, sizeof( ANITILE_PARAMS ) );
AniParams.sGridNo = sGridNo;
AniParams.ubLevelID = ANI_STRUCT_LEVEL;
AniParams.usTileType = (UINT16)gTileDatabase[ pNode->usIndex ].fType;
AniParams.usTileType = (UINT16)gTileDatabase[ pNode->usIndex ].fType;
AniParams.usTileIndex = pNode->usIndex;
AniParams.sDelay = INTTILE_DOOR_OPENSPEED;
AniParams.sStartFrame = pNode->sCurrentFrame;
@@ -1143,22 +1142,22 @@ BOOLEAN HandleDoorsOpenClose( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *
// change sound ID
uiSoundID = GARAGE_DOOR_OPEN;
}
else if ( pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_CLOTH )
{
// change sound ID
uiSoundID = CURTAINS_OPEN;
}
}
else if ( pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_LIGHT_METAL ||
pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_THICKER_METAL ||
pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_HEAVY_METAL )
else if ( pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_CLOTH )
{
// change sound ID
uiSoundID = CURTAINS_OPEN;
}
}
else if ( pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_LIGHT_METAL ||
pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_THICKER_METAL ||
pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_HEAVY_METAL )
{
// change sound ID
uiSoundID = METAL_DOOR_OPEN;
}
// OK, We must know what sound to play, for now use same sound for all doors...
PlayJA2Sample( uiSoundID, RATE_11025, SoundVolume( MIDVOLUME, sGridNo ), 1, SoundDir( sGridNo ) );
PlayJA2Sample( uiSoundID, RATE_11025, SoundVolume( MIDVOLUME, sGridNo ), 1, SoundDir( sGridNo ) );
}
}
@@ -1209,7 +1208,7 @@ BOOLEAN HandleDoorsOpenClose( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *
ModifyDoorStatus( sGridNo, DONTSETDOORSTATUS, FALSE );
memset( &AniParams, 0, sizeof( ANITILE_PARAMS ) );
// ATE; Default to normal door...
uiSoundID = ( DRCLOSE_1 + Random( 2 ) );
@@ -1222,53 +1221,53 @@ BOOLEAN HandleDoorsOpenClose( SOLDIERTYPE *pSoldier, INT16 sGridNo, STRUCTURE *
// change sound ID
uiSoundID = GARAGE_DOOR_CLOSE;
}
else if ( pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_CLOTH )
{
// change sound ID
uiSoundID = CURTAINS_CLOSE;
}
}
else if ( pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_LIGHT_METAL ||
pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_THICKER_METAL ||
pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_HEAVY_METAL )
else if ( pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_CLOTH )
{
// change sound ID
uiSoundID = CURTAINS_CLOSE;
}
}
else if ( pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_LIGHT_METAL ||
pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_THICKER_METAL ||
pStructure->pDBStructureRef->pDBStructure->ubArmour == MATERIAL_HEAVY_METAL )
{
// change sound ID
uiSoundID = METAL_DOOR_CLOSE;
}
AniParams.uiKeyFrame1Code = ANI_KEYFRAME_DO_SOUND;
AniParams.uiUserData = uiSoundID;
AniParams.uiUserData3 = sGridNo;
AniParams.uiKeyFrame1Code = ANI_KEYFRAME_DO_SOUND;
AniParams.uiUserData = uiSoundID;
AniParams.uiUserData3 = sGridNo;
if ( fOpenedGraphic )
{
AniParams.sGridNo = sGridNo;
AniParams.ubLevelID = ANI_STRUCT_LEVEL;
AniParams.usTileType = (UINT16)gTileDatabase[ pNode->usIndex ].fType;
AniParams.usTileType = (UINT16)gTileDatabase[ pNode->usIndex ].fType;
AniParams.usTileIndex = pNode->usIndex;
AniParams.sDelay = INTTILE_DOOR_OPENSPEED;
AniParams.sStartFrame = pNode->sCurrentFrame;
AniParams.uiFlags = ANITILE_DOOR | ANITILE_BACKWARD | ANITILE_EXISTINGTILE;
AniParams.pGivenLevelNode = pNode;
AniParams.ubKeyFrame1 = pNode->sCurrentFrame - 2;
AniParams.ubKeyFrame1 = pNode->sCurrentFrame - 2;
CreateAnimationTile( &AniParams );
}
else
{
{
AniParams.sGridNo = sGridNo;
AniParams.ubLevelID = ANI_STRUCT_LEVEL;
AniParams.usTileType = (UINT16)gTileDatabase[ pNode->usIndex ].fType;
AniParams.usTileType = (UINT16)gTileDatabase[ pNode->usIndex ].fType;
AniParams.usTileIndex = pNode->usIndex;
AniParams.sDelay = INTTILE_DOOR_OPENSPEED;
AniParams.sStartFrame = pNode->sCurrentFrame;
AniParams.uiFlags = ANITILE_DOOR | ANITILE_FORWARD | ANITILE_EXISTINGTILE;
AniParams.pGivenLevelNode = pNode;
AniParams.ubKeyFrame1 = pNode->sCurrentFrame + 2;
AniParams.ubKeyFrame1 = pNode->sCurrentFrame + 2;
CreateAnimationTile( &AniParams );
}
}
@@ -1327,7 +1326,7 @@ void SetDoorString( INT16 sGridNo )
switch( pDoor->bPerceivedTrapped )
{
case DOOR_PERCEIVED_TRAPPED:
wcscpy( gzIntTileLocation2, TacticalStr[ DOOR_TRAPPED_MOUSE_DESCRIPTION ] );
gfUIIntTileLocation2 = TRUE;
fTrapped = TRUE;
@@ -1340,23 +1339,23 @@ void SetDoorString( INT16 sGridNo )
switch( pDoor->bPerceivedLocked )
{
case DOOR_PERCEIVED_UNKNOWN:
break;
case DOOR_PERCEIVED_LOCKED:
wcscpy( gzIntTileLocation2, TacticalStr[ DOOR_LOCKED_MOUSE_DESCRIPTION ] );
gfUIIntTileLocation2 = TRUE;
break;
case DOOR_PERCEIVED_UNLOCKED:
wcscpy( gzIntTileLocation2, TacticalStr[ DOOR_UNLOCKED_MOUSE_DESCRIPTION ] );
gfUIIntTileLocation2 = TRUE;
break;
case DOOR_PERCEIVED_BROKEN:
wcscpy( gzIntTileLocation2, TacticalStr[ DOOR_BROKEN_MOUSE_DESCRIPTION ] );
gfUIIntTileLocation2 = TRUE;
break;
@@ -1364,7 +1363,7 @@ void SetDoorString( INT16 sGridNo )
}
}
}
}
}
// ATE: If here, we try to say, opened or closed...
@@ -1457,4 +1456,4 @@ void SetDoorString( INT16 sGridNo )
#endif
}
}
}