- Improved compatibility with different russian JA2 distribs' resources

- International/russian *.npc file format unified, performed conversion on-the-fly
- New 1.13 messages' text moved to Text.h/_*Text.cpp
- Russian translation fixed/refined

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@1610 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
bugmonster
2007-11-12 18:40:15 +00:00
parent ed5fb7dec8
commit 574b8e3218
18 changed files with 1983 additions and 1721 deletions
+19 -8
View File
@@ -1728,19 +1728,20 @@ CHAR8 *GetDialogueDataFilename( UINT8 ubCharacterNum, UINT16 usQuoteNum, BOOLEAN
{ {
// Lesh: patch to allow playback ogg speech files // Lesh: patch to allow playback ogg speech files
// build name of wav file (characternum + quotenum) // build name of wav file (characternum + quotenum)
#ifdef RUSSIAN //SB: curiously, there are no g_%03d_%03d audio files in all russian versions
sprintf( zFileName,"NPC_SPEECH\\g_%03d_%03d.ogg",ubCharacterNum,usQuoteNum ); // #ifdef RUSSIAN
if ( !FileExists( zFileName ) ) // sprintf( zFileName,"NPC_SPEECH\\g_%03d_%03d.ogg",ubCharacterNum,usQuoteNum );
{ // if ( !FileExists( zFileName ) )
sprintf( zFileName,"NPC_SPEECH\\g_%03d_%03d.wav",ubCharacterNum,usQuoteNum ); // {
} // sprintf( zFileName,"NPC_SPEECH\\g_%03d_%03d.wav",ubCharacterNum,usQuoteNum );
#else // }
// #else
sprintf( zFileName,"NPC_SPEECH\\d_%03d_%03d.ogg",ubCharacterNum,usQuoteNum ); sprintf( zFileName,"NPC_SPEECH\\d_%03d_%03d.ogg",ubCharacterNum,usQuoteNum );
if ( !FileExists( zFileName ) ) if ( !FileExists( zFileName ) )
{ {
sprintf( zFileName,"NPC_SPEECH\\d_%03d_%03d.wav",ubCharacterNum,usQuoteNum ); sprintf( zFileName,"NPC_SPEECH\\d_%03d_%03d.wav",ubCharacterNum,usQuoteNum );
} }
#endif // #endif
} }
else else
{ {
@@ -1795,6 +1796,16 @@ CHAR8 *GetDialogueDataFilename( UINT8 ubCharacterNum, UINT16 usQuoteNum, BOOLEAN
if ( !FileExists( zFileName ) ) if ( !FileExists( zFileName ) )
{ {
sprintf( zFileName,"SPEECH\\r_%03d_%03d.wav",ubCharacterNum,usQuoteNum ); sprintf( zFileName,"SPEECH\\r_%03d_%03d.wav",ubCharacterNum,usQuoteNum );
//<SB> Also check for Russian Gold sound files (identical to international ones)
if(! FileExists( zFileName ) )
{
sprintf( zFileName,"SPEECH\\%03d_%03d.ogg",ubCharacterNum,usQuoteNum );
if ( !FileExists( zFileName ) )
{
sprintf( zFileName,"SPEECH\\%03d_%03d.wav",ubCharacterNum,usQuoteNum );
}
}
//</SB>
} }
} }
else else
+5 -5
View File
@@ -2199,27 +2199,27 @@ void INVRenderItem( UINT32 uiBuffer, SOLDIERTYPE * pSoldier, OBJECTTYPE *pObjec
sNewY = sY + 13; // rather arbitrary sNewY = sY + 13; // rather arbitrary
if ( pSoldier->bWeaponMode == WM_BURST ) if ( pSoldier->bWeaponMode == WM_BURST )
{ {
swprintf( pStr, L"BRST" ); swprintf( pStr, New113Message[MSG113_BRST] );
SetFontForeground( FONT_RED ); SetFontForeground( FONT_RED );
} }
else if(pSoldier->bWeaponMode == WM_AUTOFIRE) else if(pSoldier->bWeaponMode == WM_AUTOFIRE)
{ {
swprintf( pStr, L"AUTO" ); swprintf( pStr, New113Message[MSG113_AUTO] );
SetFontForeground( FONT_RED ); SetFontForeground( FONT_RED );
} }
else if(pSoldier->bWeaponMode == WM_ATTACHED_GL) else if(pSoldier->bWeaponMode == WM_ATTACHED_GL)
{ {
swprintf( pStr, L"GL" ); swprintf( pStr, New113Message[MSG113_GL] );
SetFontForeground( FONT_YELLOW ); SetFontForeground( FONT_YELLOW );
} }
else if(pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST) else if(pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST)
{ {
swprintf( pStr, L"GL BRST" ); swprintf( pStr, New113Message[MSG113_GL_BRST] );
SetFontForeground( FONT_YELLOW ); SetFontForeground( FONT_YELLOW );
} }
else if(pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO) else if(pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO)
{ {
swprintf( pStr, L"GL AUTO" ); swprintf( pStr, New113Message[MSG113_GL_AUTO] );
SetFontForeground( FONT_YELLOW ); SetFontForeground( FONT_YELLOW );
} }
+4 -2
View File
@@ -34,6 +34,8 @@
#include "Dialogue Control.h" #include "Dialogue Control.h"
#endif #endif
#include "Text.h"
extern BOOLEAN gfHiddenInterrupt; extern BOOLEAN gfHiddenInterrupt;
extern BOOLEAN gfUseAlternateQueenPosition; extern BOOLEAN gfUseAlternateQueenPosition;
@@ -2334,7 +2336,7 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier, UINT8 ubUnconsciousOK)
pSoldier->bAimTime = 0; pSoldier->bAimTime = 0;
pSoldier->bDoBurst = 1; pSoldier->bDoBurst = 1;
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Suppression Fire!" ); ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, New113Message[ MSG113_SUPPRESSIONFIRE ] );
Menptr[BestShot.ubOpponent].ubSuppressionPoints += pSoldier->bDoAutofire; Menptr[BestShot.ubOpponent].ubSuppressionPoints += pSoldier->bDoAutofire;
Menptr[BestShot.ubOpponent].ubSuppressorID = pSoldier->ubID; Menptr[BestShot.ubOpponent].ubSuppressorID = pSoldier->ubID;
return( AI_ACTION_FIRE_GUN ); return( AI_ACTION_FIRE_GUN );
@@ -4976,7 +4978,7 @@ INT8 DecideAction(SOLDIERTYPE *pSoldier)
{ {
if ( !sniperwarning && pSoldier->bOrders == SNIPER ) if ( !sniperwarning && pSoldier->bOrders == SNIPER )
{ {
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Watch out for snipers..." ); ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, New113Message[MSG113_WATHCHOUTFORSNIPERS] );
sniperwarning = TRUE; sniperwarning = TRUE;
} }
+10 -1
View File
@@ -176,7 +176,16 @@ NPCQuoteInfo * LoadQuoteFile( UINT8 ubNPC )
} }
FileClose( hFile ); FileClose( hFile );
//<SB> check for Russian script & make a runtime conversion of it to International :D
// just offset ptr 4 bytes backward
if( *(DWORD*)pFileData == 0x00350039 )
{
NPCQuoteInfo * pEnglishScript = (NPCQuoteInfo *) MemAlloc( uiFileSize );
memcpy( pEnglishScript, ((char*)pFileData)+4, uiFileSize-4 );
MemFree( pFileData );
return( pEnglishScript );
}
//</SB>
return( pFileData ); return( pFileData );
} }
+7 -6
View File
@@ -35,10 +35,10 @@
typedef struct typedef struct
{ {
//SB: unify structure for all versions
#if defined( CRIPPLED_VERSION ) || defined( RUSSIAN ) // #if defined( CRIPPLED_VERSION ) || defined( RUSSIAN )
UINT8 ubIdentifier[4]; // UINT8 ubIdentifier[4];
#endif // #endif
UINT16 fFlags; UINT16 fFlags;
@@ -71,9 +71,10 @@ typedef struct
UINT16 usGoToGridno; UINT16 usGoToGridno;
INT16 sActionData; // special action value INT16 sActionData; // special action value
#if !defined( CRIPPLED_VERSION ) && !defined( RUSSIAN ) //SB: unify structure for all versions
//#if !defined( CRIPPLED_VERSION ) && !defined( RUSSIAN )
UINT8 ubUnused[4]; UINT8 ubUnused[4];
#endif //#endif
} NPCQuoteInfo; // 32 bytes } NPCQuoteInfo; // 32 bytes
+6 -4
View File
@@ -26,6 +26,8 @@
#include "GameSettings.h" #include "GameSettings.h"
#endif #endif
#include "Text.h"
//effects whether or not time of day effects the lighting. Underground //effects whether or not time of day effects the lighting. Underground
//maps have an ambient light level that is saved in the map, and doesn't change. //maps have an ambient light level that is saved in the map, and doesn't change.
BOOLEAN gfBasement = FALSE; BOOLEAN gfBasement = FALSE;
@@ -708,12 +710,12 @@ void EnvBeginRainStorm( UINT8 ubIntensity )
{ {
// Turn on rain storms // Turn on rain storms
guiEnvWeather |= WEATHER_FORECAST_THUNDERSHOWERS; guiEnvWeather |= WEATHER_FORECAST_THUNDERSHOWERS;
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Storm started." ); ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, New113Message[MSG113_STORM_STARTED] );
} }
else else
{ {
guiEnvWeather |= WEATHER_FORECAST_SHOWERS; guiEnvWeather |= WEATHER_FORECAST_SHOWERS;
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Rain started." ); ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, New113Message[MSG113_RAIN_STARTED] );
} }
} }
@@ -729,11 +731,11 @@ void EnvEndRainStorm( )
if ( guiEnvWeather & WEATHER_FORECAST_THUNDERSHOWERS ) if ( guiEnvWeather & WEATHER_FORECAST_THUNDERSHOWERS )
{ {
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Storm ended." ); ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, New113Message[MSG113_STORM_ENDED] );
} }
else else
{ {
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Rain ended." ); ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, New113Message[MSG113_RAIN_ENDED] );
} }
+145 -33
View File
@@ -9,6 +9,8 @@
#endif #endif
#include "Language Defines.h" #include "Language Defines.h"
//SB
#include "FileMan.h"
BOOLEAN GetMLGFilename( SGPFILENAME filename, UINT16 usMLGGraphicID ) BOOLEAN GetMLGFilename( SGPFILENAME filename, UINT16 usMLGGraphicID )
{ {
@@ -260,108 +262,218 @@ BOOLEAN GetMLGFilename( SGPFILENAME filename, UINT16 usMLGGraphicID )
sprintf( zLanguage, "TAIWANESE" ); sprintf( zLanguage, "TAIWANESE" );
#endif #endif
//SB: Also check for russian Gold version, like English
switch( usMLGGraphicID ) switch( usMLGGraphicID )
{ {
case MLG_AIMSYMBOL: case MLG_AIMSYMBOL:
sprintf( filename, "%s\\AimSymbol_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\AimSymbol_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_BOBBYNAME: case MLG_BOBBYNAME:
sprintf( filename, "%s\\BobbyName_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\BobbyName_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_BOBBYRAYAD21: case MLG_BOBBYRAYAD21:
sprintf( filename, "%s\\BobbyRayAd_21_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\BobbyRayAd_21_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_BOBBYRAYLINK: case MLG_BOBBYRAYLINK:
sprintf( filename, "%s\\BobbyRayLink_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\BobbyRayLink_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_CLOSED: case MLG_CLOSED:
sprintf( filename, "%s\\Closed_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\Closed_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_CONFIRMORDER: case MLG_CONFIRMORDER:
sprintf( filename, "%s\\ConfirmOrder_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\ConfirmOrder_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_DESKTOP: case MLG_DESKTOP:
sprintf( filename, "%s\\desktop_%s.pcx", zLanguage, zLanguage ); sprintf( filename, "%s\\desktop_%s.pcx", zLanguage, zLanguage );
return TRUE; break;
case MLG_FUNERALAD9: case MLG_FUNERALAD9:
sprintf( filename, "%s\\FuneralAd_9_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\FuneralAd_9_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_GOLDPIECEBUTTONS: case MLG_GOLDPIECEBUTTONS:
sprintf( filename, "%s\\goldpiecebuttons_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\goldpiecebuttons_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_HISTORY: case MLG_HISTORY:
sprintf( filename, "%s\\history_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\history_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_INSURANCEAD10: case MLG_INSURANCEAD10:
sprintf( filename, "%s\\insurancead_10_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\insurancead_10_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_INSURANCELINK: case MLG_INSURANCELINK:
sprintf( filename, "%s\\insurancelink_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\insurancelink_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_INSURANCETITLE: case MLG_INSURANCETITLE:
sprintf( filename, "%s\\largetitle_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\largetitle_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_LARGEFLORISTSYMBOL: case MLG_LARGEFLORISTSYMBOL:
sprintf( filename, "%s\\LargeSymbol_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\LargeSymbol_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_ORDERGRID: case MLG_ORDERGRID:
sprintf( filename, "%s\\OrderGrid_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\OrderGrid_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_SMALLFLORISTSYMBOL: case MLG_SMALLFLORISTSYMBOL:
sprintf( filename, "%s\\SmallSymbol_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\SmallSymbol_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_STATSBOX: case MLG_STATSBOX:
sprintf( filename, "%s\\StatsBox_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\StatsBox_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_MCGILLICUTTYS: case MLG_MCGILLICUTTYS:
sprintf( filename, "%s\\McGillicuttys_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\McGillicuttys_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_MORTUARY: case MLG_MORTUARY:
sprintf( filename, "%s\\Mortuary_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\Mortuary_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_MORTUARYLINK: case MLG_MORTUARYLINK:
sprintf( filename, "%s\\MortuaryLink_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\MortuaryLink_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_PREBATTLEPANEL: case MLG_PREBATTLEPANEL:
sprintf( filename, "%s\\PreBattlePanel_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\PreBattlePanel_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_SMALLTITLE: case MLG_SMALLTITLE:
sprintf( filename, "%s\\SmallTitle_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\SmallTitle_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_STOREPLAQUE: case MLG_STOREPLAQUE:
sprintf( filename, "%s\\StorePlaque_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\StorePlaque_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_TITLETEXT: case MLG_TITLETEXT:
sprintf( filename, "%s\\titletext_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\titletext_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_TOALUMNI: case MLG_TOALUMNI:
sprintf( filename, "%s\\ToAlumni_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\ToAlumni_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_TOMUGSHOTS: case MLG_TOMUGSHOTS:
sprintf( filename, "%s\\ToMugShots_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\ToMugShots_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_TOSTATS: case MLG_TOSTATS:
sprintf( filename, "%s\\ToStats_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\ToStats_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_WARNING: case MLG_WARNING:
sprintf( filename, "%s\\Warning_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\Warning_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_YOURAD13: case MLG_YOURAD13:
sprintf( filename, "%s\\YourAd_13_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\YourAd_13_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_OPTIONHEADER: case MLG_OPTIONHEADER:
sprintf( filename, "%s\\optionscreenaddons_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\optionscreenaddons_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_LOADSAVEHEADER: case MLG_LOADSAVEHEADER:
sprintf( filename, "%s\\loadscreenaddons_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\loadscreenaddons_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_SPLASH: case MLG_SPLASH:
sprintf( filename, "%s\\splash_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\splash_%s.sti", zLanguage, zLanguage );
return TRUE; break;
case MLG_IMPSYMBOL: case MLG_IMPSYMBOL:
sprintf( filename, "%s\\IMPSymbol_%s.sti", zLanguage, zLanguage ); sprintf( filename, "%s\\IMPSymbol_%s.sti", zLanguage, zLanguage );
return TRUE; break;
default:
return FALSE;
} }
if(FileExists( filename ))
return TRUE;
switch( usMLGGraphicID )
{
case MLG_AIMSYMBOL:
sprintf( filename, "LAPTOP\\AimSymbol.sti" );
return TRUE;
case MLG_BOBBYNAME:
sprintf( filename, "LAPTOP\\BobbyName.sti" );
return TRUE;
case MLG_BOBBYRAYAD21:
sprintf( filename, "LAPTOP\\BobbyRayAd_21.sti" );
return TRUE;
case MLG_BOBBYRAYLINK:
sprintf( filename, "LAPTOP\\BobbyRayLink.sti" );
return TRUE;
case MLG_CLOSED:
sprintf( filename, "LAPTOP\\Closed.sti" );
return TRUE;
case MLG_CONFIRMORDER:
sprintf( filename, "LAPTOP\\ConfirmOrder.sti" );
return TRUE;
case MLG_DESKTOP:
sprintf( filename, "LAPTOP\\desktop.pcx" );
return TRUE;
case MLG_FUNERALAD9:
sprintf( filename, "LAPTOP\\FuneralAd_9.sti" );
return TRUE;
case MLG_GOLDPIECEBUTTONS:
sprintf( filename, "INTERFACE\\goldpiecebuttons.sti" );
return TRUE;
case MLG_HISTORY:
sprintf( filename, "LAPTOP\\history.sti" );
return TRUE;
case MLG_INSURANCEAD10:
sprintf( filename, "LAPTOP\\insurancead_10.sti" );
return TRUE;
case MLG_INSURANCELINK:
sprintf( filename, "LAPTOP\\insurancelink.sti" );
return TRUE;
case MLG_INSURANCETITLE:
sprintf( filename, "LAPTOP\\largetitle.sti" );
return TRUE;
case MLG_LARGEFLORISTSYMBOL:
sprintf( filename, "LAPTOP\\LargeSymbol.sti" );
return TRUE;
case MLG_SMALLFLORISTSYMBOL:
sprintf( filename, "LAPTOP\\SmallSymbol.sti" );
return TRUE;
case MLG_MCGILLICUTTYS:
sprintf( filename, "LAPTOP\\McGillicuttys.sti" );
return TRUE;
case MLG_MORTUARY:
sprintf( filename, "LAPTOP\\Mortuary.sti" );
return TRUE;
case MLG_MORTUARYLINK:
sprintf( filename, "LAPTOP\\MortuaryLink.sti" );
return TRUE;
case MLG_ORDERGRID:
sprintf( filename, "LAPTOP\\OrderGrid.sti" );
return TRUE;
case MLG_PREBATTLEPANEL:
sprintf( filename, "INTERFACE\\PreBattlePanel.sti" );
return TRUE;
case MLG_SMALLTITLE:
sprintf( filename, "LAPTOP\\SmallTitle.sti" );
return TRUE;
case MLG_STATSBOX:
sprintf( filename, "LAPTOP\\StatsBox.sti" );
return TRUE;
case MLG_STOREPLAQUE:
sprintf( filename, "LAPTOP\\BobbyStorePlaque.sti" );
return TRUE;
case MLG_TITLETEXT:
sprintf( filename, "LOADSCREENS\\titletext.sti" );
return TRUE;
case MLG_TOALUMNI:
sprintf( filename, "LAPTOP\\ToAlumni.sti" );
return TRUE;
case MLG_TOMUGSHOTS:
sprintf( filename, "LAPTOP\\ToMugShots.sti" );
return TRUE;
case MLG_TOSTATS:
sprintf( filename, "LAPTOP\\ToStats.sti" );
return TRUE;
case MLG_WARNING:
sprintf( filename, "LAPTOP\\Warning.sti" );
return TRUE;
case MLG_YOURAD13:
sprintf( filename, "LAPTOP\\YourAd_13.sti" );
return TRUE;
case MLG_OPTIONHEADER:
sprintf( filename, "INTERFACE\\optionscreenaddons.sti" );
return TRUE;
case MLG_LOADSAVEHEADER:
sprintf( filename, "INTERFACE\\loadscreenaddons.sti" );
return TRUE;
case MLG_SPLASH:
sprintf( filename, "INTERFACE\\splash.sti" );
return TRUE;
case MLG_IMPSYMBOL:
sprintf( filename, "LAPTOP\\IMPSymbol.sti" );
return TRUE;
}
#endif #endif
return FALSE; return FALSE;
+16 -2
View File
@@ -1524,8 +1524,22 @@ extern STR16 GetWeightUnitString( void );
FLOAT GetWeightBasedOnMetricOption( UINT32 uiObjectWeight ); FLOAT GetWeightBasedOnMetricOption( UINT32 uiObjectWeight );
//SB: new 1.13 messages
extern STR16 New113Message[];
enum
{
MSG113_STORM_STARTED,
MSG113_STORM_ENDED,
MSG113_RAIN_STARTED,
MSG113_RAIN_ENDED,
MSG113_WATHCHOUTFORSNIPERS,
MSG113_SUPPRESSIONFIRE,
MSG113_BRST,
MSG113_AUTO,
MSG113_GL,
MSG113_GL_BRST,
MSG113_GL_AUTO,
};
#endif #endif
+8 -1
View File
@@ -4207,6 +4207,13 @@ STR16 gzTooltipStrings[] =
L"|Armor: %s\n", L"|Armor: %s\n",
}; };
STR16 New113Message[] =
{
L"Storm started.",
L"Storm ended.",
L"Rain started.",
L"Rain ended.",
L"Watch out for snipers...",
};
#endif //DUTCH #endif //DUTCH
+14
View File
@@ -4202,5 +4202,19 @@ STR16 gzTooltipStrings[] =
L"|Armor: %s\n", L"|Armor: %s\n",
}; };
STR16 New113Message[] =
{
L"Storm started.",
L"Storm ended.",
L"Rain started.",
L"Rain ended.",
L"Watch out for snipers...",
L"Suppression fire!",
L"BRST",
L"AUTO",
L"GL",
L"GL BRST",
L"GL AUTO",
};
#endif //ENGLISH #endif //ENGLISH
+15
View File
@@ -4189,4 +4189,19 @@ STR16 gzTooltipStrings[] =
L"|Armor: %s\n", L"|Armor: %s\n",
}; };
STR16 New113Message[] =
{
L"Storm started.",
L"Storm ended.",
L"Rain started.",
L"Rain ended.",
L"Watch out for snipers...",
L"Suppression fire!",
L"BRST",
L"AUTO",
L"GL",
L"GL BRST",
L"GL AUTO",
};
#endif //FRENCH #endif //FRENCH
+15
View File
@@ -3994,4 +3994,19 @@ STR16 gzTooltipStrings[] =
L"|Rüstung: %s\n", L"|Rüstung: %s\n",
}; };
STR16 New113Message[] =
{
L"Storm started.",
L"Storm ended.",
L"Rain started.",
L"Rain ended.",
L"Watch out for snipers...",
L"Suppression fire!",
L"BRST",
L"AUTO",
L"GL",
L"GL BRST",
L"GL AUTO",
};
#endif //GERMAN #endif //GERMAN
+14 -1
View File
@@ -4186,6 +4186,19 @@ STR16 gzTooltipStrings[] =
L"|Armor: %s\n", L"|Armor: %s\n",
}; };
STR16 New113Message[] =
{
L"Storm started.",
L"Storm ended.",
L"Rain started.",
L"Rain ended.",
L"Watch out for snipers...",
L"Suppression fire!",
L"BRST",
L"AUTO",
L"GL",
L"GL BRST",
L"GL AUTO",
};
#endif //ITALIAN #endif //ITALIAN
+41 -40
View File
@@ -13,56 +13,57 @@
STR16 zNewTacticalMessages[]= STR16 zNewTacticalMessages[]=
{ {
L"Range to target: %d tiles, Brightness: %d/%d", L"Расстояние до цели: %d ед.",
L"Attaching the transmitter to your laptop computer.", L"Передатчик подключен к вашему ноутбуку.",
L"You cannot afford to hire %s", L"Вы не можете нанять %s",
L"For a limited time, the above fee covers the cost of the entire mission and includes the equipment listed below.", L"Предложение действует ограниченное время и покрывает стоимость найма на всю миссию, плюс вы так же получите оборудование, перечисленное ниже.",
L"Hire %s now and take advantage of our unprecedented 'one fee covers all' pricing. Also included in this unbelievable offer is the mercenary's personal equipment at no charge.", L"Наемник %s - наше невероятное суперпредложение 'одна плата за все'. Вы также бесплатно получите его персональную экипировку.",
L"Fee", L"Гонорар",
L"There is someone else in the sector...", L"В секторе кто-то есть...",
L"Gun Range: %d tiles, Chance to hit: %d percent", L"Дальнобойность: %d ед, расстояние до цели: %d ед",
L"Display Cover", L"Показать укрытия",
L"Line of Sight", L"Линия прицела",
L"New Recruits cannot arrive there.", L"Новые наемники не могут высадится здесь.",
L"Since your laptop has no transmitter, you won't be able to hire new team members. Perhaps this would be a good time to load a saved game or start over!", L"Так как ваш ноутбук лишился антенны, то вы не сможете нанять новых наемников. Возможно, сейчас вам стоит загрузить одну из сохраненных игр, или начать игру заново!",
L"%s hears the sound of crumpling metal coming from underneath Jerry's body. It sounds disturbingly like your laptop antenna being crushed.", //the %s is the name of a merc. @@@ Modified L"%s слышит металлический хруст под телом Джерри. Похоже этот чмо сломал антенну вашего ноутбука.", //the %s is the name of a merc. @@@ Modified
L"After scanning the note left behind by Deputy Commander Morris, %s senses an oppurtinity. The note contains the coordinates for launching missiles against different towns in Arulco. It also gives the coodinates of the origin - the missile facility.", L"После прочтения записей, оставленных помощником командира Морриса, %s видит, что не все еще потеряно. В записке содержатся координаты городов Арулько для запуска по ним ракет. Кроме того, там также указаны координаты самой ракетной базы.",
L"Noticing the control panel, %s figures the numbers can be reveresed, so that the missile might destroy this very facility. %s needs to find an escape route. The elevator appears to offer the fastest solution...", L"Изучив панель управления, %s понимает что координаты цели можно измененить, и тогда ракета уничтожит эту базу. %s не собирается умирать, а значит нужно быстрее отсюда выбираться. Похоже что самый быстрый способ это лифт...",
L"This is an IRON MAN game and you cannot save when enemies are around.", // @@@ new text L"В начале игры вы выбрали режим \"Стальная воля\" и теперь не можете записываться во время боя.", // @@@ new text
L"(Cannot save during combat)", //@@@@ new text L"(Нельзя сохраняться во время боя)", //@@@@ new text
L"The current campaign name is greater than 30 characters.", // @@@ new text L"Текущая кампания длиннее 30 символов.", // @@@ new text
L"The current campaign cannot be found.", // @@@ new text L"Текущая кампания не найдена.", // @@@ new text
L"Campaign: Default ( %S )", // @@@ new text L"Кампания: По умолчанию ( %S )", // @@@ new text
L"Campaign: %S", // @@@ new text L"Кампания: %S", // @@@ new text
L"You have selected the campaign %S. This campaign is a player-modified version of the original Unfinished Business campaign. Are you sure you wish to play the %S campaign?", // @@@ new text L"Вы выбрали кампанию %S. Эта кампания является модификацией оригинальной кампании Unfinished Business. Вы уверены, что хотите играть кампанию %S?", // @@@ new text
L"In order to use the editor, please select a campaign other than the default.", ///@@new L"Чтобы воспользоваться редактором, смените кампанию по умолчанию на другую.", ///@@new
}; };
//these strings match up with the defines in IMP Skill trait.cpp //these strings match up with the defines in IMP Skill trait.cpp
STR16 gzIMPSkillTraitsText[]= STR16 gzIMPSkillTraitsText[]=
{ {
L"Lock picking", L"Взлом замков",
L"Hand to hand combat", L"Рукопашный бой",
L"Electronics", L"Электроника",
L"Night operations", L"Ночные операции",
L"Throwing", L"Метание",
L"Teaching", L"Инструктор",
L"Heavy Weapons", L"Тяжелое оружие",
L"Auto Weapons", L"Авт. оружие",
L"Stealth", L"Скрытность",
L"Ambidextrous", L"Стрельба с двух рук",
L"Knifing", L"Холодное оружие",
L"Rooftop Sniping", L"Стрельба с крыш",
L"Camouflage", L"Камуфляж",
L"Martial Arts", L"Боевые искуства",
L"None", L"Нет",
L"I.M.P. Specialties", L"Специализация I.M.P.",
}; };
//@@@: New string as of March 3, 2000. //@@@: New string as of March 3, 2000.
STR16 gzIronManModeWarningText[]= STR16 gzIronManModeWarningText[]=
{ {
L"You have chosen IRON MAN mode. This setting makes the game considerably more challenging as you will not be able to save your game when in a sector occupied by enemies. This setting will affect the entire course of the game. Are you sure want to play in IRON MAN mode?", L"Вы выбрали режим \"Стальная воля\". Проходить игру станет гораздо сложнее, так как вы не сможете сохранять игру, когда ваши наемники будут находиться в одном секторе с противником. Во время игры этот режим нельзя будет отключить. Вы уверены, что желаете играть в режиме \"Стальная воля\"?",
}; };
+14
View File
@@ -4178,5 +4178,19 @@ STR16 gzTooltipStrings[] =
L"|Armor: %s\n", L"|Armor: %s\n",
}; };
STR16 New113Message[] =
{
L"Storm started.",
L"Storm ended.",
L"Rain started.",
L"Rain ended.",
L"Watch out for snipers...",
L"Suppression fire!",
L"BRST",
L"AUTO",
L"GL",
L"GL BRST",
L"GL AUTO",
};
#endif //POLISH #endif //POLISH
+1628 -1614
View File
File diff suppressed because it is too large Load Diff
+14 -2
View File
@@ -3958,7 +3958,19 @@ STR16 gzLateLocalizedString[] =
}; };
STR16 New113Message[] =
{
L"Storm started.",
L"Storm ended.",
L"Rain started.",
L"Rain ended.",
L"Watch out for snipers...",
L"Suppression fire!",
L"BRST",
L"AUTO",
L"GL",
L"GL BRST",
L"GL AUTO",
};
#endif //TAIWANESE #endif //TAIWANESE
+8 -2
View File
@@ -376,9 +376,11 @@ UINT32 InitScreenHandle(void)
strcpy( vs_desc.ImageFile, "ja2_logo.STI" ); strcpy( vs_desc.ImageFile, "ja2_logo.STI" );
hVSurface = CreateVideoSurface( &vs_desc ); hVSurface = CreateVideoSurface( &vs_desc );
//SB: JA2 Gold Rus doesn't contain such file!
#ifndef RUSSIAN
if( !hVSurface ) if( !hVSurface )
AssertMsg( 0, "Failed to load ja2_logo.sti!" ); AssertMsg( 0, "Failed to load ja2_logo.sti!" );
#endif
//BltVideoSurfaceToVideoSurface( ghFrameBuffer, hVSurface, 0, 0, 0, VS_BLT_FAST, NULL ); //BltVideoSurfaceToVideoSurface( ghFrameBuffer, hVSurface, 0, 0, 0, VS_BLT_FAST, NULL );
ubCurrentScreen = 1; ubCurrentScreen = 1;
@@ -423,7 +425,11 @@ UINT32 InitScreenHandle(void)
InvalidateScreen( ); InvalidateScreen( );
// Delete video Surface // Delete video Surface
DeleteVideoSurface( hVSurface ); //SB: JA2 Gold Rus doesn't contain such file!
#ifdef RUSSIAN
if( hVSurface )
#endif
DeleteVideoSurface( hVSurface );
//ATE: Set to true to reset before going into main screen! //ATE: Set to true to reset before going into main screen!
SetCurrentCursorFromDatabase( VIDEO_NO_CURSOR ); SetCurrentCursorFromDatabase( VIDEO_NO_CURSOR );