mirror of
https://github.com/1dot13/source.git
synced 2026-09-02 14:36:06 +02:00
Little Alien
- Bug fix: STRAIGHT_RANGE was not initialized properly causing enemies become invisible Added changes from 2006-05-14 2 by Madd Mugsy - Added Lesh's Explosion data externalization code for exp. animations, sounds, etc. - Fixed some armor issues with ceramic plate-type attachments being attached to non-vest slots - Removed hard coded item indexes from sun goggle / night goggle swapping, now it picks the best possible goggles git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@71 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -281,6 +281,11 @@ BOOLEAN LoadExternalGameplayData(STR directoryName)
|
|||||||
if(!ReadInMapStructure(fileName))
|
if(!ReadInMapStructure(fileName))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
strcpy(fileName, directoryName);
|
||||||
|
strcat(fileName, EXPLOSIONDATAFILENAME);
|
||||||
|
if(!ReadInExplosionDataStats(fileName))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-2
@@ -3,6 +3,7 @@
|
|||||||
ProjectType="Visual C++"
|
ProjectType="Visual C++"
|
||||||
Version="7.10"
|
Version="7.10"
|
||||||
Name="ja2"
|
Name="ja2"
|
||||||
|
RootNamespace="ja2"
|
||||||
SccProjectName=""
|
SccProjectName=""
|
||||||
SccAuxPath=""
|
SccAuxPath=""
|
||||||
SccLocalPath=""
|
SccLocalPath=""
|
||||||
@@ -42,7 +43,7 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
AdditionalDependencies="libexpatMT.lib mss32.lib winmm.lib smackw32.lib fmodvc.lib"
|
AdditionalDependencies="libexpatMT.lib mss32.lib winmm.lib smackw32.lib fmodvc.lib"
|
||||||
OutputFile="C:\games\Jagged Alliance 2 v1.13\ja2_debug_2006_05_11.exe"
|
OutputFile="C:\games\Jagged Alliance 2 v1.13\ja2_debug_2006_05_18.exe"
|
||||||
LinkIncremental="2"
|
LinkIncremental="2"
|
||||||
SuppressStartupBanner="TRUE"
|
SuppressStartupBanner="TRUE"
|
||||||
AdditionalLibraryDirectories=".\..\..\Standard Gaming Platform\"
|
AdditionalLibraryDirectories=".\..\..\Standard Gaming Platform\"
|
||||||
@@ -545,7 +546,7 @@
|
|||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib fmodvc.lib"
|
AdditionalDependencies="libexpatMT.lib winmm.lib smackw32.lib mss32.lib fmodvc.lib"
|
||||||
OutputFile="C:\Games\Jagged Alliance 2 v1.13\ja2_release_2006_05_11.exe"
|
OutputFile="C:\Games\Jagged Alliance 2 v1.13\ja2_release_2006_05_18.exe"
|
||||||
LinkIncremental="1"
|
LinkIncremental="1"
|
||||||
SuppressStartupBanner="TRUE"
|
SuppressStartupBanner="TRUE"
|
||||||
AdditionalLibraryDirectories=".\..\..\Standard Gaming Platform\"
|
AdditionalLibraryDirectories=".\..\..\Standard Gaming Platform\"
|
||||||
|
|||||||
@@ -42,7 +42,6 @@
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
//*****************************************************************************
|
//*****************************************************************************
|
||||||
#define STRICT
|
|
||||||
|
|
||||||
typedef struct StackHeaderTag
|
typedef struct StackHeaderTag
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ typedef INT32 IVECTOR4[4]; // 4d vector (4x1 matrix)
|
|||||||
typedef VECTOR3 MATRIX3[3]; // 3x3 matrix
|
typedef VECTOR3 MATRIX3[3]; // 3x3 matrix
|
||||||
typedef VECTOR4 MATRIX4[4]; // 4x4 matrix
|
typedef VECTOR4 MATRIX4[4]; // 4x4 matrix
|
||||||
|
|
||||||
typedef VECTOR3 ANGLE; // angle return array
|
//typedef VECTOR3 ANGLE; // angle return array //lal removed
|
||||||
typedef VECTOR4 COLOR; // rgba color array
|
typedef VECTOR4 COLOR; // rgba color array
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ of the group. If the priority of the group is high, they
|
|||||||
// values have been externalized into an INI file. Not all of them at this point,
|
// values have been externalized into an INI file. Not all of them at this point,
|
||||||
// but more will be externalized as time goes on.
|
// but more will be externalized as time goes on.
|
||||||
|
|
||||||
#define BASIC_POOL_INCREMENT gGameExternalOptions.guiBaseQueenPoolIncrement
|
//#define BASIC_POOL_INCREMENT gGameExternalOptions.guiBaseQueenPoolIncrement
|
||||||
|
|
||||||
//Modifies the number of troops the queen has at the beginning of the game on top
|
//Modifies the number of troops the queen has at the beginning of the game on top
|
||||||
//of all of the garrison and patrol groups. Additionally, there are a total of
|
//of all of the garrison and patrol groups. Additionally, there are a total of
|
||||||
@@ -2957,7 +2957,7 @@ void EvaluateQueenSituation()
|
|||||||
if( !giReinforcementPool )
|
if( !giReinforcementPool )
|
||||||
{ //Queen has run out of reinforcements. Simulate recruiting and training new troops
|
{ //Queen has run out of reinforcements. Simulate recruiting and training new troops
|
||||||
uiOffset *= 10;
|
uiOffset *= 10;
|
||||||
giReinforcementPool += ( BASIC_POOL_INCREMENT * gGameOptions.ubDifficultyLevel ) * ( 100 + CurrentPlayerProgressPercentage() ) / 100 ;
|
giReinforcementPool += ( gGameExternalOptions.guiBaseQueenPoolIncrement * gGameOptions.ubDifficultyLevel ) * ( 100 + CurrentPlayerProgressPercentage() ) / 100 ;
|
||||||
AddStrategicEvent( EVENT_EVALUATE_QUEEN_SITUATION, GetWorldTotalMin() + uiOffset, 0 );
|
AddStrategicEvent( EVENT_EVALUATE_QUEEN_SITUATION, GetWorldTotalMin() + uiOffset, 0 );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -768,13 +768,13 @@ void HandleMurderOfCivilian( SOLDIERTYPE *pSoldier, BOOLEAN fIntentional )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// killer seen by civ?
|
// killer seen by civ?
|
||||||
if ( SoldierToSoldierLineOfSightTest( pCivSoldier, MercPtrs[ pSoldier->ubAttackerID ], STRAIGHT_RANGE, TRUE ) != 0 )
|
if ( SoldierToSoldierLineOfSightTest( pCivSoldier, MercPtrs[ pSoldier->ubAttackerID ], gGameExternalOptions.ubStraightSightRange, TRUE ) != 0 )
|
||||||
{
|
{
|
||||||
bSeenState |= 1;
|
bSeenState |= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// victim seen by civ?
|
// victim seen by civ?
|
||||||
if( SoldierToSoldierLineOfSightTest( pCivSoldier, pSoldier, STRAIGHT_RANGE, TRUE ) != 0 )
|
if( SoldierToSoldierLineOfSightTest( pCivSoldier, pSoldier, gGameExternalOptions.ubStraightSightRange, TRUE ) != 0 )
|
||||||
{
|
{
|
||||||
bSeenState |= 2;
|
bSeenState |= 2;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -148,7 +148,7 @@
|
|||||||
#define DOTDOTDOT L"..."
|
#define DOTDOTDOT L"..."
|
||||||
#define COMMA_AND_SPACE L", "
|
#define COMMA_AND_SPACE L", "
|
||||||
|
|
||||||
#define ITEM_PROS_AND_CONS( usItem ) ( ( Item[ usItem ].usItemClass & IC_GUN) )
|
#define ITEM_PROS_AND_CONS( usItem ) ( ( Item[ usItem ].usItemClass & IC_GUN && !Item[ usItem ].rocketlauncher ) )
|
||||||
|
|
||||||
#define MAP_ITEMDESC_DESC_START_X ( 23 + gsInvDescX )
|
#define MAP_ITEMDESC_DESC_START_X ( 23 + gsInvDescX )
|
||||||
#define MAP_ITEMDESC_DESC_START_Y (170 + gsInvDescY)
|
#define MAP_ITEMDESC_DESC_START_Y (170 + gsInvDescY)
|
||||||
|
|||||||
@@ -1194,7 +1194,7 @@ void ChooseArmourForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bHelmetC
|
|||||||
{
|
{
|
||||||
CreateItem( usAttachment, (INT8)(70+Random(31)), &Object );
|
CreateItem( usAttachment, (INT8)(70+Random(31)), &Object );
|
||||||
Object.fFlags |= OBJECT_UNDROPPABLE;
|
Object.fFlags |= OBJECT_UNDROPPABLE;
|
||||||
AttachObject( NULL, &(pp->Inv[ VESTPOS ]), &Object );
|
AttachObject( NULL, &(pp->Inv[ HELMETPOS ]), &Object );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1348,6 +1348,19 @@ void ChooseArmourForSoldierCreateStruct( SOLDIERCREATE_STRUCT *pp, INT8 bHelmetC
|
|||||||
{
|
{
|
||||||
CreateItem( usItem, (INT8)(70+Random(31)), &(pp->Inv[ LEGPOS ]) );
|
CreateItem( usItem, (INT8)(70+Random(31)), &(pp->Inv[ LEGPOS ]) );
|
||||||
pp->Inv[ LEGPOS ].fFlags |= OBJECT_UNDROPPABLE;
|
pp->Inv[ LEGPOS ].fFlags |= OBJECT_UNDROPPABLE;
|
||||||
|
|
||||||
|
// roll to see if he gets an attachment, too. Higher chance the higher his entitled Leggings class is
|
||||||
|
if (( INT8 ) Random( 100 ) < ( 15 * ( bLeggingsClass - Item[usItem].ubCoolness ) ) )
|
||||||
|
{
|
||||||
|
UINT16 usAttachment = PickARandomAttachment(ARMOURATTACHMENT,usItem, bLeggingsClass, FALSE);
|
||||||
|
if ( usAttachment > 0 )
|
||||||
|
{
|
||||||
|
CreateItem( usAttachment, (INT8)(70+Random(31)), &Object );
|
||||||
|
Object.fFlags |= OBJECT_UNDROPPABLE;
|
||||||
|
AttachObject( NULL, &(pp->Inv[ LEGPOS ]), &Object );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+29
-1
@@ -7068,4 +7068,32 @@ UINT16 GetFirstExplosiveOfType(UINT16 expType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
INT8 FindSunGoggles( SOLDIERTYPE * pSoldier, INT16 bonusToBeat )
|
||||||
|
{
|
||||||
|
INT8 bLoop;
|
||||||
|
|
||||||
|
for (bLoop = HANDPOS; bLoop <= SMALLPOCK8POS; bLoop++)
|
||||||
|
{
|
||||||
|
if (Item[pSoldier->inv[bLoop].usItem].brightlightvisionrangebonus > bonusToBeat && Item[pSoldier->inv[bLoop].usItem].usItemClass == IC_FACE )
|
||||||
|
{
|
||||||
|
return( bLoop );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return( ITEM_NOT_FOUND );
|
||||||
|
}
|
||||||
|
|
||||||
|
INT8 FindNightGoggles( SOLDIERTYPE * pSoldier, INT16 bonusToBeat )
|
||||||
|
{
|
||||||
|
INT8 bLoop;
|
||||||
|
|
||||||
|
for (bLoop = HANDPOS; bLoop <= SMALLPOCK8POS; bLoop++)
|
||||||
|
{
|
||||||
|
if (Item[pSoldier->inv[bLoop].usItem].nightvisionrangebonus > bonusToBeat && Item[pSoldier->inv[bLoop].usItem].usItemClass == IC_FACE )
|
||||||
|
{
|
||||||
|
return( bLoop );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return( ITEM_NOT_FOUND );
|
||||||
|
}
|
||||||
|
|||||||
@@ -285,5 +285,8 @@ INT16 GetGearAPBonus( SOLDIERTYPE * pSoldier );
|
|||||||
|
|
||||||
UINT16 GetFirstExplosiveOfType(UINT16 expType);
|
UINT16 GetFirstExplosiveOfType(UINT16 expType);
|
||||||
|
|
||||||
|
INT8 FindSunGoggles( SOLDIERTYPE * pSoldier, INT16 bonusToBeat );
|
||||||
|
INT8 FindNightGoggles( SOLDIERTYPE * pSoldier, INT16 bonusToBeat );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -186,7 +186,7 @@ enum
|
|||||||
|
|
||||||
|
|
||||||
// CHANGE THIS VALUE TO AFFECT TOTAL SIGHT RANGE
|
// CHANGE THIS VALUE TO AFFECT TOTAL SIGHT RANGE
|
||||||
#define STRAIGHT_RANGE gGameExternalOptions.ubStraightSightRange
|
//#define STRAIGHT_RANGE gGameExternalOptions.ubStraightSightRange
|
||||||
|
|
||||||
// CHANGE THESE VALUES TO ADJUST VARIOUS FOV ANGLES
|
// CHANGE THESE VALUES TO ADJUST VARIOUS FOV ANGLES
|
||||||
#define STRAIGHT_RATIO 1 //* 1.5
|
#define STRAIGHT_RATIO 1 //* 1.5
|
||||||
@@ -199,11 +199,11 @@ enum
|
|||||||
#define BEHIND_RATIO 0
|
#define BEHIND_RATIO 0
|
||||||
|
|
||||||
// looking distance defines
|
// looking distance defines
|
||||||
#define BEHIND (INT8)( BEHIND_RATIO * STRAIGHT_RANGE )
|
//#define BEHIND (INT8)( BEHIND_RATIO * STRAIGHT_RANGE )
|
||||||
#define SBEHIND (INT8)( SBEHIND_RATIO * STRAIGHT_RANGE )
|
//#define SBEHIND (INT8)( SBEHIND_RATIO * STRAIGHT_RANGE )
|
||||||
#define SIDE (INT8)( SIDE_RATIO * STRAIGHT_RANGE )
|
//#define SIDE (INT8)( SIDE_RATIO * STRAIGHT_RANGE )
|
||||||
#define ANGLE (INT8)( ANGLE_RATIO * STRAIGHT_RANGE )
|
//#define ANGLE (INT8)( ANGLE_RATIO * STRAIGHT_RANGE )
|
||||||
#define STRAIGHT (INT8)( STRAIGHT_RATIO * STRAIGHT_RANGE )
|
//#define STRAIGHT (INT8)( STRAIGHT_RATIO * STRAIGHT_RANGE )
|
||||||
|
|
||||||
|
|
||||||
// opplist value constants
|
// opplist value constants
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
#include "Reinforcement.h"
|
#include "Reinforcement.h"
|
||||||
|
|
||||||
|
|
||||||
|
extern INT8 STRAIGHT;
|
||||||
//extern UINT8 gubSpeedUpAnimationFactor;
|
//extern UINT8 gubSpeedUpAnimationFactor;
|
||||||
void SetSoldierAniSpeed( SOLDIERTYPE *pSoldier );
|
void SetSoldierAniSpeed( SOLDIERTYPE *pSoldier );
|
||||||
|
|
||||||
|
|||||||
@@ -2895,8 +2895,8 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
|||||||
case 'N':
|
case 'N':
|
||||||
{
|
{
|
||||||
SOLDIERTYPE *pTeamSoldier;
|
SOLDIERTYPE *pTeamSoldier;
|
||||||
INT8 bLoop, bSlot1, bSlot2;
|
INT8 bLoop, bSlot1, bSlot2, temp;
|
||||||
|
INT16 lastBonus=0;
|
||||||
for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++)
|
for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++)
|
||||||
{
|
{
|
||||||
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) )
|
if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) )
|
||||||
@@ -2904,55 +2904,51 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
|||||||
//2 head slots
|
//2 head slots
|
||||||
for (bSlot1 = HEAD1POS; bSlot1 <= HEAD2POS; bSlot1++)
|
for (bSlot1 = HEAD1POS; bSlot1 <= HEAD2POS; bSlot1++)
|
||||||
{
|
{
|
||||||
if ( (pTeamSoldier->inv[bSlot1].usItem == SUNGOGGLES)||(pTeamSoldier->inv[bSlot1].usItem == NIGHTGOGGLES)||(pTeamSoldier->inv[bSlot1].usItem == UVGOGGLES) )
|
if ( Item[pTeamSoldier->inv[bSlot1].usItem].brightlightvisionrangebonus > 0 )
|
||||||
{
|
{
|
||||||
switch (pTeamSoldier->inv[bSlot1].usItem)
|
lastBonus=0;
|
||||||
|
bSlot2 = ITEM_NOT_FOUND;
|
||||||
|
temp = 0;
|
||||||
|
while (temp != ITEM_NOT_FOUND)
|
||||||
{
|
{
|
||||||
case SUNGOGGLES:
|
temp = FindNightGoggles( pTeamSoldier, lastBonus );
|
||||||
|
if ( temp > ITEM_NOT_FOUND )
|
||||||
{
|
{
|
||||||
bSlot2 = FindObjWithin( pTeamSoldier, UVGOGGLES, HANDPOS, SMALLPOCK8POS );
|
lastBonus = Item[pTeamSoldier->inv[temp].usItem].nightvisionrangebonus;
|
||||||
if ( bSlot2 != -1 )
|
bSlot2 = temp;
|
||||||
{
|
|
||||||
SwapObjs( &(pTeamSoldier->inv[bSlot1]), &(pTeamSoldier->inv[bSlot2] ) );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
bSlot2 = FindObjWithin( pTeamSoldier, NIGHTGOGGLES, HANDPOS, SMALLPOCK8POS );
|
|
||||||
if ( bSlot2 != -1 )
|
|
||||||
{
|
|
||||||
SwapObjs( &(pTeamSoldier->inv[bSlot1]), &(pTeamSoldier->inv[bSlot2] ) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
|
|
||||||
case NIGHTGOGGLES:
|
|
||||||
{
|
|
||||||
bSlot2 = FindObjWithin( pTeamSoldier, SUNGOGGLES, HANDPOS, SMALLPOCK8POS );
|
|
||||||
if ( bSlot2 != -1 )
|
|
||||||
{
|
|
||||||
SwapObjs( &(pTeamSoldier->inv[bSlot1]), &(pTeamSoldier->inv[bSlot2] ) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case UVGOGGLES:
|
|
||||||
{
|
|
||||||
bSlot2 = FindObjWithin( pTeamSoldier, SUNGOGGLES, HANDPOS, SMALLPOCK8POS );
|
|
||||||
if ( bSlot2 != -1 )
|
|
||||||
{
|
|
||||||
SwapObjs( &(pTeamSoldier->inv[bSlot1]), &(pTeamSoldier->inv[bSlot2] ) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
if ( bSlot2 != ITEM_NOT_FOUND )
|
||||||
fCharacterInfoPanelDirty = TRUE;
|
{
|
||||||
fInterfacePanelDirty = DIRTYLEVEL2;
|
SwapObjs( &(pTeamSoldier->inv[bSlot1]), &(pTeamSoldier->inv[bSlot2] ) );
|
||||||
DeleteSoldierLight( pTeamSoldier );
|
}
|
||||||
PositionSoldierLight( pTeamSoldier );
|
break;
|
||||||
|
}
|
||||||
|
else if(Item[pTeamSoldier->inv[bSlot1].usItem].nightvisionrangebonus > 0)
|
||||||
|
{
|
||||||
|
lastBonus=0;
|
||||||
|
bSlot2 = ITEM_NOT_FOUND;
|
||||||
|
temp = 0;
|
||||||
|
while (temp != ITEM_NOT_FOUND)
|
||||||
|
{
|
||||||
|
temp = FindSunGoggles( pTeamSoldier, lastBonus );
|
||||||
|
if ( temp > ITEM_NOT_FOUND )
|
||||||
|
{
|
||||||
|
lastBonus = Item[pTeamSoldier->inv[temp].usItem].brightlightvisionrangebonus;
|
||||||
|
bSlot2 = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( bSlot2 != ITEM_NOT_FOUND )
|
||||||
|
{
|
||||||
|
SwapObjs( &(pTeamSoldier->inv[bSlot1]), &(pTeamSoldier->inv[bSlot2] ) );
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fCharacterInfoPanelDirty = TRUE;
|
||||||
|
fInterfacePanelDirty = DIRTYLEVEL2;
|
||||||
|
DeleteSoldierLight( pTeamSoldier );
|
||||||
|
PositionSoldierLight( pTeamSoldier );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3193,7 +3189,6 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
|||||||
|
|
||||||
|
|
||||||
case 'S':
|
case 'S':
|
||||||
|
|
||||||
if (! (gTacticalStatus.uiFlags & INCOMBAT) )
|
if (! (gTacticalStatus.uiFlags & INCOMBAT) )
|
||||||
{
|
{
|
||||||
for ( UINT32 uiLoop = 0; uiLoop < guiNumWorldItems; uiLoop++ )
|
for ( UINT32 uiLoop = 0; uiLoop < guiNumWorldItems; uiLoop++ )
|
||||||
|
|||||||
@@ -951,7 +951,7 @@ INT32 EffectiveArmour( OBJECTTYPE * pObj )
|
|||||||
{
|
{
|
||||||
INT32 iValue2;
|
INT32 iValue2;
|
||||||
|
|
||||||
iValue2 = Armour[ Item[ CERAMIC_PLATES ].ubClassIndex ].ubProtection;
|
iValue2 = Armour[ Item[ pObj->usAttachItem[bPlate] ].ubClassIndex ].ubProtection;
|
||||||
iValue2 = iValue2 * pObj->bAttachStatus[ bPlate ] / 100;
|
iValue2 = iValue2 * pObj->bAttachStatus[ bPlate ] / 100;
|
||||||
|
|
||||||
iValue += iValue2;
|
iValue += iValue2;
|
||||||
@@ -1015,12 +1015,12 @@ INT32 ExplosiveEffectiveArmour( OBJECTTYPE * pObj )
|
|||||||
iValue *= 3;
|
iValue *= 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
bPlate = FindAttachment( pObj, CERAMIC_PLATES );
|
bPlate = FindFirstArmourAttachment( pObj );
|
||||||
if ( bPlate != ITEM_NOT_FOUND )
|
if ( bPlate != ITEM_NOT_FOUND )
|
||||||
{
|
{
|
||||||
INT32 iValue2;
|
INT32 iValue2;
|
||||||
|
|
||||||
iValue2 = Armour[ Item[ CERAMIC_PLATES ].ubClassIndex ].ubProtection;
|
iValue2 = Armour[ Item[ pObj->usAttachItem[bPlate] ].ubClassIndex ].ubProtection;
|
||||||
iValue2 = iValue2 * pObj->bAttachStatus[ bPlate ] / 100;
|
iValue2 = iValue2 * pObj->bAttachStatus[ bPlate ] / 100;
|
||||||
|
|
||||||
iValue += iValue2;
|
iValue += iValue2;
|
||||||
@@ -4064,8 +4064,8 @@ INT32 TotalArmourProtection( SOLDIERTYPE *pFirer, SOLDIERTYPE * pTarget, UINT8 u
|
|||||||
if (pArmour->usItem != NOTHING)
|
if (pArmour->usItem != NOTHING)
|
||||||
{
|
{
|
||||||
// check plates first
|
// check plates first
|
||||||
if ( iSlot == VESTPOS )
|
//if ( iSlot == VESTPOS )
|
||||||
{
|
//{
|
||||||
// bPlatePos = FindAttachment( pArmour, CERAMIC_PLATES );
|
// bPlatePos = FindAttachment( pArmour, CERAMIC_PLATES );
|
||||||
bPlatePos = FindFirstArmourAttachment( pArmour);
|
bPlatePos = FindFirstArmourAttachment( pArmour);
|
||||||
if (bPlatePos != -1)
|
if (bPlatePos != -1)
|
||||||
@@ -4087,7 +4087,8 @@ INT32 TotalArmourProtection( SOLDIERTYPE *pFirer, SOLDIERTYPE * pTarget, UINT8 u
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
|
||||||
// if the plate didn't stop the bullet...
|
// if the plate didn't stop the bullet...
|
||||||
if ( iImpact > iTotalProtection )
|
if ( iImpact > iTotalProtection )
|
||||||
|
|||||||
@@ -59,6 +59,8 @@ typedef PARSE_STAGE;
|
|||||||
#define SOUNDSFILENAME "Sounds.xml"
|
#define SOUNDSFILENAME "Sounds.xml"
|
||||||
#define BURSTSOUNDSFILENAME "BurstSounds.xml"
|
#define BURSTSOUNDSFILENAME "BurstSounds.xml"
|
||||||
|
|
||||||
|
// Lesh: filename definition
|
||||||
|
#define EXPLOSIONDATAFILENAME "ExplosionData.xml"
|
||||||
#define CITYTABLEFILENAME "Cities.xml"
|
#define CITYTABLEFILENAME "Cities.xml"
|
||||||
|
|
||||||
extern BOOLEAN ReadInItemStats(STR fileName);
|
extern BOOLEAN ReadInItemStats(STR fileName);
|
||||||
@@ -122,4 +124,8 @@ extern BOOLEAN WriteAmmoTypeStats();
|
|||||||
extern BOOLEAN ReadInBurstSoundArray(STR fileName);
|
extern BOOLEAN ReadInBurstSoundArray(STR fileName);
|
||||||
extern BOOLEAN WriteBurstSoundArray();
|
extern BOOLEAN WriteBurstSoundArray();
|
||||||
// Lesh: over
|
// Lesh: over
|
||||||
|
// Lesh: 2 new lines added for explosion data
|
||||||
|
extern BOOLEAN ReadInExplosionDataStats(STR fileName);
|
||||||
|
extern BOOLEAN WriteExplosionDataStats();
|
||||||
|
// Lesh: over
|
||||||
#endif
|
#endif
|
||||||
+28
-21
@@ -152,30 +152,37 @@ UINT8 gubWatchedLocPoints[ TOTAL_SOLDIERS ][ NUM_WATCHED_LOCS ];
|
|||||||
BOOLEAN gfWatchedLocReset[ TOTAL_SOLDIERS ][ NUM_WATCHED_LOCS ];
|
BOOLEAN gfWatchedLocReset[ TOTAL_SOLDIERS ][ NUM_WATCHED_LOCS ];
|
||||||
BOOLEAN gfWatchedLocHasBeenIncremented[ TOTAL_SOLDIERS ][ NUM_WATCHED_LOCS ];
|
BOOLEAN gfWatchedLocHasBeenIncremented[ TOTAL_SOLDIERS ][ NUM_WATCHED_LOCS ];
|
||||||
|
|
||||||
INT8 gbLookDistance[8][8] =
|
INT8 gbLookDistance[8][8];
|
||||||
|
|
||||||
|
INT8 BEHIND;
|
||||||
|
INT8 SBEHIND;
|
||||||
|
INT8 SIDE;
|
||||||
|
INT8 ANGLE;
|
||||||
|
INT8 STRAIGHT;
|
||||||
|
|
||||||
|
void InitSightRange()
|
||||||
{
|
{
|
||||||
|
BEHIND = (INT8)( BEHIND_RATIO * gGameExternalOptions.ubStraightSightRange );
|
||||||
|
SBEHIND = (INT8)( SBEHIND_RATIO * gGameExternalOptions.ubStraightSightRange );
|
||||||
|
SIDE = (INT8)( SIDE_RATIO * gGameExternalOptions.ubStraightSightRange );
|
||||||
|
ANGLE = (INT8)( ANGLE_RATIO * gGameExternalOptions.ubStraightSightRange );
|
||||||
|
STRAIGHT = (INT8)( STRAIGHT_RATIO * gGameExternalOptions.ubStraightSightRange );
|
||||||
|
|
||||||
// LOOKER DIR LOOKEE DIR
|
gbLookDistance[8][8] =
|
||||||
|
|
||||||
|
// LOOKER DIR LOOKEE DIR
|
||||||
|
// NORTH | NORTHEAST | EAST | SOUTHEAST | SOUTH | SOUTHWEST | WEST | NORTHWEST
|
||||||
|
/* NORTH */ STRAIGHT, ANGLE, SIDE, SBEHIND, BEHIND, SBEHIND, SIDE, ANGLE,
|
||||||
|
/* NORTHEAST */ ANGLE, STRAIGHT, ANGLE, SIDE, SBEHIND, BEHIND, SBEHIND, SIDE,
|
||||||
|
/* EAST */ SIDE, ANGLE, STRAIGHT, ANGLE, SIDE, SBEHIND, BEHIND, SBEHIND,
|
||||||
|
/* SOUTHEAST */ SBEHIND, SIDE, ANGLE, STRAIGHT, ANGLE, SIDE, SBEHIND, BEHIND,
|
||||||
|
/* SOUTH */ BEHIND, SBEHIND, SIDE, ANGLE, STRAIGHT, ANGLE, SIDE, SBEHIND,
|
||||||
|
/* SOUTHWEST */ SBEHIND, BEHIND, SBEHIND, SIDE, ANGLE, STRAIGHT, ANGLE, SIDE,
|
||||||
|
/* WEST */ SIDE, SBEHIND, BEHIND, SBEHIND, SIDE, ANGLE, STRAIGHT, ANGLE,
|
||||||
|
/* NORTHWEST */ ANGLE, SIDE, SBEHIND, BEHIND, SBEHIND, SIDE, ANGLE, STRAIGHT
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
// NORTH | NORTHEAST | EAST | SOUTHEAST | SOUTH | SOUTHWEST | WEST | NORTHWEST
|
|
||||||
|
|
||||||
/* NORTH */ STRAIGHT, ANGLE, SIDE, SBEHIND, BEHIND, SBEHIND, SIDE, ANGLE,
|
|
||||||
|
|
||||||
/* NORTHEAST */ ANGLE, STRAIGHT, ANGLE, SIDE, SBEHIND, BEHIND, SBEHIND, SIDE,
|
|
||||||
|
|
||||||
/* EAST */ SIDE, ANGLE, STRAIGHT, ANGLE, SIDE, SBEHIND, BEHIND, SBEHIND,
|
|
||||||
|
|
||||||
/* SOUTHEAST */ SBEHIND, SIDE, ANGLE, STRAIGHT, ANGLE, SIDE, SBEHIND, BEHIND,
|
|
||||||
|
|
||||||
/* SOUTH */ BEHIND, SBEHIND, SIDE, ANGLE, STRAIGHT, ANGLE, SIDE, SBEHIND,
|
|
||||||
|
|
||||||
/* SOUTHWEST */ SBEHIND, BEHIND, SBEHIND, SIDE, ANGLE, STRAIGHT, ANGLE, SIDE,
|
|
||||||
|
|
||||||
/* WEST */ SIDE, SBEHIND, BEHIND, SBEHIND, SIDE, ANGLE, STRAIGHT, ANGLE,
|
|
||||||
|
|
||||||
/* NORTHWEST */ ANGLE, SIDE, SBEHIND, BEHIND, SBEHIND, SIDE, ANGLE, STRAIGHT,
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
INT8 gbSmellStrength[3] =
|
INT8 gbSmellStrength[3] =
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ UINT8 gubAICounter;
|
|||||||
//extern UINT8 gubDeadLockDelay;
|
//extern UINT8 gubDeadLockDelay;
|
||||||
|
|
||||||
//#define DEADLOCK_DELAY 10000 //Madd - let's see what this does -- orig: 15000
|
//#define DEADLOCK_DELAY 10000 //Madd - let's see what this does -- orig: 15000
|
||||||
#define DEADLOCK_DELAY ( gGameExternalOptions.gubDeadLockDelay * 1000 )
|
//#define DEADLOCK_DELAY ( gGameExternalOptions.gubDeadLockDelay * 1000 )
|
||||||
|
|
||||||
// Very representing if this computer is the host, therefore controlling the ai
|
// Very representing if this computer is the host, therefore controlling the ai
|
||||||
extern BYTE gfAmIHost;
|
extern BYTE gfAmIHost;
|
||||||
@@ -474,7 +474,7 @@ void HandleSoldierAI( SOLDIERTYPE *pSoldier )
|
|||||||
|
|
||||||
if (gfTurnBasedAI)
|
if (gfTurnBasedAI)
|
||||||
{
|
{
|
||||||
if ( ( GetJA2Clock() - gTacticalStatus.uiTimeSinceMercAIStart ) > DEADLOCK_DELAY && !gfUIInDeadlock )
|
if ( ( GetJA2Clock() - gTacticalStatus.uiTimeSinceMercAIStart ) > ( gGameExternalOptions.gubDeadLockDelay * 1000 ) && !gfUIInDeadlock )
|
||||||
{
|
{
|
||||||
// ATE: Display message that deadlock occured...
|
// ATE: Display message that deadlock occured...
|
||||||
LiveMessage( "Breaking Deadlock" );
|
LiveMessage( "Breaking Deadlock" );
|
||||||
|
|||||||
@@ -1602,7 +1602,7 @@ INT32 EstimateShotDamage(SOLDIERTYPE *pSoldier, SOLDIERTYPE *pOpponent, UINT8 ub
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check for ceramic plates; these do affect monster spit
|
// check for ceramic plates; these do affect monster spit
|
||||||
bPlatePos = FindAttachment( &(pOpponent->inv[VESTPOS]), CERAMIC_PLATES );
|
bPlatePos = FindFirstArmourAttachment( &(pOpponent->inv[VESTPOS]) );
|
||||||
if (bPlatePos != -1)
|
if (bPlatePos != -1)
|
||||||
{
|
{
|
||||||
iTorsoProt += (INT32) Armour[Item[pOpponent->inv[VESTPOS].usAttachItem[bPlatePos]].ubClassIndex].ubProtection *
|
iTorsoProt += (INT32) Armour[Item[pOpponent->inv[VESTPOS].usAttachItem[bPlatePos]].ubClassIndex].ubProtection *
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
#include "soldier add.h"
|
#include "soldier add.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern INT8 STRAIGHT; //lal
|
||||||
|
|
||||||
#define CAN_CALL( s ) (s->ubBodyType != BLOODCAT && s->ubBodyType != LARVAE_MONSTER && s->ubBodyType != INFANT_MONSTER)
|
#define CAN_CALL( s ) (s->ubBodyType != BLOODCAT && s->ubBodyType != LARVAE_MONSTER && s->ubBodyType != INFANT_MONSTER)
|
||||||
#define CAN_LISTEN_TO_CALL( s ) (s->ubBodyType != BLOODCAT && s->ubBodyType != LARVAE_MONSTER)
|
#define CAN_LISTEN_TO_CALL( s ) (s->ubBodyType != BLOODCAT && s->ubBodyType != LARVAE_MONSTER)
|
||||||
|
|
||||||
|
|||||||
@@ -70,78 +70,90 @@ extern void AddToShouldBecomeHostileOrSayQuoteList( UINT8 ubID );
|
|||||||
extern void RecompileLocalMovementCostsForWall( INT16 sGridNo, UINT8 ubOrientation );
|
extern void RecompileLocalMovementCostsForWall( INT16 sGridNo, UINT8 ubOrientation );
|
||||||
void FatigueCharacter( SOLDIERTYPE *pSoldier );
|
void FatigueCharacter( SOLDIERTYPE *pSoldier );
|
||||||
|
|
||||||
UINT8 ubTransKeyFrame[ NUM_EXP_TYPES ] =
|
#define NO_ALT_SOUND -1
|
||||||
|
|
||||||
|
EXPLOSION_DATA gExpAniData[ NUM_EXP_TYPES ] =
|
||||||
{
|
{
|
||||||
0,
|
// Trans Damage Explosion Alternative Explosion Animation
|
||||||
17,
|
// Key Key Sound Explosion Animation Speed
|
||||||
28,
|
// Frame Frame ID SoundID Filename
|
||||||
24,
|
{0, 0, EXPLOSION_1, EXPLOSION_ALT_BLAST_1, "", 0},
|
||||||
1,
|
{17, 3, EXPLOSION_1, EXPLOSION_ALT_BLAST_1, "TILECACHE\\ZGRAV_D.STI", 80},
|
||||||
1,
|
{28, 5, EXPLOSION_BLAST_2, NO_ALT_SOUND, "TILECACHE\\ZGRAV_C.STI", 80},
|
||||||
1,
|
{24, 5, EXPLOSION_BLAST_2, NO_ALT_SOUND, "TILECACHE\\ZGRAV_B.STI", 80},
|
||||||
1,
|
{1, 5, EXPLOSION_1, EXPLOSION_ALT_BLAST_1, "TILECACHE\\shckwave.STI", 20},
|
||||||
1,
|
{1, 18, AIR_ESCAPING_1, NO_ALT_SOUND, "TILECACHE\\WAT_EXP.STI", 80},
|
||||||
1,
|
{1, 18, AIR_ESCAPING_1, NO_ALT_SOUND, "TILECACHE\\TEAR_EXP.STI", 80},
|
||||||
|
{1, 18, AIR_ESCAPING_1, NO_ALT_SOUND, "TILECACHE\\TEAR_EXP.STI", 80},
|
||||||
|
{1, 18, AIR_ESCAPING_1, NO_ALT_SOUND, "TILECACHE\\MUST_EXP.STI", 80}
|
||||||
};
|
};
|
||||||
|
|
||||||
UINT8 ubDamageKeyFrame[ NUM_EXP_TYPES ] =
|
//UINT8 ubTransKeyFrame[ NUM_EXP_TYPES ] =
|
||||||
{
|
//{
|
||||||
0,
|
// 0,
|
||||||
3,
|
// 17,
|
||||||
5,
|
// 28,
|
||||||
5,
|
// 24,
|
||||||
5,
|
// 1,
|
||||||
18,
|
// 1,
|
||||||
18,
|
// 1,
|
||||||
18,
|
// 1,
|
||||||
18,
|
// 1,
|
||||||
18,
|
//};
|
||||||
};
|
//
|
||||||
|
//UINT8 ubDamageKeyFrame[ NUM_EXP_TYPES ] =
|
||||||
|
//{
|
||||||
UINT32 uiExplosionSoundID[ NUM_EXP_TYPES ] =
|
// 0,
|
||||||
{
|
// 3,
|
||||||
EXPLOSION_1,
|
// 5,
|
||||||
EXPLOSION_1,
|
// 5,
|
||||||
EXPLOSION_BLAST_2, //LARGE
|
// 5,
|
||||||
EXPLOSION_BLAST_2,
|
// 18,
|
||||||
EXPLOSION_1,
|
// 18,
|
||||||
AIR_ESCAPING_1,
|
// 18,
|
||||||
AIR_ESCAPING_1,
|
// 18,
|
||||||
AIR_ESCAPING_1,
|
//};
|
||||||
AIR_ESCAPING_1,
|
//
|
||||||
325,//TODO: Madd: hard coded for now -- we need to externalize explosion sounds, animations, etc. at some point in the near future
|
//
|
||||||
};
|
//UINT32 uiExplosionSoundID[ NUM_EXP_TYPES ] =
|
||||||
|
//{
|
||||||
|
// EXPLOSION_1,
|
||||||
CHAR8 zBlastFilenames[][70] =
|
// EXPLOSION_1,
|
||||||
{
|
// EXPLOSION_BLAST_2, //LARGE
|
||||||
"",
|
// EXPLOSION_BLAST_2,
|
||||||
"TILECACHE\\ZGRAV_D.STI",
|
// EXPLOSION_1,
|
||||||
"TILECACHE\\ZGRAV_C.STI",
|
// AIR_ESCAPING_1,
|
||||||
"TILECACHE\\ZGRAV_B.STI",
|
// AIR_ESCAPING_1,
|
||||||
"TILECACHE\\shckwave.STI",
|
// AIR_ESCAPING_1,
|
||||||
"TILECACHE\\WAT_EXP.STI",
|
// AIR_ESCAPING_1,
|
||||||
"TILECACHE\\TEAR_EXP.STI",
|
//};
|
||||||
"TILECACHE\\TEAR_EXP.STI",
|
//
|
||||||
"TILECACHE\\MUST_EXP.STI",
|
//
|
||||||
"TILECACHE\\FLAM_EXP.STI",
|
//CHAR8 zBlastFilenames[][70] =
|
||||||
};
|
//{
|
||||||
|
// "",
|
||||||
CHAR8 sBlastSpeeds[] =
|
// "TILECACHE\\ZGRAV_D.STI",
|
||||||
{
|
// "TILECACHE\\ZGRAV_C.STI",
|
||||||
0,
|
// "TILECACHE\\ZGRAV_B.STI",
|
||||||
80,
|
// "TILECACHE\\shckwave.STI",
|
||||||
80,
|
// "TILECACHE\\WAT_EXP.STI",
|
||||||
80,
|
// "TILECACHE\\TEAR_EXP.STI",
|
||||||
20,
|
// "TILECACHE\\TEAR_EXP.STI",
|
||||||
80,
|
// "TILECACHE\\MUST_EXP.STI",
|
||||||
80,
|
//};
|
||||||
80,
|
//
|
||||||
80,
|
//CHAR8 sBlastSpeeds[] =
|
||||||
80,
|
//{
|
||||||
80,
|
// 0,
|
||||||
};
|
// 80,
|
||||||
|
// 80,
|
||||||
|
// 80,
|
||||||
|
// 20,
|
||||||
|
// 80,
|
||||||
|
// 80,
|
||||||
|
// 80,
|
||||||
|
// 80,
|
||||||
|
//};
|
||||||
|
|
||||||
#define BOMB_QUEUE_DELAY (1000 + Random( 500 ) )
|
#define BOMB_QUEUE_DELAY (1000 + Random( 500 ) )
|
||||||
|
|
||||||
@@ -350,7 +362,7 @@ void GenerateExplosionFromExplosionPointer( EXPLOSIONTYPE *pExplosion )
|
|||||||
|
|
||||||
AniParams.sGridNo = sGridNo;
|
AniParams.sGridNo = sGridNo;
|
||||||
AniParams.ubLevelID = ANI_TOPMOST_LEVEL;
|
AniParams.ubLevelID = ANI_TOPMOST_LEVEL;
|
||||||
AniParams.sDelay = sBlastSpeeds[ ubTypeID ];
|
AniParams.sDelay = gExpAniData[ ubTypeID ].sBlastSpeed; // Lesh: edit this line
|
||||||
AniParams.sStartFrame = pExplosion->sCurrentFrame;
|
AniParams.sStartFrame = pExplosion->sCurrentFrame;
|
||||||
AniParams.uiFlags = ANITILE_CACHEDTILE | ANITILE_FORWARD | ANITILE_EXPLOSION;
|
AniParams.uiFlags = ANITILE_CACHEDTILE | ANITILE_FORWARD | ANITILE_EXPLOSION;
|
||||||
|
|
||||||
@@ -376,12 +388,12 @@ void GenerateExplosionFromExplosionPointer( EXPLOSIONTYPE *pExplosion )
|
|||||||
//AniParams.uiFlags |= ANITILE_USEABSOLUTEPOS;
|
//AniParams.uiFlags |= ANITILE_USEABSOLUTEPOS;
|
||||||
}
|
}
|
||||||
|
|
||||||
AniParams.ubKeyFrame1 = ubTransKeyFrame[ ubTypeID ];
|
AniParams.ubKeyFrame1 = gExpAniData[ ubTypeID ].ubTransKeyFrame; // Lesh: edit this line
|
||||||
AniParams.uiKeyFrame1Code = ANI_KEYFRAME_BEGIN_TRANSLUCENCY;
|
AniParams.uiKeyFrame1Code = ANI_KEYFRAME_BEGIN_TRANSLUCENCY;
|
||||||
|
|
||||||
if ( !( uiFlags & EXPLOSION_FLAG_DISPLAYONLY ) )
|
if ( !( uiFlags & EXPLOSION_FLAG_DISPLAYONLY ) )
|
||||||
{
|
{
|
||||||
AniParams.ubKeyFrame2 = ubDamageKeyFrame[ ubTypeID ];
|
AniParams.ubKeyFrame2 = gExpAniData[ ubTypeID ].ubDamageKeyFrame; // Lesh: edit this line
|
||||||
AniParams.uiKeyFrame2Code = ANI_KEYFRAME_BEGIN_DAMAGE;
|
AniParams.uiKeyFrame2Code = ANI_KEYFRAME_BEGIN_DAMAGE;
|
||||||
}
|
}
|
||||||
AniParams.uiUserData = usItem;
|
AniParams.uiUserData = usItem;
|
||||||
@@ -389,7 +401,7 @@ void GenerateExplosionFromExplosionPointer( EXPLOSIONTYPE *pExplosion )
|
|||||||
AniParams.uiUserData3 = pExplosion->iID;
|
AniParams.uiUserData3 = pExplosion->iID;
|
||||||
|
|
||||||
|
|
||||||
strcpy( AniParams.zCachedFile, zBlastFilenames[ ubTypeID ] );
|
strcpy( AniParams.zCachedFile, gExpAniData[ ubTypeID ].zBlastFilename ); // Lesh: edit this line
|
||||||
|
|
||||||
CreateAnimationTile( &AniParams );
|
CreateAnimationTile( &AniParams );
|
||||||
|
|
||||||
@@ -408,16 +420,18 @@ void GenerateExplosionFromExplosionPointer( EXPLOSIONTYPE *pExplosion )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uiSoundID = uiExplosionSoundID[ ubTypeID ];
|
// Lesh: sound randomization
|
||||||
|
uiSoundID = gExpAniData[ ubTypeID ].uiExplosionSoundID;
|
||||||
|
|
||||||
if ( uiSoundID == EXPLOSION_1 )
|
if ( gExpAniData[ ubTypeID ].uiAltExplosionSoundID != NO_ALT_SOUND )
|
||||||
{
|
{
|
||||||
// Randomize
|
// Randomize
|
||||||
if ( Random( 2 ) == 0 )
|
if ( Random( 2 ) == 0 )
|
||||||
{
|
{
|
||||||
uiSoundID = EXPLOSION_ALT_BLAST_1;
|
uiSoundID = gExpAniData[ ubTypeID ].uiAltExplosionSoundID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Lesh: sound randomization ends
|
||||||
|
|
||||||
PlayJA2Sample( uiSoundID, RATE_11025, SoundVolume( HIGHVOLUME, sGridNo ), 1, SoundDir( sGridNo ) );
|
PlayJA2Sample( uiSoundID, RATE_11025, SoundVolume( HIGHVOLUME, sGridNo ), 1, SoundDir( sGridNo ) );
|
||||||
|
|
||||||
|
|||||||
@@ -56,10 +56,27 @@ enum EXPLOSION_TYPES
|
|||||||
SMOKE_EXP,
|
SMOKE_EXP,
|
||||||
MUSTARD_EXP,
|
MUSTARD_EXP,
|
||||||
BURN_EXP,
|
BURN_EXP,
|
||||||
NUM_EXP_TYPES
|
NUM_EXP_TYPES=50
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
// Lesh: introducing struct instead of linked arrays
|
||||||
|
#define MAX_BLAST_FILENAME_LEN 70
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
UINT8 ubTransKeyFrame;
|
||||||
|
UINT8 ubDamageKeyFrame;
|
||||||
|
UINT32 uiExplosionSoundID;
|
||||||
|
UINT32 uiAltExplosionSoundID;
|
||||||
|
CHAR8 zBlastFilename[MAX_BLAST_FILENAME_LEN];
|
||||||
|
CHAR8 sBlastSpeed;
|
||||||
|
} EXPLOSION_DATA;
|
||||||
|
|
||||||
|
extern EXPLOSION_DATA gExpAniData[NUM_EXP_TYPES];
|
||||||
|
// Lesh: done here
|
||||||
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
UINT32 uiWorldBombIndex;
|
UINT32 uiWorldBombIndex;
|
||||||
|
|||||||
@@ -2996,6 +2996,9 @@
|
|||||||
BrowseInformation="1"/>
|
BrowseInformation="1"/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\XML_ExplosionData.cpp">
|
||||||
|
</File>
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter
|
<Filter
|
||||||
Name="Header Files"
|
Name="Header Files"
|
||||||
|
|||||||
@@ -3471,7 +3471,7 @@ STR16 zOptionsScreenHelpText[] =
|
|||||||
// Options for 1.13
|
// Options for 1.13
|
||||||
L"When ON, the chance to hit is shown on the cursor.",
|
L"When ON, the chance to hit is shown on the cursor.",
|
||||||
L"GL Burst uses burst cursor.",
|
L"GL Burst uses burst cursor.",
|
||||||
L"Enemy drop all items, when he is dead.",
|
L"Enemies drop all items on death.",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ extern BOOLEAN gfTacticalPlacementGUIActive;
|
|||||||
extern BOOLEAN gfTacticalPlacementGUIDirty;
|
extern BOOLEAN gfTacticalPlacementGUIDirty;
|
||||||
extern BOOLEAN gfValidLocationsChanged;
|
extern BOOLEAN gfValidLocationsChanged;
|
||||||
extern BOOLEAN gfInMsgBox;
|
extern BOOLEAN gfInMsgBox;
|
||||||
|
extern void InitSightRange(); //lal
|
||||||
|
|
||||||
|
|
||||||
// callback to confirm game is over
|
// callback to confirm game is over
|
||||||
@@ -96,6 +97,7 @@ BOOLEAN InitializeGame(void)
|
|||||||
// Snap: Read options from an INI file in the default of custom Data directory
|
// Snap: Read options from an INI file in the default of custom Data directory
|
||||||
// Moved this up because some settings are used during other inits
|
// Moved this up because some settings are used during other inits
|
||||||
LoadGameExternalOptions();
|
LoadGameExternalOptions();
|
||||||
|
InitSightRange(); //lal
|
||||||
|
|
||||||
// Initlaize mouse subsystems
|
// Initlaize mouse subsystems
|
||||||
MSYS_Init( );
|
MSYS_Init( );
|
||||||
|
|||||||
Reference in New Issue
Block a user