mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
New options in ja2_options.ini (by Sevenfm)
1) PLAYER_HIT_COUNT = 0 This works as ENEMY_HIT_COUNT option, but for player mercs. Possible values: 0 - 4 2) SOLDIER_TOOLTIP_DISPLAY_SUPPRESSION_INFO = TRUE Show additional info in tactical tooltip: - APs lost due to suppression - Suppression Tolerance - Effective Shock Level ( Shock level modified by traits and backgrounds. This value is compared with current suppression tolerance to determine "cowering" effect ) - AI morale level 3) SHOW_ENEMY_WEAPON = TRUE Show enemy weapon name above soldier - after health, name and rank. You can see exact weapon name only on short distances, range calculation is similar to dynamic tooltips and based on soldiers actual viewing range and experience. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6691 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -1030,6 +1030,8 @@ void LoadGameExternalOptions()
|
||||
|
||||
// WANNE: Hide the hit count when enemy gets hit
|
||||
gGameExternalOptions.ubEnemyHitCount = iniReader.ReadInteger("Tactical Interface Settings","ENEMY_HIT_COUNT", 0, 0, 4);
|
||||
// sevenfm: added similar option for player hit count
|
||||
gGameExternalOptions.ubPlayerHitCount = iniReader.ReadInteger("Tactical Interface Settings","PLAYER_HIT_COUNT", 0, 0, 4);
|
||||
|
||||
// sevenfm: show additional suppression info above soldier
|
||||
gGameExternalOptions.ubShowSuppressionCount = iniReader.ReadInteger("Tactical Interface Settings","SHOW_SUPPRESSION_COUNT", 0, 0, 2);
|
||||
@@ -1179,6 +1181,7 @@ void LoadGameExternalOptions()
|
||||
gGameExternalOptions.fEnableSoldierTooltipMorale = iniReader.ReadBoolean("Tactical Tooltip Settings", "SOLDIER_TOOLTIP_DISPLAY_MORALE", TRUE);
|
||||
gGameExternalOptions.fEnableSoldierTooltipShock = iniReader.ReadBoolean("Tactical Tooltip Settings", "SOLDIER_TOOLTIP_DISPLAY_SHOCK", TRUE);
|
||||
gGameExternalOptions.fEnableSoldierTooltipSuppressionPoints = iniReader.ReadBoolean("Tactical Tooltip Settings", "SOLDIER_TOOLTIP_DISPLAY_SUPPRESSION", TRUE);
|
||||
gGameExternalOptions.fEnableSoldierTooltipSuppressionInfo = iniReader.ReadBoolean("Tactical Tooltip Settings", "SOLDIER_TOOLTIP_DISPLAY_SUPPRESSION_INFO", TRUE);
|
||||
gGameExternalOptions.fEnableSoldierTooltipTraits = iniReader.ReadBoolean("Tactical Tooltip Settings", "SOLDIER_TOOLTIP_DISPLAY_TRAITS", TRUE); // added by SANDRO
|
||||
gGameExternalOptions.fEnableSoldierTooltipHelmet = iniReader.ReadBoolean("Tactical Tooltip Settings", "SOLDIER_TOOLTIP_DISPLAY_HELMET", TRUE);
|
||||
gGameExternalOptions.fEnableSoldierTooltipVest = iniReader.ReadBoolean("Tactical Tooltip Settings", "SOLDIER_TOOLTIP_DISPLAY_VEST", TRUE);
|
||||
@@ -1301,6 +1304,9 @@ void LoadGameExternalOptions()
|
||||
gGameExternalOptions.fCanJumpThroughClosedWindows = iniReader.ReadBoolean("Tactical Gameplay Settings","CAN_JUMP_THROUGH_CLOSED_WINDOWS", TRUE);
|
||||
gGameExternalOptions.fCanClimbOnWalls = iniReader.ReadBoolean("Tactical Gameplay Settings","CAN_CLIMB_ON_WALLS", FALSE);
|
||||
|
||||
// sevenfm
|
||||
gGameExternalOptions.fShowEnemyWeapon = iniReader.ReadBoolean("Tactical Gameplay Settings","SHOW_ENEMY_WEAPON", FALSE);
|
||||
|
||||
//legion by Jazz
|
||||
gGameExternalOptions.fIndividualHiddenPersonNames = iniReader.ReadBoolean("Tactical Gameplay Settings","INDIVIDUAL_HIDDEN_PERSON_NAMES", FALSE);
|
||||
|
||||
|
||||
@@ -714,6 +714,7 @@ typedef struct
|
||||
BOOLEAN fEnableSoldierTooltipMorale;
|
||||
BOOLEAN fEnableSoldierTooltipShock; //Moa: debug tooltip only
|
||||
BOOLEAN fEnableSoldierTooltipSuppressionPoints; //Moa: debug tooltip only
|
||||
BOOLEAN fEnableSoldierTooltipSuppressionInfo; //sevenfm: additional suppression info
|
||||
BOOLEAN fEnableSoldierTooltipTraits; // added by SANDRO
|
||||
BOOLEAN fEnableSoldierTooltipHelmet;
|
||||
BOOLEAN fEnableSoldierTooltipVest;
|
||||
@@ -1164,6 +1165,9 @@ typedef struct
|
||||
BOOLEAN fCanJumpThroughClosedWindows;
|
||||
BOOLEAN fCanClimbOnWalls;
|
||||
|
||||
// sevenfm: show enemy weapon above soldier in tactical
|
||||
BOOLEAN fShowEnemyWeapon;
|
||||
|
||||
//legion by Jazz
|
||||
BOOLEAN fIndividualHiddenPersonNames;
|
||||
|
||||
@@ -1197,6 +1201,7 @@ typedef struct
|
||||
BOOLEAN fShowHealthBarsOnHead;
|
||||
|
||||
UINT8 ubEnemyHitCount;
|
||||
UINT8 ubPlayerHitCount;
|
||||
|
||||
// sevenfm: new additional info above soldier
|
||||
UINT8 ubShowSuppressionCount;
|
||||
|
||||
+170
-217
@@ -738,210 +738,9 @@ void RenderTopmostTacticalInterface( )
|
||||
DrawSelectedUIAboveGuy((UINT16)pSoldier->ubID);
|
||||
}
|
||||
|
||||
// Use world coordinates!
|
||||
INT16 sMercScreenX, sMercScreenY, sOffsetX, sOffsetY, sDamageX, sDamageY;
|
||||
|
||||
// sevenfm: added for suppression counters
|
||||
INT16 sSuppressionX, sSuppressionY;
|
||||
UINT16 widthDamage = 0;
|
||||
UINT16 widthSuppression = 0;
|
||||
UINT16 height = 0;
|
||||
BOOLEAN printDamage = FALSE; // determines if any value is printed after standart moving damage counter
|
||||
BOOLEAN printSuppression = FALSE; // determines if any value is printed above soldier (only for new suppression counters)
|
||||
|
||||
if ( gGameExternalOptions.ubShowSuppressionCount == 1 ||
|
||||
gGameExternalOptions.ubShowShockCount == 1 ||
|
||||
gGameExternalOptions.ubShowAPCount == 1 ||
|
||||
gGameExternalOptions.ubShowMoraleCount == 1 )
|
||||
printDamage = TRUE;
|
||||
if ( gGameExternalOptions.ubShowSuppressionCountAlt ||
|
||||
gGameExternalOptions.ubShowSuppressionCount == 2 ||
|
||||
gGameExternalOptions.ubShowShockCount == 2 ||
|
||||
gGameExternalOptions.ubShowAPCount == 2 ||
|
||||
gGameExternalOptions.ubShowMoraleCount == 2 )
|
||||
printSuppression = TRUE;
|
||||
|
||||
if (!TileIsOutOfBounds(pSoldier->sGridNo) && pSoldier->bVisible != -1 )
|
||||
{
|
||||
// coordinates for suppression counter
|
||||
GetSoldierScreenPos( pSoldier, &sMercScreenX, &sMercScreenY );
|
||||
GetSoldierAnimOffsets( pSoldier, &sOffsetX, &sOffsetY );
|
||||
if ( pSoldier->ubBodyType == QUEENMONSTER )
|
||||
{
|
||||
sSuppressionX = sMercScreenX - pSoldier->sBoundingBoxOffsetX;
|
||||
sSuppressionY = sMercScreenY - pSoldier->sBoundingBoxOffsetY;
|
||||
sSuppressionX += 25;
|
||||
sSuppressionY += 10;
|
||||
DrawCounters( pSoldier );
|
||||
}
|
||||
else
|
||||
{
|
||||
sSuppressionX = sOffsetX + (INT16)(sMercScreenX + ( 2 * 30 / 3 ) );
|
||||
sSuppressionY = sOffsetY + (INT16)(sMercScreenY - 5 );
|
||||
sSuppressionX -= sOffsetX;
|
||||
sSuppressionY -= sOffsetY;
|
||||
if ( sSuppressionY < gsVIEWPORT_WINDOW_START_Y )
|
||||
{
|
||||
sSuppressionY = ( sMercScreenY - sOffsetY );
|
||||
}
|
||||
}
|
||||
// if showing suppression - move damage counter higher on screen
|
||||
//if( printSuppression)
|
||||
// height = WFGetFontHeight ( TINYFONT1 );
|
||||
|
||||
// print current ubSuppressionPoints counter
|
||||
if( gGameExternalOptions.ubShowSuppressionCountAlt && pSoldier->stats.bLife >= OKLIFE )
|
||||
{
|
||||
if( pSoldier->ubSuppressionPoints >0 )
|
||||
{
|
||||
UINT8 scale = PRINT_SCALE_PLAIN_NUMBER;
|
||||
if( gGameExternalOptions.ubShowSuppressionUseAsterisks )
|
||||
{
|
||||
// print multi asterisk only if no other suppression counter will be printed
|
||||
/*if ( gGameExternalOptions.ubShowShockCount <2 &&
|
||||
gGameExternalOptions.ubShowAPCount <2 &&
|
||||
gGameExternalOptions.ubShowMoraleCount <2 )
|
||||
scale = PRINT_SCALE_ASTERISK_SUPPRESSION;
|
||||
else
|
||||
scale = PRINT_SCALE_ASTERISK;*/
|
||||
scale = PRINT_SCALE_ASTERISK_SUPPRESSION;
|
||||
}
|
||||
PrintSuppressionCounter( sSuppressionX, sSuppressionY, pSoldier->ubSuppressionPoints, widthSuppression, FONT_MCOLOR_LTGRAY, scale );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( pSoldier->flags.fDisplayDamage )
|
||||
{
|
||||
// Display damage
|
||||
if (!TileIsOutOfBounds(pSoldier->sGridNo) && pSoldier->bVisible != -1 )
|
||||
{
|
||||
GetSoldierScreenPos( pSoldier, &sMercScreenX, &sMercScreenY );
|
||||
GetSoldierAnimOffsets( pSoldier, &sOffsetX, &sOffsetY );
|
||||
|
||||
if ( pSoldier->ubBodyType == QUEENMONSTER )
|
||||
{
|
||||
sDamageX = sMercScreenX + pSoldier->sDamageX - pSoldier->sBoundingBoxOffsetX;
|
||||
sDamageY = sMercScreenY + pSoldier->sDamageY - pSoldier->sBoundingBoxOffsetY;
|
||||
|
||||
sDamageX += 25;
|
||||
sDamageY += 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
sDamageX = pSoldier->sDamageX + (INT16)(sMercScreenX + ( 2 * 30 / 3 ) );
|
||||
sDamageY = pSoldier->sDamageY + (INT16)(sMercScreenY - 5 );
|
||||
|
||||
sDamageX -= sOffsetX;
|
||||
sDamageY -= sOffsetY;
|
||||
|
||||
if ( sDamageY < gsVIEWPORT_WINDOW_START_Y )
|
||||
{
|
||||
sDamageY = ( sMercScreenY - sOffsetY );
|
||||
}
|
||||
}
|
||||
// if showing suppression - move damage counter higher on screen
|
||||
if( printSuppression)
|
||||
sDamageY -= WFGetFontHeight ( TINYFONT1 );
|
||||
|
||||
SetFont( TINYFONT1 );
|
||||
|
||||
SetFontBackground( FONT_MCOLOR_BLACK );
|
||||
SetFontForeground( FONT_MCOLOR_WHITE );
|
||||
|
||||
bool showDamage = true;
|
||||
if (gGameExternalOptions.ubEnemyHitCount > 0 && ( pSoldier->bTeam == ENEMY_TEAM || pSoldier->bTeam == CREATURE_TEAM) )
|
||||
showDamage = false;
|
||||
|
||||
if (showDamage)
|
||||
{
|
||||
if ( pSoldier->sDamage >= 0 )
|
||||
{
|
||||
// print moving damage counter
|
||||
if( pSoldier->sDamage > 0 )
|
||||
{
|
||||
if ( printDamage )
|
||||
PrintSuppressionCounter( sDamageX, sDamageY, pSoldier->sDamage, widthDamage, FONT_MCOLOR_WHITE, PRINT_SCALE_PLAIN_NUMBER );
|
||||
else // original code
|
||||
{
|
||||
gprintfdirty( sDamageX, sDamageY, L"-%d", pSoldier->sDamage );
|
||||
mprintf( sDamageX, sDamageY, L"-%d", pSoldier->sDamage );
|
||||
}
|
||||
}
|
||||
}
|
||||
else // Flugente: it is possible that someone might regain negative damage as zombies can regenerate health through bleeding
|
||||
{
|
||||
if( printDamage )
|
||||
{
|
||||
PrintSuppressionCounter( sDamageX, sDamageY, -pSoldier->sDamage, widthDamage, FONT_MCOLOR_LTGREEN, PRINT_SCALE_PLAIN_NUMBER );
|
||||
}
|
||||
else // original code
|
||||
{
|
||||
SetFontForeground( FONT_MCOLOR_LTGREEN );
|
||||
gprintfdirty( sDamageX, sDamageY, L"+%d", -pSoldier->sDamage );
|
||||
mprintf( sDamageX, sDamageY, L"+%d", -pSoldier->sDamage );
|
||||
SetFontForeground( FONT_MCOLOR_WHITE );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gGameExternalOptions.ubEnemyHitCount == 1)
|
||||
{
|
||||
gprintfdirty( sDamageX, sDamageY, L"%s", gzHiddenHitCountStr[0]);
|
||||
mprintf( sDamageX, sDamageY, L"%s", gzHiddenHitCountStr[0]);
|
||||
}
|
||||
else if (gGameExternalOptions.ubEnemyHitCount == 3) // print white asterisks
|
||||
{
|
||||
PrintSuppressionCounter( sDamageX, sDamageY, pSoldier->sDamage, widthDamage, FONT_MCOLOR_WHITE, PRINT_SCALE_ASTERISK_DAMAGE );
|
||||
}
|
||||
else if (gGameExternalOptions.ubEnemyHitCount == 4) // print red asterisks
|
||||
{
|
||||
PrintSuppressionCounter( sDamageX, sDamageY, pSoldier->sDamage, widthDamage, FONT_MCOLOR_DKRED, PRINT_SCALE_ASTERISK_DAMAGE );
|
||||
}
|
||||
else
|
||||
{
|
||||
gprintfdirty( sDamageX, sDamageY, L"");
|
||||
mprintf( sDamageX, sDamageY, L"");
|
||||
}
|
||||
}
|
||||
if ( pSoldier->stats.bLife >= OKLIFE )
|
||||
{
|
||||
// replace ubLastSuppression count on screen
|
||||
if( gGameExternalOptions.ubShowSuppressionCountAlt && gGameExternalOptions.ubShowSuppressionCount == 2 && pSoldier->ubLastSuppression > 0 )
|
||||
widthSuppression = 0;
|
||||
// display suppression from last attack
|
||||
if( gGameExternalOptions.ubShowSuppressionCount == 1 ) // show after damage counter
|
||||
PrintSuppressionCounter( sDamageX, sDamageY, pSoldier->ubLastSuppression, widthDamage, FONT_MCOLOR_LTGRAY,
|
||||
gGameExternalOptions.ubShowSuppressionUseAsterisks ? PRINT_SCALE_ASTERISK_SUPPRESSION : PRINT_SCALE_PLAIN_NUMBER );
|
||||
if( gGameExternalOptions.ubShowSuppressionCount == 2 ) // show after suppression counter
|
||||
PrintSuppressionCounter( sSuppressionX, sSuppressionY, pSoldier->ubLastSuppression, widthSuppression, FONT_MCOLOR_LTGRAY,
|
||||
gGameExternalOptions.ubShowSuppressionUseAsterisks ? PRINT_SCALE_ASTERISK_SUPPRESSION : PRINT_SCALE_PLAIN_NUMBER );
|
||||
// display shock from last attack
|
||||
if( gGameExternalOptions.ubShowShockCount == 1 ) // show after damage counter
|
||||
PrintSuppressionCounter( sDamageX, sDamageY, pSoldier->ubLastShock + pSoldier->ubLastShockFromHit, widthDamage, FONT_MCOLOR_LTYELLOW,
|
||||
gGameExternalOptions.ubShowSuppressionUseAsterisks ? PRINT_SCALE_ASTERISK_SHOCK : PRINT_SCALE_PLAIN_NUMBER );
|
||||
if( gGameExternalOptions.ubShowShockCount == 2 ) // show after suppression counter
|
||||
PrintSuppressionCounter( sSuppressionX, sSuppressionY, pSoldier->ubLastShock + pSoldier->ubLastShockFromHit, widthSuppression, FONT_MCOLOR_LTYELLOW,
|
||||
gGameExternalOptions.ubShowSuppressionUseAsterisks ? PRINT_SCALE_ASTERISK_SHOCK : PRINT_SCALE_PLAIN_NUMBER );
|
||||
// display morale hit from last attack
|
||||
if( gGameExternalOptions.ubShowMoraleCount == 1 ) // show after damage counter
|
||||
PrintSuppressionCounter( sDamageX, sDamageY, pSoldier->ubLastMorale + pSoldier->ubLastMoraleFromHit, widthDamage, FONT_MCOLOR_LTGREEN,
|
||||
gGameExternalOptions.ubShowSuppressionUseAsterisks ? PRINT_SCALE_ASTERISK_MORALE : PRINT_SCALE_PLAIN_NUMBER );
|
||||
if( gGameExternalOptions.ubShowMoraleCount == 2 ) // show after suppression counter
|
||||
PrintSuppressionCounter( sSuppressionX, sSuppressionY, pSoldier->ubLastMorale + pSoldier->ubLastMoraleFromHit, widthSuppression, FONT_MCOLOR_LTGREEN,
|
||||
gGameExternalOptions.ubShowSuppressionUseAsterisks ? PRINT_SCALE_ASTERISK_MORALE : PRINT_SCALE_PLAIN_NUMBER );
|
||||
// display AP loss from last attack
|
||||
if( gGameExternalOptions.ubShowAPCount == 1 ) // show after damage counter
|
||||
PrintSuppressionCounter( sDamageX, sDamageY, pSoldier->ubLastAP + pSoldier->ubLastAPFromHit, widthDamage, FONT_MCOLOR_LTBLUE,
|
||||
gGameExternalOptions.ubShowSuppressionUseAsterisks ? PRINT_SCALE_ASTERISK_AP : PRINT_SCALE_PLAIN_NUMBER );
|
||||
if( gGameExternalOptions.ubShowAPCount == 2 ) // show after suppression counter
|
||||
PrintSuppressionCounter( sSuppressionX, sSuppressionY, pSoldier->ubLastAP + pSoldier->ubLastAPFromHit, widthSuppression, FONT_MCOLOR_LTBLUE,
|
||||
gGameExternalOptions.ubShowSuppressionUseAsterisks ? PRINT_SCALE_ASTERISK_AP : PRINT_SCALE_PLAIN_NUMBER );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( gusSelectedSoldier != NOBODY )
|
||||
{
|
||||
@@ -1251,7 +1050,7 @@ BOOLEAN InterfaceOKForMeanwhilePopup()
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
void PrintSuppressionCounter( INT16 x, INT16 y, INT16 data, UINT16 &width, UINT8 ubForegound, UINT8 scale )
|
||||
void PrintCounter( INT16 x, INT16 y, INT16 data, UINT16 &width, UINT8 ubForegound, UINT8 scale )
|
||||
{
|
||||
CHAR16 pStr[100];
|
||||
UINT8 num = 0;
|
||||
@@ -1263,19 +1062,19 @@ void PrintSuppressionCounter( INT16 x, INT16 y, INT16 data, UINT16 &width, UINT8
|
||||
switch ( scale )
|
||||
{
|
||||
case PRINT_SCALE_ASTERISK_SUPPRESSION:
|
||||
num = CalcScaleSuppression( data );
|
||||
num = CalcScaleSuppression( abs(data) );
|
||||
break;
|
||||
case PRINT_SCALE_ASTERISK_DAMAGE:
|
||||
num = CalcScaleDamage( data );
|
||||
num = CalcScaleDamage( abs(data) );
|
||||
break;
|
||||
case PRINT_SCALE_ASTERISK_MORALE:
|
||||
num = CalcScaleMorale( data );
|
||||
num = CalcScaleMorale( abs(data) );
|
||||
break;
|
||||
case PRINT_SCALE_ASTERISK_AP:
|
||||
num = CalcScaleAP( data );
|
||||
num = CalcScaleAP( abs(data) );
|
||||
break;
|
||||
case PRINT_SCALE_ASTERISK_SHOCK:
|
||||
num = CalcScaleShock( data );
|
||||
num = CalcScaleShock( abs(data) );
|
||||
break;
|
||||
default:
|
||||
num = 1;
|
||||
@@ -1293,19 +1092,13 @@ void PrintSuppressionCounter( INT16 x, INT16 y, INT16 data, UINT16 &width, UINT8
|
||||
swprintf( pStr, L"*" );
|
||||
for ( i = 1; i<num; i++)
|
||||
wcscat( pStr, L"*" );
|
||||
// add " " only after numbers
|
||||
if( scale == PRINT_SCALE_PLAIN_NUMBER )
|
||||
wcscat( pStr, L" " );
|
||||
|
||||
gprintfdirty( x+width, y, pStr );
|
||||
mprintf( x+width, y, pStr );
|
||||
}
|
||||
else
|
||||
{
|
||||
gprintfdirty( x+width, y, L"%d", data );
|
||||
mprintf( x+width, y, L"%d", data );
|
||||
swprintf( pStr, L"%d|", data );
|
||||
swprintf( pStr, L"%d ", data );
|
||||
}
|
||||
gprintfdirty( x+width, y, pStr );
|
||||
mprintf( x+width, y, pStr );
|
||||
width += StringPixLength ( pStr, TINYFONT1 );
|
||||
SetFontForeground( FONT_MCOLOR_WHITE );
|
||||
}
|
||||
@@ -1348,3 +1141,163 @@ UINT8 CalcScaleShock( INT16 data )
|
||||
if( data > 3 ) return 2;
|
||||
return 1;
|
||||
}
|
||||
|
||||
void DrawCounters( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
// Use world coordinates!
|
||||
INT16 sMercScreenX, sMercScreenY, sOffsetX, sOffsetY, sDamageX, sDamageY;
|
||||
|
||||
// sevenfm: added for suppression counters
|
||||
INT16 sSuppressionX, sSuppressionY;
|
||||
UINT16 widthDamage = 0; // print damage counters one after another in one line
|
||||
UINT16 widthSuppression = 0; // print suppression counters (not moving) one after another in one line above soldier
|
||||
BOOLEAN printSuppression = FALSE; // determines if any value is printed above soldier (only for new suppression counters)
|
||||
UINT8 hitCount;
|
||||
CHAR16 pStr[100];
|
||||
|
||||
if ( gGameExternalOptions.ubShowSuppressionCountAlt ||
|
||||
gGameExternalOptions.ubShowSuppressionCount == 2 ||
|
||||
gGameExternalOptions.ubShowShockCount == 2 ||
|
||||
gGameExternalOptions.ubShowAPCount == 2 ||
|
||||
gGameExternalOptions.ubShowMoraleCount == 2 )
|
||||
printSuppression = TRUE;
|
||||
|
||||
if (!TileIsOutOfBounds(pSoldier->sGridNo) && pSoldier->bVisible != -1 )
|
||||
{
|
||||
GetSoldierScreenPos( pSoldier, &sMercScreenX, &sMercScreenY );
|
||||
GetSoldierAnimOffsets( pSoldier, &sOffsetX, &sOffsetY );
|
||||
// coordinates for suppression counter
|
||||
|
||||
if ( pSoldier->ubBodyType == QUEENMONSTER )
|
||||
{
|
||||
sSuppressionX = sMercScreenX - pSoldier->sBoundingBoxOffsetX;
|
||||
sSuppressionY = sMercScreenY - pSoldier->sBoundingBoxOffsetY;
|
||||
sSuppressionX += 25;
|
||||
sSuppressionY += 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
sSuppressionX = (INT16)(sMercScreenX + ( 2 * 30 / 3 ) );
|
||||
sSuppressionY = (INT16)(sMercScreenY - 5 );
|
||||
|
||||
if ( sSuppressionY < gsVIEWPORT_WINDOW_START_Y )
|
||||
sSuppressionY = ( sMercScreenY - sOffsetY );
|
||||
}
|
||||
// coordinates for damage counter
|
||||
if ( pSoldier->ubBodyType == QUEENMONSTER )
|
||||
{
|
||||
sDamageX = sMercScreenX + pSoldier->sDamageX - pSoldier->sBoundingBoxOffsetX;
|
||||
sDamageY = sMercScreenY + pSoldier->sDamageY - pSoldier->sBoundingBoxOffsetY;
|
||||
sDamageX += 25;
|
||||
sDamageY += 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
sDamageX = pSoldier->sDamageX + (INT16)(sMercScreenX + ( 2 * 30 / 3 ) );
|
||||
sDamageY = pSoldier->sDamageY + (INT16)(sMercScreenY - 5 );
|
||||
sDamageX -= sOffsetX;
|
||||
sDamageY -= sOffsetY;
|
||||
// if showing suppression - move damage counter higher on screen
|
||||
if( printSuppression)
|
||||
// sDamageY -= 2*WFGetFontHeight ( TINYFONT1 );
|
||||
sDamageY -= WFGetFontHeight ( TINYFONT1 );
|
||||
if ( sSuppressionY < gsVIEWPORT_WINDOW_START_Y )
|
||||
sSuppressionY = ( sMercScreenY - sOffsetY );
|
||||
}
|
||||
// print current ubSuppressionPoints counter
|
||||
if( gGameExternalOptions.ubShowSuppressionCountAlt && pSoldier->stats.bLife >= OKLIFE )
|
||||
{
|
||||
if( pSoldier->ubSuppressionPoints >0 )
|
||||
{
|
||||
PrintCounter( sSuppressionX, sSuppressionY, pSoldier->ubSuppressionPoints, widthSuppression, FONT_MCOLOR_LTGRAY,
|
||||
gGameExternalOptions.ubShowSuppressionUseAsterisks ? PRINT_SCALE_ASTERISK_SUPPRESSION : PRINT_SCALE_PLAIN_NUMBER );
|
||||
}
|
||||
}
|
||||
|
||||
if ( pSoldier->flags.fDisplayDamage )
|
||||
{
|
||||
// Display damage
|
||||
SetFont( TINYFONT1 );
|
||||
|
||||
SetFontBackground( FONT_MCOLOR_BLACK );
|
||||
SetFontForeground( FONT_MCOLOR_WHITE );
|
||||
|
||||
if( pSoldier->bTeam == OUR_TEAM )
|
||||
hitCount = gGameExternalOptions.ubPlayerHitCount;
|
||||
else
|
||||
hitCount = gGameExternalOptions.ubEnemyHitCount;
|
||||
|
||||
if( pSoldier->sDamage < 0 )
|
||||
{
|
||||
// Flugente: it is possible that someone might regain negative damage as zombies can regenerate health through bleeding
|
||||
SetFontForeground( FONT_MCOLOR_LTGREEN );
|
||||
swprintf( pStr, L"+%d ", -pSoldier->sDamage );
|
||||
gprintfdirty( sDamageX, sDamageY, pStr );
|
||||
mprintf( sDamageX, sDamageY, pStr );
|
||||
widthDamage += StringPixLength ( pStr, TINYFONT1 );
|
||||
SetFontForeground( FONT_MCOLOR_WHITE );
|
||||
}
|
||||
else // normal soldier
|
||||
{
|
||||
switch (hitCount)
|
||||
{
|
||||
case 0: // show damage as usual
|
||||
if( pSoldier->sDamage > 0 )
|
||||
//PrintCounter( sDamageX, sDamageY, pSoldier->sDamage, widthDamage, FONT_MCOLOR_WHITE, PRINT_SCALE_PLAIN_NUMBER );
|
||||
swprintf( pStr, L"-%d ", pSoldier->sDamage );
|
||||
gprintfdirty( sDamageX, sDamageY, pStr );
|
||||
mprintf( sDamageX, sDamageY, pStr );
|
||||
widthDamage += StringPixLength ( pStr, TINYFONT1 );
|
||||
break;
|
||||
case 1: // show ? indicator
|
||||
if( pSoldier->sDamage != 0 )
|
||||
{
|
||||
swprintf( pStr, L"%s ", gzHiddenHitCountStr[0] );
|
||||
gprintfdirty( sDamageX, sDamageY, pStr );
|
||||
mprintf( sDamageX, sDamageY, pStr );
|
||||
widthDamage += StringPixLength ( pStr, TINYFONT1 );
|
||||
}
|
||||
break;
|
||||
case 2: // do not show anything
|
||||
break;
|
||||
case 3: // show white asterisks
|
||||
PrintCounter( sDamageX, sDamageY, pSoldier->sDamage, widthDamage, FONT_MCOLOR_WHITE, PRINT_SCALE_ASTERISK_DAMAGE );
|
||||
break;
|
||||
case 4: // show red asterisks
|
||||
PrintCounter( sDamageX, sDamageY, pSoldier->sDamage, widthDamage, FONT_MCOLOR_DKRED, PRINT_SCALE_ASTERISK_DAMAGE );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// do not show suppression info for dying soldier
|
||||
if ( pSoldier->stats.bLife >= OKLIFE )
|
||||
{
|
||||
// replace ubLastSuppression count on screen
|
||||
if( gGameExternalOptions.ubShowSuppressionCountAlt && gGameExternalOptions.ubShowSuppressionCount == 2 && pSoldier->ubLastSuppression > 0 )
|
||||
widthSuppression = 0;
|
||||
// display suppression from last attack
|
||||
PrintSuppressionCounter( sDamageX, sDamageY, sSuppressionX, sSuppressionY, pSoldier->ubLastSuppression, widthDamage, widthSuppression,
|
||||
FONT_MCOLOR_LTGRAY, PRINT_SCALE_ASTERISK_SUPPRESSION, gGameExternalOptions.ubShowSuppressionCount );
|
||||
// display shock from last attack
|
||||
PrintSuppressionCounter( sDamageX, sDamageY, sSuppressionX, sSuppressionY, pSoldier->ubLastShock + pSoldier->ubLastShockFromHit, widthDamage, widthSuppression,
|
||||
FONT_MCOLOR_LTYELLOW, PRINT_SCALE_ASTERISK_SHOCK, gGameExternalOptions.ubShowShockCount );
|
||||
// display morale hit from last attack
|
||||
PrintSuppressionCounter( sDamageX, sDamageY, sSuppressionX, sSuppressionY, pSoldier->ubLastMorale + pSoldier->ubLastMoraleFromHit, widthDamage, widthSuppression,
|
||||
FONT_MCOLOR_LTGREEN, PRINT_SCALE_ASTERISK_MORALE, gGameExternalOptions.ubShowMoraleCount );
|
||||
// display AP loss from last attack
|
||||
PrintSuppressionCounter( sDamageX, sDamageY, sSuppressionX, sSuppressionY, pSoldier->ubLastAP + pSoldier->ubLastAPFromHit, widthDamage, widthSuppression,
|
||||
FONT_MCOLOR_LTBLUE, PRINT_SCALE_ASTERISK_AP, gGameExternalOptions.ubShowAPCount );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PrintSuppressionCounter( INT16 x, INT16 y, INT16 sX, INT16 sY, UINT8 data, UINT16 &widthDamage, UINT16 &widthSuppression, UINT8 ubForeground, UINT8 scale, UINT8 option)
|
||||
{
|
||||
if( option == 1 ) // show after damage counter
|
||||
PrintCounter( x, y, data, widthDamage, ubForeground, gGameExternalOptions.ubShowSuppressionUseAsterisks ? scale : PRINT_SCALE_PLAIN_NUMBER );
|
||||
if( option == 2 ) // show after suppression counter
|
||||
PrintCounter( sX, sY, data, widthSuppression, ubForeground, gGameExternalOptions.ubShowSuppressionUseAsterisks ? scale : PRINT_SCALE_PLAIN_NUMBER );
|
||||
}
|
||||
|
||||
@@ -59,7 +59,10 @@ UINT8 CalcScaleMorale( INT16 data );
|
||||
UINT8 CalcScaleAP( INT16 data );
|
||||
UINT8 CalcScaleShock( INT16 data );
|
||||
|
||||
void DrawCounters( SOLDIERTYPE *pSoldier );
|
||||
|
||||
// print counter as number or asterisks ( applying provided scale when displaying asterisks )
|
||||
// width is updated as X offset after printing
|
||||
void PrintSuppressionCounter( INT16 x, INT16 y, INT16 data, UINT16 &width, UINT8 ubForegound, UINT8 scale = PRINT_SCALE_PLAIN_NUMBER );
|
||||
void PrintCounter( INT16 x, INT16 y, INT16 data, UINT16 &width, UINT8 ubForegound, UINT8 scale = PRINT_SCALE_PLAIN_NUMBER );
|
||||
void PrintSuppressionCounter( INT16 x, INT16 y, INT16 sX, INT16 sY, UINT8 data, UINT16 &widthDamage, UINT16 &widthSuppression, UINT8 ubForeground, UINT8 scale, UINT8 option);
|
||||
#endif
|
||||
@@ -2298,6 +2298,89 @@ void DrawSelectedUIAboveGuy( UINT16 usSoldierID )
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( gGameExternalOptions.fShowEnemyWeapon )
|
||||
{
|
||||
INT16 height = 30;
|
||||
INT32 range;
|
||||
UINT32 maxExactWeaponDistance;
|
||||
BOOLEAN showExactWeaponType = FALSE;
|
||||
|
||||
if( !gGameExternalOptions.fEnemyRank || !gGameExternalOptions.fEnemyNames )
|
||||
height = 10;
|
||||
|
||||
// calc range to target
|
||||
if ( gusSelectedSoldier != NOBODY )
|
||||
{
|
||||
range = GetRangeInCellCoordsFromGridNoDiff( MercPtrs[ gusSelectedSoldier ]->sGridNo, pSoldier->sGridNo ) / 10;
|
||||
|
||||
// calc max range for exact weapon type based on visible distance
|
||||
maxExactWeaponDistance = (UINT32)( MercPtrs[ gusSelectedSoldier ]->GetMaxDistanceVisible( pSoldier->sGridNo, 0, CALC_FROM_WANTED_DIR) ) / 2 ;
|
||||
// apply experience level factor
|
||||
maxExactWeaponDistance *= 1 + (FLOAT(EffectiveExpLevel(MercPtrs[ gusSelectedSoldier ]))/ 10);
|
||||
|
||||
// check for bad weather conditions
|
||||
if ( gGameExternalOptions.gfAllowLimitedVision )
|
||||
maxExactWeaponDistance *= 1 - (FLOAT (gGameExternalOptions.ubVisDistDecreasePerRainIntensity) / 100);
|
||||
|
||||
if ( maxExactWeaponDistance >= range )
|
||||
showExactWeaponType = TRUE;
|
||||
}
|
||||
|
||||
// for testing - show calculated ranges on screen
|
||||
/*
|
||||
swprintf( NameStr, L"range=%d", range );
|
||||
gprintfdirty( sXPos + 100, sYPos + 10, NameStr );
|
||||
mprintf( sXPos + 100, sYPos + 10, NameStr );
|
||||
|
||||
swprintf( NameStr, L"max dist=%d", maxExactWeaponDistance );
|
||||
gprintfdirty( sXPos + 100, sYPos + 20, NameStr );
|
||||
mprintf( sXPos + 100, sYPos + 20, NameStr );
|
||||
*/
|
||||
|
||||
if ( WeaponInHand( pSoldier ) )
|
||||
{
|
||||
SetFont( TINYFONT1 );
|
||||
SetFontBackground( FONT_MCOLOR_BLACK );
|
||||
SetFontForeground( FONT_ORANGE );
|
||||
|
||||
if ( showExactWeaponType )
|
||||
{
|
||||
swprintf( NameStr, L"%s", ItemNames[ pSoldier->inv[ HANDPOS ].usItem ] );
|
||||
}
|
||||
else
|
||||
{
|
||||
// display general weapon class
|
||||
switch( Weapon[pSoldier->inv[ HANDPOS ].usItem].ubWeaponClass )
|
||||
{
|
||||
case HANDGUNCLASS:
|
||||
swprintf( NameStr, L"%s", gzTooltipStrings[STR_TT_HANDGUN] );
|
||||
break;
|
||||
case SMGCLASS:
|
||||
swprintf( NameStr, L"%s", gzTooltipStrings[STR_TT_SMG] );
|
||||
break;
|
||||
case RIFLECLASS:
|
||||
swprintf( NameStr, L"%s", gzTooltipStrings[STR_TT_RIFLE] );
|
||||
break;
|
||||
case MGCLASS:
|
||||
swprintf( NameStr, L"%s", gzTooltipStrings[STR_TT_MG] );
|
||||
break;
|
||||
case SHOTGUNCLASS:
|
||||
swprintf( NameStr, L"%s", gzTooltipStrings[STR_TT_SHOTGUN] );
|
||||
break;
|
||||
case KNIFECLASS:
|
||||
swprintf( NameStr, L"%s", gzTooltipStrings[STR_TT_KNIFE] );
|
||||
break;
|
||||
default:
|
||||
swprintf( NameStr, L"%s", gzTooltipStrings[STR_TT_HEAVY_WEAPON] );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
FindFontCenterCoordinates( sXPos, (INT16)( sYPos + height ), (INT16)(80 ), 1, NameStr, TINYFONT1, &sX, &sY );
|
||||
gprintfdirty( sX, sY, NameStr );
|
||||
mprintf( sX, sY, NameStr );
|
||||
}
|
||||
}
|
||||
}
|
||||
// Flugente: soldier profiles
|
||||
else if ( pSoldier->bTeam == MILITIA_TEAM && gGameExternalOptions.fSoldierProfiles_Militia && pSoldier->usSoldierProfile )
|
||||
|
||||
+42
-14
@@ -8344,6 +8344,9 @@ void HandleSuppressionFire( UINT8 ubTargetedMerc, UINT8 ubCausedAttacker )
|
||||
|
||||
fCower = false;
|
||||
// SANDRO - STOMP traits
|
||||
// sevenfm: moved bShockForCower calculation to CalcEffectiveShockLevel()
|
||||
INT8 bShockForCower = CalcEffectiveShockLevel( pSoldier );
|
||||
/*
|
||||
INT8 bShockForCower = pSoldier->aiData.bShock;
|
||||
if ( gGameOptions.fNewTraitSystem )
|
||||
{
|
||||
@@ -8365,6 +8368,7 @@ void HandleSuppressionFire( UINT8 ubTargetedMerc, UINT8 ubCausedAttacker )
|
||||
// Flugente: personal fear resistance
|
||||
bShockForCower = (INT8)((bShockForCower * (100 - pSoldier->GetFearResistanceBonus()) / 100 ) + 0.5);
|
||||
}
|
||||
*/
|
||||
if (bShockForCower >= bTolerance)
|
||||
{
|
||||
fCower = true;
|
||||
@@ -8604,7 +8608,7 @@ void HandleSuppressionFire( UINT8 ubTargetedMerc, UINT8 ubCausedAttacker )
|
||||
pSoldier->ubLastSuppression = pSoldier->ubSuppressionPoints;
|
||||
pSoldier->ubLastAP = ubPointsLost;
|
||||
|
||||
// add suppression valued from hit to shock valued calculated in this function
|
||||
// add suppression values from hit to shock values calculated in this function
|
||||
pSoldier->ubLastShock += pSoldier->ubLastShockFromHit;
|
||||
pSoldier->ubLastShockFromHit = 0;
|
||||
pSoldier->ubLastAP += pSoldier->ubLastAPFromHit;
|
||||
@@ -8612,19 +8616,17 @@ void HandleSuppressionFire( UINT8 ubTargetedMerc, UINT8 ubCausedAttacker )
|
||||
pSoldier->ubLastMorale += pSoldier->ubLastMoraleFromHit;
|
||||
pSoldier->ubLastMoraleFromHit = 0;
|
||||
|
||||
if( ubPointsLost > 0 )
|
||||
{
|
||||
if( pSoldier->flags.fDisplayDamage )
|
||||
{
|
||||
// prolongate damage show time
|
||||
pSoldier->bDisplayDamageCount = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
// start new damage show counter
|
||||
// determine if any suppression value will be shown
|
||||
BOOLEAN showSuppression = FALSE;
|
||||
if( gGameExternalOptions.ubShowSuppressionCount ||
|
||||
gGameExternalOptions.ubShowShockCount ||
|
||||
gGameExternalOptions.ubShowAPCount ||
|
||||
gGameExternalOptions.ubShowMoraleCount )
|
||||
showSuppression = TRUE;
|
||||
|
||||
// show suppression counters - use original damage counter timer for this
|
||||
if( showSuppression && ubPointsLost > 0 )
|
||||
SetDamageDisplayCounter( pSoldier );
|
||||
}
|
||||
}
|
||||
|
||||
// HEADROCK HAM 3.5: After sufficient testing, suppression clearing now works immediately at the end of
|
||||
// the attack. ubAPsLostToSuppression is only cleared at the end of the turn, but no longer plays a role
|
||||
@@ -10575,4 +10577,30 @@ void KillOnePrisoner( SECTORINFO *pSectorInfo )
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
INT8 CalcEffectiveShockLevel( SOLDIERTYPE * pSoldier )
|
||||
{
|
||||
INT8 bShockForCower = pSoldier->aiData.bShock;
|
||||
if ( gGameOptions.fNewTraitSystem )
|
||||
{
|
||||
// Squadleader's resistance to cowering
|
||||
if ( HAS_SKILL_TRAIT( pSoldier, SQUADLEADER_NT ))
|
||||
{
|
||||
bShockForCower = (INT8)((bShockForCower * (100 - gSkillTraitValues.ubSLFearResistance * NUM_SKILL_TRAITS( pSoldier, SQUADLEADER_NT )) /100) + 0.5);
|
||||
}
|
||||
// Check for character traits
|
||||
if ( gMercProfiles[pSoldier->ubProfile].bCharacterTrait == CHAR_TRAIT_INTELLECTUAL )
|
||||
{
|
||||
bShockForCower = (INT8)((bShockForCower * 23 / 20 ) + 0.5); // +15% as shock
|
||||
}
|
||||
else if ( gMercProfiles[pSoldier->ubProfile].bCharacterTrait == CHAR_TRAIT_DAUNTLESS )
|
||||
{
|
||||
bShockForCower = (INT8)((bShockForCower * 17 / 20 ) + 0.5); // -15% as shock
|
||||
}
|
||||
|
||||
// Flugente: personal fear resistance
|
||||
bShockForCower = (INT8)((bShockForCower * (100 - pSoldier->GetFearResistanceBonus()) / 100 ) + 0.5);
|
||||
}
|
||||
return bShockForCower;
|
||||
}
|
||||
|
||||
@@ -385,5 +385,8 @@ void DeleteAllPrisoners( UNDERGROUND_SECTORINFO *pSectorInfo );
|
||||
// used when the player kills a prisoner. We kill of high-value prisoners first, to punish this kind of behaviour
|
||||
void KillOnePrisoner( SECTORINFO *pSectorInfo );
|
||||
|
||||
// sevenfm: calc shock level with modifiers (traits, backgrounds, ...)
|
||||
INT8 CalcEffectiveShockLevel( SOLDIERTYPE * pSoldier );
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -9947,7 +9947,7 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sPo
|
||||
*/
|
||||
// sevenfm: moved code to function
|
||||
SetDamageDisplayCounter(this);
|
||||
// zero suppression valued stored from last attack
|
||||
// zero suppression values stored from last attack
|
||||
this->ubLastShock = 0;
|
||||
this->ubLastSuppression = 0;
|
||||
this->ubLastMorale = 0;
|
||||
@@ -21277,6 +21277,7 @@ void SetDamageDisplayCounter(SOLDIERTYPE* pSoldier)
|
||||
|
||||
if( pSoldier->flags.fDisplayDamage )
|
||||
{
|
||||
pSoldier->bDisplayDamageCount = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -69,6 +69,12 @@ void SoldierTooltip( SOLDIERTYPE* pSoldier )
|
||||
INT16 a1,a2;
|
||||
BOOLEAN fDrawTooltip = FALSE;
|
||||
|
||||
// sevenfm: do not show tooltip if ALT is pressed for adding autofire bullets
|
||||
SOLDIERTYPE *pShooter;
|
||||
GetSoldier( &pShooter, gusSelectedSoldier );
|
||||
if(gfUICtHBar && pShooter && pShooter->bDoAutofire > 1)
|
||||
return;
|
||||
|
||||
if ( gfKeyState[ALT] && pSoldier &&
|
||||
IsPointInScreenRectWithRelative( gusMouseXPos, gusMouseYPos, &aRect, &a1, &a2 ) )
|
||||
{
|
||||
@@ -238,6 +244,14 @@ void SoldierTooltip( SOLDIERTYPE* pSoldier )
|
||||
// changed this to ubLastSuppression - it stores suppression points from last attack
|
||||
if ( gGameExternalOptions.fEnableSoldierTooltipSuppressionPoints )
|
||||
swprintf( pStrInfo, gzTooltipStrings[STR_TT_CAT_SUPPRESION], pStrInfo, pSoldier->ubLastSuppression );
|
||||
// sevenfm: show additional suppression info
|
||||
if ( gGameExternalOptions.fEnableSoldierTooltipSuppressionInfo )
|
||||
{
|
||||
swprintf( pStrInfo, gzTooltipStrings[STR_TT_SUPPRESSION_AP], pStrInfo, pSoldier->ubAPsLostToSuppression );
|
||||
swprintf( pStrInfo, gzTooltipStrings[STR_TT_SUPPRESSION_TOLERANCE], pStrInfo, CalcSuppressionTolerance( pSoldier ) );
|
||||
swprintf( pStrInfo, gzTooltipStrings[STR_TT_EFFECTIVE_SHOCK], pStrInfo, CalcEffectiveShockLevel( pSoldier ) );
|
||||
swprintf( pStrInfo, gzTooltipStrings[STR_TT_AI_MORALE], pStrInfo, pSoldier->aiData.bAIMorale );
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Added by SANDRO - show enemy skills
|
||||
if ( gGameExternalOptions.fEnableSoldierTooltipTraits )
|
||||
|
||||
@@ -608,6 +608,11 @@ enum
|
||||
STR_TT_SKILL_TRAIT_1,
|
||||
STR_TT_SKILL_TRAIT_2,
|
||||
STR_TT_SKILL_TRAIT_3,
|
||||
// Additional suppression effects info - sevenfm
|
||||
STR_TT_SUPPRESSION_AP,
|
||||
STR_TT_SUPPRESSION_TOLERANCE,
|
||||
STR_TT_EFFECTIVE_SHOCK,
|
||||
STR_TT_AI_MORALE,
|
||||
|
||||
TEXT_NUM_STR_TT
|
||||
};
|
||||
|
||||
@@ -6414,6 +6414,11 @@ STR16 gzTooltipStrings[] =
|
||||
L"%s|技能 1: %s\n",
|
||||
L"%s|技能 2: %s\n",
|
||||
L"%s|技能 3: %s\n",
|
||||
// Additional suppression effects - sevenfm // TODO.Translate
|
||||
L"%s|A|Ps lost due to |S|uppression: %d\n",
|
||||
L"%s|Suppression |Tolerance: %d\n",
|
||||
L"%s|Effective |S|hock |Level: %d\n",
|
||||
L"%s|A|I |Morale: %d\n",
|
||||
};
|
||||
|
||||
STR16 New113Message[] =
|
||||
|
||||
@@ -6420,6 +6420,11 @@ STR16 gzTooltipStrings[] =
|
||||
L"%s|Skill 1: %s\n",
|
||||
L"%s|Skill 2: %s\n",
|
||||
L"%s|Skill 3: %s\n",
|
||||
// Additional suppression effects - sevenfm // TODO.Translate
|
||||
L"%s|A|Ps lost due to |S|uppression: %d\n",
|
||||
L"%s|Suppression |Tolerance: %d\n",
|
||||
L"%s|Effective |S|hock |Level: %d\n",
|
||||
L"%s|A|I |Morale: %d\n",
|
||||
};
|
||||
|
||||
STR16 New113Message[] =
|
||||
|
||||
@@ -6412,6 +6412,11 @@ STR16 gzTooltipStrings[] =
|
||||
L"%s|Skill 1: %s\n",
|
||||
L"%s|Skill 2: %s\n",
|
||||
L"%s|Skill 3: %s\n",
|
||||
// Additional suppression effects - sevenfm
|
||||
L"%s|A|Ps lost due to |S|uppression: %d\n",
|
||||
L"%s|Suppression |Tolerance: %d\n",
|
||||
L"%s|Effective |S|hock |Level: %d\n",
|
||||
L"%s|A|I |Morale: %d\n",
|
||||
};
|
||||
|
||||
STR16 New113Message[] =
|
||||
|
||||
@@ -6415,6 +6415,11 @@ STR16 gzTooltipStrings[] =
|
||||
L"%s|Compétence 1 : %s\n",
|
||||
L"%s|Compétence 2 : %s\n",
|
||||
L"%s|Compétence 3 : %s\n",
|
||||
// Additional suppression effects - sevenfm // TODO.Translate
|
||||
L"%s|A|Ps lost due to |S|uppression: %d\n",
|
||||
L"%s|Suppression |Tolerance: %d\n",
|
||||
L"%s|Effective |S|hock |Level: %d\n",
|
||||
L"%s|A|I |Morale: %d\n",
|
||||
};
|
||||
|
||||
STR16 New113Message[] =
|
||||
|
||||
@@ -6240,6 +6240,11 @@ STR16 gzTooltipStrings[] =
|
||||
L"%s|Fertigkeit 1: %s\n",
|
||||
L"%s|Fertigkeit 2: %s\n",
|
||||
L"%s|Fertigkeit 3: %s\n",
|
||||
// Additional suppression effects - sevenfm // TODO.Translate
|
||||
L"%s|A|Ps lost due to |S|uppression: %d\n",
|
||||
L"%s|Suppression |Tolerance: %d\n",
|
||||
L"%s|Effective |S|hock |Level: %d\n",
|
||||
L"%s|A|I |Morale: %d\n",
|
||||
};
|
||||
|
||||
STR16 New113Message[] =
|
||||
|
||||
@@ -6406,6 +6406,11 @@ STR16 gzTooltipStrings[] =
|
||||
L"%s|Skill 1: %s\n",
|
||||
L"%s|Skill 2: %s\n",
|
||||
L"%s|Skill 3: %s\n",
|
||||
// Additional suppression effects - sevenfm // TODO.Translate
|
||||
L"%s|A|Ps lost due to |S|uppression: %d\n",
|
||||
L"%s|Suppression |Tolerance: %d\n",
|
||||
L"%s|Effective |S|hock |Level: %d\n",
|
||||
L"%s|A|I |Morale: %d\n",
|
||||
};
|
||||
|
||||
STR16 New113Message[] =
|
||||
|
||||
@@ -6426,6 +6426,11 @@ STR16 gzTooltipStrings[] =
|
||||
L"%s|Umiejętność 1: %s\n",
|
||||
L"%s|Umiejętność 2: %s\n",
|
||||
L"%s|Umiejętność 3: %s\n",
|
||||
// Additional suppression effects - sevenfm // TODO.Translate
|
||||
L"%s|A|Ps lost due to |S|uppression: %d\n",
|
||||
L"%s|Suppression |Tolerance: %d\n",
|
||||
L"%s|Effective |S|hock |Level: %d\n",
|
||||
L"%s|A|I |Morale: %d\n",
|
||||
};
|
||||
|
||||
STR16 New113Message[] =
|
||||
|
||||
@@ -6413,6 +6413,11 @@ STR16 gzTooltipStrings[] =
|
||||
L"%s|Навык 1: %s\n", //%s|Skill 1: %s\n
|
||||
L"%s|Навык 2: %s\n",
|
||||
L"%s|Навык 3: %s\n",
|
||||
// Additional suppression effects - sevenfm // TODO.Translate
|
||||
L"%s|A|Ps lost due to |S|uppression: %d\n",
|
||||
L"%s|Suppression |Tolerance: %d\n",
|
||||
L"%s|Effective |S|hock |Level: %d\n",
|
||||
L"%s|A|I |Morale: %d\n",
|
||||
};
|
||||
|
||||
STR16 New113Message[] =
|
||||
|
||||
@@ -6422,6 +6422,11 @@ STR16 gzTooltipStrings[] =
|
||||
L"%s|Skill 1: %s\n",
|
||||
L"%s|Skill 2: %s\n",
|
||||
L"%s|Skill 3: %s\n",
|
||||
// Additional suppression effects - sevenfm // TODO.Translate
|
||||
L"%s|A|Ps lost due to |S|uppression: %d\n",
|
||||
L"%s|Suppression |Tolerance: %d\n",
|
||||
L"%s|Effective |S|hock |Level: %d\n",
|
||||
L"%s|A|I |Morale: %d\n",
|
||||
};
|
||||
|
||||
STR16 New113Message[] =
|
||||
|
||||
Reference in New Issue
Block a user