- 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
// build name of wav file (characternum + quotenum)
#ifdef RUSSIAN
sprintf( zFileName,"NPC_SPEECH\\g_%03d_%03d.ogg",ubCharacterNum,usQuoteNum );
if ( !FileExists( zFileName ) )
{
sprintf( zFileName,"NPC_SPEECH\\g_%03d_%03d.wav",ubCharacterNum,usQuoteNum );
}
#else
//SB: curiously, there are no g_%03d_%03d audio files in all russian versions
// #ifdef RUSSIAN
// sprintf( zFileName,"NPC_SPEECH\\g_%03d_%03d.ogg",ubCharacterNum,usQuoteNum );
// if ( !FileExists( zFileName ) )
// {
// sprintf( zFileName,"NPC_SPEECH\\g_%03d_%03d.wav",ubCharacterNum,usQuoteNum );
// }
// #else
sprintf( zFileName,"NPC_SPEECH\\d_%03d_%03d.ogg",ubCharacterNum,usQuoteNum );
if ( !FileExists( zFileName ) )
{
sprintf( zFileName,"NPC_SPEECH\\d_%03d_%03d.wav",ubCharacterNum,usQuoteNum );
}
#endif
// #endif
}
else
{
@@ -1795,6 +1796,16 @@ CHAR8 *GetDialogueDataFilename( UINT8 ubCharacterNum, UINT16 usQuoteNum, BOOLEAN
if ( !FileExists( zFileName ) )
{
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
+5 -5
View File
@@ -2199,27 +2199,27 @@ void INVRenderItem( UINT32 uiBuffer, SOLDIERTYPE * pSoldier, OBJECTTYPE *pObjec
sNewY = sY + 13; // rather arbitrary
if ( pSoldier->bWeaponMode == WM_BURST )
{
swprintf( pStr, L"BRST" );
swprintf( pStr, New113Message[MSG113_BRST] );
SetFontForeground( FONT_RED );
}
else if(pSoldier->bWeaponMode == WM_AUTOFIRE)
{
swprintf( pStr, L"AUTO" );
swprintf( pStr, New113Message[MSG113_AUTO] );
SetFontForeground( FONT_RED );
}
else if(pSoldier->bWeaponMode == WM_ATTACHED_GL)
{
swprintf( pStr, L"GL" );
swprintf( pStr, New113Message[MSG113_GL] );
SetFontForeground( FONT_YELLOW );
}
else if(pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST)
{
swprintf( pStr, L"GL BRST" );
swprintf( pStr, New113Message[MSG113_GL_BRST] );
SetFontForeground( FONT_YELLOW );
}
else if(pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO)
{
swprintf( pStr, L"GL AUTO" );
swprintf( pStr, New113Message[MSG113_GL_AUTO] );
SetFontForeground( FONT_YELLOW );
}
+4 -2
View File
@@ -34,6 +34,8 @@
#include "Dialogue Control.h"
#endif
#include "Text.h"
extern BOOLEAN gfHiddenInterrupt;
extern BOOLEAN gfUseAlternateQueenPosition;
@@ -2334,7 +2336,7 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier, UINT8 ubUnconsciousOK)
pSoldier->bAimTime = 0;
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].ubSuppressorID = pSoldier->ubID;
return( AI_ACTION_FIRE_GUN );
@@ -4976,7 +4978,7 @@ INT8 DecideAction(SOLDIERTYPE *pSoldier)
{
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;
}
+10 -1
View File
@@ -176,7 +176,16 @@ NPCQuoteInfo * LoadQuoteFile( UINT8 ubNPC )
}
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 );
}
+7 -6
View File
@@ -35,10 +35,10 @@
typedef struct
{
#if defined( CRIPPLED_VERSION ) || defined( RUSSIAN )
UINT8 ubIdentifier[4];
#endif
//SB: unify structure for all versions
// #if defined( CRIPPLED_VERSION ) || defined( RUSSIAN )
// UINT8 ubIdentifier[4];
// #endif
UINT16 fFlags;
@@ -71,9 +71,10 @@ typedef struct
UINT16 usGoToGridno;
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];
#endif
//#endif
} NPCQuoteInfo; // 32 bytes
+6 -4
View File
@@ -26,6 +26,8 @@
#include "GameSettings.h"
#endif
#include "Text.h"
//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.
BOOLEAN gfBasement = FALSE;
@@ -708,12 +710,12 @@ void EnvBeginRainStorm( UINT8 ubIntensity )
{
// Turn on rain storms
guiEnvWeather |= WEATHER_FORECAST_THUNDERSHOWERS;
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Storm started." );
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, New113Message[MSG113_STORM_STARTED] );
}
else
{
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 )
{
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"Storm ended." );
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, New113Message[MSG113_STORM_ENDED] );
}
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
#include "Language Defines.h"
//SB
#include "FileMan.h"
BOOLEAN GetMLGFilename( SGPFILENAME filename, UINT16 usMLGGraphicID )
{
@@ -260,108 +262,218 @@ BOOLEAN GetMLGFilename( SGPFILENAME filename, UINT16 usMLGGraphicID )
sprintf( zLanguage, "TAIWANESE" );
#endif
//SB: Also check for russian Gold version, like English
switch( usMLGGraphicID )
{
case MLG_AIMSYMBOL:
sprintf( filename, "%s\\AimSymbol_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_BOBBYNAME:
sprintf( filename, "%s\\BobbyName_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_BOBBYRAYAD21:
sprintf( filename, "%s\\BobbyRayAd_21_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_BOBBYRAYLINK:
sprintf( filename, "%s\\BobbyRayLink_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_CLOSED:
sprintf( filename, "%s\\Closed_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_CONFIRMORDER:
sprintf( filename, "%s\\ConfirmOrder_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_DESKTOP:
sprintf( filename, "%s\\desktop_%s.pcx", zLanguage, zLanguage );
return TRUE;
break;
case MLG_FUNERALAD9:
sprintf( filename, "%s\\FuneralAd_9_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_GOLDPIECEBUTTONS:
sprintf( filename, "%s\\goldpiecebuttons_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_HISTORY:
sprintf( filename, "%s\\history_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_INSURANCEAD10:
sprintf( filename, "%s\\insurancead_10_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_INSURANCELINK:
sprintf( filename, "%s\\insurancelink_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_INSURANCETITLE:
sprintf( filename, "%s\\largetitle_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_LARGEFLORISTSYMBOL:
sprintf( filename, "%s\\LargeSymbol_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_ORDERGRID:
sprintf( filename, "%s\\OrderGrid_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_SMALLFLORISTSYMBOL:
sprintf( filename, "%s\\SmallSymbol_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_STATSBOX:
sprintf( filename, "%s\\StatsBox_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_MCGILLICUTTYS:
sprintf( filename, "%s\\McGillicuttys_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_MORTUARY:
sprintf( filename, "%s\\Mortuary_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_MORTUARYLINK:
sprintf( filename, "%s\\MortuaryLink_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_PREBATTLEPANEL:
sprintf( filename, "%s\\PreBattlePanel_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_SMALLTITLE:
sprintf( filename, "%s\\SmallTitle_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_STOREPLAQUE:
sprintf( filename, "%s\\StorePlaque_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_TITLETEXT:
sprintf( filename, "%s\\titletext_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_TOALUMNI:
sprintf( filename, "%s\\ToAlumni_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_TOMUGSHOTS:
sprintf( filename, "%s\\ToMugShots_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_TOSTATS:
sprintf( filename, "%s\\ToStats_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_WARNING:
sprintf( filename, "%s\\Warning_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_YOURAD13:
sprintf( filename, "%s\\YourAd_13_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_OPTIONHEADER:
sprintf( filename, "%s\\optionscreenaddons_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_LOADSAVEHEADER:
sprintf( filename, "%s\\loadscreenaddons_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_SPLASH:
sprintf( filename, "%s\\splash_%s.sti", zLanguage, zLanguage );
return TRUE;
break;
case MLG_IMPSYMBOL:
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
return FALSE;
+16 -2
View File
@@ -1524,8 +1524,22 @@ extern STR16 GetWeightUnitString( void );
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
+8 -1
View File
@@ -4207,6 +4207,13 @@ STR16 gzTooltipStrings[] =
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
+14
View File
@@ -4202,5 +4202,19 @@ STR16 gzTooltipStrings[] =
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
+15
View File
@@ -4189,4 +4189,19 @@ STR16 gzTooltipStrings[] =
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
+15
View File
@@ -3994,4 +3994,19 @@ STR16 gzTooltipStrings[] =
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
+14 -1
View File
@@ -4186,6 +4186,19 @@ STR16 gzTooltipStrings[] =
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
+41 -40
View File
@@ -13,56 +13,57 @@
STR16 zNewTacticalMessages[]=
{
L"Range to target: %d tiles, Brightness: %d/%d",
L"Attaching the transmitter to your laptop computer.",
L"You cannot afford to hire %s",
L"For a limited time, the above fee covers the cost of the entire mission and includes the equipment listed below.",
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"Fee",
L"There is someone else in the sector...",
L"Gun Range: %d tiles, Chance to hit: %d percent",
L"Display Cover",
L"Line of Sight",
L"New Recruits cannot arrive there.",
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"%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"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"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"This is an IRON MAN game and you cannot save when enemies are around.", // @@@ new text
L"(Cannot save during combat)", //@@@@ new text
L"The current campaign name is greater than 30 characters.", // @@@ new text
L"The current campaign cannot be found.", // @@@ new text
L"Campaign: Default ( %S )", // @@@ new text
L"Campaign: %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"In order to use the editor, please select a campaign other than the default.", ///@@new
L"Расстояние до цели: %d ед.",
L"Передатчик подключен к вашему ноутбуку.",
L"Вы не можете нанять %s",
L"Предложение действует ограниченное время и покрывает стоимость найма на всю миссию, плюс вы так же получите оборудование, перечисленное ниже.",
L"Наемник %s - наше невероятное суперпредложение 'одна плата за все'. Вы также бесплатно получите его персональную экипировку.",
L"Гонорар",
L"В секторе кто-то есть...",
L"Дальнобойность: %d ед, расстояние до цели: %d ед",
L"Показать укрытия",
L"Линия прицела",
L"Новые наемники не могут высадится здесь.",
L"Так как ваш ноутбук лишился антенны, то вы не сможете нанять новых наемников. Возможно, сейчас вам стоит загрузить одну из сохраненных игр, или начать игру заново!",
L"%s слышит металлический хруст под телом Джерри. Похоже этот чмо сломал антенну вашего ноутбука.", //the %s is the name of a merc. @@@ Modified
L"После прочтения записей, оставленных помощником командира Морриса, %s видит, что не все еще потеряно. В записке содержатся координаты городов Арулько для запуска по ним ракет. Кроме того, там также указаны координаты самой ракетной базы.",
L"Изучив панель управления, %s понимает что координаты цели можно измененить, и тогда ракета уничтожит эту базу. %s не собирается умирать, а значит нужно быстрее отсюда выбираться. Похоже что самый быстрый способ это лифт...",
L"В начале игры вы выбрали режим \"Стальная воля\" и теперь не можете записываться во время боя.", // @@@ new text
L"(Нельзя сохраняться во время боя)", //@@@@ new text
L"Текущая кампания длиннее 30 символов.", // @@@ new text
L"Текущая кампания не найдена.", // @@@ new text
L"Кампания: По умолчанию ( %S )", // @@@ new text
L"Кампания: %S", // @@@ new text
L"Вы выбрали кампанию %S. Эта кампания является модификацией оригинальной кампании Unfinished Business. Вы уверены, что хотите играть кампанию %S?", // @@@ new text
L"Чтобы воспользоваться редактором, смените кампанию по умолчанию на другую.", ///@@new
};
//these strings match up with the defines in IMP Skill trait.cpp
STR16 gzIMPSkillTraitsText[]=
{
L"Lock picking",
L"Hand to hand combat",
L"Electronics",
L"Night operations",
L"Throwing",
L"Teaching",
L"Heavy Weapons",
L"Auto Weapons",
L"Stealth",
L"Ambidextrous",
L"Knifing",
L"Rooftop Sniping",
L"Camouflage",
L"Martial Arts",
L"Взлом замков",
L"Рукопашный бой",
L"Электроника",
L"Ночные операции",
L"Метание",
L"Инструктор",
L"Тяжелое оружие",
L"Авт. оружие",
L"Скрытность",
L"Стрельба с двух рук",
L"Холодное оружие",
L"Стрельба с крыш",
L"Камуфляж",
L"Боевые искуства",
L"None",
L"I.M.P. Specialties",
L"Нет",
L"Специализация I.M.P.",
};
//@@@: New string as of March 3, 2000.
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",
};
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
+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
+8 -2
View File
@@ -376,9 +376,11 @@ UINT32 InitScreenHandle(void)
strcpy( vs_desc.ImageFile, "ja2_logo.STI" );
hVSurface = CreateVideoSurface( &vs_desc );
//SB: JA2 Gold Rus doesn't contain such file!
#ifndef RUSSIAN
if( !hVSurface )
AssertMsg( 0, "Failed to load ja2_logo.sti!" );
#endif
//BltVideoSurfaceToVideoSurface( ghFrameBuffer, hVSurface, 0, 0, 0, VS_BLT_FAST, NULL );
ubCurrentScreen = 1;
@@ -423,7 +425,11 @@ UINT32 InitScreenHandle(void)
InvalidateScreen( );
// 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!
SetCurrentCursorFromDatabase( VIDEO_NO_CURSOR );