diff --git a/GameSettings.cpp b/GameSettings.cpp
index b864306e..6cee0a78 100644
--- a/GameSettings.cpp
+++ b/GameSettings.cpp
@@ -409,7 +409,7 @@ void LoadGameExternalOptions()
gGameExternalOptions.iForcePercentageExpert = iniReader.ReadInteger("JA2 Gameplay Settings","EXPERT_INITIAL_GARRISON_PERCENTAGES",150);
gGameExternalOptions.iForcePercentageInsane = iniReader.ReadInteger("JA2 Gameplay Settings","INSANE_INITIAL_GARRISON_PERCENTAGES",200);
- gGameExternalOptions.iPercentElitesBonusExperienced = iniReader.ReadInteger("JA2 Gameplay Settings","EXPERIENCED_ELITE_BONUS",0);
+ gGameExternalOptions.iPercentElitesBonusExperienced = iniReader.ReadInteger("JA2 Gameplay Settings","EXPERIENCED_ELITE_BONUS",0);
gGameExternalOptions.iPercentElitesBonusExpert = iniReader.ReadInteger("JA2 Gameplay Settings","EXPERT_ELITE_BONUS",25);
gGameExternalOptions.iPercentElitesBonusInsane = iniReader.ReadInteger("JA2 Gameplay Settings","INSANE_ELITE_BONUS",25);
@@ -523,6 +523,31 @@ void LoadGameExternalOptions()
// Kaiden: Vehicle Inventory change - Added INI file Option VEHICLE_INVENTORY
gGameExternalOptions.fVehicleInventory = iniReader.ReadBoolean("JA2 Gameplay Settings", "VEHICLE_INVENTORY", TRUE);
+
+ // ShadoWarrior: Tooltip changes (start)
+ gGameExternalOptions.ubSoldierTooltipDetailLevel = iniReader.ReadInteger("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DETAIL_LEVEL", 2);
+
+ gGameExternalOptions.fEnableSoldierTooltipLocation = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_LOCATION", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipBrightness = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_BRIGHTNESS", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipRangeToTarget = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_RANGE_TO_TARGET", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipID = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_ID", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipOrders = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_ORDERS", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipAttitude = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_ATTITUDE", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipActionPoints = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_ACTIONPOINTS", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipHealth = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_HEALTH", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipHelmet = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_HELMET", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipVest = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_VEST", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipLeggings = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_LEGGINGS", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipHeadItem1 = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_HEAD_SLOT_1", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipHeadItem2 = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_HEAD_SLOT_2", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipWeapon = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_WEAPON", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipSecondHand = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_OFF_HAND", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipBigSlot1 = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_BIG_SLOT_1", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipBigSlot2 = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_BIG_SLOT_2", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipBigSlot3 = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_BIG_SLOT_3", TRUE);
+ gGameExternalOptions.fEnableSoldierTooltipBigSlot4 = iniReader.ReadBoolean("JA2 Tactical Settings", "SOLDIER_TOOLTIP_DISPLAY_BIG_SLOT_4", TRUE);
+ // ShadoWarrior: Tooltip changes (end)
+
}
diff --git a/GameSettings.h b/GameSettings.h
index 897a5c38..e6085f89 100644
--- a/GameSettings.h
+++ b/GameSettings.h
@@ -343,6 +343,30 @@ typedef struct
BOOLEAN fEnableAllWeaponCaches;
BOOLEAN fEnableAllTerrorists;
+ // ShadoWarrior: Tooltip changes (start)
+ UINT8 ubSoldierTooltipDetailLevel;
+
+ BOOLEAN fEnableSoldierTooltipLocation;
+ BOOLEAN fEnableSoldierTooltipBrightness;
+ BOOLEAN fEnableSoldierTooltipRangeToTarget;
+ BOOLEAN fEnableSoldierTooltipID;
+ BOOLEAN fEnableSoldierTooltipOrders;
+ BOOLEAN fEnableSoldierTooltipAttitude;
+ BOOLEAN fEnableSoldierTooltipActionPoints;
+ BOOLEAN fEnableSoldierTooltipHealth;
+ BOOLEAN fEnableSoldierTooltipHelmet;
+ BOOLEAN fEnableSoldierTooltipVest;
+ BOOLEAN fEnableSoldierTooltipLeggings;
+ BOOLEAN fEnableSoldierTooltipHeadItem1;
+ BOOLEAN fEnableSoldierTooltipHeadItem2;
+ BOOLEAN fEnableSoldierTooltipWeapon;
+ BOOLEAN fEnableSoldierTooltipSecondHand;
+ BOOLEAN fEnableSoldierTooltipBigSlot1;
+ BOOLEAN fEnableSoldierTooltipBigSlot2;
+ BOOLEAN fEnableSoldierTooltipBigSlot3;
+ BOOLEAN fEnableSoldierTooltipBigSlot4;
+ // ShadoWarrior: Tooltip changes (end)
+
} GAME_EXTERNAL_OPTIONS;
//This structure will contain general Ja2 settings NOT individual game settings.
diff --git a/GameVersion.cpp b/GameVersion.cpp
index 8feec02e..f270a1af 100644
--- a/GameVersion.cpp
+++ b/GameVersion.cpp
@@ -23,7 +23,7 @@ INT16 zVersionLabel[256] = { L"Beta v. 0.98" };
#else
//RELEASE BUILD VERSION
- INT16 zVersionLabel[256] = { L"Release v1.13.490" };
+ INT16 zVersionLabel[256] = { L"Release v1.13.492" };
#endif
diff --git a/Tactical/Interface.cpp b/Tactical/Interface.cpp
index c39c4f6c..7b2be6ff 100644
--- a/Tactical/Interface.cpp
+++ b/Tactical/Interface.cpp
@@ -1479,7 +1479,7 @@ void GetSoldierAboveGuyPositions( SOLDIERTYPE *pSoldier, INT16 *psX, INT16 *psY,
}
}
-extern void DisplaySoldierToolTip( FASTHELPREGION *pRegion );
+
//QUOTE_SYSTEM_STRUCT soldierTTInfo;
void DrawSelectedUIAboveGuy( UINT16 usSoldierID )
@@ -1502,10 +1502,10 @@ void DrawSelectedUIAboveGuy( UINT16 usSoldierID )
return;
}
- if ( pSoldier->sGridNo == NOWHERE )
- {
- return;
- }
+ if ( pSoldier->sGridNo == NOWHERE )
+ {
+ return;
+ }
if ( pSoldier->fFlashLocator )
{
@@ -1669,23 +1669,23 @@ void DrawSelectedUIAboveGuy( UINT16 usSoldierID )
mprintf( sX, sY, NameStr );
fRaiseName = TRUE;
}
- else if ( pSoldier->bAssignment >= ON_DUTY )
- {
- SetFontForeground( FONT_YELLOW );
- swprintf( NameStr, L"(%s)", pAssignmentStrings[ pSoldier->bAssignment ] );
- FindFontCenterCoordinates( sXPos, (INT16)(sYPos ), (INT16)(80 ), 1, NameStr, TINYFONT1, &sX, &sY );
- gprintfdirty( sX, sY, NameStr );
- mprintf( sX, sY, NameStr );
- fRaiseName = TRUE;
- }
- else if ( pSoldier->bTeam == gbPlayerNum && pSoldier->bAssignment < ON_DUTY && pSoldier->bAssignment != CurrentSquad() && !( pSoldier->uiStatusFlags & SOLDIER_MULTI_SELECTED ) )
- {
- swprintf( NameStr, gzLateLocalizedString[ 34 ], ( pSoldier->bAssignment + 1 ) );
- FindFontCenterCoordinates( sXPos, (INT16)(sYPos ), (INT16)(80 ), 1, NameStr, TINYFONT1, &sX, &sY );
- gprintfdirty( sX, sY, NameStr );
- mprintf( sX, sY, NameStr );
- fRaiseName = TRUE;
- }
+ else if ( pSoldier->bAssignment >= ON_DUTY )
+ {
+ SetFontForeground( FONT_YELLOW );
+ swprintf( NameStr, L"(%s)", pAssignmentStrings[ pSoldier->bAssignment ] );
+ FindFontCenterCoordinates( sXPos, (INT16)(sYPos ), (INT16)(80 ), 1, NameStr, TINYFONT1, &sX, &sY );
+ gprintfdirty( sX, sY, NameStr );
+ mprintf( sX, sY, NameStr );
+ fRaiseName = TRUE;
+ }
+ else if ( pSoldier->bTeam == gbPlayerNum && pSoldier->bAssignment < ON_DUTY && pSoldier->bAssignment != CurrentSquad() && !( pSoldier->uiStatusFlags & SOLDIER_MULTI_SELECTED ) )
+ {
+ swprintf( NameStr, gzLateLocalizedString[ 34 ], ( pSoldier->bAssignment + 1 ) );
+ FindFontCenterCoordinates( sXPos, (INT16)(sYPos ), (INT16)(80 ), 1, NameStr, TINYFONT1, &sX, &sY );
+ gprintfdirty( sX, sY, NameStr );
+ mprintf( sX, sY, NameStr );
+ fRaiseName = TRUE;
+ }
// If not in a squad....
@@ -1704,8 +1704,8 @@ void DrawSelectedUIAboveGuy( UINT16 usSoldierID )
}
}
- if ( fDoName )
- {
+ if ( fDoName )
+ {
if ( fRaiseName )
{
swprintf( NameStr, L"%s", pSoldier->name );
@@ -1720,7 +1720,7 @@ void DrawSelectedUIAboveGuy( UINT16 usSoldierID )
gprintfdirty( sX, sY, NameStr );
mprintf( sX, sY, NameStr );
}
- }
+ }
if ( pSoldier->ubProfile < FIRST_RPC || pSoldier->ubProfile >= GASTON || RPC_RECRUITED( pSoldier ) || AM_AN_EPC( pSoldier ) || ( pSoldier->uiStatusFlags & SOLDIER_VEHICLE ) )
{
@@ -1758,8 +1758,8 @@ void DrawSelectedUIAboveGuy( UINT16 usSoldierID )
DrawBarsInUIBox( pSoldier, (INT16)(sXPos ), (INT16)(sYPos ), 16, 1 );
}
}
- else
- {
+ else // ( pSoldier->ubProfile < FIRST_RPC || pSoldier->ubProfile >= GASTON ||
+ { // RPC_RECRUITED( pSoldier ) || AM_AN_EPC( pSoldier ) || ( pSoldier->uiStatusFlags & SOLDIER_VEHICLE ) )
if ( gfUIMouseOnValidCatcher == 2 && pSoldier->ubID == gubUIValidCatcherID )
{
SetFont( TINYFONT1 );
@@ -1770,6 +1770,7 @@ void DrawSelectedUIAboveGuy( UINT16 usSoldierID )
FindFontCenterCoordinates( sXPos, (INT16)(sYPos + 10 ), (INT16)(80 ), 1, NameStr, TINYFONT1, &sX, &sY );
gprintfdirty( sX, sY, NameStr );
mprintf( sX, sY, NameStr );
+
}
else
{
@@ -1780,76 +1781,6 @@ void DrawSelectedUIAboveGuy( UINT16 usSoldierID )
pStr = GetSoldierHealthString( pSoldier );
- //####################################################################################################
- if(gGameExternalOptions.gfAllowSoldierToolTips)
- {
- FASTHELPREGION soldierToolTip[ 1 ];
- UINT16 pStrInfo[ 350 ];
- INT32 iNumAttachments = 0;
-
- if ( pSoldier->inv[ HANDPOS ].usItem != NOTHING )
- {
- swprintf( (wchar_t *)pStrInfo, L"|I|D: %d\n|Orders: %d\n|Attitude: %d\n|Current |A|Ps: %d\n\n|Weapon: \n%s [%d%%]\n",
-
- pSoldier->ubID,
- pSoldier->bOrders,
- pSoldier->bAttitude,
- pSoldier->bActionPoints,
- ItemNames[ pSoldier->inv[ HANDPOS ].usItem ],
- pSoldier->inv[ HANDPOS ].bStatus[0]
- );
-
- // Add attachment string....
- for ( INT32 cnt = 0; cnt < MAX_ATTACHMENTS; cnt++ )
- {
- if ( pSoldier->inv[ HANDPOS ].usAttachItem[ cnt ] != NOTHING )
- {
- iNumAttachments++;
-
- if ( iNumAttachments == 1 )
- {
- wcscat( pStrInfo, L"\n[" );
- }
- else
- {
- wcscat( pStrInfo, L", " );
- }
-
- wcscat( pStrInfo, ItemNames[ pSoldier->inv[ HANDPOS ].usAttachItem[ cnt ] ] );
- }
- }
-
- if ( iNumAttachments > 0 )
- {
- wcscat( pStrInfo, pMessageStrings[ MSG_END_ATTACHMENT_LIST ] );
- }
- }
- else
- {
- swprintf( (wchar_t *)pStrInfo, L"|I|D: %d\n|Orders: %d\n|Attitude: %d\n|Current |A|Ps: %d",
-
- pSoldier->ubID,
- pSoldier->bOrders,
- pSoldier->bAttitude,
- pSoldier->bActionPoints
- );
- }
-
-
- //GetHelpTextForItem( (INT16*)pStrInfo, &( pSoldier->inv[ HANDPOS ] ), pSoldier );
- //SetRegionFastHelpText( &(gKeyRingPanel), pStrInfo );
- //DisplayFastHelp( &(gKeyRingPanel) );
-
- //wcscat( pStr2, pStrInfo );
-
- soldierToolTip[ 0 ].iX = sXPos+50;
- soldierToolTip[ 0 ].iY = sYPos+50;
-
- wcscpy( soldierToolTip[ 0 ].FastHelpText, pStrInfo );
-
- DisplaySoldierToolTip( &( soldierToolTip[ 0 ] ) );
- }
- //####################################################################################################
FindFontCenterCoordinates( sXPos, (INT16)( sYPos + 10 ), (INT16)(80 ), 1, pStr, TINYFONT1, &sX, &sY );
gprintfdirty( sX, sY, pStr );
@@ -1857,92 +1788,26 @@ void DrawSelectedUIAboveGuy( UINT16 usSoldierID )
}
}
}
- else
+ else //pSoldier->ubProfile != NO_PROFILE || ( pSoldier->uiStatusFlags & SOLDIER_VEHICLE )
{
- if ( pSoldier->bLevel != 0 )
- {
- // Display name
- SetFont( TINYFONT1 );
- SetFontBackground( FONT_MCOLOR_BLACK );
- SetFontForeground( FONT_YELLOW );
+ if ( pSoldier->bLevel != 0 )
+ {
+ // Display name
+ SetFont( TINYFONT1 );
+ SetFontBackground( FONT_MCOLOR_BLACK );
+ SetFontForeground( FONT_YELLOW );
- swprintf( NameStr, gzLateLocalizedString[ 15 ] );
- FindFontCenterCoordinates( sXPos, (INT16)(sYPos + 10 ), (INT16)(80 ), 1, NameStr, TINYFONT1, &sX, &sY );
- gprintfdirty( sX, sY, NameStr );
- mprintf( sX, sY, NameStr );
- }
+ swprintf( NameStr, gzLateLocalizedString[ 15 ] );
+ FindFontCenterCoordinates( sXPos, (INT16)(sYPos + 10 ), (INT16)(80 ), 1, NameStr, TINYFONT1, &sX, &sY );
+ gprintfdirty( sX, sY, NameStr );
+ mprintf( sX, sY, NameStr );
+ }
pStr = GetSoldierHealthString( pSoldier );
- //####################################################################################################
- if(gGameExternalOptions.gfAllowSoldierToolTips)
- {
- FASTHELPREGION soldierToolTip[ 1 ];
- UINT16 pStrInfo[ 350 ];
- INT32 iNumAttachments = 0;
-
- if ( pSoldier->inv[ HANDPOS ].usItem != NOTHING )
- {
- swprintf( (wchar_t *)pStrInfo, L"|I|D: %d\n|Orders: %d\n|Attitude: %d\n|Current |A|Ps: %d\n\n|Weapon: \n%s [%d%%]\n",
-
- pSoldier->ubID,
- pSoldier->bOrders,
- pSoldier->bAttitude,
- pSoldier->bActionPoints,
- ItemNames[ pSoldier->inv[ HANDPOS ].usItem ],
- pSoldier->inv[ HANDPOS ].bStatus[0]
- );
-
- // Add attachment string....
- for ( INT32 cnt = 0; cnt < MAX_ATTACHMENTS; cnt++ )
- {
- if ( pSoldier->inv[ HANDPOS ].usAttachItem[ cnt ] != NOTHING )
- {
- iNumAttachments++;
-
- if ( iNumAttachments == 1 )
- {
- wcscat( pStrInfo, L"\n[" );
- }
- else
- {
- wcscat( pStrInfo, L", " );
- }
-
- wcscat( pStrInfo, ItemNames[ pSoldier->inv[ HANDPOS ].usAttachItem[ cnt ] ] );
- }
- }
-
- if ( iNumAttachments > 0 )
- {
- wcscat( pStrInfo, pMessageStrings[ MSG_END_ATTACHMENT_LIST ] );
- }
- }
- else
- {
- swprintf( (wchar_t *)pStrInfo, L"|I|D: %d\n|Orders: %d\n|Attitude: %d\n|Current |A|Ps: %d",
-
- pSoldier->ubID,
- pSoldier->bOrders,
- pSoldier->bAttitude,
- pSoldier->bActionPoints
- );
- }
-
- //GetHelpTextForItem( (INT16*)pStrInfo, &( pSoldier->inv[ HANDPOS ] ), pSoldier );
- //SetRegionFastHelpText( &(gKeyRingPanel), pStrInfo );
- //DisplayFastHelp( &(gKeyRingPanel) );
-
- //wcscat( pStr2, pStrInfo );
-
- soldierToolTip[ 0 ].iX = sXPos+50;
- soldierToolTip[ 0 ].iY = sYPos+50;
-
- wcscpy( soldierToolTip[ 0 ].FastHelpText, pStrInfo );
-
- DisplaySoldierToolTip( &( soldierToolTip[ 0 ] ) );
- }
- //####################################################################################################
+ //jones
+ extern void SoldierTooltip(SOLDIERTYPE*);
+ SoldierTooltip(pSoldier);
SetFont( TINYFONT1 );
SetFontBackground( FONT_MCOLOR_BLACK );
@@ -1951,9 +1816,7 @@ void DrawSelectedUIAboveGuy( UINT16 usSoldierID )
FindFontCenterCoordinates( sXPos, sYPos, (INT16)(80 ), 1, pStr, TINYFONT1, &sX, &sY );
gprintfdirty( sX, sY, pStr );
mprintf( sX, sY, pStr );
-
}
-
}
diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp
index 94e36ab5..9ff4c484 100644
--- a/Tactical/Items.cpp
+++ b/Tactical/Items.cpp
@@ -6966,7 +6966,7 @@ INT8 FindGasMask( SOLDIERTYPE * pSoldier )
{
INT8 bLoop;
- for (bLoop = 0; bLoop < BIGPOCK1POS; bLoop++)
+ for (bLoop = 0; bLoop < HANDPOS; bLoop++)
{
if ( Item[pSoldier->inv[bLoop].usItem].gasmask )
{
diff --git a/Tactical/Tactical.vcproj b/Tactical/Tactical.vcproj
index cafa517b..3735a806 100644
--- a/Tactical/Tactical.vcproj
+++ b/Tactical/Tactical.vcproj
@@ -4649,6 +4649,9 @@
BrowseInformation="1"/>
+
+