mirror of
https://github.com/1dot13/source.git
synced 2026-09-02 14:36:06 +02:00
Update to Master
This commit is contained in:
@@ -40,4 +40,4 @@ typedef enum
|
||||
#endif
|
||||
} ItemActionType;
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -62,4 +62,4 @@ BOOLEAN LoadAirRaidInfoFromSaveGameFile( HWFILE hFile );
|
||||
void EndAirRaid( );
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -1015,7 +1015,7 @@ UINT32 GetArmsDealerItemTypeFromItemNumber( UINT16 usItem )
|
||||
return( ARMS_DEALER_MEDICAL );
|
||||
else if (ItemIsAttachment(usItem))
|
||||
return( ARMS_DEALER_ATTACHMENTS );
|
||||
else if (ItemIsDetonator(usItem) || ItemIsRemoteDetonator(usItem) || ItemIsRemoteTrigger(usItem))
|
||||
else if ( IsAttachmentClass( usItem, (AC_DETONATOR | AC_REMOTEDET) ) || ItemIsRemoteTrigger(usItem))
|
||||
return( ARMS_DEALER_DETONATORS );
|
||||
else
|
||||
return( ARMS_DEALER_MISC );
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
#include "ub_config.h"
|
||||
|
||||
#include "history.h"
|
||||
#include <language.hpp>
|
||||
|
||||
//forward declarations of common classes to eliminate includes
|
||||
class OBJECTTYPE;
|
||||
@@ -1344,10 +1345,10 @@ void HandleDialogue( )
|
||||
{
|
||||
HandleEveryoneDoneTheirEndGameQuotes();
|
||||
}
|
||||
else
|
||||
else if ( QItem.uiSpecialEventData & MULTIPURPOSE_SPECIAL_EVENT_GETUP_AFTER_HELI_CRASH )
|
||||
{
|
||||
// grab soldier ptr from profile ID
|
||||
pSoldier = FindSoldierByProfileID( (UINT8)QItem.uiSpecialEventData, FALSE );
|
||||
pSoldier = FindSoldierByProfileID( (UINT8)QItem.uiSpecialEventData2, FALSE );
|
||||
|
||||
// FindSoldier was returning a lot of nullptrs which would crash the game very quickly after Jerry gets up. This check is here to circumvent that.
|
||||
if (pSoldier != nullptr)
|
||||
@@ -2408,8 +2409,8 @@ CHAR8 *GetDialogueDataFilename( UINT8 ubCharacterNum, UINT16 usQuoteNum, BOOLEAN
|
||||
{
|
||||
if ( fWavFile )
|
||||
{
|
||||
#ifdef RUSSIAN
|
||||
if ( ( gMercProfiles[ubCharacterNum].Type == PROFILETYPE_RPC ||
|
||||
if ( g_lang == i18n::Lang::ru &&
|
||||
( gMercProfiles[ubCharacterNum].Type == PROFILETYPE_RPC ||
|
||||
gMercProfiles[ubCharacterNum].Type == PROFILETYPE_NPC ||
|
||||
gMercProfiles[ubCharacterNum].Type == PROFILETYPE_VEHICLE ) && gMercProfiles[ ubCharacterNum ].ubMiscFlags & PROFILE_MISC_FLAG_RECRUITED )
|
||||
{
|
||||
@@ -2427,7 +2428,7 @@ CHAR8 *GetDialogueDataFilename( UINT8 ubCharacterNum, UINT16 usQuoteNum, BOOLEAN
|
||||
#endif
|
||||
}
|
||||
else
|
||||
#endif
|
||||
|
||||
{
|
||||
// build name of wav file (characternum + quotenum)
|
||||
sprintf( zFileNameHelper, "SPEECH\\%03d_%03d", usVoiceSet, usQuoteNum );
|
||||
|
||||
@@ -262,6 +262,7 @@ enum DialogQuoteIDs
|
||||
#ifdef JA2UB
|
||||
#define MULTIPURPOSE_SPECIAL_EVENT_TEAM_MEMBERS_DONE_TALKING 0x20000000
|
||||
#define MULTIPURPOSE_SPECIAL_EVENT_DONE_KILLING_DEIDRANNA 0x10000000
|
||||
#define MULTIPURPOSE_SPECIAL_EVENT_GETUP_AFTER_HELI_CRASH 0x08000000
|
||||
#else
|
||||
#define MULTIPURPOSE_SPECIAL_EVENT_DONE_KILLING_DEIDRANNA 0x00000001
|
||||
#define MULTIPURPOSE_SPECIAL_EVENT_TEAM_MEMBERS_DONE_TALKING 0x00000002
|
||||
@@ -489,4 +490,4 @@ void SetExternMapscreenSpeechPanelXY( INT16 sXPos, INT16 sYPos );
|
||||
void RemoveJerryMiloBrokenLaptopOverlay();
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -25,4 +25,4 @@ void HandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLe
|
||||
void BeginHandleQueenBitchDeath( SOLDIERTYPE *pKillerSoldier, INT32 sGridNo, INT8 bLevel );
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -22,4 +22,4 @@ BOOLEAN SaveEnemySoldiersToTempFile( INT16 sSectorX, INT16 sSectorY, INT8 bSecto
|
||||
|
||||
extern BOOLEAN gfRestoringEnemySoldiersFromTempFile;
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -6,4 +6,4 @@ WEAPON_DROPS gEnemyWeaponDrops[MAX_DROP_ITEMS];
|
||||
AMMO_DROPS gEnemyAmmoDrops[MAX_DROP_ITEMS];
|
||||
EXPLOSIVE_DROPS gEnemyExplosiveDrops[MAX_DROP_ITEMS];
|
||||
ARMOUR_DROPS gEnemyArmourDrops[MAX_DROP_ITEMS];
|
||||
MISC_DROPS gEnemyMiscDrops[MAX_DROP_ITEMS];
|
||||
MISC_DROPS gEnemyMiscDrops[MAX_DROP_ITEMS];
|
||||
|
||||
@@ -49,4 +49,4 @@ extern EXPLOSIVE_DROPS gEnemyExplosiveDrops[MAX_DROP_ITEMS];
|
||||
extern ARMOUR_DROPS gEnemyArmourDrops[MAX_DROP_ITEMS];
|
||||
extern MISC_DROPS gEnemyMiscDrops[MAX_DROP_ITEMS];
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include "GameSettings.h"
|
||||
#include "fresh_header.h"
|
||||
#include "connect.h"
|
||||
#include <language.hpp>
|
||||
|
||||
#ifdef JA2UB
|
||||
#include "Explosion Control.h"
|
||||
@@ -1490,7 +1491,7 @@ void SetDoorString( INT32 sGridNo )
|
||||
// ATE: If here, we try to say, opened or closed...
|
||||
if ( gfUIIntTileLocation2 == FALSE )
|
||||
{
|
||||
#ifdef GERMAN
|
||||
if( g_lang == i18n::Lang::de ) {
|
||||
|
||||
wcscpy( gzIntTileLocation2, TacticalStr[ DOOR_DOOR_MOUSE_DESCRIPTION ] );
|
||||
gfUIIntTileLocation2 = TRUE;
|
||||
@@ -1533,7 +1534,7 @@ void SetDoorString( INT32 sGridNo )
|
||||
gfUIIntTileLocation = TRUE;
|
||||
}
|
||||
}
|
||||
#else
|
||||
} else {
|
||||
|
||||
// Try to get doors status here...
|
||||
pDoorStatus = GetDoorStatus( sGridNo );
|
||||
@@ -1574,7 +1575,7 @@ void SetDoorString( INT32 sGridNo )
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,4 +26,4 @@ void HandleDoorChangeFromGridNo( SOLDIERTYPE *pSoldier, INT32 sGridNo, BOOLEAN f
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -14,4 +14,4 @@ void EndUIPlan( );
|
||||
BOOLEAN InUIPlanMode( );
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -73,4 +73,4 @@ void DrawExplosionWarning( INT32 sGridno, INT8 sLevel, INT8 sDelay );
|
||||
// For now, we aren't using usColour, but that will likely change in the future
|
||||
void DrawTraitRadius( INT32 sGridno, INT8 sLevel, INT32 sRadius, INT16 sThickness, UINT16 usColour );
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -249,4 +249,4 @@ extern UINT32 gusCurMousePos;
|
||||
UINT16 GetSnapCursorIndex( UINT16 usAdditionalData );
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -2355,7 +2355,8 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum
|
||||
break;
|
||||
case NPC_ACTION_HAVE_PACOS_FOLLOW:
|
||||
pSoldier = FindSoldierByProfileID( 114, FALSE );
|
||||
sGridNo = 18193; //dnl!!!
|
||||
sGridNo = 8537; //dnl!!!
|
||||
//kitty: changed gridno from 18193 to 8537, that's at entrance door to rebel basement, where Fatima and Dimitri dialogue happens
|
||||
if (pSoldier)
|
||||
{
|
||||
if (NewOKDestination( pSoldier, sGridNo, TRUE, 0 ) )
|
||||
@@ -4334,7 +4335,7 @@ void HandleNPCDoAction( UINT8 ubTargetNPC, UINT16 usActionCode, UINT8 ubQuoteNum
|
||||
case NPC_ACTION_PUT_PACOS_IN_BASEMENT:
|
||||
gMercProfiles[ PACOS ].sSectorX = 10;
|
||||
gMercProfiles[ PACOS ].sSectorY = MAP_ROW_A;
|
||||
gMercProfiles[ PACOS ].bSectorZ = 0;
|
||||
gMercProfiles[ PACOS ].bSectorZ = 1; //kitty: fixed - first level underground is 1, not 0
|
||||
break;
|
||||
case NPC_ACTION_HISTORY_ASSASSIN:
|
||||
AddHistoryToPlayersLog( HISTORY_ASSASSIN, 0, GetWorldTotalMin(), gWorldSectorX, gWorldSectorY );
|
||||
|
||||
+256
-256
File diff suppressed because it is too large
Load Diff
+181
-59
@@ -57,7 +57,6 @@
|
||||
#include "game clock.h"
|
||||
#include "squads.h"
|
||||
#include "MessageBoxScreen.h"
|
||||
#include "Language Defines.h"
|
||||
#include "GameSettings.h"
|
||||
#include "Map Screen Interface Map Inventory.h"
|
||||
#include "Quests.h"
|
||||
@@ -83,6 +82,7 @@
|
||||
#include "Sound Control.h"
|
||||
|
||||
#include "Multi Language Graphic Utils.h"
|
||||
#include <language.hpp>
|
||||
|
||||
#ifdef JA2UB
|
||||
#include "Ja25_Tactical.h"
|
||||
@@ -7412,11 +7412,11 @@ void RenderItemDescriptionBox( )
|
||||
FindFontRightCoordinates( gODBItemDescRegions[0][0].sLeft, gODBItemDescRegions[0][0].sTop, gODBItemDescRegions[0][0].sRight - gODBItemDescRegions[0][0].sLeft, gODBItemDescRegions[0][0].sBottom - gODBItemDescRegions[0][0].sTop ,pStr, BLOCKFONT2, &usX, &usY);
|
||||
}
|
||||
|
||||
#ifdef CHINESE
|
||||
if( g_lang == i18n::Lang::zh ) {
|
||||
wcscat( pStr, ChineseSpecString1 );
|
||||
#else
|
||||
} else {
|
||||
wcscat( pStr, L"%%" );
|
||||
#endif
|
||||
}
|
||||
|
||||
mprintf( usX, usY, pStr );
|
||||
}
|
||||
@@ -11183,11 +11183,11 @@ void SetupPickupPage( INT8 bPage )
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef CHINESE
|
||||
if( g_lang == i18n::Lang::zh ) {
|
||||
swprintf( pStr, ChineseSpecString3, sValue );
|
||||
#else
|
||||
} else {
|
||||
swprintf( pStr, L"%d%%", sValue );
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
SetRegionFastHelpText( &(gItemPickupMenu.Regions[ cnt - iStart ]), pStr );
|
||||
@@ -12285,12 +12285,28 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
||||
|
||||
if ( gGameExternalOptions.fAdvRepairSystem && sThreshold < 100 )
|
||||
{
|
||||
#ifdef CHINESE
|
||||
if( g_lang == i18n::Lang::zh ) {
|
||||
swprintf( pStr, ChineseSpecString11,
|
||||
#else
|
||||
ItemNames[ usItem ],
|
||||
AmmoCaliber[ Weapon[ usItem ].ubCalibre ],
|
||||
sValue,
|
||||
sThreshold,
|
||||
gWeaponStatsDesc[ 9 ], //Accuracy String
|
||||
accuracy,
|
||||
gWeaponStatsDesc[ 11 ], //Damage String
|
||||
GetDamage(pObject),
|
||||
gWeaponStatsDesc[ 10 ], //Range String
|
||||
gGameSettings.fOptions[ TOPTION_SHOW_WEAPON_RANGE_IN_TILES ] ? GunRange( pObject, NULL )/10 : GunRange( pObject, NULL ), // SANDRO - added argument //Modified Range
|
||||
gGameSettings.fOptions[ TOPTION_SHOW_WEAPON_RANGE_IN_TILES ] ? GetModifiedGunRange(usItem)/10 : GetModifiedGunRange(usItem), //Gun Range
|
||||
gWeaponStatsDesc[ 6 ], //AP String
|
||||
(Weapon[ usItem ].ubReadyTime * (100 - GetPercentReadyTimeAPReduction( pObject )) / 100), // Ready AP's
|
||||
apStr, //AP's
|
||||
gWeaponStatsDesc[ 12 ], //Weight String
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
} else {
|
||||
swprintf( pStr, L"%s (%s) [%d%%(%d%%)]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s",
|
||||
#endif
|
||||
|
||||
ItemNames[ usItem ],
|
||||
AmmoCaliber[ Weapon[ usItem ].ubCalibre ],
|
||||
sValue,
|
||||
@@ -12309,16 +12325,12 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef CHINESE
|
||||
if( g_lang == i18n::Lang::zh ) {
|
||||
swprintf( pStr, ChineseSpecString4,
|
||||
#else
|
||||
swprintf( pStr, L"%s (%s) [%d%%]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s",
|
||||
#endif
|
||||
|
||||
|
||||
ItemNames[ usItem ],
|
||||
AmmoCaliber[ Weapon[ usItem ].ubCalibre ],
|
||||
sValue,
|
||||
@@ -12336,6 +12348,28 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
} else {
|
||||
|
||||
swprintf( pStr, L"%s (%s) [%d%%]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s",
|
||||
ItemNames[ usItem ],
|
||||
AmmoCaliber[ Weapon[ usItem ].ubCalibre ],
|
||||
sValue,
|
||||
gWeaponStatsDesc[ 9 ], //Accuracy String
|
||||
accuracy,
|
||||
gWeaponStatsDesc[ 11 ], //Damage String
|
||||
GetDamage(pObject),
|
||||
gWeaponStatsDesc[ 10 ], //Range String
|
||||
gGameSettings.fOptions[ TOPTION_SHOW_WEAPON_RANGE_IN_TILES ] ? GunRange( pObject, NULL )/10 : GunRange( pObject, NULL ), // SANDRO - added argument //Modified Range
|
||||
gGameSettings.fOptions[ TOPTION_SHOW_WEAPON_RANGE_IN_TILES ] ? GetModifiedGunRange(usItem)/10 : GetModifiedGunRange(usItem), //Gun Range
|
||||
gWeaponStatsDesc[ 6 ], //AP String
|
||||
(Weapon[ usItem ].ubReadyTime * (100 - GetPercentReadyTimeAPReduction( pObject )) / 100), // Ready AP's
|
||||
apStr, //AP's
|
||||
gWeaponStatsDesc[ 12 ], //Weight String
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -12384,12 +12418,8 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
||||
|
||||
if ( gGameExternalOptions.fAdvRepairSystem && sThreshold < 100 )
|
||||
{
|
||||
#ifdef CHINESE
|
||||
if( g_lang == i18n::Lang::zh ) {
|
||||
swprintf( pStr, L"%s [%d%£¥(%d%£¥)]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s",
|
||||
#else
|
||||
swprintf( pStr, L"%s [%d%%(%d%%)]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s",
|
||||
#endif
|
||||
|
||||
ItemNames[ usItem ],
|
||||
sValue,
|
||||
sThreshold,
|
||||
@@ -12407,15 +12437,31 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
} else {
|
||||
swprintf( pStr, L"%s [%d%%(%d%%)]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s",
|
||||
ItemNames[ usItem ],
|
||||
sValue,
|
||||
sThreshold,
|
||||
gWeaponStatsDesc[ 9 ], //Accuracy String
|
||||
accuracy,
|
||||
gWeaponStatsDesc[ 11 ], //Damage String
|
||||
GetDamage(pObject),
|
||||
gWeaponStatsDesc[ 10 ], //Range String
|
||||
gGameSettings.fOptions[ TOPTION_SHOW_WEAPON_RANGE_IN_TILES ] ? GunRange( pObject, NULL )/10 : GunRange( pObject, NULL ), // SANDRO - added argument //Modified Range
|
||||
gGameSettings.fOptions[ TOPTION_SHOW_WEAPON_RANGE_IN_TILES ] ? GetModifiedGunRange(usItem)/10 : GetModifiedGunRange(usItem), //Gun Range
|
||||
gWeaponStatsDesc[ 6 ], //AP String
|
||||
(Weapon[ usItem ].ubReadyTime * (100 - GetPercentReadyTimeAPReduction( pObject )) / 100), // Ready AP's
|
||||
apStr, //AP's
|
||||
gWeaponStatsDesc[ 12 ], //Weight String
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef CHINESE
|
||||
if( g_lang == i18n::Lang::zh ) {
|
||||
swprintf( pStr, L"%s [%d%£¥]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s",
|
||||
#else
|
||||
swprintf( pStr, L"%s [%d%%]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s",
|
||||
#endif
|
||||
|
||||
ItemNames[ usItem ],
|
||||
sValue,
|
||||
gWeaponStatsDesc[ 9 ], //Accuracy String
|
||||
@@ -12432,6 +12478,25 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
} else {
|
||||
swprintf( pStr, L"%s [%d%%]\n%s %d\n%s %d\n%s %d (%d)\n%s (%d) %s\n%s %1.1f %s",
|
||||
ItemNames[ usItem ],
|
||||
sValue,
|
||||
gWeaponStatsDesc[ 9 ], //Accuracy String
|
||||
accuracy,
|
||||
gWeaponStatsDesc[ 11 ], //Damage String
|
||||
GetDamage(pObject),
|
||||
gWeaponStatsDesc[ 10 ], //Range String
|
||||
gGameSettings.fOptions[ TOPTION_SHOW_WEAPON_RANGE_IN_TILES ] ? GunRange( pObject, NULL )/10 : GunRange( pObject, NULL ), // SANDRO - added argument //Modified Range
|
||||
gGameSettings.fOptions[ TOPTION_SHOW_WEAPON_RANGE_IN_TILES ] ? GetModifiedGunRange(usItem)/10 : GetModifiedGunRange(usItem), //Gun Range
|
||||
gWeaponStatsDesc[ 6 ], //AP String
|
||||
(Weapon[ usItem ].ubReadyTime * (100 - GetPercentReadyTimeAPReduction( pObject )) / 100), // Ready AP's
|
||||
apStr, //AP's
|
||||
gWeaponStatsDesc[ 12 ], //Weight String
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -12442,13 +12507,9 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
||||
{
|
||||
if ( gGameExternalOptions.fAdvRepairSystem && sThreshold < 100 )
|
||||
{
|
||||
#ifdef CHINESE
|
||||
if( g_lang == i18n::Lang::zh ) {
|
||||
swprintf( pStr, ChineseSpecString9,
|
||||
#else
|
||||
swprintf( pStr, L"%s [%d%%(%d%%)]\n%s %d\n%s %d\n%s %1.1f %s",
|
||||
#endif
|
||||
|
||||
ItemNames[ usItem ],
|
||||
ItemNames[ usItem ],
|
||||
sValue,
|
||||
sThreshold,
|
||||
gWeaponStatsDesc[ 11 ], //Damage String
|
||||
@@ -12459,16 +12520,26 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
} else {
|
||||
swprintf( pStr, L"%s [%d%%(%d%%)]\n%s %d\n%s %d\n%s %1.1f %s",
|
||||
ItemNames[ usItem ],
|
||||
sValue,
|
||||
sThreshold,
|
||||
gWeaponStatsDesc[ 11 ], //Damage String
|
||||
GetDamage(pObject), //Melee damage
|
||||
gWeaponStatsDesc[ 6 ], //AP String
|
||||
BaseAPsToShootOrStab( APBPConstants[DEFAULT_APS], APBPConstants[DEFAULT_AIMSKILL], pObject, pSoldier ), //AP's
|
||||
gWeaponStatsDesc[ 12 ], //Weight String
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef CHINESE
|
||||
if( g_lang == i18n::Lang::zh ) {
|
||||
swprintf( pStr, ChineseSpecString5,
|
||||
#else
|
||||
swprintf( pStr, L"%s [%d%%]\n%s %d\n%s %d\n%s %1.1f %s",
|
||||
#endif
|
||||
|
||||
ItemNames[ usItem ],
|
||||
ItemNames[ usItem ],
|
||||
sValue,
|
||||
gWeaponStatsDesc[ 11 ], //Damage String
|
||||
GetDamage(pObject), //Melee damage
|
||||
@@ -12478,6 +12549,19 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
} else {
|
||||
swprintf( pStr, L"%s [%d%%]\n%s %d\n%s %d\n%s %1.1f %s",
|
||||
ItemNames[ usItem ],
|
||||
sValue,
|
||||
gWeaponStatsDesc[ 11 ], //Damage String
|
||||
GetDamage(pObject), //Melee damage
|
||||
gWeaponStatsDesc[ 6 ], //AP String
|
||||
BaseAPsToShootOrStab( APBPConstants[DEFAULT_APS], APBPConstants[DEFAULT_AIMSKILL], pObject, pSoldier ), //AP's
|
||||
gWeaponStatsDesc[ 12 ], //Weight String
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -12517,13 +12601,9 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
||||
UINT16 explDamage = (UINT16) GetModifiedExplosiveDamage( Explosive[Item[ usItem ].ubClassIndex].ubDamage, 0 );
|
||||
UINT16 explStunDamage = (UINT16) GetModifiedExplosiveDamage( Explosive[Item[ usItem ].ubClassIndex].ubStunDamage, 1 );
|
||||
|
||||
#ifdef CHINESE
|
||||
if( g_lang == i18n::Lang::zh ) {
|
||||
swprintf( pStr, ChineseSpecString5,
|
||||
#else
|
||||
swprintf( pStr, L"%s [%d%%]\n%s %d\n%s %d\n%s %1.1f %s",
|
||||
#endif
|
||||
|
||||
ItemNames[ usItem ],
|
||||
ItemNames[ usItem ],
|
||||
sValue,
|
||||
gWeaponStatsDesc[ 11 ], //Damage String
|
||||
explDamage,
|
||||
@@ -12533,6 +12613,19 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
} else {
|
||||
swprintf( pStr, L"%s [%d%%]\n%s %d\n%s %d\n%s %1.1f %s",
|
||||
ItemNames[ usItem ],
|
||||
sValue,
|
||||
gWeaponStatsDesc[ 11 ], //Damage String
|
||||
explDamage,
|
||||
gWeaponStatsDesc[ 13 ], //Stun Damage String
|
||||
explStunDamage, //Stun Damage
|
||||
gWeaponStatsDesc[ 12 ], //Weight String
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -12562,12 +12655,8 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
||||
|
||||
if ( gGameExternalOptions.fAdvRepairSystem && sThreshold < 100 )
|
||||
{
|
||||
#ifdef CHINESE
|
||||
if( g_lang == i18n::Lang::zh ) {
|
||||
swprintf( pStr, ChineseSpecString10,
|
||||
#else
|
||||
swprintf( pStr, L"%s [%d%%(%d%%)]\n%s %d%% (%d/%d)\n%s %d%%\n%s %1.1f %s",
|
||||
#endif
|
||||
|
||||
ItemNames[ usItem ], //Item long name
|
||||
sValue, //Item condition
|
||||
sThreshold, //repair threshold
|
||||
@@ -12581,15 +12670,27 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
} else {
|
||||
swprintf( pStr, L"%s [%d%%(%d%%)]\n%s %d%% (%d/%d)\n%s %d%%\n%s %1.1f %s",
|
||||
ItemNames[ usItem ], //Item long name
|
||||
sValue, //Item condition
|
||||
sThreshold, //repair threshold
|
||||
pInvPanelTitleStrings[ 4 ], //Protection string
|
||||
iProtection, //Protection rating in % based on best armor
|
||||
Armour[ Item[ usItem ].ubClassIndex ].ubProtection * sValue / 100,
|
||||
Armour[ Item[ usItem ].ubClassIndex ].ubProtection, //Protection (raw data)
|
||||
pInvPanelTitleStrings[ 3 ], //Camo string
|
||||
GetCamoBonus(pObject)+GetUrbanCamoBonus(pObject)+GetDesertCamoBonus(pObject)+GetSnowCamoBonus(pObject), //Camo bonus
|
||||
gWeaponStatsDesc[ 12 ], //Weight string
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef CHINESE
|
||||
if( g_lang == i18n::Lang::zh ) {
|
||||
swprintf( pStr, ChineseSpecString6,
|
||||
#else
|
||||
swprintf( pStr, L"%s [%d%%]\n%s %d%% (%d/%d)\n%s %d%%\n%s %1.1f %s",
|
||||
#endif
|
||||
|
||||
ItemNames[ usItem ], //Item long name
|
||||
sValue, //Item condition
|
||||
pInvPanelTitleStrings[ 4 ], //Protection string
|
||||
@@ -12602,6 +12703,21 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
} else {
|
||||
swprintf( pStr, L"%s [%d%%]\n%s %d%% (%d/%d)\n%s %d%%\n%s %1.1f %s",
|
||||
ItemNames[ usItem ], //Item long name
|
||||
sValue, //Item condition
|
||||
pInvPanelTitleStrings[ 4 ], //Protection string
|
||||
iProtection, //Protection rating in % based on best armor
|
||||
Armour[ Item[ usItem ].ubClassIndex ].ubProtection * sValue / 100,
|
||||
Armour[ Item[ usItem ].ubClassIndex ].ubProtection, //Protection (raw data)
|
||||
pInvPanelTitleStrings[ 3 ], //Camo string
|
||||
GetCamoBonus(pObject)+GetUrbanCamoBonus(pObject)+GetDesertCamoBonus(pObject)+GetSnowCamoBonus(pObject), //Camo bonus
|
||||
gWeaponStatsDesc[ 12 ], //Weight string
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -12614,17 +12730,23 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
||||
default:
|
||||
{
|
||||
// The final, and typical case, is that of an item with a percent status
|
||||
#ifdef CHINESE
|
||||
if( g_lang == i18n::Lang::zh ) {
|
||||
swprintf( pStr, ChineseSpecString7,
|
||||
#else
|
||||
swprintf( pStr, L"%s [%d%%]\n%s %1.1f %s",
|
||||
#endif
|
||||
ItemNames[ usItem ], //Item long name
|
||||
sValue, //Item condition
|
||||
gWeaponStatsDesc[ 12 ], //Weight String
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
} else {
|
||||
swprintf( pStr, L"%s [%d%%]\n%s %1.1f %s",
|
||||
ItemNames[ usItem ], //Item long name
|
||||
sValue, //Item condition
|
||||
gWeaponStatsDesc[ 12 ], //Weight String
|
||||
fWeight, //Weight
|
||||
GetWeightUnitString() //Weight units
|
||||
);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -73,6 +73,8 @@
|
||||
|
||||
//legion by Jazz
|
||||
#include "Interface Utils.h"
|
||||
#include <language.hpp>
|
||||
|
||||
//forward declarations of common classes to eliminate includes
|
||||
class OBJECTTYPE;
|
||||
class SOLDIERTYPE;
|
||||
@@ -2748,27 +2750,27 @@ void RenderSMPanel( BOOLEAN *pfDirty )
|
||||
|
||||
mprintf( SM_ARMOR_LABEL_X - StringPixLength( pInvPanelTitleStrings[0], BLOCKFONT2 ) / 2, SM_ARMOR_LABEL_Y, pInvPanelTitleStrings[ 0 ] );
|
||||
|
||||
#ifdef CHINESE
|
||||
if( g_lang == i18n::Lang::zh ) {
|
||||
mprintf( SM_ARMOR_PERCENT_X, SM_ARMOR_PERCENT_Y, ChineseSpecString1 );
|
||||
#else
|
||||
} else {
|
||||
mprintf( SM_ARMOR_PERCENT_X, SM_ARMOR_PERCENT_Y, L"%%" );
|
||||
#endif
|
||||
}
|
||||
|
||||
mprintf( SM_WEIGHT_LABEL_X - StringPixLength( pInvPanelTitleStrings[1], BLOCKFONT2 ), SM_WEIGHT_LABEL_Y, pInvPanelTitleStrings[ 1 ] );
|
||||
|
||||
#ifdef CHINESE
|
||||
if( g_lang == i18n::Lang::zh ) {
|
||||
mprintf( SM_WEIGHT_PERCENT_X, SM_WEIGHT_PERCENT_Y, ChineseSpecString1 );
|
||||
#else
|
||||
} else {
|
||||
mprintf( SM_WEIGHT_PERCENT_X, SM_WEIGHT_PERCENT_Y, L"%%" );
|
||||
#endif
|
||||
}
|
||||
|
||||
mprintf( SM_CAMMO_LABEL_X - StringPixLength( pInvPanelTitleStrings[2], BLOCKFONT2 ), SM_CAMMO_LABEL_Y, pInvPanelTitleStrings[ 2 ] );
|
||||
|
||||
#ifdef CHINESE
|
||||
if( g_lang == i18n::Lang::zh ) {
|
||||
mprintf( SM_CAMMO_PERCENT_X, SM_CAMMO_PERCENT_Y, ChineseSpecString1 );
|
||||
#else
|
||||
} else {
|
||||
mprintf( SM_CAMMO_PERCENT_X, SM_CAMMO_PERCENT_Y, L"%%" );
|
||||
#endif
|
||||
}
|
||||
|
||||
UpdateStatColor( gpSMCurrentMerc->timeChanges.uiChangeAgilityTime, (BOOLEAN)(gpSMCurrentMerc->usValueGoneUp & AGIL_INCREASE ? TRUE : FALSE), (BOOLEAN)((gGameOptions.fNewTraitSystem && (gpSMCurrentMerc->ubCriticalStatDamage[DAMAGED_STAT_AGILITY] > 0)) ? TRUE : FALSE), gpSMCurrentMerc->bExtraAgility != 0 ); // SANDRO
|
||||
|
||||
|
||||
@@ -27,4 +27,4 @@ void UnLoadCarPortraits( void );
|
||||
void DrawItemOutlineZoomedInventory( INT16 sX, INT16 sY, INT16 sWidth, INT16 sHeight, INT16 sColor, UINT32 uiBuffer );
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
+3
-16
@@ -459,14 +459,7 @@ BOOLEAN InitializeTacticalInterface( )
|
||||
|
||||
// failing the CHECKF after this will cause you to lose your mouse
|
||||
|
||||
if ( GETPIXELDEPTH() == 8 )
|
||||
{
|
||||
strcpy( vs_desc.ImageFile, "INTERFACE\\IN_TEXT_8.pcx" );
|
||||
}
|
||||
else if ( GETPIXELDEPTH() == 16 )
|
||||
{
|
||||
strcpy( vs_desc.ImageFile, "INTERFACE\\IN_TEXT.STI" );
|
||||
}
|
||||
strcpy( vs_desc.ImageFile, "INTERFACE\\IN_TEXT.STI" );
|
||||
|
||||
if( !AddVideoSurface( &vs_desc, &guiINTEXT ) )
|
||||
AssertMsg( 0, "Missing INTERFACE\\In_text.sti");
|
||||
@@ -3556,10 +3549,7 @@ void DrawBarsInUIBox( SOLDIERTYPE *pSoldier , INT16 sXPos, INT16 sYPos, INT16 sW
|
||||
}
|
||||
if ( pSoldier->ubID == gusSelectedSoldier )
|
||||
{
|
||||
if(gbPixelDepth==16)
|
||||
RectangleDraw( TRUE, sXPos+1, sYPos-1, sXPos+sWidth+3, sYPos+1+interval*3, color16, pDestBuf);
|
||||
else
|
||||
RectangleDraw8( TRUE, sXPos+1, sYPos-1, sXPos+sWidth+3, sYPos+1+interval*3, color8, pDestBuf);
|
||||
RectangleDraw( TRUE, sXPos+1, sYPos-1, sXPos+sWidth+3, sYPos+1+interval*3, color16, pDestBuf);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5805,10 +5795,7 @@ void DrawBar( INT32 x, INT32 y, INT32 width, INT32 height, UINT16 color8, UINT16
|
||||
{
|
||||
for( INT32 i=0; i < height; i++ )
|
||||
{
|
||||
if(gbPixelDepth==16)
|
||||
LineDraw( TRUE, x, y+i, x+width-1, y+i, color16, pDestBuf );
|
||||
else if(gbPixelDepth==8)
|
||||
LineDraw8( TRUE, x, y+i, x+width-1, y+i, color8, pDestBuf );
|
||||
LineDraw( TRUE, x, y+i, x+width-1, y+i, color16, pDestBuf );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+27
-27
@@ -738,18 +738,18 @@ extern OBJECTTYPE gTempObject;
|
||||
// note that these should not be used to determine what kind of an attachment an item is, that is determined by attachmentclass and the AC_xxx flags above
|
||||
#define BLOOD_BAG 0x00000001 //1 // this item is a blood bag can can be used to boost surgery
|
||||
#define MANPAD 0x00000002 //2 // this item is a MAn-Portable Air-Defense System
|
||||
#define BEARTRAP 0x00000004 //4 // a mechanical trap that does no explosion, but causes leg damage to whoever activates it
|
||||
#define BEARTRAP 0x00000004 //4 // a mechanical trap that does no explosion, but causes leg damage to whoever activates it
|
||||
#define CAMERA 0x00000008 //8
|
||||
|
||||
#define WATER_DRUM 0x00000010 //16 // water drums allow to refill canteens in the sector they are in
|
||||
#define MEAT_BLOODCAT 0x00000020 //32 // retrieve this by gutting a bloodcat
|
||||
#define MEAT_COW 0x00000040 //64 // retrieve this by gutting a cow
|
||||
#define BELT_FED 0x00000080 //128 // item can be fed externally
|
||||
#define BELT_FED 0x00000080 //128 // item can be fed externally
|
||||
|
||||
#define AMMO_BELT 0x00000100 //256 // this item can be used to feed externally
|
||||
#define AMMO_BELT_VEST 0x00000200 //512 // this is a vest that can contain AMMO_BELT items in its medium slots
|
||||
#define CAMO_REMOVAL 0x00000400 //1024 // item can be used to remove camo
|
||||
#define CLEANING_KIT 0x00000800 //2048 // weapon cleaning kit
|
||||
#define CAMO_REMOVAL 0x00000400 //1024 // item can be used to remove camo
|
||||
#define CLEANING_KIT 0x00000800 //2048 // weapon cleaning kit
|
||||
|
||||
#define ATTENTION_ITEM 0x00001000 //4096 // this item is 'interesting' to the AI. Dumb soldiers may try to pick it up
|
||||
#define GAROTTE 0x00002000 //8192 // this item is a garotte
|
||||
@@ -758,18 +758,18 @@ extern OBJECTTYPE gTempObject;
|
||||
|
||||
#define SKIN_BLOODCAT 0x00010000 //65536 // retrieve this by skinning (=decapitating) a bloodcat
|
||||
#define NO_METAL_DETECTION 0x00020000 //131072 // a planted bomb with this flag can NOT be detected via metal detector. Use sparingly!
|
||||
#define JUMP_GRENADE 0x00040000 //262144 // add +25 heigth to explosion, used for bouncing grenades and jumping mines
|
||||
#define JUMP_GRENADE 0x00040000 //262144 // add +25 heigth to explosion, used for bouncing grenades and jumping mines
|
||||
#define HANDCUFFS 0x00080000 //524288 // item can be used to capture soldiers
|
||||
|
||||
#define TASER 0x00100000 //1048576 // item is a taser, melee hits with this will drain breath (if batteries are supplied)
|
||||
#define SCUBA_BOTTLE 0x00200000 //2097152 // item is a scuba gear air bottle
|
||||
#define SCUBA_BOTTLE 0x00200000 //2097152 // item is a scuba gear air bottle
|
||||
#define SCUBA_MASK 0x00400000 //4194304 // item is a scuba gear breathing mask
|
||||
#define SCUBA_FINS 0x00800000 //8388608 // this item speed up swimming, but slows walking and running
|
||||
|
||||
#define TRIPWIREROLL 0x01000000 //16777216 // this item is a tripwire roll
|
||||
#define TRIPWIREROLL 0x01000000 //16777216 // this item is a tripwire roll
|
||||
#define RADIO_SET 0x02000000 //33554432 // item can be used to radio militia/squads in other sectors
|
||||
#define SIGNAL_SHELL 0x04000000 //67108864 // this is a signal shell that precedes artillery barrages
|
||||
#define SODA 0x08000000 //134217728 // item is a can of soda, sold in vending machines
|
||||
#define SIGNAL_SHELL 0x04000000 //67108864 // this is a signal shell that precedes artillery barrages
|
||||
#define SODA 0x08000000 //134217728 // item is a can of soda, sold in vending machines
|
||||
|
||||
#define ROOF_COLLAPSE_ITEM 0x10000000 //268435456 // this item is required in the collapsing of roof tiles. It is used internally and should never be seen by the player
|
||||
#define DISEASEPROTECTION_1 0x20000000 //536870912 // this item protects us from getting diseases by human contact if kept in inventory
|
||||
@@ -787,40 +787,40 @@ extern OBJECTTYPE gTempObject;
|
||||
#define ITEM_sinks 0x0000004000000000
|
||||
#define ITEM_showstatus 0x0000008000000000
|
||||
|
||||
#define ITEM_hiddenaddon 0x0000010000000000
|
||||
#define ITEM_hiddenaddon 0x0000010000000000
|
||||
#define ITEM_twohanded 0x0000020000000000
|
||||
#define ITEM_notbuyable 0x0000040000000000
|
||||
#define ITEM_attachment 0x0000080000000000
|
||||
|
||||
#define ITEM_hiddenattachment 0x0000100000000000
|
||||
#define ITEM_biggunlist 0x0000200000000000
|
||||
#define ITEM_notineditor 0x0000400000000000
|
||||
#define ITEM_notineditor 0x0000400000000000
|
||||
#define ITEM_defaultundroppable 0x0000800000000000
|
||||
|
||||
#define ITEM_unaerodynamic 0x0001000000000000
|
||||
#define ITEM_electronic 0x0002000000000000
|
||||
#define ITEM_cannon 0x0004000000000000
|
||||
#define ITEM_rocketrifle 0x0008000000000000
|
||||
#define ITEM_rocketrifle 0x0008000000000000
|
||||
|
||||
#define ITEM_fingerprintid 0x0010000000000000
|
||||
#define ITEM_metaldetector 0x0020000000000000
|
||||
#define ITEM_gasmask 0x0040000000000000
|
||||
#define ITEM_gasmask 0x0040000000000000
|
||||
#define ITEM_lockbomb 0x0080000000000000
|
||||
|
||||
#define ITEM_flare 0x0100000000000000
|
||||
#define ITEM_grenadelauncher 0x0200000000000000
|
||||
#define ITEM_grenadelauncher 0x0200000000000000
|
||||
#define ITEM_mortar 0x0400000000000000
|
||||
#define ITEM_duckbill 0x0800000000000000
|
||||
|
||||
#define ITEM_detonator 0x1000000000000000
|
||||
#define ITEM_remotedetonator 0x2000000000000000
|
||||
#define ITEM_hidemuzzleflash 0x4000000000000000
|
||||
//UNUSED #define ITEM_detonator 0x1000000000000000
|
||||
//UNUSED #define ITEM_remotedetonator 0x2000000000000000
|
||||
#define ITEM_hidemuzzleflash 0x4000000000000000
|
||||
#define ITEM_rocketlauncher 0x8000000000000000
|
||||
|
||||
// New UINT64 Item Flag => usItemFlag2
|
||||
#define ITEM_singleshotrocketlauncher 0x00000001
|
||||
#define ITEM_brassknuckles 0x00000002
|
||||
#define ITEM_crowbar 0x00000004
|
||||
#define ITEM_crowbar 0x00000004
|
||||
#define ITEM_glgrenade 0x00000008
|
||||
|
||||
#define ITEM_flakjacket 0x00000010
|
||||
@@ -829,17 +829,17 @@ extern OBJECTTYPE gTempObject;
|
||||
#define ITEM_needsbatteries 0x00000080
|
||||
|
||||
#define ITEM_xray 0x00000100
|
||||
#define ITEM_wirecutters 0x00000200
|
||||
#define ITEM_toolkit 0x00000400
|
||||
#define ITEM_firstaidkit 0x00000800
|
||||
#define ITEM_wirecutters 0x00000200
|
||||
#define ITEM_toolkit 0x00000400
|
||||
#define ITEM_firstaidkit 0x00000800
|
||||
|
||||
#define ITEM_medicalkit 0x00001000
|
||||
#define ITEM_canteen 0x00002000
|
||||
#define ITEM_jar 0x00004000
|
||||
#define ITEM_canteen 0x00002000
|
||||
#define ITEM_jar 0x00004000
|
||||
#define ITEM_canandstring 0x00008000
|
||||
|
||||
#define ITEM_marbles 0x00010000
|
||||
#define ITEM_walkman 0x00020000
|
||||
#define ITEM_marbles 0x00010000
|
||||
#define ITEM_walkman 0x00020000
|
||||
#define ITEM_remotetrigger 0x00040000
|
||||
#define ITEM_robotremotecontrol 0x00080000
|
||||
|
||||
@@ -849,7 +849,7 @@ extern OBJECTTYPE gTempObject;
|
||||
#define ITEM_antitankmine 0x00800000
|
||||
|
||||
#define ITEM_hardware 0x01000000
|
||||
#define ITEM_medical 0x02000000
|
||||
#define ITEM_medical 0x02000000
|
||||
#define ITEM_gascan 0x04000000
|
||||
#define ITEM_containsliquid 0x08000000
|
||||
|
||||
@@ -863,7 +863,7 @@ extern OBJECTTYPE gTempObject;
|
||||
#define ITEM_tripwireactivation 0x0000000400000000 // item (mine) can be activated by nearby tripwire
|
||||
#define ITEM_tripwire 0x0000000800000000 // item is tripwire
|
||||
|
||||
#define ITEM_directional 0x0000001000000000 // item is a directional mine/bomb (actual direction is set upon planting)
|
||||
#define ITEM_directional 0x0000001000000000 // item is a directional mine/bomb (actual direction is set upon planting)
|
||||
#define ITEM_blockironsight 0x0000002000000000 // if a gun or any attachment have this property, the iron sight won't be usable (if there is at least one other usable sight)
|
||||
#define ITEM_fAllowClimbing 0x0000004000000000 // JMich: BackpackClimb does item allow climbing while wearing it
|
||||
#define ITEM_cigarette 0x0000008000000000 // Flugente: this item can be smoked
|
||||
|
||||
+16
-10
@@ -1271,13 +1271,21 @@ BOOLEAN ItemIsLegal( UINT16 usItemIndex, BOOLEAN fIgnoreCoolness )
|
||||
if ( Item[usItemIndex].ubCoolness == 0 && !fIgnoreCoolness )
|
||||
return FALSE;
|
||||
|
||||
// silversurfer: no food items if the food system is off
|
||||
if ( !UsingFoodSystem() && Item[ usItemIndex ].foodtype > 0 )
|
||||
// kitty: players might want food items in game for roleplay reasons, i.e. when interacting with npc-dealer in restaurant, no food might seems odd
|
||||
// with the option "ALWAYS_FOOD" set TRUE, food items will show even without using the foodsystem
|
||||
// should it be set to FALSE, no food items will be shown without using the foodsystem
|
||||
if (!gGameExternalOptions.fAlwaysFood)
|
||||
{
|
||||
// Only restrict food for now. Water can be used to replenish lost energy so it is useful even without the food system.
|
||||
if ( Food[Item[usItemIndex].foodtype].bFoodPoints > 0 )
|
||||
return FALSE;
|
||||
}
|
||||
// silversurfer: no food items if the food system is off
|
||||
if (!UsingFoodSystem() && Item[usItemIndex].foodtype > 0 )
|
||||
{
|
||||
// silversurfer: Only restrict food for now. Water can be used to replenish lost energy so it is useful even without the food system.
|
||||
// kitty: and only if food isn't a drug at the same time, to make sure using those drugs without food system is possible
|
||||
if (Food[Item[usItemIndex].foodtype].bFoodPoints > 0 && Item[usItemIndex].drugtype == 0 )
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
// kitty: no disease items if the disease system is off
|
||||
// whether the item is exclusive is defined by tag
|
||||
@@ -12075,7 +12083,7 @@ BOOLEAN IsDetonatorAttached( OBJECTTYPE * pObj )
|
||||
// return TRUE;
|
||||
|
||||
for (attachmentList::iterator iter = (*pObj)[0]->attachments.begin(); iter != (*pObj)[0]->attachments.end(); ++iter) {
|
||||
if (ItemIsDetonator(iter->usItem) && iter->exists() )
|
||||
if ( IsAttachmentClass( iter->usItem, AC_DETONATOR ) && iter->exists() )
|
||||
{
|
||||
return( TRUE );
|
||||
}
|
||||
@@ -12091,7 +12099,7 @@ BOOLEAN IsRemoteDetonatorAttached( OBJECTTYPE * pObj )
|
||||
// return TRUE;
|
||||
|
||||
for (attachmentList::iterator iter = (*pObj)[0]->attachments.begin(); iter != (*pObj)[0]->attachments.end(); ++iter) {
|
||||
if (ItemIsRemoteDetonator(iter->usItem) && iter->exists() )
|
||||
if ( IsAttachmentClass( iter->usItem, AC_REMOTEDET ) && iter->exists() )
|
||||
{
|
||||
return( TRUE );
|
||||
}
|
||||
@@ -16081,8 +16089,6 @@ BOOLEAN ItemIsFlare(UINT16 usItem) { return HasItemFlag(usItem, ITEM_flare); }
|
||||
BOOLEAN ItemIsGrenadeLauncher(UINT16 usItem) { return HasItemFlag(usItem, ITEM_grenadelauncher); }
|
||||
BOOLEAN ItemIsMortar(UINT16 usItem) { return HasItemFlag(usItem, ITEM_mortar); }
|
||||
BOOLEAN ItemIsDuckbill(UINT16 usItem) { return HasItemFlag(usItem, ITEM_duckbill); }
|
||||
BOOLEAN ItemIsDetonator(UINT16 usItem) { return HasItemFlag(usItem, ITEM_detonator); }
|
||||
BOOLEAN ItemIsRemoteDetonator(UINT16 usItem) { return HasItemFlag(usItem, ITEM_remotedetonator); }
|
||||
BOOLEAN ItemHasHiddenMuzzleFlash(UINT16 usItem) { return HasItemFlag(usItem, ITEM_hidemuzzleflash); }
|
||||
BOOLEAN ItemIsRocketLauncher(UINT16 usItem) { return HasItemFlag(usItem, ITEM_rocketlauncher); }
|
||||
// usItemFlag2
|
||||
|
||||
@@ -204,8 +204,6 @@ BOOLEAN ItemIsFlare(UINT16 usItem);
|
||||
BOOLEAN ItemIsGrenadeLauncher(UINT16 usItem);
|
||||
BOOLEAN ItemIsMortar(UINT16 usItem);
|
||||
BOOLEAN ItemIsDuckbill(UINT16 usItem);
|
||||
BOOLEAN ItemIsDetonator(UINT16 usItem);
|
||||
BOOLEAN ItemIsRemoteDetonator(UINT16 usItem);
|
||||
BOOLEAN ItemHasHiddenMuzzleFlash(UINT16 usItem);
|
||||
BOOLEAN ItemIsRocketLauncher(UINT16 usItem);
|
||||
BOOLEAN ItemIsSingleShotRocketLauncher(UINT16 usItem);
|
||||
|
||||
+31
-19
@@ -293,7 +293,8 @@ UINT32 POWERGENSECTOR_GRIDNO1 = 15100;
|
||||
UINT32 POWERGENSECTOR_GRIDNO2 = 12220;
|
||||
UINT32 POWERGENSECTOR_GRIDNO3 = 14155;
|
||||
UINT32 POWERGENSECTOR_GRIDNO4 = 13980;
|
||||
UINT32 POWERGENSECTOREXITGRID_GRIDNO1 = 19749;
|
||||
UINT32 POWERGENSECTOREXITGRID_SRC_GRIDNO = 10979;
|
||||
UINT32 POWERGENSECTOREXITGRID_DST_GRIDNO = 19749;
|
||||
UINT32 POWERGENFANSOUND_GRIDNO1 = 10979;
|
||||
UINT32 POWERGENFANSOUND_GRIDNO2 = 19749;
|
||||
UINT32 STARTFANBACKUPAGAIN_GRIDNO = 10980;
|
||||
@@ -304,17 +305,22 @@ UINT32 SECTOR_LAUNCH_MISSLES_Y = 12;
|
||||
UINT32 SECTOR_LAUNCH_MISSLES_Z = 3;
|
||||
//J13-0
|
||||
UINT32 SECTOR_FAN_X = 13;
|
||||
UINT32 SECTOR_FAN_Z = 10;
|
||||
UINT32 SECTOR_FAN_Y = 0;
|
||||
UINT32 SECTOR_FAN_Y = 10;
|
||||
UINT32 SECTOR_FAN_Z = 0;
|
||||
//K14-1
|
||||
UINT32 SECTOR_OPEN_GATE_IN_TUNNEL_X = 14;
|
||||
UINT32 SECTOR_OPEN_GATE_IN_TUNNEL_Y = 11;
|
||||
UINT32 SECTOR_OPEN_GATE_IN_TUNNEL_Z = 1;
|
||||
//J14-1
|
||||
// Destination sector for fan exitgrid
|
||||
//J14-1
|
||||
UINT32 EXIT_FOR_FAN_TO_POWER_GEN_SECTOR_X = 14;
|
||||
UINT32 EXIT_FOR_FAN_TO_POWER_GEN_SECTOR_Y = 10;
|
||||
UINT32 EXIT_FOR_FAN_TO_POWER_GEN_SECTOR_Z = 1;
|
||||
|
||||
INT16 BETTY_BLOODCAT_SECTOR_X = 10;
|
||||
INT16 BETTY_BLOODCAT_SECTOR_Y = 9;
|
||||
INT8 BETTY_BLOODCAT_SECTOR_Z = 0;
|
||||
|
||||
void InitGridNoUB()
|
||||
{
|
||||
SWITCHINMORRISAREA_GRIDNO = gGameUBOptions.SwitchInMorrisAreaGridNo; //= 15231;
|
||||
@@ -326,7 +332,8 @@ void InitGridNoUB()
|
||||
POWERGENSECTOR_GRIDNO2 = gGameUBOptions.PowergenSectorGridNo2; //= 12220;
|
||||
POWERGENSECTOR_GRIDNO3 = gGameUBOptions.PowergenSectorGridNo3; //= 14155;
|
||||
POWERGENSECTOR_GRIDNO4 = gGameUBOptions.PowergenSectorGridNo4; //= 13980;
|
||||
POWERGENSECTOREXITGRID_GRIDNO1 = gGameUBOptions.PowergenSectorExitgridGridNo; // = 19749;
|
||||
POWERGENSECTOREXITGRID_SRC_GRIDNO = gGameUBOptions.PowergenSectorExitgridSrcGridNo; //= 10979; // Exitgrid location in the sector it is created in
|
||||
POWERGENSECTOREXITGRID_DST_GRIDNO = gGameUBOptions.PowergenSectorExitgridGridNo; // = 19749; // Exitgrid location in the destination sector
|
||||
POWERGENFANSOUND_GRIDNO1 = gGameUBOptions.PowergenFanSoundGridNo1; //= 10979;
|
||||
POWERGENFANSOUND_GRIDNO2 = gGameUBOptions.PowergenFanSoundGridNo2; //= 19749;
|
||||
STARTFANBACKUPAGAIN_GRIDNO = gGameUBOptions.StartFanbackupAgainGridNo; //= 10980;
|
||||
@@ -338,8 +345,8 @@ void InitGridNoUB()
|
||||
SECTOR_LAUNCH_MISSLES_Z = gGameUBOptions.SectorLaunchMisslesZ; //3;
|
||||
//J13-0
|
||||
SECTOR_FAN_X = gGameUBOptions.SectorFanX; //13;
|
||||
SECTOR_FAN_Z = gGameUBOptions.SectorFanY; //10;
|
||||
SECTOR_FAN_Y = gGameUBOptions.SectorFanZ; //0;
|
||||
SECTOR_FAN_Y = gGameUBOptions.SectorFanY; //10;
|
||||
SECTOR_FAN_Z = gGameUBOptions.SectorFanZ; //0;
|
||||
//K14-1
|
||||
SECTOR_OPEN_GATE_IN_TUNNEL_X = gGameUBOptions.SectorOpenGateInTunnelX; //14;
|
||||
SECTOR_OPEN_GATE_IN_TUNNEL_Y = gGameUBOptions.SectorOpenGateInTunnelY; //11;
|
||||
@@ -348,7 +355,12 @@ void InitGridNoUB()
|
||||
EXIT_FOR_FAN_TO_POWER_GEN_SECTOR_X = gGameUBOptions.ExitForFanToPowerGenSectorX; //14;
|
||||
EXIT_FOR_FAN_TO_POWER_GEN_SECTOR_Y = gGameUBOptions.ExitForFanToPowerGenSectorY; //10;
|
||||
EXIT_FOR_FAN_TO_POWER_GEN_SECTOR_Z = gGameUBOptions.ExitForFanToPowerGenSectorZ; //1;
|
||||
|
||||
|
||||
BETTY_BLOODCAT_SECTOR_X = gGameUBOptions.BettyBloodCatSectorX;
|
||||
BETTY_BLOODCAT_SECTOR_Y = gGameUBOptions.BettyBloodCatSectorY;
|
||||
BETTY_BLOODCAT_SECTOR_Z = gGameUBOptions.BettyBloodCatSectorZ;
|
||||
|
||||
|
||||
MANUEL_UB = gGameUBOptions.ubMANUEL_UB;
|
||||
BIGGENS_UB = gGameUBOptions.ubBIGGENS_UB;
|
||||
JOHN_K_UB = gGameUBOptions.ubJOHN_K_UB;
|
||||
@@ -646,7 +658,7 @@ void HandleWhenCertainPercentageOfEnemiesDie()
|
||||
UINT32 uiPercentEnemiesKilled;
|
||||
UINT8 ubSectorID;
|
||||
|
||||
//if there isnt enemies in the sector
|
||||
//if there isn't enemies in the sector
|
||||
if( ( gTacticalStatus.Team[ ENEMY_TEAM ].bMenInSector + gTacticalStatus.ubArmyGuysKilled ) == 0 )
|
||||
{
|
||||
//get out
|
||||
@@ -663,7 +675,7 @@ void HandleWhenCertainPercentageOfEnemiesDie()
|
||||
switch( ubSectorID )
|
||||
{
|
||||
case SEC_K15:
|
||||
//all enemies are dead and if the quote hasnt been said yet
|
||||
//all enemies are dead and if the quote hasn't been said yet
|
||||
if( uiPercentEnemiesKilled >= 100 && !( gJa25SaveStruct.uiJa25GeneralFlags & JA_GF__ALL_DEAD_TOP_LEVEL_OF_COMPLEX ) )
|
||||
{
|
||||
INT16 bProfile = RandomProfileIdFromNewMercsOnPlayerTeam();
|
||||
@@ -703,7 +715,7 @@ void StopPowerGenFan()
|
||||
return;
|
||||
}
|
||||
|
||||
//Remeber how the player got through
|
||||
//Remember how the player got through
|
||||
SetJa25GeneralFlag( JA_GF__POWER_GEN_FAN_HAS_BEEN_STOPPED );
|
||||
|
||||
gJa25SaveStruct.ubStateOfFanInPowerGenSector = PGF__STOPPED;
|
||||
@@ -721,7 +733,7 @@ void StopPowerGenFan()
|
||||
//Turn off the power gen fan sound
|
||||
HandleRemovingPowerGenFanSound();
|
||||
|
||||
//remeber which turn the fan stopped on
|
||||
//remember which turn the fan stopped on
|
||||
gJa25SaveStruct.uiTurnPowerGenFanWentDown = gJa25SaveStruct.uiTacticalTurnCounter;
|
||||
|
||||
|
||||
@@ -729,7 +741,7 @@ void StopPowerGenFan()
|
||||
// Replace the Fan graphic
|
||||
//
|
||||
|
||||
// Turn on permenant changes....
|
||||
// Turn on permanent changes....
|
||||
ApplyMapChangesToMapTempFile( TRUE );
|
||||
|
||||
//Add the exit grid to the power gen fan
|
||||
@@ -784,7 +796,7 @@ void StartFanBackUpAgain()
|
||||
return;
|
||||
}
|
||||
|
||||
//Remeber how the player got through
|
||||
//Remember how the player got through
|
||||
gJa25SaveStruct.ubStateOfFanInPowerGenSector = PGF__RUNNING_NORMALLY;
|
||||
|
||||
|
||||
@@ -796,7 +808,7 @@ void StartFanBackUpAgain()
|
||||
// Replace the Fan graphic
|
||||
//
|
||||
|
||||
// Turn on permenant changes....
|
||||
// Turn on permanent changes....
|
||||
ApplyMapChangesToMapTempFile( TRUE );
|
||||
|
||||
// Remove it!
|
||||
@@ -821,7 +833,7 @@ void StartFanBackUpAgain()
|
||||
gTacticalStatus.uiFlags |= NOHIDE_REDUNDENCY;
|
||||
|
||||
//Remove the exit grid
|
||||
RemoveExitGridFromWorld( PGF__FAN_EXIT_GRID_GRIDNO );
|
||||
RemoveExitGridFromWorld( POWERGENSECTOREXITGRID_SRC_GRIDNO );
|
||||
|
||||
// FOR THE NEXT RENDER LOOP, RE-EVALUATE REDUNDENT TILES
|
||||
SetRenderFlags(RENDER_FLAG_FULL);
|
||||
@@ -914,7 +926,7 @@ void HandleAddingPowerGenFanSound()
|
||||
sGridNo = POWERGENFANSOUND_GRIDNO2;
|
||||
|
||||
//Create the new ambient fan sound
|
||||
//gJa25SaveStruct.iPowerGenFanPositionSndID = NewPositionSnd( sGridNo, POSITION_SOUND_STATIONATY_OBJECT, 0, POWER_GEN_FAN_SOUND );
|
||||
gJa25SaveStruct.iPowerGenFanPositionSndID = NewPositionSnd( sGridNo, POSITION_SOUND_STATIONATY_OBJECT, 0, POWER_GEN_FAN_SOUND, 30 );
|
||||
|
||||
SetPositionSndsInActive( );
|
||||
SetPositionSndsActive( );
|
||||
@@ -942,10 +954,10 @@ void AddExitGridForFanToPowerGenSector()
|
||||
ExitGrid.ubGotoSectorX = EXIT_FOR_FAN_TO_POWER_GEN_SECTOR_X; //14;
|
||||
ExitGrid.ubGotoSectorY = EXIT_FOR_FAN_TO_POWER_GEN_SECTOR_Y; //MAP_ROW_J;
|
||||
ExitGrid.ubGotoSectorZ = EXIT_FOR_FAN_TO_POWER_GEN_SECTOR_Z; //1;
|
||||
ExitGrid.usGridNo = POWERGENSECTOREXITGRID_GRIDNO1;
|
||||
ExitGrid.usGridNo = POWERGENSECTOREXITGRID_DST_GRIDNO;
|
||||
|
||||
//Add the exit grid when the fan is either stopped or blown up
|
||||
AddExitGridToWorld( PGF__FAN_EXIT_GRID_GRIDNO, &ExitGrid );
|
||||
AddExitGridToWorld( POWERGENSECTOREXITGRID_SRC_GRIDNO, &ExitGrid );
|
||||
}
|
||||
|
||||
BOOLEAN HandlePlayerSayingQuoteWhenFailingToOpenGateInTunnel( SOLDIERTYPE *pSoldierAtDoor, BOOLEAN fSayQuoteOnlyOnce )
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
#include "MapScreen Quotes.h"
|
||||
|
||||
#define PGF__FAN_EXIT_GRID_GRIDNO 10979
|
||||
|
||||
#define NUM_MERCS_WITH_NEW_QUOTES 20//7
|
||||
|
||||
@@ -144,6 +143,10 @@ extern UINT8 RAUL_UB;
|
||||
extern UINT8 MORRIS_UB;
|
||||
extern UINT8 RUDY_UB;
|
||||
|
||||
extern INT16 BETTY_BLOODCAT_SECTOR_X;
|
||||
extern INT16 BETTY_BLOODCAT_SECTOR_Y;
|
||||
extern INT8 BETTY_BLOODCAT_SECTOR_Z;
|
||||
|
||||
extern void Old_UB_Inventory ();
|
||||
extern void New_UB_Inventory ();
|
||||
|
||||
|
||||
+1
-1
@@ -281,4 +281,4 @@ void AttachStringToDoor( INT32 sGridNo );
|
||||
|
||||
void DropKeysInKeyRing( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, INT8 bVisible, BOOLEAN fAddToDropList, INT32 iDropListSlot, BOOLEAN fUseUnLoaded );
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -24,14 +24,15 @@ AbstractXMLLoader::ParseData* AbstractXMLLoader::MakeParseData(XML_Parser* parse
|
||||
return new ParseData(parser);
|
||||
}
|
||||
|
||||
bool AbstractXMLLoader::LoadFromFile(const char* directoryName, const char* fileName) {
|
||||
bool AbstractXMLLoader::LoadFromFile(const char* directoryName, const char* fileName, CHAR8* errorBuf) {
|
||||
HWFILE hFile;
|
||||
UINT32 uiBytesRead;
|
||||
UINT32 uiFSize;
|
||||
CHAR8* lpcBuffer;
|
||||
char fileNameFull[MAX_PATH + 1];
|
||||
if (strlen(fileName) + strlen(directoryName) >= MAX_PATH) {
|
||||
LiveMessage("Can't load file. Concatinated filename too long for buffer!");
|
||||
sprintf(errorBuf, "Can't load file %s%s, Concatenated filename too long for buffer!", directoryName, fileName);
|
||||
LiveMessage(errorBuf);
|
||||
return false;
|
||||
}
|
||||
SetDirectoryName(directoryName);
|
||||
@@ -46,12 +47,14 @@ bool AbstractXMLLoader::LoadFromFile(const char* directoryName, const char* file
|
||||
DebugMsg(TOPIC_JA2, DBG_LEVEL_3, msg.c_str());
|
||||
hFile = FileOpen(fileNameFull, FILE_ACCESS_READ, FALSE);
|
||||
if (!hFile) {
|
||||
sprintf(errorBuf, "Can't open %s", fileNameFull);
|
||||
delete data;
|
||||
return false;
|
||||
}
|
||||
uiFSize = FileGetSize(hFile);
|
||||
lpcBuffer = (CHAR8*)MemAlloc(uiFSize + 1);
|
||||
if (!FileRead(hFile, lpcBuffer, uiFSize, &uiBytesRead)) {
|
||||
sprintf(errorBuf, "Error reading %s to buffer", fileNameFull);
|
||||
MemFree(lpcBuffer);
|
||||
delete data;
|
||||
return false;
|
||||
@@ -72,7 +75,6 @@ bool AbstractXMLLoader::LoadFromFile(const char* directoryName, const char* file
|
||||
|
||||
try {
|
||||
if (!XML_Parse(parser, lpcBuffer, uiFSize, TRUE)) {
|
||||
CHAR8 errorBuf[512];
|
||||
sprintf(errorBuf, "XML Parser Error in %s[%d]: %s", fileNameFull, XML_GetCurrentLineNumber(parser), XML_ErrorString(XML_GetErrorCode(parser)));
|
||||
LiveMessage(errorBuf);
|
||||
MemFree(lpcBuffer);
|
||||
@@ -80,7 +82,6 @@ bool AbstractXMLLoader::LoadFromFile(const char* directoryName, const char* file
|
||||
return false;
|
||||
}
|
||||
} catch (XMLParseException e) {
|
||||
CHAR8 errorBuf[512];
|
||||
sprintf(errorBuf, "XML Parser Exception in %s[%d]: %s", fileNameFull, e._LINE, e.what());
|
||||
LiveMessage(errorBuf);
|
||||
MemFree(lpcBuffer);
|
||||
|
||||
@@ -55,7 +55,7 @@ private:
|
||||
public:
|
||||
AbstractXMLLoader(XML_StartElementHandler startHandler, XML_EndElementHandler endHandler, XML_CharacterDataHandler charHandler, ParseDataFactoryFunc parseDataFactF = MakeParseData);
|
||||
~AbstractXMLLoader(void);
|
||||
bool LoadFromFile(const char* directoryName, const char* fileName);
|
||||
bool LoadFromFile(const char* directoryName, const char* fileName, CHAR8* errorBuf);
|
||||
const char* GetFileName();
|
||||
const char* GetDirectoryName();
|
||||
void SetFileName(const char* fileName);
|
||||
|
||||
@@ -258,6 +258,18 @@ bool Filter::Match(SOLDIERTYPE* pSoldier) {
|
||||
case REQ_LEGPOSATTACHMENT3:
|
||||
cmp_val = CompareAttachment(pSoldier, LEGPOS, 3);
|
||||
break;
|
||||
case REQ_VESTPOSATTACHMENT0:
|
||||
cmp_val = CompareAttachment( pSoldier, VESTPOS, 0 );
|
||||
break;
|
||||
case REQ_VESTPOSATTACHMENT1:
|
||||
cmp_val = CompareAttachment( pSoldier, VESTPOS, 1 );
|
||||
break;
|
||||
case REQ_VESTPOSATTACHMENT2:
|
||||
cmp_val = CompareAttachment( pSoldier, VESTPOS, 2 );
|
||||
break;
|
||||
case REQ_VESTPOSATTACHMENT3:
|
||||
cmp_val = CompareAttachment( pSoldier, VESTPOS, 3 );
|
||||
break;
|
||||
default:
|
||||
if (q < NUM_REQTYPESINV) {
|
||||
cmp_val = pSoldier->inv[q].usItem;
|
||||
|
||||
@@ -75,6 +75,10 @@ public:
|
||||
REQ_LEGPOSATTACHMENT1,
|
||||
REQ_LEGPOSATTACHMENT2,
|
||||
REQ_LEGPOSATTACHMENT3,
|
||||
REQ_VESTPOSATTACHMENT0,
|
||||
REQ_VESTPOSATTACHMENT1,
|
||||
REQ_VESTPOSATTACHMENT2,
|
||||
REQ_VESTPOSATTACHMENT3,
|
||||
NUM_REQTYPES,
|
||||
// 3rd byte is for operator flags
|
||||
_REQ_BTWN = 0x20000,
|
||||
|
||||
@@ -270,7 +270,7 @@ namespace LogicalBodyTypes {
|
||||
/*****************************************
|
||||
Filter enum criterion types
|
||||
******************************************/
|
||||
LOGBT_ENUMDB_ADD("IntegerFilterCriterionTypes", 43,
|
||||
LOGBT_ENUMDB_ADD("IntegerFilterCriterionTypes", 47,
|
||||
Filter::REQ_HELMETPOS,
|
||||
Filter::REQ_VESTPOS,
|
||||
Filter::REQ_LEGPOS,
|
||||
@@ -313,7 +313,11 @@ namespace LogicalBodyTypes {
|
||||
Filter::REQ_LEGPOSATTACHMENT0,
|
||||
Filter::REQ_LEGPOSATTACHMENT1,
|
||||
Filter::REQ_LEGPOSATTACHMENT2,
|
||||
Filter::REQ_LEGPOSATTACHMENT3
|
||||
Filter::REQ_LEGPOSATTACHMENT3,
|
||||
Filter::REQ_VESTPOSATTACHMENT0,
|
||||
Filter::REQ_VESTPOSATTACHMENT1,
|
||||
Filter::REQ_VESTPOSATTACHMENT2,
|
||||
Filter::REQ_VESTPOSATTACHMENT3
|
||||
);
|
||||
|
||||
/*****************************************
|
||||
|
||||
@@ -66,4 +66,4 @@ BOOLEAN ValidateEntryPointGridNo( INT32 *sGridNo );
|
||||
|
||||
extern BOOLEAN gfWorldLoaded;
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -991,7 +991,7 @@ void HandleFirstHeliDropOfGame( )
|
||||
SayQuoteFromAnyBodyInSector( QUOTE_ENEMY_PRESENCE );
|
||||
|
||||
// Start music
|
||||
UseCreatureMusic(HostileZombiesPresent());
|
||||
CheckForZombieMusic();
|
||||
|
||||
#ifdef NEWMUSIC
|
||||
GlobalSoundID = MusicSoundValues[ SECTOR( gWorldSectorX, gWorldSectorY ) ].SoundTacticalTensor[gbWorldSectorZ];
|
||||
|
||||
+62
-62
@@ -1037,78 +1037,78 @@ if ( gGameUBOptions.InGameHeliCrash == TRUE )
|
||||
|
||||
void UpdateJerryMiloInInitialSector()
|
||||
{
|
||||
SOLDIERTYPE *pSoldier = NULL;
|
||||
SOLDIERTYPE *pJerrySoldier=NULL;
|
||||
SOLDIERTYPE *pSoldier = NULL;
|
||||
SOLDIERTYPE *pJerrySoldier = NULL;
|
||||
|
||||
|
||||
//SectorInfo[ SEC_H7 ].fSurfaceWasEverPlayerControlled = TRUE;
|
||||
SectorInfo[ (UINT8)SECTOR( gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY ) ].fSurfaceWasEverPlayerControlled = TRUE;
|
||||
//SectorInfo[ SEC_H7 ].ubNumAdmins = 2;
|
||||
StrategicMap[ (UINT8)SECTOR( gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY ) ].fEnemyControlled = FALSE;
|
||||
|
||||
if ( gGameUBOptions.InGameHeli == TRUE )
|
||||
return; //AA
|
||||
|
||||
if ( gGameUBOptions.InGameHeliCrash == TRUE )
|
||||
{
|
||||
//if it is the first sector we are loading up, place Jerry in the map
|
||||
if( !gfFirstTimeInGameHeliCrash )
|
||||
return;
|
||||
|
||||
if ( gGameUBOptions.InJerry == TRUE )
|
||||
{
|
||||
pSoldier = FindSoldierByProfileID( JERRY_MILO_UB, FALSE ); //JERRY
|
||||
if( pSoldier == NULL )
|
||||
{
|
||||
Assert( 0 );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//the internet part of the laptop isnt working. It gets broken in the heli crash.
|
||||
if ( gGameUBOptions.LaptopQuestEnabled == TRUE )
|
||||
StartQuest( QUEST_FIX_LAPTOP, -1, -1 );
|
||||
|
||||
//Record the initial sector as ours
|
||||
//SectorInfo[ SEC_H7 ].fSurfaceWasEverPlayerControlled = TRUE;
|
||||
SectorInfo[ (UINT8)SECTOR( gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY ) ].fSurfaceWasEverPlayerControlled = TRUE;
|
||||
StrategicMap[ (UINT8)SECTOR( gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY ) ].fEnemyControlled = FALSE;
|
||||
|
||||
if ( gGameUBOptions.InJerry == TRUE )
|
||||
SectorInfo[(UINT8)SECTOR( gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY )].fSurfaceWasEverPlayerControlled = TRUE;
|
||||
//SectorInfo[ SEC_H7 ].ubNumAdmins = 2;
|
||||
StrategicMap[CALCULATE_STRATEGIC_INDEX( gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY )].fEnemyControlled = FALSE;
|
||||
|
||||
if ( gGameUBOptions.InGameHeli == TRUE )
|
||||
return; //AA
|
||||
|
||||
if ( gGameUBOptions.InGameHeliCrash == TRUE )
|
||||
{
|
||||
//Set some variable so Jerry will be on the ground
|
||||
pSoldier->fWaitingToGetupFromJA25Start = TRUE;
|
||||
pSoldier->fIgnoreGetupFromCollapseCheck = TRUE;
|
||||
//if it is the first sector we are loading up, place Jerry in the map
|
||||
if ( !gfFirstTimeInGameHeliCrash )
|
||||
return;
|
||||
|
||||
//pSoldier->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; //to by³o wy³¹czone
|
||||
//pSoldier->usStrategicInsertionData = GetInitialHeliGridNo( ); //to by³o wy³¹czone
|
||||
if ( gGameUBOptions.InJerry == TRUE )
|
||||
{
|
||||
pSoldier = FindSoldierByProfileID( JERRY_MILO_UB, FALSE ); //JERRY
|
||||
if ( pSoldier == NULL )
|
||||
{
|
||||
Assert( 0 );
|
||||
}
|
||||
|
||||
RESETTIMECOUNTER( pSoldier->GetupFromJA25StartCounter, gsInitialHeliRandomTimes[ 6 ] + 800 + Random( 400 ) );
|
||||
}
|
||||
|
||||
//should we be on our back or tummy
|
||||
if( Random( 100 ) < 50 )
|
||||
pSoldier->EVENT_InitNewSoldierAnim( STAND_FALLFORWARD_STOP, 1, TRUE );
|
||||
else
|
||||
pSoldier->EVENT_InitNewSoldierAnim( FALLBACKHIT_STOP, 1, TRUE );
|
||||
}
|
||||
//the internet part of the laptop isnt working. It gets broken in the heli crash.
|
||||
if ( gGameUBOptions.LaptopQuestEnabled == TRUE )
|
||||
StartQuest( QUEST_FIX_LAPTOP, -1, -1 );
|
||||
|
||||
//Wont work cause it gets reset every frame
|
||||
//make sure we can see Jerry
|
||||
|
||||
if ( gGameUBOptions.InJerry == TRUE )
|
||||
{
|
||||
pJerrySoldier = FindSoldierByProfileID(JERRY_MILO_UB, FALSE );//JERRY
|
||||
if( pJerrySoldier != NULL )
|
||||
{
|
||||
//Make sure we can see the pilot
|
||||
gbPublicOpplist[OUR_TEAM][ pJerrySoldier->ubID ] = SEEN_CURRENTLY;
|
||||
pJerrySoldier->bVisible = TRUE;
|
||||
}
|
||||
//Record the initial sector as ours
|
||||
//SectorInfo[ SEC_H7 ].fSurfaceWasEverPlayerControlled = TRUE;
|
||||
SectorInfo[(UINT8)SECTOR( gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY )].fSurfaceWasEverPlayerControlled = TRUE;
|
||||
StrategicMap[CALCULATE_STRATEGIC_INDEX( gGameExternalOptions.ubDefaultArrivalSectorX, gGameExternalOptions.ubDefaultArrivalSectorY )].fEnemyControlled = FALSE;
|
||||
|
||||
}
|
||||
if ( gGameUBOptions.InJerry == TRUE )
|
||||
{
|
||||
//Set some variable so Jerry will be on the ground
|
||||
pSoldier->fWaitingToGetupFromJA25Start = TRUE;
|
||||
pSoldier->fIgnoreGetupFromCollapseCheck = TRUE;
|
||||
|
||||
//Lock the interface
|
||||
guiPendingOverrideEvent = LU_BEGINUILOCK;
|
||||
//pSoldier->ubStrategicInsertionCode = INSERTION_CODE_GRIDNO; //to by³o wy³¹czone
|
||||
//pSoldier->usStrategicInsertionData = GetInitialHeliGridNo( ); //to by³o wy³¹czone
|
||||
|
||||
RESETTIMECOUNTER( pSoldier->GetupFromJA25StartCounter, gsInitialHeliRandomTimes[6] + 800 + Random( 400 ) );
|
||||
|
||||
//should we be on our back or tummy
|
||||
if ( Random( 100 ) < 50 )
|
||||
pSoldier->EVENT_InitNewSoldierAnim( STAND_FALLFORWARD_STOP, 1, TRUE );
|
||||
else
|
||||
pSoldier->EVENT_InitNewSoldierAnim( FALLBACKHIT_STOP, 1, TRUE );
|
||||
}
|
||||
|
||||
//Wont work cause it gets reset every frame
|
||||
//make sure we can see Jerry
|
||||
|
||||
if ( gGameUBOptions.InJerry == TRUE )
|
||||
{
|
||||
pJerrySoldier = FindSoldierByProfileID( JERRY_MILO_UB, FALSE );//JERRY
|
||||
if ( pJerrySoldier != NULL )
|
||||
{
|
||||
//Make sure we can see the pilot
|
||||
gbPublicOpplist[OUR_TEAM][pJerrySoldier->ubID] = SEEN_CURRENTLY;
|
||||
pJerrySoldier->bVisible = TRUE;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Lock the interface
|
||||
guiPendingOverrideEvent = LU_BEGINUILOCK;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,4 +28,4 @@ BOOLEAN CreateDestroyMilitiaControlPopUpBoxes( void );
|
||||
|
||||
BOOLEAN CheckIfRadioIsEquipped( void );
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -43,4 +43,4 @@ void SetInteractivePicture( std::string aStr, bool aVal );
|
||||
void MiniGame_Init_Picture();
|
||||
UINT32 MiniGame_Handle_Picture();
|
||||
|
||||
#endif //__MINIGAME_H
|
||||
#endif //__MINIGAME_H
|
||||
|
||||
+1
-1
@@ -160,4 +160,4 @@ void DailyMoraleUpdate( SOLDIERTYPE *pSoldier );
|
||||
|
||||
void DecayTacticalMoraleModifiers( void );
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
+44
-45
@@ -1074,7 +1074,7 @@ BOOLEAN ExecuteOverhead( )
|
||||
pSoldier->DoMercBattleSound( BATTLE_SOUND_CURSE1 );
|
||||
}
|
||||
|
||||
SpecialCharacterDialogueEvent( DIALOGUE_SPECIAL_EVENT_MULTIPURPOSE, pSoldier->ubProfile, 0, 0, pSoldier->iFaceIndex, 0 );
|
||||
SpecialCharacterDialogueEvent( DIALOGUE_SPECIAL_EVENT_MULTIPURPOSE, MULTIPURPOSE_SPECIAL_EVENT_GETUP_AFTER_HELI_CRASH, pSoldier->ubProfile, 0, pSoldier->iFaceIndex, 0 );
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -6646,7 +6646,7 @@ void ExitCombatMode( )
|
||||
// unused
|
||||
//gfForceMusicToTense = TRUE;
|
||||
|
||||
UseCreatureMusic(HostileZombiesPresent());
|
||||
CheckForZombieMusic();
|
||||
|
||||
#ifdef NEWMUSIC
|
||||
GlobalSoundID = MusicSoundValues[ SECTOR( gWorldSectorX, gWorldSectorY ) ].SoundTacticalTensor[gbWorldSectorZ];
|
||||
@@ -6688,63 +6688,62 @@ void ExitCombatMode( )
|
||||
}
|
||||
|
||||
|
||||
void SetEnemyPresence( )
|
||||
void SetEnemyPresence()
|
||||
{
|
||||
// We have an ememy present....
|
||||
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("SetEnemyPresence"));
|
||||
// We have an ememy present....
|
||||
DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "SetEnemyPresence" ) );
|
||||
|
||||
// Check if we previously had no enemys present and we are in a virgin secotr ( no enemys spotted yet )
|
||||
if ( !gTacticalStatus.fEnemyInSector && gTacticalStatus.fVirginSector )
|
||||
{
|
||||
// If we have a guy selected, say quote!
|
||||
// For now, display ono status message
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, TacticalStr[ ENEMY_IN_SECTOR_STR ] );
|
||||
// Check if we previously had no enemys present and we are in a virgin secotr ( no enemys spotted yet )
|
||||
if ( !gTacticalStatus.fEnemyInSector && gTacticalStatus.fVirginSector )
|
||||
{
|
||||
// If we have a guy selected, say quote!
|
||||
// For now, display ono status message
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, TacticalStr[ENEMY_IN_SECTOR_STR] );
|
||||
|
||||
// Change music modes..
|
||||
// Change music modes..
|
||||
|
||||
// If we are just starting game, don't do this!
|
||||
// If we are just starting game, don't do this!
|
||||
|
||||
#ifdef JA2UB
|
||||
//Ja25: no meanwhiles
|
||||
if ( !DidGameJustStart() )
|
||||
//Ja25: no meanwhiles
|
||||
if ( !DidGameJustStart() )
|
||||
#else
|
||||
if ( !DidGameJustStart() && !AreInMeanwhile( ) )
|
||||
|
||||
if ( !DidGameJustStart() && !AreInMeanwhile() )
|
||||
#endif
|
||||
{
|
||||
{
|
||||
|
||||
UseCreatureMusic(HostileZombiesPresent());
|
||||
CheckForZombieMusic();
|
||||
|
||||
#ifdef NEWMUSIC
|
||||
GlobalSoundID = MusicSoundValues[ SECTOR( gWorldSectorX, gWorldSectorY ) ].SoundTacticalTensor[gbWorldSectorZ];
|
||||
if ( MusicSoundValues[ SECTOR( gWorldSectorX, gWorldSectorY ) ].SoundTacticalTensor[gbWorldSectorZ] != -1 )
|
||||
SetMusicModeID( MUSIC_TACTICAL_ENEMYPRESENT, MusicSoundValues[ SECTOR( gWorldSectorX, gWorldSectorY ) ].SoundTacticalTensor[gbWorldSectorZ] );
|
||||
else
|
||||
GlobalSoundID = MusicSoundValues[SECTOR( gWorldSectorX, gWorldSectorY )].SoundTacticalTensor[gbWorldSectorZ];
|
||||
if ( MusicSoundValues[SECTOR( gWorldSectorX, gWorldSectorY )].SoundTacticalTensor[gbWorldSectorZ] != -1 )
|
||||
SetMusicModeID( MUSIC_TACTICAL_ENEMYPRESENT, MusicSoundValues[SECTOR( gWorldSectorX, gWorldSectorY )].SoundTacticalTensor[gbWorldSectorZ] );
|
||||
else
|
||||
#endif
|
||||
SetMusicMode( MUSIC_TACTICAL_ENEMYPRESENT );
|
||||
SetMusicMode( MUSIC_TACTICAL_ENEMYPRESENT );
|
||||
|
||||
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("SetEnemyPresence: warnings = false"));
|
||||
sniperwarning = FALSE;
|
||||
biggunwarning = FALSE;
|
||||
gogglewarning = FALSE;
|
||||
checkBonusMilitia = TRUE;
|
||||
// airstrikeavailable = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugMsg(TOPIC_JA2,DBG_LEVEL_3,String("SetEnemyPresence: warnings = true"));
|
||||
sniperwarning = TRUE;
|
||||
biggunwarning = TRUE;
|
||||
//gogglewarning = TRUE;
|
||||
// airstrikeavailable = FALSE;
|
||||
}
|
||||
DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "SetEnemyPresence: warnings = false" ) );
|
||||
sniperwarning = FALSE;
|
||||
biggunwarning = FALSE;
|
||||
gogglewarning = FALSE;
|
||||
checkBonusMilitia = TRUE;
|
||||
// airstrikeavailable = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugMsg( TOPIC_JA2, DBG_LEVEL_3, String( "SetEnemyPresence: warnings = true" ) );
|
||||
sniperwarning = TRUE;
|
||||
biggunwarning = TRUE;
|
||||
//gogglewarning = TRUE;
|
||||
// airstrikeavailable = FALSE;
|
||||
}
|
||||
|
||||
// Say quote...
|
||||
//SayQuoteFromAnyBodyInSector( QUOTE_ENEMY_PRESENCE );
|
||||
// Say quote...
|
||||
//SayQuoteFromAnyBodyInSector( QUOTE_ENEMY_PRESENCE );
|
||||
|
||||
gTacticalStatus.fEnemyInSector = TRUE;
|
||||
gTacticalStatus.fEnemyInSector = TRUE;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7057,7 +7056,7 @@ BOOLEAN CheckForEndOfCombatMode( BOOLEAN fIncrementTurnsNotSeen )
|
||||
// Begin tense music....
|
||||
// unused
|
||||
//gfForceMusicToTense = TRUE;
|
||||
UseCreatureMusic(HostileZombiesPresent());
|
||||
CheckForZombieMusic();
|
||||
|
||||
#ifdef NEWMUSIC
|
||||
GlobalSoundID = MusicSoundValues[ SECTOR( gWorldSectorX, gWorldSectorY ) ].SoundTacticalTensor[gbWorldSectorZ];
|
||||
@@ -7889,7 +7888,7 @@ BOOLEAN CheckForEndOfBattle( BOOLEAN fAnEnemyRetreated )
|
||||
if ( CheckFact( FACT_FIRST_BATTLE_BEING_FOUGHT, 0 ) )
|
||||
{
|
||||
// ATE: Need to trigger record for this event .... for NPC scripting
|
||||
TriggerNPCRecord( PACOS, 18 );
|
||||
TriggerNPCRecord( PACOS, 20 );
|
||||
|
||||
// this is our first battle... and we won!
|
||||
SetFactTrue( FACT_FIRST_BATTLE_FOUGHT );
|
||||
|
||||
@@ -1 +1 @@
|
||||
//#define PATHAI_VISIBLE_DEBUG
|
||||
//#define PATHAI_VISIBLE_DEBUG
|
||||
|
||||
+1
-1
@@ -5,4 +5,4 @@ BOOLEAN IsItAllowedToRenderRain();
|
||||
void RenderRain();
|
||||
void ResetRain();
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -3259,3 +3259,26 @@ FLOAT GetCorpseRotFactor( ROTTING_CORPSE* pCorpse )
|
||||
|
||||
return (FLOAT)(min(gGameExternalOptions.usCorpseDelayUntilRotting, GetWorldTotalMin() - pCorpse->def.uiTimeOfDeath)) / gGameExternalOptions.usCorpseDelayUntilRotting;
|
||||
}
|
||||
|
||||
void CheckForZombieMusic()
|
||||
{
|
||||
extern UINT8 LightGetColors( SGPPaletteEntry * pPal );
|
||||
|
||||
if ( gGameSettings.fOptions[TOPTION_ZOMBIES] )
|
||||
{
|
||||
SGPPaletteEntry LColors[3];
|
||||
LightGetColors( LColors );
|
||||
|
||||
// If we're underground in the creature caves, use creepy music based on the cave light colors.
|
||||
// Without this, the crepitus cave music is not working correctly as these checks override the original musicmode choice
|
||||
// See PrepareCreaturesForBattle() in Creature Spreading.cpp
|
||||
if ( gbWorldSectorZ )
|
||||
{
|
||||
UseCreatureMusic( LColors->peBlue || HostileZombiesPresent() );
|
||||
}
|
||||
else
|
||||
{
|
||||
UseCreatureMusic( HostileZombiesPresent() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -242,4 +242,6 @@ BOOLEAN CorpseOkToDress( ROTTING_CORPSE* pCorpse );
|
||||
// Flugente: how rotten is this corpse? values from 0 to 1, 1 as soon as it is rotting
|
||||
FLOAT GetCorpseRotFactor( ROTTING_CORPSE* pCorpse );
|
||||
|
||||
#endif
|
||||
void CheckForZombieMusic();
|
||||
|
||||
#endif
|
||||
|
||||
@@ -83,4 +83,4 @@ enum
|
||||
|
||||
#define ARNIE_QUOTE_NOT_REPAIRED_YET 33
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -46,4 +46,4 @@ enum SkillChecks
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -909,7 +909,9 @@ DragSelection::Setup( UINT32 aVal )
|
||||
|
||||
if ( xmlentry >= 0 )
|
||||
{
|
||||
swprintf( pStr, L"%hs (%s)", gStructureMovePossible[xmlentry].szTileSetDisplayName, FaceDirs[gOneCDirection[ubDirection]] );
|
||||
WCHAR buf[256];
|
||||
MultiByteToWideChar(CP_UTF8, 0, gStructureMovePossible[xmlentry].szTileSetDisplayName, -1, buf, 256);
|
||||
swprintf(pStr, L"%s (%s)", buf, FaceDirs[gOneCDirection[ubDirection]]);
|
||||
|
||||
// we have to use an offset of NOBODY in order to differentiate between person and corpse
|
||||
pOption = new POPUP_OPTION( &std::wstring( pStr ), new popupCallbackFunction<void, UINT32>( &Wrapper_Function_DragSelection_GridNo, sTempGridNo ) );
|
||||
|
||||
@@ -197,4 +197,4 @@ public:
|
||||
void EquipmentListMenu();
|
||||
void EquipmentListMenuCancel();
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -1199,7 +1199,14 @@ BOOLEAN InternalAddSoldierToSector(SoldierID ubID, BOOLEAN fCalculateDirection,
|
||||
if( fCalculateDirection )
|
||||
ubDirection = ubCalculatedDirection;
|
||||
else
|
||||
{
|
||||
// Override calculated direction if we were told to....
|
||||
if ( pSoldier->ubInsertionDirection >= 100 )
|
||||
{
|
||||
pSoldier->ubInsertionDirection -= 100;
|
||||
}
|
||||
ubDirection = pSoldier->ubInsertionDirection;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -15,4 +15,4 @@ BOOLEAN HandleCheckForDeathCommonCode( SOLDIERTYPE *pSoldier );
|
||||
|
||||
void KickOutWheelchair( SOLDIERTYPE *pSoldier );
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -2461,7 +2461,7 @@ BOOLEAN SOLDIERTYPE::CreateSoldierCommon( UINT8 ubBodyType, SoldierID usSoldierI
|
||||
|
||||
if ( this->ubBodyType == QUEENMONSTER )
|
||||
{
|
||||
this->iPositionSndID = NewPositionSnd( NOWHERE, POSITION_SOUND_FROM_SOLDIER, (UINT32)this, QUEEN_AMBIENT_NOISE );
|
||||
this->iPositionSndID = NewPositionSnd( NOWHERE, POSITION_SOUND_FROM_SOLDIER, (UINT32)this, QUEEN_AMBIENT_NOISE, 15 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -419,6 +419,7 @@ SOLDIERCREATE_STRUCT::~SOLDIERCREATE_STRUCT() {
|
||||
// Note that the constructor does this automatically.
|
||||
void SOLDIERCREATE_STRUCT::initialize() {
|
||||
memset( this, 0, SIZEOF_SOLDIERCREATE_STRUCT_POD);
|
||||
this->bAIMorale = MORALE_NORMAL;
|
||||
Inv.clear();
|
||||
}
|
||||
|
||||
|
||||
@@ -25,4 +25,4 @@ void HandleCrowShadowVisibility( SOLDIERTYPE *pSoldier );
|
||||
|
||||
BOOLEAN DoesSoldierWearGasMask(SOLDIERTYPE *pSoldier);//dnl ch40 200909
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -41,4 +41,4 @@
|
||||
//#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
|
||||
|
||||
@@ -23,4 +23,4 @@ void AIPickBurstLocations( SOLDIERTYPE *pSoldier, INT8 bTargets, SOLDIERTYPE *pT
|
||||
|
||||
void RenderAccumulatedBurstLocations( );
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -25,4 +25,4 @@ BOOLEAN HandleSectorExitMenu( );
|
||||
void RemoveSectorExitMenu( BOOLEAN fOK );
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -53,4 +53,4 @@ BOOLEAN SetOpenableStructureToClosed( INT32 sGridNo, UINT8 ubLevel );
|
||||
BOOLEAN IsJumpableWindowPresentAtGridNo( INT32 sGridNo , INT8 direction2, BOOLEAN fIntactWindowsAlso ); //legion 2 Windows
|
||||
BOOLEAN IsLegionWallPresentAtGridno( INT32 sGridNo ); //legion 2 Fence
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -4,4 +4,4 @@
|
||||
void HandleTacticalEndTurn( );
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -219,4 +219,4 @@ void VehicleMenu( INT32 usMapPos, SOLDIERTYPE *pSoldier, SOLDIERTYPE *pVehicle )
|
||||
pCurrentSoldier = pSoldier;
|
||||
pCurrentVehicle = pVehicle;
|
||||
gVehicleSelection.Setup(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,4 +82,4 @@ private:
|
||||
|
||||
void VehicleMenu( INT32 usMapPos, SOLDIERTYPE *pSoldier, SOLDIERTYPE *pVehicle );
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -9964,10 +9964,6 @@ BOOLEAN IsGunBurstCapable(OBJECTTYPE* pObject, BOOLEAN fNotify, SOLDIERTYPE* pSo
|
||||
fCapable = TRUE;
|
||||
}
|
||||
}
|
||||
else if (Weapon[pObject->usItem].fBurstOnlyByFanTheHammer)
|
||||
{
|
||||
fCapable = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,14 +58,6 @@ typedef PARSE_STAGE;
|
||||
#define TABLEDATA_DIRECTORY "TableData\\"
|
||||
#define TABLEDATA_LAPTOP_DIRECTORY "Laptop\\"
|
||||
|
||||
#define GERMAN_PREFIX "German."
|
||||
#define RUSSIAN_PREFIX "Russian."
|
||||
#define DUTCH_PREFIX "Dutch."
|
||||
#define POLISH_PREFIX "Polish."
|
||||
#define FRENCH_PREFIX "French."
|
||||
#define ITALIAN_PREFIX "Italian."
|
||||
#define CHINESE_PREFIX "Chinese."
|
||||
|
||||
#define ATTACHMENTSFILENAME "Items\\Attachments.xml"
|
||||
#define ATTACHMENTINFOFILENAME "Items\\AttachmentInfo.xml"
|
||||
#define ITEMSFILENAME "Items\\Items.xml"
|
||||
|
||||
@@ -212,4 +212,4 @@ void LoadHiddenNames()
|
||||
strcat(fileName, HIDDENNAMESFILENAME);
|
||||
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
|
||||
SGP_THROW_IFFALSE(ReadInHiddenNamesStats(zHiddenNames,fileName), HIDDENNAMESFILENAME);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -489,4 +489,4 @@ BOOLEAN ReadInLBEPocketPopups(STR fileName)
|
||||
|
||||
|
||||
return( TRUE );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -757,4 +757,4 @@ BOOLEAN WriteMercStartingGearStats()
|
||||
FileClose( hFile );
|
||||
|
||||
return( TRUE );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -231,4 +231,4 @@ BOOLEAN WriteSmallFacesStats(RPC_SMALL_FACE_VALUES *pSmallFaces, STR fileName)
|
||||
FileClose( hFile );
|
||||
|
||||
return( TRUE );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -298,4 +298,4 @@ BOOLEAN WriteRandomStats( STR fileName)
|
||||
FileClose( hFile );
|
||||
|
||||
return( TRUE );
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -20,4 +20,4 @@ void ExamineSlantRoofFOVSlots( );
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -29,4 +29,4 @@ extern QARRAY_VALUES QuoteExp[NUM_PROFILES];
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -22,4 +22,4 @@
|
||||
#define RT_COMPRESSION_TACTICAL_TURN_MODIFIER 10
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -934,7 +934,7 @@ public:
|
||||
UINT8 ubLastDateSpokenTo;
|
||||
UINT8 bLastQuoteSaidWasSpecial;
|
||||
INT8 bSectorZ;
|
||||
UINT16 usStrategicInsertionData;
|
||||
UINT32 usStrategicInsertionData;
|
||||
INT8 bFriendlyOrDirectDefaultResponseUsedRecently;
|
||||
INT8 bRecruitDefaultResponseUsedRecently;
|
||||
INT8 bThreatenDefaultResponseUsedRecently;
|
||||
|
||||
@@ -27,4 +27,4 @@ void SetDelayedTileWaiting( SOLDIERTYPE *pSoldier, INT32 sCauseGridNo, INT8 bVal
|
||||
|
||||
BOOLEAN CanExchangePlaces( SOLDIERTYPE *pSoldier1, SOLDIERTYPE *pSoldier2, BOOLEAN fShow );
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user