diff --git a/GameVersion.cpp b/GameVersion.cpp index b5f65b4c..a60f6462 100644 --- a/GameVersion.cpp +++ b/GameVersion.cpp @@ -18,7 +18,7 @@ CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.2389" }; #elif defined JA2BETAVERSION //BETA/TEST BUILD VERSION -CHAR16 zVersionLabel[256] = { L"Debug v1.13.2415" }; +CHAR16 zVersionLabel[256] = { L"Debug v1.13.2417" }; #elif defined CRIPPLED_VERSION @@ -28,11 +28,11 @@ CHAR16 zVersionLabel[256] = { L"Beta v. 0.98" }; #else //RELEASE BUILD VERSION - CHAR16 zVersionLabel[256] = { L"Release v1.13.2415" }; + CHAR16 zVersionLabel[256] = { L"Release v1.13.2417" }; #endif -CHAR8 czVersionNumber[16] = { "Build 08.11.13" }; //YY.MM.DD +CHAR8 czVersionNumber[16] = { "Build 08.11.14" }; //YY.MM.DD CHAR16 zTrackingNumber[16] = { L"Z" }; diff --git a/Laptop/AimMembers.cpp b/Laptop/AimMembers.cpp index b14f40f9..8624197e 100644 --- a/Laptop/AimMembers.cpp +++ b/Laptop/AimMembers.cpp @@ -49,6 +49,7 @@ #include "Strategic Town Loyalty.h" #include "connect.h" #include "fresh_header.h" +#include "Encrypted File.h" // //****** Defines ****** @@ -1100,7 +1101,7 @@ BOOLEAN LoadMercBioInfo(UINT8 ubIndex, STR16 pInfoString, STR16 pAddInfo) { HWFILE hFile; UINT32 uiBytesRead; - UINT16 i; + //UINT16 i; UINT32 uiStartSeekAmount; @@ -1124,38 +1125,39 @@ BOOLEAN LoadMercBioInfo(UINT8 ubIndex, STR16 pInfoString, STR16 pAddInfo) return( FALSE ); } - // Decrement, by 1, any value > 32 - for(i=0; (i 33 ) - pInfoString[i] -= 1; - #ifdef POLISH - switch( pInfoString[ i ] ) - { - case 260: pInfoString[ i ] = 165; break; - case 262: pInfoString[ i ] = 198; break; - case 280: pInfoString[ i ] = 202; break; - case 321: pInfoString[ i ] = 163; break; - case 323: pInfoString[ i ] = 209; break; - case 211: pInfoString[ i ] = 211; break; + //// Decrement, by 1, any value > 32 + //for(i=0; (i 33 ) + // pInfoString[i] -= 1; + // #ifdef POLISH + // switch( pInfoString[ i ] ) + // { + // case 260: pInfoString[ i ] = 165; break; + // case 262: pInfoString[ i ] = 198; break; + // case 280: pInfoString[ i ] = 202; break; + // case 321: pInfoString[ i ] = 163; break; + // case 323: pInfoString[ i ] = 209; break; + // case 211: pInfoString[ i ] = 211; break; - case 346: pInfoString[ i ] = 338; break; - case 379: pInfoString[ i ] = 175; break; - case 377: pInfoString[ i ] = 143; break; - case 261: pInfoString[ i ] = 185; break; - case 263: pInfoString[ i ] = 230; break; - case 281: pInfoString[ i ] = 234; break; - - case 322: pInfoString[ i ] = 179; break; - case 324: pInfoString[ i ] = 241; break; - case 243: pInfoString[ i ] = 243; break; - case 347: pInfoString[ i ] = 339; break; - case 380: pInfoString[ i ] = 191; break; - case 378: pInfoString[ i ] = 376; break; - } - #endif - } + // case 346: pInfoString[ i ] = 338; break; + // case 379: pInfoString[ i ] = 175; break; + // case 377: pInfoString[ i ] = 143; break; + // case 261: pInfoString[ i ] = 185; break; + // case 263: pInfoString[ i ] = 230; break; + // case 281: pInfoString[ i ] = 234; break; + // case 322: pInfoString[ i ] = 179; break; + // case 324: pInfoString[ i ] = 241; break; + // case 243: pInfoString[ i ] = 243; break; + // case 347: pInfoString[ i ] = 339; break; + // case 380: pInfoString[ i ] = 191; break; + // case 378: pInfoString[ i ] = 376; break; + // } + // #endif + //} + + DecodeString(pInfoString, SIZE_MERC_BIO_INFO); // Get the additional info uiStartSeekAmount = ((SIZE_MERC_BIO_INFO + SIZE_MERC_ADDITIONAL_INFO) * ubIndex )+ SIZE_MERC_BIO_INFO ; @@ -1169,37 +1171,39 @@ BOOLEAN LoadMercBioInfo(UINT8 ubIndex, STR16 pInfoString, STR16 pAddInfo) return( FALSE ); } - // Decrement, by 1, any value > 32 - for(i=0; (i 33 ) - pAddInfo[i] -= 1; - #ifdef POLISH - switch( pAddInfo[ i ] ) - { - case 260: pAddInfo[ i ] = 165; break; - case 262: pAddInfo[ i ] = 198; break; - case 280: pAddInfo[ i ] = 202; break; - case 321: pAddInfo[ i ] = 163; break; - case 323: pAddInfo[ i ] = 209; break; - case 211: pAddInfo[ i ] = 211; break; + //// Decrement, by 1, any value > 32 + //for(i=0; (i 33 ) + // pAddInfo[i] -= 1; + // #ifdef POLISH + // switch( pAddInfo[ i ] ) + // { + // case 260: pAddInfo[ i ] = 165; break; + // case 262: pAddInfo[ i ] = 198; break; + // case 280: pAddInfo[ i ] = 202; break; + // case 321: pAddInfo[ i ] = 163; break; + // case 323: pAddInfo[ i ] = 209; break; + // case 211: pAddInfo[ i ] = 211; break; - case 346: pAddInfo[ i ] = 338; break; - case 379: pAddInfo[ i ] = 175; break; - case 377: pAddInfo[ i ] = 143; break; - case 261: pAddInfo[ i ] = 185; break; - case 263: pAddInfo[ i ] = 230; break; - case 281: pAddInfo[ i ] = 234; break; + // case 346: pAddInfo[ i ] = 338; break; + // case 379: pAddInfo[ i ] = 175; break; + // case 377: pAddInfo[ i ] = 143; break; + // case 261: pAddInfo[ i ] = 185; break; + // case 263: pAddInfo[ i ] = 230; break; + // case 281: pAddInfo[ i ] = 234; break; - case 322: pAddInfo[ i ] = 179; break; - case 324: pAddInfo[ i ] = 241; break; - case 243: pAddInfo[ i ] = 243; break; - case 347: pAddInfo[ i ] = 339; break; - case 380: pAddInfo[ i ] = 191; break; - case 378: pAddInfo[ i ] = 376; break; - } - #endif - } + // case 322: pAddInfo[ i ] = 179; break; + // case 324: pAddInfo[ i ] = 241; break; + // case 243: pAddInfo[ i ] = 243; break; + // case 347: pAddInfo[ i ] = 339; break; + // case 380: pAddInfo[ i ] = 191; break; + // case 378: pAddInfo[ i ] = 376; break; + // } + // #endif + //} + + DecodeString(pAddInfo, SIZE_MERC_BIO_INFO); FileClose(hFile); return(TRUE); diff --git a/Standard Gaming Platform/Font.cpp b/Standard Gaming Platform/Font.cpp index 4af6aab9..3aa64568 100644 --- a/Standard Gaming Platform/Font.cpp +++ b/Standard Gaming Platform/Font.cpp @@ -657,6 +657,8 @@ INT16 GetIndex(CHAR16 siChar) UINT16 ssCount=0; UINT16 usNumberOfSymbols = pFManager->pTranslationTable->usNumberOfSymbols; + siChar = GetUnicodeChar(siChar); + // search the Translation Table and return the index for the font pTrav = pFManager->pTranslationTable->DynamicArrayOf16BitValues; while (ssCount < usNumberOfSymbols ) @@ -677,6 +679,144 @@ INT16 GetIndex(CHAR16 siChar) } +CHAR16 GetUnicodeChar(CHAR16 siChar) +{ + #ifdef GERMAN + //switch( siChar ) + //{ + // // ь + // case 252: siChar = 252; break; + // // Ь + // case 220: siChar = 220; break; + // // д + // case 228: siChar = 228; break; + // // Д + // case 196: siChar = 196; break; + // // ц + // case 246: siChar = 246; break; + // // Ц + // case 214: siChar = 214; break; + // // Я + // case 223: siChar = 223; break; + //} + #endif + + #ifdef RUSSIAN + switch( siChar ) + { + //capital letters + case 168: siChar = 1025; break; //U+0401 d0 81 CYRILLIC CAPITAL LETTER IO + case 192: siChar = 1040; break; //U+0410 A d0 90 CYRILLIC CAPITAL LETTER A + case 193: siChar = 1041; break; + case 194: siChar = 1042; break; + case 195: siChar = 1043; break; + case 196: siChar = 1044; break; + case 197: siChar = 1045; break; + case 198: siChar = 1046; break; + case 199: siChar = 1047; break; + case 200: siChar = 1048; break; + case 201: siChar = 1049; break; + case 202: siChar = 1050; break; + case 203: siChar = 1051; break; + case 204: siChar = 1052; break; + case 205: siChar = 1053; break; + case 206: siChar = 1054; break; + case 207: siChar = 1055; break; + case 208: siChar = 1056; break; + case 209: siChar = 1057; break; + case 210: siChar = 1058; break; + case 211: siChar = 1059; break; + case 212: siChar = 1060; break; + case 213: siChar = 1061; break; + case 214: siChar = 1062; break; + case 215: siChar = 1063; break; + case 216: siChar = 1064; break; + case 217: siChar = 1065; break; + case 218: siChar = 1066; break; + case 219: siChar = 1067; break; + case 220: siChar = 1068; break; + case 221: siChar = 1069; break; + case 222: siChar = 1070; break; + case 223: siChar = 1071; break; //U+042F d0 af CYRILLIC CAPITAL LETTER YA + + //small letters + case 185: siChar = 8470; break; // ? + case 178: siChar = 1030; break; // ? + case 161: siChar = 1038; break; // н + case 179: siChar = 1110; break; // ? + case 162: siChar = 1118; break; // у + case 165: siChar = 1168; break; // С + case 170: siChar = 1028; break; // ¬ + case 175: siChar = 1031; break; // » + case 180: siChar = 1169; break; // ? + case 186: siChar = 1108; break; // ? + case 191: siChar = 1111; break; // ? + + case 184: siChar = 1105; break; //U+0451 d1 91 CYRILLIC SMALL LETTER IO + case 224: siChar = 1072; break; //U+0430 a d0 b0 CYRILLIC SMALL LETTER A + case 225: siChar = 1073; break; + case 226: siChar = 1074; break; + case 227: siChar = 1075; break; + case 228: siChar = 1076; break; + case 229: siChar = 1077; break; + case 230: siChar = 1078; break; + case 231: siChar = 1079; break; + case 232: siChar = 1080; break; + case 233: siChar = 1081; break; + case 234: siChar = 1082; break; + case 235: siChar = 1083; break; + case 236: siChar = 1084; break; + case 237: siChar = 1085; break; + case 238: siChar = 1086; break; + case 239: siChar = 1087; break; //U+043F d0 bf CYRILLIC SMALL LETTER PE + case 240: siChar = 1088; break; //U+0440 p d1 80 CYRILLIC SMALL LETTER ER + case 241: siChar = 1089; break; + case 242: siChar = 1090; break; + case 243: siChar = 1091; break; + case 244: siChar = 1092; break; + case 245: siChar = 1093; break; + case 246: siChar = 1094; break; + case 247: siChar = 1095; break; + case 248: siChar = 1096; break; + case 249: siChar = 1097; break; + case 250: siChar = 1098; break; + case 251: siChar = 1099; break; + case 252: siChar = 1100; break; + case 253: siChar = 1101; break; + case 254: siChar = 1102; break; + case 255: siChar = 1103; break; //U+044F d1 8f CYRILLIC SMALL LETTER YA + } + #endif + + #ifdef POLISH + switch( siChar ) + { + case 165: siChar = 260; break; + case 198: siChar = 262; break; + case 202: siChar = 280; break; + case 163: siChar = 321; break; + case 209: siChar = 323; break; + case 211: siChar = 211; break; + + case 338: siChar = 346; break; + case 175: siChar = 379; break; + case 143: siChar = 377; break; + case 185: siChar = 261; break; + case 230: siChar = 263; break; + case 234: siChar = 281; break; + + case 179: siChar = 322; break; + case 241: siChar = 324; break; + case 243: siChar = 243; break; + case 339: siChar = 347; break; + case 191: siChar = 380; break; + case 376: siChar = 378; break; + } + #endif + + return siChar; +} + //***************************************************************************** // SetFont // @@ -1285,12 +1425,15 @@ FontTranslationTable *CreateEnglishTransTable( ) pTable = (FontTranslationTable *)MemAlloc(sizeof(FontTranslationTable)); memset(pTable, 0, sizeof(FontTranslationTable) ); -#ifdef JA2 - // ha ha, we have more than Wizardry now (again) - pTable->usNumberOfSymbols = 255; - #else - pTable->usNumberOfSymbols = 255; - #endif + //#ifdef JA2 + // // ha ha, we have more than Wizardry now (again) + // pTable->usNumberOfSymbols = 255; + //#else + // pTable->usNumberOfSymbols = 255; + //#endif + + pTable->usNumberOfSymbols = 200; + pTable->DynamicArrayOf16BitValues = (UINT16 *)MemAlloc(pTable->usNumberOfSymbols * 2); temp = pTable->DynamicArrayOf16BitValues; @@ -1481,9 +1624,7 @@ FontTranslationTable *CreateEnglishTransTable( ) *temp = ' '; //93 temp++; -#ifdef JA2 - -#ifdef GERMAN + // GERMAN letters in UNICODE *temp = 196; // "A" umlaut temp++; *temp = 214; // "O" umlaut @@ -1496,469 +1637,220 @@ FontTranslationTable *CreateEnglishTransTable( ) temp++; *temp = 252; // "u" umlaut temp++; - *temp = 223; // double-s that looks like a beta/B // 100 + *temp = 223; // double-s that looks like a beta/B temp++; -#else - *temp = 0; // "A" umlaut - temp++; - *temp = 0; // "O" umlaut - temp++; - *temp = 0; // "U" umlaut - temp++; - *temp = 0; // "a" umlaut - temp++; - *temp = 0; // "o" umlaut - temp++; - *temp = 0; // "u" umlaut - temp++; - *temp = 0; // double-s that looks like a beta/B // 100 - temp++; -#endif - *temp = 192; // А - temp++; - *temp = 193; // Б - temp++; - *temp = 194; // Г - temp++; - *temp = 195; // Д - temp++; - *temp = 196; // Е - temp++; - *temp = 197; // Ё - temp++; - *temp = 198; // Ж - temp++; - *temp = 199; // З - temp++; - *temp = 200; // И 140 - temp++; - *temp = 201; // Й - temp++; - *temp = 202; // К - temp++; - *temp = 203; // Л - temp++; - *temp = 204; // М - temp++; - *temp = 205; // Н - temp++; - *temp = 206; // О - temp++; - *temp = 207; // П - temp++; - *temp = 208; // Р - temp++; - *temp = 209; // С - temp++; - *temp = 210; // Т 150 - temp++; - *temp = 211; // У - temp++; - *temp = 212; // Ф - temp++; - *temp = 213; // Х - temp++; - *temp = 214; // Ц - temp++; - *temp = 215; // Ч - temp++; - *temp = 216; // Ш - temp++; - *temp = 217; // Щ - temp++; - *temp = 218; // Ъ - temp++; - *temp = 219; // Ы - temp++; - *temp = 220; // Ь 160 - temp++; - *temp = 221; // Э - temp++; - *temp = 222; // Ю - temp++; - *temp = 223; // Я - temp++; - *temp = 224; // а - temp++; - *temp = 225; // б - temp++; - *temp = 226; // в - temp++; - *temp = 227; // г - temp++; - *temp = 228; // д - temp++; - *temp = 229; // е - temp++; - *temp = 230; // ё 170 - temp++; - *temp = 231; // ж - temp++; - *temp = 232; // з - temp++; - *temp = 233; // и - temp++; - *temp = 234; // й - temp++; - *temp = 235; // к - temp++; - *temp = 236; // л - temp++; - *temp = 237; // м - temp++; - *temp = 238; // н - temp++; - *temp = 239; // о 170 - temp++; - *temp = 240; // п - temp++; - *temp = 241; // р - temp++; - *temp = 242; // с - temp++; - *temp = 243; // т - temp++; - *temp = 244; // у - temp++; - *temp = 245; // ф - temp++; - *temp = 246; // х - temp++; - *temp = 247; // ц - temp++; - *temp = 248; // ч - temp++; - *temp = 249; // ш 170 - temp++; - *temp = 250; // щ - temp++; - *temp = 251; // ъ - temp++; - *temp = 252; // ы - temp++; - *temp = 253; // ь 170 - temp++; - *temp = 254; // э - temp++; - *temp = 255; // ю - temp++; - // START OF FUNKY RUSSIAN STUFF + // RUSSIAN letters in UNICODE *temp = 1040; //А temp++; - *temp = 1041; + *temp = 1041; //Б temp++; - *temp = 1042; + *temp = 1042; //В temp++; - *temp = 1043; + *temp = 1043; //Г temp++; - *temp = 1044; + *temp = 1044; //Д temp++; - *temp = 1045; + *temp = 1045; //Е temp++; - *temp = 1046; + *temp = 1046; //Ж temp++; - *temp = 1047; + *temp = 1047; //З temp++; - *temp = 1048; + *temp = 1048; //И temp++; - *temp = 1049; //110 + *temp = 1049; //Й temp++; - *temp = 1050; + *temp = 1050; //К temp++; - *temp = 1051; + *temp = 1051; //Л temp++; - *temp = 1052; + *temp = 1052; //М temp++; - *temp = 1053; + *temp = 1053; //Н temp++; - *temp = 1054; + *temp = 1054; //О temp++; - *temp = 1055; + *temp = 1055; //П temp++; - *temp = 1056; + *temp = 1056; //Р temp++; - *temp = 1057; + *temp = 1057; //С temp++; - *temp = 1058; + *temp = 1058; //Т temp++; - *temp = 1059; //120 + *temp = 1059; //У temp++; - *temp = 1060; + *temp = 1060; //Ф temp++; - *temp = 1061; + *temp = 1061; //Х temp++; - *temp = 1062; + *temp = 1062; //Ц temp++; - *temp = 1063; + *temp = 1063; //Ч temp++; - *temp = 1064; + *temp = 1064; //Ш temp++; - *temp = 1065; + *temp = 1065; //Щ temp++; - *temp = 1066; + *temp = 1066; //Ъ temp++; - *temp = 1067; + *temp = 1067; //Ы temp++; - *temp = 1068; + *temp = 1068; //Ь temp++; - *temp = 1069; // 130 + *temp = 1069; //Э temp++; - *temp = 1070; + *temp = 1070; //Ю temp++; - *temp = 1071; + *temp = 1071; //Я + temp++; + *temp = 1072; // а temp++; - *temp = 1072; // Д + *temp = 1073; // б temp++; - *temp = 1073; // А + *temp = 1074; // в temp++; - *temp = 1074; // Б + *temp = 1075; // г temp++; - *temp = 1075; // В + *temp = 1076; // д temp++; - *temp = 1076; // Г + *temp = 1077; // е temp++; - *temp = 1077; // Е + *temp = 1078; // ж temp++; - *temp = 1078; // Ё + *temp = 1079; // з temp++; - *temp = 1079; // З 140 + *temp = 1080; // и temp++; - *temp = 1080; // Л + *temp = 1081; // й temp++; - *temp = 1081; // И + *temp = 1082; // к temp++; - *temp = 1082; // Й 140 + *temp = 1083; // л temp++; - *temp = 1083; // К + *temp = 1084; // м temp++; - *temp = 1084; // П + *temp = 1085; // н temp++; - *temp = 1085; // Ц + *temp = 1086; // о temp++; - *temp = 1086; // Т + *temp = 1087; // п temp++; - *temp = 1087; // У + *temp = 1088; // р temp++; - *temp = 1088; // Ф + *temp = 1089; // с temp++; - *temp = 1089; // Ь 150 + *temp = 1090; // т temp++; - *temp = 1090; // Щ + *temp = 1091; // у temp++; - *temp = 1091; // Ъ + *temp = 1092; // ф temp++; - *temp = 1092; // Ы 150 + *temp = 1093; // х temp++; - *temp = 1093; // д + *temp = 1094; // ц temp++; - *temp = 1094; // а + *temp = 1095; // ч temp++; - *temp = 1095; // б + *temp = 1096; // ш temp++; - *temp = 1096; // в + *temp = 1097; // щ temp++; - *temp = 1097; // з + *temp = 1098; // ъ temp++; - *temp = 1098; // л + *temp = 1099; // ы temp++; - *temp = 1099; // и 160 + *temp = 1100; // ь temp++; - *temp = 1100; // й + *temp = 1101; // э temp++; - *temp = 1101; // к + *temp = 1102; // ю temp++; - *temp = 1102; // п 160 - temp++; - *temp = 1103; // ц + *temp = 1103; // я temp++; - //SB: new russian & bellorussian & ukrainian symbols - // in ascii - *temp = 185; // № + // BELORUSSIAN and UKRAINIAN letters in UNICODE + *temp = 8470; // № temp++; - *temp = 168; // Ё + *temp = 1025; // Ё temp++; - *temp = 178; // І + *temp = 1030; // І temp++; - *temp = 161; // Ў + *temp = 1038; // Ў temp++; - *temp = 184; // ё + *temp = 1105; // ё temp++; - *temp = 179; // і + *temp = 1110; // і temp++; - *temp = 162; // ў + *temp = 1118; // ў temp++; - *temp = 165; // Ґ + *temp = 1168; // Ґ temp++; - *temp = 170; // Є + *temp = 1028; // Є temp++; - *temp = 175; // Ї + *temp = 1031; // Ї temp++; - *temp = 180; // ґ + *temp = 1169; // ґ temp++; - *temp = 186; // є + *temp = 1108; // є temp++; - *temp = 191; // ї + *temp = 1111; // ї temp++; - // in unicode - *temp = 0x2116; // № - temp++; - *temp = 0x0401; // Ё - temp++; - *temp = 0x0406; // І - temp++; - *temp = 0x040E; // Ў - temp++; - *temp = 0x0451; // ё - temp++; - *temp = 0x0456; // і - temp++; - *temp = 0x045E; // ў - temp++; - *temp = 0x0490; // Ґ - temp++; - *temp = 0x0404; // Є - temp++; - *temp = 0x0407; // Ї - temp++; - *temp = 0x0491; // ґ - temp++; - *temp = 0x0454; // є - temp++; - *temp = 0x0457; // ї - temp++; -#else -// Windows Code Page 1252 Western Standard Character Set - *temp = 193; // "A" acute + // POLISH letters in UNICODE + *temp = 260; // Ґ (он) temp++; - *temp = 192; // "A" grave + *temp = 262; // Ж (це) temp++; - *temp = 193; // "A" circumflex + *temp = 280; // К (эн) temp++; - *temp = 196; // "A" umlaut + *temp = 321; // Ј (эль) temp++; - *temp = 195; // "A" tilde + *temp = 323; // С (энь) temp++; - *temp = 197; // "A" ring + *temp = 211; // У (о краткое) temp++; - *temp = 199; // "C" cedile + *temp = 346; // Њ (эсь) temp++; - *temp = 201; // "E" acute + *temp = 379; // Ї (жет) temp++; - *temp = 200; // "E" grave + *temp = 377; // Џ (зет) temp++; - *temp = 202; // "E" circumflex + *temp = 261; // № (он) temp++; - *temp = 203; // "E" umlaut + *temp = 263; // ж (це) temp++; - *temp = 205; // "I" acute + *temp = 281; // к (эн) temp++; - *temp = 204; // "I" grave + *temp = 322; // і (эль) temp++; - *temp = 206; // "I" circumflex + *temp = 324; // с (энь) temp++; - *temp = 207; // "I" umlaut + *temp = 243; // у (о краткое) temp++; - *temp = 209; // "N" tilde + *temp = 347; // њ (эсь) temp++; - *temp = 211; // "O" acute + *temp = 380; // ї (жет) temp++; - *temp = 210; // "O" grave + *temp = 378; // џ (зет) temp++; - *temp = 212; // "O" circumflex - temp++; - *temp = 214; // "O" umlaut - temp++; - *temp = 213; // "O" tilde - temp++; - *temp = 216; // "0" O strike-through - temp++; - *temp = 218; // "U" acute - temp++; - *temp = 217; // "U" grave - temp++; - *temp = 219; // "U" circumflex - temp++; - *temp = 220; // "U" umlaut - temp++; - *temp = 221; // "Y" acute - temp++; - *temp = 225; // "a" acute - temp++; - *temp = 224; // "a" grave - temp++; - *temp = 226; // "a" circumflex - temp++; - *temp = 228; // "a" umlaut - temp++; - *temp = 227; // "a" tilde - temp++; - *temp = 229; // "a" ring - temp++; - *temp = 231; // "c" cedile - temp++; - *temp = 233; // "e" acute - temp++; - *temp = 232; // "e" grave - temp++; - *temp = 234; // "e" circumflex - temp++; - *temp = 235; // "e" umlaut - temp++; - *temp = 237; // "i" acute - temp++; - *temp = 236; // "i" grave - temp++; - *temp = 238; // "i" circumflex - temp++; - *temp = 239; // "i" umlaut - temp++; - *temp = 241; // "n" tilde - temp++; - *temp = 243; // "o" acute - temp++; - *temp = 242; // "o" grave - temp++; - *temp = 244; // "o" circumflex - temp++; - *temp = 246; // "o" umlaut - temp++; - *temp = 245; // "o" tilde - temp++; - *temp = 248; // "o" strike-through - temp++; - *temp = 250; // "u" acute - temp++; - *temp = 249; // "u" grave - temp++; - *temp = 251; // "u" circumflex - temp++; - *temp = 252; // "u" umlaut - temp++; - *temp = 254; // "y" acute - temp++; - *temp = 255; // "y" umlaut - temp++; - *temp = 223; // beta -// Font glyphs for spell targeting icons + // Font glyphs for spell targeting icons //ATE: IMPORTANT! INcreate the array above if you add any new items here... - temp++; - *temp = FONT_GLYPH_TARGET_POINT; - temp++; - *temp = FONT_GLYPH_TARGET_CONE; - temp++; - *temp = FONT_GLYPH_TARGET_SINGLE; - temp++; - *temp = FONT_GLYPH_TARGET_GROUP; - temp++; - *temp = FONT_GLYPH_TARGET_NONE; - -// 154 -#endif + //temp++; + //*temp = FONT_GLYPH_TARGET_POINT; + //temp++; + //*temp = FONT_GLYPH_TARGET_CONE; + //temp++; + //*temp = FONT_GLYPH_TARGET_SINGLE; + //temp++; + //*temp = FONT_GLYPH_TARGET_GROUP; + //temp++; + //*temp = FONT_GLYPH_TARGET_NONE; + // 200 + return pTable; } diff --git a/Standard Gaming Platform/Font.h b/Standard Gaming Platform/Font.h index 922875c5..42066c88 100644 --- a/Standard Gaming Platform/Font.h +++ b/Standard Gaming Platform/Font.h @@ -183,3 +183,5 @@ void FindFontCenterCoordinates( INT16 sLeft, INT16 sTop, INT16 sWidth, INT16 sHe */ #endif + +CHAR16 GetUnicodeChar(CHAR16 siChar); \ No newline at end of file diff --git a/Utils/Encrypted File.cpp b/Utils/Encrypted File.cpp index 91db4731..2600cb8e 100644 --- a/Utils/Encrypted File.cpp +++ b/Utils/Encrypted File.cpp @@ -10,8 +10,7 @@ BOOLEAN LoadEncryptedDataFromFile(STR pFileName, STR16 pDestString, UINT32 uiSeekFrom, UINT32 uiSeekAmount) { - HWFILE hFile; - UINT16 i; + HWFILE hFile; UINT32 uiBytesRead; @@ -36,38 +35,165 @@ BOOLEAN LoadEncryptedDataFromFile(STR pFileName, STR16 pDestString, UINT32 uiSee return( FALSE ); } - // Decrement, by 1, any value > 32 - for(i=0; (i 33 ) - pDestString[i] -= 1; - #ifdef POLISH - switch( pDestString[ i ] ) - { - case 260: pDestString[ i ] = 165; break; - case 262: pDestString[ i ] = 198; break; - case 280: pDestString[ i ] = 202; break; - case 321: pDestString[ i ] = 163; break; - case 323: pDestString[ i ] = 209; break; - case 211: pDestString[ i ] = 211; break; - case 346: pDestString[ i ] = 338; break; - case 379: pDestString[ i ] = 175; break; - case 377: pDestString[ i ] = 143; break; - case 261: pDestString[ i ] = 185; break; - case 263: pDestString[ i ] = 230; break; - case 281: pDestString[ i ] = 234; break; - case 322: pDestString[ i ] = 179; break; - case 324: pDestString[ i ] = 241; break; - case 243: pDestString[ i ] = 243; break; - case 347: pDestString[ i ] = 339; break; - case 380: pDestString[ i ] = 191; break; - case 378: pDestString[ i ] = 376; break; - } - #endif - } + //// Decrement, by 1, any value > 32 + //for(i=0; (i 33 ) + // pDestString[i] -= 1; + // + + //} + + DecodeString(pDestString, uiSeekAmount); FileClose(hFile); return(TRUE); } + + +void DecodeString(STR16 pDestString, UINT32 uiSeekAmount) +{ + UINT32 i; + + // Decrement, by 1, any value > 32 + for(i=0; (i 33 ) + pDestString[i] -= 1; + + //#ifdef GERMAN + // //switch( pDestString[ i ] ) + // //{ + // // // ь + // // case 252: pDestString[i] = 252; break; + // // // Ь + // // case 220: pDestString[i] = 220; break; + // // // д + // // case 228: pDestString[i] = 228; break; + // // // Д + // // case 196: pDestString[i] = 196; break; + // // // ц + // // case 246: pDestString[i] = 246; break; + // // // Ц + // // case 214: pDestString[i] = 214; break; + // // // Я + // // case 223: pDestString[i] = 223; break; + // //} + //#endif + + //#ifdef RUSSIAN + // switch( pDestString[ i ] ) + // { + // //capital letters + // case 168: pDestString[ i ] = 1025; break; //U+0401 d0 81 CYRILLIC CAPITAL LETTER IO + // case 192: pDestString[ i ] = 1040; break; //U+0410 A d0 90 CYRILLIC CAPITAL LETTER A + // case 193: pDestString[ i ] = 1041; break; + // case 194: pDestString[ i ] = 1042; break; + // case 195: pDestString[ i ] = 1043; break; + // case 196: pDestString[ i ] = 1044; break; + // case 197: pDestString[ i ] = 1045; break; + // case 198: pDestString[ i ] = 1046; break; + // case 199: pDestString[ i ] = 1047; break; + // case 200: pDestString[ i ] = 1048; break; + // case 201: pDestString[ i ] = 1049; break; + // case 202: pDestString[ i ] = 1050; break; + // case 203: pDestString[ i ] = 1051; break; + // case 204: pDestString[ i ] = 1052; break; + // case 205: pDestString[ i ] = 1053; break; + // case 206: pDestString[ i ] = 1054; break; + // case 207: pDestString[ i ] = 1055; break; + // case 208: pDestString[ i ] = 1056; break; + // case 209: pDestString[ i ] = 1057; break; + // case 210: pDestString[ i ] = 1058; break; + // case 211: pDestString[ i ] = 1059; break; + // case 212: pDestString[ i ] = 1060; break; + // case 213: pDestString[ i ] = 1061; break; + // case 214: pDestString[ i ] = 1062; break; + // case 215: pDestString[ i ] = 1063; break; + // case 216: pDestString[ i ] = 1064; break; + // case 217: pDestString[ i ] = 1065; break; + // case 218: pDestString[ i ] = 1066; break; + // case 219: pDestString[ i ] = 1067; break; + // case 220: pDestString[ i ] = 1068; break; + // case 221: pDestString[ i ] = 1069; break; + // case 222: pDestString[ i ] = 1070; break; + // case 223: pDestString[ i ] = 1071; break; //U+042F d0 af CYRILLIC CAPITAL LETTER YA + + // //small letters + // case 184: pDestString[ i ] = 1105; break; //U+0451 d1 91 CYRILLIC SMALL LETTER IO + //case 185: pDestString[ i ] = 8470; break; // ? + //case 178: pDestString[ i ] = 1030; break; // ? + //case 161: pDestString[ i ] = 1038; break; // н + //case 179: pDestString[ i ] = 1110; break; // ? + //case 162: pDestString[ i ] = 1118; break; // у + //case 165: pDestString[ i ] = 1168; break; // С + //case 170: pDestString[ i ] = 1028; break; // ¬ + //case 175: pDestString[ i ] = 1031; break; // » + //case 180: pDestString[ i ] = 1169; break; // ? + //case 186: pDestString[ i ] = 1108; break; // ? + //case 191: pDestString[ i ] = 1111; break; // ? + // case 224: pDestString[ i ] = 1072; break; //U+0430 a d0 b0 CYRILLIC SMALL LETTER A + // case 225: pDestString[ i ] = 1073; break; + // case 226: pDestString[ i ] = 1074; break; + // case 227: pDestString[ i ] = 1075; break; + // case 228: pDestString[ i ] = 1076; break; + // case 229: pDestString[ i ] = 1077; break; + // case 230: pDestString[ i ] = 1078; break; + // case 231: pDestString[ i ] = 1079; break; + // case 232: pDestString[ i ] = 1080; break; + // case 233: pDestString[ i ] = 1081; break; + // case 234: pDestString[ i ] = 1082; break; + // case 235: pDestString[ i ] = 1083; break; + // case 236: pDestString[ i ] = 1084; break; + // case 237: pDestString[ i ] = 1085; break; + // case 238: pDestString[ i ] = 1086; break; + // case 239: pDestString[ i ] = 1087; break; //U+043F d0 bf CYRILLIC SMALL LETTER PE + // case 240: pDestString[ i ] = 1088; break; //U+0440 p d1 80 CYRILLIC SMALL LETTER ER + // case 241: pDestString[ i ] = 1089; break; + // case 242: pDestString[ i ] = 1090; break; + // case 243: pDestString[ i ] = 1091; break; + // case 244: pDestString[ i ] = 1092; break; + // case 245: pDestString[ i ] = 1093; break; + // case 246: pDestString[ i ] = 1094; break; + // case 247: pDestString[ i ] = 1095; break; + // case 248: pDestString[ i ] = 1096; break; + // case 249: pDestString[ i ] = 1097; break; + // case 250: pDestString[ i ] = 1098; break; + // case 251: pDestString[ i ] = 1099; break; + // case 252: pDestString[ i ] = 1100; break; + // case 253: pDestString[ i ] = 1101; break; + // case 254: pDestString[ i ] = 1102; break; + // case 255: pDestString[ i ] = 1103; break; //U+044F d1 8f CYRILLIC SMALL LETTER YA + + // } + //#endif + + //#ifdef POLISH + // switch( pDestString[ i ] ) + // { + // case 165: pDestString[ i ] = 260; break; + // case 198: pDestString[ i ] = 262; break; + // case 202: pDestString[ i ] = 280; break; + // case 163: pDestString[ i ] = 321; break; + // case 209: pDestString[ i ] = 323; break; + // case 211: pDestString[ i ] = 211; break; + + // case 338: pDestString[ i ] = 346; break; + // case 175: pDestString[ i ] = 379; break; + // case 143: pDestString[ i ] = 377; break; + // case 185: pDestString[ i ] = 261; break; + // case 230: pDestString[ i ] = 263; break; + // case 234: pDestString[ i ] = 281; break; + + // case 179: pDestString[ i ] = 322; break; + // case 241: pDestString[ i ] = 324; break; + // case 243: pDestString[ i ] = 243; break; + // case 339: pDestString[ i ] = 347; break; + // case 191: pDestString[ i ] = 380; break; + // case 376: pDestString[ i ] = 378; break; + // } + //#endif + } +} \ No newline at end of file diff --git a/Utils/Encrypted File.h b/Utils/Encrypted File.h index 4146a622..3964ad64 100644 --- a/Utils/Encrypted File.h +++ b/Utils/Encrypted File.h @@ -4,5 +4,6 @@ #include "types.h" BOOLEAN LoadEncryptedDataFromFile(STR pFileName, STR16 pDestString, UINT32 uiSeekFrom, UINT32 uiSeekAmount); +void DecodeString(STR16 pDestString, UINT32 uiSeekAmount); #endif \ No newline at end of file diff --git a/Utils/_GermanText.cpp b/Utils/_GermanText.cpp index 6b1db170..3fa530a5 100644 --- a/Utils/_GermanText.cpp +++ b/Utils/_GermanText.cpp @@ -1,3 +1,4 @@ +#pragma setlocale("GERMAN") #ifdef PRECOMPILEDHEADERS #include "Utils All.h" #else diff --git a/Utils/_Ja25GermanText.cpp b/Utils/_Ja25GermanText.cpp index 3fdba0b2..7af1cefe 100644 --- a/Utils/_Ja25GermanText.cpp +++ b/Utils/_Ja25GermanText.cpp @@ -1,3 +1,4 @@ +#pragma setlocale("GERMAN") #ifdef PRECOMPILEDHEADERS #include "Utils All.h" #include "_Ja25GermanText.h" diff --git a/Utils/_Ja25PolishText.cpp b/Utils/_Ja25PolishText.cpp index 8ffd54ab..9daa4899 100644 --- a/Utils/_Ja25PolishText.cpp +++ b/Utils/_Ja25PolishText.cpp @@ -1,3 +1,4 @@ +#pragma setlocale("POLISH") #ifdef PRECOMPILEDHEADERS #include "Utils All.h" #include "_Ja25Polishtext.h" diff --git a/Utils/_Ja25RussianText.cpp b/Utils/_Ja25RussianText.cpp index 2c237de1..42a81173 100644 --- a/Utils/_Ja25RussianText.cpp +++ b/Utils/_Ja25RussianText.cpp @@ -1,3 +1,4 @@ +#pragma setlocale("RUSSIAN") #ifdef PRECOMPILEDHEADERS #include "Utils All.h" #include "_Ja25RussianText.h" diff --git a/Utils/_PolishText.cpp b/Utils/_PolishText.cpp index 1d4a2299..6260098e 100644 --- a/Utils/_PolishText.cpp +++ b/Utils/_PolishText.cpp @@ -1,3 +1,4 @@ +#pragma setlocale("POLISH") #include "Utils All.h" #include "Language Defines.h" @@ -3762,10 +3763,9 @@ STR16 zOptionsScreenHelpText[] = L"Jeњli WЈҐCZONE, gra bкdzie zapisywana kaїdorazowo po zakoсczeniu tury gracza.", L"Jeњli WЈҐCZONE, Skyrider nie bкdzie nic mуwiі.", L"Jeњli WЈҐCZONE, gra bкdzie obci№їaіa procesor w mniejszym stopniu.", - L"Jeњli WЈҐCZONE, gra bкdzie uїyciem "Enhanced Description Box" opisu.", + L"Jeњli WЈҐCZONE, gra bкdzie uїyciem 'Enhanced Description Box' opisu.", }; - STR16 gzGIOScreenText[] = { L"POCZҐTKOWE USTAWIENIA GRY", @@ -4330,7 +4330,7 @@ STR16 gzLateLocalizedString[] = //55 L"Nie moїna kompresowaж czasu, gdy otwarty jest inwentarz sektora.", - L"Nie odnaleziono pіyty nr 2 Jagged Alliance 2 v1.13.", + L"Nie odnaleziono pіyty nr 2 Jagged Alliance 2.", L"Przedmioty zostaіy pomyњlnie poі№czone.", @@ -4535,7 +4535,7 @@ STR16 MPClientMessage[] = STR16 MPHelp[] = { // 0 - L"Welcome to Jagged Alliance2 2 v1.13 Multiplayer", + L"Welcome to JAGGED ALLIANCE 2 v1.13 Multiplayer", L"Press 'F1' for help", L"Multiplayer controls (from strategy screen)", L"* first set up ja2_mp.ini *", diff --git a/Utils/_RussianText.cpp b/Utils/_RussianText.cpp index ba958968..310e7216 100644 --- a/Utils/_RussianText.cpp +++ b/Utils/_RussianText.cpp @@ -1,4 +1,4 @@ - +#pragma setlocale("RUSSIAN") #ifdef PRECOMPILEDHEADERS #include "Utils All.h" #else @@ -243,33 +243,33 @@ CHAR16 Message[][STRING_LENGTH] = L"%s и %s оказывают первую помощь (любая клавиша - отмена).", // the following 17 strings are used to create lists of gun advantages and disadvantages // (separated by commas) - L"надежен", - L"ненадежен", + L"надёжно", + L"ненадёжно", L"простой ремонт", L"сложный ремонт", L"большой урон", L"малый урон", - L"скорострельный", - L"нескоростр.", + L"скорострельное", + L"нескорострельное", L"дальний бой", L"ближний бой", - L"легкий", - L"тяжелый", - L"компактный", - L"очередями", - L"", //нет отсечки очереди + L"лёгкое", + L"тяжёлое", + L"компактное", + L"очередями", //fast burst fire + L"нет отсечки очереди", L"бол.магазин", L"мал.магазин", // In the following two lines, all %s's are merc names - L"%s: камуфляжная краска стерлась.", + L"%s: камуфляжная краска стёрлась.", L"%s: камуфляжная краска смылась.", // The first %s is a merc name and the second %s is an item name L"Второе оружие: закончились патроны!", - L"%s крадет %s.", + L"%s крадёт %s.", // The %s is a merc name @@ -1101,7 +1101,7 @@ CHAR16 gWeaponStatsDesc[][ 16 ] = L"Вес:", //12 L"Оглушение:",//13 // HEADROCK: Added new strings for extended description ** REDUNDANT ** - L"АВТОШТРАФ:", //14 + L"AUTOPEN:", //14 L"AUTO/5:", //15 L"Всего:", //16 @@ -1112,41 +1112,41 @@ CHAR16 gWeaponStatsDesc[][ 16 ] = // changing item type while watching its description box STR16 gzWeaponStatsFasthelp[ 27 ] = { - L"Дальность", - L"Урон", - L"Burst/Auto Penalty", - L"Autofire shots per 5 AP", - L"Точность", - L"Надёжность", - L"Простота ремонта", - L"ОД на вскидку", - L"ОД на 1 выстрел", - L"ОД на огонь с отсечкой", - L"ОД на огонь очередью", - L"ОД на замену магазина", - L"ОД на досылку патрона", - L"Пламегаситель", - L"Шумность (Чем меньше, тем лучше)", - L"To-Hit Modifier", - L"Average Best Laser Range", - L"Aiming Modifier", - L"Min. Range for Aiming Bonus", - L"Bipod Modifier", - L"ОД на бросок", - L"ОД на выстрел", - L"ОД на удар ножом", - L"Не стреляет одиночными!", - L"Нет отсечки патрона!", - L"Нет автоматического режима!", - L"ОД на удар", + L"Дальнобойность", //Range + L"Урон", //Damage + L"Штраф за отдачу при\nстрельбе очередью\n(c отсечкой/без)", //Burst/Auto Penalty + L"Выстрелов в автоматическом\nрежиме за 5 ОД", //Autofire shots per 5 AP + L"Точность", //Accuracy + L"Надёжность", //Reliability + L"Простота ремонта", //Repair Ease + L"ОД на вскидку", //APs to ready + L"ОД на 1 выстрел", //APs to fire Single + L"ОД на огонь с отсечкой", //APs to fire Burst + L"ОД на огонь очередью", //APs to fire Auto + L"ОД на замену магазина", //APs to Reload + L"ОД на досылку патрона", //APs to Reload Manually + L"Пламегаситель", //Flash Suppression + L"Шумность (чем меньше, тем лучше)", //Loudness (Lower is better) + L"Модификатор точности", //To-Hit Modifier + L"Радиус наилучшей видимости\nточки прицеливания", //Average Best Laser Range + L"Модификатор прицельной стрельбы", //Aiming Modifier + L"Минимальная эффективная дальность", //Min. Range for Aiming Bonus + L"Бонус от сошек\n(при стрельбе лёжа)", //Bipod Modifier + L"ОД на бросок", //APs to Throw + L"ОД на выстрел", //APs to Launch + L"ОД на удар ножом", //APs to Stab + L"Не стреляет одиночными!", //No Single Shot! + L"Нет отсечки патрона!", //No Burst Mode! + L"Нет автоматического режима!", //No Auto Mode! + L"ОД на удар", //APs to Bash }; STR16 gzWeaponStatsFasthelpTactical[ 27 ] = { - L"Дальность", + L"Дальнобойность", L"Урон", - L"Burst/Auto Penalty", - L"Autofire shots per 5 AP", + L"Штраф за отдачу при\nстрельбе очередью\n(c отсечкой/без)", + L"Выстрелов в автоматическом\nрежиме за 5 ОД", L"Точность", L"Надёжность", L"Простота ремонта", @@ -1156,13 +1156,13 @@ STR16 gzWeaponStatsFasthelpTactical[ 27 ] = L"ОД на огонь очередью", L"ОД на замену магазина", L"ОД на досылку патрона", - L"To-Hit Modifier", - L"Average Best Laser Range", - L"Aiming Modifier", - L"Min. Range for Aiming Bonus", + L"Модификатор точности", + L"Радиус наилучшей видимости\nточки прицеливания", + L"Модификатор прицельной стрельбы", + L"Минимальная эффективная дальность", L"Пламегаситель", - L"Шумность\n(Чем меньше, тем лучше)", - L"Bipod Modifier", + L"Шумность\n(чем меньше, тем лучше)", + L"Бонус от сошек\n(при стрельбе лёжа)", L"ОД на бросок", L"ОД на выстрел", L"ОД на удар ножом", @@ -1177,17 +1177,17 @@ STR16 gzAmmoStatsFasthelp[ 20 ] = L"Armor Penetration (Lower is better)", L"Bullet Tumble (Higher is better)", L"Pre-impact Explosion (Higher is better)", - L"Трассирующий эффект", - L"Anti-Tank", + L"Трассирующий эффект", //Tracer Effect + L"Кумулятивные", //Anti-Tank L"Lockbuster", - L"Ignores Armor", - L"Acidic", - L"Range Modifier", - L"Damage Modifier", - L"To-Hit Modifier", + L"Игнорируется наличие брони", //Ignores Armor + L"Кислотный эффект", //Acidic + L"Модификатор дальнобойности", //Range Modifier + L"Модификатор урона", //Damage Modifier + L"Модификатор точности", //To-Hit Modifier L"Burst/Auto Penalty Modifier (Higher is better)", - L"Reliability Modifier", - L"Loudness Modifier (Lower is better)", + L"Модификатор надёжности", //Reliability Modifier + L"Модификатор шумности\n(чем меньше, тем лучше)", //Loudness Modifier (Lower is better) L"", L"", L"", @@ -1198,23 +1198,23 @@ STR16 gzAmmoStatsFasthelp[ 20 ] = STR16 gzArmorStatsFasthelp[ 20 ] = { - L"Защита", - L"Покрытие тела\n(чем больше, тем лучше)", - L"Изнашиваемость\n(чем меньше, тем лучше)", - L"Влияние на подвижность", - L"To-Hit Modifier", - L"Камуфляж (Лес)", - L"Камуфляж (Город)", - L"Камуфляж (Пустыня)", - L"Камуфляж (Снег)", - L"Stealth Modifier", - L"Vision Range Modifier", - L"Day Vision Range Modifier", - L"Night Vision Range Modifier", - L"Bright Light Vision Range Modifier", - L"Cave Vision Range Modifier", - L"Tunnel Vision Percentage", - L"Hearing Range Modifier", + L"Защита", //Protection + L"Покрытие тела\n(чем больше, тем лучше)", //Coverage (Higher is better) + L"Изнашиваемость\n(чем меньше, тем лучше)", //Degrade Rate (Lower is better) + L"Влияние на подвижность", //AP Modifier + L"Модификатор точности", //To-Hit Modifier + L"Камуфляж 'Лес'", + L"Камуфляж 'Город'", + L"Камуфляж 'Пустыня'", + L"Камуфляж 'Снег'", + L"Модификатор скрытности", //Stealth Modifier + L"Модификатор диапазона\nвидимости", //Vision Range Modifier + L"Модификатор диапазона\nвидимости днём", //Day Vision Range Modifier + L"Модификатор диапазона\nвидимости ночью", //Night Vision Range Modifier + L"Модификатор диапазона\nвидимости при ярком освещении",//Bright Light Vision Range Modifier + L"Модификатор диапазона\nвидимости в пещере", //Cave Vision Range Modifier + L"Процент видимости в тоннеле", //Tunnel Vision Percentage + L"Модификатор диапазона\nслышимости", //Hearing Range Modifier L"", L"", L"", @@ -1222,14 +1222,14 @@ STR16 gzArmorStatsFasthelp[ 20 ] = STR16 gzExplosiveStatsFasthelp[ 20 ] = { - L"Урон", - L"Оглушение", //отнимает энергию - L"Зона слышимости взрыва\n(чем меньше, тем лучше)", - L"Взрывоопасность!!!\n(чем меньше, тем лучше)", - L"Зона действия взрыва", - L"Начальная зона действия", - L"Максимальная зона действия", - L"Время действия", + L"Урон", //Damage + L"Оглушение", //отнимает энергию //Stun Damage + L"Зона слышимости взрыва\n(чем меньше, тем лучше)", //Blast Loudness (Lower is better) + L"Взрывоопасность!!!\n(чем меньше, тем лучше)", //Volatility!!! (Lower is better) + L"Зона действия взрыва", //Blast Radius + L"Начальная зона действия", //Effect Start Radius + L"Конечная зона действия", //Effect Final Radius + L"Время действия", //Effect Duration L"", L"", L"", @@ -1247,13 +1247,13 @@ STR16 gzExplosiveStatsFasthelp[ 20 ] = STR16 gzMiscItemStatsFasthelp[ 34 ] = { L"Item Size Modifier (Lower is better)", // 0 - L"Reliability Modifier", - L"Loudness Modifier (Lower is better)", - L"Hides Muzzle Flash", - L"Bipod Modifier", - L"Range Modifier", // 5 - L"To-Hit Modifier", - L"Best Laser Range", + L"Модификатор надёжности", //Reliability Modifier + L"Модификатор шумности\n(чем меньше, тем лучше)", //Loudness Modifier (Lower is better) + L"Скрывает вспышку", //Hides Muzzle Flash + L"Модификатор сошек", //Bipod Modifier + L"Модификатор дальнобойности", // 5 //Range Modifier + L"Модификатор точности", //To-Hit Modifier + L"Радиус наилучшей видимости\nточки прицеливания", //Best Laser Range L"Aiming Bonus Modifier", L"Burst Size Modifier", L"Burst Penalty Modifier (Higher is better)", // 10 @@ -1263,23 +1263,23 @@ STR16 gzMiscItemStatsFasthelp[ 34 ] = L"AP to Auto-Fire Modifier (Lower is better)", L"AP to Ready Modifier (Lower is better)", // 15 L"AP to Reload Modifier (Lower is better)", - L"Magazine Size Modifier", + L"Модификатор объёма магазина", //Magazine Size Modifier L"AP to Attack Modifier (Lower is better)", - L"Damage Modifier", + L"Модификатор урона", //Damage Modifier L"Melee Damage Modifier", // 20 - L"Камуфляж (Лес)", - L"Камуфляж (Город)", - L"Камуфляж (Пустыня)", - L"Камуфляж (Снег)", - L"Stealth Modifier", // 25 - L"Hearing Range Modifier", - L"Vision Range Modifier", - L"Day Vision Range Modifier", - L"Night Vision Range Modifier", - L"Bright Light Vision Range Modifier", //30 - L"Cave Vision Range Modifier", - L"Tunnel Vision Percentage (Lower is better)", - L"Minimum Range for Aiming Bonus", + L"Камуфляж 'Лес'", + L"Камуфляж 'Город'", + L"Камуфляж 'Пустыня'", + L"Камуфляж 'Снег'", + L"Модификатор скрытности", // 25 + L"Модификатор диапазона\nслышимости", + L"Модификатор диапазона\nвидимости", + L"Модификатор диапазона\nвидимости днём", + L"Модификатор диапазона\nвидимости ночью", + L"Модификатор диапазона\nвидимости при ярком освещении", //30 + L"Модификатор диапазона\nвидимости в пещере", + L"Процент видимости в тоннеле\n(чем меньше, тем лучше)", //Tunnel Vision Percentage (Lower is better) + L"Минимальная эффективная\nдальность оптики", //Minimum Range for Aiming Bonus }; // HEADROCK: End new tooltip text @@ -3683,7 +3683,7 @@ STR16 zOptionsToggleText[] = L"Автосохранение каждый ход", L"Молчаливый пилот вертолёта", L"Низкая загрузка процессора", - L"Расширенное описание предметов", //Enhanced Description Box + L"Подробное описание предметов", //Enhanced Description Box }; //This is the help text associated with the above toggles. @@ -3729,7 +3729,7 @@ STR16 zOptionsScreenHelpText[] = L"Если включено, то используется метрическая система мер,\nиначе будет британская.", //Merc Lighted movement - L"При ходьбе карта подсвечивается вокруг бойца (|G).\nВыключите опцию для повышения производительности системы.", + L"При ходьбе карта подсвечивается вокруг бойца (|G).\nОтключите эту настройку для повышения производительности системы.", //Smart cursor L"Если включено, то перемещение курсора возле наемника\nавтоматически выбирает его.", @@ -3764,7 +3764,7 @@ STR16 zOptionsScreenHelpText[] = L"Если включено, игра будет автоматически сохраняться\nпосле каждого хода игрока.", L"Если включено, Небесный Всадник\nне будет вас раздражать болтливостью.", L"Если включено, игра будет использовать\nменьше процессорного времени.", - L"Если включено, будет задействовано\nрасширенное описание предметов.", //EDB description + L"Если включено, будет задействовано\nподробное описание предметов.", //EDB description }; @@ -3910,7 +3910,7 @@ STR16 pMessageStrings[] = L"Эта ячейка зарезервирована для Быстрого Сохранения, которое можно провести с тактической карты или с глобальной карты, нажав клавиши ALT+S.", L"Открытая", L"Закрытая", - L"У вас заканчивается свободное дисковое пространство. На диске есть всего %sMб свободного места, а для Jagged Alliance 2 v1.13 требуется %sMб.", + L"У вас заканчивается свободное дисковое пространство. На диске есть всего %sMб свободного места, а для Jagged Alliance 2 требуется %sMб.", L"Из A.I.M. нанят боец %s.", L"%s ловит %s.", //'Merc name' has caught 'item' -- let SirTech know if name comes after item. L"%s принимает препарат.", //'Merc name' has taken the drug @@ -4539,7 +4539,7 @@ STR16 MPClientMessage[] = STR16 MPHelp[] = { // 0 - L"Запущена сетевая игра Jagged Alliance 2 v1.13", + L"Запущена сетевая игра Jagged Alliance 2", L"Нажмите F1 для просмотра помощи.", L"Управление сетевой игрой (на стратегическом экране)", L"* Сперва установите настройки в файле ja2_mp.ini *", diff --git a/ja2_2005Express.vcproj b/ja2_2005Express.vcproj index a0f36ab8..32b4d37e 100644 --- a/ja2_2005Express.vcproj +++ b/ja2_2005Express.vcproj @@ -66,7 +66,7 @@