[Scummvm-git-logs] scummvm master -> 0b038463ffc9d7222ca8f9e2b45adc79254d4c37
sev-
sev at scummvm.org
Mon Aug 2 15:35:36 UTC 2021
This automated email contains information about 24 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
a6afb2be20 XEEN: RU Initial commit
dcf3bb19b5 XEEN: RU Translated constants.cpp
66097d4e39 XEEN: RU Added plural forms for "days" in char info
3d6371c4f0 XEEN: RU Working on 8-bit font
f25b9c9c58 XEEN: RU Move plural forms to constants
cfcf36383f XEEN: RU Added plural forms for "days"
516f8d8824 XEEN: RU Combine multiple language constants in one ccs file
d18f2bb219 XEEN: RU Split language constants
84ad41f685 XEEN: RU Further sharpening ru translation
d3624575a7 XEEN: RU Working on gender and plural forms
325eb338fe XEEN: RU Further sharpening
9f80f452e4 XEEN: RU Translated all constants.h strings for Clouds. Ready for test.
15063fb740 XEEN: RU change hotkeys in dialogs_char_info, dialogs_control_panel
587031a2e5 XEEN: RU Further sharpening
b16ab4382e XEEN: RU Moving translated hotkeys to resources.
3bba21845d XEEN: RU Moving translated hotkeys to resources.
2da836da6c XEEN: RU Moving translated hotkeys to resources.
b655cfc03e XEEN: RU Moving translated hotkeys to resources.
33fb7a9284 XEEN: RU Fix some errors
6fd4f3ba2e XEEN: RU Fix some errors
21c727b2c7 XEEN: RU Fixed names according to conventions
805f55f1cd XEEN: RU Fixed some localized strings. Fixed intro subtitles.
4ea20488cc XEEN: RU create_xeen removed const in int return
0b038463ff XEEN: RU Fixed item materials
Commit: a6afb2be203765bcdf787a762ddeab3a821c5f4d
https://github.com/scummvm/scummvm/commit/a6afb2be203765bcdf787a762ddeab3a821c5f4d
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Initial commit
Extended font support
Changed paths:
dists/engine-data/xeen.ccs
engines/xeen/font.cpp
diff --git a/dists/engine-data/xeen.ccs b/dists/engine-data/xeen.ccs
index ca916053cd..9737dcf0e2 100644
Binary files a/dists/engine-data/xeen.ccs and b/dists/engine-data/xeen.ccs differ
diff --git a/engines/xeen/font.cpp b/engines/xeen/font.cpp
index d5f05bac0a..de1bfdfacf 100644
--- a/engines/xeen/font.cpp
+++ b/engines/xeen/font.cpp
@@ -20,6 +20,7 @@
*
*/
+#include "common/config-manager.h"
#include "common/endian.h"
#include "xeen/font.h"
#include "xeen/resources.h"
@@ -34,15 +35,60 @@ byte FontData::_bgColor;
bool FontData::_fontReduced;
Justify FontData::_fontJustify;
+Common::Language lang;
+int offset_fntEn;
+int offset_fntEnReduced;
+int offset_fntNonEn;
+int offset_fntNonEnReduced;
+int offset_fntEnW;
+int offset_fntEnReducedW;
+int offset_fntNonEnW;
+int offset_fntNonEnReducedW;
+
+
FontSurface::FontSurface() : XSurface(), _msgWraps(false), _displayString(nullptr),
_writePos(*FontData::_fontWritePos) {
setTextColor(0);
+
+ lang = Common::parseLanguage(ConfMan.get("language"));
+ if (Common::RU_RUS == lang) {
+ offset_fntEn = 0x0000;
+ offset_fntNonEn = 0x0800;
+ offset_fntEnReduced = 0x1000;
+ offset_fntNonEnReduced = 0x1800;
+ offset_fntEnW = 0x2000;
+ offset_fntNonEnW = 0x2080;
+ offset_fntEnReducedW = 0x2100;
+ offset_fntNonEnReducedW = 0x2180;
+ } else {
+ offset_fntEn = 0x0000;
+ offset_fntEnReduced = 0x0800;
+ offset_fntEnW = 0x1000;
+ offset_fntEnReducedW = 0x1080;
+ }
}
FontSurface::FontSurface(int wv, int hv) : XSurface(wv, hv),
_msgWraps(false), _displayString(nullptr), _writePos(*FontData::_fontWritePos) {
create(w, h);
setTextColor(0);
+
+ lang = Common::parseLanguage(ConfMan.get("language"));
+ if (Common::RU_RUS == lang) {
+ offset_fntEn = 0x0000;
+ offset_fntNonEn = 0x0800;
+ offset_fntEnReduced = 0x1000;
+ offset_fntNonEnReduced = 0x1800;
+ offset_fntEnW = 0x2000;
+ offset_fntNonEnW = 0x2080;
+ offset_fntEnReducedW = 0x2100;
+ offset_fntNonEnReducedW = 0x2180;
+ } else {
+ offset_fntEn = 0x0000;
+ offset_fntEnReduced = 0x0800;
+ offset_fntEnW = 0x1000;
+ offset_fntEnReducedW = 0x1080;
+ }
}
void FontSurface::writeSymbol(int symbolId) {
@@ -193,7 +239,11 @@ const char *FontSurface::writeString(const Common::String &s, const Common::Rect
} else {
if (c == 6)
c = ' ';
- byte charSize = _fontData[0x1000 + (int)c + (_fontReduced ? 0x80 : 0)];
+ int offset_charW = c < 0 ?
+ (_fontReduced ? offset_fntNonEnReducedW : offset_fntNonEnW) + (int)(0x80 + c) :
+ (_fontReduced ? offset_fntEnReducedW : offset_fntEnW) + (int)c;
+ byte charSize = _fontData[offset_charW];
+
_writePos.x -= charSize;
}
@@ -230,9 +280,13 @@ const char *FontSurface::writeString(const Common::String &s, const Common::Rect
idx = 0;
setTextColor(idx);
} else if (c < ' ') {
- // End of string or invalid command
- _displayString = nullptr;
- break;
+ if (Common::RU_RUS == lang && c < 0) {
+ writeChar(c, bounds);
+ } else {
+ // End of string or invalid command
+ _displayString = nullptr;
+ break;
+ }
} else {
// Standard character - write it out
writeChar(c, bounds);
@@ -257,14 +311,16 @@ void FontSurface::writeCharacter(char c, const Common::Rect &clipRect) {
}
char FontSurface::getNextChar() {
- return *_displayString++ & 0x7f;
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language")))
+ return *_displayString++;
+ return *_displayString++ & 0x7f;
}
bool FontSurface::getNextCharWidth(int &total) {
- char c = getNextChar();
+ char c = getNextChar();
if (c > ' ') {
- total += _fontData[0x1000 + (int)c + (_fontReduced ? 0x80 : 0)];
+ total += _fontData[(_fontReduced ? offset_fntEnReducedW : offset_fntEnW) + (int)c];
return false;
} else if (c == ' ') {
total += 4;
@@ -283,6 +339,9 @@ bool FontSurface::getNextCharWidth(int &total) {
if (c != 'd')
getNextChar();
return false;
+ } else if (Common::RU_RUS == lang && c < 0) {
+ total += _fontData[(_fontReduced ? offset_fntNonEnReducedW : offset_fntNonEnW) + (int)(0x80 + c)];
+ return false;
} else {
--_displayString;
return true;
@@ -333,8 +392,16 @@ void FontSurface::writeChar(char c, const Common::Rect &clipRect) {
int yStart = y;
// Get pointers into font data and surface to write pixels to
- int charIndex = (int)c + (_fontReduced ? 0x80 : 0);
- const byte *srcP = &_fontData[charIndex * 16];
+ int offset_charData;
+ int offset_charW;
+ if (Common::RU_RUS == lang && c < 0) {
+ offset_charData = (_fontReduced ? offset_fntNonEnReduced : offset_fntNonEn) + (int)(0x80 + c) * 16;
+ offset_charW = (_fontReduced ? offset_fntNonEnReducedW : offset_fntNonEnW) + (int)(0x80 + c);
+ } else {
+ offset_charData = (_fontReduced ? offset_fntEnReduced : offset_fntEn) + (int)c * 16;
+ offset_charW = (_fontReduced ? offset_fntEnReducedW : offset_fntEnW) + (int)c;
+ }
+ const byte *srcP = &_fontData[offset_charData];
for (int yp = 0; yp < FONT_HEIGHT; ++yp, ++y) {
uint16 lineData = READ_LE_UINT16(srcP); srcP += 2;
@@ -357,7 +424,7 @@ void FontSurface::writeChar(char c, const Common::Rect &clipRect) {
addDirtyRect(Common::Rect(_writePos.x, yStart, _writePos.x + FONT_WIDTH,
yStart + FONT_HEIGHT));
- _writePos.x += _fontData[0x1000 + charIndex];
+ _writePos.x += _fontData[offset_charW];
}
} // End of namespace Xeen
Commit: dcf3bb19b586c5a5fbe536a5f5ef8e8885697065
https://github.com/scummvm/scummvm/commit/dcf3bb19b586c5a5fbe536a5f5ef8e8885697065
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Translated constants.cpp
Changed paths:
devtools/create_xeen/constants.cpp
diff --git a/devtools/create_xeen/constants.cpp b/devtools/create_xeen/constants.cpp
index ef977b21ab..97a2d4f88d 100644
--- a/devtools/create_xeen/constants.cpp
+++ b/devtools/create_xeen/constants.cpp
@@ -20,7 +20,7 @@
*
*/
- // Disable symbol overrides so that we can use system headers.
+// Disable symbol overrides so that we can use system headers.
#define FORBIDDEN_SYMBOL_ALLOW_ALL
// HACK to allow building with the SDL backend on MinGW
@@ -33,667 +33,759 @@
#include "constants.h"
enum MagicSpell {
- MS_AcidSpray = 0, MS_Awaken = 1, MS_BeastMaster = 2, MS_Bless = 3,
- MS_Clairvoyance = 4, MS_ColdRay = 5, MS_CreateFood = 6,
- MS_CureDisease = 7, MS_CureParalysis = 8, MS_CurePoison = 9,
- MS_CureWounds = 10, MS_DancingSword = 11, MS_DayOfProtection = 12,
- MS_DayOfSorcery = 13, MS_DeadlySwarm = 14, MS_DetectMonster = 15,
- MS_DivineIntervention = 16, MS_DragonSleep = 17, MS_ElementalStorm = 18,
- MS_EnchantItem = 19, MS_EnergyBlast = 20, MS_Etheralize = 21,
- MS_FantasticFreeze = 22, MS_FieryFlail = 23, MS_FingerOfDeath = 24,
- MS_Fireball = 25, MS_FirstAid = 26, MS_FlyingFist = 27,
- MS_FrostBite = 28, MS_GolemStopper = 29, MS_Heroism = 30,
- MS_HolyBonus = 31, MS_HolyWord = 32, MS_Hynotize = 33,
- MS_IdentifyMonster = 34, MS_Implosion = 35, MS_Incinerate = 36,
- MS_Inferno = 37, MS_InsectSpray = 38, MS_ItemToGold = 39,
- MS_Jump = 40, MS_Levitate = 41, MS_Light = 42, MS_LightningBolt = 43,
- MS_LloydsBeacon = 44, MS_MagicArrow = 45, MS_MassDistortion = 46,
- MS_MegaVolts = 47, MS_MoonRay = 48, MS_NaturesCure = 49, MS_Pain = 50,
- MS_PoisonVolley = 51, MS_PowerCure = 52, MS_PowerShield = 53,
- MS_PrismaticLight = 54, MS_ProtFromElements = 55, MS_RaiseDead = 56,
- MS_RechargeItem = 57, MS_Resurrection = 58, MS_Revitalize = 59,
- MS_Shrapmetal = 60, MS_Sleep = 61, MS_Sparks = 62, MS_StarBurst = 63,
- MS_StoneToFlesh = 64, MS_SunRay = 65, MS_SuperShelter = 66,
- MS_SuppressDisease = 67, MS_SuppressPoison = 68, MS_Teleport = 69,
- MS_TimeDistortion = 70, MS_TownPortal = 71, MS_ToxicCloud = 72,
- MS_TurnUndead = 73, MS_WalkOnWater = 74, MS_WizardEye = 75,
- NO_SPELL = 76
-};
-
-static const char *const CLOUDS_CREDITS =
- "\v012\t000\x3""c\f35Designed and Directed By:\n"
- "\f17Jon Van Caneghem\x3l\n"
- "\n"
- "\t025\f35Programming:\n"
- "\t035\f17Mark Caldwell\n"
- "\t035Dave Hathaway\n"
- "\n"
- "\t025\f35Sound System & FX:\n"
- "\t035\f17Todd Hendrix\n"
- "\n"
- "\t025\f35Music & Speech:\n"
- "\t035\f17Tim Tully\n"
- "\n"
- "\t025\f35Writing:\n"
- "\t035\f17Paul Rattner\n"
- "\t035Debbie Murphy\n"
- "\t035Jon Van Caneghem\v012\n"
- "\n"
- "\n"
- "\t180\f35Graphics:\n"
- "\t190\f17Louis Johnson\n"
- "\t190Jonathan P. Gwyn\n"
- "\t190Bonita Long-Hemsath\n"
- "\t190Julia Ulano\n"
- "\t190Ricardo Barrera\n"
- "\n"
- "\t180\f35Testing:\n"
- "\t190\f17Benjamin Bent\n"
- "\t190Mario Escamilla\n"
- "\t190Richard Espy\n"
- "\t190Scott McDaniel\n"
- "\t190Clayton Retzer\n"
- "\t190Michael Suarez\x3""c";
-
-static const char *const DARK_SIDE_CREDITS =
- "\v012\t000\x3""c\f35Designed and Directed By:\n"
- "\f17Jon Van Caneghem\x3l\n"
- "\n"
- "\t025\f35Programming:\n"
- "\t035\f17Mark Caldwell\n"
- "\t035Dave Hathaway\n"
- "\n"
- "\t025\f35Sound System & FX:\n"
- "\t035\f17Mike Heilemann\n"
- "\n"
- "\t025\f35Music & Speech:\n"
- "\t035\f17Tim Tully\n"
- "\n"
- "\t025\f35Writing:\n"
- "\t035\f17Paul Rattner\n"
- "\t035Debbie Van Caneghem\n"
- "\t035Jon Van Caneghem\v012\n"
- "\n"
- "\n"
- "\t180\f35Graphics:\n"
- "\t190\f17Jonathan P. Gwyn\n"
- "\t190Bonita Long-Hemsath\n"
- "\t190Julia Ulano\n"
- "\t190Ricardo Barrera\n"
- "\n"
- "\t180\f35Testing:\n"
- "\t190\f17Benjamin Bent\n"
- "\t190Christian Dailey\n"
- "\t190Mario Escamilla\n"
- "\t190Marco Hunter\n"
- "\t190Robert J. Lupo\n"
- "\t190Clayton Retzer\n"
- "\t190David Vela\x3""c";
-static const char *const SWORDS_CREDITS1 =
- "\v012\x3""c\f35Published By New World Computing, Inc.\f17\n"
- "Developed By CATware, Inc.\x3l\n"
- "\f01Design and Direction\t180Series Created by\n"
- "\t020Bill Fawcett\t190John Van Caneghem\n"
- "\n"
- "\t010Story Contributions\t180Producer & Manual\n"
- "\t020Ellen Guon\t190Dean Rettig\n"
- "\n"
- "\t010Programming & Ideas\t180Original Programming\n"
- "\t020David Potter\t190Mark Caldwell\n"
- "\t020Rod Retterath\t190Dave Hathaway\n"
- "\n"
- "\t010Manual Illustrations\t180Graphic Artists\n"
- "\t020Todd Cameron Hamilton\t190Jonathan P. Gwyn\n"
- "\t020James Clouse\t190Bonnie Long-Hemsath\n"
- "\t190Julia Ulano\n"
- "\t190Ricardo Barrera\n";
-static const char *const SWORDS_CREDITS2 =
- "\f05\v012\t000\x3l\n"
- "\t100Sound Programming\n"
- "\t110Todd Hendrix\n"
- "\n"
- "\t100Music\n"
- "\t110Tim Tully\n"
- "\t110Quality Assurance Manager\n"
- "\t110Peter Ryu\n"
- "\t100Testers\n"
- "\t110Walter Johnson\n"
- "\t110Bryan Farina\n"
- "\t110David Baton\n"
- "\t110Jack Nalls\n";
-
-static const char *const OPTIONS_MENU =
- "\r\x1\x3""c\fdMight and Magic Options\n"
- "%s of Xeen\x2\n"
- "\v%.3dCopyright (c) %d NWC, Inc.\n"
- "All Rights Reserved\x1";
-static const char *const GAME_NAMES[3] = { "Clouds", "Darkside", "World" };
-
-static const char *const THE_PARTY_NEEDS_REST = "\v012The Party needs rest!";
-
-static const char *const WHO_WILL = "\x3""c\v000\t000%s\n\n"
- "Who will\n%s?\n\v055F1 - F%d";
-
-static const char *const HOW_MUCH = "\x3""cHow Much\n\n";
-
-static const char *const WHATS_THE_PASSWORD = "\x3""cWhat's the Password?\n"
- "\n"
- "Please turn to page %u, go to\n"
- "line %u, and type in word %u.\v067\t000Spaces are not counted as words or lines. "
- "Hyphenated words are treated as one word. Any line that has any text is considered a line."
- "\x3""c\v040\t000\n";
-
-static const char *const PASSWORD_INCORRECT = "\x3""c\v040\n"
- "\f32Incorrect!\fd";
-
-static const char *const IN_NO_CONDITION = "\v007%s is not in any condition to perform actions!";
-
-static const char *const NOTHING_HERE = "\x3""c\v010Nothing here.";
-
-static const char *const TERRAIN_TYPES[6] = {
- "town", "cave", "towr", "cstl", "dung", "scfi"
-};
-
-static const char *const OUTDOORS_WALL_TYPES[16] = {
- nullptr, "mount", "ltree", "dtree", "grass", "snotree", "dsnotree",
- "snomnt", "dedltree", "mount", "lavamnt", "palm", "dmount", "dedltree",
- "dedltree", "dedltree"
-};
-
-static const char *const SURFACE_NAMES[16] = {
- "water.srf", "dirt.srf", "grass.srf", "snow.srf", "swamp.srf",
- "lava.srf", "desert.srf", "road.srf", "dwater.srf", "tflr.srf",
- "sky.srf", "croad.srf", "sewer.srf", "cloud.srf", "scortch.srf",
- "space.srf"
-};
-
-static const char *const WHO_ACTIONS[32] = {
- "search", "open", "drink", "mine", "touch", "read", "learn", "take",
- "bang", "steal", "bribe", "pay", "sit", "try", "turn", "bathe",
- "destroy", "pull", "descend", "toss a coin", "pray", "join", "act",
- "play", "push", "rub", "pick", "eat", "sign", "close", "look", "try"
-};
-
-static const char *const WHO_WILL_ACTIONS[4] = {
- "Open Grate", "Open Door", "Open Scroll", "Select Char"
+ MS_AcidSpray = 0, MS_Awaken = 1, MS_BeastMaster = 2, MS_Bless = 3,
+ MS_Clairvoyance = 4, MS_ColdRay = 5, MS_CreateFood = 6,
+ MS_CureDisease = 7, MS_CureParalysis = 8, MS_CurePoison = 9,
+ MS_CureWounds = 10, MS_DancingSword = 11, MS_DayOfProtection = 12,
+ MS_DayOfSorcery = 13, MS_DeadlySwarm = 14, MS_DetectMonster = 15,
+ MS_DivineIntervention = 16, MS_DragonSleep = 17, MS_ElementalStorm = 18,
+ MS_EnchantItem = 19, MS_EnergyBlast = 20, MS_Etheralize = 21,
+ MS_FantasticFreeze = 22, MS_FieryFlail = 23, MS_FingerOfDeath = 24,
+ MS_Fireball = 25, MS_FirstAid = 26, MS_FlyingFist = 27,
+ MS_FrostBite = 28, MS_GolemStopper = 29, MS_Heroism = 30,
+ MS_HolyBonus = 31, MS_HolyWord = 32, MS_Hynotize = 33,
+ MS_IdentifyMonster = 34, MS_Implosion = 35, MS_Incinerate = 36,
+ MS_Inferno = 37, MS_InsectSpray = 38, MS_ItemToGold = 39,
+ MS_Jump = 40, MS_Levitate = 41, MS_Light = 42, MS_LightningBolt = 43,
+ MS_LloydsBeacon = 44, MS_MagicArrow = 45, MS_MassDistortion = 46,
+ MS_MegaVolts = 47, MS_MoonRay = 48, MS_NaturesCure = 49, MS_Pain = 50,
+ MS_PoisonVolley = 51, MS_PowerCure = 52, MS_PowerShield = 53,
+ MS_PrismaticLight = 54, MS_ProtFromElements = 55, MS_RaiseDead = 56,
+ MS_RechargeItem = 57, MS_Resurrection = 58, MS_Revitalize = 59,
+ MS_Shrapmetal = 60, MS_Sleep = 61, MS_Sparks = 62, MS_StarBurst = 63,
+ MS_StoneToFlesh = 64, MS_SunRay = 65, MS_SuperShelter = 66,
+ MS_SuppressDisease = 67, MS_SuppressPoison = 68, MS_Teleport = 69,
+ MS_TimeDistortion = 70, MS_TownPortal = 71, MS_ToxicCloud = 72,
+ MS_TurnUndead = 73, MS_WalkOnWater = 74, MS_WizardEye = 75,
+ NO_SPELL = 76
+};
+
+static const char* const CLOUDS_CREDITS =
+ "\v012\t000\x3""c\f35¤¥ï ¨ à㪮¢®¤á⢮ ¯à®¥ªâ®¬:\n"
+ "\f17¦® ¥£¥¬\x3""l\n"
+ "\n"
+ "\t025\f35à®£à ¬¬¨áâë:\n"
+ "\t035\f17 ઠ®«¤ãí««\n"
+ "\t035¥©¢ íâíãí©\n"
+ "\n"
+ "\t025\f35㤨®á¨á⥬ ¨ §¢ãª:\n"
+ "\t035\f17®¤¤ ¥¤à¨ªá\n"
+ "\n"
+ "\t025\f35ã§ëª ¨ à¥çì:\n"
+ "\t035\f17¨¬ ««¨\n"
+ "\n"
+ "\t025\f35æ¥ à¨©:\n"
+ "\t035\f17®« â¥à\n"
+ "\t035¥¡¡¨ ñàä¨\n"
+ "\t035¦® ¥£¥¬\v012\n"
+ "\n"
+ "\n"
+ "\t180\f35㤮¦¨ª¨:\n"
+ "\t190\f17㨠¦®á®\n"
+ "\t190¦® â . ¢¨\n"
+ "\t190®¨â ®£-¥¬á â\n"
+ "\t190¦ã«¨ï « ®\n"
+ "\t190¨ª म àà¥à \n"
+ "\n"
+ "\t180\f35¥áâ¥àë:\n"
+ "\t190\f17¥¤¦ ¬¨ ¥â\n"
+ "\t190 ਮ ᪠¬¨«« \n"
+ "\t190¨ç ठᯨ\n"
+ "\t190ª®ââ ª¤í¨¥«\n"
+ "\t190«¥©â® ¥â§¥à\n"
+ "\t190 ©ª« ã à¥á\x3""c";
+
+static const char* const DARK_SIDE_CREDITS =
+ "\v012\t000\x3""c\f35Designed and Directed By:\n"
+ "\f17Jon Van Caneghem\x3l\n"
+ "\n"
+ "\t025\f35Programming:\n"
+ "\t035\f17Mark Caldwell\n"
+ "\t035Dave Hathaway\n"
+ "\n"
+ "\t025\f35Sound System & FX:\n"
+ "\t035\f17Mike Heilemann\n"
+ "\n"
+ "\t025\f35Music & Speech:\n"
+ "\t035\f17Tim Tully\n"
+ "\n"
+ "\t025\f35Writing:\n"
+ "\t035\f17Paul Rattner\n"
+ "\t035Debbie Van Caneghem\n"
+ "\t035Jon Van Caneghem\v012\n"
+ "\n"
+ "\n"
+ "\t180\f35Graphics:\n"
+ "\t190\f17Jonathan P. Gwyn\n"
+ "\t190Bonita Long-Hemsath\n"
+ "\t190Julia Ulano\n"
+ "\t190Ricardo Barrera\n"
+ "\n"
+ "\t180\f35Testing:\n"
+ "\t190\f17Benjamin Bent\n"
+ "\t190Christian Dailey\n"
+ "\t190Mario Escamilla\n"
+ "\t190Marco Hunter\n"
+ "\t190Robert J. Lupo\n"
+ "\t190Clayton Retzer\n"
+ "\t190David Vela\x3""c";
+
+static const char* const SWORDS_CREDITS1 =
+ "\v012\x3""c\f35Published By New World Computing, Inc.\f17\n"
+ "Developed By CATware, Inc.\x3l\n"
+ "\f01Design and Direction\t180Series Created by\n"
+ "\t020Bill Fawcett\t190John Van Caneghem\n"
+ "\n"
+ "\t010Story Contributions\t180Producer & Manual\n"
+ "\t020Ellen Guon\t190Dean Rettig\n"
+ "\n"
+ "\t010Programming & Ideas\t180Original Programming\n"
+ "\t020David Potter\t190Mark Caldwell\n"
+ "\t020Rod Retterath\t190Dave Hathaway\n"
+ "\n"
+ "\t010Manual Illustrations\t180Graphic Artists\n"
+ "\t020Todd Cameron Hamilton\t190Jonathan P. Gwyn\n"
+ "\t020James Clouse\t190Bonnie Long-Hemsath\n"
+ "\t190Julia Ulano\n"
+ "\t190Ricardo Barrera\n";
+
+static const char* const SWORDS_CREDITS2 =
+ "\f05\v012\t000\x3l\n"
+ "\t100Sound Programming\n"
+ "\t110Todd Hendrix\n"
+ "\n"
+ "\t100Music\n"
+ "\t110Tim Tully\n"
+ "\t110Quality Assurance Manager\n"
+ "\t110Peter Ryu\n"
+ "\t100Testers\n"
+ "\t110Walter Johnson\n"
+ "\t110Bryan Farina\n"
+ "\t110David Baton\n"
+ "\t110Jack Nalls\n";
+
+static const char* const OPTIONS_MENU =
+ "\r\x1\x3""c\fd¥ç ¨ £¨ï\n"
+ "%s ᨠ\x2\n"
+ "\v%.3dCopyright (c) %d NWC, Inc.\n"
+ "All Rights Reserved\x1";
+static const char* const GAME_NAMES[3] = { "¡« ª ", "Darkside", "World" };
+
+static const char* const THE_PARTY_NEEDS_REST =
+ "\v012âàï¤ ã¦¤ ¥âáï ¢ ®â¤ëå¥!";
+
+static const char* const WHO_WILL = "\x3""c\v000\t000%s\n\n%s?\n\v055F1 - F%d";
+
+static const char* const HOW_MUCH = "\x3""cª®«ìª®\n\n";
+
+static const char* const WHATS_THE_PASSWORD = "\x3""cWhat's the Password?\n"
+ "\n"
+ "Please turn to page %u, go to\n"
+ "line %u, and type in word %u.\v067\t000Spaces are not counted as words or lines. "
+ "Hyphenated words are treated as one word. Any line that has any text is considered a line."
+ "\x3""c\v040\t000\n";
+
+static const char* const PASSWORD_INCORRECT = "\x3""c\v040\n\f32Incorrect!\fd";
+
+static const char* const IN_NO_CONDITION =
+ "\v007%s ¥ ¢ á®áâ®ï¨¨ çâ®-«¨¡® ᤥ« âì!";
+
+static const char* const NOTHING_HERE = "\x3""c\v010¤¥áì ¨ç¥£® ¥â.";
+
+static const char* const TERRAIN_TYPES[6] = {
+ "town", "cave", "towr", "cstl", "dung", "scfi"
+};
+
+static const char* const OUTDOORS_WALL_TYPES[16] = {
+ nullptr, "mount", "ltree", "dtree", "grass", "snotree", "dsnotree",
+ "snomnt", "dedltree", "mount", "lavamnt", "palm", "dmount", "dedltree",
+ "dedltree", "dedltree"
+};
+
+static const char* const SURFACE_NAMES[16] = {
+ "water.srf", "dirt.srf", "grass.srf", "snow.srf", "swamp.srf",
+ "lava.srf", "desert.srf", "road.srf", "dwater.srf", "tflr.srf",
+ "sky.srf", "croad.srf", "sewer.srf", "cloud.srf", "scortch.srf",
+ "space.srf"
+};
+
+static const char* const WHO_ACTIONS[32] = {
+ "â® ®¡ëé¥â",
+ "â® ®âªà®¥â",
+ "â® ¢ë¯ì¥â",
+ "â® ¡ã¤¥â ª®¯ âì",
+ "â® ¯®âண ¥â",
+ "â® ¯à®çâñâ",
+ "®£® ãç¨âì",
+ "â® ¢®§ì¬ñâ",
+ "⮠㤠à¨â",
+ "â® ãªà ¤ñâ",
+ "â® ¤ áâ ¢§ïâªã",
+ "â® § ¯« â¨â",
+ "â® ¯à¨á拉â",
+ "â® ¯®¯à®¡ã¥â",
+ "â® ¥£® ¯®¢¥àñâ",
+ "â® ¨áªã¯ñâáï",
+ "â® ¥£® ã¨ç⮦¨â",
+ "â® ¢ë¤¥à¥â",
+ "â® á¯ãáâ¨âáï",
+ "â® ¡à®á¨â ¬®¥âªã",
+ "pray",
+ "â® áâ ¥â ç«¥®¬",
+ "act",
+ "â® å®ç¥â áë£à âì",
+ "â® ¦¬ñâ",
+ "rub",
+ "pick",
+ "eat",
+ "sign",
+ "close",
+ "look",
+ "try"
+};
+
+static const char* const WHO_WILL_ACTIONS[4] = {
+ "âªàëâì à¥èñâªã",
+ "âªàëâì ¤¢¥àì",
+ " áªàëâì ᢨ⮪",
+ "ë¡¥à¨â¥ ¯¥àá® ¦ "
};
static const byte SYMBOLS[20][64] = {
- { // 0
- 0x00, 0x00, 0xA8, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x00, 0xA8, 0x9E, 0x9C, 0x9C, 0x9E, 0x9E, 0x9E,
- 0xAC, 0x9C, 0xA4, 0xAC, 0xAC, 0x9A, 0x9A, 0x9A, 0xAC, 0x9E, 0xAC, 0xA8, 0xA8, 0xA6, 0x97, 0x98,
- 0xAC, 0xA0, 0xAC, 0xAC, 0xA4, 0xA6, 0x98, 0x99, 0x00, 0xAC, 0xA0, 0xA0, 0xA8, 0xAC, 0x9A, 0x9A,
- 0x00, 0x00, 0xAC, 0xAC, 0xAC, 0xA4, 0x9B, 0x9A, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xA0, 0x9B, 0x9B,
- },
- { // 1
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
- 0x99, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x99, 0x98, 0x98, 0x98, 0x97, 0x97, 0x97, 0x97, 0x97,
- 0x99, 0x98, 0x98, 0x99, 0x98, 0x98, 0x99, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
- 0x9A, 0x9B, 0x9B, 0x9C, 0x9B, 0x9A, 0x9C, 0x9A, 0x9B, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x9A, 0x9B,
- },
- { // 2
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
- 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x99, 0x98, 0x98, 0x99, 0x98, 0x98, 0x97, 0x98, 0x98,
- 0x99, 0x98, 0x98, 0x98, 0x99, 0x99, 0x98, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
- 0x9B, 0x9B, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9B, 0x99, 0x9A, 0x9B, 0x9B, 0x9A, 0x9A, 0x99, 0x9A,
- },
- { // 3
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
- 0x99, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x98, 0x98, 0x97, 0x97, 0x98, 0x98, 0x98, 0x98,
- 0x99, 0x99, 0x98, 0x99, 0x98, 0x98, 0x99, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
- 0x9B, 0x9C, 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0x9C, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x9A,
- },
- { // 4
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
- 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x99, 0x9A, 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
- 0x99, 0x99, 0x98, 0x99, 0x99, 0x98, 0x98, 0x98, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
- 0x9A, 0x9C, 0x9B, 0x9B, 0x9C, 0x9B, 0x9B, 0x9B, 0x9A, 0x99, 0x9B, 0x9B, 0x9A, 0x99, 0x9A, 0x9A,
- },
- { // 5
- 0xA4, 0xA4, 0xA8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x9E, 0x9E, 0xA0, 0xA8, 0xAC, 0x00, 0x00,
- 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9E, 0xAC, 0x00, 0x97, 0x97, 0x97, 0x98, 0x9C, 0x9C, 0xA0, 0xAC,
- 0x99, 0x98, 0x99, 0x99, 0x99, 0x9B, 0xA0, 0xAC, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9B, 0xA0, 0xAC,
- 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x9A, 0x9A, 0x9B, 0x9B, 0xA4, 0xAC, 0x00,
- },
- { // 6
- 0x00, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x00, 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x9B, 0x99,
- 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x98, 0x99, 0x99,
- 0x00, 0xAC, 0xA0, 0x9C, 0x9C, 0xA0, 0x9C, 0x9A, 0x00, 0x00, 0xAC, 0xA4, 0xA0, 0x99, 0x99, 0x99,
- 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99,
- },
- { // 7
- 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x9C, 0x99, 0x99,
- 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x00, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99,
- 0x00, 0x00, 0xAC, 0xA0, 0x9B, 0xA0, 0x9E, 0x9C, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x9C, 0x99, 0x99,
- },
- { // 8
- 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x9B, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x9C, 0x99, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x9E, 0x9C, 0x99,
- },
- { // 9
- 0x00, 0x00, 0xAC, 0xA4, 0xA0, 0x9C, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x9C, 0xA0, 0x9C, 0x9A,
- 0xAC, 0xA4, 0x9C, 0x9A, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99,
- 0x00, 0xAC, 0xA4, 0x9C, 0x9A, 0x9C, 0x99, 0x99, 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x9A, 0x99, 0x99,
- },
- { // 10
- 0x99, 0x99, 0x99, 0x9A, 0xA0, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
- 0x99, 0x99, 0x9C, 0x9E, 0xA4, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x9C, 0x99, 0x9C, 0xA4, 0xAC, 0x00,
- 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
- 0x99, 0x99, 0x99, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x9A, 0x9B, 0x9E, 0x9C, 0x9C, 0xA4, 0xAC, 0x00,
- },
- { // 11
- 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0x9E, 0xAC,
- 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
- 0x9C, 0x99, 0x99, 0x99, 0x9C, 0x9C, 0xA4, 0xAC, 0x99, 0x9E, 0x9E, 0x9C, 0x9C, 0xA0, 0xAC, 0x00,
- },
- { // 12
- 0x99, 0x99, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x9B, 0x9C, 0x9E, 0x9C, 0x9C, 0xA4, 0xAC, 0x00,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
- 0x99, 0x99, 0x99, 0x99, 0x9C, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xA4, 0xAC, 0x00,
- 0x99, 0x99, 0x9C, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
- },
- { // 13
- 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
- 0x99, 0x9B, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x9A, 0x99, 0x9C, 0xA0, 0xAC, 0x00,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
- 0x99, 0x99, 0x99, 0x99, 0x9A, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x9A, 0x9C, 0xA4, 0xAC, 0x00,
- },
- { // 14
- 0x00, 0x00, 0xAC, 0x9E, 0x9C, 0x9C, 0x9C, 0x9B, 0x00, 0xAC, 0x9C, 0xA0, 0x9E, 0xA4, 0xA4, 0xA4,
- 0xAC, 0x9C, 0xA4, 0xAC, 0xAC, 0xAC, 0x9C, 0x9E, 0xAC, 0xA0, 0xAC, 0xA8, 0x9E, 0xA8, 0xAC, 0x99,
- 0xAC, 0x9E, 0xAC, 0xA8, 0xAC, 0x9E, 0xA4, 0xAC, 0xAC, 0xA4, 0xA0, 0xAC, 0xAC, 0xA0, 0xA4, 0xAC,
- 0x00, 0xAC, 0xA4, 0xA0, 0xA0, 0xA4, 0xAC, 0xA4, 0x00, 0x00, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
- },
- { // 15
- 0x9C, 0x9C, 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
- 0x9E, 0x9E, 0x9E, 0x9C, 0x9E, 0x9E, 0x9E, 0x9E, 0x99, 0x99, 0x99, 0x99, 0x99, 0x98, 0x99, 0x98,
- 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0x9E, 0x9E, 0xA0,
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
- },
- { // 16
- 0x9B, 0x9B, 0x9B, 0x9B, 0x9C, 0x9B, 0x9C, 0x9C, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
- 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9E, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
- 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0xA0, 0xA0, 0xA0, 0x9E, 0xA0, 0x9E, 0x9E, 0xA0,
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
- },
- { // 17
- 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9C, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
- 0x9E, 0x9E, 0x9E, 0x9C, 0x9C, 0x9C, 0x9E, 0x9E, 0x98, 0x98, 0x98, 0x99, 0x9A, 0x9A, 0x99, 0x98,
- 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9C, 0xA0, 0x9E, 0x9E, 0xA0, 0xA0, 0xA0, 0xA0, 0x9E,
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
- },
- { // 18
- 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
- 0x9E, 0x9E, 0x9E, 0x9E, 0x9C, 0x9C, 0x9C, 0x9E, 0x98, 0x98, 0x98, 0x98, 0x9A, 0x9A, 0x98, 0x99,
- 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9B, 0x9C, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0xA0, 0xA0, 0xA0,
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
- },
- { // 19
- 0x9C, 0x9B, 0x9C, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0x00, 0x00,
- 0x9E, 0x9E, 0x9C, 0x9C, 0x9E, 0xA0, 0xAC, 0x00, 0x99, 0x98, 0x98, 0x99, 0x9A, 0x9A, 0xA0, 0xAC,
- 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0xA0, 0xAC, 0xA0, 0xA0, 0x9E, 0xA0, 0xA0, 0xA0, 0xA0, 0xAC,
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0x00, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0x00, 0x00,
- }
+ { // 0
+ 0x00, 0x00, 0xA8, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x00, 0xA8, 0x9E, 0x9C, 0x9C, 0x9E, 0x9E, 0x9E,
+ 0xAC, 0x9C, 0xA4, 0xAC, 0xAC, 0x9A, 0x9A, 0x9A, 0xAC, 0x9E, 0xAC, 0xA8, 0xA8, 0xA6, 0x97, 0x98,
+ 0xAC, 0xA0, 0xAC, 0xAC, 0xA4, 0xA6, 0x98, 0x99, 0x00, 0xAC, 0xA0, 0xA0, 0xA8, 0xAC, 0x9A, 0x9A,
+ 0x00, 0x00, 0xAC, 0xAC, 0xAC, 0xA4, 0x9B, 0x9A, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xA0, 0x9B, 0x9B,
+ },
+ { // 1
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
+ 0x99, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x99, 0x98, 0x98, 0x98, 0x97, 0x97, 0x97, 0x97, 0x97,
+ 0x99, 0x98, 0x98, 0x99, 0x98, 0x98, 0x99, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
+ 0x9A, 0x9B, 0x9B, 0x9C, 0x9B, 0x9A, 0x9C, 0x9A, 0x9B, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x9A, 0x9B,
+ },
+ { // 2
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
+ 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x99, 0x98, 0x98, 0x99, 0x98, 0x98, 0x97, 0x98, 0x98,
+ 0x99, 0x98, 0x98, 0x98, 0x99, 0x99, 0x98, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
+ 0x9B, 0x9B, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9B, 0x99, 0x9A, 0x9B, 0x9B, 0x9A, 0x9A, 0x99, 0x9A,
+ },
+ { // 3
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
+ 0x99, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x98, 0x98, 0x97, 0x97, 0x98, 0x98, 0x98, 0x98,
+ 0x99, 0x99, 0x98, 0x99, 0x98, 0x98, 0x99, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
+ 0x9B, 0x9C, 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0x9C, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x9A,
+ },
+ { // 4
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
+ 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x99, 0x9A, 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
+ 0x99, 0x99, 0x98, 0x99, 0x99, 0x98, 0x98, 0x98, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
+ 0x9A, 0x9C, 0x9B, 0x9B, 0x9C, 0x9B, 0x9B, 0x9B, 0x9A, 0x99, 0x9B, 0x9B, 0x9A, 0x99, 0x9A, 0x9A,
+ },
+ { // 5
+ 0xA4, 0xA4, 0xA8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x9E, 0x9E, 0xA0, 0xA8, 0xAC, 0x00, 0x00,
+ 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9E, 0xAC, 0x00, 0x97, 0x97, 0x97, 0x98, 0x9C, 0x9C, 0xA0, 0xAC,
+ 0x99, 0x98, 0x99, 0x99, 0x99, 0x9B, 0xA0, 0xAC, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9B, 0xA0, 0xAC,
+ 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x9A, 0x9A, 0x9B, 0x9B, 0xA4, 0xAC, 0x00,
+ },
+ { // 6
+ 0x00, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x00, 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x9B, 0x99,
+ 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x98, 0x99, 0x99,
+ 0x00, 0xAC, 0xA0, 0x9C, 0x9C, 0xA0, 0x9C, 0x9A, 0x00, 0x00, 0xAC, 0xA4, 0xA0, 0x99, 0x99, 0x99,
+ 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99,
+ },
+ { // 7
+ 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x9C, 0x99, 0x99,
+ 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x00, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99,
+ 0x00, 0x00, 0xAC, 0xA0, 0x9B, 0xA0, 0x9E, 0x9C, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x9C, 0x99, 0x99,
+ },
+ { // 8
+ 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x9B, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x9C, 0x99, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x9E, 0x9C, 0x99,
+ },
+ { // 9
+ 0x00, 0x00, 0xAC, 0xA4, 0xA0, 0x9C, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x9C, 0xA0, 0x9C, 0x9A,
+ 0xAC, 0xA4, 0x9C, 0x9A, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99,
+ 0x00, 0xAC, 0xA4, 0x9C, 0x9A, 0x9C, 0x99, 0x99, 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x9A, 0x99, 0x99,
+ },
+ { // 10
+ 0x99, 0x99, 0x99, 0x9A, 0xA0, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
+ 0x99, 0x99, 0x9C, 0x9E, 0xA4, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x9C, 0x99, 0x9C, 0xA4, 0xAC, 0x00,
+ 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
+ 0x99, 0x99, 0x99, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x9A, 0x9B, 0x9E, 0x9C, 0x9C, 0xA4, 0xAC, 0x00,
+ },
+ { // 11
+ 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0x9E, 0xAC,
+ 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
+ 0x9C, 0x99, 0x99, 0x99, 0x9C, 0x9C, 0xA4, 0xAC, 0x99, 0x9E, 0x9E, 0x9C, 0x9C, 0xA0, 0xAC, 0x00,
+ },
+ { // 12
+ 0x99, 0x99, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x9B, 0x9C, 0x9E, 0x9C, 0x9C, 0xA4, 0xAC, 0x00,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
+ 0x99, 0x99, 0x99, 0x99, 0x9C, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xA4, 0xAC, 0x00,
+ 0x99, 0x99, 0x9C, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
+ },
+ { // 13
+ 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
+ 0x99, 0x9B, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x9A, 0x99, 0x9C, 0xA0, 0xAC, 0x00,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
+ 0x99, 0x99, 0x99, 0x99, 0x9A, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x9A, 0x9C, 0xA4, 0xAC, 0x00,
+ },
+ { // 14
+ 0x00, 0x00, 0xAC, 0x9E, 0x9C, 0x9C, 0x9C, 0x9B, 0x00, 0xAC, 0x9C, 0xA0, 0x9E, 0xA4, 0xA4, 0xA4,
+ 0xAC, 0x9C, 0xA4, 0xAC, 0xAC, 0xAC, 0x9C, 0x9E, 0xAC, 0xA0, 0xAC, 0xA8, 0x9E, 0xA8, 0xAC, 0x99,
+ 0xAC, 0x9E, 0xAC, 0xA8, 0xAC, 0x9E, 0xA4, 0xAC, 0xAC, 0xA4, 0xA0, 0xAC, 0xAC, 0xA0, 0xA4, 0xAC,
+ 0x00, 0xAC, 0xA4, 0xA0, 0xA0, 0xA4, 0xAC, 0xA4, 0x00, 0x00, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
+ },
+ { // 15
+ 0x9C, 0x9C, 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
+ 0x9E, 0x9E, 0x9E, 0x9C, 0x9E, 0x9E, 0x9E, 0x9E, 0x99, 0x99, 0x99, 0x99, 0x99, 0x98, 0x99, 0x98,
+ 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0x9E, 0x9E, 0xA0,
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
+ },
+ { // 16
+ 0x9B, 0x9B, 0x9B, 0x9B, 0x9C, 0x9B, 0x9C, 0x9C, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
+ 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9E, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
+ 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0xA0, 0xA0, 0xA0, 0x9E, 0xA0, 0x9E, 0x9E, 0xA0,
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
+ },
+ { // 17
+ 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9C, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
+ 0x9E, 0x9E, 0x9E, 0x9C, 0x9C, 0x9C, 0x9E, 0x9E, 0x98, 0x98, 0x98, 0x99, 0x9A, 0x9A, 0x99, 0x98,
+ 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9C, 0xA0, 0x9E, 0x9E, 0xA0, 0xA0, 0xA0, 0xA0, 0x9E,
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
+ },
+ { // 18
+ 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
+ 0x9E, 0x9E, 0x9E, 0x9E, 0x9C, 0x9C, 0x9C, 0x9E, 0x98, 0x98, 0x98, 0x98, 0x9A, 0x9A, 0x98, 0x99,
+ 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9B, 0x9C, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0xA0, 0xA0, 0xA0,
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
+ },
+ { // 19
+ 0x9C, 0x9B, 0x9C, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0x00, 0x00,
+ 0x9E, 0x9E, 0x9C, 0x9C, 0x9E, 0xA0, 0xAC, 0x00, 0x99, 0x98, 0x98, 0x99, 0x9A, 0x9A, 0xA0, 0xAC,
+ 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0xA0, 0xAC, 0xA0, 0xA0, 0x9E, 0xA0, 0xA0, 0xA0, 0xA0, 0xAC,
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0x00, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0x00, 0x00,
+ }
};
static const byte TEXT_COLORS[40][4] = {
- { 0x00, 0x19, 0x19, 0x19 },
- { 0x00, 0x08, 0x08, 0x08 },
- { 0x00, 0x0F, 0x0F, 0x0F },
- { 0x00, 0x15, 0x15, 0x15 },
- { 0x00, 0x01, 0x01, 0x01 },
- { 0x00, 0x21, 0x21, 0x21 },
- { 0x00, 0x26, 0x26, 0x26 },
- { 0x00, 0x2B, 0x2B, 0x2B },
- { 0x00, 0x31, 0x31, 0x31 },
- { 0x00, 0x36, 0x36, 0x36 },
- { 0x00, 0x3D, 0x3D, 0x3D },
- { 0x00, 0x41, 0x41, 0x41 },
- { 0x00, 0x46, 0x46, 0x46 },
- { 0x00, 0x4C, 0x4C, 0x4C },
- { 0x00, 0x50, 0x50, 0x50 },
- { 0x00, 0x55, 0x55, 0x55 },
- { 0x00, 0x5D, 0x5D, 0x5D },
- { 0x00, 0x60, 0x60, 0x60 },
- { 0x00, 0x65, 0x65, 0x65 },
- { 0x00, 0x6C, 0x6C, 0x6C },
- { 0x00, 0x70, 0x70, 0x70 },
- { 0x00, 0x75, 0x75, 0x75 },
- { 0x00, 0x7B, 0x7B, 0x7B },
- { 0x00, 0x80, 0x80, 0x80 },
- { 0x00, 0x85, 0x85, 0x85 },
- { 0x00, 0x8D, 0x8D, 0x8D },
- { 0x00, 0x90, 0x90, 0x90 },
- { 0x00, 0x97, 0x97, 0x97 },
- { 0x00, 0x9D, 0x9D, 0x9D },
- { 0x00, 0xA4, 0xA4, 0xA4 },
- { 0x00, 0xAB, 0xAB, 0xAB },
- { 0x00, 0xB0, 0xB0, 0xB0 },
- { 0x00, 0xB6, 0xB6, 0xB6 },
- { 0x00, 0xBD, 0xBD, 0xBD },
- { 0x00, 0xC0, 0xC0, 0xC0 },
- { 0x00, 0xC6, 0xC6, 0xC6 },
- { 0x00, 0xCD, 0xCD, 0xCD },
- { 0x00, 0xD0, 0xD0, 0xD0 },
- { 0x00, 0xD6, 0xD6, 0xD6 },
- { 0x00, 0xDB, 0xDB, 0xDB },
+ { 0x00, 0x19, 0x19, 0x19 },
+ { 0x00, 0x08, 0x08, 0x08 },
+ { 0x00, 0x0F, 0x0F, 0x0F },
+ { 0x00, 0x15, 0x15, 0x15 },
+ { 0x00, 0x01, 0x01, 0x01 },
+ { 0x00, 0x21, 0x21, 0x21 },
+ { 0x00, 0x26, 0x26, 0x26 },
+ { 0x00, 0x2B, 0x2B, 0x2B },
+ { 0x00, 0x31, 0x31, 0x31 },
+ { 0x00, 0x36, 0x36, 0x36 },
+ { 0x00, 0x3D, 0x3D, 0x3D },
+ { 0x00, 0x41, 0x41, 0x41 },
+ { 0x00, 0x46, 0x46, 0x46 },
+ { 0x00, 0x4C, 0x4C, 0x4C },
+ { 0x00, 0x50, 0x50, 0x50 },
+ { 0x00, 0x55, 0x55, 0x55 },
+ { 0x00, 0x5D, 0x5D, 0x5D },
+ { 0x00, 0x60, 0x60, 0x60 },
+ { 0x00, 0x65, 0x65, 0x65 },
+ { 0x00, 0x6C, 0x6C, 0x6C },
+ { 0x00, 0x70, 0x70, 0x70 },
+ { 0x00, 0x75, 0x75, 0x75 },
+ { 0x00, 0x7B, 0x7B, 0x7B },
+ { 0x00, 0x80, 0x80, 0x80 },
+ { 0x00, 0x85, 0x85, 0x85 },
+ { 0x00, 0x8D, 0x8D, 0x8D },
+ { 0x00, 0x90, 0x90, 0x90 },
+ { 0x00, 0x97, 0x97, 0x97 },
+ { 0x00, 0x9D, 0x9D, 0x9D },
+ { 0x00, 0xA4, 0xA4, 0xA4 },
+ { 0x00, 0xAB, 0xAB, 0xAB },
+ { 0x00, 0xB0, 0xB0, 0xB0 },
+ { 0x00, 0xB6, 0xB6, 0xB6 },
+ { 0x00, 0xBD, 0xBD, 0xBD },
+ { 0x00, 0xC0, 0xC0, 0xC0 },
+ { 0x00, 0xC6, 0xC6, 0xC6 },
+ { 0x00, 0xCD, 0xCD, 0xCD },
+ { 0x00, 0xD0, 0xD0, 0xD0 },
+ { 0x00, 0xD6, 0xD6, 0xD6 },
+ { 0x00, 0xDB, 0xDB, 0xDB },
};
static const byte TEXT_COLORS_STARTUP[40][4] = {
- { 0x00, 0x19, 0x19, 0x19 },
- { 0x00, 0x08, 0x08, 0x08 },
- { 0x00, 0x0F, 0x0F, 0x0F },
- { 0x00, 0x15, 0x15, 0x15 },
- { 0x00, 0x01, 0x01, 0x01 },
- { 0x00, 0x1F, 0x1F, 0x1F },
- { 0x00, 0x26, 0x26, 0x26 },
- { 0x00, 0x2B, 0x2B, 0x2B },
- { 0x00, 0x31, 0x31, 0x31 },
- { 0x00, 0x36, 0x36, 0x36 },
- { 0x00, 0x3D, 0x3D, 0x3D },
- { 0x00, 0x42, 0x42, 0x42 },
- { 0x00, 0x46, 0x46, 0x46 },
- { 0x00, 0x4C, 0x4C, 0x4C },
- { 0x00, 0x50, 0x50, 0x50 },
- { 0x00, 0x55, 0x55, 0x55 },
- { 0x00, 0x5D, 0x5D, 0x5D },
- { 0x00, 0x60, 0x60, 0x60 },
- { 0x00, 0x65, 0x65, 0x65 },
- { 0x00, 0x6C, 0x6C, 0x6C },
- { 0x00, 0x70, 0x70, 0x70 },
- { 0x00, 0x75, 0x75, 0x75 },
- { 0x00, 0x7B, 0x7B, 0x7B },
- { 0x00, 0x80, 0x80, 0x80 },
- { 0x00, 0x85, 0x85, 0x85 },
- { 0x00, 0x8D, 0x8D, 0x8D },
- { 0x00, 0x90, 0x90, 0x90 },
- { 0x00, 0x97, 0x97, 0x97 },
- { 0x00, 0x9D, 0x9D, 0x9D },
- { 0x00, 0xA4, 0xA4, 0xA4 },
- { 0x00, 0xAB, 0xAB, 0xAB },
- { 0x00, 0xB0, 0xB0, 0xB0 },
- { 0x00, 0xB6, 0xB6, 0xB6 },
- { 0x00, 0xBD, 0xBD, 0xBD },
- { 0x00, 0xC0, 0xC0, 0xC0 },
- { 0x00, 0xC6, 0xC6, 0xC6 },
- { 0x00, 0xCD, 0xCD, 0xCD },
- { 0x00, 0xD0, 0xD0, 0xD0 },
- { 0x00, 0x19, 0x19, 0x19 },
- { 0x00, 0x31, 0x31, 0x31 }
-};
-
-static const char *const DIRECTION_TEXT_UPPER[4] = { "NORTH", "EAST", "SOUTH", "WEST" };
-
-static const char *const DIRECTION_TEXT[4] = { "North", "East", "South", "West" };
-
-static const char *const RACE_NAMES[5] = { "Human", "Elf", "Dwarf", "Gnome", "H-Orc" };
+ { 0x00, 0x19, 0x19, 0x19 },
+ { 0x00, 0x08, 0x08, 0x08 },
+ { 0x00, 0x0F, 0x0F, 0x0F },
+ { 0x00, 0x15, 0x15, 0x15 },
+ { 0x00, 0x01, 0x01, 0x01 },
+ { 0x00, 0x1F, 0x1F, 0x1F },
+ { 0x00, 0x26, 0x26, 0x26 },
+ { 0x00, 0x2B, 0x2B, 0x2B },
+ { 0x00, 0x31, 0x31, 0x31 },
+ { 0x00, 0x36, 0x36, 0x36 },
+ { 0x00, 0x3D, 0x3D, 0x3D },
+ { 0x00, 0x42, 0x42, 0x42 },
+ { 0x00, 0x46, 0x46, 0x46 },
+ { 0x00, 0x4C, 0x4C, 0x4C },
+ { 0x00, 0x50, 0x50, 0x50 },
+ { 0x00, 0x55, 0x55, 0x55 },
+ { 0x00, 0x5D, 0x5D, 0x5D },
+ { 0x00, 0x60, 0x60, 0x60 },
+ { 0x00, 0x65, 0x65, 0x65 },
+ { 0x00, 0x6C, 0x6C, 0x6C },
+ { 0x00, 0x70, 0x70, 0x70 },
+ { 0x00, 0x75, 0x75, 0x75 },
+ { 0x00, 0x7B, 0x7B, 0x7B },
+ { 0x00, 0x80, 0x80, 0x80 },
+ { 0x00, 0x85, 0x85, 0x85 },
+ { 0x00, 0x8D, 0x8D, 0x8D },
+ { 0x00, 0x90, 0x90, 0x90 },
+ { 0x00, 0x97, 0x97, 0x97 },
+ { 0x00, 0x9D, 0x9D, 0x9D },
+ { 0x00, 0xA4, 0xA4, 0xA4 },
+ { 0x00, 0xAB, 0xAB, 0xAB },
+ { 0x00, 0xB0, 0xB0, 0xB0 },
+ { 0x00, 0xB6, 0xB6, 0xB6 },
+ { 0x00, 0xBD, 0xBD, 0xBD },
+ { 0x00, 0xC0, 0xC0, 0xC0 },
+ { 0x00, 0xC6, 0xC6, 0xC6 },
+ { 0x00, 0xCD, 0xCD, 0xCD },
+ { 0x00, 0xD0, 0xD0, 0xD0 },
+ { 0x00, 0x19, 0x19, 0x19 },
+ { 0x00, 0x31, 0x31, 0x31 }
+};
+
+static const char* const DIRECTION_TEXT_UPPER[4] = {
+ "NORTH", "EAST", "SOUTH", "WEST"
+};
+
+static const char* const DIRECTION_TEXT[4] = {
+ "¥¢¥à",
+ "®á⮪",
+ "£",
+ " ¯ ¤"
+};
+
+static const char* const RACE_NAMES[5] = {
+ "¥«®¢¥ª",
+ "«ìä",
+ "¢®àä",
+ "®¬",
+ "®«ã®àª"
+};
static const int RACE_HP_BONUSES[5] = { 0, -2, 1, -1, 2 };
static const int RACE_SP_BONUSES[5][2] = {
- { 0, 0 }, { 2, 0 }, { -1, -1 }, { 1, 1 }, { -2, -2 }
-};
-
-static const char *const ALIGNMENT_NAMES[3] = { "Good", "Neutral", "Evil" };
-
-static const char *const SEX_NAMES[2] = { "Male", "Female" };
-
-static const char *const SKILL_NAMES[18] = {
- "Thievery\t100", "Arms Master", "Astrologer", "Body Builder", "Cartographer",
- "Crusader", "Direction Sense", "Linguist", "Merchant", "Mountaineer",
- "Navigator", "Path Finder", "Prayer Master", "Prestidigitator",
- "Swimmer", "Tracker", "Spot Secret Door", "Danger Sense"
-};
-
-static const char *const CLASS_NAMES[11] = {
- "Knight", "Paladin", "Archer", "Cleric", "Sorcerer", "Robber",
- "Ninja", "Barbarian", "Druid", "Ranger", nullptr
+ { 0, 0 }, { 2, 0 }, { -1, -1 }, { 1, 1 }, { -2, -2 }
+};
+
+static const char* const ALIGNMENT_NAMES[3] = {
+ "®à®è¨©",
+ "¥©âà «",
+ "«®©(- ï)"
+};
+
+static const char* const SEX_NAMES[2] = {
+ "ã¦ç¨ ",
+ "¥é¨ "
+};
+
+static const char* const SKILL_NAMES[18] = {
+ "®à®¢á⢮\t100",
+ "à㦥©¨ª",
+ "áâ஫®£",
+ "â«¥â",
+ " à⮣à ä",
+ "à¥áâ®®á¥æ",
+ "ã¢á⢮ ¯à ¢«¥¨ï",
+ "§ëª®¢¥¤",
+ "㯥æ",
+ "ª «®« §",
+ "âãଠ",
+ "«¥¤®¯ëâ",
+ " £¨áâà ¬®«¨â¢ë",
+ "®¢ª®áâì ¯ «ì楢",
+ "«®¢¥æ",
+ "å®â¨ª",
+ "®á¯à¨ï⨥",
+ "ã¢á⢮ ®¯ á®áâ¨"
+};
+
+static const char* const CLASS_NAMES[11] = {
+ "ëæ àì",
+ " « ¤¨",
+ "ã稪",
+ "«¨à¨ª",
+ " £",
+ "®à",
+ "¨¤§ï",
+ " ࢠà",
+ "à㨤",
+ "«¥¤®¯ëâ",
+ nullptr
};
static const int CLASS_EXP_LEVELS[10] = {
- 1500, 2000, 2000, 1500, 2000, 1000, 1500, 1500, 1500, 2000
-};
-
-static const char *const CONDITION_NAMES[17] = {
- "Cursed", "Heart Broken", "Weak", "Poisoned", "Diseased",
- "Insane", "In Love", "Drunk", "Asleep", "Depressed", "Confused",
- "Paralyzed", "Unconscious", "Dead", "Stone", "Eradicated", "Good"
+ 1500, 2000, 2000, 1500, 2000, 1000, 1500, 1500, 1500, 2000
+};
+
+static const char* const CONDITION_NAMES[17] = {
+ "ப«ï⨥",
+ "Heart Broken",
+ "« ¡®áâì",
+ "âà ¢«¥¨¥",
+ "®«¥§ì",
+ "¥§ã¬¨¥",
+ "«î¡«ñ(- )",
+ " ¢¥á¥«¥",
+ "®",
+ " ã먨",
+ " á¬ï⥨¨",
+ " à «¨ç",
+ ".á®§ ¨ï",
+ "¥àâ¢",
+ " ¬¥ì",
+ "¨ç⮦¥",
+ "®à®è¥¥"
};
static const int CONDITION_COLORS[17] = {
- 9, 9, 9, 9, 9, 9, 9, 9, 32, 32, 32, 32, 6, 6, 6, 6, 15
+ 9, 9, 9, 9, 9, 9, 9, 9, 32, 32, 32, 32, 6, 6, 6, 6, 15
};
-static const char *const GOOD = "Good";
+static const char* const GOOD = "®à®è¥¥";
-static const char *const BLESSED = "\n\t020Blessed\t095%+d";
+static const char* const BLESSED = "\n\t014« £®á«®¢¥¨¥\t095%+d";
-static const char *const POWER_SHIELD = "\n\t020Power Shield\t095%+d";
+static const char* const POWER_SHIELD = "\n\t014¨«®¢®© é¨â\t095%+d";
-static const char *const HOLY_BONUS = "\n\t020Holy Bonus\t095%+d";
+static const char* const HOLY_BONUS = "\n\t014¢ï⮩ ¤ à\t095%+d";
-static const char *const HEROISM = "\n\t020Heroism\t095%+d";
+static const char* const HEROISM = "\n\t014㦥á⢮\t095%+d";
-static const char *const IN_PARTY = "\014""15In Party\014""d";
+static const char* const IN_PARTY = "\f15 ®âà拉\fd";
-static const char *const PARTY_DETAILS = "\015\003l\002\014""00"
- "\013""001""\011""035%s"
- "\013""009""\011""035%s"
- "\013""017""\011""035%s"
- "\013""025""\011""035%s"
- "\013""001""\011""136%s"
- "\013""009""\011""136%s"
- "\013""017""\011""136%s"
- "\013""025""\011""136%s"
- "\013""044""\011""035%s"
- "\013""052""\011""035%s"
- "\013""060""\011""035%s"
- "\013""068""\011""035%s"
- "\013""044""\011""136%s"
- "\013""052""\011""136%s"
- "\013""060""\011""136%s"
- "\013""068""\011""136%s";
-static const char *const PARTY_DIALOG_TEXT =
- "%s\x2\x3""c\v106\t013Up\t048Down\t083\f37D\fdel\t118\f37R\fdem"
- "\t153\f37C\fdreate\t188E\f37x\fdit\x1";
+static const char* const PARTY_DETAILS =
+ "\015\003l\002\014""00"
+ "\013""001""\011""035%s"
+ "\013""009""\011""035%s"
+ "\013""017""\011""035%s"
+ "\013""025""\011""035%s"
+ "\013""001""\011""136%s"
+ "\013""009""\011""136%s"
+ "\013""017""\011""136%s"
+ "\013""025""\011""136%s"
+ "\013""044""\011""035%s"
+ "\013""052""\011""035%s"
+ "\013""060""\011""035%s"
+ "\013""068""\011""035%s"
+ "\013""044""\011""136%s"
+ "\013""052""\011""136%s"
+ "\013""060""\011""136%s"
+ "\013""068""\011""136%s";
+
+static const char* const PARTY_DIALOG_TEXT =
+ "%s\x2\x3""c\v106\t013¢¥àå\t048¨§\t083\f37\fd¤ «\t118\f37\fdë£"
+ "\t153\f37\fd®§¤\t188\f37ë\fd室\x1";
static const int FACE_CONDITION_FRAMES[17] = {
- 2, 2, 2, 1, 1, 4, 4, 4, 3, 2, 4, 3, 3, 5, 6, 7, 0
+ 2, 2, 2, 1, 1, 4, 4, 4, 3, 2, 4, 3, 3, 5, 6, 7, 0
};
static const int CHAR_FACES_X[6] = { 10, 45, 81, 117, 153, 189 };
static const int HP_BARS_X[6] = { 13, 50, 86, 122, 158, 194 };
-static const char *const NO_ONE_TO_ADVENTURE_WITH = "You have no one to adventure with";
+static const char* const NO_ONE_TO_ADVENTURE_WITH =
+ " ¬ ¥ á ª¥¬ ¯ãâ¥è¥á⢮¢ âì";
-static const char *const YOUR_ROSTER_IS_FULL = "Your Roster is full!";
+static const char* const YOUR_ROSTER_IS_FULL = " è ᯨ᮪ ¯®«®!";
static const byte DARKNESS_XLAT[3][256] = {
- {
- 0, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 44, 45, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 108, 109, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 124, 125, 126, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 140, 141, 142, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 168, 169, 170, 171, 172, 173, 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 188, 189, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 204, 205, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 220, 221, 222, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- }, {
- 0, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
- 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0,
- 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0,
- 104, 105, 106, 107, 108, 109, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0,
- 120, 121, 122, 123, 124, 125, 126, 127, 0, 0, 0, 0, 0, 0, 0, 0,
- 136, 137, 138, 139, 140, 141, 142, 143, 0, 0, 0, 0, 0, 0, 0, 0,
- 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 184, 185, 186, 187, 188, 189, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0,
- 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0,
- 216, 217, 218, 219, 220, 221, 222, 223, 0, 0, 0, 0, 0, 0, 0, 0,
- 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 0,
- 248, 249, 250, 251, 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, 0, 0
- }, {
- 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, 0,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, 0,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 0, 0, 0, 0,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 0, 0, 0, 0,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 0, 0, 0, 0,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
- 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 0, 0, 0, 0,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 0, 0, 0, 0,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, 0,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 0, 0, 0
- }
-};
-
-static const char *const PLEASE_WAIT = "\014""d\003""c\011""000"
- "\013""002Please Wait...";
-
-static const char *const OOPS = "\003""c\011""000\013""002Oops...";
+ {
+ 0, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 44, 45, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 108, 109, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 124, 125, 126, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 140, 141, 142, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 168, 169, 170, 171, 172, 173, 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 188, 189, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 204, 205, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 220, 221, 222, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ }, {
+ 0, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
+ 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0,
+ 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0,
+ 104, 105, 106, 107, 108, 109, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0,
+ 120, 121, 122, 123, 124, 125, 126, 127, 0, 0, 0, 0, 0, 0, 0, 0,
+ 136, 137, 138, 139, 140, 141, 142, 143, 0, 0, 0, 0, 0, 0, 0, 0,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 184, 185, 186, 187, 188, 189, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0,
+ 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0,
+ 216, 217, 218, 219, 220, 221, 222, 223, 0, 0, 0, 0, 0, 0, 0, 0,
+ 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 0,
+ 248, 249, 250, 251, 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, 0, 0
+ }, {
+ 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, 0,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, 0,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 0, 0, 0, 0,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 0, 0, 0, 0,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 0, 0, 0, 0,
+ 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 0, 0, 0, 0,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 0, 0, 0, 0,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, 0,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 0, 0, 0
+ }
+};
+
+static const char* const PLEASE_WAIT = "\fd\x3""c\t000\v002®¤®¦¤¨â¥...";
+
+static const char* const OOPS = "\x3""c\t000\v002¯á...";
static const int SCREEN_POSITIONING_X[4][48] = {
- {
- -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, -2, -1,
- -1, 0, 0, 0, 1, 1, 2, -4, -3, -3, -2, -2,
- -1, -1, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4,
- -3, -2, -1, 0, 0, 1, 2, 3, -4, 4, 0, 0
- }, {
- 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 1
- }, {
- 1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 2, 1,
- 1, 0, 0, 0, -1, -1, -2, 4, 3, 3, 2, 2,
- 1, 1, 0, 0, 0, -1, -1, -2, -2, -3, -3, -4,
- 3, 2, 1, 0, 0, -1, -2, -3, 4, -4, 0, 0
- }, {
- 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3,
- -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
- -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, -1
- }
+ {
+ -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, -2, -1,
+ -1, 0, 0, 0, 1, 1, 2, -4, -3, -3, -2, -2,
+ -1, -1, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4,
+ -3, -2, -1, 0, 0, 1, 2, 3, -4, 4, 0, 0
+ }, {
+ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 1
+ }, {
+ 1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 2, 1,
+ 1, 0, 0, 0, -1, -1, -2, 4, 3, 3, 2, 2,
+ 1, 1, 0, 0, 0, -1, -1, -2, -2, -3, -3, -4,
+ 3, 2, 1, 0, 0, -1, -2, -3, 4, -4, 0, 0
+ }, {
+ 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3,
+ -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
+ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, -1
+ }
};
static const int SCREEN_POSITIONING_Y[4][48] = {
- {
- 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 1
- }, {
- 1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 2, 1,
- 1, 0, 0, 0, -1, -1, -2, 4, 3, 3, 2, 2,
- 1, 1, 0, 0, 0, -1, -1, -2, -2, -3, -3, -4,
- 3, 2, 1, 0, 0, -1, -2, -3, 4, -4, 0, 0
- }, {
- 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3,
- -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
- -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, -1
- }, {
- -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, -2, -1,
- -1, 0, 0, 0, 1, 1, 2, -4, -3, -3, -2, -2,
- -1, -1, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4,
- -3, -2, -1, 0, 0, 1, 2, 3, -4, 4, 0, 0
- }
+ {
+ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 1
+ }, {
+ 1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 2, 1,
+ 1, 0, 0, 0, -1, -1, -2, 4, 3, 3, 2, 2,
+ 1, 1, 0, 0, 0, -1, -1, -2, -2, -3, -3, -4,
+ 3, 2, 1, 0, 0, -1, -2, -3, 4, -4, 0, 0
+ }, {
+ 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3,
+ -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
+ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, -1
+ }, {
+ -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, -2, -1,
+ -1, 0, 0, 0, 1, 1, 2, -4, -3, -3, -2, -2,
+ -1, -1, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4,
+ -3, -2, -1, 0, 0, 1, 2, 3, -4, 4, 0, 0
+ }
};
static const int MONSTER_GRID_BITMASK[12] = {
- 0xC, 8, 4, 0, 0xF, 0xF000, 0xF00, 0xF0, 0xF00, 0xF0, 0x0F, 0xF000
+ 0xC, 8, 4, 0, 0xF, 0xF000, 0xF00, 0xF0, 0xF00, 0xF0, 0x0F, 0xF000
};
static const int INDOOR_OBJECT_X[2][12] = {
- { -5, -7, -112, 98, -8, -65, 49, -9, -34, 16, -58, 40 },
- { -35, -35, -142, 68, -35, -95, 19, -35, -62, -14, -98, 16 }
+ { -5, -7, -112, 98, -8, -65, 49, -9, -34, 16, -58, 40 },
+ { -35, -35, -142, 68, -35, -95, 19, -35, -62, -14, -98, 16 }
};
static const int MAP_OBJECT_Y[2][12] = {
- { 2, 25, 25, 25, 50, 50, 50, 58, 58, 58, 58, 58 },
- { -65, -6, -6, -6, 36, 36, 36, 54, 54, 54, 54, 54 }
+ { 2, 25, 25, 25, 50, 50, 50, 58, 58, 58, 58, 58 },
+ { -65, -6, -6, -6, 36, 36, 36, 54, 54, 54, 54, 54 }
};
static const int INDOOR_MONSTERS_Y[4] = { 2, 34, 53, 59 };
static const int OUTDOOR_OBJECT_X[2][12] = {
- { -5, -7, -112, 98, -8, -77, 61, -9, -43, 25, -74, 56 },
- { -35, -35, -142, 68, -35, -95, 19, -35, -62, -24, -98, 16 }
+ { -5, -7, -112, 98, -8, -77, 61, -9, -43, 25, -74, 56 },
+ { -35, -35, -142, 68, -35, -95, 19, -35, -62, -24, -98, 16 }
};
static const int OUTDOOR_MONSTER_INDEXES[26] = {
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 69, 70,
- 71, 72, 73, 74, 75, 90, 91, 92, 93, 94, 112, 115, 118
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 69, 70,
+ 71, 72, 73, 74, 75, 90, 91, 92, 93, 94, 112, 115, 118
};
static const int OUTDOOR_MONSTERS_Y[26] = {
- 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 53, 53,
- 53, 53, 53, 53, 53, 34, 34, 34, 34, 34, 2, 2, 2
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 53, 53,
+ 53, 53, 53, 53, 53, 34, 34, 34, 34, 34, 2, 2, 2
};
static const int DIRECTION_ANIM_POSITIONS[4][4] = {
- { 0, 1, 2, 3 }, { 3, 0, 1, 2 }, { 2, 3, 0, 1 }, { 1, 2, 3, 0 }
+ { 0, 1, 2, 3 }, { 3, 0, 1, 2 }, { 2, 3, 0, 1 }, { 1, 2, 3, 0 }
};
static const byte WALL_SHIFTS[4][48] = {
- {
- 12, 0, 12, 8, 12, 12, 0, 12, 8, 12, 12, 0,
- 12, 0, 12, 8, 12, 8, 12, 12, 0, 12, 0, 12,
- 0, 12, 0, 12, 8, 12, 8, 12, 8, 12, 8, 12,
- 0, 0, 0, 0, 8, 8, 8, 8, 0, 0, 4, 4
- }, {
- 8, 12, 8, 4, 8, 8, 12, 8, 4, 8, 8, 12,
- 8, 12, 8, 4, 8, 4, 8, 8, 12, 8, 12, 8,
- 12, 8, 12, 8, 4, 8, 4, 8, 4, 8, 4, 8,
- 12, 12, 12, 12, 4, 4, 4, 4, 0, 0, 0, 0
- }, {
- 4, 8, 4, 0, 4, 4, 8, 4, 0, 4, 4, 8,
- 4, 8, 4, 0, 4, 0, 4, 4, 8, 4, 8, 4,
- 8, 4, 8, 4, 0, 4, 0, 4, 0, 4, 0, 4,
- 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 12, 12
- }, {
- 0, 4, 0, 12, 0, 0, 4, 0, 12, 0, 0, 4,
- 0, 4, 0, 12, 0, 12, 0, 0, 4, 0, 4, 0,
- 4, 0, 4, 0, 12, 0, 12, 0, 12, 0, 12, 0,
- 4, 4, 4, 4, 12, 12, 12, 12, 0, 0, 8, 8
- }
+ {
+ 12, 0, 12, 8, 12, 12, 0, 12, 8, 12, 12, 0,
+ 12, 0, 12, 8, 12, 8, 12, 12, 0, 12, 0, 12,
+ 0, 12, 0, 12, 8, 12, 8, 12, 8, 12, 8, 12,
+ 0, 0, 0, 0, 8, 8, 8, 8, 0, 0, 4, 4
+ }, {
+ 8, 12, 8, 4, 8, 8, 12, 8, 4, 8, 8, 12,
+ 8, 12, 8, 4, 8, 4, 8, 8, 12, 8, 12, 8,
+ 12, 8, 12, 8, 4, 8, 4, 8, 4, 8, 4, 8,
+ 12, 12, 12, 12, 4, 4, 4, 4, 0, 0, 0, 0
+ }, {
+ 4, 8, 4, 0, 4, 4, 8, 4, 0, 4, 4, 8,
+ 4, 8, 4, 0, 4, 0, 4, 4, 8, 4, 8, 4,
+ 8, 4, 8, 4, 0, 4, 0, 4, 0, 4, 0, 4,
+ 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 12, 12
+ }, {
+ 0, 4, 0, 12, 0, 0, 4, 0, 12, 0, 0, 4,
+ 0, 4, 0, 12, 0, 12, 0, 0, 4, 0, 4, 0,
+ 4, 0, 4, 0, 12, 0, 12, 0, 12, 0, 12, 0,
+ 4, 4, 4, 4, 12, 12, 12, 12, 0, 0, 8, 8
+ }
};
static const int DRAW_NUMBERS[25] = {
- 36, 37, 38, 43, 42, 41,
- 39, 20, 22, 24, 33, 31,
- 29, 26, 10, 11, 18, 16,
- 13, 5, 9, 6, 0, 4, 1
+ 36, 37, 38, 43, 42, 41,
+ 39, 20, 22, 24, 33, 31,
+ 29, 26, 10, 11, 18, 16,
+ 13, 5, 9, 6, 0, 4, 1
};
static const int DRAW_FRAMES[25][2] = {
- { 18, 24 }, { 19, 23 }, { 20, 22 }, { 24, 18 }, { 23, 19 }, { 22, 20 },
- { 21, 21 }, { 11, 17 }, { 12, 16 }, { 13, 15 }, { 17, 11 }, { 16, 12 },
- { 15, 13 }, { 14, 14 }, { 6, 10 }, { 7, 9 }, { 10, 6 }, { 9, 7 },
- { 8, 8 }, { 3, 5 }, { 5, 3 }, { 4, 4 }, { 0, 2 }, { 2, 0 },
- { 1, 1 }
+ { 18, 24 }, { 19, 23 }, { 20, 22 }, { 24, 18 }, { 23, 19 }, { 22, 20 },
+ { 21, 21 }, { 11, 17 }, { 12, 16 }, { 13, 15 }, { 17, 11 }, { 16, 12 },
+ { 15, 13 }, { 14, 14 }, { 6, 10 }, { 7, 9 }, { 10, 6 }, { 9, 7 },
+ { 8, 8 }, { 3, 5 }, { 5, 3 }, { 4, 4 }, { 0, 2 }, { 2, 0 },
+ { 1, 1 }
};
static const int COMBAT_FLOAT_X[8] = { -2, -1, 0, 1, 2, 1, 0, -1 };
@@ -701,115 +793,116 @@ static const int COMBAT_FLOAT_X[8] = { -2, -1, 0, 1, 2, 1, 0, -1 };
static const int COMBAT_FLOAT_Y[8] = { -2, 0, 2, 0, -1, 0, 2, 0 };
static const int MONSTER_EFFECT_FLAGS[15][8] = {
- { 0x104, 0x105, 0x106, 0x107, 0x108, 0x109, 0x10A, 0x10B },
- { 0x10C, 0x10D, 0x10E, 0x10F, 0x0, 0x0, 0x0, 0x0 },
- { 0x110, 0x111, 0x112, 0x113, 0x0, 0x0, 0x0, 0x0 },
- { 0x114, 0x115, 0x116, 0x117, 0x0, 0x0, 0x0, 0x0 },
- { 0x200, 0x201, 0x202, 0x203, 0x0, 0x0, 0x0, 0x0 },
- { 0x300, 0x301, 0x302, 0x303, 0x400, 0x401, 0x402, 0x403 },
- { 0x500, 0x501, 0x502, 0x503, 0x0, 0x0, 0x0, 0x0 },
- { 0x600, 0x601, 0x602, 0x603, 0x0, 0x0, 0x0, 0x0 },
- { 0x604, 0x605, 0x606, 0x607, 0x608, 0x609, 0x60A, 0x60B },
- { 0x60C, 0x60D, 0x60E, 0x60F, 0x0, 0x0, 0x0, 0x0 },
- { 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100 },
- { 0x101, 0x101, 0x101, 0x101, 0x101, 0x101, 0x101, 0x101 },
- { 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102 },
- { 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103 },
- { 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108 }
+ { 0x104, 0x105, 0x106, 0x107, 0x108, 0x109, 0x10A, 0x10B },
+ { 0x10C, 0x10D, 0x10E, 0x10F, 0x0, 0x0, 0x0, 0x0 },
+ { 0x110, 0x111, 0x112, 0x113, 0x0, 0x0, 0x0, 0x0 },
+ { 0x114, 0x115, 0x116, 0x117, 0x0, 0x0, 0x0, 0x0 },
+ { 0x200, 0x201, 0x202, 0x203, 0x0, 0x0, 0x0, 0x0 },
+ { 0x300, 0x301, 0x302, 0x303, 0x400, 0x401, 0x402, 0x403 },
+ { 0x500, 0x501, 0x502, 0x503, 0x0, 0x0, 0x0, 0x0 },
+ { 0x600, 0x601, 0x602, 0x603, 0x0, 0x0, 0x0, 0x0 },
+ { 0x604, 0x605, 0x606, 0x607, 0x608, 0x609, 0x60A, 0x60B },
+ { 0x60C, 0x60D, 0x60E, 0x60F, 0x0, 0x0, 0x0, 0x0 },
+ { 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100 },
+ { 0x101, 0x101, 0x101, 0x101, 0x101, 0x101, 0x101, 0x101 },
+ { 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102 },
+ { 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103 },
+ { 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108 }
};
static const int SPELLS_ALLOWED[3][40] = {
- {
- 0, 1, 2, 3, 5, 6, 7, 8, 9, 10,
- 12, 14, 16, 23, 26, 27, 28, 30, 31, 32,
- 33, 42, 46, 48, 49, 50, 52, 55, 56, 58,
- 59, 62, 64, 65, 67, 68, 71, 73, 74, 76
- }, {
- 1, 4, 11, 13, 15, 17, 18, 19, 20, 21,
- 22, 24, 25, 29, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 47, 51, 53, 54,
- 57, 60, 61, 63, 66, 69, 70, 72, 75, 76
- }, {
- 0, 1, 2, 3, 4, 5, 7, 9, 10, 20,
- 25, 26, 27, 28, 30, 31, 34, 38, 40, 41,
- 42, 43, 44, 45, 49, 50, 52, 53, 55, 59,
- 60, 61, 62, 67, 68, 72, 73, 74, 75, 76
- }
+ {
+ 0, 1, 2, 3, 5, 6, 7, 8, 9, 10,
+ 12, 14, 16, 23, 26, 27, 28, 30, 31, 32,
+ 33, 42, 46, 48, 49, 50, 52, 55, 56, 58,
+ 59, 62, 64, 65, 67, 68, 71, 73, 74, 76
+ }, {
+ 1, 4, 11, 13, 15, 17, 18, 19, 20, 21,
+ 22, 24, 25, 29, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 47, 51, 53, 54,
+ 57, 60, 61, 63, 66, 69, 70, 72, 75, 76
+ }, {
+ 0, 1, 2, 3, 4, 5, 7, 9, 10, 20,
+ 25, 26, 27, 28, 30, 31, 34, 38, 40, 41,
+ 42, 43, 44, 45, 49, 50, 52, 53, 55, 59,
+ 60, 61, 62, 67, 68, 72, 73, 74, 75, 76
+ }
};
static const int BASE_HP_BY_CLASS[10] = { 10, 8, 7, 5, 4, 8, 7, 12, 6, 9 };
-static const int AGE_RANGES[10] = { 1, 6, 11, 18, 36, 51, 76, 101, 201, 0xffff };
+static const int AGE_RANGES[10] =
+ { 1, 6, 11, 18, 36, 51, 76, 101, 201, 0xffff };
static const int AGE_RANGES_ADJUST[2][10] = {
- { -250, -50, -20, -10, 0, -2, -5, -10, -20, -50 },
- { -250, -50, -20, -10, 0, 2, 5, 10, 20, 50 }
+ { -250, -50, -20, -10, 0, -2, -5, -10, -20, -50 },
+ { -250, -50, -20, -10, 0, 2, 5, 10, 20, 50 }
};
static const int STAT_VALUES[24] = {
- 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 25, 30, 35, 40,
- 50, 75, 100, 125, 150, 175, 200, 225, 250, 65535
+ 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 25, 30, 35, 40,
+ 50, 75, 100, 125, 150, 175, 200, 225, 250, 65535
};
static const int STAT_BONUSES[24] = {
- -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20
+ -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20
};
static const int ELEMENTAL_CATEGORIES[6] = { 8, 15, 20, 25, 33, 36 };
-static const int ATTRIBUTE_CATEGORIES[10] = {
- 9, 17, 25, 33, 39, 45, 50, 56, 61, 72 };
+static const int ATTRIBUTE_CATEGORIES[10] =
+ { 9, 17, 25, 33, 39, 45, 50, 56, 61, 72 };
static const int ATTRIBUTE_BONUSES[72] = {
- 2, 3, 5, 8, 12, 17, 23, 30, 38, 47, // Might bonus
- 2, 3, 5, 8, 12, 17, 23, 30, // INT bonus
- 2, 3, 5, 8, 12, 17, 23, 30, // PER bonus
- 2, 3, 5, 8, 12, 17, 23, 30, // SPD bonus
- 3, 5, 10, 15, 20, 30, // ACC bonus
- 5, 10, 15, 20, 25, 30, // LUC bonus
- 4, 6, 10, 20, 50, // HP bonus
- 4, 8, 12, 16, 20, 25, // SP bonus
- 2, 4, 6, 10, 16, // AC bonus
- 4, 6, 8, 10, 12, 14, 16, 18, 20, 25 // Thievery bonus
+ 2, 3, 5, 8, 12, 17, 23, 30, 38, 47, // Might bonus
+ 2, 3, 5, 8, 12, 17, 23, 30, // INT bonus
+ 2, 3, 5, 8, 12, 17, 23, 30, // PER bonus
+ 2, 3, 5, 8, 12, 17, 23, 30, // SPD bonus
+ 3, 5, 10, 15, 20, 30, // ACC bonus
+ 5, 10, 15, 20, 25, 30, // LUC bonus
+ 4, 6, 10, 20, 50, // HP bonus
+ 4, 8, 12, 16, 20, 25, // SP bonus
+ 2, 4, 6, 10, 16, // AC bonus
+ 4, 6, 8, 10, 12, 14, 16, 18, 20, 25 // Thievery bonus
};
static const int ELEMENTAL_RESISTENCES[37] = {
- 0, 5, 7, 9, 12, 15, 20, 25, 30, 5, 7, 9, 12, 15, 20, 25,
- 5, 10, 15, 20, 25, 10, 15, 20, 25, 40, 5, 7, 9, 11, 13, 15, 20, 25,
- 5, 10, 20
+ 0, 5, 7, 9, 12, 15, 20, 25, 30, 5, 7, 9, 12, 15, 20, 25,
+ 5, 10, 15, 20, 25, 10, 15, 20, 25, 40, 5, 7, 9, 11, 13, 15, 20, 25,
+ 5, 10, 20
};
static const int ELEMENTAL_DAMAGE[37] = {
- 0, 2, 3, 4, 5, 10, 15, 20, 30, 2, 3, 4, 5, 10, 15, 20, 2, 4, 5, 10, 20,
- 2, 4, 8, 16, 32, 2, 3, 4, 5, 10, 15, 20, 30, 5, 10, 25
+ 0, 2, 3, 4, 5, 10, 15, 20, 30, 2, 3, 4, 5, 10, 15, 20, 2, 4, 5, 10, 20,
+ 2, 4, 8, 16, 32, 2, 3, 4, 5, 10, 15, 20, 30, 5, 10, 25
};
static const int WEAPON_DAMAGE_BASE[35] = {
- 0, 3, 2, 3, 2, 2, 4, 1, 2, 4, 2, 3,
- 2, 2, 1, 1, 1, 1, 4, 4, 3, 2, 4, 2,
- 2, 2, 5, 3, 3, 3, 3, 5, 4, 2, 6
+ 0, 3, 2, 3, 2, 2, 4, 1, 2, 4, 2, 3,
+ 2, 2, 1, 1, 1, 1, 4, 4, 3, 2, 4, 2,
+ 2, 2, 5, 3, 3, 3, 3, 5, 4, 2, 6
};
static const int WEAPON_DAMAGE_MULTIPLIER[35] = {
- 0, 3, 3, 4, 5, 4, 2, 3, 3, 3, 3, 3,
- 2, 4, 10, 6, 8, 9, 4, 3, 6, 8, 5, 6,
- 4, 5, 3, 5, 6, 7, 2, 2, 2, 2, 4
+ 0, 3, 3, 4, 5, 4, 2, 3, 3, 3, 3, 3,
+ 2, 4, 10, 6, 8, 9, 4, 3, 6, 8, 5, 6,
+ 4, 5, 3, 5, 6, 7, 2, 2, 2, 2, 4
};
static const int METAL_DAMAGE[22] = {
- -3, -6, -4, -2, 2, 4, 6, 8, 10, 0, 1,
- 1, 2, 2, 3, 4, 5, 12, 15, 20, 30, 50
+ -3, -6, -4, -2, 2, 4, 6, 8, 10, 0, 1,
+ 1, 2, 2, 3, 4, 5, 12, 15, 20, 30, 50
};
static const int METAL_DAMAGE_PERCENT[22] = {
- 253, 252, 3, 2, 1, 2, 3, 4, 6, 0, 1,
- 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10
+ 253, 252, 3, 2, 1, 2, 3, 4, 6, 0, 1,
+ 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10
};
static const int METAL_LAC[22] = {
- -3, 0, -2, -1, 1, 2, 4, 6, 8, 0, 1,
- 1, 2, 2, 3, 4, 5, 10, 12, 14, 16, 20
+ -3, 0, -2, -1, 1, 2, 4, 6, 8, 0, 1,
+ 1, 2, 2, 3, 4, 5, 10, 12, 14, 16, 20
};
static const int ARMOR_STRENGTHS[14] = { 0, 2, 4, 5, 6, 7, 8, 10, 4, 2, 1, 1, 1, 1 };
@@ -817,884 +910,964 @@ static const int ARMOR_STRENGTHS[14] = { 0, 2, 4, 5, 6, 7, 8, 10, 4, 2, 1, 1, 1,
static const int MAKE_ITEM_ARR1[6] = { 0, 8, 15, 20, 25, 33 };
static const int MAKE_ITEM_ARR2[6][7][2] = {
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 6, 7 }, { 7, 7 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 5 }, { 5, 5 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
- { { 0, 0 }, { 1, 1 }, { 1, 1 }, { 1, 2 }, { 2, 2 }, { 2, 3 }, { 3, 3 } }
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 6, 7 }, { 7, 7 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 5 }, { 5, 5 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
+ { { 0, 0 }, { 1, 1 }, { 1, 1 }, { 1, 2 }, { 2, 2 }, { 2, 3 }, { 3, 3 } }
};
static const int MAKE_ITEM_ARR3[10][7][2] = {
- { { 0, 0 }, { 1, 4 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 6, 10 }, { 10, 10 } },
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 6 }, { 6, 6 } },
- { { 0, 0 }, { 1, 2 }, { 2, 3 }, { 3, 4 }, { 4, 5 }, { 5, 6 }, { 6, 6 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 6 }, { 6, 6 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
- { { 0, 0 }, { 1, 2 }, { 1, 4 }, { 3, 6 }, { 5, 8 }, { 7, 10 }, { 10, 10 } }
+ { { 0, 0 }, { 1, 4 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 6, 10 }, { 10, 10 } },
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 6 }, { 6, 6 } },
+ { { 0, 0 }, { 1, 2 }, { 2, 3 }, { 3, 4 }, { 4, 5 }, { 5, 6 }, { 6, 6 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 6 }, { 6, 6 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 4 }, { 3, 6 }, { 5, 8 }, { 7, 10 }, { 10, 10 } }
};
static const int MAKE_ITEM_ARR4[2][7][2] = {
- { { 0, 0 }, { 1, 4 }, { 3, 7 }, { 4, 8 }, { 5, 9 }, { 8, 9 }, { 9, 9 } },
- { { 0, 0 }, { 1, 4 }, { 2, 6 }, { 4, 7 }, { 6, 10 }, { 9, 13 }, { 13, 13 } }
+ { { 0, 0 }, { 1, 4 }, { 3, 7 }, { 4, 8 }, { 5, 9 }, { 8, 9 }, { 9, 9 } },
+ { { 0, 0 }, { 1, 4 }, { 2, 6 }, { 4, 7 }, { 6, 10 }, { 9, 13 }, { 13, 13 } }
};
static const int MAKE_ITEM_ARR5[8][2] = {
- { 0, 0 }, { 1, 15 }, { 16, 30 }, { 31, 40 }, { 41, 50 },
- { 51, 60 }, { 61, 73 }, { 61, 73 }
+ { 0, 0 }, { 1, 15 }, { 16, 30 }, { 31, 40 }, { 41, 50 },
+ { 51, 60 }, { 61, 73 }, { 61, 73 }
};
static const int OUTDOOR_DRAWSTRUCT_INDEXES[44] = {
- 37, 38, 39, 40, 41, 44, 42, 43, 47, 45, 46,
- 48, 49, 52, 50, 51, 66, 67, 68, 69, 70, 71,
- 72, 75, 73, 74, 87, 88, 89, 90, 91, 94, 92,
- 93, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120
+ 37, 38, 39, 40, 41, 44, 42, 43, 47, 45, 46,
+ 48, 49, 52, 50, 51, 66, 67, 68, 69, 70, 71,
+ 72, 75, 73, 74, 87, 88, 89, 90, 91, 94, 92,
+ 93, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120
};
static const int TOWN_MAXES[2][11] = {
- { 23, 13, 32, 16, 26, 16, 16, 16, 16, 16, 16 },
- { 26, 19, 48, 27, 26, 37, 16, 16, 16, 16, 16 }
+ { 23, 13, 32, 16, 26, 16, 16, 16, 16, 16, 16 },
+ { 26, 19, 48, 27, 26, 37, 16, 16, 16, 16, 16 }
};
-static const char *const TOWN_ACTION_MUSIC[2][7] = {
- { "bank.m", "smith.m", "guild.m", "tavern.m",
- "temple.m", "grounds.m", "endgame.m" },
- { "bank.m", "sf09.m", "guild.m", "tavern.m",
- "temple.m", "smith.m", "endgame.m" }
+static const char* const TOWN_ACTION_MUSIC[2][7] = {
+ { "bank.m", "smith.m", "guild.m", "tavern.m",
+ "temple.m", "grounds.m", "endgame.m" },
+ { "bank.m", "sf09.m", "guild.m", "tavern.m",
+ "temple.m", "smith.m", "endgame.m" }
};
-static const char *const TOWN_ACTION_SHAPES[7] = {
- "bnkr", "blck", "gild", "tvrn", "tmpl", "trng", "eface08"
+static const char* const TOWN_ACTION_SHAPES[7] = {
+ "bnkr", "blck", "gild", "tvrn", "tmpl", "trng", "eface08"
};
static const int TOWN_ACTION_FILES[2][7] = {
- { 3, 2, 4, 2, 4, 2, 1 }, { 5, 3, 7, 5, 4, 6, 1 }
-};
-
-static const char *const BANK_TEXT = "\r\x2\x3""c\v122\t013"
- "\f37D\fdep\t040\f37W\fdith\t067ESC"
- "\x1\t000\v000Bank of Xeen\v015\n"
- "Bank\x3l\n"
- "Gold\x3r\t000%s\x3l\n"
- "Gems\x3r\t000%s\x3""c\n"
- "\n"
- "Party\x3l\n"
- "Gold\x3r\t000%s\x3l\n"
- "Gems\x3r\t000%s";
-
-static const char *const BLACKSMITH_TEXT = "\x1\r\x3""c\v000\t000"
- "Store Options for\t039\v027%s\x3l\v046\n"
- "\t011\f37B\fdrowse\n"
- "\t000\v090Gold\x3r\t000%s"
- "\x2\x3""c\v122\t040ESC\x1";
-
-static const char *const GUILD_NOT_MEMBER_TEXT =
- "\n\nYou have to be a member to shop here.";
-
-static const char *const GUILD_TEXT = "\x3""c\v027\t039%s"
- "\x3l\v046\n"
- "\t012\f37B\fduy Spells\n"
- "\t012\f37S\fdpell Info";
-
-static const char *const TAVERN_TEXT =
- "\r\x3""c\v000\t000Tavern Options for\t039"
- "\v027%s%s\x3l\t000"
- "\v090Gold\x3r\t000%s\x2\x3""c\v122"
- "\t021\f37S\fdign in\t060ESC\x1";
-
-static const char *const FOOD_AND_DRINK =
- "\x3l\t017\v046\f37D\fdrink\n"
- "\t017\f37F\fdood\n"
- "\t017\f37T\fdip\n"
- "\t017\f37R\fdumors";
-
-static const char *const GOOD_STUFF = "\n"
- "\n"
- "Good Stuff\n"
- "\n"
- "Hit a key!";
-
-static const char *const HAVE_A_DRINK = "\n\nHave a Drink\n\nHit a key!";
-
-static const char *const YOURE_DRUNK = "\n\nYou're Drunk\n\nHit a key!";
+ { 3, 2, 4, 2, 4, 2, 1 }, { 5, 3, 7, 5, 4, 6, 1 }
+};
+
+static const char* const BANK_TEXT =
+ "\r\x2\x3""c\v122\t013"
+ "\f37\fdª«\t040\f37\fd\t067ESC"
+ "\x1\t000\v000 ª ᨠ\v015\n"
+ " ª\x3""l\n"
+ "®«\x3""r\t000%s\x3""l\n"
+ "«¬§\x3""r\t000%s\x3""c\n"
+ "\n"
+ "âàï¤\x3""l\n"
+ "®«\x3""r\t000%s\x3""l\n"
+ "«¬§\x3""r\t000%s";
+
+static const char* const BLACKSMITH_TEXT =
+ "\x1\r\x3""c\v000\t000"
+ " ¢ª \t039\v027%s\x3""l\v046\n"
+ "\t011\f37\fd¬®âà¥âì\n"
+ "\t000\v090®«\x3""r\t000%s"
+ "\x2\x3""c\v122\t040ESC\x1";
+
+static const char* const GUILD_NOT_MEMBER_TEXT =
+ "\në ¤®«¦ë ¡ëâì ç«¥®¬ £¨«ì¤¨¨, çâ®¡ë ¯®ªã¯ âì § ª«¨ ¨ï.";
+
+static const char* const GUILD_TEXT =
+ "\x3""c\v027\t039%s"
+ "\x3""l\v046\n"
+ "\t012\f37\fd㯨âì\n"
+ "\t012\f37\fd¯¨á ¨ï";
+
+static const char* const TAVERN_TEXT =
+ "\r\x3""c\v000\t000 ¢¥à \t039"
+ "\v027%s%s\x3""l\t000"
+ "\v090®«\x3""r\t000%s\x2\x3""c\v122"
+ "\t021\f37\fdâ¤ëå\t060ESC\x1";
+
+static const char* const FOOD_AND_DRINK =
+ "\x3""l\t017\v046\f37\fd믨âì\n"
+ "\t017\f37
\fd¤ \n"
+ "\t017\f37\fd ¥¢ë¥\n"
+ "\t017\f37\fd«ãå¨";
+
+static const char* const GOOD_STUFF =
+ "\n"
+ "\n"
+ "¥¤ãà®\n"
+ "\n"
+ " ¦¬¨â¥ ª« ¢¨èã!";
+
+static const char* const HAVE_A_DRINK = "\n¯¥à¢ ¢ë¯¥©â¥\n\n ¦¬¨â¥ ª« ¢¨èã!";
+
+static const char* const YOURE_DRUNK = "\n\në ¯ìïë\n\n ¦¬¨â¥ ª« ¢¨èã!";
static const int TAVERN_EXIT_LIST[2][6][5][2] = {
- {
- { { 21, 17 }, { 0, 0 }, { 20, 3 }, { 0, 0 }, { 0, 0 } },
- { { 13, 4 }, { 0, 0 }, { 19, 9 }, { 0, 0 }, { 0, 0 } },
- { { 20, 10 }, { 12, 8 }, { 5, 26 }, { 3, 4 }, { 7, 5 } },
- { { 18, 4 }, { 0, 0 }, { 19, 16 }, { 0, 0 }, { 11, 12 } },
- { { 15, 21 }, { 0, 0 }, { 13, 21 }, { 0, 0 }, { 0, 0 } },
- { { 10, 8 }, { 0, 0 }, { 15, 12 }, { 0, 0 }, { 0, 0 } },
- }, {
- { { 21, 17 }, { 0, 0 }, { 20, 3 }, { 0, 0 }, { 0, 0 } },
- { { 13, 4 }, { 0, 0 }, { 19, 9 }, { 0, 0 }, { 0, 0 } },
- { { 20, 10 }, { 12, 8 }, { 5, 26 }, { 3, 4 }, { 7, 5 } },
- { { 17, 24 }, { 14, 13 }, { 0, 0 }, { 0, 0 }, { 9, 4 } },
- { { 15, 21 }, { 0, 0 }, { 13, 21 }, { 0, 0 }, { 0, 0 } },
- { { 10, 8 }, { 0, 0 }, { 15, 12 }, { 0, 0 }, { 0, 0 } }
- }
-};
-
-static const char *const TEMPLE_TEXT =
- "\r\x3""c\v000\t000Temple Options for"
- "\t039\v027%s\x3l\t000\v046"
- "\f37H\fdeal\x3r\t000%u\x3l\n"
- "\f37D\fdonation\x3r\t000%u\x3l\n"
- "\f37U\fdnCurse\x3r\t000%s"
- "\x3l\t000\v090Gold\x3r\t000%s"
- "\x2\x3""c\v122\t040ESC\x1";
-
-static const char *const EXPERIENCE_FOR_LEVEL =
- "%s needs %u experience for level %u.";
-
-static const char *const TRAINING_LEARNED_ALL = "%s has learned all we can teach!";
-
-static const char *const ELIGIBLE_FOR_LEVEL = "%s is eligible for level %u.\x3l\n"
- "\v081Cost\x3r\t000%u";
-
-static const char *const TRAINING_TEXT =
- "\r\x3""cTraining Options\n"
- "\n"
- "%s\x3l\v090\t000Gold\x3r\t000%s\x2\x3""c\v122\t021"
- "\f37T\fdrain\t060ESC\x1";
-
-static const char *const GOLD_GEMS =
- "\x3""c\v000\t000%s\x3l\n"
- "\n"
- "Gold\x3r\t000%s\x3l\n"
- "Gems\x3r\t000%s\x2\x3""c\v096\t013G\f37o\fdld\t040G\f37e\fdms\t067ESC\x1";
-
-static const char *const GOLD_GEMS_2 =
- "\x3""c\v000\t000%s\x3l\n"
- "\n"
- "\x4""077Gold\x3r\t000%s\x3l\n"
- "\x4""077Gems\x3r\t000%s\x3l\t000\v051\x4""077\n"
- "\x4""077";
-
-static const char *const DEPOSIT_WITHDRAWL[2] = { "Deposit", "Withdrawl" };
-
-static const char *const NOT_ENOUGH_X_IN_THE_Y =
- "\x3""c\v012Not enough %s in the %s!\x3l";
-
-static const char *const NO_X_IN_THE_Y = "\x3""c\v012No %s in the %s!\x3l";
-
-static const char *const STAT_NAMES[16] = {
- "Might", "Intellect", "Personality", "Endurance", "Speed",
- "Accuracy", "Luck", "Age", "Level", "Armor Class", "Hit Points",
- "Spell Points", "Resistances", "Skills", "Awards", "Experience"
-};
-
-static const char *const CONSUMABLE_NAMES[4] = { "Gold", "Gems", "Food", "Condition" };
-
-static const char *const WHERE_NAMES[2] = { "Party", "Bank" };
-
-static const char *const AMOUNT = "\x3""c\t000\v051Amount\x3l\n";
-
-static const char *const FOOD_PACKS_FULL = "\v007Your food packs are already full!";
-
-static const char *const BUY_SPELLS =
- "\x3""c\v027\t039%s\x3l\v046\n"
- "\t012\f37B\fduy Spells\n"
- "\t012\f37S\fdpell Info";
-
-static const char *const GUILD_OPTIONS =
- "\r\f00\x3""c\v000\t000Guild Options for%s"
- "\x3l\t000\v090Gold"
- "\x3r\t000%s\x2\x3""c\v122\t040ESC\x1";
+ {
+ { { 21, 17 }, { 0, 0 }, { 20, 3 }, { 0, 0 }, { 0, 0 } },
+ { { 13, 4 }, { 0, 0 }, { 19, 9 }, { 0, 0 }, { 0, 0 } },
+ { { 20, 10 }, { 12, 8 }, { 5, 26 }, { 3, 4 }, { 7, 5 } },
+ { { 18, 4 }, { 0, 0 }, { 19, 16 }, { 0, 0 }, { 11, 12 } },
+ { { 15, 21 }, { 0, 0 }, { 13, 21 }, { 0, 0 }, { 0, 0 } },
+ { { 10, 8 }, { 0, 0 }, { 15, 12 }, { 0, 0 }, { 0, 0 } },
+ }, {
+ { { 21, 17 }, { 0, 0 }, { 20, 3 }, { 0, 0 }, { 0, 0 } },
+ { { 13, 4 }, { 0, 0 }, { 19, 9 }, { 0, 0 }, { 0, 0 } },
+ { { 20, 10 }, { 12, 8 }, { 5, 26 }, { 3, 4 }, { 7, 5 } },
+ { { 17, 24 }, { 14, 13 }, { 0, 0 }, { 0, 0 }, { 9, 4 } },
+ { { 15, 21 }, { 0, 0 }, { 13, 21 }, { 0, 0 }, { 0, 0 } },
+ { { 10, 8 }, { 0, 0 }, { 15, 12 }, { 0, 0 }, { 0, 0 } }
+ }
+};
+
+static const char* const TEMPLE_TEXT =
+ "\r\x3""c\v000\t000à ¬"
+ "\t039\v027%s\x3""l\t000\v046"
+ "\f37\fd¥ç¨âì\x3""r\t000%lu\x3""l\n"
+ "\f37\fd à\x3""r\t000%lu\x3""l\n"
+ "\f37\fdப«\x3""r\t000%s"
+ "\x3""l\t000\v090®«\x3""r\t000%s"
+ "\x2\x3""c\v122\t040ESC\x1";
+
+static const char* const EXPERIENCE_FOR_LEVEL =
+ "%s\n㦮 %lu ®çª®¢ ®¯ëâ ¤«ï ã஢ï %u.";
+
+static const char* const TRAINING_LEARNED_ALL =
+ "%s\në 㦥 § ¥â¥ ¢áñ, ç¥¬ã ¬ë ¬®¦¥¬ ¢ á ãç¨âì!";
+
+static const char* const ELIGIBLE_FOR_LEVEL =
+ "%s ¬®¦¥â ®¡ãç âìáï ¤® ã஢ï %d.\x3""l\n"
+ "\v081¥ \x3""r\t000%lu";
+
+static const char* const TRAINING_TEXT =
+ "\r\x3""c¡ã票¥\n"
+ "\n"
+ "%s\x3""l\v090\t000®«\x3""r\t000%s\x2\x3""c\v122\t021"
+ "\f37\fd¡ã票¥\t060ESC\x1";
+
+static const char* const GOLD_GEMS =
+ "\x3""c\v000\t000%s\x3""l\n"
+ "\n"
+ "®«\x3""r\t000%s\x3""l\n"
+ "«¬§\x3""r\t000%s\x2\x3""c\v096\t007\f37\fd«¬§\t035\f37\fd®«\t067ESC\x1";
+
+static const char* const GOLD_GEMS_2 =
+ "\t000\v000\x3""c%s\x3""l\n"
+ "\n"
+ "\x4""077®«\x3""r\t000%s\x3""l\n"
+ "\x4""077«¬§\x3""r\t000%s\x3""l\t000\v051\x4""077\n"
+ "\x4""077";
+
+static const char* const DEPOSIT_WITHDRAWL[2] =
+ { "®«®¦¨âì áçñâ", "ïâì á® áçñâ " };
+
+static const char* const NOT_ENOUGH_X_IN_THE_Y =
+ "\x3""c\v012¥¤®áâ â®ç® %s %s!\x3""l";
+
+static const char* const NO_X_IN_THE_Y = "\x3""c\v012¥â %s %s!\x3""l";
+
+static const char* const STAT_NAMES[16] = {
+ "¨« ", "⥫«¥ªâ", "¨« ¤ãå ", "«®¦¥¨¥", "ª®à®áâì",
+ "¥âª®áâì", "¤ ç ", "®§à áâ", "஢¥ì", "« áá § é¨âë", "¤®à®¢ì¥",
+ "窨 ¬ £¨¨", "á⮩稢®áâ¨", " ¢ëª¨", " £à ¤ë", "¯ëâ"
+};
+
+static const char* const CONSUMABLE_NAMES[4] =
+ { "®«®â®", "«¬ §ë", "¨é ", "®áâ®ï¨¥" };
+
+static const char* const WHERE_NAMES[2] = { "ã ®âàï¤ ", "¢ ¡ ª¥" };
+
+static const char* const AMOUNT = "\x3""c\t000\v051ª®«ìª®\x3""l\n";
+
+static const char* const FOOD_PACKS_FULL = "\v007 è¨ à ª¨ 㦥 ¯®«¥ë!";
+
+static const char* const BUY_SPELLS =
+ "\x3""c\v027\t039%s\x3""l\v046\n"
+ "\t012\f37\fd㯨âì\n"
+ "\t012\f37\fd¯¨á ¨ï";
+
+static const char* const GUILD_OPTIONS =
+ "\x1\r\f00\x3""c\v000\t000¨«ì¤¨ï\n"
+ "%s\x3""l\t000\v090®«"
+ "\x3""r\t000%s\x2\x3""c\v122\t040ESC\x1";
static const int MISC_SPELL_INDEX[74] = {
- NO_SPELL, MS_Light, MS_Awaken, MS_MagicArrow,
- MS_FirstAid, MS_FlyingFist, MS_EnergyBlast, MS_Sleep,
- MS_Revitalize, MS_CureWounds, MS_Sparks, MS_Shrapmetal,
- MS_InsectSpray, MS_ToxicCloud, MS_ProtFromElements, MS_Pain,
- MS_Jump, MS_BeastMaster, MS_Clairvoyance, MS_TurnUndead,
- MS_Levitate, MS_WizardEye, MS_Bless, MS_IdentifyMonster,
- MS_LightningBolt, MS_HolyBonus, MS_PowerCure, MS_NaturesCure,
- MS_LloydsBeacon, MS_PowerShield, MS_Heroism, MS_Hynotize,
- MS_WalkOnWater, MS_FrostBite, MS_DetectMonster, MS_Fireball,
- MS_ColdRay, MS_CurePoison, MS_AcidSpray, MS_TimeDistortion,
- MS_DragonSleep, MS_CureDisease, MS_Teleport, MS_FingerOfDeath,
- MS_CureParalysis, MS_GolemStopper, MS_PoisonVolley, MS_DeadlySwarm,
- MS_SuperShelter, MS_DayOfProtection, MS_DayOfSorcery, MS_CreateFood,
- MS_FieryFlail, MS_RechargeItem, MS_FantasticFreeze, MS_TownPortal,
- MS_StoneToFlesh, MS_RaiseDead, MS_Etheralize, MS_DancingSword,
- MS_MoonRay, MS_MassDistortion, MS_PrismaticLight, MS_EnchantItem,
- MS_Incinerate, MS_HolyWord, MS_Resurrection, MS_ElementalStorm,
- MS_MegaVolts, MS_Inferno, MS_SunRay, MS_Implosion,
- MS_StarBurst, MS_DivineIntervention
+ NO_SPELL, MS_Light, MS_Awaken, MS_MagicArrow,
+ MS_FirstAid, MS_FlyingFist, MS_EnergyBlast, MS_Sleep,
+ MS_Revitalize, MS_CureWounds, MS_Sparks, MS_Shrapmetal,
+ MS_InsectSpray, MS_ToxicCloud, MS_ProtFromElements, MS_Pain,
+ MS_Jump, MS_BeastMaster, MS_Clairvoyance, MS_TurnUndead,
+ MS_Levitate, MS_WizardEye, MS_Bless, MS_IdentifyMonster,
+ MS_LightningBolt, MS_HolyBonus, MS_PowerCure, MS_NaturesCure,
+ MS_LloydsBeacon, MS_PowerShield, MS_Heroism, MS_Hynotize,
+ MS_WalkOnWater, MS_FrostBite, MS_DetectMonster, MS_Fireball,
+ MS_ColdRay, MS_CurePoison, MS_AcidSpray, MS_TimeDistortion,
+ MS_DragonSleep, MS_CureDisease, MS_Teleport, MS_FingerOfDeath,
+ MS_CureParalysis, MS_GolemStopper, MS_PoisonVolley, MS_DeadlySwarm,
+ MS_SuperShelter, MS_DayOfProtection, MS_DayOfSorcery, MS_CreateFood,
+ MS_FieryFlail, MS_RechargeItem, MS_FantasticFreeze, MS_TownPortal,
+ MS_StoneToFlesh, MS_RaiseDead, MS_Etheralize, MS_DancingSword,
+ MS_MoonRay, MS_MassDistortion, MS_PrismaticLight, MS_EnchantItem,
+ MS_Incinerate, MS_HolyWord, MS_Resurrection, MS_ElementalStorm,
+ MS_MegaVolts, MS_Inferno, MS_SunRay, MS_Implosion,
+ MS_StarBurst, MS_DivineIntervention
};
static const int SPELL_COSTS[77] = {
- 8, 1, 5, -2, 5, -2, 20, 10, 12, 8, 3,
- - 3, 75, 40, 12, 6, 200, 10, 100, 30, -1, 30,
- 15, 25, 10, -2, 1, 2, 7, 20, -2, -2, 100,
- 15, 5, 100, 35, 75, 5, 20, 4, 5, 1, -2,
- 6, 2, 75, 40, 60, 6, 4, 25, -2, -2, 60,
- - 1, 50, 15, 125, 2, -1, 3, -1, 200, 35, 150,
- 15, 5, 4, 10, 8, 30, 4, 5, 7, 5, 0
+ 8, 1, 5, -2, 5, -2, 20, 10, 12, 8, 3,
+ -3, 75, 40, 12, 6, 200, 10, 100, 30, -1, 30,
+ 15, 25, 10, -2, 1, 2, 7, 20, -2, -2, 100,
+ 15, 5, 100, 35, 75, 5, 20, 4, 5, 1, -2,
+ 6, 2, 75, 40, 60, 6, 4, 25, -2, -2, 60,
+ -1, 50, 15, 125, 2, -1, 3, -1, 200, 35, 150,
+ 15, 5, 4, 10, 8, 30, 4, 5, 7, 5, 0
};
static const int DARK_SPELL_RANGES[12][2] = {
- { 0, 20 }, { 16, 35 }, { 27, 37 }, { 29, 39 },
- { 0, 17 }, { 14, 34 }, { 26, 37 }, { 29, 39 },
- { 0, 20 }, { 16, 35 }, { 27, 37 }, { 29, 39 }
+ { 0, 20 }, { 16, 35 }, { 27, 37 }, { 29, 39 },
+ { 0, 17 }, { 14, 34 }, { 26, 37 }, { 29, 39 },
+ { 0, 20 }, { 16, 35 }, { 27, 37 }, { 29, 39 }
};
static const int SWORDS_SPELL_RANGES[12][2] = {
- { 0, 20 },{ 16, 35 },{ 27, 39 },{ 29, 39 },
- { 0, 17 },{ 14, 34 },{ 26, 39 },{ 29, 39 },
- { 0, 20 },{ 16, 35 },{ 27, 39 },{ 29, 39 }
+ { 0, 20 },{ 16, 35 },{ 27, 39 },{ 29, 39 },
+ { 0, 17 },{ 14, 34 },{ 26, 39 },{ 29, 39 },
+ { 0, 20 },{ 16, 35 },{ 27, 39 },{ 29, 39 }
};
static const int CLOUDS_GUILD_SPELLS[5][20] = {
- {
- 1, 10, 20, 26, 27, 38, 40, 42, 45, 50,
- 55, 59, 60, 61, 62, 68, 72, 75, 77, 77
- }, {
- 3, 4, 5, 14, 15, 25, 30, 31, 34, 41,
- 49, 51, 53, 67, 73, 75, -1, -1, -1, -1
- }, {
- 4, 8, 9, 12, 13, 22, 23, 24, 28, 34,
- 41, 44, 52, 70, 73, 74, -1, -1, -1, -1
- }, {
- 6, 7, 9, 11, 12, 13, 17, 21, 22, 24,
- 29, 36, 56, 58, 64, 71, -1, -1, -1, -1
- }, {
- 6, 7, 9, 11, 12, 13, 18, 21, 29, 32,
- 36, 37, 46, 51, 56, 58, 69, -1, -1, -1
- }
+ {
+ 1, 10, 20, 26, 27, 38, 40, 42, 45, 50,
+ 55, 59, 60, 61, 62, 68, 72, 75, 77, 77
+ }, {
+ 3, 4, 5, 14, 15, 25, 30, 31, 34, 41,
+ 49, 51, 53, 67, 73, 75, -1, -1, -1, -1
+ }, {
+ 4, 8, 9, 12, 13, 22, 23, 24, 28, 34,
+ 41, 44, 52, 70, 73, 74, -1, -1, -1, -1
+ }, {
+ 6, 7, 9, 11, 12, 13, 17, 21, 22, 24,
+ 29, 36, 56, 58, 64, 71, -1, -1, -1, -1
+ }, {
+ 6, 7, 9, 11, 12, 13, 18, 21, 29, 32,
+ 36, 37, 46, 51, 56, 58, 69, -1, -1, -1
+ }
};
static const int DARK_SPELL_OFFSETS[3][39] = {
- {
- 42, 1, 26, 59, 27, 10, 50, 68, 55, 62, 67, 73, 2,
- 5, 3, 31, 30, 52, 49, 28, 74, 0, 9, 7, 14, 8,
- 33, 6, 23, 71, 64, 56, 48, 46, 12, 32, 58, 65, 16
- }, {
- 42, 1, 45, 61, 72, 40, 20, 60, 38, 41, 75, 34, 4,
- 43, 25, 53, 44, 15, 70, 17, 24, 69, 22, 66, 57, 11,
- 29, 39, 51, 21, 19, 36, 47, 13, 54, 37, 18, 35, 63
- }, {
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38
- }
+ {
+ 42, 1, 26, 59, 27, 10, 50, 68, 55, 62, 67, 73, 2,
+ 5, 3, 31, 30, 52, 49, 28, 74, 0, 9, 7, 14, 8,
+ 33, 6, 23, 71, 64, 56, 48, 46, 12, 32, 58, 65, 16
+ }, {
+ 42, 1, 45, 61, 72, 40, 20, 60, 38, 41, 75, 34, 4,
+ 43, 25, 53, 44, 15, 70, 17, 24, 69, 22, 66, 57, 11,
+ 29, 39, 51, 21, 19, 36, 47, 13, 54, 37, 18, 35, 63
+ }, {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38
+ }
};
static const int SPELL_GEM_COST[77] = {
- 0, 0, 2, 1, 2, 4, 5, 0, 0, 0, 0, 10, 10, 10, 0, 0, 20, 4, 10, 20, 1, 10,
- 5, 5, 4, 2, 0, 0, 0, 10, 3, 1, 20, 4, 0, 20, 10, 10, 1, 10, 0, 0, 0, 2,
- 2, 0, 10, 10, 10, 0, 0, 10, 3, 2, 10, 1, 10, 10, 20, 0, 0, 1, 1, 20, 5, 20,
- 5, 0, 0, 0, 0, 5, 1, 2, 0, 2, 0
-};
-
-static const char *const NOT_A_SPELL_CASTER = "Not a spell caster...";
-
-static const char *const SPELLS_LEARNED_ALL = "You have learned all we\n"
- "\t010can teach you.";
-
-static const char *const SPELLS_FOR = "\r\fd%s\x2\x3""c\t000\v002Spells for %s";
-
-static const char *const SPELL_LINES_0_TO_9 =
- "\x2\x3l\v015\t0011\n2\n3\n4\n5\n6\n7\n8\n9\n0";
-
-static const char *const SPELLS_DIALOG_SPELLS = "\x3l\v015"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l"
- "\t004\v110%s - %u\x1";
-
-static const char *const SPELL_PTS = "Spell Pts";
-
-static const char *const GOLD = "Gold";
-
-static const char *const SPELL_INFO =
- "\x3""c\f09%s\fd\x3l\n"
- "\n"
- "%s\x3""c\t000\v100Press a Key!";
-
-static const char *const SPELL_PURCHASE =
- "\x3l\v000\t000\fd%s Do you wish to purchase "
- "\f09%s\fd for %u?";
-
-static const char *const MAP_TEXT =
- "\x3""c\v000\t000%s\x3l\v139"
- "\t000X = %d\x3r\t000Y = %d\x3""c\t000%s";
-
-static const char *const LIGHT_COUNT_TEXT = "\x3l\n\n\t024Light\x3r\t124%d";
-
-static const char *const FIRE_RESISTENCE_TEXT = "%c%sFire%s%u";
-
-static const char *const ELECRICITY_RESISTENCE_TEXT = "%c%sElectricity%s%u";
-
-static const char *const COLD_RESISTENCE_TEXT = "%c%sCold%s%u";
-
-static const char *const POISON_RESISTENCE_TEXT = "%c%sPoison/Acid%s%u";
-
-static const char *const CLAIRVOYANCE_TEXT = "%c%sClairvoyance%s";
-
-static const char *const LEVITATE_TEXT = "%c%sLevitate%s";
-
-static const char *const WALK_ON_WATER_TEXT = "%c%sWalk on Water";
-
-static const char *const GAME_INFORMATION =
- "\r\x3""c\t000\v001\f37%s of Xeen\fd\n"
- "Game Information\n"
- "\n"
- "Today is \f37%ssday\fd\n"
- "\n"
- "\t032Time\t072Day\t112Year\n"
- "\t032\f37%d:%02d%c\t072%u\t112%u\fd%s";
-
-static const char *const WORLD_GAME_TEXT = "World";
-static const char *const DARKSIDE_GAME_TEXT = "Darkside";
-static const char *const CLOUDS_GAME_TEXT = "Clouds";
-static const char *const SWORDS_GAME_TEXT = "Swords";
-
-static const char *const WEEK_DAY_STRINGS[10] = {
- "Ten", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"
-};
-
-static const char *const CHARACTER_DETAILS =
- "\x3l\v041\t196%s\t000\v002%s : %s %s %s"
- "\x3r\t053\v028\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3l\t131\f%02u%d\fd\t196\f15%u\fd\x3r"
- "\t053\v051\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3l\t131\f%02u%u\fd\t196\f15%u\fd"
- "\x3r\t053\v074\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3l\t131\f15%u\fd\t196\f15%u\fd"
- "\x3r\t053\v097\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3l\t131\f15%u\fd\t196\f15%u day%c\fd"
- "\x3r\t053\v120\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3l\t131\f15%u\fd\t196\f%02u%s\fd"
- "\t230%s%s%s%s\fd";
-
-static const char *const PARTY_GOLD = "Party Gold";
-
-static const char *const PLUS_14 = "\f14+";
-
-static const char *const CHARACTER_TEMPLATE =
- "\x1\f00\r\x3l\t029\v018Mgt\t080Acy\t131H.P.\t196Experience"
- "\t029\v041Int\t080Lck\t131S.P.\t029\v064Per\t080Age"
- "\t131Resis\t196Party Gems\t029\v087End\t080Lvl\t131Skills"
- "\t196Party Food\t029\v110Spd\t080AC\t131Awrds\t196Condition\x3""c"
- "\t290\v025\f37I\fdtem\t290\v057\f37Q"
- "\fduick\t290\v089\f37E\fdxch\t290\v121Exit\x3l%s";
-
-static const char *const EXCHANGING_IN_COMBAT = "\x3""c\v007\t000Exchanging in combat is not allowed!";
-
-static const char *const CURRENT_MAXIMUM_RATING_TEXT = "\x2\x3""c%s\n"
- "Current / Maximum\n"
- "\x3r\t054%u\x3l\t058/ %u\n"
- "\x3""cRating: %s";
-
-static const char *const CURRENT_MAXIMUM_TEXT = "\x2\x3""c%s\n"
- "Current / Maximum\n"
- "\x3r\t054%u\x3l\t058/ %u";
-
-static const char *const RATING_TEXT[24] = {
- "Nonexistant", "Very Poor", "Poor", "Very Low", "Low", "Average", "Good",
- "Very Good", "High", "Very High", "Great", "Super", "Amazing", "Incredible",
- "Gigantic", "Fantastic", "Astoundig", "Astonishing", "Monumental", "Tremendous",
- "Collosal", "Awesome", "Awe Inspiring", "Ultimate"
-};
-
-static const char *const AGE_TEXT = "\x2\x3""c%s\n"
- "Current / Natural\n"
- "\x3r\t057%u\x3l\t061/ %u\n"
- "\x3""cBorn: %u / %u\x1";
-
-static const char *const LEVEL_TEXT =
- "\x2\x3""c%s\n"
- "Current / Maximum\n"
- "\x3r\t054%u\x3l\t058/ %u\n"
- "\x3""c%u Attack%s/Round\x1";
-
-static const char *const RESISTENCES_TEXT =
- "\x2\x3""c%s\x3l\n"
- "\t020Fire\t100%u\n"
- "\t020Cold\t100%u\n"
- "\t020Electricity\t100%u\n"
- "\t020Poison\t100%u\n"
- "\t020Energy\t100%u\n"
- "\t020Magic\t100%u";
-
-static const char *const NONE = "\n\t020None";
-
-static const char *const EXPERIENCE_TEXT = "\x2\x3""c%s\x3l\n"
- "\t010Current:\t070%u\n"
- "\t010Next Level:\t070%s\x1";
-
-static const char *const ELIGIBLE = "\f12Eligible\fd";
-
-static const char *const IN_PARTY_IN_BANK =
- "\x2\x3""cParty %s\n"
- "%u on hand\n"
- "%u in bank\x1\x3l";
-
-static const char *const FOOD_TEXT =
- "\x2\x3""cParty %s\n"
- "%u on hand\n"
- "Enough for %u day%s\x3l";
-
-static const char *const EXCHANGE_WITH_WHOM = "\t010\v005Exchange with whom?";
-
-static const char *const QUICK_REF_LINE =
- "\v%3d\t007%u)\t027%s\t110%c%c%c\x3r\t160\f%02u%u\fd"
- "\x3l\t170\f%02u%d\fd\t208\f%02u%u\fd\t247\f"
- "%02u%u\fd\t270\f%02u%c%c%c%c\fd";
-
-static const char *const QUICK_REFERENCE =
- "\r\x3""cQuick Reference Chart\v012\x3l"
- "\t007#\t027Name\t110Cls\t140Lvl\t176H.P."
- "\t212S.P.\t241A.C.\t270Cond"
- "%s%s%s%s%s%s%s%s"
- "\v110\t064\x3""cGold\t144Gems\t224Food\v119"
- "\t064\f15%u\t144%u\t224%u day%s\fd";
-
-static const int BLACKSMITH_MAP_IDS[2][4] = { { 28, 30, 73, 49 }, { 29, 31, 37, 43 } };
-
-static const char *const ITEMS_DIALOG_TEXT1 =
- "\r\x2\x3""c\v021\t017\f37W\fdeap\t051\f37A\fdrmor\t085A"
- "\f37c\fdces\t119\f37M\fdisc\t153%s\t187%s\t221%s"
- "\t255%s\t289Exit";
-static const char *const ITEMS_DIALOG_TEXT2 =
- "\r\x2\x3""c\v021\t017\f37W\fdeap\t051\f37A\fdrmor\t085A"
- "\f37c\fdces\t119\f37M\fdisc\t153\f37%s\t289Exit";
-static const char *const ITEMS_DIALOG_LINE1 = "\x3r\f%02u\t023%2d)\x3l\t028%s\n";
-static const char *const ITEMS_DIALOG_LINE2 = "\x3r\f%02u\t023%2d)\x3l\t028%s\x3r\t000%u\n";
-
-static const char *const BTN_BUY = "\f37B\fduy";
-static const char *const BTN_SELL = "\f37S\fdell";
-static const char *const BTN_IDENTIFY = "\f37I\fddentify";
-static const char *const BTN_FIX = "\f37F\fdix";
-static const char *const BTN_USE = "\f37U\fdse";
-static const char *const BTN_EQUIP = "\f37E\fdquip";
-static const char *const BTN_REMOVE = "\f37R\fdem";
-static const char *const BTN_DISCARD = "\f37D\fdisc";
-static const char *const BTN_QUEST = "\f37Q\fduest";
-static const char *const BTN_ENCHANT = "E\fdnchant";
-static const char *const BTN_RECHARGE = "R\fdechrg";
-static const char *const BTN_GOLD = "G\fdold";
-
-static const char *const ITEM_BROKEN = "\f32broken ";
-static const char *const ITEM_CURSED = "\f09cursed ";
-static const char *const ITEM_OF = "of ";
-
-static const char *const BONUS_NAMES[7] = {
- "", "Dragon Slayer", "Undead Eater", "Golem Smasher",
- "Bug Zapper", "Monster Masher", "Beast Bopper"
-};
-
-static const char *const WEAPON_NAMES[41] = {
- nullptr, "long sword ", "short sword ", "broad sword ", "scimitar ",
- "cutlass ", "sabre ", "club ", "hand axe ", "katana ", "nunchakas ",
- "wakazashi ", "dagger ", "mace ", "flail ", "cudgel ", "maul ", "spear ",
- "bardiche ", "glaive ", "halberd ", "pike ", "flamberge ", "trident ",
- "staff ", "hammer ", "naginata ", "battle axe ", "grand axe ", "great axe ",
- "short bow ", "long bow ", "crossbow ", "sling ", "Xeen Slayer Sword ",
- "Elder LongSword ", "Elder Dagger ", "Elder Mace ", "Elder Spear ",
- "Elder Staff ", "Elder LongBow "
-};
-
-static const char *const ARMOR_NAMES[14] = {
- nullptr, "robes ", "scale armor ", "ring mail ", "chain mail ",
- "splint mail ", "plate mail ", "plate armor ", "shield ",
- "helm ", "boots ", "cloak ", "cape ", "gauntlets "
-};
-
-static const char *const ACCESSORY_NAMES[11] = {
- nullptr, "ring ", "belt ", "brooch ", "medal ", "charm ", "cameo ",
- "scarab ", "pendant ", "necklace ", "amulet "
-};
-
-static const char *const MISC_NAMES[22] = {
- nullptr, "rod ", "jewel ", "gem ", "box ", "orb ", "horn ", "coin ",
- "wand ", "whistle ", "potion ", "scroll ", "bogus", "bogus", "bogus",
- "bogus", "bogus", "bogus", "bogus", "bogus", "bogus", "bogus"
-};
-
-static const char *const SPECIAL_NAMES[74] = {
- nullptr, "light", "awakening", "magic arrows", "first aid", "fists", "energy blasts", "sleeping",
- "revitalization", "curing", "sparking", "shrapmetal", "insect repellent", "toxic clouds", "elemental protection",
- "pain", "jumping", "beast control", "clairvoyance", "undead turning", "levitation", "wizard eyes", "blessing",
- "monster identification", "lightning", "holy bonuses", "power curing", "nature's cures", "beacons",
- "shielding", "heroism", "hypnotism", "water walking", "frost biting", "monster finding", "fireballs",
- "cold rays", "antidotes", "acid spraying", "time distortion", "dragon sleep", "vaccination", "teleportation",
- "death", "free movement", "golem stopping", "poison volleys", "deadly swarms", "shelter", "daily protection",
- "daily sorcerery", "feasting", "fiery flails", "recharging", "freezing", "town portals", "stone to flesh",
- "raising the dead", "etherealization", "dancing swords", "moon rays", "mass distortion", "prismatic light",
- "enchant item", "incinerating", "holy words", "resurrection", "storms", "megavoltage", "infernos",
- "sun rays", "implosions", "star bursts", "the GODS!"
-};
-
-static const char *const ELEMENTAL_NAMES[6] = {
- "Fire", "Elec", "Cold", "Acid/Poison", "Energy", "Magic"
-};
-
-static const char *const ATTRIBUTE_NAMES[10] = {
- "might", "Intellect", "Personality", "Speed", "accuracy", "Luck",
- "Hit Points", "Spell Points", "Armor Class", "Thievery"
-};
-
-static const char *const EFFECTIVENESS_NAMES[7] = {
- nullptr, "Dragons", "Undead", "Golems", "Bugs", "Monsters", "Beasts"
-};
-
-static const char *const QUEST_ITEM_NAMES[85] = {
- "Deed to New Castle",
- "Crystal Key to Witch Tower",
- "Skeleton Key to Darzog's Tower",
- "Enchanted Key to Tower of High Magic",
- "Jeweled Amulet of the Northern Sphinx",
- "Stone of a Thousand Terrors",
- "Golem Stone of Admittance",
- "Yak Stone of Opening",
- "Xeen's Scepter of Temporal Distortion",
- "Alacorn of Falista",
- "Elixir of Restoration",
- "Wand of Faery Magic",
- "Princess Roxanne's Tiara",
- "Holy Book of Elvenkind",
- "Scarab of Imaging",
- "Crystals of Piezoelectricity",
- "Scroll of Insight",
- "Phirna Root",
- "Orothin's Bone Whistle",
- "Barok's Magic Pendant",
- "Ligono's Missing Skull",
- "Last Flower of Summer",
- "Last Raindrop of Spring",
- "Last Snowflake of Winter",
- "Last Leaf of Autumn",
- "Ever Hot Lava Rock",
- "King's Mega Credit",
- "Excavation Permit",
- "Cupie Doll",
- "Might Doll",
- "Speed Doll",
- "Endurance Doll",
- "Accuracy Doll",
- "Luck Doll",
- "Widget",
- "Pass to Castleview",
- "Pass to Sandcaster",
- "Pass to Lakeside",
- "Pass to Necropolis",
- "Pass to Olympus",
- "Key to Great Western Tower",
- "Key to Great Southern Tower",
- "Key to Great Eastern Tower",
- "Key to Great Northern Tower",
- "Key to Ellinger's Tower",
- "Key to Dragon Tower",
- "Key to Darkstone Tower",
- "Key to Temple of Bark",
- "Key to Dungeon of Lost Souls",
- "Key to Ancient Pyramid",
- "Key to Dungeon of Death",
- "Amulet of the Southern Sphinx",
- "Dragon Pharoah's Orb",
- "Cube of Power",
- "Chime of Opening",
- "Gold ID Card",
- "Silver ID Card",
- "Vulture Repellant",
- "Bridle",
- "Enchanted Bridle",
- "Treasure Map (Goto E1 x1, y11)",
- "",
- "Fake Map",
- "Onyx Necklace",
- "Dragon Egg",
- "Tribble",
- "Golden Pegasus Statuette",
- "Golden Dragon Statuette",
- "Golden Griffin Statuette",
- "Chalice of Protection",
- "Jewel of Ages",
- "Songbird of Serenity",
- "Sandro's Heart",
- "Ector's Ring",
- "Vespar's Emerald Handle",
- "Queen Kalindra's Crown",
- "Caleb's Magnifying Glass",
- "Soul Box",
- "Soul Box with Corak inside",
- "Ruby Rock",
- "Emerald Rock",
- "Sapphire Rock",
- "Diamond Rock",
- "Monga Melon",
- "Energy Disk"
-};
-
-static const char *QUEST_ITEM_NAMES_SWORDS[51] = {
- "Pass to Hart", "Pass to Impery", "Pass to town3", "Pass to town4", "Pass to town5",
- "Key to Hart Sewers", "Key to Rettig's Pyramid", "Key to the Old Temple",
- "Key to Canegtut's Pyramid", "Key to Ascihep's Pyramid", "Key to Dragon Tower",
- "Key to Darkstone Tower", "Key to Temple of Bark", "Key to Dungeon of Lost Souls",
- "Key to Ancient Pyramid", "Key to Dungeon of Death", "Red Magic Hammer",
- "Green Magic Hammer", "Golden Magic Wand", "Silver Magic Hammer", "Magic Coin",
- "Ruby", "Diamond Mineral", "Emerald", "Sapphire", "Treasure Map (Goto E1 x1, y11)",
- "NOTUSED", "Melon", "Princess Crown", "Emerald Wand", "Druid Carving", "High Sign",
- "Holy Wheel", "Double Cross", "Sky Hook", "Sacred Cow", "Staff of the Mountain",
- "Hard Rock", "Soft Rock", "Rock Candy", "Ivy Plant", "Spirit Gem", "Temple of Sun holy lamp oil",
- "Noams Hammer", "Positive Orb", "Negative Orb", "FireBane Staff", "Diamond Edged Pick",
- "Monga Melon", "Energy Disk", "Old XEEN Quest Item"
+ 0, 0, 2, 1, 2, 4, 5, 0, 0, 0, 0, 10, 10, 10, 0, 0, 20, 4, 10, 20, 1, 10,
+ 5, 5, 4, 2, 0, 0, 0, 10, 3, 1, 20, 4, 0, 20, 10, 10, 1, 10, 0, 0, 0, 2,
+ 2, 0, 10, 10, 10, 0, 0, 10, 3, 2, 10, 1, 10, 10, 20, 0, 0, 1, 1, 20, 5, 20,
+ 5, 0, 0, 0, 0, 5, 1, 2, 0, 2, 0
+};
+
+static const char* const NOT_A_SPELL_CASTER = "ë ¥ § ª«¨ ⥫ì...";
+
+static const char* const SPELLS_LEARNED_ALL =
+ "ë 㦥 § ¥â¥ ¢áñ,\n"
+ "\t010ç¥¬ã ¬ë ¬®¦¥¬ ¢ á\n"
+ "\t010 ãç¨âì!\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n";
+
+static const char* const SPELLS_FOR = "\r\fd%s\x2\x3""c\t000\v002 ª«¨ ¨ï";
+
+static const char* const SPELL_LINES_0_TO_9 =
+ "\x2\x3l\v015\t0011\n2\n3\n4\n5\n6\n7\n8\n9\n0";
+
+static const char* const SPELLS_DIALOG_SPELLS =
+ "\x3l\v015"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l"
+ "\t004\v110%s - %u\x1";
+
+static const char* const SPELL_PTS = " ";
+
+static const char* const GOLD = "®«";
+
+static const char* const SPELL_INFO =
+ "\x3""c\f09%s\fd\x3""l\n"
+ "\n"
+ "%s\x3""c\t000\v110. ª« ¢¨èã!";
+
+static const char* const SPELL_PURCHASE =
+ "\x3""l\v000\t000\fd%s ¥« ¥â¥ ¯à¨®¡à¥á⨠"
+ "\f09%s\fd § %u?";
+
+static const char* const MAP_TEXT =
+ "\x3""c\v000\t000%s\x3l\v139"
+ "\t000X = %d\x3r\t000Y = %d\x3""c\t000%s";
+
+static const char* const LIGHT_COUNT_TEXT = "\x3""l\n\n\t024¢¥â\x3""r\t124%u";
+
+static const char* const FIRE_RESISTENCE_TEXT = "%c%s£®ì%s%u";
+
+static const char* const ELECRICITY_RESISTENCE_TEXT = "%c%s஬%s%u";
+
+static const char* const COLD_RESISTENCE_TEXT = "%c%s®«®¤%s%u";
+
+static const char* const POISON_RESISTENCE_TEXT = "%c%s¤/¨á«®â %s%u";
+
+static const char* const CLAIRVOYANCE_TEXT = "%c%sᮢ¨¤¥¨¥%s";
+
+static const char* const LEVITATE_TEXT = "%c%s¥¢¨â æ¨ï%s";
+
+static const char* const WALK_ON_WATER_TEXT = "%c%s®¦¤¥¨¥ ¯® ¢®¤¥";
+
+static const char* const GAME_INFORMATION =
+ "\r\x3""c\t000\v001\f37%s ᨠ\fd\n"
+ "£à®¢ ï ¨ä®à¬ æ¨ï\n"
+ "\n"
+ "¥£®¤ï \f37%s\fd\n"
+ "\n"
+ "\t032६ï\t072¥ì\t112®¤\n"
+ "\t032\f37%d:%02d%c\t072%u\t112%u\fd%s";
+
+static const char* const WORLD_GAME_TEXT = "World";
+static const char* const DARKSIDE_GAME_TEXT = "Darkside";
+static const char* const CLOUDS_GAME_TEXT = "¡« ª ";
+static const char* const SWORDS_GAME_TEXT = "Swords";
+
+static const char* const WEEK_DAY_STRINGS[10] = {
+ "¤¥áï⨤¥ì", "¯¥à¢®¤¥ì", "¢â®à®¤¥ì", "âà¥â쥤¥ì", "ç¥â¢¥à®¤¥ì",
+ "¯ï⨤¥ì", "è¥á⨤¥ì", "ᥬ¨¤¥ì", "¢®á쬨¤¥ì", "¤¥¢ï⨤¥ì"
+};
+
+static const char* const CHARACTER_DETAILS =
+ "\x3""l\v041\t196%s\t000\v002%s : %s %s %s"
+ "\x3""r\t053\v028\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3""l\t131\f%02u%d\fd\t196\f15%lu\fd\x3""r"
+ "\t053\v051\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3""l\t131\f%02u%u\fd\t196\f15%lu\fd"
+ "\x3""r\t053\v074\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3""l\t131\f15%u\fd\t196\f15%lu\fd"
+ "\x3""r\t053\v097\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3""l\t131\f15%u\fd\t196\f15%u %s\fd"
+ "\x3""r\t053\v120\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3""l\t131\f15%u\fd\t196\f%02u%s\fd"
+ "\t245%s%s%s%s\fd";
+
+static const char* const PARTY_GOLD = "®«®â®";
+
+static const char* const PLUS_14 = "\f14+";
+
+static const char* const CHARACTER_TEMPLATE =
+ "\x1\f00\r\x3""l\t029\v018¨«\t080âª\t131¤®à\t196¯ëâ"
+ "\t029\v041â\t080¤ç\t131\t029\v064ãå\t080§à"
+ "\t131áâ\t196«¬ §ë\t029\v087«¦\t080à¢\t131¢ª"
+ "\t196¨é \t029\v110ªà\t080\t131 £à\t196®áâ®ï¨¥"
+ "\x3""c\t290\v025\f37\fd¥é¨\t290\v057\f37"
+ "\fdáâà\t290\v089\f37\fd¬¥\t290\v121ë室\x3""l%s";
+
+static const char* const EXCHANGING_IN_COMBAT =
+ "\x3""c\v007\t000® ¢à¥¬ï ¡¨â¢ë § ¯à¥é¥® ¬¥ïâìáï ¬¥áâ ¬¨!";
+
+static const char* const CURRENT_MAXIMUM_RATING_TEXT =
+ "\x2\x3""c%s\n"
+ "¥©ç á / ªá¨¬ã¬\n"
+ "\x3""r\t054%lu\x3""l\t058/ %lu\n"
+ "\x3""c £: %s\x1";
+
+static const char* const CURRENT_MAXIMUM_TEXT =
+ "\x2\x3""c%s\n"
+ "¥©ç á / ªá¨¬ã¬\n"
+ "\x3""r\t054%d\x3""l\t058/ %lu";
+
+static const char* const RATING_TEXT[24] = {
+ "¥â", "¨§¥àë©", " «ª¨©", "ç.¨§ª¨©", "¨§ª¨©", "।¨©", "®à®è¨©",
+ "⫨çë©", "ë᮪¨©", "ëá®ç¥ë©", "®«ì让", "£à®¬ë©", "¤¨¢¨â¥«ìë©",
+ "¥¢¥à®ïâë©", "¨£ â᪨©", " â áâ¨çë©", "§ã¬¨â¥«ìë©", "®à §¨â¥«ìë©",
+ "à ¤¨®§ë©", "஬ ¤ë©", "®«®áá «ìë©", "®âàïá î騩", "㤮¢¨éë©",
+ "ëá®ç ©è¨©"
+};
+
+static const char* const AGE_TEXT =
+ "\x2\x3""c%s\n"
+ "¥ªã騩 / áâ®ï騩\n"
+ "\x3""r\t057%u\x3""l\t061/ %u\n"
+ "\x3""c®¤¨«%s: %u / %u\x1";
+
+static const char* const LEVEL_TEXT =
+ "\x2\x3""c%s\n"
+ "¥ªã騩 / ªá¨¬ã¬\n"
+ "\x3""r\t054%u\x3""l\t058/ %u\n"
+ "\x3""c%u â ª%s/ ã¤\x1";
+
+static const char* const RESISTENCES_TEXT =
+ "\x2\x3""c%s\x3""l\n"
+ "\t020£®ì\t100%u\n"
+ "\t020®«®¤\t100%u\n"
+ "\t020஬\t100%u\n"
+ "\t020¤\t100%u\n"
+ "\t020¥à£¨ï\t100%u\n"
+ "\t020 £¨ï\t100%u";
+
+static const char* const NONE = "\n\t012¥â";
+
+static const char* const EXPERIENCE_TEXT =
+ "\x2\x3""c%s\x3""l\n"
+ "\t005¥ªã騩:\t070%lu\n"
+ "\t005«. ã஢¥ì:\t070%s\x1";
+
+static const char* const ELIGIBLE = "\f12®áâ㯥\fd";
+
+static const char* const IN_PARTY_IN_BANK =
+ "\x2\x3""c%s\n"
+ "%lu á ᮡ®©\n"
+ "%lu ¢ ¡ ª¥\x1\x3""l";
+
+static const char* const FOOD_TEXT =
+ "\x2\x3""c%s\n"
+ "%u ¯®àæ¨%c\n"
+ "¢ â¨â %u %s\x1\x3""l";
+
+static const char* const EXCHANGE_WITH_WHOM = "\t010\v005®¬¥ïâìáï á ª¥¬?";
+
+static const char* const QUICK_REF_LINE =
+ "\v%3d\t007%u)\t027%s\t110%c%c%c\x3r\t160\f%02u%u\fd"
+ "\x3l\t170\f%02u%d\fd\t208\f%02u%u\fd\t247\f"
+ "%02u%u\fd\t270\f%02u%c%c%c%c\fd";
+
+static const char* const QUICK_REFERENCE =
+ "\r\x3""cëáâà ï c¯à ¢ª \v012\x3""l"
+ "\t007#\t027¬ï\t110«á\t147à¢\t174¤®à"
+ "\t214\t242\t270®áâ"
+ "%s%s%s%s%s%s%s%s"
+ "\v110\t064\x3""c®«®â®\t144«¬ §ë\t224¨é \v119"
+ "\t064\f15%lu\t144%lu\t224%u %s\fd";
+
+static const int BLACKSMITH_MAP_IDS[2][4] =
+ { { 28, 30, 73, 49 }, { 29, 31, 37, 43 } };
+
+static const char* const ITEMS_DIALOG_TEXT1 =
+ "\r\x2\x3""c\v021\t017àã\f37¦\fd\t051\f37\fdà®ï\t085"
+ "\f37\fdªà è\t119\f37\fd §\t153%s\t187%s\t221%s\t255%s\t289ë室";
+
+static const char* const ITEMS_DIALOG_TEXT2 =
+ "\r\x2\x3""c\v021\t017àã\f37¦\fd\t051\f37\fdà®ï\t085"
+ "\f37\fdªà è\t119\f37\fd §\t153\f37%s\t289ë室";
+
+static const char* const ITEMS_DIALOG_LINE1 = "\x3r\f%02u\t023%2d)\x3l\t028%s\n";
+static const char* const ITEMS_DIALOG_LINE2 = "\x3r\f%02u\t023%2d)\x3l\t028%s\x3r\t000%u\n";
+
+static const char* const BTN_BUY = "\f37\fdã¯";
+static const char *const BTN_SELL = "\f37\fdத";
+static const char* const BTN_IDENTIFY = "\f37\fd¯®§";
+static const char* const BTN_FIX = "\f37\fd¨¨âì";
+static const char* const BTN_USE = "\f37\fdá¯";
+static const char* const BTN_EQUIP = "\f37\fd ¤";
+static const char* const BTN_REMOVE = "\f37\fdïâì";
+static const char* const BTN_DISCARD = "\f37\fdë¡à";
+static const char* const BTN_QUEST = "\f37\fd ¤ ";
+static const char* const BTN_ENCHANT = "\fd ç à";
+static const char* const BTN_RECHARGE = "\fd¥à¥§à";
+static const char* const BTN_GOLD = "\fd®«®â®";
+
+static const char* const ITEM_BROKEN = "\f32á«®¬ ® ";
+static const char* const ITEM_CURSED = "\f09¯à®ª«ïâ® ";
+static const char* const ITEM_OF = "";
+
+static const char* const BONUS_NAMES[7] = {
+ "", "¡¨©æë ¤à ª®®¢", "§£®ïî饣® ¬ñàâ¢ëå", "àãè¨â¥«ï £®«¥¬®¢",
+ " ¢¨â¥«ï ᥪ®¬ëå", "¡¨©æë ¬®áâ஢", "¡¨©æë §¢¥à¥©"
+};
+
+static const char* const WEAPON_NAMES[41] = {
+ nullptr, "¬¥ç ", "£« ¤¨ãá ", "¯ « è ", "ïâ £ ",
+ "ª®à⨪ ", "á ¡«ï ", "¤ã¡¨ ", "⮯®à ", "ª â ", "ãç ª¨ ",
+ "¢ ª¨¤§ ᨠ", "ª¨¦ « ", "¡ã« ¢ ", "楯 ", "¦¥§« ", "¬®«®â ", "ª®¯ìñ ",
+ "¡¥à¤ëè ", "£«¥ä ", " «¥¡ ठ", "¯¨ª ", "ä« ¬¡¥à£ ", "â१㡥æ ",
+ "¯®á®å ", "¡®¥¢®© ¬®«®â ", " £¨ â ", "¡®¥¢®© ⮯®à ", "ᥪ¨à ",
+ "⮯®à ¯ « ç ", "«ãª ", "¡®«ì让 «ãª ", " à¡ «¥â ", "¯à é ",
+ "¥ç - 㡨©æ ᨠ",
+ "Elder LongSword ", "Elder Dagger ", "Elder Mace ", "Elder Spear ",
+ "Elder Staff ", "Elder LongBow "
+};
+
+static const char* const ARMOR_NAMES[14] = {
+ nullptr, "¬ â¨ï ", "ç¥èãï ", "¯ æ¨àì ", "ª®«ìç㣠",
+ "îè¬ ", "¡¥åâ¥à¥æ ", "« âë ", "é¨â ",
+ "è«¥¬ ", "á ¯®£¨ ", "¯« é ", " ª¨¤ª ", "¯¥àç ⪨ "
+};
+
+static const char* const ACCESSORY_NAMES[11] = {
+ nullptr, "ª®«ìæ® ", "¯®ïá ", "¡à®èì ", "¬¥¤ «ì ", "â «¨á¬ ", "ª ¬¥ï ",
+ "áª à ¡¥© ", "ªã«® ", "®¦¥à¥«ì¥ ", " ¬ã«¥â "
+};
+
+static const char* const MISC_NAMES[22] = {
+ nullptr, "᪨¯¥âà ", "á ¬®æ¢¥â ", "ª ¬¥ì ", "èª â㫪 ", "áä¥à ", "ண ",
+ "¬®¥âª ", "¦¥§« ", "ᢨá⮪ ", "§¥«ì¥ ", "ᢨ⮪ ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ",
+ "¯®¤¤¥«ª ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ",
+ "¯®¤¤¥«ª ", "¯®¤¤¥«ª "
+};
+
+static const char* const SPECIAL_NAMES[74] = {
+ nullptr, "ᢥâ ", "¯à®¡ã¦¤¥¨ï", "¢®«è¥¡ëå áâ५", "¯¥à¢®© ¯®¬®é¨",
+ "ªã« ª®¢", "í¥à£¥â¨ç¥áª®£® ¢§àë¢ ", "ãá믫¥¨ï", "«¥ç¥¨ï á« ¡®áâ¨",
+ "«¥ç¥¨ï", "¨áªà", "èà ¯¥«¨", "९¥««¥â ", "冷¢¨âëå ®¡« ª®¢",
+ "§ é¨âë ®â áâ¨å¨©", "¡®«¨", "¯à릪®¢", "ª®âà®«ï ¤ ¬®áâà ¬¨",
+ "ïᮢ¨¤¥¨ï", "¨§£ ¨ï ¥¦¨â¨", "«¥¢¨â 樨", "¢®«è¥¡®£® £« § ",
+ "¡« £®á«®¢¥¨ï", "®¯®§ ¨ï ¬®áâ஢", "¬®«¨©", "á¢ïâëå ¤ ஢", "¨á楫¥¨ï",
+ "¯à¨à®¤®£® «¥ç¥¨ï", "¬ 类¢", "é¨â ", "¬ã¦¥á⢠", "£¨¯®§ ",
+ "宦¤¥¨ï ¯® ¢®¤¥", "®¡¦¨£ î饣® 宫®¤ ", "¯®¨áª ¬®áâ஢",
+ "®£¥ëå è ஢", "«ã祩 宫®¤ ", "¯à®â¨¢®ï¤¨ï", "à á¯ë«¥¨ï ª¨á«®âë",
+ "¢à¥¬¥®£® ¨áª ¦¥¨ï", "ãá믫¥¨ï ¤à ª®®¢", "¢ ªæ¨ 樨", "⥫¥¯®àâ æ¨¨",
+ "ᬥàâ¨", "᢮¡®¤®£® ¤¢¨¦¥¨ï", "®áâ ®¢ª¨ £®«¥¬ ", "冷¢¨âëå § «¯®¢",
+ "ᬥà⥫쮣® à®ï", "ã¡¥¦¨é ", "¤ï § é¨âë", "¤ï ¬ £¨¨", "¯¨à ",
+ "®£¥®£® 楯 ", "¯¥à¥§ à浪¨", "¬®à®§ ", "£®à®¤áª¨å ¯®àâ «®¢",
+ "áïâ¨ï ®ª ¬¥¥¨ï", "®¦¨¢«¥¨ï ¬ñàâ¢ëå", "¤¥¬ â¥à¨ «¨§ 樨",
+ "â æãîé¨å ª«¨ª®¢", "«ãëå «ã祩", "¨§¬¥¥¨ï ¢¥á ",
+ "¯à¨§¬ â¨ç¥áª®£® ᢥâ ", "ç à", "¨á¯¥¯¥«¥¨ï", "á¢ïâëå á«®¢", "¢®áªà¥è¥¨ï",
+ "¡ãàì", "¬¥£ ¢®«ìâ", "¨ä¥à®", "᮫¥çëå «ã祩", "¨¬¯«®§¨©",
+ "¢§àë¢ §¢¥§¤ë", "!"
+};
+
+static const char* const ELEMENTAL_NAMES[6] = {
+ "£ï", "஬ ", "®«®¤ ", "¨á«®âë/¤ ", "¥à£¨¨", " £¨¨"
+};
+
+static const char* const ATTRIBUTE_NAMES[10] = {
+ "¨« ", "⥫«¥ªâ", "¨« ¤ãå ", "ª®à®áâì", "¥âª®áâì", "¤ ç ",
+ "¤®à®¢ì¥", "窨 ¬ £¨¨", "« áá § é¨âë", "®à®¢á⢮"
+};
+
+static const char* const EFFECTIVENESS_NAMES[7] = {
+ nullptr, "à ª®®¢", "ñàâ¢ëå", "®«¥¬®¢", " ᥪ®¬ëå", "®áâ஢", "¢¥à¥©"
+};
+
+static const char* const QUEST_ITEM_NAMES[85] = {
+ "à ¢® ¢« ¤¥¨ï ìîª á«®¬",
+ "àãáâ «ìë© ª«îç ®â ¥¤ì¬¨®© ¡ è¨",
+ "â¬ëçª ¤«ï ¡ è¨ à§®£ ",
+ "«îç ®â è¨ ¢ëá襩 ¬ £¨¨",
+ "à £®æ¥ë© ¬ã«¥â ¥¢¥à®£® 䨪á ",
+ " ¬¥ì ëáïç¨ ¦ ᮢ",
+ "⯨à î騩 ª ¬¥ì £®«¥¬®¢",
+ "⯨à î騩 ª ¬¥ì ª ",
+ "ª¨¯¥âà ६¥®£® ᪠¦¥¨ï",
+ "®£ «¨áâë",
+ "«¨ªá¨à ®ááâ ®¢«¥¨ï",
+ "®«è¥¡ë© ¦¥§« 䥩",
+ "¨ ¤¥¬ ¯à¨æ¥ááë ®ªá ë",
+ "¢ïé¥ ï ¨£ «ì䮢",
+ "ª à ¡¥© ®¯«®é¥¨ï",
+ "à¨áâ ««ë 쥧®í«¥ªâà¨ç¥á⢠",
+ "¢¨â®ª ã¤à®áâ¨",
+ "®à¥ì ä¨àë",
+ "®áâﮩ ᢨá⮪ à®ä¨ ",
+ "®«è¥¡ë© ªã«® ப ",
+ "ய ¢è¨© ç¥à¥¯ ¨£®®",
+ "®á«¥¤¨© 梥⮪ «¥â ",
+ "®á«¥¤ïï ¤®¦¤¥¢ ï ª ¯¥«ìª ¢¥áë",
+ "®á«¥¤ïï ᥦ¨ª §¨¬ë",
+ "®á«¥¤¨© «¨á⠮ᥨ",
+ "¥ç® £®àï稩 ªã᮪ ¯¥¬§ë",
+ "¥£ ªà¥¤¨â ª®à®«ï",
+ " §à¥è¥¨¥ à ᪮¯ª¨",
+ "㪮«ª ",
+ "㪫 ¨«ë",
+ "㪫 ª®à®áâ¨",
+ "㪫 «®¦¥¨ï",
+ "㪫 ¥âª®áâ¨",
+ "㪫 ¤ ç¨",
+ "áâனá⢮",
+ "Pass to Castleview",
+ "Pass to Sandcaster",
+ "Pass to Lakeside",
+ "Pass to Necropolis",
+ "Pass to Olympus",
+ "Key to Great Western Tower",
+ "Key to Great Southern Tower",
+ "Key to Great Eastern Tower",
+ "Key to Great Northern Tower",
+ "Key to Ellinger's Tower",
+ "Key to Dragon Tower",
+ "Key to Darkstone Tower",
+ "Key to Temple of Bark",
+ "Key to Dungeon of Lost Souls",
+ "Key to Ancient Pyramid",
+ "Key to Dungeon of Death",
+ "Amulet of the Southern Sphinx",
+ "Dragon Pharoah's Orb",
+ "Cube of Power",
+ "Chime of Opening",
+ "Gold ID Card",
+ "Silver ID Card",
+ "Vulture Repellant",
+ "Bridle",
+ "Enchanted Bridle",
+ "Treasure Map (Goto E1 x1, y11)",
+ "",
+ "Fake Map",
+ "Onyx Necklace",
+ "Dragon Egg",
+ "Tribble",
+ "Golden Pegasus Statuette",
+ "Golden Dragon Statuette",
+ "Golden Griffin Statuette",
+ "Chalice of Protection",
+ "Jewel of Ages",
+ "Songbird of Serenity",
+ "Sandro's Heart",
+ "Ector's Ring",
+ "Vespar's Emerald Handle",
+ "Queen Kalindra's Crown",
+ "Caleb's Magnifying Glass",
+ "Soul Box",
+ "Soul Box with Corak inside",
+ "Ruby Rock",
+ "Emerald Rock",
+ "Sapphire Rock",
+ "Diamond Rock",
+ "Monga Melon",
+ "Energy Disk"
+};
+
+static const char* QUEST_ITEM_NAMES_SWORDS[51] = {
+ "Pass to Hart", "Pass to Impery", "Pass to town3", "Pass to town4", "Pass to town5",
+ "Key to Hart Sewers", "Key to Rettig's Pyramid", "Key to the Old Temple",
+ "Key to Canegtut's Pyramid", "Key to Ascihep's Pyramid", "Key to Dragon Tower",
+ "Key to Darkstone Tower", "Key to Temple of Bark", "Key to Dungeon of Lost Souls",
+ "Key to Ancient Pyramid", "Key to Dungeon of Death", "Red Magic Hammer",
+ "Green Magic Hammer", "Golden Magic Wand", "Silver Magic Hammer", "Magic Coin",
+ "Ruby", "Diamond Mineral", "Emerald", "Sapphire", "Treasure Map (Goto E1 x1, y11)",
+ "NOTUSED", "Melon", "Princess Crown", "Emerald Wand", "Druid Carving", "High Sign",
+ "Holy Wheel", "Double Cross", "Sky Hook", "Sacred Cow", "Staff of the Mountain",
+ "Hard Rock", "Soft Rock", "Rock Candy", "Ivy Plant", "Spirit Gem", "Temple of Sun holy lamp oil",
+ "Noams Hammer", "Positive Orb", "Negative Orb", "FireBane Staff", "Diamond Edged Pick",
+ "Monga Melon", "Energy Disk", "Old XEEN Quest Item"
};
static const int WEAPON_BASE_COSTS[35] = {
- 0, 50, 15, 100, 80, 40, 60, 1, 10, 150, 30, 60, 8, 50,
- 100, 15, 30, 15, 200, 80, 250, 150, 400, 100, 40, 120,
- 300, 100, 200, 300, 25, 100, 50, 15, 0
+ 0, 50, 15, 100, 80, 40, 60, 1, 10, 150, 30, 60, 8, 50,
+ 100, 15, 30, 15, 200, 80, 250, 150, 400, 100, 40, 120,
+ 300, 100, 200, 300, 25, 100, 50, 15, 0
};
static const int ARMOR_BASE_COSTS[14] = {
- 0, 20, 100, 200, 400, 600, 1000, 2000, 100, 60, 40, 250, 200, 100
+ 0, 20, 100, 200, 400, 600, 1000, 2000, 100, 60, 40, 250, 200, 100
};
static const int ACCESSORY_BASE_COSTS[11] = {
- 0, 100, 100, 250, 100, 50, 300, 200, 500, 1000, 2000
+ 0, 100, 100, 250, 100, 50, 300, 200, 500, 1000, 2000
};
static const int MISC_MATERIAL_COSTS[22] = {
- 0, 50, 1000, 500, 10, 100, 20, 10, 50, 10, 10, 100,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ 0, 50, 1000, 500, 10, 100, 20, 10, 50, 10, 10, 100,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};
static const int MISC_BASE_COSTS[76] = {
- 0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100, 100, 100, 100, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 300, 300, 300, 300, 300,
- 300, 300, 300, 300, 300, 400, 400, 400, 400, 400, 400, 400,
- 400, 400, 400, 500, 500, 500, 500, 500, 500, 500, 500, 500,
- 500, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
- 600, 600, 600, 600
+ 0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 300, 300, 300, 300, 300,
+ 300, 300, 300, 300, 300, 400, 400, 400, 400, 400, 400, 400,
+ 400, 400, 400, 500, 500, 500, 500, 500, 500, 500, 500, 500,
+ 500, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600
};
static const int METAL_BASE_MULTIPLIERS[22] = {
- 10, 25, 5, 75, 2, 5, 10, 20, 50, 2, 3, 5, 10, 20, 30, 40,
- 50, 60, 70, 80, 90, 100
+ 10, 25, 5, 75, 2, 5, 10, 20, 50, 2, 3, 5, 10, 20, 30, 40,
+ 50, 60, 70, 80, 90, 100
};
static const int ITEM_SKILL_DIVISORS[4] = { 1, 2, 100, 10 };
static const int RESTRICTION_OFFSETS[4] = { 0, 35, 49, 60 };
static const int ITEM_RESTRICTIONS[86] = {
- 0, 86, 86, 86, 86, 86, 86, 0, 6, 239, 239, 239, 2, 4, 4, 4, 4,
- 6, 70, 70, 70, 70, 94, 70, 0, 4, 239, 86, 86, 86, 70, 70, 70, 70,
- 0, 0, 0, 68, 100, 116, 125, 255, 255, 85, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ 0, 86, 86, 86, 86, 86, 86, 0, 6, 239, 239, 239, 2, 4, 4, 4, 4,
+ 6, 70, 70, 70, 70, 94, 70, 0, 4, 239, 86, 86, 86, 70, 70, 70, 70,
+ 0, 0, 0, 68, 100, 116, 125, 255, 255, 85, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
-static const char *const NOT_PROFICIENT =
- "\t000\v007\x3""c%ss are not proficient with a %s!";
+static const char* const NOT_PROFICIENT =
+ "\t000\v007\x3""c%s ¥ ¬®¦¥â ¨á¯®«ì§®¢ âì %s!";
-static const char *const NO_ITEMS_AVAILABLE = "\x3""c\n"
- "\t000No items available.";
+static const char* const NO_ITEMS_AVAILABLE = "\x3""c\n\t000¥â ¢¥é¥©.";
-static const char *const CATEGORY_NAMES[4] = { "Weapons", "Armor", "Accessories", "Miscellaneous" };
+static const char* const CATEGORY_NAMES[4] = {
+ "à㦨¥", "à®ï", "ªà 襨ï", " §®¥"
+};
-static const char *const X_FOR_THE_Y =
- "\x1\fd\r%s\v000\t000%s for %s the %s%s\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+static const char* const X_FOR_THE_Y =
+ "\x1\fd\r%s\v000\t000%s - %s %s%s\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
-static const char *const X_FOR_Y =
- "\x1\fd\r\x3l\v000\t000%s for %s\x3r\t000%s\x3l\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+static const char* const X_FOR_Y =
+ "\x1\fd\r\x3""l\v000\t000%s - %s\x3""r\t000%s\x3""l\v011"
+ "\x2%s%s%s%s%s%s%s%s%s\x1\fd";
-static const char *const X_FOR_Y_GOLD =
- "\x1\fd\r\x3l\v000\t000%s for %s\t150Gold - %u%s\x3l\v011"
- "\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+static const char* const X_FOR_Y_GOLD =
+ "\x1\fd\r\x3""l\v000\t000%s - %s\t150®«®â® - %lu%s\x3""l\v011"
+ "\x2%s%s%s%s%s%s%s%s%s\x1\fd";
-static const char *const FMT_CHARGES = "\x3rr\t000Charges\x3l";
+static const char* const FMT_CHARGES = "\x3""r\t000 à冷¢\x3""l";
-static const char *const AVAILABLE_GOLD_COST =
- "\x1\fd\r\x3l\v000\t000Available %s\t150Gold - %u\x3r\t000Cost"
- "\x3l\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+static const char* const AVAILABLE_GOLD_COST =
+ "\x1\fd\r\x3""l\v000\t000%s\t150®«®â® - %lu\x3""r\t000¥ "
+ "\x3""l\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
-static const char *const CHARGES = "Charges";
+static const char* const CHARGES = " à冷¢";
-static const char *const COST = "Cost";
+static const char* const COST = "¥ ";
-static const char *const ITEM_ACTIONS[7] = {
- "Equip", "Remove", "Use", "Discard", "Enchant", "Recharge", "Gold"
+static const char* const ITEM_ACTIONS[7] = {
+ " ¤¥âì", "áïâì", "¨á¯®«ì§®¢ âì", "¢ëª¨ãâì", "§ ç ஢ âì", "¯¥à¥§ à廊âì",
+ "ॢà â¨âì ¢ §®«®â®"
};
-static const char *const WHICH_ITEM = "\t010\v005%s which item?";
-static const char *const WHATS_YOUR_HURRY = "\v007What's your hurry?\n"
- "Wait till you get out of here!";
+static const char* const WHICH_ITEM = "\v000 ª®© ¯à¥¤¬¥â ¢ë ¦¥« ¥â¥ %s?";
-static const char *const USE_ITEM_IN_COMBAT =
- "\v007To use an item in Combat, invoke the Use command on your turn!";
+static const char* const WHATS_YOUR_HURRY =
+ "\v007¥£® â®à®¯¨èìáï?\n"
+ "®¤®¦¤¨, ¯®ª ¥ ¢ë¡¥à¥èìáï ®âáî¤ !";
-static const char *const NO_SPECIAL_ABILITIES = "\v005\x3""c%s\fdhas no special abilities!";
+static const char* const USE_ITEM_IN_COMBAT =
+ "\v007â®¡ë ¨á¯®«ì§®¢ âì ¯à¥¤¬¥â ¢ ¡¨â¢¥, ¦¬¨â¥ ª®¯ªã 'á¯' ¡®ª®¢®© ¯ ¥«¨.";
-static const char *const CANT_CAST_WHILE_ENGAGED = "\x3""c\v007Can't cast %s while engaged!";
+static const char* const NO_SPECIAL_ABILITIES =
+ "\v005\x3""c%s\fd¥ ¨¬¥¥â ®á®¡ëå ᢮©áâ¢!";
-static const char *const EQUIPPED_ALL_YOU_CAN = "\x3""c\v007You have equipped all the %ss you can!";
-static const char *const REMOVE_X_TO_EQUIP_Y = "\x3""c\v007You must remove %sto equip %s\b!";
-static const char *const RING = "ring";
-static const char *const MEDAL = "medal";
+static const char* const CANT_CAST_WHILE_ENGAGED =
+ "\x3""c\v007 ª«¨ ¨¥ %s ¥«ì§ï ¨á¯®«ì§®¢ âì ¢ ¡¨â¢¥!";
-static const char *const CANNOT_REMOVE_CURSED_ITEM = "\x3""You cannot remove a cursed item!";
+static const char* const EQUIPPED_ALL_YOU_CAN =
+ "\x3""c\v007ë ¥ ¬®¦¥â¥ ¤¥âì ¡®«ìè¥ ¤¢ãå %s!";
-static const char *const CANNOT_DISCARD_CURSED_ITEM = "\3x""cYou cannot discard a cursed item!";
+static const char* const REMOVE_X_TO_EQUIP_Y =
+ "\x3""c\v007 ¬ 㦮 áïâì %sçâ®¡ë ¤¥âì %s\b!";
-static const char *const PERMANENTLY_DISCARD = "\v000\t000\x3lPermanently discard %s\fd?";
+static const char* const RING = "ª®«¥æ";
+static const char* const MEDAL = "¬¥¤ «¥©";
-static const char *const BACKPACK_IS_FULL = "\v005\x3""c\fd%s's backpack is full.";
+static const char* const CANNOT_REMOVE_CURSED_ITEM =
+ "\x3""cë ¥ ¬®¦¥â¥ áïâì ¯à®ª«ïâãî ¢¥éì!";
-static const char *const CATEGORY_BACKPACK_IS_FULL[4] = {
- "\v010\t000\x3""c%s's weapons backpack is full.",
- "\v010\t000\x3""c%s's armor backpack is full.",
- "\v010\t000\x3""c%s's accessories backpack is full.",
- "\v010\t000\x3""c%s's miscellaneous backpack is full."
-};
-
-static const char *const BUY_X_FOR_Y_GOLD = "\x3l\v000\t000\fdBuy %s\fd for %u gold?";
-
-static const char *const SELL_X_FOR_Y_GOLD = "\x3l\v000\t000\fdSell %s\fd for %u gold?";
+static const char* const CANNOT_DISCARD_CURSED_ITEM =
+ "\x3""cë ¥ ¬®¦¥â¥ ¢ëª¨ãâì ¯à®ª«ïâãî ¢¥éì!";
-static const char *const NO_NEED_OF_THIS = "\v005\x3""c\fdWe have no need of this %s\f!";
+static const char* const PERMANENTLY_DISCARD =
+ "\v000\t000\x3""l모ãâì ¢á¥£¤ ? %s";
-static const char *const NOT_RECHARGABLE = "\v012\x3""c\fdNot Rechargeable. %s";
+static const char* const BACKPACK_IS_FULL =
+ "\v005\x3""c\fd%s! è à ª ¯®«®.";
-static const char *const NOT_ENCHANTABLE = "\v012\t000\x3""cNot Enchantable. %s";
+static const char* const CATEGORY_BACKPACK_IS_FULL[4] = {
+ "\v010\t000\x3""c%s! è à ª ¯®«®.",
+ "\v010\t000\x3""c%s! è à ª ¯®«®.",
+ "\v010\t000\x3""c%s! è à ª ¯®«®.",
+ "\v010\t000\x3""c%s! è à ª ¯®«®."
+};
-static const char *const SPELL_FAILED = "Spell Failed!";
+static const char* const BUY_X_FOR_Y_GOLD =
+ "\x3""l\v000\t000\fd㯨âì %s\fd § %lu §®«®â%s?";
-static const char *const ITEM_NOT_BROKEN = "\fdThat item is not broken!";
+static const char* const SELL_X_FOR_Y_GOLD =
+ "\x3""l\v000\t000\fdத âì %s\fd § %lu §®«®â%s?";
-static const char *const FIX_IDENTIFY[2] = { "Fix", "Identify" };
+static const char* const NO_NEED_OF_THIS =
+ "\v005\x3""c\fd á ¥ ¨â¥à¥áã¥â %s\fd!";
-static const char *const FIX_IDENTIFY_GOLD = "\x3l\v000\t000%s %s\fd for %u gold?";
+static const char* const NOT_RECHARGABLE =
+ "\v007\x3""c\fd¥¢®§¬®¦® ¯¥à¥§ à廊âì.\n%s";
-static const char *const IDENTIFY_ITEM_MSG = "\fd\v000\t000\x3""cIdentify Item\x3l\n"
- "\n"
- "\v012%s\fd\n"
- "\n"
- "%s";
+static const char* const NOT_ENCHANTABLE =
+ "\v007\t000\x3""c¥¢®§¬®¦® § ç ஢ âì.\n%s";
-static const char *const ITEM_DETAILS =
- "Proficient Classes\t132:\t140%s\n"
- "to Hit Modifier\t132:\t140%s\n"
- "Physical Damage\t132:\t140%s\n"
- "Elemental Damage\t132:\t140%s\n"
- "Elemental Resistance\t132:\t140%s\n"
- "Armor Class Bonus\t132:\t140%s\n"
- "Attribute Bonus\t132:\t140%s\n"
- "Special Power\t132:\t140%s";
-
-static const char *const ALL = "All";
-static const char *const FIELD_NONE = "None";
-static const char *const DAMAGE_X_TO_Y = "%d to %d";
-static const char *const ELEMENTAL_XY_DAMAGE = "%+d %s Damage";
-static const char *const ATTR_XY_BONUS = "%+d %s";
-static const char *const EFFECTIVE_AGAINST = "x3 vs %s";
-
-static const char *const QUESTS_DIALOG_TEXT =
- "\r\x2\x3""c\v021\t017\f37I\fdtems\t085\f37Q\fduests\t153"
- "\f37A\fduto Notes 221\f37U\fdp\t255\f37D\fdown"
- "\t289Exit";
-static const char *const CLOUDS_OF_XEEN_LINE = "\b \b*-- \f04Clouds of Xeen\fd --";
-static const char *const DARKSIDE_OF_XEEN_LINE = "\b \b*-- \f04Darkside of Xeen\fd --";
-static const char *const SWORDS_OF_XEEN_LINE = "\b \b*-- \f04Swords of Xeen\fd --";
-
-static const char *const NO_QUEST_ITEMS =
- "\r\x3""c\v000 000Quest Items\x3l\x2\n"
- "\n"
- "\x3""cNo Quest Items";
-static const char *const NO_CURRENT_QUESTS =
- "\x3""c\v000\t000\n"
- "\n"
- "No Current Quests";
-static const char *const NO_AUTO_NOTES = "\x3""cNo Auto Notes";
-
-static const char *const QUEST_ITEMS_DATA =
- "\r\x1\fd\x3""c\v000\t000Quest Items\x3l\x2\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s";
-static const char *const CURRENT_QUESTS_DATA =
- "\r\x1\fd\x3""c\t000\v000Current Quests\x3l\x2\n"
- "%s\n"
- "\n"
- "%s\n"
- "\n"
- "%s";
-static const char *const AUTO_NOTES_DATA =
- "\r\x1\fd\x3""c\t000\v000Auto Notes\x3l\x2\n"
- "%s\x3l\n"
- "%s\x3l\n"
- "%s\x3l\n"
- "%s\x3l\n"
- "%s\x3l\n"
- "%s\x3l\n"
- "%s\x3l\n"
- "%s\x3l\n"
- "%s\x3l";
-
-static const char *const REST_COMPLETE =
- "\v000\t0008 hours pass. Rest complete.\n"
- "%s\n"
- "%d food consumed.";
-static const char *const PARTY_IS_STARVING = "\f07The Party is Starving!\fd";
-static const char *const HIT_SPELL_POINTS_RESTORED = "Hit Pts and Spell Pts restored.";
-static const char *const TOO_DANGEROUS_TO_REST = "Too dangerous to rest here!";
-static const char *const SOME_CHARS_MAY_DIE = "Some Chars may die. Rest anyway?";
-
-static const char *const DISMISS_WHOM = "\t010\v005Dismiss whom?";
-static const char *const CANT_DISMISS_LAST_CHAR = "You cannot dismiss your last character!";
-
-static const char *const DELETE_CHAR_WITH_ELDER_WEAPON = "\v000\t000This character has an Elder Weapon and cannot be deleted!";
-
-static const char *const REMOVE_DELETE[2] = { "Remove", "Delete" };
-
-static const char *const REMOVE_OR_DELETE_WHICH = "\x3l\t010\v005%s which character?";
-
-static const char *const YOUR_PARTY_IS_FULL = "\v007Your party is full!";
-
-static const char *const HAS_SLAYER_SWORD =
- "\v000\t000This character has the Xeen Slayer Sword and cannot be deleted!";
-static const char *const SURE_TO_DELETE_CHAR =
- "Are you sure you want to delete %s the %s?";
-
-static const char *const CREATE_CHAR_DETAILS =
- "\f04\x3""c\x2\t144\v119\f37R\f04oll\t144\v149\f37C\f04reate"
- "\t144\v179\f37ESC\f04\x3l\x1\t195\v021\f37M\f04gt"
- "\t195\v045\f37I\f04nt\t195\v069\f37P\f04er\t195\v093\f37E\f04nd"
- "\t195\v116\f37S\f04pd\t195\v140\f37A\f04cy\t195\v164\f37L\f04ck%s";
-
-static const char *const NEW_CHAR_STATS =
- "\f04\x3l\t022\v148Race\t055: %s\n"
- "\t022Sex\t055: %s\n"
- "\t022Class\t055:\n"
- "\x3r\t215\v031%d\t215\v055%d\t215\v079%d\t215\v103%d\t215\v127%d"
- "\t215\v151%d\t215\v175%d\x3l\t242\v020\f%.2dKnight\t242\v031\f%.2d"
- "Paladin\t242\v042\f%.2dArcher\t242\v053\f%.2dCleric\t242\v064\f%.2d"
- "Sorcerer\t242\v075\f%.2dRobber\t242\v086\f%.2dNinja\t242\v097\f%.2d"
- "Barbarian\t242\v108\f%.2dDruid\t242\v119\f%.2dRanger\f04\x3""c"
- "\t265\v142Skills\x3l\t223\v155%s\t223\v170%s%s";
-
-static const char *const NAME_FOR_NEW_CHARACTER =
- "\x3""cEnter a Name for this Character\n\n";
-static const char *const SELECT_CLASS_BEFORE_SAVING =
- "\v006\x3""cSelect a Class before saving.\x3l";
-static const char *const EXCHANGE_ATTR_WITH = "Exchange %s with...";
+static const char* const SPELL_FAILED = " ª«¨ ¨¥ ¥ áà ¡®â «®!";
+
+static const char* const ITEM_NOT_BROKEN = "\fdâ®â ¯à¥¤¬¥â ¥ á«®¬ !";
+
+static const char* const FIX_IDENTIFY[2] = { "®ç¨¨âì", "¯®§ âì" };
+
+static const char* const FIX_IDENTIFY_GOLD =
+ "\x3""l\v000\t000%s %s\fd § %lu §®«®â%s?";
+
+static const char* const IDENTIFY_ITEM_MSG =
+ "\fd\v000\t000\x3""c¯®§ âì ¯à¥¤¬¥â\x3""l\n"
+ "\n"
+ "\v012%s\fd\n"
+ "\n"
+ "%s";
+
+static const char* const ITEM_DETAILS =
+ "ᯮ«ì§ãîâ ª« ááë\t132:\t140%s\n"
+ "®¤¨ä¨ª â®à ãà® \t132:\t140%s\n"
+ "¨§¨ç¥áª¨© ãà®\t132:\t140%s\n"
+ "à® ®â â¨å¨©\t132:\t140%s\n"
+ " é¨â ®â â¨å¨©\t132:\t140%s\n"
+ "« áá § é¨âë\t132:\t140%s\n"
+ "®ãá ᢮©á⢠\t132:\t140%s\n"
+ "ᮡ®¥ ᢮©á⢮\t132:\t140%s";
+
+static const char* const ALL = "á¥";
+static const char* const FIELD_NONE = "¥â";
+static const char* const DAMAGE_X_TO_Y = "%d-%d";
+static const char* const ELEMENTAL_XY_DAMAGE = "%+d ãà® ®â %s";
+static const char* const ATTR_XY_BONUS = "%+d %s";
+static const char* const EFFECTIVE_AGAINST = "x3 ¯à®â¨¢ %s";
+
+static const char* const QUESTS_DIALOG_TEXT =
+ "\r\x2\x3""c\v021\t017\f37\fd¥é¨\t085\f37\fd ¤ ¨ï\t153"
+ "\f37 \fd¬¥âª¨\t221¢¥àå\t255¨§"
+ "\t289ë室";
+
+static const char* const CLOUDS_OF_XEEN_LINE =
+ "\b \b*-- \f04¡« ª ᨠ\fd --";
+static const char* const DARKSIDE_OF_XEEN_LINE =
+ "\b \b*-- \f04Darkside of Xeen\fd --";
+static const char* const SWORDS_OF_XEEN_LINE =
+ "\b \b*-- \f04Swords of Xeen\fd --";
+
+static const char* const NO_QUEST_ITEMS =
+ "\r\x1\fd\x3""c\v000\t000।¬¥âë § ¤ ¨©\x3""l\x2\n"
+ "\n"
+ "\x3""c¥â ¯à¥¤¬¥â®¢";
+
+static const char* const NO_CURRENT_QUESTS =
+ "\x3""c\v000\t000\n"
+ "\n"
+ "¥â § ¤ ¨©";
+
+static const char* const NO_AUTO_NOTES = "\x3""c ¬¥â®ª ¥â";
+
+static const char* const QUEST_ITEMS_DATA =
+ "\r\x1\fd\x3""c\v000\t000।¬¥âë § ¤ ¨©\x3""l\x2\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s";
+
+static const char* const CURRENT_QUESTS_DATA =
+ "\r\x1\fd\x3""c\t000\v000 ¤ ¨ï\x3""l\x2\n"
+ "%s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "%s";
+
+static const char* const AUTO_NOTES_DATA =
+ "\r\x1\fd\x3""c\t000\v000 ¬¥âª¨\x3""l\x2\n"
+ "%s\x3""l\n"
+ "%s\x3""l\n"
+ "%s\x3""l\n"
+ "%s\x3""l\n"
+ "%s\x3""l\n"
+ "%s\x3""l\n"
+ "%s\x3""l\n"
+ "%s\x3""l\n"
+ "%s\x3""l";
+
+static const char* const REST_COMPLETE =
+ "\v000\t000à®è«® 8 ç ᮢ. â¤ëå § ª®ç¥\n"
+ "%s\n"
+ "ë«® áꥤ¥® %d ¯¨é¨.";
+
+static const char* const PARTY_IS_STARVING = "\f07âàï¤ £®«®¤ ¥â!\fd";
+
+static const char* const HIT_SPELL_POINTS_RESTORED =
+ "¤®à®¢ì¥ ¨ ¬ ¢®ááâ ®¢«¥ë";
+
+static const char* const TOO_DANGEROUS_TO_REST =
+ "¤¥áì ᫨誮¬ ®¯ á® ®â¤ëå âì!";
+
+static const char* const SOME_CHARS_MAY_DIE =
+ "â®-â® ¨§ ®âàï¤ ¬®¦¥â 㬥à¥âì. ë ¢áñ à ¢® ¦¥« ¥â¥ ®â¤®åãâì?";
+
+static const char* const DISMISS_WHOM = "\r\t010\v005®£® ¢ë£ âì?";
+
+static const char* const CANT_DISMISS_LAST_CHAR =
+ "ë ¥ ¬®¦¥â¥ ¢ë£ âì ᢮¥£® ¯®á«¥¤¥£® ¯¥àá® ¦ !";
+
+static const char* const DELETE_CHAR_WITH_ELDER_WEAPON = "\v000\t000This character has an Elder Weapon and cannot be deleted!";
+
+static const char* const REMOVE_DELETE[2] = { "ë£ âì", "㤠«¨âì" };
+
+static const char* const REMOVE_OR_DELETE_WHICH = "\x3""l\t010\v005®£® %s?";
+
+static const char* const YOUR_PARTY_IS_FULL = "\v007 è ®âàï¤ ¯®«®!";
+
+static const char* const HAS_SLAYER_SWORD =
+ "\v000\t000â®â ¯¥àá® ¦ ¥ ¬®¦¥â ¡ëâì 㤠«ñ, â ª ª ª ã ¥£® ¥ç-㡨©æ ᨠ!";
+
+static const char* const SURE_TO_DELETE_CHAR =
+ "%s %s. ë 㢥à¥ë, çâ® å®â¨â¥ 㤠«¨âì í⮣® £¥à®ï?";
+
+static const char* const CREATE_CHAR_DETAILS =
+ "\f04\x3""c\x2\t144\v119\f37\f04à®á®ª\t144\v149\f37\f04®§¤"
+ "\t144\v179\f37ESC\f04\x3""l\x1\t195\v021¨\f37«\f04"
+ "\t195\v045\f37\f04â\t195\v069\f37\f04ãå\t195\v093«\f37¦\f04"
+ "\t195\v116\f37ª\f04à\t195\v140\f37\f04âª\t195\v164\f37\f04¤ç%s";
+
+static const char* const NEW_CHAR_STATS =
+"\f04\x3""l\t017\v148 á \t055: %s\n"
+"\t017®«\t055: %s\n"
+"\t017« áá\t055:\n"
+"\x3""r\t215\v031%d\t215\v055%d\t215\v079%d\t215\v103%d\t215\v127%d"
+"\t215\v151%d\t215\v175%d\x3""l\t242\v020\f%2dëæ àì\t242\v031\f%2d"
+" « ¤¨\t242\v042\f%2dã稪\t242\v053\f%2d«¨à¨ª\t242\v064\f%2d"
+" £\t242\v075\f%2d®à\t242\v086\f%2d¨¤§ï\t242\v097\f%2d"
+" ࢠà\t242\v108\f%2dà㨤\t242\v119\f%2d«¥¤®¯ëâ\f04\x3""c"
+"\t265\v142 ¢ëª¨\x2\x3""l\t223\v155%s\t223\v170%s%s\x1";
+
+static const char* const NAME_FOR_NEW_CHARACTER =
+ "\x3""c¢¥¤¨â¥ ¨¬ï ¯¥àá® ¦ \n\n";
+
+static const char* const SELECT_CLASS_BEFORE_SAVING =
+ "\v003\x3""c¥à¥¤ á®åà ¥¨¥¬ ¢ë¡¥à¨â¥ ª« áá.\x3""l";
+
+static const char* const EXCHANGE_ATTR_WITH = "®¬¥ïâì %s á...";
static const int NEW_CHAR_SKILLS[10] = { 1, 5, -1, -1, 4, 0, 0, -1, 6, 11 };
static const int NEW_CHAR_SKILLS_OFFSET[10] = { 0, 0, 0, 5, 0, 0, 0, 0, 0, 0 };
@@ -1708,625 +1881,656 @@ static const int RACE_COLD_RESISTENCES[5] = { 7, 0, 2, 5, 10 };
static const int RACE_ENERGY_RESISTENCES[5] = { 7, 5, 2, 5, 0 };
static const int RACE_POISON_RESISTENCES[5] = { 7, 0, 2, 20, 0 };
static const int NEW_CHARACTER_SPELLS[10][4] = {
- { -1, -1, -1, -1 },
- { 21, -1, -1, -1 },
- { 22, -1, -1, -1 },
- { 21, 1, 14, -1 },
- { 22, 0, 25, -1 },
- { -1, -1, -1, -1 },
- { -1, -1, -1, -1 },
- { -1, -1, -1, -1 },
- { 20, 1, 11, 23 },
- { 20, 1, -1, -1 }
-};
-
-static const char *const COMBAT_DETAILS = "\r\f00\x3""c\v000\t000\x2""Combat%s%s%s\x1";
-
-static const char *NOT_ENOUGH_TO_CAST = "\x3""c\v010Not enough %s to Cast %s";
-static const char *SPELL_CAST_COMPONENTS[2] = { "Spell Points", "Gems" };
-
-static const char *const CAST_SPELL_DETAILS =
- "\r\x2\x3""c\v122\t013\f37C\fdast\t040\f37N\fdew"
- "\t067ESC\x1\t000\v000\x3""cCast Spell\n"
- "\n"
- "%s\x3l\n"
- "\n"
- "Spell Ready:\x3""c\n"
- "\n"
- "\f09%s\fd\x2\x3l\n"
- "\v082Cost\x3r\t000%u/%u\x3l\n"
- "Cur SP\x3r\t000%u\x1";
-
-static const char *const PARTY_FOUND =
- "\x3""cThe Party Found:\n"
- "\n"
- "\x3r\t000%u Gold\n"
- "%u Gems";
-
-static const char *const BACKPACKS_FULL_PRESS_KEY =
- "\v007\f12Warning! BackPacks Full!\fd\n"
- "Press a Key";
-
-static const char *const HIT_A_KEY = "\x3l\v120\t000\x4""077\x3""c\f37Hit a key\fd";
-
-static const char *const GIVE_TREASURE_FORMATTING =
- "\x3l\v060\t000\x4""077\n"
- "\x4""077\n"
- "\x4""077\n"
- "\x4""077\n"
- "\x4""077\n"
- "\x4""077";
-
-static const char *const X_FOUND_Y = "\v060\t000\x3""c%s found: %s";
-
-static const char *const ON_WHO = "\x3""c\v009On Who?";
-
-static const char *const WHICH_ELEMENT1 =
- "\r\x3""c\x1Which Element?\x2\v034\t014\f15F\fdire\t044"
- "\f15E\fdlec\t074\f15C\fdold\t104\f15A\fdcid\x1";
-
-static const char *const WHICH_ELEMENT2 =
- "\r\x3""cWhich Element?\x2\v034\t014\f15F\fdire\t044"
- "\f15E\fdlec\t074\f15C\fdold\t104\f15A\fdcid\x1";
-
-static const char *const DETECT_MONSTERS = "\x3""cDetect Monsters";
-
-static const char *const LLOYDS_BEACON =
- "\r\x3""c\v000\t000\x1Lloyd's Beacon\n"
- "\n"
- "Last Location\n"
- "\n"
- "%s\x3l\n"
- "x = %d\x3r\t000y = %d\x3""c\x2\v122\t021\f15S\fdet\t060\f15R\fdeturn\x1";
-
-static const char *const HOW_MANY_SQUARES = "\x3""cTeleport\nHow many squares %s (1-9)\n";
-
-static const char *const TOWN_PORTAL =
- "\x3""cTown Portal\x3l\n"
- "\n"
- "\t0101. %s\n"
- "\t0102. %s\n"
- "\t0103. %s\n"
- "\t0104. %s\n"
- "\t0105. %s\x3""c\n"
- "\n"
- "To which Town (1-5)\n"
- "\n";
-
-static const char *const TOWN_PORTAL_SWORDS =
- "\x3""cTown Portal\x3l\n"
- "\n"
- "\t0101. %s\n"
- "\t0102. %s\n"
- "\t0103. %s\x3""c\n"
- "\n"
- "To which Town (1-3)\n"
- "\n";
+ { -1, -1, -1, -1 },
+ { 21, -1, -1, -1 },
+ { 22, -1, -1, -1 },
+ { 21, 1, 14, -1 },
+ { 22, 0, 25, -1 },
+ { -1, -1, -1, -1 },
+ { -1, -1, -1, -1 },
+ { -1, -1, -1, -1 },
+ { 20, 1, 11, 23 },
+ { 20, 1, -1, -1 }
+};
+
+static const char* const COMBAT_DETAILS = "\r\f00\x3""c\v000\t000\x2%s%s%s\x1";
+
+static const char* NOT_ENOUGH_TO_CAST =
+ "\x3""c\v000¥¤®áâ â®ç® %s, çâ®¡ë § ª«¨ âì %s";
+
+static const char* SPELL_CAST_COMPONENTS[2] = { "®çª®¢ ¬ £¨¨", " «¬ §®¢" };
+
+static const char* const CAST_SPELL_DETAILS =
+ "\r\x2\x3""c\v122\t013\f37\fd ª«\t040\f37\fd®¢"
+ "\t067ESC\x1\t000\v000\x3""c ª«¨ ¨¥\n"
+ "\n"
+ "%s\x3""c\n"
+ "\n"
+ " ®â®¢®¥:\x3""c\n"
+ "\n"
+ "\f09%s\fd\x2\x3""l\n"
+ "\v082¥ \x3""r\t000%u/%u\x3""l\n"
+ "¥ª \x3""r\t000%u\x1";
+
+static const char* const PARTY_FOUND =
+ "\x3""c ©¤¥®:\n"
+ "\n"
+ "\x3""r\t000%lu ®«\n"
+ "%lu «¬§";
+
+static const char* const BACKPACKS_FULL_PRESS_KEY =
+ "\v007\f12¨¬ ¨¥!  ª¨ ¯¥à¥¯®«¥ë!\fd\n"
+ " ¦¬¨â¥ ª« ¢¨èã";
+
+static const char* const HIT_A_KEY =
+ "\x3""l\v120\t000\x4""077\x3""c\f37. ª« ¢¨èã\fd";
+
+static const char* const GIVE_TREASURE_FORMATTING =
+ "\x3l\v060\t000\x4""077\n"
+ "\x4""077\n"
+ "\x4""077\n"
+ "\x4""077\n"
+ "\x4""077\n"
+ "\x4""077";
+
+static const char* const X_FOUND_Y = "\v060\t000\x3""c%s è%s: %s";
+
+static const char* const ON_WHO = "\x3""c\v009®£®?";
+
+static const char* const WHICH_ELEMENT1 =
+ "\r\x3""c\x1 ª ï â¨å¨ï?\x2\v034\t014\f15\fd£®ì\t044"
+ "\f15\fd஬\t074\f15\fd®«®¤\t104\f15\fd¤\x1";
+
+static const char* const WHICH_ELEMENT2 =
+ "\r\x3""c ª ï â¨å¨ï?\x2\v034\t014\f15\fd£®ì\t044"
+ "\f15\fd஬\t074\f15\fd®«®¤\t104\f15\fd¤\x1";
+
+static const char* const DETECT_MONSTERS = "\x3""c®¨áª ¬®áâ஢";
+
+static const char* const LLOYDS_BEACON =
+ "\r\x3""c\v000\t000\x1 ïª «®©¤ \n"
+ "\n"
+ "®á«¥¤¥¥ ¬¥áâ®\n"
+ "\n"
+ "%s\x3""l\n"
+ "x = %d\x3""r\t000y = %d\x3""c\x2\v122\t021\f15\fdáâ \t060\f15\fd¥à\x1";
+
+static const char* const HOW_MANY_SQUARES =
+ "\x3""c¥«¥¯®àâ\nª®«ìª® ª«¥â®ª %s (1-9)\n";
+
+static const char* const TOWN_PORTAL =
+ "\x3""c®à®¤áª®© ¯®àâ «\x3""l\n"
+ "\n"
+ "\t0101. %s\n"
+ "\t0102. %s\n"
+ "\t0103. %s\n"
+ "\t0104. %s\n"
+ "\t0105. %s\x3""c\n"
+ "\n"
+ " ª ª®© £®à®¤ (1-5)\n"
+ "\n";
+
+static const char* const TOWN_PORTAL_SWORDS =
+"\x3""cTown Portal\x3l\n"
+"\n"
+"\t0101. %s\n"
+"\t0102. %s\n"
+"\t0103. %s\x3""c\n"
+"\n"
+"To which Town (1-3)\n"
+"\n";
static const int TOWN_MAP_NUMBERS[3][5] = {
- { 28, 29, 30, 31, 32 }, { 29, 31, 33, 35, 37 }, { 53, 92, 63, 0, 0 }
-};
-
-static const char *const MONSTER_DETAILS =
- "\x3l\n"
- "%s\x3""c\t100%s\t140%u\t180%u\x3r\t000%s";
-
-static const char *const MONSTER_SPECIAL_ATTACKS[23] = {
- "None", "Magic", "Fire", "Elec", "Cold", "Poison", "Energy", "Disease",
- "Insane", "Asleep", "CurseItm", "InLove", "DrnSPts", "Curse", "Paralys",
- "Uncons", "Confuse", "BrkWpn", "Weak", "Erad", "Age+5", "Dead", "Stone"
-};
-
-static const char *const IDENTIFY_MONSTERS =
- "Name\x3""c\t100HP\t140AC\t177#Atks\x3r\t000Special%s%s%s";
-
-static const char *const EVENT_SAMPLES[6] = {
- "ahh.voc", "whereto.voc", "gulp.voc", "null.voc", "scream.voc", "laff1.voc"
-};
-
-static const char *const MOONS_NOT_ALIGNED =
-"\x3""c\v012\t000The moons are not aligned. Passage to the %s is unavailable";
-
-static const char *const AWARDS_FOR =
- "\r\x1\fd\x3""c\v000\t000Awards for %s the %s\x3l\x2\n"
- "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\x1";
-
-static const char *const AWARDS_TEXT =
- "\r\x2\x3""c\v021\t221\f37U\fdp\t255\f37D\fdown\t289Exit";
-
-static const char *const NO_AWARDS = "\x3""cNo Awards";
-
-static const char *const WARZONE_BATTLE_MASTER = "The Warzone\n\t125Battle Master";
-
-static const char *const WARZONE_MAXED = "What! You again? Go pick on someone your own size!";
-
-static const char *const WARZONE_LEVEL = "What level of monsters? (1-10)\n";
-
-static const char *const WARZONE_HOW_MANY = "How many monsters? (1-20)\n";
-
-static const char *const PICKS_THE_LOCK = "\x3""c\v010%s picks the lock!\nPress any key.";
-
-static const char *const UNABLE_TO_PICK_LOCK = "\x3""c\v010%s was unable to pick the lock!\nPress any key.";
-
-static const char *const CONTROL_PANEL_TEXT =
- "\x1\f00\x3""c\v000\t000Control Panel\x3r"
- "\v022\t045\f06L\fdoad:\t124\f06E\fdfx:"
- "\v041\t045\f06S\fdave:\t124\f06M\fdusic:"
- "\v060\t045\f06Q\fduit:"
- "\v080\t084Mr \f06W\fdizard:%s\t000\x1";
-static const char *const CONTROL_PANEL_BUTTONS =
- "\x3""c\f11"
- "\v022\t062load\t141%s"
- "\v041\t062save\t141%s"
- "\v060\t062exit"
- "\v079\t102Help\fd";
-static const char *const ON = "\f15on\f11";
-static const char *const OFF = "\f32off\f11";
-static const char *const CONFIRM_QUIT = "Are you sure you want to quit?";
-static const char *const MR_WIZARD =
- "Are you sure you want Mr.Wizard's Help ?";
-static const char *const NO_LOADING_IN_COMBAT =
- "No Loading Allowed in Combat!";
-static const char *const NO_SAVING_IN_COMBAT =
- "No Saving Allowed in Combat!";
-static const char *const QUICK_FIGHT_TEXT = "\r\fd\x3""c\v000\t000QuickFight Options\n\n"
- "%s\x3l\n\n"
- "Current\x3r\n"
- "\t000%s\x2\x3""c\v122\t021\f37N\f04ext\t060Exit\x1";
-static const char *const QUICK_FIGHT_OPTIONS[4] = { "Attack", "Cast", "Block", "Run" };
-
-static const char *const WORLD_END_TEXT[9] = {
- "\n\n\n\n\n\n\n"
- "Congratulations Adventurers!\n\n"
- "Let the unification ceremony begin!",
- "And so the call went out to the people throughout the lands of Xeen"
- " that the prophecy was nearing completion.",
- "They came in great numbers to witness the momentous occasion.",
- "\v026The Dragon Pharoah presided over the ceremony.",
- "\v026Queen Kalindra presented the Cube of Power.",
- "\v026Prince Roland presented the Xeen Sceptre.",
- "\v026Together, they placed the Cube of Power...",
- "\v026and the Sceptre, onto the Altar of Joining.",
- "With the prophecy complete, the two sides of Xeen were united as one",
-};
-
-static const char *const WORLD_CONGRATULATIONS =
- "\x3""cCongratulations\n\n"
- "Your Final Score is:\n\n"
- "%010lu\n"
- "\x3l\n"
- "Please send this score to the Ancient's Headquarters where "
- "you'll be added to the Hall of Legends!\n\n"
- "Ancient's Headquarters\n"
- "New World Computing, Inc.\n"
- "P.O. Box 4302\n"
- "Hollywood, CA 90078";
-static const char *const WORLD_CONGRATULATIONS2 =
- "\n\n\n\n\n\n"
- "But wait... there's more!\n"
- "\n\n"
- "Include the message\n"
- "\"%s\"\n"
- "with your final score and receive a special bonus.";
-static const char *const CLOUDS_CONGRATULATIONS1 =
- "\f23\x3l"
- "\v000\t000Please send this score to the Ancient's Headquarters "
- "where you'll be added to the Hall of Legends!\f33\x3""c"
- "\v070\t000Press a Key";
-static const char *const CLOUDS_CONGRATULATIONS2 =
- "\f23\x3l"
- "\v000\t000Ancient's Headquarters\n"
- "New World Computing, Inc.\n"
- "P.O. Box 4302\n"
- "Hollywood, CA 90078-4302\f33\x3""c"
- "\v070\t000Press a Key";
-static const char *const GOOBER[3] = {
- "", "I am a Goober!", "I am a Super Goober!"
-};
-
-static const char *const MUSIC_FILES1[5] = {
- "outdoors.m", "town.m", "cavern.m", "dungeon.m", "castle.m"
-};
-
-static const char *const MUSIC_FILES2[6][7] = {
- { "outday1.m", "outday2.m", "outday4.m", "outnght1.m",
- "outnght2.m", "outnght4.m", "daydesrt.m" },
- { "townday1.m", "twnwlk.m", "newbrigh.m", "twnnitea.m",
- "twnniteb.m", "twnwlk.m", "townday1.m" },
- { "cavern1.m", "cavern2.m", "cavern3a.m", "cavern1.m",
- "cavern2.m", "cavern3a.m", "cavern1.m" },
- { "dngon1.m", "dngon2.m", "dngon3.m", "dngon1.m",
- "dngon2.m", "dngon3.m", "dngon1.m" },
- { "cstl1rev.m", "cstl2rev.m", "cstl3rev.m", "cstl1rev.m",
- "cstl2rev.m", "cstl3rev.m", "cstl1rev.m" },
- { "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m" }
-};
-
-static const char *const DIFFICULTY_TEXT = "\v000\t000\x3""cSelect Game Preference";
-static const char *const SAVE_OFF_LIMITS = "\x3""c\v002\t000The Gods of Game Restoration deem this area off limits!\n"
- "Sorry, no saving in this maze.";
-
-static const char *const CLOUDS_INTRO1 = "\f00\v082\t040\x3"
- "cKing Burlock\v190\t040Peasants\v082\t247"
- "Lord Xeen\v190\t258Xeen's Pet\v179\t150Crodo";
-
-static const char *const DARKSIDE_ENDING1 = "\n\x3" "cCongratulations\n"
- "\n"
- "Your Final Score is:\n"
- "\n"
- "%010lu\n"
- "\x3" "l\n"
- "Please send this score to the Ancient's Headquarters "
- "where you'll be added to the Hall of Legends!\n"
- "\n"
- "Ancient's Headquarters\n"
- "New World Computing, Inc.\n"
- "P.O. Box 4302\n"
- "Hollywood, CA 90078";
-
-static const char *const DARKSIDE_ENDING2 = "\n"
- "Adventurers,\n"
- "\n"
- "I will save your game in Castleview.\n"
- "\n"
- "The World of Xeen still needs you!\n"
- "\n"
- "Load your game afterwards and come visit me in the "
- "Great Pyramid for further instructions";
-
-static const char *const PHAROAH_ENDING_TEXT1 = "\fd\v001\t001%s\x3" "c\t000\v180Press a Key!\x3" "l";
-static const char *const PHAROAH_ENDING_TEXT2 = "\f04\v000\t000%s\x3" "c\t000\v180Press a Key!\x3" "l\fd";
-
-
-void writeConstants(CCArchive &cc) {
- Common::MemFile file;
- file.syncString(CLOUDS_CREDITS);
- file.syncString(DARK_SIDE_CREDITS);
- file.syncString(SWORDS_CREDITS1);
- file.syncString(SWORDS_CREDITS2);
- file.syncString(OPTIONS_MENU);
- file.syncStrings(GAME_NAMES, 3);
- file.syncString(THE_PARTY_NEEDS_REST);
- file.syncString(WHO_WILL);
- file.syncString(HOW_MUCH);
- file.syncString(WHATS_THE_PASSWORD);
- file.syncString(PASSWORD_INCORRECT);
- file.syncString(IN_NO_CONDITION);
- file.syncString(NOTHING_HERE);
- file.syncStrings(TERRAIN_TYPES, 6);
- file.syncStrings(OUTDOORS_WALL_TYPES, 16);
- file.syncStrings(SURFACE_NAMES, 16);
- file.syncStrings(WHO_ACTIONS, 32);
- file.syncStrings(WHO_WILL_ACTIONS, 4);
- file.syncBytes2D((const byte *)SYMBOLS, 20, 64);
- file.syncBytes2D((const byte *)TEXT_COLORS, 40, 4);
- file.syncBytes2D((const byte *)TEXT_COLORS_STARTUP, 40, 4);
- file.syncStrings(DIRECTION_TEXT_UPPER, 4);
- file.syncStrings(DIRECTION_TEXT, 4);
- file.syncStrings(RACE_NAMES, 5);
- file.syncNumbers(RACE_HP_BONUSES, 5);
- file.syncNumbers2D((const int *)RACE_SP_BONUSES, 5, 2);
- file.syncStrings(CLASS_NAMES, 11);
- file.syncNumbers(CLASS_EXP_LEVELS, 10);
- file.syncStrings(ALIGNMENT_NAMES, 3);
- file.syncStrings(SEX_NAMES, 2);
- file.syncStrings(SKILL_NAMES, 18);
- file.syncStrings(CONDITION_NAMES, 17);
- file.syncNumbers(CONDITION_COLORS, 17);
- file.syncString(GOOD);
- file.syncString(BLESSED);
- file.syncString(POWER_SHIELD);
- file.syncString(HOLY_BONUS);
- file.syncString(HEROISM);
- file.syncString(IN_PARTY);
- file.syncString(PARTY_DETAILS);
- file.syncString(PARTY_DIALOG_TEXT);
- file.syncNumbers(FACE_CONDITION_FRAMES, 17);
- file.syncNumbers(CHAR_FACES_X, 6);
- file.syncNumbers(HP_BARS_X, 6);
- file.syncString(NO_ONE_TO_ADVENTURE_WITH);
- file.syncBytes2D((const byte *)DARKNESS_XLAT, 3, 256);
- file.syncString(YOUR_ROSTER_IS_FULL);
- file.syncString(PLEASE_WAIT);
- file.syncString(OOPS);
- file.syncNumbers2D((const int *)SCREEN_POSITIONING_X, 4, 48);
- file.syncNumbers2D((const int *)SCREEN_POSITIONING_Y, 4, 48);
- file.syncNumbers(MONSTER_GRID_BITMASK, 12);
- file.syncNumbers2D((const int *)INDOOR_OBJECT_X, 2, 12);
- file.syncNumbers2D((const int *)MAP_OBJECT_Y, 2, 12);
- file.syncNumbers(INDOOR_MONSTERS_Y, 4);
- file.syncNumbers2D((const int *)OUTDOOR_OBJECT_X, 2, 12);
- file.syncNumbers(OUTDOOR_MONSTER_INDEXES, 26);
- file.syncNumbers(OUTDOOR_MONSTERS_Y, 26);
- file.syncNumbers2D((const int *)DIRECTION_ANIM_POSITIONS, 4, 4);
- file.syncBytes2D((const byte *)WALL_SHIFTS, 4, 48);
- file.syncNumbers(DRAW_NUMBERS, 25);
- file.syncNumbers2D((const int *)DRAW_FRAMES, 25, 2);
- file.syncNumbers(COMBAT_FLOAT_X, 8);
- file.syncNumbers(COMBAT_FLOAT_Y, 8);
- file.syncNumbers2D((const int *)MONSTER_EFFECT_FLAGS, 15, 8);
- file.syncNumbers2D((const int *)SPELLS_ALLOWED, 3, 40);
- file.syncNumbers(BASE_HP_BY_CLASS, 10);
- file.syncNumbers(AGE_RANGES, 10);
- file.syncNumbers2D((const int *)AGE_RANGES_ADJUST, 2, 10);
- file.syncNumbers(STAT_VALUES, 24);
- file.syncNumbers(STAT_BONUSES, 24);
- file.syncNumbers(ELEMENTAL_CATEGORIES, 6);
- file.syncNumbers(ATTRIBUTE_CATEGORIES, 10);
- file.syncNumbers(ATTRIBUTE_BONUSES, 72);
- file.syncNumbers(ELEMENTAL_RESISTENCES, 37);
- file.syncNumbers(ELEMENTAL_DAMAGE, 37);
- file.syncNumbers(WEAPON_DAMAGE_BASE, 35);
- file.syncNumbers(WEAPON_DAMAGE_MULTIPLIER, 35);
- file.syncNumbers(METAL_DAMAGE, 22);
- file.syncNumbers(METAL_DAMAGE_PERCENT, 22);
- file.syncNumbers(METAL_LAC, 22);
- file.syncNumbers(ARMOR_STRENGTHS, 14);
- file.syncNumbers(MAKE_ITEM_ARR1, 6);
- file.syncNumbers3D((const int *)MAKE_ITEM_ARR2, 6, 7, 2);
- file.syncNumbers3D((const int *)MAKE_ITEM_ARR3, 10, 7, 2);
- file.syncNumbers3D((const int *)MAKE_ITEM_ARR4, 2, 7, 2);
- file.syncNumbers2D((const int *)MAKE_ITEM_ARR5, 8, 2);
- file.syncNumbers(OUTDOOR_DRAWSTRUCT_INDEXES, 44);
- file.syncNumbers2D((const int *)TOWN_MAXES, 2, 11);
- file.syncStrings2D((const char *const *)TOWN_ACTION_MUSIC, 2, 7);
- file.syncStrings(TOWN_ACTION_SHAPES, 7);
- file.syncNumbers2D((const int *)TOWN_ACTION_FILES, 2, 7);
- file.syncString(BANK_TEXT);
- file.syncString(BLACKSMITH_TEXT);
- file.syncString(GUILD_NOT_MEMBER_TEXT);
- file.syncString(GUILD_TEXT);
- file.syncString(TAVERN_TEXT);
- file.syncString(GOOD_STUFF);
- file.syncString(HAVE_A_DRINK);
- file.syncString(YOURE_DRUNK);
- file.syncNumbers4D((const int *)TAVERN_EXIT_LIST, 2, 6, 5, 2);
- file.syncString(FOOD_AND_DRINK);
- file.syncString(TEMPLE_TEXT);
- file.syncString(EXPERIENCE_FOR_LEVEL);
- file.syncString(TRAINING_LEARNED_ALL);
- file.syncString(ELIGIBLE_FOR_LEVEL);
- file.syncString(TRAINING_TEXT);
- file.syncString(GOLD_GEMS);
- file.syncString(GOLD_GEMS_2);
- file.syncStrings(DEPOSIT_WITHDRAWL, 2);
- file.syncString(NOT_ENOUGH_X_IN_THE_Y);
- file.syncString(NO_X_IN_THE_Y);
- file.syncStrings(STAT_NAMES, 16);
- file.syncStrings(CONSUMABLE_NAMES, 4);
- file.syncStrings(WHERE_NAMES, 2);
- file.syncString(AMOUNT);
- file.syncString(FOOD_PACKS_FULL);
- file.syncString(BUY_SPELLS);
- file.syncString(GUILD_OPTIONS);
- file.syncNumbers((const int *)MISC_SPELL_INDEX, 74);
- file.syncNumbers((const int *)SPELL_COSTS, 77);
- file.syncNumbers2D((const int *)CLOUDS_GUILD_SPELLS, 5, 20);
- file.syncNumbers2D((const int *)DARK_SPELL_OFFSETS, 3, 39);
- file.syncNumbers2D((const int *)DARK_SPELL_RANGES, 12, 2);
- file.syncNumbers2D((const int *)SWORDS_SPELL_RANGES, 12, 2);
- file.syncNumbers((const int *)SPELL_GEM_COST, 77);
- file.syncString(NOT_A_SPELL_CASTER);
- file.syncString(SPELLS_LEARNED_ALL);
- file.syncString(SPELLS_FOR);
- file.syncString(SPELL_LINES_0_TO_9);
- file.syncString(SPELLS_DIALOG_SPELLS);
- file.syncString(SPELL_PTS);
- file.syncString(GOLD);
- file.syncString(SPELL_INFO);
- file.syncString(SPELL_PURCHASE);
- file.syncString(MAP_TEXT);
- file.syncString(LIGHT_COUNT_TEXT);
- file.syncString(FIRE_RESISTENCE_TEXT);
- file.syncString(ELECRICITY_RESISTENCE_TEXT);
- file.syncString(COLD_RESISTENCE_TEXT);
- file.syncString(POISON_RESISTENCE_TEXT);
- file.syncString(CLAIRVOYANCE_TEXT);
- file.syncString(LEVITATE_TEXT);
- file.syncString(WALK_ON_WATER_TEXT);
- file.syncString(GAME_INFORMATION);
- file.syncString(WORLD_GAME_TEXT);
- file.syncString(DARKSIDE_GAME_TEXT);
- file.syncString(CLOUDS_GAME_TEXT);
- file.syncString(SWORDS_GAME_TEXT);
- file.syncStrings(WEEK_DAY_STRINGS, 10);
- file.syncString(CHARACTER_DETAILS);
- file.syncString(PARTY_GOLD);
- file.syncString(PLUS_14);
- file.syncString(CHARACTER_TEMPLATE);
- file.syncString(EXCHANGING_IN_COMBAT);
- file.syncString(CURRENT_MAXIMUM_RATING_TEXT);
- file.syncString(CURRENT_MAXIMUM_TEXT);
- file.syncStrings(RATING_TEXT, 24);
- file.syncString(AGE_TEXT);
- file.syncString(LEVEL_TEXT);
- file.syncString(RESISTENCES_TEXT);
- file.syncString(NONE);
- file.syncString(EXPERIENCE_TEXT);
- file.syncString(ELIGIBLE);
- file.syncString(IN_PARTY_IN_BANK);
- file.syncString(FOOD_TEXT);
- file.syncString(EXCHANGE_WITH_WHOM);
- file.syncString(QUICK_REF_LINE);
- file.syncString(QUICK_REFERENCE);
- file.syncNumbers2D((const int *)BLACKSMITH_MAP_IDS, 2, 4);
- file.syncString(ITEMS_DIALOG_TEXT1);
- file.syncString(ITEMS_DIALOG_TEXT2);
- file.syncString(ITEMS_DIALOG_LINE1);
- file.syncString(ITEMS_DIALOG_LINE2);
- file.syncString(BTN_BUY);
- file.syncString(BTN_SELL);
- file.syncString(BTN_IDENTIFY);
- file.syncString(BTN_FIX);
- file.syncString(BTN_USE);
- file.syncString(BTN_EQUIP);
- file.syncString(BTN_REMOVE);
- file.syncString(BTN_DISCARD);
- file.syncString(BTN_QUEST);
- file.syncString(BTN_ENCHANT);
- file.syncString(BTN_RECHARGE);
- file.syncString(BTN_GOLD);
- file.syncString(ITEM_BROKEN);
- file.syncString(ITEM_CURSED);
- file.syncString(ITEM_OF);
- file.syncStrings(BONUS_NAMES, 7);
- file.syncStrings(WEAPON_NAMES, 41);
- file.syncStrings(ARMOR_NAMES, 14);
- file.syncStrings(ACCESSORY_NAMES, 11);
- file.syncStrings(MISC_NAMES, 22);
- file.syncStrings(SPECIAL_NAMES, 74);
- file.syncStrings(ELEMENTAL_NAMES, 6);
- file.syncStrings(ATTRIBUTE_NAMES, 10);
- file.syncStrings(EFFECTIVENESS_NAMES, 7);
- file.syncStrings(QUEST_ITEM_NAMES, 85);
- file.syncStrings(QUEST_ITEM_NAMES_SWORDS, 51);
- file.syncNumbers((const int *)WEAPON_BASE_COSTS, 35);
- file.syncNumbers((const int *)ARMOR_BASE_COSTS, 14);
- file.syncNumbers((const int *)ACCESSORY_BASE_COSTS, 11);
- file.syncNumbers((const int *)MISC_MATERIAL_COSTS, 22);
- file.syncNumbers((const int *)MISC_BASE_COSTS, 76);
- file.syncNumbers((const int *)METAL_BASE_MULTIPLIERS, 22);
- file.syncNumbers((const int *)ITEM_SKILL_DIVISORS, 4);
- file.syncNumbers((const int *)RESTRICTION_OFFSETS, 4);
- file.syncNumbers((const int *)ITEM_RESTRICTIONS, 86);
- file.syncString(NOT_PROFICIENT);
- file.syncString(NO_ITEMS_AVAILABLE);
- file.syncStrings(CATEGORY_NAMES, 4);
- file.syncString(X_FOR_THE_Y);
- file.syncString(X_FOR_Y);
- file.syncString(X_FOR_Y_GOLD);
- file.syncString(FMT_CHARGES);
- file.syncString(AVAILABLE_GOLD_COST);
- file.syncString(CHARGES);
- file.syncString(COST);
- file.syncStrings(ITEM_ACTIONS, 7);
- file.syncString(WHICH_ITEM);
- file.syncString(WHATS_YOUR_HURRY);
- file.syncString(USE_ITEM_IN_COMBAT);
- file.syncString(NO_SPECIAL_ABILITIES);
- file.syncString(CANT_CAST_WHILE_ENGAGED);
- file.syncString(EQUIPPED_ALL_YOU_CAN);
- file.syncString(REMOVE_X_TO_EQUIP_Y);
- file.syncString(RING);
- file.syncString(MEDAL);
- file.syncString(CANNOT_REMOVE_CURSED_ITEM);
- file.syncString(CANNOT_DISCARD_CURSED_ITEM);
- file.syncString(PERMANENTLY_DISCARD);
- file.syncString(BACKPACK_IS_FULL);
- file.syncStrings(CATEGORY_BACKPACK_IS_FULL, 4);
- file.syncString(BUY_X_FOR_Y_GOLD);
- file.syncString(SELL_X_FOR_Y_GOLD);
- file.syncString(NO_NEED_OF_THIS);
- file.syncString(NOT_RECHARGABLE);
- file.syncString(SPELL_FAILED);
- file.syncString(NOT_ENCHANTABLE);
- file.syncString(ITEM_NOT_BROKEN);
- file.syncStrings(FIX_IDENTIFY, 2);
- file.syncString(FIX_IDENTIFY_GOLD);
- file.syncString(IDENTIFY_ITEM_MSG);
- file.syncString(ITEM_DETAILS);
- file.syncString(ALL);
- file.syncString(FIELD_NONE);
- file.syncString(DAMAGE_X_TO_Y);
- file.syncString(ELEMENTAL_XY_DAMAGE);
- file.syncString(ATTR_XY_BONUS);
- file.syncString(EFFECTIVE_AGAINST);
- file.syncString(QUESTS_DIALOG_TEXT);
- file.syncString(CLOUDS_OF_XEEN_LINE);
- file.syncString(DARKSIDE_OF_XEEN_LINE);
- file.syncString(SWORDS_OF_XEEN_LINE);
- file.syncString(NO_QUEST_ITEMS);
- file.syncString(NO_CURRENT_QUESTS);
- file.syncString(NO_AUTO_NOTES);
- file.syncString(QUEST_ITEMS_DATA);
- file.syncString(CURRENT_QUESTS_DATA);
- file.syncString(AUTO_NOTES_DATA);
- file.syncString(REST_COMPLETE);
- file.syncString(PARTY_IS_STARVING);
- file.syncString(HIT_SPELL_POINTS_RESTORED);
- file.syncString(TOO_DANGEROUS_TO_REST);
- file.syncString(SOME_CHARS_MAY_DIE);
- file.syncString(DISMISS_WHOM);
- file.syncString(CANT_DISMISS_LAST_CHAR);
- file.syncString(DELETE_CHAR_WITH_ELDER_WEAPON);
- file.syncStrings(REMOVE_DELETE, 2);
- file.syncString(REMOVE_OR_DELETE_WHICH);
- file.syncString(YOUR_PARTY_IS_FULL);
- file.syncString(HAS_SLAYER_SWORD);
- file.syncString(SURE_TO_DELETE_CHAR);
- file.syncString(CREATE_CHAR_DETAILS);
- file.syncString(NEW_CHAR_STATS);
- file.syncString(NAME_FOR_NEW_CHARACTER);
- file.syncString(SELECT_CLASS_BEFORE_SAVING);
- file.syncString(EXCHANGE_ATTR_WITH);
- file.syncNumbers((const int *)NEW_CHAR_SKILLS, 10);
- file.syncNumbers((const int *)NEW_CHAR_SKILLS_OFFSET, 10);
- file.syncNumbers((const int *)NEW_CHAR_SKILLS_LEN, 10);
- file.syncNumbers((const int *)NEW_CHAR_RACE_SKILLS, 10);
- file.syncNumbers((const int *)RACE_MAGIC_RESISTENCES, 5);
- file.syncNumbers((const int *)RACE_FIRE_RESISTENCES, 5);
- file.syncNumbers((const int *)RACE_ELECTRIC_RESISTENCES, 5);
- file.syncNumbers((const int *)RACE_COLD_RESISTENCES, 5);
- file.syncNumbers((const int *)RACE_ENERGY_RESISTENCES, 5);
- file.syncNumbers((const int *)RACE_POISON_RESISTENCES, 5);
- file.syncNumbers2D((const int *)NEW_CHARACTER_SPELLS, 10, 4);
- file.syncString(COMBAT_DETAILS);
- file.syncString(NOT_ENOUGH_TO_CAST);
- file.syncStrings(SPELL_CAST_COMPONENTS, 2);
- file.syncString(CAST_SPELL_DETAILS);
- file.syncString(PARTY_FOUND);
- file.syncString(BACKPACKS_FULL_PRESS_KEY);
- file.syncString(HIT_A_KEY);
- file.syncString(GIVE_TREASURE_FORMATTING);
- file.syncString(X_FOUND_Y);
- file.syncString(ON_WHO);
- file.syncString(WHICH_ELEMENT1);
- file.syncString(WHICH_ELEMENT2);
- file.syncString(DETECT_MONSTERS);
- file.syncString(LLOYDS_BEACON);
- file.syncString(HOW_MANY_SQUARES);
- file.syncString(TOWN_PORTAL);
- file.syncString(TOWN_PORTAL_SWORDS);
- file.syncNumbers2D((const int *)TOWN_MAP_NUMBERS, 3, 5);
- file.syncString(MONSTER_DETAILS);
- file.syncStrings(MONSTER_SPECIAL_ATTACKS, 23);
- file.syncString(IDENTIFY_MONSTERS);
- file.syncStrings(EVENT_SAMPLES, 6);
- file.syncString(MOONS_NOT_ALIGNED);
- file.syncString(AWARDS_FOR);
- file.syncString(AWARDS_TEXT);
- file.syncString(NO_AWARDS);
- file.syncString(WARZONE_BATTLE_MASTER);
- file.syncString(WARZONE_MAXED);
- file.syncString(WARZONE_LEVEL);
- file.syncString(WARZONE_HOW_MANY);
- file.syncString(PICKS_THE_LOCK);
- file.syncString(UNABLE_TO_PICK_LOCK);
- file.syncString(CONTROL_PANEL_TEXT);
- file.syncString(CONTROL_PANEL_BUTTONS);
- file.syncString(ON);
- file.syncString(OFF);
- file.syncString(CONFIRM_QUIT);
- file.syncString(MR_WIZARD);
- file.syncString(NO_LOADING_IN_COMBAT);
- file.syncString(NO_SAVING_IN_COMBAT);
- file.syncString(QUICK_FIGHT_TEXT);
- file.syncStrings(QUICK_FIGHT_OPTIONS, 4);
- file.syncStrings(WORLD_END_TEXT, 9);
- file.syncString(WORLD_CONGRATULATIONS);
- file.syncString(WORLD_CONGRATULATIONS2);
- file.syncString(CLOUDS_CONGRATULATIONS1);
- file.syncString(CLOUDS_CONGRATULATIONS2);
- file.syncStrings(GOOBER, 3);
- file.syncStrings(MUSIC_FILES1, 5);
- file.syncStrings2D((const char *const *)MUSIC_FILES2, 6, 7);
- file.syncString(DIFFICULTY_TEXT);
- file.syncString(SAVE_OFF_LIMITS);
- file.syncString(CLOUDS_INTRO1);
- file.syncString(DARKSIDE_ENDING1);
- file.syncString(DARKSIDE_ENDING2);
- file.syncString(PHAROAH_ENDING_TEXT1);
- file.syncString(PHAROAH_ENDING_TEXT2);
-
- cc.add("CONSTANTS", file);
+ { 28, 29, 30, 31, 32 }, { 29, 31, 33, 35, 37 }, { 53, 92, 63, 0, 0 }
+};
+
+static const char* const MONSTER_DETAILS =
+"\x3l\n"
+"%s\x3""c\t100%s\t140%u\t180%u\x3r\t000%s";
+
+static const char* const MONSTER_SPECIAL_ATTACKS[23] = {
+ "¥â", " £¨ï", "£ï", "஬ ", "®«®¤ ", "âà ¢«¥¨¥", "¥à£¨¨",
+ "®«¥§ì", "¥§ã¬¨¥", "®", "ફब", "«î¡«", "áã褮à", "ப«ï⨥",
+ " à «¨ç", "¥áá®§", "¬ï⥨¥", "®¬à®", "« ¡®áâì", "¨ç⮦",
+ "®§à áâ+5", "¥àâ¢", " ¬¥ì"
+};
+
+static const char* const IDENTIFY_MONSTERS =
+ "®áâà\x3""c\t155\t195\t233#â ª\x3""r\t000ᮡ®¥%s%s%s";
+
+static const char* const EVENT_SAMPLES[6] = {
+ "ahh.voc", "whereto.voc", "gulp.voc", "null.voc", "scream.voc", "laff1.voc"
+};
+
+static const char* const MOONS_NOT_ALIGNED =
+ "\x3""c\v012\t000®ª «ãë ¥ ¢áâ ãâ ¢ àï¤, ¢ë ¥ ᬮ¦¥â¥ ¯¥à¥©â¨ ñ¬ãî áâ®à®ã ᨠ";
+
+static const char* const AWARDS_FOR =
+ "\r\x1\fd\x3""c\v000\t000%s %s: £à ¤ë \x3""l\x2\n"
+ "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\x1";
+
+static const char* const AWARDS_TEXT =
+ "\r\x2\x3""c\v021\t221¢¥àå\t255¨§\t289ë室";
+
+static const char* const NO_AWARDS = "\x3""c ¯¥àá® ¦ ¥â £à ¤";
+
+
+static const char* const WARZONE_BATTLE_MASTER = "ॠ\n\t125 áâ¥à ¡¨â¢ë";
+
+static const char* const WARZONE_MAXED =
+ "â®! ¯ïâì ¢ë? ¥ ¯à¨áâ ¢ ©â¥ ª ⥬, ªâ® ¥ ¬®¦¥â ¤ âì ᤠç¨!";
+
+static const char* const WARZONE_LEVEL = " ª®© ã஢¥ì ¬®áâ஢? (1-10)\n";
+
+static const char* const WARZONE_HOW_MANY = "ª®«ìª® ¬®áâ஢? (1-20)\n";
+
+static const char* const PICKS_THE_LOCK =
+ "\x3""c\v010%s ¢§«®¬ «%s § ¬®ª!\n ¦¬¨â¥ ª« ¢¨èã.";
+
+static const char* const UNABLE_TO_PICK_LOCK =
+ "\x3""c\v010%s ¥ ᬮ£%s ¢§«®¬ âì § ¬®ª!\n ¦¬¨â¥ ª« ¢¨èã.";
+
+static const char* const CONTROL_PANEL_TEXT =
+ "\x1\f00\x3""c\v000\t000 ¥«ì ã¯à ¢«¥¨ï\x3""r"
+ "\v022\t045¢\f06ã\fdª:\t124\f06\fd®åà:"
+ "\v041\t045\f06\fdã§.:\t124\f06®\fdåà:\v060\t045\f06\fd £à:"
+ "\t124\f06\fdë室"
+ "\v080\t084\f06\fd®¬®éì %s\t137 £ \t000\x1";
+
+static const char* const CONTROL_PANEL_BUTTONS =
+"\x3""c\f11"
+"\v022\t062load\t141%s"
+"\v041\t062save\t141%s"
+"\v060\t062exit"
+"\v079\t102Help\fd";
+
+static const char* const ON = "\f15¢ª«\f11";
+
+static const char* const OFF = "\f32¢ëª\f11";
+
+static const char* const CONFIRM_QUIT = "ë 㢥à¥ë, çâ® å®â¨â¥ ¢ë©â¨?";
+
+static const char* const MR_WIZARD =
+ "ë â®ç® å®â¨â¥ ¢®á¯®«ì§®¢ âìáï ¯®¬®éìî à. £ ?";
+
+static const char* const NO_LOADING_IN_COMBAT =
+ "¨ª ª¨å § £àã§®ª ¢® ¢à¥¬ï ¡¨â¢ë!";
+
+static const char* const NO_SAVING_IN_COMBAT =
+ "¨ª ª¨å á®åà ¥¨© ¢® ¢à¥¬ï ¡¨â¢ë!";
+
+static const char* const QUICK_FIGHT_TEXT =
+ "\r\fd\x3""c\v000\t000ëáâ஥ ¤¥©á⢨¥\n\n"
+ "%s\x3""l\n\n"
+ "¥ªã饥\x3""r\n"
+ "\t000%s\x2\x3""c\v122\t019\f37\f04«¥¤\t055ë室\x1";
+
+static const char* const QUICK_FIGHT_OPTIONS[4] = {
+ "â ª ", " ª«¨ ¨¥", "«®ª", "¥£á⢮"
+};
+
+static const char* const WORLD_END_TEXT[9] = {
+ "\n\n\n\n\n\n\n"
+ "Congratulations Adventurers!\n\n"
+ "Let the unification ceremony begin!",
+ "And so the call went out to the people throughout the lands of Xeen"
+ " that the prophecy was nearing completion.",
+ "They came in great numbers to witness the momentous occasion.",
+ "\v026The Dragon Pharoah presided over the ceremony.",
+ "\v026Queen Kalindra presented the Cube of Power.",
+ "\v026Prince Roland presented the Xeen Sceptre.",
+ "\v026Together, they placed the Cube of Power...",
+ "\v026and the Sceptre, onto the Altar of Joining.",
+ "With the prophecy complete, the two sides of Xeen were united as one",
+};
+
+static const char* const WORLD_CONGRATULATIONS =
+ "\x3""cCongratulations\n\n"
+ "Your Final Score is:\n\n"
+ "%010lu\n"
+ "\x3l\n"
+ "Please send this score to the Ancient's Headquarters where "
+ "you'll be added to the Hall of Legends!\n\n"
+ "Ancient's Headquarters\n"
+ "New World Computing, Inc.\n"
+ "P.O. Box 4302\n"
+ "Hollywood, CA 90078";
+
+static const char* const WORLD_CONGRATULATIONS2 =
+ "\n\n\n\n\n\n"
+ "But wait... there's more!\n"
+ "\n\n"
+ "Include the message\n"
+ "\"%s\"\n"
+ "with your final score and receive a special bonus.";
+ static const char* const CLOUDS_CONGRATULATIONS1 =
+ "\f23\x3l"
+ "\v000\t000Please send this score to the Ancient's Headquarters "
+ "where you'll be added to the Hall of Legends!\f33\x3""c"
+ "\v070\t000Press a Key";
+
+static const char* const CLOUDS_CONGRATULATIONS2 =
+ "\f23\x3l"
+ "\v000\t000Ancient's Headquarters\n"
+ "New World Computing, Inc.\n"
+ "P.O. Box 4302\n"
+ "Hollywood, CA 90078-4302\f33\x3""c"
+ "\v070\t000Press a Key";
+
+static const char* const GOOBER[3] = {
+ "", "I am a Goober!", "I am a Super Goober!"
+};
+
+static const char* const MUSIC_FILES1[5] = {
+ "outdoors.m", "town.m", "cavern.m", "dungeon.m", "castle.m"
+};
+
+static const char* const MUSIC_FILES2[6][7] = {
+ { "outday1.m", "outday2.m", "outday4.m", "outnght1.m",
+ "outnght2.m", "outnght4.m", "daydesrt.m" },
+ { "townday1.m", "twnwlk.m", "newbrigh.m", "twnnitea.m",
+ "twnniteb.m", "twnwlk.m", "townday1.m" },
+ { "cavern1.m", "cavern2.m", "cavern3a.m", "cavern1.m",
+ "cavern2.m", "cavern3a.m", "cavern1.m" },
+ { "dngon1.m", "dngon2.m", "dngon3.m", "dngon1.m",
+ "dngon2.m", "dngon3.m", "dngon1.m" },
+ { "cstl1rev.m", "cstl2rev.m", "cstl3rev.m", "cstl1rev.m",
+ "cstl2rev.m", "cstl3rev.m", "cstl1rev.m" },
+ { "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m" }
+};
+
+static const char* const DIFFICULTY_TEXT =
+ "\v000\t000\x3""cë¡¥à¨â¥ ¨£à®¢®© ०¨¬";
+
+static const char* const SAVE_OFF_LIMITS =
+"\x3""c\v002\t000®£¨ ®ááâ ®¢«¥¨ï £à áç¨â îâ íâ® ¬¥áâ® § ¯à¥âë¬!\n"
+"¢ë, §¤¥áì ¥«ì§ï á®åà ïâìáï";
+
+static const char* const CLOUDS_INTRO1 =
+ "\f00\v082\t040\x3"
+ "cKing Burlock\v190\t040Peasants\v082\t247"
+ "Lord Xeen\v190\t258Xeen's Pet\v179\t150Crodo";
+
+static const char* const DARKSIDE_ENDING1 =
+ "\n\x3" "cCongratulations\n"
+ "\n"
+ "Your Final Score is:\n"
+ "\n"
+ "%010lu\n"
+ "\x3" "l\n"
+ "Please send this score to the Ancient's Headquarters "
+ "where you'll be added to the Hall of Legends!\n"
+ "\n"
+ "Ancient's Headquarters\n"
+ "New World Computing, Inc.\n"
+ "P.O. Box 4302\n"
+ "Hollywood, CA 90078";
+
+static const char* const DARKSIDE_ENDING2 = "\n"
+ "Adventurers,\n"
+ "\n"
+ "I will save your game in Castleview.\n"
+ "\n"
+ "The World of Xeen still needs you!\n"
+ "\n"
+ "Load your game afterwards and come visit me in the "
+ "Great Pyramid for further instructions";
+
+static const char* const PHAROAH_ENDING_TEXT1 =
+ "\fd\v001\t001%s\x3" "c\t000\v180Press a Key!\x3" "l";
+static const char* const PHAROAH_ENDING_TEXT2 =
+ "\f04\v000\t000%s\x3" "c\t000\v180Press a Key!\x3" "l\fd";
+
+
+void writeConstants(CCArchive& cc) {
+ Common::MemFile file;
+ file.syncString(CLOUDS_CREDITS);
+ file.syncString(DARK_SIDE_CREDITS);
+ file.syncString(SWORDS_CREDITS1);
+ file.syncString(SWORDS_CREDITS2);
+ file.syncString(OPTIONS_MENU);
+ file.syncStrings(GAME_NAMES, 3);
+ file.syncString(THE_PARTY_NEEDS_REST);
+ file.syncString(WHO_WILL);
+ file.syncString(HOW_MUCH);
+ file.syncString(WHATS_THE_PASSWORD);
+ file.syncString(PASSWORD_INCORRECT);
+ file.syncString(IN_NO_CONDITION);
+ file.syncString(NOTHING_HERE);
+ file.syncStrings(TERRAIN_TYPES, 6);
+ file.syncStrings(OUTDOORS_WALL_TYPES, 16);
+ file.syncStrings(SURFACE_NAMES, 16);
+ file.syncStrings(WHO_ACTIONS, 32);
+ file.syncStrings(WHO_WILL_ACTIONS, 4);
+ file.syncBytes2D((const byte*)SYMBOLS, 20, 64);
+ file.syncBytes2D((const byte*)TEXT_COLORS, 40, 4);
+ file.syncBytes2D((const byte*)TEXT_COLORS_STARTUP, 40, 4);
+ file.syncStrings(DIRECTION_TEXT_UPPER, 4);
+ file.syncStrings(DIRECTION_TEXT, 4);
+ file.syncStrings(RACE_NAMES, 5);
+ file.syncNumbers(RACE_HP_BONUSES, 5);
+ file.syncNumbers2D((const int*)RACE_SP_BONUSES, 5, 2);
+ file.syncStrings(CLASS_NAMES, 11);
+ file.syncNumbers(CLASS_EXP_LEVELS, 10);
+ file.syncStrings(ALIGNMENT_NAMES, 3);
+ file.syncStrings(SEX_NAMES, 2);
+ file.syncStrings(SKILL_NAMES, 18);
+ file.syncStrings(CONDITION_NAMES, 17);
+ file.syncNumbers(CONDITION_COLORS, 17);
+ file.syncString(GOOD);
+ file.syncString(BLESSED);
+ file.syncString(POWER_SHIELD);
+ file.syncString(HOLY_BONUS);
+ file.syncString(HEROISM);
+ file.syncString(IN_PARTY);
+ file.syncString(PARTY_DETAILS);
+ file.syncString(PARTY_DIALOG_TEXT);
+ file.syncNumbers(FACE_CONDITION_FRAMES, 17);
+ file.syncNumbers(CHAR_FACES_X, 6);
+ file.syncNumbers(HP_BARS_X, 6);
+ file.syncString(NO_ONE_TO_ADVENTURE_WITH);
+ file.syncBytes2D((const byte*)DARKNESS_XLAT, 3, 256);
+ file.syncString(YOUR_ROSTER_IS_FULL);
+ file.syncString(PLEASE_WAIT);
+ file.syncString(OOPS);
+ file.syncNumbers2D((const int*)SCREEN_POSITIONING_X, 4, 48);
+ file.syncNumbers2D((const int*)SCREEN_POSITIONING_Y, 4, 48);
+ file.syncNumbers(MONSTER_GRID_BITMASK, 12);
+ file.syncNumbers2D((const int*)INDOOR_OBJECT_X, 2, 12);
+ file.syncNumbers2D((const int*)MAP_OBJECT_Y, 2, 12);
+ file.syncNumbers(INDOOR_MONSTERS_Y, 4);
+ file.syncNumbers2D((const int*)OUTDOOR_OBJECT_X, 2, 12);
+ file.syncNumbers(OUTDOOR_MONSTER_INDEXES, 26);
+ file.syncNumbers(OUTDOOR_MONSTERS_Y, 26);
+ file.syncNumbers2D((const int*)DIRECTION_ANIM_POSITIONS, 4, 4);
+ file.syncBytes2D((const byte*)WALL_SHIFTS, 4, 48);
+ file.syncNumbers(DRAW_NUMBERS, 25);
+ file.syncNumbers2D((const int*)DRAW_FRAMES, 25, 2);
+ file.syncNumbers(COMBAT_FLOAT_X, 8);
+ file.syncNumbers(COMBAT_FLOAT_Y, 8);
+ file.syncNumbers2D((const int*)MONSTER_EFFECT_FLAGS, 15, 8);
+ file.syncNumbers2D((const int*)SPELLS_ALLOWED, 3, 40);
+ file.syncNumbers(BASE_HP_BY_CLASS, 10);
+ file.syncNumbers(AGE_RANGES, 10);
+ file.syncNumbers2D((const int*)AGE_RANGES_ADJUST, 2, 10);
+ file.syncNumbers(STAT_VALUES, 24);
+ file.syncNumbers(STAT_BONUSES, 24);
+ file.syncNumbers(ELEMENTAL_CATEGORIES, 6);
+ file.syncNumbers(ATTRIBUTE_CATEGORIES, 10);
+ file.syncNumbers(ATTRIBUTE_BONUSES, 72);
+ file.syncNumbers(ELEMENTAL_RESISTENCES, 37);
+ file.syncNumbers(ELEMENTAL_DAMAGE, 37);
+ file.syncNumbers(WEAPON_DAMAGE_BASE, 35);
+ file.syncNumbers(WEAPON_DAMAGE_MULTIPLIER, 35);
+ file.syncNumbers(METAL_DAMAGE, 22);
+ file.syncNumbers(METAL_DAMAGE_PERCENT, 22);
+ file.syncNumbers(METAL_LAC, 22);
+ file.syncNumbers(ARMOR_STRENGTHS, 14);
+ file.syncNumbers(MAKE_ITEM_ARR1, 6);
+ file.syncNumbers3D((const int*)MAKE_ITEM_ARR2, 6, 7, 2);
+ file.syncNumbers3D((const int*)MAKE_ITEM_ARR3, 10, 7, 2);
+ file.syncNumbers3D((const int*)MAKE_ITEM_ARR4, 2, 7, 2);
+ file.syncNumbers2D((const int*)MAKE_ITEM_ARR5, 8, 2);
+ file.syncNumbers(OUTDOOR_DRAWSTRUCT_INDEXES, 44);
+ file.syncNumbers2D((const int*)TOWN_MAXES, 2, 11);
+ file.syncStrings2D((const char* const*)TOWN_ACTION_MUSIC, 2, 7);
+ file.syncStrings(TOWN_ACTION_SHAPES, 7);
+ file.syncNumbers2D((const int*)TOWN_ACTION_FILES, 2, 7);
+ file.syncString(BANK_TEXT);
+ file.syncString(BLACKSMITH_TEXT);
+ file.syncString(GUILD_NOT_MEMBER_TEXT);
+ file.syncString(GUILD_TEXT);
+ file.syncString(TAVERN_TEXT);
+ file.syncString(GOOD_STUFF);
+ file.syncString(HAVE_A_DRINK);
+ file.syncString(YOURE_DRUNK);
+ file.syncNumbers4D((const int*)TAVERN_EXIT_LIST, 2, 6, 5, 2);
+ file.syncString(FOOD_AND_DRINK);
+ file.syncString(TEMPLE_TEXT);
+ file.syncString(EXPERIENCE_FOR_LEVEL);
+ file.syncString(TRAINING_LEARNED_ALL);
+ file.syncString(ELIGIBLE_FOR_LEVEL);
+ file.syncString(TRAINING_TEXT);
+ file.syncString(GOLD_GEMS);
+ file.syncString(GOLD_GEMS_2);
+ file.syncStrings(DEPOSIT_WITHDRAWL, 2);
+ file.syncString(NOT_ENOUGH_X_IN_THE_Y);
+ file.syncString(NO_X_IN_THE_Y);
+ file.syncStrings(STAT_NAMES, 16);
+ file.syncStrings(CONSUMABLE_NAMES, 4);
+ file.syncStrings(WHERE_NAMES, 2);
+ file.syncString(AMOUNT);
+ file.syncString(FOOD_PACKS_FULL);
+ file.syncString(BUY_SPELLS);
+ file.syncString(GUILD_OPTIONS);
+ file.syncNumbers((const int*)MISC_SPELL_INDEX, 74);
+ file.syncNumbers((const int*)SPELL_COSTS, 77);
+ file.syncNumbers2D((const int*)CLOUDS_GUILD_SPELLS, 5, 20);
+ file.syncNumbers2D((const int*)DARK_SPELL_OFFSETS, 3, 39);
+ file.syncNumbers2D((const int*)DARK_SPELL_RANGES, 12, 2);
+ file.syncNumbers2D((const int*)SWORDS_SPELL_RANGES, 12, 2);
+ file.syncNumbers((const int*)SPELL_GEM_COST, 77);
+ file.syncString(NOT_A_SPELL_CASTER);
+ file.syncString(SPELLS_LEARNED_ALL);
+ file.syncString(SPELLS_FOR);
+ file.syncString(SPELL_LINES_0_TO_9);
+ file.syncString(SPELLS_DIALOG_SPELLS);
+ file.syncString(SPELL_PTS);
+ file.syncString(GOLD);
+ file.syncString(SPELL_INFO);
+ file.syncString(SPELL_PURCHASE);
+ file.syncString(MAP_TEXT);
+ file.syncString(LIGHT_COUNT_TEXT);
+ file.syncString(FIRE_RESISTENCE_TEXT);
+ file.syncString(ELECRICITY_RESISTENCE_TEXT);
+ file.syncString(COLD_RESISTENCE_TEXT);
+ file.syncString(POISON_RESISTENCE_TEXT);
+ file.syncString(CLAIRVOYANCE_TEXT);
+ file.syncString(LEVITATE_TEXT);
+ file.syncString(WALK_ON_WATER_TEXT);
+ file.syncString(GAME_INFORMATION);
+ file.syncString(WORLD_GAME_TEXT);
+ file.syncString(DARKSIDE_GAME_TEXT);
+ file.syncString(CLOUDS_GAME_TEXT);
+ file.syncString(SWORDS_GAME_TEXT);
+ file.syncStrings(WEEK_DAY_STRINGS, 10);
+ file.syncString(CHARACTER_DETAILS);
+ file.syncString(PARTY_GOLD);
+ file.syncString(PLUS_14);
+ file.syncString(CHARACTER_TEMPLATE);
+ file.syncString(EXCHANGING_IN_COMBAT);
+ file.syncString(CURRENT_MAXIMUM_RATING_TEXT);
+ file.syncString(CURRENT_MAXIMUM_TEXT);
+ file.syncStrings(RATING_TEXT, 24);
+ file.syncString(AGE_TEXT);
+ file.syncString(LEVEL_TEXT);
+ file.syncString(RESISTENCES_TEXT);
+ file.syncString(NONE);
+ file.syncString(EXPERIENCE_TEXT);
+ file.syncString(ELIGIBLE);
+ file.syncString(IN_PARTY_IN_BANK);
+ file.syncString(FOOD_TEXT);
+ file.syncString(EXCHANGE_WITH_WHOM);
+ file.syncString(QUICK_REF_LINE);
+ file.syncString(QUICK_REFERENCE);
+ file.syncNumbers2D((const int*)BLACKSMITH_MAP_IDS, 2, 4);
+ file.syncString(ITEMS_DIALOG_TEXT1);
+ file.syncString(ITEMS_DIALOG_TEXT2);
+ file.syncString(ITEMS_DIALOG_LINE1);
+ file.syncString(ITEMS_DIALOG_LINE2);
+ file.syncString(BTN_BUY);
+ file.syncString(BTN_SELL);
+ file.syncString(BTN_IDENTIFY);
+ file.syncString(BTN_FIX);
+ file.syncString(BTN_USE);
+ file.syncString(BTN_EQUIP);
+ file.syncString(BTN_REMOVE);
+ file.syncString(BTN_DISCARD);
+ file.syncString(BTN_QUEST);
+ file.syncString(BTN_ENCHANT);
+ file.syncString(BTN_RECHARGE);
+ file.syncString(BTN_GOLD);
+ file.syncString(ITEM_BROKEN);
+ file.syncString(ITEM_CURSED);
+ file.syncString(ITEM_OF);
+ file.syncStrings(BONUS_NAMES, 7);
+ file.syncStrings(WEAPON_NAMES, 41);
+ file.syncStrings(ARMOR_NAMES, 14);
+ file.syncStrings(ACCESSORY_NAMES, 11);
+ file.syncStrings(MISC_NAMES, 22);
+ file.syncStrings(SPECIAL_NAMES, 74);
+ file.syncStrings(ELEMENTAL_NAMES, 6);
+ file.syncStrings(ATTRIBUTE_NAMES, 10);
+ file.syncStrings(EFFECTIVENESS_NAMES, 7);
+ file.syncStrings(QUEST_ITEM_NAMES, 85);
+ file.syncStrings(QUEST_ITEM_NAMES_SWORDS, 51);
+ file.syncNumbers((const int*)WEAPON_BASE_COSTS, 35);
+ file.syncNumbers((const int*)ARMOR_BASE_COSTS, 14);
+ file.syncNumbers((const int*)ACCESSORY_BASE_COSTS, 11);
+ file.syncNumbers((const int*)MISC_MATERIAL_COSTS, 22);
+ file.syncNumbers((const int*)MISC_BASE_COSTS, 76);
+ file.syncNumbers((const int*)METAL_BASE_MULTIPLIERS, 22);
+ file.syncNumbers((const int*)ITEM_SKILL_DIVISORS, 4);
+ file.syncNumbers((const int*)RESTRICTION_OFFSETS, 4);
+ file.syncNumbers((const int*)ITEM_RESTRICTIONS, 86);
+ file.syncString(NOT_PROFICIENT);
+ file.syncString(NO_ITEMS_AVAILABLE);
+ file.syncStrings(CATEGORY_NAMES, 4);
+ file.syncString(X_FOR_THE_Y);
+ file.syncString(X_FOR_Y);
+ file.syncString(X_FOR_Y_GOLD);
+ file.syncString(FMT_CHARGES);
+ file.syncString(AVAILABLE_GOLD_COST);
+ file.syncString(CHARGES);
+ file.syncString(COST);
+ file.syncStrings(ITEM_ACTIONS, 7);
+ file.syncString(WHICH_ITEM);
+ file.syncString(WHATS_YOUR_HURRY);
+ file.syncString(USE_ITEM_IN_COMBAT);
+ file.syncString(NO_SPECIAL_ABILITIES);
+ file.syncString(CANT_CAST_WHILE_ENGAGED);
+ file.syncString(EQUIPPED_ALL_YOU_CAN);
+ file.syncString(REMOVE_X_TO_EQUIP_Y);
+ file.syncString(RING);
+ file.syncString(MEDAL);
+ file.syncString(CANNOT_REMOVE_CURSED_ITEM);
+ file.syncString(CANNOT_DISCARD_CURSED_ITEM);
+ file.syncString(PERMANENTLY_DISCARD);
+ file.syncString(BACKPACK_IS_FULL);
+ file.syncStrings(CATEGORY_BACKPACK_IS_FULL, 4);
+ file.syncString(BUY_X_FOR_Y_GOLD);
+ file.syncString(SELL_X_FOR_Y_GOLD);
+ file.syncString(NO_NEED_OF_THIS);
+ file.syncString(NOT_RECHARGABLE);
+ file.syncString(SPELL_FAILED);
+ file.syncString(NOT_ENCHANTABLE);
+ file.syncString(ITEM_NOT_BROKEN);
+ file.syncStrings(FIX_IDENTIFY, 2);
+ file.syncString(FIX_IDENTIFY_GOLD);
+ file.syncString(IDENTIFY_ITEM_MSG);
+ file.syncString(ITEM_DETAILS);
+ file.syncString(ALL);
+ file.syncString(FIELD_NONE);
+ file.syncString(DAMAGE_X_TO_Y);
+ file.syncString(ELEMENTAL_XY_DAMAGE);
+ file.syncString(ATTR_XY_BONUS);
+ file.syncString(EFFECTIVE_AGAINST);
+ file.syncString(QUESTS_DIALOG_TEXT);
+ file.syncString(CLOUDS_OF_XEEN_LINE);
+ file.syncString(DARKSIDE_OF_XEEN_LINE);
+ file.syncString(SWORDS_OF_XEEN_LINE);
+ file.syncString(NO_QUEST_ITEMS);
+ file.syncString(NO_CURRENT_QUESTS);
+ file.syncString(NO_AUTO_NOTES);
+ file.syncString(QUEST_ITEMS_DATA);
+ file.syncString(CURRENT_QUESTS_DATA);
+ file.syncString(AUTO_NOTES_DATA);
+ file.syncString(REST_COMPLETE);
+ file.syncString(PARTY_IS_STARVING);
+ file.syncString(HIT_SPELL_POINTS_RESTORED);
+ file.syncString(TOO_DANGEROUS_TO_REST);
+ file.syncString(SOME_CHARS_MAY_DIE);
+ file.syncString(DISMISS_WHOM);
+ file.syncString(CANT_DISMISS_LAST_CHAR);
+ file.syncString(DELETE_CHAR_WITH_ELDER_WEAPON);
+ file.syncStrings(REMOVE_DELETE, 2);
+ file.syncString(REMOVE_OR_DELETE_WHICH);
+ file.syncString(YOUR_PARTY_IS_FULL);
+ file.syncString(HAS_SLAYER_SWORD);
+ file.syncString(SURE_TO_DELETE_CHAR);
+ file.syncString(CREATE_CHAR_DETAILS);
+ file.syncString(NEW_CHAR_STATS);
+ file.syncString(NAME_FOR_NEW_CHARACTER);
+ file.syncString(SELECT_CLASS_BEFORE_SAVING);
+ file.syncString(EXCHANGE_ATTR_WITH);
+ file.syncNumbers((const int*)NEW_CHAR_SKILLS, 10);
+ file.syncNumbers((const int*)NEW_CHAR_SKILLS_OFFSET, 10);
+ file.syncNumbers((const int*)NEW_CHAR_SKILLS_LEN, 10);
+ file.syncNumbers((const int*)NEW_CHAR_RACE_SKILLS, 10);
+ file.syncNumbers((const int*)RACE_MAGIC_RESISTENCES, 5);
+ file.syncNumbers((const int*)RACE_FIRE_RESISTENCES, 5);
+ file.syncNumbers((const int*)RACE_ELECTRIC_RESISTENCES, 5);
+ file.syncNumbers((const int*)RACE_COLD_RESISTENCES, 5);
+ file.syncNumbers((const int*)RACE_ENERGY_RESISTENCES, 5);
+ file.syncNumbers((const int*)RACE_POISON_RESISTENCES, 5);
+ file.syncNumbers2D((const int*)NEW_CHARACTER_SPELLS, 10, 4);
+ file.syncString(COMBAT_DETAILS);
+ file.syncString(NOT_ENOUGH_TO_CAST);
+ file.syncStrings(SPELL_CAST_COMPONENTS, 2);
+ file.syncString(CAST_SPELL_DETAILS);
+ file.syncString(PARTY_FOUND);
+ file.syncString(BACKPACKS_FULL_PRESS_KEY);
+ file.syncString(HIT_A_KEY);
+ file.syncString(GIVE_TREASURE_FORMATTING);
+ file.syncString(X_FOUND_Y);
+ file.syncString(ON_WHO);
+ file.syncString(WHICH_ELEMENT1);
+ file.syncString(WHICH_ELEMENT2);
+ file.syncString(DETECT_MONSTERS);
+ file.syncString(LLOYDS_BEACON);
+ file.syncString(HOW_MANY_SQUARES);
+ file.syncString(TOWN_PORTAL);
+ file.syncString(TOWN_PORTAL_SWORDS);
+ file.syncNumbers2D((const int*)TOWN_MAP_NUMBERS, 3, 5);
+ file.syncString(MONSTER_DETAILS);
+ file.syncStrings(MONSTER_SPECIAL_ATTACKS, 23);
+ file.syncString(IDENTIFY_MONSTERS);
+ file.syncStrings(EVENT_SAMPLES, 6);
+ file.syncString(MOONS_NOT_ALIGNED);
+ file.syncString(AWARDS_FOR);
+ file.syncString(AWARDS_TEXT);
+ file.syncString(NO_AWARDS);
+ file.syncString(WARZONE_BATTLE_MASTER);
+ file.syncString(WARZONE_MAXED);
+ file.syncString(WARZONE_LEVEL);
+ file.syncString(WARZONE_HOW_MANY);
+ file.syncString(PICKS_THE_LOCK);
+ file.syncString(UNABLE_TO_PICK_LOCK);
+ file.syncString(CONTROL_PANEL_TEXT);
+ file.syncString(CONTROL_PANEL_BUTTONS);
+ file.syncString(ON);
+ file.syncString(OFF);
+ file.syncString(CONFIRM_QUIT);
+ file.syncString(MR_WIZARD);
+ file.syncString(NO_LOADING_IN_COMBAT);
+ file.syncString(NO_SAVING_IN_COMBAT);
+ file.syncString(QUICK_FIGHT_TEXT);
+ file.syncStrings(QUICK_FIGHT_OPTIONS, 4);
+ file.syncStrings(WORLD_END_TEXT, 9);
+ file.syncString(WORLD_CONGRATULATIONS);
+ file.syncString(WORLD_CONGRATULATIONS2);
+ file.syncString(CLOUDS_CONGRATULATIONS1);
+ file.syncString(CLOUDS_CONGRATULATIONS2);
+ file.syncStrings(GOOBER, 3);
+ file.syncStrings(MUSIC_FILES1, 5);
+ file.syncStrings2D((const char* const*)MUSIC_FILES2, 6, 7);
+ file.syncString(DIFFICULTY_TEXT);
+ file.syncString(SAVE_OFF_LIMITS);
+ file.syncString(CLOUDS_INTRO1);
+ file.syncString(DARKSIDE_ENDING1);
+ file.syncString(DARKSIDE_ENDING2);
+ file.syncString(PHAROAH_ENDING_TEXT1);
+ file.syncString(PHAROAH_ENDING_TEXT2);
+
+ cc.add("CONSTANTS", file);
}
Commit: 66097d4e394779f627e34d089b845ba814b11f52
https://github.com/scummvm/scummvm/commit/66097d4e394779f627e34d089b845ba814b11f52
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Added plural forms for "days" in char info
Changed paths:
devtools/create_xeen/constants.cpp
dists/engine-data/xeen.ccs
engines/xeen/dialogs/dialogs_char_info.cpp
engines/xeen/dialogs/dialogs_char_info.h
engines/xeen/dialogs/dialogs_items.cpp
engines/xeen/font.cpp
engines/xeen/resources.cpp
engines/xeen/resources.h
diff --git a/devtools/create_xeen/constants.cpp b/devtools/create_xeen/constants.cpp
index 97a2d4f88d..a5a1c8bb88 100644
--- a/devtools/create_xeen/constants.cpp
+++ b/devtools/create_xeen/constants.cpp
@@ -1295,6 +1295,8 @@ static const char* const CHARACTER_DETAILS =
"\x3""l\t131\f15%u\fd\t196\f%02u%s\fd"
"\t245%s%s%s%s\fd";
+static const char *const RU_DAYS[3] = { "¤¥ì", "¤ï", "¤¥©" };
+
static const char* const PARTY_GOLD = "®«®â®";
static const char* const PLUS_14 = "\f14+";
@@ -1711,6 +1713,8 @@ static const char* const BUY_X_FOR_Y_GOLD =
static const char* const SELL_X_FOR_Y_GOLD =
"\x3""l\v000\t000\fdத âì %s\fd § %lu §®«®â%s?";
+static const char *const RU_SELL_X_FOR_Y_GOLD_ENDINGS[2] = { "®©", "ëå" };
+
static const char* const NO_NEED_OF_THIS =
"\v005\x3""c\fd á ¥ ¨â¥à¥áã¥â %s\fd!";
@@ -2335,6 +2339,7 @@ void writeConstants(CCArchive& cc) {
file.syncString(SWORDS_GAME_TEXT);
file.syncStrings(WEEK_DAY_STRINGS, 10);
file.syncString(CHARACTER_DETAILS);
+ file.syncStrings(RU_DAYS, 3);
file.syncString(PARTY_GOLD);
file.syncString(PLUS_14);
file.syncString(CHARACTER_TEMPLATE);
@@ -2420,6 +2425,7 @@ void writeConstants(CCArchive& cc) {
file.syncStrings(CATEGORY_BACKPACK_IS_FULL, 4);
file.syncString(BUY_X_FOR_Y_GOLD);
file.syncString(SELL_X_FOR_Y_GOLD);
+ file.syncStrings(RU_SELL_X_FOR_Y_GOLD_ENDINGS, 2);
file.syncString(NO_NEED_OF_THIS);
file.syncString(NOT_RECHARGABLE);
file.syncString(SPELL_FAILED);
diff --git a/dists/engine-data/xeen.ccs b/dists/engine-data/xeen.ccs
index 9737dcf0e2..1aeeeeda89 100644
Binary files a/dists/engine-data/xeen.ccs and b/dists/engine-data/xeen.ccs differ
diff --git a/engines/xeen/dialogs/dialogs_char_info.cpp b/engines/xeen/dialogs/dialogs_char_info.cpp
index d4ac7d7ea7..fe64ce8aed 100644
--- a/engines/xeen/dialogs/dialogs_char_info.cpp
+++ b/engines/xeen/dialogs/dialogs_char_info.cpp
@@ -20,6 +20,7 @@
*
*/
+#include "common/config-manager.h"
#include "xeen/dialogs/dialogs_awards.h"
#include "xeen/dialogs/dialogs_char_info.h"
#include "xeen/dialogs/dialogs_exchange.h"
@@ -277,6 +278,17 @@ void CharacterInfo::addButtons() {
addPartyButtons(_vm);
}
+int CharacterInfo::getRuDays(int val) {
+ int i = val % 100;
+ if (i < 5 || i > 20) switch (val % 10) {
+ case 1: return 0;
+ case 2:
+ case 3:
+ case 4: return 1;
+ }
+ return 2;
+}
+
Common::String CharacterInfo::loadCharacterDetails(const Character &c) {
Condition condition = c.worstCondition();
Party &party = *_vm->_party;
@@ -290,7 +302,39 @@ Common::String CharacterInfo::loadCharacterDetails(const Character &c) {
c._energyResistence._permanent + c.itemScan(15) + c._energyResistence._temporary +
c._magicResistence._permanent + c.itemScan(16) + c._magicResistence._temporary;
- return Common::String::format(Res.CHARACTER_DETAILS,
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ return Common::String::format(Res.CHARACTER_DETAILS,
+ Res.PARTY_GOLD, c._name.c_str(), Res.SEX_NAMES[c._sex],
+ Res.RACE_NAMES[c._race], Res.CLASS_NAMES[c._class],
+ c.statColor(c.getStat(MIGHT), c.getStat(MIGHT, true)), c.getStat(MIGHT),
+ c.statColor(c.getStat(ACCURACY), c.getStat(ACCURACY, true)), c.getStat(ACCURACY),
+ c.statColor(c._currentHp, c.getMaxHP()), c._currentHp,
+ c.getCurrentExperience(),
+ c.statColor(c.getStat(INTELLECT), c.getStat(INTELLECT, true)), c.getStat(INTELLECT),
+ c.statColor(c.getStat(LUCK), c.getStat(LUCK, true)), c.getStat(LUCK),
+ c.statColor(c._currentSp, c.getMaxSP()), c._currentSp,
+ party._gold,
+ c.statColor(c.getStat(PERSONALITY), c.getStat(PERSONALITY, true)), c.getStat(PERSONALITY),
+ c.statColor(c.getAge(), c.getAge(true)), c.getAge(),
+ totalResist,
+ party._gems,
+ c.statColor(c.getStat(ENDURANCE), c.getStat(ENDURANCE, true)), c.getStat(ENDURANCE),
+ c.statColor(c.getCurrentLevel(), c._level._permanent), c.getCurrentLevel(),
+ c.getNumSkills(),
+ foodVal,
+ Res.RU_DAYS[getRuDays(foodVal)],
+ c.statColor(c.getStat(SPEED), c.getStat(SPEED, true)), c.getStat(SPEED),
+ c.statColor(c.getArmorClass(), c.getArmorClass(true)), c.getArmorClass(),
+ c.getNumAwards(),
+ Res.CONDITION_COLORS[condition], Res.CONDITION_NAMES[condition],
+ condition == NO_CONDITION && party._blessed ? Res.PLUS_14 : "",
+ condition == NO_CONDITION && party._powerShield ? Res.PLUS_14 : "",
+ condition == NO_CONDITION && party._holyBonus ? Res.PLUS_14 : "",
+ condition == NO_CONDITION && party._heroism ? Res.PLUS_14 : ""
+ );
+ }
+
+ return Common::String::format(Res.CHARACTER_DETAILS,
Res.PARTY_GOLD, c._name.c_str(), Res.SEX_NAMES[c._sex],
Res.RACE_NAMES[c._race], Res.CLASS_NAMES[c._class],
c.statColor(c.getStat(MIGHT), c.getStat(MIGHT, true)), c.getStat(MIGHT),
diff --git a/engines/xeen/dialogs/dialogs_char_info.h b/engines/xeen/dialogs/dialogs_char_info.h
index 6dc7eaa51a..8abbb5d4bd 100644
--- a/engines/xeen/dialogs/dialogs_char_info.h
+++ b/engines/xeen/dialogs/dialogs_char_info.h
@@ -49,6 +49,11 @@ private:
*/
void addButtons();
+ /**
+ * Get russian day/days form id
+ */
+ int getRuDays(int val);
+
/**
* Return a string containing the details of the character
*/
diff --git a/engines/xeen/dialogs/dialogs_items.cpp b/engines/xeen/dialogs/dialogs_items.cpp
index da3b9cb1ca..454af251be 100644
--- a/engines/xeen/dialogs/dialogs_items.cpp
+++ b/engines/xeen/dialogs/dialogs_items.cpp
@@ -20,6 +20,7 @@
*
*/
+#include "common/config-manager.h"
#include "xeen/dialogs/dialogs_items.h"
#include "xeen/dialogs/dialogs_query.h"
#include "xeen/dialogs/dialogs_quests.h"
@@ -889,6 +890,8 @@ int ItemsDialog::doItemOptions(Character &c, int actionIndex, int itemIndex, Ite
Common::String desc = c._items[category].getFullDescription(itemIndex);
Common::String msg = Common::String::format(Res.SELL_X_FOR_Y_GOLD,
desc.c_str(), cost);
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language")))
+ msg += Res.RU_SELL_X_FOR_Y_GOLD_ENDINGS[cost % 10 == 1 ? 0 : 1];
if (Confirm::show(_vm, msg)) {
// Remove the sold item and add gold to the party's total
diff --git a/engines/xeen/font.cpp b/engines/xeen/font.cpp
index de1bfdfacf..6f471e8fa7 100644
--- a/engines/xeen/font.cpp
+++ b/engines/xeen/font.cpp
@@ -311,8 +311,7 @@ void FontSurface::writeCharacter(char c, const Common::Rect &clipRect) {
}
char FontSurface::getNextChar() {
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language")))
- return *_displayString++;
+ if (Common::RU_RUS == lang) return *_displayString++;
return *_displayString++ & 0x7f;
}
diff --git a/engines/xeen/resources.cpp b/engines/xeen/resources.cpp
index 8979cf53b2..a14198736f 100644
--- a/engines/xeen/resources.cpp
+++ b/engines/xeen/resources.cpp
@@ -212,6 +212,7 @@ void Resources::loadData() {
file.syncString(SWORDS_GAME_TEXT);
file.syncStrings(WEEK_DAY_STRINGS, 10);
file.syncString(CHARACTER_DETAILS);
+ file.syncStrings(RU_DAYS, 3);
file.syncString(PARTY_GOLD);
file.syncString(PLUS_14);
file.syncString(CHARACTER_TEMPLATE);
@@ -297,6 +298,7 @@ void Resources::loadData() {
file.syncStrings(CATEGORY_BACKPACK_IS_FULL, 4);
file.syncString(BUY_X_FOR_Y_GOLD);
file.syncString(SELL_X_FOR_Y_GOLD);
+ file.syncStrings(RU_SELL_X_FOR_Y_GOLD_ENDINGS, 2);
file.syncString(NO_NEED_OF_THIS);
file.syncString(NOT_RECHARGABLE);
file.syncString(SPELL_FAILED);
diff --git a/engines/xeen/resources.h b/engines/xeen/resources.h
index 8a450ad062..6785d43fae 100644
--- a/engines/xeen/resources.h
+++ b/engines/xeen/resources.h
@@ -267,6 +267,7 @@ public:
const char *SWORDS_GAME_TEXT;
const char *WEEK_DAY_STRINGS[10];
const char *CHARACTER_DETAILS;
+ const char *RU_DAYS[3];
const char *PARTY_GOLD;
const char *PLUS_14;
const char *CHARACTER_TEMPLATE;
@@ -352,6 +353,7 @@ public:
const char *CATEGORY_BACKPACK_IS_FULL[4];
const char *BUY_X_FOR_Y_GOLD;
const char *SELL_X_FOR_Y_GOLD;
+ const char *RU_SELL_X_FOR_Y_GOLD_ENDINGS[2];
const char *NO_NEED_OF_THIS;
const char *NOT_RECHARGABLE;
const char *SPELL_FAILED;
Commit: 3d6371c4f09f0890bec622115f2a774ea03b103c
https://github.com/scummvm/scummvm/commit/3d6371c4f09f0890bec622115f2a774ea03b103c
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Working on 8-bit font
Changed paths:
dists/engine-data/xeen.ccs
engines/xeen/font.cpp
diff --git a/dists/engine-data/xeen.ccs b/dists/engine-data/xeen.ccs
index 1aeeeeda89..cf31cec898 100644
Binary files a/dists/engine-data/xeen.ccs and b/dists/engine-data/xeen.ccs differ
diff --git a/engines/xeen/font.cpp b/engines/xeen/font.cpp
index 6f471e8fa7..de1bfdfacf 100644
--- a/engines/xeen/font.cpp
+++ b/engines/xeen/font.cpp
@@ -311,7 +311,8 @@ void FontSurface::writeCharacter(char c, const Common::Rect &clipRect) {
}
char FontSurface::getNextChar() {
- if (Common::RU_RUS == lang) return *_displayString++;
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language")))
+ return *_displayString++;
return *_displayString++ & 0x7f;
}
Commit: f25b9c9c58b5cf24d5d35ecf3194422a3bce7936
https://github.com/scummvm/scummvm/commit/f25b9c9c58b5cf24d5d35ecf3194422a3bce7936
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Move plural forms to constants
Changed paths:
devtools/create_xeen/constants.cpp
diff --git a/devtools/create_xeen/constants.cpp b/devtools/create_xeen/constants.cpp
index a5a1c8bb88..97a2d4f88d 100644
--- a/devtools/create_xeen/constants.cpp
+++ b/devtools/create_xeen/constants.cpp
@@ -1295,8 +1295,6 @@ static const char* const CHARACTER_DETAILS =
"\x3""l\t131\f15%u\fd\t196\f%02u%s\fd"
"\t245%s%s%s%s\fd";
-static const char *const RU_DAYS[3] = { "¤¥ì", "¤ï", "¤¥©" };
-
static const char* const PARTY_GOLD = "®«®â®";
static const char* const PLUS_14 = "\f14+";
@@ -1713,8 +1711,6 @@ static const char* const BUY_X_FOR_Y_GOLD =
static const char* const SELL_X_FOR_Y_GOLD =
"\x3""l\v000\t000\fdத âì %s\fd § %lu §®«®â%s?";
-static const char *const RU_SELL_X_FOR_Y_GOLD_ENDINGS[2] = { "®©", "ëå" };
-
static const char* const NO_NEED_OF_THIS =
"\v005\x3""c\fd á ¥ ¨â¥à¥áã¥â %s\fd!";
@@ -2339,7 +2335,6 @@ void writeConstants(CCArchive& cc) {
file.syncString(SWORDS_GAME_TEXT);
file.syncStrings(WEEK_DAY_STRINGS, 10);
file.syncString(CHARACTER_DETAILS);
- file.syncStrings(RU_DAYS, 3);
file.syncString(PARTY_GOLD);
file.syncString(PLUS_14);
file.syncString(CHARACTER_TEMPLATE);
@@ -2425,7 +2420,6 @@ void writeConstants(CCArchive& cc) {
file.syncStrings(CATEGORY_BACKPACK_IS_FULL, 4);
file.syncString(BUY_X_FOR_Y_GOLD);
file.syncString(SELL_X_FOR_Y_GOLD);
- file.syncStrings(RU_SELL_X_FOR_Y_GOLD_ENDINGS, 2);
file.syncString(NO_NEED_OF_THIS);
file.syncString(NOT_RECHARGABLE);
file.syncString(SPELL_FAILED);
Commit: cfcf36383fcc2d7738cc3b9f4b62c555e14ef641
https://github.com/scummvm/scummvm/commit/cfcf36383fcc2d7738cc3b9f4b62c555e14ef641
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Added plural forms for "days"
Changed paths:
devtools/create_xeen/constants.cpp
dists/engine-data/xeen.ccs
engines/xeen/font.cpp
diff --git a/devtools/create_xeen/constants.cpp b/devtools/create_xeen/constants.cpp
index 97a2d4f88d..a5a1c8bb88 100644
--- a/devtools/create_xeen/constants.cpp
+++ b/devtools/create_xeen/constants.cpp
@@ -1295,6 +1295,8 @@ static const char* const CHARACTER_DETAILS =
"\x3""l\t131\f15%u\fd\t196\f%02u%s\fd"
"\t245%s%s%s%s\fd";
+static const char *const RU_DAYS[3] = { "¤¥ì", "¤ï", "¤¥©" };
+
static const char* const PARTY_GOLD = "®«®â®";
static const char* const PLUS_14 = "\f14+";
@@ -1711,6 +1713,8 @@ static const char* const BUY_X_FOR_Y_GOLD =
static const char* const SELL_X_FOR_Y_GOLD =
"\x3""l\v000\t000\fdத âì %s\fd § %lu §®«®â%s?";
+static const char *const RU_SELL_X_FOR_Y_GOLD_ENDINGS[2] = { "®©", "ëå" };
+
static const char* const NO_NEED_OF_THIS =
"\v005\x3""c\fd á ¥ ¨â¥à¥áã¥â %s\fd!";
@@ -2335,6 +2339,7 @@ void writeConstants(CCArchive& cc) {
file.syncString(SWORDS_GAME_TEXT);
file.syncStrings(WEEK_DAY_STRINGS, 10);
file.syncString(CHARACTER_DETAILS);
+ file.syncStrings(RU_DAYS, 3);
file.syncString(PARTY_GOLD);
file.syncString(PLUS_14);
file.syncString(CHARACTER_TEMPLATE);
@@ -2420,6 +2425,7 @@ void writeConstants(CCArchive& cc) {
file.syncStrings(CATEGORY_BACKPACK_IS_FULL, 4);
file.syncString(BUY_X_FOR_Y_GOLD);
file.syncString(SELL_X_FOR_Y_GOLD);
+ file.syncStrings(RU_SELL_X_FOR_Y_GOLD_ENDINGS, 2);
file.syncString(NO_NEED_OF_THIS);
file.syncString(NOT_RECHARGABLE);
file.syncString(SPELL_FAILED);
diff --git a/dists/engine-data/xeen.ccs b/dists/engine-data/xeen.ccs
index cf31cec898..1aeeeeda89 100644
Binary files a/dists/engine-data/xeen.ccs and b/dists/engine-data/xeen.ccs differ
diff --git a/engines/xeen/font.cpp b/engines/xeen/font.cpp
index de1bfdfacf..6f471e8fa7 100644
--- a/engines/xeen/font.cpp
+++ b/engines/xeen/font.cpp
@@ -311,8 +311,7 @@ void FontSurface::writeCharacter(char c, const Common::Rect &clipRect) {
}
char FontSurface::getNextChar() {
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language")))
- return *_displayString++;
+ if (Common::RU_RUS == lang) return *_displayString++;
return *_displayString++ & 0x7f;
}
Commit: 516f8d8824f98206833ce7fd9206035198fcf292
https://github.com/scummvm/scummvm/commit/516f8d8824f98206833ce7fd9206035198fcf292
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Combine multiple language constants in one ccs file
Changed paths:
devtools/create_xeen/clouds.cpp
devtools/create_xeen/constants.cpp
devtools/create_xeen/create_xeen.cpp
dists/engine-data/xeen.ccs
engines/xeen/dialogs/dialogs_char_info.cpp
engines/xeen/dialogs/dialogs_char_info.h
engines/xeen/files.cpp
engines/xeen/font.cpp
engines/xeen/font.h
engines/xeen/resources.cpp
engines/xeen/resources.h
diff --git a/devtools/create_xeen/clouds.cpp b/devtools/create_xeen/clouds.cpp
index f8aba7b7d6..ee3051614e 100644
--- a/devtools/create_xeen/clouds.cpp
+++ b/devtools/create_xeen/clouds.cpp
@@ -32,6 +32,7 @@
#include "file.h"
#include "clouds.h"
+
static const char *const MAP_NAMES[86] = {
"", "Area A1", "Area A2", "Area A3", "Area A4", "Area B1", "Area B2",
"Area B3", "Area B4", "Area C1", "Area C2", "Area C3", "Area C4",
diff --git a/devtools/create_xeen/constants.cpp b/devtools/create_xeen/constants.cpp
index a5a1c8bb88..0d89a09c42 100644
--- a/devtools/create_xeen/constants.cpp
+++ b/devtools/create_xeen/constants.cpp
@@ -20,7 +20,7 @@
*
*/
-// Disable symbol overrides so that we can use system headers.
+ // Disable symbol overrides so that we can use system headers.
#define FORBIDDEN_SYMBOL_ALLOW_ALL
// HACK to allow building with the SDL backend on MinGW
@@ -29,6 +29,7 @@
#undef main
#endif // main
+#include "common/language.h"
#include "file.h"
#include "constants.h"
@@ -60,2483 +61,5178 @@ enum MagicSpell {
NO_SPELL = 76
};
-static const char* const CLOUDS_CREDITS =
- "\v012\t000\x3""c\f35¤¥ï ¨ à㪮¢®¤á⢮ ¯à®¥ªâ®¬:\n"
- "\f17¦® ¥£¥¬\x3""l\n"
- "\n"
- "\t025\f35à®£à ¬¬¨áâë:\n"
- "\t035\f17 ઠ®«¤ãí««\n"
- "\t035¥©¢ íâíãí©\n"
- "\n"
- "\t025\f35㤨®á¨á⥬ ¨ §¢ãª:\n"
- "\t035\f17®¤¤ ¥¤à¨ªá\n"
- "\n"
- "\t025\f35ã§ëª ¨ à¥çì:\n"
- "\t035\f17¨¬ ««¨\n"
- "\n"
- "\t025\f35æ¥ à¨©:\n"
- "\t035\f17®« â¥à\n"
- "\t035¥¡¡¨ ñàä¨\n"
- "\t035¦® ¥£¥¬\v012\n"
- "\n"
- "\n"
- "\t180\f35㤮¦¨ª¨:\n"
- "\t190\f17㨠¦®á®\n"
- "\t190¦® â . ¢¨\n"
- "\t190®¨â ®£-¥¬á â\n"
- "\t190¦ã«¨ï « ®\n"
- "\t190¨ª म àà¥à \n"
- "\n"
- "\t180\f35¥áâ¥àë:\n"
- "\t190\f17¥¤¦ ¬¨ ¥â\n"
- "\t190 ਮ ᪠¬¨«« \n"
- "\t190¨ç ठᯨ\n"
- "\t190ª®ââ ª¤í¨¥«\n"
- "\t190«¥©â® ¥â§¥à\n"
- "\t190 ©ª« ã à¥á\x3""c";
-
-static const char* const DARK_SIDE_CREDITS =
- "\v012\t000\x3""c\f35Designed and Directed By:\n"
- "\f17Jon Van Caneghem\x3l\n"
- "\n"
- "\t025\f35Programming:\n"
- "\t035\f17Mark Caldwell\n"
- "\t035Dave Hathaway\n"
- "\n"
- "\t025\f35Sound System & FX:\n"
- "\t035\f17Mike Heilemann\n"
- "\n"
- "\t025\f35Music & Speech:\n"
- "\t035\f17Tim Tully\n"
- "\n"
- "\t025\f35Writing:\n"
- "\t035\f17Paul Rattner\n"
- "\t035Debbie Van Caneghem\n"
- "\t035Jon Van Caneghem\v012\n"
- "\n"
- "\n"
- "\t180\f35Graphics:\n"
- "\t190\f17Jonathan P. Gwyn\n"
- "\t190Bonita Long-Hemsath\n"
- "\t190Julia Ulano\n"
- "\t190Ricardo Barrera\n"
- "\n"
- "\t180\f35Testing:\n"
- "\t190\f17Benjamin Bent\n"
- "\t190Christian Dailey\n"
- "\t190Mario Escamilla\n"
- "\t190Marco Hunter\n"
- "\t190Robert J. Lupo\n"
- "\t190Clayton Retzer\n"
- "\t190David Vela\x3""c";
-
-static const char* const SWORDS_CREDITS1 =
- "\v012\x3""c\f35Published By New World Computing, Inc.\f17\n"
- "Developed By CATware, Inc.\x3l\n"
- "\f01Design and Direction\t180Series Created by\n"
- "\t020Bill Fawcett\t190John Van Caneghem\n"
- "\n"
- "\t010Story Contributions\t180Producer & Manual\n"
- "\t020Ellen Guon\t190Dean Rettig\n"
- "\n"
- "\t010Programming & Ideas\t180Original Programming\n"
- "\t020David Potter\t190Mark Caldwell\n"
- "\t020Rod Retterath\t190Dave Hathaway\n"
- "\n"
- "\t010Manual Illustrations\t180Graphic Artists\n"
- "\t020Todd Cameron Hamilton\t190Jonathan P. Gwyn\n"
- "\t020James Clouse\t190Bonnie Long-Hemsath\n"
- "\t190Julia Ulano\n"
- "\t190Ricardo Barrera\n";
-
-static const char* const SWORDS_CREDITS2 =
- "\f05\v012\t000\x3l\n"
- "\t100Sound Programming\n"
- "\t110Todd Hendrix\n"
- "\n"
- "\t100Music\n"
- "\t110Tim Tully\n"
- "\t110Quality Assurance Manager\n"
- "\t110Peter Ryu\n"
- "\t100Testers\n"
- "\t110Walter Johnson\n"
- "\t110Bryan Farina\n"
- "\t110David Baton\n"
- "\t110Jack Nalls\n";
-
-static const char* const OPTIONS_MENU =
- "\r\x1\x3""c\fd¥ç ¨ £¨ï\n"
- "%s ᨠ\x2\n"
- "\v%.3dCopyright (c) %d NWC, Inc.\n"
- "All Rights Reserved\x1";
-static const char* const GAME_NAMES[3] = { "¡« ª ", "Darkside", "World" };
-
-static const char* const THE_PARTY_NEEDS_REST =
- "\v012âàï¤ ã¦¤ ¥âáï ¢ ®â¤ëå¥!";
-
-static const char* const WHO_WILL = "\x3""c\v000\t000%s\n\n%s?\n\v055F1 - F%d";
-
-static const char* const HOW_MUCH = "\x3""cª®«ìª®\n\n";
-
-static const char* const WHATS_THE_PASSWORD = "\x3""cWhat's the Password?\n"
- "\n"
- "Please turn to page %u, go to\n"
- "line %u, and type in word %u.\v067\t000Spaces are not counted as words or lines. "
- "Hyphenated words are treated as one word. Any line that has any text is considered a line."
- "\x3""c\v040\t000\n";
-
-static const char* const PASSWORD_INCORRECT = "\x3""c\v040\n\f32Incorrect!\fd";
-
-static const char* const IN_NO_CONDITION =
- "\v007%s ¥ ¢ á®áâ®ï¨¨ çâ®-«¨¡® ᤥ« âì!";
-
-static const char* const NOTHING_HERE = "\x3""c\v010¤¥áì ¨ç¥£® ¥â.";
-
-static const char* const TERRAIN_TYPES[6] = {
- "town", "cave", "towr", "cstl", "dung", "scfi"
+class LangConstants {
+protected:
+ const char **_gameNames = NULL;
+ const char **_whoWillActions = NULL;
+ const char **_whoActions = NULL;
+ const char **_directionText = NULL;
+ const char **_directionTextUpper = NULL;
+ const char **_raceNames = NULL;
+ const char **_sexNames = NULL;
+ const char **_alignmentNames = NULL;
+ const char **_skillNames = NULL;
+ const char **_classNames = NULL;
+ const char **_conditionNames = NULL;
+ const char **_depositWithdrawl = NULL;
+ const char **_statNames = NULL;
+ const char **_whereNames = NULL;
+ const char **_consumableNames = NULL;
+ const char **_weekDayStrings = NULL;
+ const char **_ratingText = NULL;
+ const char **_bonusNames = NULL;
+ const char **_weaponNames = NULL;
+ const char **_armorNames = NULL;
+ const char **_accessoryNames = NULL;
+ const char **_miscNames = NULL;
+ const char **_elementalNames = NULL;
+ const char **_specialNames = NULL;
+ const char **_attributeNames = NULL;
+ const char **_effectivenessNames = NULL;
+ const char **_questItemNamesSwords = NULL;
+ const char **_questItemNames = NULL;
+ const char **_categoryNames = NULL;
+ const char **_itemActions = NULL;
+ const char **_categoryBackpackIsFull = NULL;
+ const char **_fixIdentify = NULL;
+ const char **_removeDelete = NULL;
+ const char **_spellCastComponents = NULL;
+ const char **_monsterSpecialAttacks = NULL;
+ const char **_quickFightOptions = NULL;
+ const char **_goober = NULL;
+ const char **_worldEndText = NULL;
+ const char **_days = NULL;
+ const char **_sellXForYGoldEndings = NULL;
+
+
+public:
+ virtual const char *CLOUDS_CREDITS() = 0;
+ virtual const char *DARK_SIDE_CREDITS() = 0;
+ virtual const char *SWORDS_CREDITS1() = 0;
+ virtual const char *SWORDS_CREDITS2() = 0;
+ virtual const char *OPTIONS_MENU() = 0;
+ virtual const char **GAME_NAMES() = 0;
+ virtual const char *THE_PARTY_NEEDS_REST() = 0;
+ virtual const char *WHO_WILL() = 0;
+ virtual const char *HOW_MUCH() = 0;
+ virtual const char *WHATS_THE_PASSWORD() = 0;
+ virtual const char *PASSWORD_INCORRECT() = 0;
+ virtual const char *IN_NO_CONDITION() = 0;
+ virtual const char *NOTHING_HERE() = 0;
+
+ const char *const TERRAIN_TYPES[6] = {
+ "town", "cave", "towr", "cstl", "dung", "scfi"
+ };
+
+ const char *const OUTDOORS_WALL_TYPES[16] = {
+ nullptr, "mount", "ltree", "dtree", "grass", "snotree", "dsnotree",
+ "snomnt", "dedltree", "mount", "lavamnt", "palm", "dmount", "dedltree",
+ "dedltree", "dedltree"
+ };
+
+ const char *const SURFACE_NAMES[16] = {
+ "water.srf", "dirt.srf", "grass.srf", "snow.srf", "swamp.srf",
+ "lava.srf", "desert.srf", "road.srf", "dwater.srf", "tflr.srf",
+ "sky.srf", "croad.srf", "sewer.srf", "cloud.srf", "scortch.srf",
+ "space.srf"
+ };
+
+ virtual const char **WHO_ACTIONS() = 0;
+ virtual const char **WHO_WILL_ACTIONS() = 0;
+
+ const byte SYMBOLS[20][64] = {
+ { // 0
+ 0x00, 0x00, 0xA8, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x00, 0xA8, 0x9E, 0x9C, 0x9C, 0x9E, 0x9E, 0x9E,
+ 0xAC, 0x9C, 0xA4, 0xAC, 0xAC, 0x9A, 0x9A, 0x9A, 0xAC, 0x9E, 0xAC, 0xA8, 0xA8, 0xA6, 0x97, 0x98,
+ 0xAC, 0xA0, 0xAC, 0xAC, 0xA4, 0xA6, 0x98, 0x99, 0x00, 0xAC, 0xA0, 0xA0, 0xA8, 0xAC, 0x9A, 0x9A,
+ 0x00, 0x00, 0xAC, 0xAC, 0xAC, 0xA4, 0x9B, 0x9A, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xA0, 0x9B, 0x9B,
+ },
+ { // 1
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
+ 0x99, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x99, 0x98, 0x98, 0x98, 0x97, 0x97, 0x97, 0x97, 0x97,
+ 0x99, 0x98, 0x98, 0x99, 0x98, 0x98, 0x99, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
+ 0x9A, 0x9B, 0x9B, 0x9C, 0x9B, 0x9A, 0x9C, 0x9A, 0x9B, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x9A, 0x9B,
+ },
+ { // 2
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
+ 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x99, 0x98, 0x98, 0x99, 0x98, 0x98, 0x97, 0x98, 0x98,
+ 0x99, 0x98, 0x98, 0x98, 0x99, 0x99, 0x98, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
+ 0x9B, 0x9B, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9B, 0x99, 0x9A, 0x9B, 0x9B, 0x9A, 0x9A, 0x99, 0x9A,
+ },
+ { // 3
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
+ 0x99, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x98, 0x98, 0x97, 0x97, 0x98, 0x98, 0x98, 0x98,
+ 0x99, 0x99, 0x98, 0x99, 0x98, 0x98, 0x99, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
+ 0x9B, 0x9C, 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0x9C, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x9A,
+ },
+ { // 4
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
+ 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x99, 0x9A, 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
+ 0x99, 0x99, 0x98, 0x99, 0x99, 0x98, 0x98, 0x98, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
+ 0x9A, 0x9C, 0x9B, 0x9B, 0x9C, 0x9B, 0x9B, 0x9B, 0x9A, 0x99, 0x9B, 0x9B, 0x9A, 0x99, 0x9A, 0x9A,
+ },
+ { // 5
+ 0xA4, 0xA4, 0xA8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x9E, 0x9E, 0xA0, 0xA8, 0xAC, 0x00, 0x00,
+ 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9E, 0xAC, 0x00, 0x97, 0x97, 0x97, 0x98, 0x9C, 0x9C, 0xA0, 0xAC,
+ 0x99, 0x98, 0x99, 0x99, 0x99, 0x9B, 0xA0, 0xAC, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9B, 0xA0, 0xAC,
+ 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x9A, 0x9A, 0x9B, 0x9B, 0xA4, 0xAC, 0x00,
+ },
+ { // 6
+ 0x00, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x00, 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x9B, 0x99,
+ 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x98, 0x99, 0x99,
+ 0x00, 0xAC, 0xA0, 0x9C, 0x9C, 0xA0, 0x9C, 0x9A, 0x00, 0x00, 0xAC, 0xA4, 0xA0, 0x99, 0x99, 0x99,
+ 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99,
+ },
+ { // 7
+ 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x9C, 0x99, 0x99,
+ 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x00, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99,
+ 0x00, 0x00, 0xAC, 0xA0, 0x9B, 0xA0, 0x9E, 0x9C, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x9C, 0x99, 0x99,
+ },
+ { // 8
+ 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x9B, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x9C, 0x99, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x9E, 0x9C, 0x99,
+ },
+ { // 9
+ 0x00, 0x00, 0xAC, 0xA4, 0xA0, 0x9C, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x9C, 0xA0, 0x9C, 0x9A,
+ 0xAC, 0xA4, 0x9C, 0x9A, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99,
+ 0x00, 0xAC, 0xA4, 0x9C, 0x9A, 0x9C, 0x99, 0x99, 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x9A, 0x99, 0x99,
+ },
+ { // 10
+ 0x99, 0x99, 0x99, 0x9A, 0xA0, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
+ 0x99, 0x99, 0x9C, 0x9E, 0xA4, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x9C, 0x99, 0x9C, 0xA4, 0xAC, 0x00,
+ 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
+ 0x99, 0x99, 0x99, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x9A, 0x9B, 0x9E, 0x9C, 0x9C, 0xA4, 0xAC, 0x00,
+ },
+ { // 11
+ 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0x9E, 0xAC,
+ 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
+ 0x9C, 0x99, 0x99, 0x99, 0x9C, 0x9C, 0xA4, 0xAC, 0x99, 0x9E, 0x9E, 0x9C, 0x9C, 0xA0, 0xAC, 0x00,
+ },
+ { // 12
+ 0x99, 0x99, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x9B, 0x9C, 0x9E, 0x9C, 0x9C, 0xA4, 0xAC, 0x00,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
+ 0x99, 0x99, 0x99, 0x99, 0x9C, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xA4, 0xAC, 0x00,
+ 0x99, 0x99, 0x9C, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
+ },
+ { // 13
+ 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
+ 0x99, 0x9B, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x9A, 0x99, 0x9C, 0xA0, 0xAC, 0x00,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
+ 0x99, 0x99, 0x99, 0x99, 0x9A, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x9A, 0x9C, 0xA4, 0xAC, 0x00,
+ },
+ { // 14
+ 0x00, 0x00, 0xAC, 0x9E, 0x9C, 0x9C, 0x9C, 0x9B, 0x00, 0xAC, 0x9C, 0xA0, 0x9E, 0xA4, 0xA4, 0xA4,
+ 0xAC, 0x9C, 0xA4, 0xAC, 0xAC, 0xAC, 0x9C, 0x9E, 0xAC, 0xA0, 0xAC, 0xA8, 0x9E, 0xA8, 0xAC, 0x99,
+ 0xAC, 0x9E, 0xAC, 0xA8, 0xAC, 0x9E, 0xA4, 0xAC, 0xAC, 0xA4, 0xA0, 0xAC, 0xAC, 0xA0, 0xA4, 0xAC,
+ 0x00, 0xAC, 0xA4, 0xA0, 0xA0, 0xA4, 0xAC, 0xA4, 0x00, 0x00, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
+ },
+ { // 15
+ 0x9C, 0x9C, 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
+ 0x9E, 0x9E, 0x9E, 0x9C, 0x9E, 0x9E, 0x9E, 0x9E, 0x99, 0x99, 0x99, 0x99, 0x99, 0x98, 0x99, 0x98,
+ 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0x9E, 0x9E, 0xA0,
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
+ },
+ { // 16
+ 0x9B, 0x9B, 0x9B, 0x9B, 0x9C, 0x9B, 0x9C, 0x9C, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
+ 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9E, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
+ 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0xA0, 0xA0, 0xA0, 0x9E, 0xA0, 0x9E, 0x9E, 0xA0,
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
+ },
+ { // 17
+ 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9C, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
+ 0x9E, 0x9E, 0x9E, 0x9C, 0x9C, 0x9C, 0x9E, 0x9E, 0x98, 0x98, 0x98, 0x99, 0x9A, 0x9A, 0x99, 0x98,
+ 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9C, 0xA0, 0x9E, 0x9E, 0xA0, 0xA0, 0xA0, 0xA0, 0x9E,
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
+ },
+ { // 18
+ 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
+ 0x9E, 0x9E, 0x9E, 0x9E, 0x9C, 0x9C, 0x9C, 0x9E, 0x98, 0x98, 0x98, 0x98, 0x9A, 0x9A, 0x98, 0x99,
+ 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9B, 0x9C, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0xA0, 0xA0, 0xA0,
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
+ },
+ { // 19
+ 0x9C, 0x9B, 0x9C, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0x00, 0x00,
+ 0x9E, 0x9E, 0x9C, 0x9C, 0x9E, 0xA0, 0xAC, 0x00, 0x99, 0x98, 0x98, 0x99, 0x9A, 0x9A, 0xA0, 0xAC,
+ 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0xA0, 0xAC, 0xA0, 0xA0, 0x9E, 0xA0, 0xA0, 0xA0, 0xA0, 0xAC,
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0x00, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0x00, 0x00,
+ }
+ };
+
+ const byte TEXT_COLORS[40][4] = {
+ {0x00, 0x19, 0x19, 0x19},
+ {0x00, 0x08, 0x08, 0x08},
+ {0x00, 0x0F, 0x0F, 0x0F},
+ {0x00, 0x15, 0x15, 0x15},
+ {0x00, 0x01, 0x01, 0x01},
+ {0x00, 0x21, 0x21, 0x21},
+ {0x00, 0x26, 0x26, 0x26},
+ {0x00, 0x2B, 0x2B, 0x2B},
+ {0x00, 0x31, 0x31, 0x31},
+ {0x00, 0x36, 0x36, 0x36},
+ {0x00, 0x3D, 0x3D, 0x3D},
+ {0x00, 0x41, 0x41, 0x41},
+ {0x00, 0x46, 0x46, 0x46},
+ {0x00, 0x4C, 0x4C, 0x4C},
+ {0x00, 0x50, 0x50, 0x50},
+ {0x00, 0x55, 0x55, 0x55},
+ {0x00, 0x5D, 0x5D, 0x5D},
+ {0x00, 0x60, 0x60, 0x60},
+ {0x00, 0x65, 0x65, 0x65},
+ {0x00, 0x6C, 0x6C, 0x6C},
+ {0x00, 0x70, 0x70, 0x70},
+ {0x00, 0x75, 0x75, 0x75},
+ {0x00, 0x7B, 0x7B, 0x7B},
+ {0x00, 0x80, 0x80, 0x80},
+ {0x00, 0x85, 0x85, 0x85},
+ {0x00, 0x8D, 0x8D, 0x8D},
+ {0x00, 0x90, 0x90, 0x90},
+ {0x00, 0x97, 0x97, 0x97},
+ {0x00, 0x9D, 0x9D, 0x9D},
+ {0x00, 0xA4, 0xA4, 0xA4},
+ {0x00, 0xAB, 0xAB, 0xAB},
+ {0x00, 0xB0, 0xB0, 0xB0},
+ {0x00, 0xB6, 0xB6, 0xB6},
+ {0x00, 0xBD, 0xBD, 0xBD},
+ {0x00, 0xC0, 0xC0, 0xC0},
+ {0x00, 0xC6, 0xC6, 0xC6},
+ {0x00, 0xCD, 0xCD, 0xCD},
+ {0x00, 0xD0, 0xD0, 0xD0},
+ {0x00, 0xD6, 0xD6, 0xD6},
+ {0x00, 0xDB, 0xDB, 0xDB},
+ };
+
+ const byte TEXT_COLORS_STARTUP[40][4] = {
+ {0x00, 0x19, 0x19, 0x19},
+ {0x00, 0x08, 0x08, 0x08},
+ {0x00, 0x0F, 0x0F, 0x0F},
+ {0x00, 0x15, 0x15, 0x15},
+ {0x00, 0x01, 0x01, 0x01},
+ {0x00, 0x1F, 0x1F, 0x1F},
+ {0x00, 0x26, 0x26, 0x26},
+ {0x00, 0x2B, 0x2B, 0x2B},
+ {0x00, 0x31, 0x31, 0x31},
+ {0x00, 0x36, 0x36, 0x36},
+ {0x00, 0x3D, 0x3D, 0x3D},
+ {0x00, 0x42, 0x42, 0x42},
+ {0x00, 0x46, 0x46, 0x46},
+ {0x00, 0x4C, 0x4C, 0x4C},
+ {0x00, 0x50, 0x50, 0x50},
+ {0x00, 0x55, 0x55, 0x55},
+ {0x00, 0x5D, 0x5D, 0x5D},
+ {0x00, 0x60, 0x60, 0x60},
+ {0x00, 0x65, 0x65, 0x65},
+ {0x00, 0x6C, 0x6C, 0x6C},
+ {0x00, 0x70, 0x70, 0x70},
+ {0x00, 0x75, 0x75, 0x75},
+ {0x00, 0x7B, 0x7B, 0x7B},
+ {0x00, 0x80, 0x80, 0x80},
+ {0x00, 0x85, 0x85, 0x85},
+ {0x00, 0x8D, 0x8D, 0x8D},
+ {0x00, 0x90, 0x90, 0x90},
+ {0x00, 0x97, 0x97, 0x97},
+ {0x00, 0x9D, 0x9D, 0x9D},
+ {0x00, 0xA4, 0xA4, 0xA4},
+ {0x00, 0xAB, 0xAB, 0xAB},
+ {0x00, 0xB0, 0xB0, 0xB0},
+ {0x00, 0xB6, 0xB6, 0xB6},
+ {0x00, 0xBD, 0xBD, 0xBD},
+ {0x00, 0xC0, 0xC0, 0xC0},
+ {0x00, 0xC6, 0xC6, 0xC6},
+ {0x00, 0xCD, 0xCD, 0xCD},
+ {0x00, 0xD0, 0xD0, 0xD0},
+ {0x00, 0x19, 0x19, 0x19},
+ {0x00, 0x31, 0x31, 0x31}
+ };
+
+ virtual const char **DIRECTION_TEXT_UPPER() = 0;
+ virtual const char **DIRECTION_TEXT() = 0;
+ virtual const char **RACE_NAMES() = 0;
+
+ const int RACE_HP_BONUSES[5] = {0, -2, 1, -1, 2};
+
+ const int RACE_SP_BONUSES[5][2] = {
+ {0, 0}, {2, 0}, {-1, -1}, {1, 1}, {-2, -2}
+ };
+
+ virtual const char **ALIGNMENT_NAMES() = 0;
+ virtual const char **SEX_NAMES() = 0;
+ virtual const char **SKILL_NAMES() = 0;
+ virtual const char **CLASS_NAMES() = 0;
+
+ const int CLASS_EXP_LEVELS[10] = {
+ 1500, 2000, 2000, 1500, 2000, 1000, 1500, 1500, 1500, 2000
+ };
+
+ virtual const char **CONDITION_NAMES() = 0;
+
+ const int CONDITION_COLORS[17] = {
+ 9, 9, 9, 9, 9, 9, 9, 9, 32, 32, 32, 32, 6, 6, 6, 6, 15
+ };
+
+ virtual const char *GOOD() = 0;
+ virtual const char *BLESSED() = 0;
+ virtual const char *POWER_SHIELD() = 0;
+ virtual const char *HOLY_BONUS() = 0;
+ virtual const char *HEROISM() = 0;
+ virtual const char *IN_PARTY() = 0;
+ virtual const char *PARTY_DETAILS() = 0;
+ virtual const char *PARTY_DIALOG_TEXT() = 0;
+
+ const int FACE_CONDITION_FRAMES[17] = {
+ 2, 2, 2, 1, 1, 4, 4, 4, 3, 2, 4, 3, 3, 5, 6, 7, 0
+ };
+
+ const int CHAR_FACES_X[6] = {10, 45, 81, 117, 153, 189};
+
+ const int HP_BARS_X[6] = {13, 50, 86, 122, 158, 194};
+
+ virtual const char *NO_ONE_TO_ADVENTURE_WITH() = 0;
+ virtual const char *YOUR_ROSTER_IS_FULL() = 0;
+
+ const byte DARKNESS_XLAT[3][256] = {
+ {
+ 0, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 44, 45, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 108, 109, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 124, 125, 126, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 140, 141, 142, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 168, 169, 170, 171, 172, 173, 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 188, 189, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 204, 205, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 220, 221, 222, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ }, {
+ 0, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
+ 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0,
+ 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0,
+ 104, 105, 106, 107, 108, 109, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0,
+ 120, 121, 122, 123, 124, 125, 126, 127, 0, 0, 0, 0, 0, 0, 0, 0,
+ 136, 137, 138, 139, 140, 141, 142, 143, 0, 0, 0, 0, 0, 0, 0, 0,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 184, 185, 186, 187, 188, 189, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0,
+ 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0,
+ 216, 217, 218, 219, 220, 221, 222, 223, 0, 0, 0, 0, 0, 0, 0, 0,
+ 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 0,
+ 248, 249, 250, 251, 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, 0, 0
+ }, {
+ 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, 0,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, 0,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 0, 0, 0, 0,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 0, 0, 0, 0,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 0, 0, 0, 0,
+ 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 0, 0, 0, 0,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 0, 0, 0, 0,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, 0,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 0, 0, 0
+ }
+ };
+
+ virtual const char *PLEASE_WAIT() = 0;
+ virtual const char *OOPS() = 0;
+
+ const int SCREEN_POSITIONING_X[4][48] = {
+ {
+ -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, -2, -1,
+ -1, 0, 0, 0, 1, 1, 2, -4, -3, -3, -2, -2,
+ -1, -1, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4,
+ -3, -2, -1, 0, 0, 1, 2, 3, -4, 4, 0, 0
+ }, {
+ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 1
+ }, {
+ 1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 2, 1,
+ 1, 0, 0, 0, -1, -1, -2, 4, 3, 3, 2, 2,
+ 1, 1, 0, 0, 0, -1, -1, -2, -2, -3, -3, -4,
+ 3, 2, 1, 0, 0, -1, -2, -3, 4, -4, 0, 0
+ }, {
+ 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3,
+ -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
+ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, -1
+ }
+ };
+
+ const int SCREEN_POSITIONING_Y[4][48] = {
+ {
+ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 1
+ }, {
+ 1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 2, 1,
+ 1, 0, 0, 0, -1, -1, -2, 4, 3, 3, 2, 2,
+ 1, 1, 0, 0, 0, -1, -1, -2, -2, -3, -3, -4,
+ 3, 2, 1, 0, 0, -1, -2, -3, 4, -4, 0, 0
+ }, {
+ 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3,
+ -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
+ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, -1
+ }, {
+ -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, -2, -1,
+ -1, 0, 0, 0, 1, 1, 2, -4, -3, -3, -2, -2,
+ -1, -1, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4,
+ -3, -2, -1, 0, 0, 1, 2, 3, -4, 4, 0, 0
+ }
+ };
+
+ const int MONSTER_GRID_BITMASK[12] = {
+ 0xC, 8, 4, 0, 0xF, 0xF000, 0xF00, 0xF0, 0xF00, 0xF0, 0x0F, 0xF000
+ };
+
+ const int INDOOR_OBJECT_X[2][12] = {
+ { -5, -7, -112, 98, -8, -65, 49, -9, -34, 16, -58, 40 },
+ { -35, -35, -142, 68, -35, -95, 19, -35, -62, -14, -98, 16 }
+ };
+
+ const int MAP_OBJECT_Y[2][12] = {
+ { 2, 25, 25, 25, 50, 50, 50, 58, 58, 58, 58, 58 },
+ { -65, -6, -6, -6, 36, 36, 36, 54, 54, 54, 54, 54 }
+ };
+
+ const int INDOOR_MONSTERS_Y[4] = { 2, 34, 53, 59 };
+
+ const int OUTDOOR_OBJECT_X[2][12] = {
+ { -5, -7, -112, 98, -8, -77, 61, -9, -43, 25, -74, 56 },
+ { -35, -35, -142, 68, -35, -95, 19, -35, -62, -24, -98, 16 }
+ };
+
+ const int OUTDOOR_MONSTER_INDEXES[26] = {
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 69, 70,
+ 71, 72, 73, 74, 75, 90, 91, 92, 93, 94, 112, 115, 118
+ };
+
+ const int OUTDOOR_MONSTERS_Y[26] = {
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 53, 53,
+ 53, 53, 53, 53, 53, 34, 34, 34, 34, 34, 2, 2, 2
+ };
+
+ const int DIRECTION_ANIM_POSITIONS[4][4] = {
+ { 0, 1, 2, 3 }, { 3, 0, 1, 2 }, { 2, 3, 0, 1 }, { 1, 2, 3, 0 }
+ };
+
+ const byte WALL_SHIFTS[4][48] = {
+ {
+ 12, 0, 12, 8, 12, 12, 0, 12, 8, 12, 12, 0,
+ 12, 0, 12, 8, 12, 8, 12, 12, 0, 12, 0, 12,
+ 0, 12, 0, 12, 8, 12, 8, 12, 8, 12, 8, 12,
+ 0, 0, 0, 0, 8, 8, 8, 8, 0, 0, 4, 4
+ }, {
+ 8, 12, 8, 4, 8, 8, 12, 8, 4, 8, 8, 12,
+ 8, 12, 8, 4, 8, 4, 8, 8, 12, 8, 12, 8,
+ 12, 8, 12, 8, 4, 8, 4, 8, 4, 8, 4, 8,
+ 12, 12, 12, 12, 4, 4, 4, 4, 0, 0, 0, 0
+ }, {
+ 4, 8, 4, 0, 4, 4, 8, 4, 0, 4, 4, 8,
+ 4, 8, 4, 0, 4, 0, 4, 4, 8, 4, 8, 4,
+ 8, 4, 8, 4, 0, 4, 0, 4, 0, 4, 0, 4,
+ 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 12, 12
+ }, {
+ 0, 4, 0, 12, 0, 0, 4, 0, 12, 0, 0, 4,
+ 0, 4, 0, 12, 0, 12, 0, 0, 4, 0, 4, 0,
+ 4, 0, 4, 0, 12, 0, 12, 0, 12, 0, 12, 0,
+ 4, 4, 4, 4, 12, 12, 12, 12, 0, 0, 8, 8
+ }
+ };
+
+ const int DRAW_NUMBERS[25] = {
+ 36, 37, 38, 43, 42, 41,
+ 39, 20, 22, 24, 33, 31,
+ 29, 26, 10, 11, 18, 16,
+ 13, 5, 9, 6, 0, 4, 1
+ };
+
+ const int DRAW_FRAMES[25][2] = {
+ { 18, 24 }, { 19, 23 }, { 20, 22 }, { 24, 18 }, { 23, 19 }, { 22, 20 },
+ { 21, 21 }, { 11, 17 }, { 12, 16 }, { 13, 15 }, { 17, 11 }, { 16, 12 },
+ { 15, 13 }, { 14, 14 }, { 6, 10 }, { 7, 9 }, { 10, 6 }, { 9, 7 },
+ { 8, 8 }, { 3, 5 }, { 5, 3 }, { 4, 4 }, { 0, 2 }, { 2, 0 },
+ { 1, 1 }
+ };
+
+ const int COMBAT_FLOAT_X[8] = { -2, -1, 0, 1, 2, 1, 0, -1 };
+
+ const int COMBAT_FLOAT_Y[8] = { -2, 0, 2, 0, -1, 0, 2, 0 };
+
+ const int MONSTER_EFFECT_FLAGS[15][8] = {
+ { 0x104, 0x105, 0x106, 0x107, 0x108, 0x109, 0x10A, 0x10B },
+ { 0x10C, 0x10D, 0x10E, 0x10F, 0x0, 0x0, 0x0, 0x0 },
+ { 0x110, 0x111, 0x112, 0x113, 0x0, 0x0, 0x0, 0x0 },
+ { 0x114, 0x115, 0x116, 0x117, 0x0, 0x0, 0x0, 0x0 },
+ { 0x200, 0x201, 0x202, 0x203, 0x0, 0x0, 0x0, 0x0 },
+ { 0x300, 0x301, 0x302, 0x303, 0x400, 0x401, 0x402, 0x403 },
+ { 0x500, 0x501, 0x502, 0x503, 0x0, 0x0, 0x0, 0x0 },
+ { 0x600, 0x601, 0x602, 0x603, 0x0, 0x0, 0x0, 0x0 },
+ { 0x604, 0x605, 0x606, 0x607, 0x608, 0x609, 0x60A, 0x60B },
+ { 0x60C, 0x60D, 0x60E, 0x60F, 0x0, 0x0, 0x0, 0x0 },
+ { 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100 },
+ { 0x101, 0x101, 0x101, 0x101, 0x101, 0x101, 0x101, 0x101 },
+ { 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102 },
+ { 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103 },
+ { 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108 }
+ };
+
+ const int SPELLS_ALLOWED[3][40] = {
+ {
+ 0, 1, 2, 3, 5, 6, 7, 8, 9, 10,
+ 12, 14, 16, 23, 26, 27, 28, 30, 31, 32,
+ 33, 42, 46, 48, 49, 50, 52, 55, 56, 58,
+ 59, 62, 64, 65, 67, 68, 71, 73, 74, 76
+ }, {
+ 1, 4, 11, 13, 15, 17, 18, 19, 20, 21,
+ 22, 24, 25, 29, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 47, 51, 53, 54,
+ 57, 60, 61, 63, 66, 69, 70, 72, 75, 76
+ }, {
+ 0, 1, 2, 3, 4, 5, 7, 9, 10, 20,
+ 25, 26, 27, 28, 30, 31, 34, 38, 40, 41,
+ 42, 43, 44, 45, 49, 50, 52, 53, 55, 59,
+ 60, 61, 62, 67, 68, 72, 73, 74, 75, 76
+ }
+ };
+
+ const int BASE_HP_BY_CLASS[10] = { 10, 8, 7, 5, 4, 8, 7, 12, 6, 9 };
+
+ const int AGE_RANGES[10] = { 1, 6, 11, 18, 36, 51, 76, 101, 201, 0xffff };
+
+ const int AGE_RANGES_ADJUST[2][10] = {
+ { -250, -50, -20, -10, 0, -2, -5, -10, -20, -50 },
+ { -250, -50, -20, -10, 0, 2, 5, 10, 20, 50 }
+ };
+
+ const int STAT_VALUES[24] = {
+ 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 25, 30, 35, 40,
+ 50, 75, 100, 125, 150, 175, 200, 225, 250, 65535
+ };
+
+ const int STAT_BONUSES[24] = {
+ -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20
+ };
+
+ const int ELEMENTAL_CATEGORIES[6] = { 8, 15, 20, 25, 33, 36 };
+
+ const int ATTRIBUTE_CATEGORIES[10] = {
+ 9, 17, 25, 33, 39, 45, 50, 56, 61, 72
+ };
+
+ const int ATTRIBUTE_BONUSES[72] = {
+ 2, 3, 5, 8, 12, 17, 23, 30, 38, 47, // Might bonus
+ 2, 3, 5, 8, 12, 17, 23, 30, // INT bonus
+ 2, 3, 5, 8, 12, 17, 23, 30, // PER bonus
+ 2, 3, 5, 8, 12, 17, 23, 30, // SPD bonus
+ 3, 5, 10, 15, 20, 30, // ACC bonus
+ 5, 10, 15, 20, 25, 30, // LUC bonus
+ 4, 6, 10, 20, 50, // HP bonus
+ 4, 8, 12, 16, 20, 25, // SP bonus
+ 2, 4, 6, 10, 16, // AC bonus
+ 4, 6, 8, 10, 12, 14, 16, 18, 20, 25 // Thievery bonus
+ };
+
+ const int ELEMENTAL_RESISTENCES[37] = {
+ 0, 5, 7, 9, 12, 15, 20, 25, 30, 5, 7, 9, 12, 15, 20, 25,
+ 5, 10, 15, 20, 25, 10, 15, 20, 25, 40, 5, 7, 9, 11, 13, 15, 20, 25,
+ 5, 10, 20
+ };
+
+ const int ELEMENTAL_DAMAGE[37] = {
+ 0, 2, 3, 4, 5, 10, 15, 20, 30, 2, 3, 4, 5, 10, 15, 20, 2, 4, 5, 10, 20,
+ 2, 4, 8, 16, 32, 2, 3, 4, 5, 10, 15, 20, 30, 5, 10, 25
+ };
+
+ const int WEAPON_DAMAGE_BASE[35] = {
+ 0, 3, 2, 3, 2, 2, 4, 1, 2, 4, 2, 3,
+ 2, 2, 1, 1, 1, 1, 4, 4, 3, 2, 4, 2,
+ 2, 2, 5, 3, 3, 3, 3, 5, 4, 2, 6
+ };
+
+ const int WEAPON_DAMAGE_MULTIPLIER[35] = {
+ 0, 3, 3, 4, 5, 4, 2, 3, 3, 3, 3, 3,
+ 2, 4, 10, 6, 8, 9, 4, 3, 6, 8, 5, 6,
+ 4, 5, 3, 5, 6, 7, 2, 2, 2, 2, 4
+ };
+
+ const int METAL_DAMAGE[22] = {
+ -3, -6, -4, -2, 2, 4, 6, 8, 10, 0, 1,
+ 1, 2, 2, 3, 4, 5, 12, 15, 20, 30, 50
+ };
+
+ const int METAL_DAMAGE_PERCENT[22] = {
+ 253, 252, 3, 2, 1, 2, 3, 4, 6, 0, 1,
+ 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10
+ };
+
+ const int METAL_LAC[22] = {
+ -3, 0, -2, -1, 1, 2, 4, 6, 8, 0, 1,
+ 1, 2, 2, 3, 4, 5, 10, 12, 14, 16, 20
+ };
+
+ const int ARMOR_STRENGTHS[14] = { 0, 2, 4, 5, 6, 7, 8, 10, 4, 2, 1, 1, 1, 1 };
+
+ const int MAKE_ITEM_ARR1[6] = { 0, 8, 15, 20, 25, 33 };
+
+ const int MAKE_ITEM_ARR2[6][7][2] = {
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 6, 7 }, { 7, 7 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 5 }, { 5, 5 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
+ { { 0, 0 }, { 1, 1 }, { 1, 1 }, { 1, 2 }, { 2, 2 }, { 2, 3 }, { 3, 3 } }
+ };
+
+ const int MAKE_ITEM_ARR3[10][7][2] = {
+ { { 0, 0 }, { 1, 4 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 6, 10 }, { 10, 10 } },
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 6 }, { 6, 6 } },
+ { { 0, 0 }, { 1, 2 }, { 2, 3 }, { 3, 4 }, { 4, 5 }, { 5, 6 }, { 6, 6 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 6 }, { 6, 6 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 4 }, { 3, 6 }, { 5, 8 }, { 7, 10 }, { 10, 10 } }
+ };
+
+ const int MAKE_ITEM_ARR4[2][7][2] = {
+ { { 0, 0 }, { 1, 4 }, { 3, 7 }, { 4, 8 }, { 5, 9 }, { 8, 9 }, { 9, 9 } },
+ { { 0, 0 }, { 1, 4 }, { 2, 6 }, { 4, 7 }, { 6, 10 }, { 9, 13 }, { 13, 13 } }
+ };
+
+ const int MAKE_ITEM_ARR5[8][2] = {
+ { 0, 0 }, { 1, 15 }, { 16, 30 }, { 31, 40 }, { 41, 50 },
+ { 51, 60 }, { 61, 73 }, { 61, 73 }
+ };
+
+ const int OUTDOOR_DRAWSTRUCT_INDEXES[44] = {
+ 37, 38, 39, 40, 41, 44, 42, 43, 47, 45, 46,
+ 48, 49, 52, 50, 51, 66, 67, 68, 69, 70, 71,
+ 72, 75, 73, 74, 87, 88, 89, 90, 91, 94, 92,
+ 93, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120
+ };
+
+ const int TOWN_MAXES[2][11] = {
+ { 23, 13, 32, 16, 26, 16, 16, 16, 16, 16, 16 },
+ { 26, 19, 48, 27, 26, 37, 16, 16, 16, 16, 16 }
+ };
+
+ const char *const TOWN_ACTION_MUSIC[2][7] = {
+ { "bank.m", "smith.m", "guild.m", "tavern.m",
+ "temple.m", "grounds.m", "endgame.m" },
+ { "bank.m", "sf09.m", "guild.m", "tavern.m",
+ "temple.m", "smith.m", "endgame.m" }
+ };
+
+ const char *const TOWN_ACTION_SHAPES[7] = {
+ "bnkr", "blck", "gild", "tvrn", "tmpl", "trng", "eface08"
+ };
+
+ const int TOWN_ACTION_FILES[2][7] = {
+ { 3, 2, 4, 2, 4, 2, 1 }, { 5, 3, 7, 5, 4, 6, 1 }
+ };
+
+ virtual const char *BANK_TEXT() = 0;
+ virtual const char *BLACKSMITH_TEXT() = 0;
+ virtual const char *GUILD_NOT_MEMBER_TEXT() = 0;
+ virtual const char *GUILD_TEXT() = 0;
+ virtual const char *TAVERN_TEXT() = 0;
+ virtual const char *FOOD_AND_DRINK() = 0;
+ virtual const char *GOOD_STUFF() = 0;
+ virtual const char *HAVE_A_DRINK() = 0;
+ virtual const char *YOURE_DRUNK() = 0;
+
+ const int TAVERN_EXIT_LIST[2][6][5][2] = {
+ {
+ { { 21, 17 }, { 0, 0 }, { 20, 3 }, { 0, 0 }, { 0, 0 } },
+ { { 13, 4 }, { 0, 0 }, { 19, 9 }, { 0, 0 }, { 0, 0 } },
+ { { 20, 10 }, { 12, 8 }, { 5, 26 }, { 3, 4 }, { 7, 5 } },
+ { { 18, 4 }, { 0, 0 }, { 19, 16 }, { 0, 0 }, { 11, 12 } },
+ { { 15, 21 }, { 0, 0 }, { 13, 21 }, { 0, 0 }, { 0, 0 } },
+ { { 10, 8 }, { 0, 0 }, { 15, 12 }, { 0, 0 }, { 0, 0 } },
+ }, {
+ { { 21, 17 }, { 0, 0 }, { 20, 3 }, { 0, 0 }, { 0, 0 } },
+ { { 13, 4 }, { 0, 0 }, { 19, 9 }, { 0, 0 }, { 0, 0 } },
+ { { 20, 10 }, { 12, 8 }, { 5, 26 }, { 3, 4 }, { 7, 5 } },
+ { { 17, 24 }, { 14, 13 }, { 0, 0 }, { 0, 0 }, { 9, 4 } },
+ { { 15, 21 }, { 0, 0 }, { 13, 21 }, { 0, 0 }, { 0, 0 } },
+ { { 10, 8 }, { 0, 0 }, { 15, 12 }, { 0, 0 }, { 0, 0 } }
+ }
+ };
+
+ virtual const char *TEMPLE_TEXT() = 0;
+ virtual const char *EXPERIENCE_FOR_LEVEL() = 0;
+ virtual const char *TRAINING_LEARNED_ALL() = 0;
+ virtual const char *ELIGIBLE_FOR_LEVEL() = 0;
+ virtual const char *TRAINING_TEXT() = 0;
+ virtual const char *GOLD_GEMS() = 0;
+ virtual const char *GOLD_GEMS_2() = 0;
+ virtual const char **DEPOSIT_WITHDRAWL() = 0;
+ virtual const char *NOT_ENOUGH_X_IN_THE_Y() = 0;
+ virtual const char *NO_X_IN_THE_Y() = 0;
+ virtual const char **STAT_NAMES() = 0;
+ virtual const char **CONSUMABLE_NAMES() = 0;
+ virtual const char **WHERE_NAMES() = 0;
+ virtual const char *AMOUNT() = 0;
+ virtual const char *FOOD_PACKS_FULL() = 0;
+ virtual const char *BUY_SPELLS() = 0;
+ virtual const char *GUILD_OPTIONS() = 0;
+
+ const int MISC_SPELL_INDEX[74] = {
+ NO_SPELL, MS_Light, MS_Awaken, MS_MagicArrow,
+ MS_FirstAid, MS_FlyingFist, MS_EnergyBlast, MS_Sleep,
+ MS_Revitalize, MS_CureWounds, MS_Sparks, MS_Shrapmetal,
+ MS_InsectSpray, MS_ToxicCloud, MS_ProtFromElements, MS_Pain,
+ MS_Jump, MS_BeastMaster, MS_Clairvoyance, MS_TurnUndead,
+ MS_Levitate, MS_WizardEye, MS_Bless, MS_IdentifyMonster,
+ MS_LightningBolt, MS_HolyBonus, MS_PowerCure, MS_NaturesCure,
+ MS_LloydsBeacon, MS_PowerShield, MS_Heroism, MS_Hynotize,
+ MS_WalkOnWater, MS_FrostBite, MS_DetectMonster, MS_Fireball,
+ MS_ColdRay, MS_CurePoison, MS_AcidSpray, MS_TimeDistortion,
+ MS_DragonSleep, MS_CureDisease, MS_Teleport, MS_FingerOfDeath,
+ MS_CureParalysis, MS_GolemStopper, MS_PoisonVolley, MS_DeadlySwarm,
+ MS_SuperShelter, MS_DayOfProtection, MS_DayOfSorcery, MS_CreateFood,
+ MS_FieryFlail, MS_RechargeItem, MS_FantasticFreeze, MS_TownPortal,
+ MS_StoneToFlesh, MS_RaiseDead, MS_Etheralize, MS_DancingSword,
+ MS_MoonRay, MS_MassDistortion, MS_PrismaticLight, MS_EnchantItem,
+ MS_Incinerate, MS_HolyWord, MS_Resurrection, MS_ElementalStorm,
+ MS_MegaVolts, MS_Inferno, MS_SunRay, MS_Implosion,
+ MS_StarBurst, MS_DivineIntervention
+ };
+
+ const int SPELL_COSTS[77] = {
+ 8, 1, 5, -2, 5, -2, 20, 10, 12, 8, 3,
+ - 3, 75, 40, 12, 6, 200, 10, 100, 30, -1, 30,
+ 15, 25, 10, -2, 1, 2, 7, 20, -2, -2, 100,
+ 15, 5, 100, 35, 75, 5, 20, 4, 5, 1, -2,
+ 6, 2, 75, 40, 60, 6, 4, 25, -2, -2, 60,
+ - 1, 50, 15, 125, 2, -1, 3, -1, 200, 35, 150,
+ 15, 5, 4, 10, 8, 30, 4, 5, 7, 5, 0
+ };
+
+ const int DARK_SPELL_RANGES[12][2] = {
+ { 0, 20 }, { 16, 35 }, { 27, 37 }, { 29, 39 },
+ { 0, 17 }, { 14, 34 }, { 26, 37 }, { 29, 39 },
+ { 0, 20 }, { 16, 35 }, { 27, 37 }, { 29, 39 }
+ };
+
+ const int SWORDS_SPELL_RANGES[12][2] = {
+ { 0, 20 },{ 16, 35 },{ 27, 39 },{ 29, 39 },
+ { 0, 17 },{ 14, 34 },{ 26, 39 },{ 29, 39 },
+ { 0, 20 },{ 16, 35 },{ 27, 39 },{ 29, 39 }
+ };
+
+ const int CLOUDS_GUILD_SPELLS[5][20] = {
+ {
+ 1, 10, 20, 26, 27, 38, 40, 42, 45, 50,
+ 55, 59, 60, 61, 62, 68, 72, 75, 77, 77
+ }, {
+ 3, 4, 5, 14, 15, 25, 30, 31, 34, 41,
+ 49, 51, 53, 67, 73, 75, -1, -1, -1, -1
+ }, {
+ 4, 8, 9, 12, 13, 22, 23, 24, 28, 34,
+ 41, 44, 52, 70, 73, 74, -1, -1, -1, -1
+ }, {
+ 6, 7, 9, 11, 12, 13, 17, 21, 22, 24,
+ 29, 36, 56, 58, 64, 71, -1, -1, -1, -1
+ }, {
+ 6, 7, 9, 11, 12, 13, 18, 21, 29, 32,
+ 36, 37, 46, 51, 56, 58, 69, -1, -1, -1
+ }
+ };
+
+ const int DARK_SPELL_OFFSETS[3][39] = {
+ {
+ 42, 1, 26, 59, 27, 10, 50, 68, 55, 62, 67, 73, 2,
+ 5, 3, 31, 30, 52, 49, 28, 74, 0, 9, 7, 14, 8,
+ 33, 6, 23, 71, 64, 56, 48, 46, 12, 32, 58, 65, 16
+ }, {
+ 42, 1, 45, 61, 72, 40, 20, 60, 38, 41, 75, 34, 4,
+ 43, 25, 53, 44, 15, 70, 17, 24, 69, 22, 66, 57, 11,
+ 29, 39, 51, 21, 19, 36, 47, 13, 54, 37, 18, 35, 63
+ }, {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38
+ }
+ };
+
+ const int SPELL_GEM_COST[77] = {
+ 0, 0, 2, 1, 2, 4, 5, 0, 0, 0, 0, 10, 10, 10, 0, 0, 20, 4, 10, 20, 1, 10,
+ 5, 5, 4, 2, 0, 0, 0, 10, 3, 1, 20, 4, 0, 20, 10, 10, 1, 10, 0, 0, 0, 2,
+ 2, 0, 10, 10, 10, 0, 0, 10, 3, 2, 10, 1, 10, 10, 20, 0, 0, 1, 1, 20, 5, 20,
+ 5, 0, 0, 0, 0, 5, 1, 2, 0, 2, 0
+ };
+
+ virtual const char *NOT_A_SPELL_CASTER() = 0;
+ virtual const char *SPELLS_LEARNED_ALL() = 0;
+ virtual const char *SPELLS_FOR() = 0;
+ virtual const char *SPELL_LINES_0_TO_9() = 0;
+ virtual const char *SPELLS_DIALOG_SPELLS() = 0;
+ virtual const char *SPELL_PTS() = 0;
+ virtual const char *GOLD() = 0;
+ virtual const char *SPELL_INFO() = 0;
+ virtual const char *SPELL_PURCHASE() = 0;
+ virtual const char *MAP_TEXT() = 0;
+ virtual const char *LIGHT_COUNT_TEXT() = 0;
+ virtual const char *FIRE_RESISTENCE_TEXT() = 0;
+ virtual const char *ELECRICITY_RESISTENCE_TEXT() = 0;
+ virtual const char *COLD_RESISTENCE_TEXT() = 0;
+ virtual const char *POISON_RESISTENCE_TEXT() = 0;
+ virtual const char *CLAIRVOYANCE_TEXT() = 0;
+ virtual const char *LEVITATE_TEXT() = 0;
+ virtual const char *WALK_ON_WATER_TEXT() = 0;
+ virtual const char *GAME_INFORMATION() = 0;
+ virtual const char *WORLD_GAME_TEXT() = 0;
+ virtual const char *DARKSIDE_GAME_TEXT() = 0;
+ virtual const char *CLOUDS_GAME_TEXT() = 0;
+ virtual const char *SWORDS_GAME_TEXT() = 0;
+ virtual const char **WEEK_DAY_STRINGS() = 0;
+ virtual const char *CHARACTER_DETAILS() = 0;
+ virtual const char **DAYS() = 0;
+ virtual const char *PARTY_GOLD() = 0;
+ virtual const char *PLUS_14() = 0;
+ virtual const char *CHARACTER_TEMPLATE() = 0;
+ virtual const char *EXCHANGING_IN_COMBAT() = 0;
+ virtual const char *CURRENT_MAXIMUM_RATING_TEXT() = 0;
+ virtual const char *CURRENT_MAXIMUM_TEXT() = 0;
+ virtual const char **RATING_TEXT() = 0;
+ virtual const char *AGE_TEXT() = 0;
+ virtual const char *LEVEL_TEXT() = 0;
+ virtual const char *RESISTENCES_TEXT() = 0;
+ virtual const char *NONE() = 0;
+ virtual const char *EXPERIENCE_TEXT() = 0;
+ virtual const char *ELIGIBLE() = 0;
+ virtual const char *IN_PARTY_IN_BANK() = 0;
+ virtual const char *FOOD_TEXT() = 0;
+ virtual const char *EXCHANGE_WITH_WHOM() = 0;
+ virtual const char *QUICK_REF_LINE() = 0;
+ virtual const char *QUICK_REFERENCE() = 0;
+
+ const int BLACKSMITH_MAP_IDS[2][4] = { { 28, 30, 73, 49 }, { 29, 31, 37, 43 } };
+
+ virtual const char *ITEMS_DIALOG_TEXT1() = 0;
+ virtual const char *ITEMS_DIALOG_TEXT2() = 0;
+ virtual const char *ITEMS_DIALOG_LINE1() = 0;
+ virtual const char *ITEMS_DIALOG_LINE2() = 0;
+ virtual const char *BTN_BUY() = 0;
+ virtual const char *BTN_SELL() = 0;
+ virtual const char *BTN_IDENTIFY() = 0;
+ virtual const char *BTN_FIX() = 0;
+ virtual const char *BTN_USE() = 0;
+ virtual const char *BTN_EQUIP() = 0;
+ virtual const char *BTN_REMOVE() = 0;
+ virtual const char *BTN_DISCARD() = 0;
+ virtual const char *BTN_QUEST() = 0;
+ virtual const char *BTN_ENCHANT() = 0;
+ virtual const char *BTN_RECHARGE() = 0;
+ virtual const char *BTN_GOLD() = 0;
+ virtual const char *ITEM_BROKEN() = 0;
+ virtual const char *ITEM_CURSED() = 0;
+ virtual const char *ITEM_OF() = 0;
+ virtual const char **BONUS_NAMES() = 0;
+ virtual const char **WEAPON_NAMES() = 0;
+ virtual const char **ARMOR_NAMES() = 0;
+ virtual const char **ACCESSORY_NAMES() = 0;
+ virtual const char **MISC_NAMES() = 0;
+ virtual const char **SPECIAL_NAMES() = 0;
+ virtual const char **ELEMENTAL_NAMES() = 0;
+ virtual const char **ATTRIBUTE_NAMES() = 0;
+ virtual const char **EFFECTIVENESS_NAMES() = 0;
+ virtual const char **QUEST_ITEM_NAMES() = 0;
+ virtual const char **QUEST_ITEM_NAMES_SWORDS() = 0;
+
+ const int WEAPON_BASE_COSTS[35] = {
+ 0, 50, 15, 100, 80, 40, 60, 1, 10, 150, 30, 60, 8, 50,
+ 100, 15, 30, 15, 200, 80, 250, 150, 400, 100, 40, 120,
+ 300, 100, 200, 300, 25, 100, 50, 15, 0
+ };
+ const int ARMOR_BASE_COSTS[14] = {
+ 0, 20, 100, 200, 400, 600, 1000, 2000, 100, 60, 40, 250, 200, 100
+ };
+ const int ACCESSORY_BASE_COSTS[11] = {
+ 0, 100, 100, 250, 100, 50, 300, 200, 500, 1000, 2000
+ };
+ const int MISC_MATERIAL_COSTS[22] = {
+ 0, 50, 1000, 500, 10, 100, 20, 10, 50, 10, 10, 100,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ };
+ const int MISC_BASE_COSTS[76] = {
+ 0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 300, 300, 300, 300, 300,
+ 300, 300, 300, 300, 300, 400, 400, 400, 400, 400, 400, 400,
+ 400, 400, 400, 500, 500, 500, 500, 500, 500, 500, 500, 500,
+ 500, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600
+ };
+ const int METAL_BASE_MULTIPLIERS[22] = {
+ 10, 25, 5, 75, 2, 5, 10, 20, 50, 2, 3, 5, 10, 20, 30, 40,
+ 50, 60, 70, 80, 90, 100
+ };
+ const int ITEM_SKILL_DIVISORS[4] = { 1, 2, 100, 10 };
+
+ const int RESTRICTION_OFFSETS[4] = { 0, 35, 49, 60 };
+
+ const int ITEM_RESTRICTIONS[86] = {
+ 0, 86, 86, 86, 86, 86, 86, 0, 6, 239, 239, 239, 2, 4, 4, 4, 4,
+ 6, 70, 70, 70, 70, 94, 70, 0, 4, 239, 86, 86, 86, 70, 70, 70, 70,
+ 0, 0, 0, 68, 100, 116, 125, 255, 255, 85, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ };
+
+ virtual const char *NOT_PROFICIENT() = 0;
+ virtual const char *NO_ITEMS_AVAILABLE() = 0;
+ virtual const char **CATEGORY_NAMES() = 0;
+ virtual const char *X_FOR_THE_Y() = 0;
+ virtual const char *X_FOR_Y() = 0;
+ virtual const char *X_FOR_Y_GOLD() = 0;
+ virtual const char *FMT_CHARGES() = 0;
+ virtual const char *AVAILABLE_GOLD_COST() = 0;
+ virtual const char *CHARGES() = 0;
+ virtual const char *COST() = 0;
+ virtual const char **ITEM_ACTIONS() = 0;
+ virtual const char *WHICH_ITEM() = 0;
+ virtual const char *WHATS_YOUR_HURRY() = 0;
+ virtual const char *USE_ITEM_IN_COMBAT() = 0;
+ virtual const char *NO_SPECIAL_ABILITIES() = 0;
+ virtual const char *CANT_CAST_WHILE_ENGAGED() = 0;
+ virtual const char *EQUIPPED_ALL_YOU_CAN() = 0;
+ virtual const char *REMOVE_X_TO_EQUIP_Y() = 0;
+ virtual const char *RING() = 0;
+ virtual const char *MEDAL() = 0;
+ virtual const char *CANNOT_REMOVE_CURSED_ITEM() = 0;
+ virtual const char *CANNOT_DISCARD_CURSED_ITEM() = 0;
+ virtual const char *PERMANENTLY_DISCARD() = 0;
+ virtual const char *BACKPACK_IS_FULL() = 0;
+ virtual const char **CATEGORY_BACKPACK_IS_FULL() = 0;
+ virtual const char *BUY_X_FOR_Y_GOLD() = 0;
+ virtual const char *SELL_X_FOR_Y_GOLD() = 0;
+ virtual const char **SELL_X_FOR_Y_GOLD_ENDINGS() = 0;
+ virtual const char *NO_NEED_OF_THIS() = 0;
+ virtual const char *NOT_RECHARGABLE() = 0;
+ virtual const char *NOT_ENCHANTABLE() = 0;
+ virtual const char *SPELL_FAILED() = 0;
+ virtual const char *ITEM_NOT_BROKEN() = 0;
+ virtual const char **FIX_IDENTIFY() = 0;
+ virtual const char *FIX_IDENTIFY_GOLD() = 0;
+ virtual const char *IDENTIFY_ITEM_MSG() = 0;
+ virtual const char *ITEM_DETAILS() = 0;
+ virtual const char *ALL() = 0;
+ virtual const char *FIELD_NONE() = 0;
+ virtual const char *DAMAGE_X_TO_Y() = 0;
+ virtual const char *ELEMENTAL_XY_DAMAGE() = 0;
+ virtual const char *ATTR_XY_BONUS() = 0;
+ virtual const char *EFFECTIVE_AGAINST() = 0;
+ virtual const char *QUESTS_DIALOG_TEXT() = 0;
+ virtual const char *CLOUDS_OF_XEEN_LINE() = 0;
+ virtual const char *DARKSIDE_OF_XEEN_LINE() = 0;
+ virtual const char *SWORDS_OF_XEEN_LINE() = 0;
+ virtual const char *NO_QUEST_ITEMS() = 0;
+ virtual const char *NO_CURRENT_QUESTS() = 0;
+ virtual const char *NO_AUTO_NOTES() = 0;
+ virtual const char *QUEST_ITEMS_DATA() = 0;
+ virtual const char *CURRENT_QUESTS_DATA() = 0;
+ virtual const char *AUTO_NOTES_DATA() = 0;
+ virtual const char *REST_COMPLETE() = 0;
+ virtual const char *PARTY_IS_STARVING() = 0;
+ virtual const char *HIT_SPELL_POINTS_RESTORED() = 0;
+ virtual const char *TOO_DANGEROUS_TO_REST() = 0;
+ virtual const char *SOME_CHARS_MAY_DIE() = 0;
+ virtual const char *DISMISS_WHOM() = 0;
+ virtual const char *CANT_DISMISS_LAST_CHAR() = 0;
+ virtual const char *DELETE_CHAR_WITH_ELDER_WEAPON() = 0;
+ virtual const char **REMOVE_DELETE() = 0;
+ virtual const char *REMOVE_OR_DELETE_WHICH() = 0;
+ virtual const char *YOUR_PARTY_IS_FULL() = 0;
+ virtual const char *HAS_SLAYER_SWORD() = 0;
+ virtual const char *SURE_TO_DELETE_CHAR() = 0;
+ virtual const char *CREATE_CHAR_DETAILS() = 0;
+ virtual const char *NEW_CHAR_STATS() = 0;
+ virtual const char *NAME_FOR_NEW_CHARACTER() = 0;
+ virtual const char *SELECT_CLASS_BEFORE_SAVING() = 0;
+ virtual const char *EXCHANGE_ATTR_WITH() = 0;
+
+ const int NEW_CHAR_SKILLS[10] = { 1, 5, -1, -1, 4, 0, 0, -1, 6, 11 };
+ const int NEW_CHAR_SKILLS_OFFSET[10] = { 0, 0, 0, 5, 0, 0, 0, 0, 0, 0 };
+ const int NEW_CHAR_SKILLS_LEN[10] = { 11, 8, 0, 0, 12, 8, 8, 0, 9, 11 };
+ const int NEW_CHAR_RACE_SKILLS[10] = { 14, -1, 17, 16, -1, 0, 0, 0, 0, 0 };
+
+ const int RACE_MAGIC_RESISTENCES[5] = { 7, 5, 20, 0, 0 };
+ const int RACE_FIRE_RESISTENCES[5] = { 7, 0, 2, 5, 10 };
+ const int RACE_ELECTRIC_RESISTENCES[5] = { 7, 0, 2, 5, 10 };
+ const int RACE_COLD_RESISTENCES[5] = { 7, 0, 2, 5, 10 };
+ const int RACE_ENERGY_RESISTENCES[5] = { 7, 5, 2, 5, 0 };
+ const int RACE_POISON_RESISTENCES[5] = { 7, 0, 2, 20, 0 };
+ const int NEW_CHARACTER_SPELLS[10][4] = {
+ { -1, -1, -1, -1 },
+ { 21, -1, -1, -1 },
+ { 22, -1, -1, -1 },
+ { 21, 1, 14, -1 },
+ { 22, 0, 25, -1 },
+ { -1, -1, -1, -1 },
+ { -1, -1, -1, -1 },
+ { -1, -1, -1, -1 },
+ { 20, 1, 11, 23 },
+ { 20, 1, -1, -1 }
+ };
+
+ virtual const char *COMBAT_DETAILS() = 0;
+ virtual const char *NOT_ENOUGH_TO_CAST() = 0;
+ virtual const char **SPELL_CAST_COMPONENTS() = 0;
+ virtual const char *CAST_SPELL_DETAILS() = 0;
+ virtual const char *PARTY_FOUND() = 0;
+ virtual const char *BACKPACKS_FULL_PRESS_KEY() = 0;
+ virtual const char *HIT_A_KEY() = 0;
+ virtual const char *GIVE_TREASURE_FORMATTING() = 0;
+ virtual const char *X_FOUND_Y() = 0;
+ virtual const char *ON_WHO() = 0;
+ virtual const char *WHICH_ELEMENT1() = 0;
+ virtual const char *WHICH_ELEMENT2() = 0;
+ virtual const char *DETECT_MONSTERS() = 0;
+ virtual const char *LLOYDS_BEACON() = 0;
+ virtual const char *HOW_MANY_SQUARES() = 0;
+ virtual const char *TOWN_PORTAL() = 0;
+ virtual const char *TOWN_PORTAL_SWORDS() = 0;
+
+ const int TOWN_MAP_NUMBERS[3][5] = {
+ { 28, 29, 30, 31, 32 }, { 29, 31, 33, 35, 37 }, { 53, 92, 63, 0, 0 }
+ };
+
+ virtual const char *MONSTER_DETAILS() = 0;
+ virtual const char **MONSTER_SPECIAL_ATTACKS() = 0;
+ virtual const char *IDENTIFY_MONSTERS() = 0;
+
+ const char *const EVENT_SAMPLES[6] = {
+ "ahh.voc", "whereto.voc", "gulp.voc", "null.voc", "scream.voc", "laff1.voc"
+ };
+
+ virtual const char *MOONS_NOT_ALIGNED() = 0;
+ virtual const char *AWARDS_FOR() = 0;
+ virtual const char *AWARDS_TEXT() = 0;
+ virtual const char *NO_AWARDS() = 0;
+ virtual const char *WARZONE_BATTLE_MASTER() = 0;
+ virtual const char *WARZONE_MAXED() = 0;
+ virtual const char *WARZONE_LEVEL() = 0;
+ virtual const char *WARZONE_HOW_MANY() = 0;
+ virtual const char *PICKS_THE_LOCK() = 0;
+ virtual const char *UNABLE_TO_PICK_LOCK() = 0;
+ virtual const char *CONTROL_PANEL_TEXT() = 0;
+ virtual const char *CONTROL_PANEL_BUTTONS() = 0;
+ virtual const char *ON() = 0;
+ virtual const char *OFF() = 0;
+ virtual const char *CONFIRM_QUIT() = 0;
+ virtual const char *MR_WIZARD() = 0;
+ virtual const char *NO_LOADING_IN_COMBAT() = 0;
+ virtual const char *NO_SAVING_IN_COMBAT() = 0;
+ virtual const char *QUICK_FIGHT_TEXT() = 0;
+ virtual const char **QUICK_FIGHT_OPTIONS() = 0;
+ virtual const char **WORLD_END_TEXT() = 0;
+ virtual const char *WORLD_CONGRATULATIONS() = 0;
+ virtual const char *WORLD_CONGRATULATIONS2() = 0;
+ virtual const char *CLOUDS_CONGRATULATIONS1() = 0;
+ virtual const char *CLOUDS_CONGRATULATIONS2() = 0;
+ virtual const char **GOOBER() = 0;
+
+ const char *const MUSIC_FILES1[5] = {
+ "outdoors.m", "town.m", "cavern.m", "dungeon.m", "castle.m"
+ };
+
+ const char *const MUSIC_FILES2[6][7] = {
+ { "outday1.m", "outday2.m", "outday4.m", "outnght1.m",
+ "outnght2.m", "outnght4.m", "daydesrt.m" },
+ { "townday1.m", "twnwlk.m", "newbrigh.m", "twnnitea.m",
+ "twnniteb.m", "twnwlk.m", "townday1.m" },
+ { "cavern1.m", "cavern2.m", "cavern3a.m", "cavern1.m",
+ "cavern2.m", "cavern3a.m", "cavern1.m" },
+ { "dngon1.m", "dngon2.m", "dngon3.m", "dngon1.m",
+ "dngon2.m", "dngon3.m", "dngon1.m" },
+ { "cstl1rev.m", "cstl2rev.m", "cstl3rev.m", "cstl1rev.m",
+ "cstl2rev.m", "cstl3rev.m", "cstl1rev.m" },
+ { "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m" }
+ };
+
+ virtual const char *DIFFICULTY_TEXT() = 0;
+ virtual const char *SAVE_OFF_LIMITS() = 0;
+ virtual const char *CLOUDS_INTRO1() = 0;
+ virtual const char *DARKSIDE_ENDING1() = 0;
+ virtual const char *DARKSIDE_ENDING2() = 0;
+ virtual const char *PHAROAH_ENDING_TEXT1() = 0;
+ virtual const char *PHAROAH_ENDING_TEXT2() = 0;
+
+ void writeConstants(Common::String num, CCArchive &cc) {
+ Common::MemFile file;
+ file.syncString(CLOUDS_CREDITS());
+ file.syncString(DARK_SIDE_CREDITS());
+ file.syncString(SWORDS_CREDITS1());
+ file.syncString(SWORDS_CREDITS2());
+ file.syncString(OPTIONS_MENU());
+ file.syncStrings(GAME_NAMES(), 3);
+ delete[] _gameNames;
+ _gameNames = NULL;
+ file.syncString(THE_PARTY_NEEDS_REST());
+ file.syncString(WHO_WILL());
+ file.syncString(HOW_MUCH());
+ file.syncString(WHATS_THE_PASSWORD());
+ file.syncString(PASSWORD_INCORRECT());
+ file.syncString(IN_NO_CONDITION());
+ file.syncString(NOTHING_HERE());
+ file.syncStrings(TERRAIN_TYPES, 6);
+ file.syncStrings(OUTDOORS_WALL_TYPES, 16);
+ file.syncStrings(SURFACE_NAMES, 16);
+ file.syncStrings(WHO_ACTIONS(), 32);
+ delete[] _whoActions;
+ _whoActions = NULL;
+ file.syncStrings(WHO_WILL_ACTIONS(), 4);
+ delete[] _whoWillActions;
+ _whoWillActions = NULL;
+ file.syncBytes2D((const byte *)SYMBOLS, 20, 64);
+ file.syncBytes2D((const byte *)TEXT_COLORS, 40, 4);
+ file.syncBytes2D((const byte *)TEXT_COLORS_STARTUP, 40, 4);
+ file.syncStrings(DIRECTION_TEXT_UPPER(), 4);
+ delete[] _directionTextUpper;
+ _directionTextUpper = NULL;
+ file.syncStrings(DIRECTION_TEXT(), 4);
+ delete[] _directionText;
+ _directionText = NULL;
+ file.syncStrings(RACE_NAMES(), 5);
+ delete[] _raceNames;
+ _raceNames = NULL;
+ file.syncNumbers(RACE_HP_BONUSES, 5);
+ file.syncNumbers2D((const int *)RACE_SP_BONUSES, 5, 2);
+ file.syncStrings(CLASS_NAMES(), 11);
+ delete[] _classNames;
+ _classNames = NULL;
+ file.syncNumbers(CLASS_EXP_LEVELS, 10);
+ file.syncStrings(ALIGNMENT_NAMES(), 3);
+ delete[] _alignmentNames;
+ _alignmentNames = NULL;
+ file.syncStrings(SEX_NAMES(), 2);
+ delete[] _sexNames;
+ _sexNames = NULL;
+ file.syncStrings(SKILL_NAMES(), 18);
+ delete[] _skillNames;
+ _skillNames = NULL;
+ file.syncStrings(CONDITION_NAMES(), 17);
+ delete[] _conditionNames;
+ _conditionNames = NULL;
+ file.syncNumbers(CONDITION_COLORS, 17);
+ file.syncString(GOOD());
+ file.syncString(BLESSED());
+ file.syncString(POWER_SHIELD());
+ file.syncString(HOLY_BONUS());
+ file.syncString(HEROISM());
+ file.syncString(IN_PARTY());
+ file.syncString(PARTY_DETAILS());
+ file.syncString(PARTY_DIALOG_TEXT());
+ file.syncNumbers(FACE_CONDITION_FRAMES, 17);
+ file.syncNumbers(CHAR_FACES_X, 6);
+ file.syncNumbers(HP_BARS_X, 6);
+ file.syncString(NO_ONE_TO_ADVENTURE_WITH());
+ file.syncBytes2D((const byte *)DARKNESS_XLAT, 3, 256);
+ file.syncString(YOUR_ROSTER_IS_FULL());
+ file.syncString(PLEASE_WAIT());
+ file.syncString(OOPS());
+ file.syncNumbers2D((const int *)SCREEN_POSITIONING_X, 4, 48);
+ file.syncNumbers2D((const int *)SCREEN_POSITIONING_Y, 4, 48);
+ file.syncNumbers(MONSTER_GRID_BITMASK, 12);
+ file.syncNumbers2D((const int *)INDOOR_OBJECT_X, 2, 12);
+ file.syncNumbers2D((const int *)MAP_OBJECT_Y, 2, 12);
+ file.syncNumbers(INDOOR_MONSTERS_Y, 4);
+ file.syncNumbers2D((const int *)OUTDOOR_OBJECT_X, 2, 12);
+ file.syncNumbers(OUTDOOR_MONSTER_INDEXES, 26);
+ file.syncNumbers(OUTDOOR_MONSTERS_Y, 26);
+ file.syncNumbers2D((const int *)DIRECTION_ANIM_POSITIONS, 4, 4);
+ file.syncBytes2D((const byte *)WALL_SHIFTS, 4, 48);
+ file.syncNumbers(DRAW_NUMBERS, 25);
+ file.syncNumbers2D((const int *)DRAW_FRAMES, 25, 2);
+ file.syncNumbers(COMBAT_FLOAT_X, 8);
+ file.syncNumbers(COMBAT_FLOAT_Y, 8);
+ file.syncNumbers2D((const int *)MONSTER_EFFECT_FLAGS, 15, 8);
+ file.syncNumbers2D((const int *)SPELLS_ALLOWED, 3, 40);
+ file.syncNumbers(BASE_HP_BY_CLASS, 10);
+ file.syncNumbers(AGE_RANGES, 10);
+ file.syncNumbers2D((const int *)AGE_RANGES_ADJUST, 2, 10);
+ file.syncNumbers(STAT_VALUES, 24);
+ file.syncNumbers(STAT_BONUSES, 24);
+ file.syncNumbers(ELEMENTAL_CATEGORIES, 6);
+ file.syncNumbers(ATTRIBUTE_CATEGORIES, 10);
+ file.syncNumbers(ATTRIBUTE_BONUSES, 72);
+ file.syncNumbers(ELEMENTAL_RESISTENCES, 37);
+ file.syncNumbers(ELEMENTAL_DAMAGE, 37);
+ file.syncNumbers(WEAPON_DAMAGE_BASE, 35);
+ file.syncNumbers(WEAPON_DAMAGE_MULTIPLIER, 35);
+ file.syncNumbers(METAL_DAMAGE, 22);
+ file.syncNumbers(METAL_DAMAGE_PERCENT, 22);
+ file.syncNumbers(METAL_LAC, 22);
+ file.syncNumbers(ARMOR_STRENGTHS, 14);
+ file.syncNumbers(MAKE_ITEM_ARR1, 6);
+ file.syncNumbers3D((const int *)MAKE_ITEM_ARR2, 6, 7, 2);
+ file.syncNumbers3D((const int *)MAKE_ITEM_ARR3, 10, 7, 2);
+ file.syncNumbers3D((const int *)MAKE_ITEM_ARR4, 2, 7, 2);
+ file.syncNumbers2D((const int *)MAKE_ITEM_ARR5, 8, 2);
+ file.syncNumbers(OUTDOOR_DRAWSTRUCT_INDEXES, 44);
+ file.syncNumbers2D((const int *)TOWN_MAXES, 2, 11);
+ file.syncStrings2D((const char *const *)TOWN_ACTION_MUSIC, 2, 7);
+ file.syncStrings(TOWN_ACTION_SHAPES, 7);
+ file.syncNumbers2D((const int *)TOWN_ACTION_FILES, 2, 7);
+ file.syncString(BANK_TEXT());
+ file.syncString(BLACKSMITH_TEXT());
+ file.syncString(GUILD_NOT_MEMBER_TEXT());
+ file.syncString(GUILD_TEXT());
+ file.syncString(TAVERN_TEXT());
+ file.syncString(GOOD_STUFF());
+ file.syncString(HAVE_A_DRINK());
+ file.syncString(YOURE_DRUNK());
+ file.syncNumbers4D((const int *)TAVERN_EXIT_LIST, 2, 6, 5, 2);
+ file.syncString(FOOD_AND_DRINK());
+ file.syncString(TEMPLE_TEXT());
+ file.syncString(EXPERIENCE_FOR_LEVEL());
+ file.syncString(TRAINING_LEARNED_ALL());
+ file.syncString(ELIGIBLE_FOR_LEVEL());
+ file.syncString(TRAINING_TEXT());
+ file.syncString(GOLD_GEMS());
+ file.syncString(GOLD_GEMS_2());
+ file.syncStrings(DEPOSIT_WITHDRAWL(), 2);
+ delete[] _depositWithdrawl;
+ _depositWithdrawl = NULL;
+ file.syncString(NOT_ENOUGH_X_IN_THE_Y());
+ file.syncString(NO_X_IN_THE_Y());
+ file.syncStrings(STAT_NAMES(), 16);
+ delete[] _statNames;
+ _statNames = NULL;
+ file.syncStrings(CONSUMABLE_NAMES(), 4);
+ delete[] _consumableNames;
+ _consumableNames = NULL;
+ file.syncStrings(WHERE_NAMES(), 2);
+ delete[] _whereNames;
+ _whereNames = NULL;
+ file.syncString(AMOUNT());
+ file.syncString(FOOD_PACKS_FULL());
+ file.syncString(BUY_SPELLS());
+ file.syncString(GUILD_OPTIONS());
+ file.syncNumbers((const int *)MISC_SPELL_INDEX, 74);
+ file.syncNumbers((const int *)SPELL_COSTS, 77);
+ file.syncNumbers2D((const int *)CLOUDS_GUILD_SPELLS, 5, 20);
+ file.syncNumbers2D((const int *)DARK_SPELL_OFFSETS, 3, 39);
+ file.syncNumbers2D((const int *)DARK_SPELL_RANGES, 12, 2);
+ file.syncNumbers2D((const int *)SWORDS_SPELL_RANGES, 12, 2);
+ file.syncNumbers((const int *)SPELL_GEM_COST, 77);
+ file.syncString(NOT_A_SPELL_CASTER());
+ file.syncString(SPELLS_LEARNED_ALL());
+ file.syncString(SPELLS_FOR());
+ file.syncString(SPELL_LINES_0_TO_9());
+ file.syncString(SPELLS_DIALOG_SPELLS());
+ file.syncString(SPELL_PTS());
+ file.syncString(GOLD());
+ file.syncString(SPELL_INFO());
+ file.syncString(SPELL_PURCHASE());
+ file.syncString(MAP_TEXT());
+ file.syncString(LIGHT_COUNT_TEXT());
+ file.syncString(FIRE_RESISTENCE_TEXT());
+ file.syncString(ELECRICITY_RESISTENCE_TEXT());
+ file.syncString(COLD_RESISTENCE_TEXT());
+ file.syncString(POISON_RESISTENCE_TEXT());
+ file.syncString(CLAIRVOYANCE_TEXT());
+ file.syncString(LEVITATE_TEXT());
+ file.syncString(WALK_ON_WATER_TEXT());
+ file.syncString(GAME_INFORMATION());
+ file.syncString(WORLD_GAME_TEXT());
+ file.syncString(DARKSIDE_GAME_TEXT());
+ file.syncString(CLOUDS_GAME_TEXT());
+ file.syncString(SWORDS_GAME_TEXT());
+ file.syncStrings(WEEK_DAY_STRINGS(), 10);
+ delete[] _weekDayStrings;
+ _weekDayStrings = NULL;
+ file.syncString(CHARACTER_DETAILS());
+ file.syncStrings(DAYS(), 3);
+ file.syncString(PARTY_GOLD());
+ file.syncString(PLUS_14());
+ file.syncString(CHARACTER_TEMPLATE());
+ file.syncString(EXCHANGING_IN_COMBAT());
+ file.syncString(CURRENT_MAXIMUM_RATING_TEXT());
+ file.syncString(CURRENT_MAXIMUM_TEXT());
+ file.syncStrings(RATING_TEXT(), 24);
+ delete[] _ratingText;
+ _ratingText = NULL;
+ file.syncString(AGE_TEXT());
+ file.syncString(LEVEL_TEXT());
+ file.syncString(RESISTENCES_TEXT());
+ file.syncString(NONE());
+ file.syncString(EXPERIENCE_TEXT());
+ file.syncString(ELIGIBLE());
+ file.syncString(IN_PARTY_IN_BANK());
+ file.syncString(FOOD_TEXT());
+ file.syncString(EXCHANGE_WITH_WHOM());
+ file.syncString(QUICK_REF_LINE());
+ file.syncString(QUICK_REFERENCE());
+ file.syncNumbers2D((const int *)BLACKSMITH_MAP_IDS, 2, 4);
+ file.syncString(ITEMS_DIALOG_TEXT1());
+ file.syncString(ITEMS_DIALOG_TEXT2());
+ file.syncString(ITEMS_DIALOG_LINE1());
+ file.syncString(ITEMS_DIALOG_LINE2());
+ file.syncString(BTN_BUY());
+ file.syncString(BTN_SELL());
+ file.syncString(BTN_IDENTIFY());
+ file.syncString(BTN_FIX());
+ file.syncString(BTN_USE());
+ file.syncString(BTN_EQUIP());
+ file.syncString(BTN_REMOVE());
+ file.syncString(BTN_DISCARD());
+ file.syncString(BTN_QUEST());
+ file.syncString(BTN_ENCHANT());
+ file.syncString(BTN_RECHARGE());
+ file.syncString(BTN_GOLD());
+ file.syncString(ITEM_BROKEN());
+ file.syncString(ITEM_CURSED());
+ file.syncString(ITEM_OF());
+ file.syncStrings(BONUS_NAMES(), 7);
+ delete[] _bonusNames;
+ _bonusNames = NULL;
+ file.syncStrings(WEAPON_NAMES(), 41);
+ delete[] _weaponNames;
+ _weaponNames = NULL;
+ file.syncStrings(ARMOR_NAMES(), 14);
+ delete[] _armorNames;
+ _armorNames = NULL;
+ file.syncStrings(ACCESSORY_NAMES(), 11);
+ delete[] _accessoryNames;
+ _accessoryNames = NULL;
+ file.syncStrings(MISC_NAMES(), 22);
+ delete[] _miscNames;
+ _miscNames = NULL;
+ file.syncStrings(SPECIAL_NAMES(), 74);
+ delete[] _specialNames;
+ _specialNames = NULL;
+ file.syncStrings(ELEMENTAL_NAMES(), 6);
+ delete[] _elementalNames;
+ _elementalNames = NULL;
+ file.syncStrings(ATTRIBUTE_NAMES(), 10);
+ delete[] _attributeNames;
+ _attributeNames = NULL;
+ file.syncStrings(EFFECTIVENESS_NAMES(), 7);
+ delete[] _effectivenessNames;
+ _effectivenessNames = NULL;
+ file.syncStrings(QUEST_ITEM_NAMES(), 85);
+ delete[] _questItemNames;
+ _questItemNames = NULL;
+ file.syncStrings(QUEST_ITEM_NAMES_SWORDS(), 51);
+ delete[] _questItemNamesSwords;
+ _questItemNamesSwords = NULL;
+ file.syncNumbers((const int *)WEAPON_BASE_COSTS, 35);
+ file.syncNumbers((const int *)ARMOR_BASE_COSTS, 14);
+ file.syncNumbers((const int *)ACCESSORY_BASE_COSTS, 11);
+ file.syncNumbers((const int *)MISC_MATERIAL_COSTS, 22);
+ file.syncNumbers((const int *)MISC_BASE_COSTS, 76);
+ file.syncNumbers((const int *)METAL_BASE_MULTIPLIERS, 22);
+ file.syncNumbers((const int *)ITEM_SKILL_DIVISORS, 4);
+ file.syncNumbers((const int *)RESTRICTION_OFFSETS, 4);
+ file.syncNumbers((const int *)ITEM_RESTRICTIONS, 86);
+ file.syncString(NOT_PROFICIENT());
+ file.syncString(NO_ITEMS_AVAILABLE());
+ file.syncStrings(CATEGORY_NAMES(), 4);
+ delete[] _categoryNames;
+ _categoryNames = NULL;
+ file.syncString(X_FOR_THE_Y());
+ file.syncString(X_FOR_Y());
+ file.syncString(X_FOR_Y_GOLD());
+ file.syncString(FMT_CHARGES());
+ file.syncString(AVAILABLE_GOLD_COST());
+ file.syncString(CHARGES());
+ file.syncString(COST());
+ file.syncStrings(ITEM_ACTIONS(), 7);
+ delete[] _itemActions;
+ _itemActions = NULL;
+ file.syncString(WHICH_ITEM());
+ file.syncString(WHATS_YOUR_HURRY());
+ file.syncString(USE_ITEM_IN_COMBAT());
+ file.syncString(NO_SPECIAL_ABILITIES());
+ file.syncString(CANT_CAST_WHILE_ENGAGED());
+ file.syncString(EQUIPPED_ALL_YOU_CAN());
+ file.syncString(REMOVE_X_TO_EQUIP_Y());
+ file.syncString(RING());
+ file.syncString(MEDAL());
+ file.syncString(CANNOT_REMOVE_CURSED_ITEM());
+ file.syncString(CANNOT_DISCARD_CURSED_ITEM());
+ file.syncString(PERMANENTLY_DISCARD());
+ file.syncString(BACKPACK_IS_FULL());
+ file.syncStrings(CATEGORY_BACKPACK_IS_FULL(), 4);
+ file.syncString(BUY_X_FOR_Y_GOLD());
+ file.syncString(SELL_X_FOR_Y_GOLD());
+ file.syncStrings(SELL_X_FOR_Y_GOLD_ENDINGS(), 2);
+ delete[] _sellXForYGoldEndings;
+ _sellXForYGoldEndings = NULL;
+ file.syncString(NO_NEED_OF_THIS());
+ file.syncString(NOT_RECHARGABLE());
+ file.syncString(SPELL_FAILED());
+ file.syncString(NOT_ENCHANTABLE());
+ file.syncString(ITEM_NOT_BROKEN());
+ file.syncStrings(FIX_IDENTIFY(), 2);
+ delete[] _fixIdentify;
+ _fixIdentify = NULL;
+ file.syncString(FIX_IDENTIFY_GOLD());
+ file.syncString(IDENTIFY_ITEM_MSG());
+ file.syncString(ITEM_DETAILS());
+ file.syncString(ALL());
+ file.syncString(FIELD_NONE());
+ file.syncString(DAMAGE_X_TO_Y());
+ file.syncString(ELEMENTAL_XY_DAMAGE());
+ file.syncString(ATTR_XY_BONUS());
+ file.syncString(EFFECTIVE_AGAINST());
+ file.syncString(QUESTS_DIALOG_TEXT());
+ file.syncString(CLOUDS_OF_XEEN_LINE());
+ file.syncString(DARKSIDE_OF_XEEN_LINE());
+ file.syncString(SWORDS_OF_XEEN_LINE());
+ file.syncString(NO_QUEST_ITEMS());
+ file.syncString(NO_CURRENT_QUESTS());
+ file.syncString(NO_AUTO_NOTES());
+ file.syncString(QUEST_ITEMS_DATA());
+ file.syncString(CURRENT_QUESTS_DATA());
+ file.syncString(AUTO_NOTES_DATA());
+ file.syncString(REST_COMPLETE());
+ file.syncString(PARTY_IS_STARVING());
+ file.syncString(HIT_SPELL_POINTS_RESTORED());
+ file.syncString(TOO_DANGEROUS_TO_REST());
+ file.syncString(SOME_CHARS_MAY_DIE());
+ file.syncString(DISMISS_WHOM());
+ file.syncString(CANT_DISMISS_LAST_CHAR());
+ file.syncString(DELETE_CHAR_WITH_ELDER_WEAPON());
+ file.syncStrings(REMOVE_DELETE(), 2);
+ delete[] _removeDelete;
+ _removeDelete = NULL;
+ file.syncString(REMOVE_OR_DELETE_WHICH());
+ file.syncString(YOUR_PARTY_IS_FULL());
+ file.syncString(HAS_SLAYER_SWORD());
+ file.syncString(SURE_TO_DELETE_CHAR());
+ file.syncString(CREATE_CHAR_DETAILS());
+ file.syncString(NEW_CHAR_STATS());
+ file.syncString(NAME_FOR_NEW_CHARACTER());
+ file.syncString(SELECT_CLASS_BEFORE_SAVING());
+ file.syncString(EXCHANGE_ATTR_WITH());
+ file.syncNumbers((const int *)NEW_CHAR_SKILLS, 10);
+ file.syncNumbers((const int *)NEW_CHAR_SKILLS_OFFSET, 10);
+ file.syncNumbers((const int *)NEW_CHAR_SKILLS_LEN, 10);
+ file.syncNumbers((const int *)NEW_CHAR_RACE_SKILLS, 10);
+ file.syncNumbers((const int *)RACE_MAGIC_RESISTENCES, 5);
+ file.syncNumbers((const int *)RACE_FIRE_RESISTENCES, 5);
+ file.syncNumbers((const int *)RACE_ELECTRIC_RESISTENCES, 5);
+ file.syncNumbers((const int *)RACE_COLD_RESISTENCES, 5);
+ file.syncNumbers((const int *)RACE_ENERGY_RESISTENCES, 5);
+ file.syncNumbers((const int *)RACE_POISON_RESISTENCES, 5);
+ file.syncNumbers2D((const int *)NEW_CHARACTER_SPELLS, 10, 4);
+ file.syncString(COMBAT_DETAILS());
+ file.syncString(NOT_ENOUGH_TO_CAST());
+ file.syncStrings(SPELL_CAST_COMPONENTS(), 2);
+ delete[] _spellCastComponents;
+ _spellCastComponents = NULL;
+ file.syncString(CAST_SPELL_DETAILS());
+ file.syncString(PARTY_FOUND());
+ file.syncString(BACKPACKS_FULL_PRESS_KEY());
+ file.syncString(HIT_A_KEY());
+ file.syncString(GIVE_TREASURE_FORMATTING());
+ file.syncString(X_FOUND_Y());
+ file.syncString(ON_WHO());
+ file.syncString(WHICH_ELEMENT1());
+ file.syncString(WHICH_ELEMENT2());
+ file.syncString(DETECT_MONSTERS());
+ file.syncString(LLOYDS_BEACON());
+ file.syncString(HOW_MANY_SQUARES());
+ file.syncString(TOWN_PORTAL());
+ file.syncString(TOWN_PORTAL_SWORDS());
+ file.syncNumbers2D((const int *)TOWN_MAP_NUMBERS, 3, 5);
+ file.syncString(MONSTER_DETAILS());
+ file.syncStrings(MONSTER_SPECIAL_ATTACKS(), 23);
+ delete[] _monsterSpecialAttacks;
+ _monsterSpecialAttacks = NULL;
+ file.syncString(IDENTIFY_MONSTERS());
+ file.syncStrings(EVENT_SAMPLES, 6);
+ file.syncString(MOONS_NOT_ALIGNED());
+ file.syncString(AWARDS_FOR());
+ file.syncString(AWARDS_TEXT());
+ file.syncString(NO_AWARDS());
+ file.syncString(WARZONE_BATTLE_MASTER());
+ file.syncString(WARZONE_MAXED());
+ file.syncString(WARZONE_LEVEL());
+ file.syncString(WARZONE_HOW_MANY());
+ file.syncString(PICKS_THE_LOCK());
+ file.syncString(UNABLE_TO_PICK_LOCK());
+ file.syncString(CONTROL_PANEL_TEXT());
+ file.syncString(CONTROL_PANEL_BUTTONS());
+ file.syncString(ON());
+ file.syncString(OFF());
+ file.syncString(CONFIRM_QUIT());
+ file.syncString(MR_WIZARD());
+ file.syncString(NO_LOADING_IN_COMBAT());
+ file.syncString(NO_SAVING_IN_COMBAT());
+ file.syncString(QUICK_FIGHT_TEXT());
+ file.syncStrings(QUICK_FIGHT_OPTIONS(), 4);
+ delete[] _quickFightOptions;
+ _quickFightOptions = NULL;
+ file.syncStrings(WORLD_END_TEXT(), 9);
+ delete[] _worldEndText;
+ _worldEndText = NULL;
+ file.syncString(WORLD_CONGRATULATIONS());
+ file.syncString(WORLD_CONGRATULATIONS2());
+ file.syncString(CLOUDS_CONGRATULATIONS1());
+ file.syncString(CLOUDS_CONGRATULATIONS2());
+ file.syncStrings(GOOBER(), 3);
+ delete[] _goober;
+ _goober = NULL;
+ file.syncStrings(MUSIC_FILES1, 5);
+ file.syncStrings2D((const char* const *)MUSIC_FILES2, 6, 7);
+ file.syncString(DIFFICULTY_TEXT());
+ file.syncString(SAVE_OFF_LIMITS());
+ file.syncString(CLOUDS_INTRO1());
+ file.syncString(DARKSIDE_ENDING1());
+ file.syncString(DARKSIDE_ENDING2());
+ file.syncString(PHAROAH_ENDING_TEXT1());
+ file.syncString(PHAROAH_ENDING_TEXT2());
+
+ cc.add("CONSTANTS" + num, file);
+ }
};
-static const char* const OUTDOORS_WALL_TYPES[16] = {
- nullptr, "mount", "ltree", "dtree", "grass", "snotree", "dsnotree",
- "snomnt", "dedltree", "mount", "lavamnt", "palm", "dmount", "dedltree",
- "dedltree", "dedltree"
+class EN : public LangConstants {
+public:
+ const char *CLOUDS_CREDITS() {
+ return "\v012\t000\x3"
+ "c\f35Designed and Directed By:\n"
+ "\f17Jon Van Caneghem\x3l\n"
+ "\n"
+ "\t025\f35Programming:\n"
+ "\t035\f17Mark Caldwell\n"
+ "\t035Dave Hathaway\n"
+ "\n"
+ "\t025\f35Sound System & FX:\n"
+ "\t035\f17Todd Hendrix\n"
+ "\n"
+ "\t025\f35Music & Speech:\n"
+ "\t035\f17Tim Tully\n"
+ "\n"
+ "\t025\f35Writing:\n"
+ "\t035\f17Paul Rattner\n"
+ "\t035Debbie Murphy\n"
+ "\t035Jon Van Caneghem\v012\n"
+ "\n"
+ "\n"
+ "\t180\f35Graphics:\n"
+ "\t190\f17Louis Johnson\n"
+ "\t190Jonathan P. Gwyn\n"
+ "\t190Bonita Long-Hemsath\n"
+ "\t190Julia Ulano\n"
+ "\t190Ricardo Barrera\n"
+ "\n"
+ "\t180\f35Testing:\n"
+ "\t190\f17Benjamin Bent\n"
+ "\t190Mario Escamilla\n"
+ "\t190Richard Espy\n"
+ "\t190Scott McDaniel\n"
+ "\t190Clayton Retzer\n"
+ "\t190Michael Suarez\x3"
+ "c";
+ }
+
+ const char *DARK_SIDE_CREDITS() {
+ return "\v012\t000\x3"
+ "c\f35Designed and Directed By:\n"
+ "\f17Jon Van Caneghem\x3l\n"
+ "\n"
+ "\t025\f35Programming:\n"
+ "\t035\f17Mark Caldwell\n"
+ "\t035Dave Hathaway\n"
+ "\n"
+ "\t025\f35Sound System & FX:\n"
+ "\t035\f17Mike Heilemann\n"
+ "\n"
+ "\t025\f35Music & Speech:\n"
+ "\t035\f17Tim Tully\n"
+ "\n"
+ "\t025\f35Writing:\n"
+ "\t035\f17Paul Rattner\n"
+ "\t035Debbie Van Caneghem\n"
+ "\t035Jon Van Caneghem\v012\n"
+ "\n"
+ "\n"
+ "\t180\f35Graphics:\n"
+ "\t190\f17Jonathan P. Gwyn\n"
+ "\t190Bonita Long-Hemsath\n"
+ "\t190Julia Ulano\n"
+ "\t190Ricardo Barrera\n"
+ "\n"
+ "\t180\f35Testing:\n"
+ "\t190\f17Benjamin Bent\n"
+ "\t190Christian Dailey\n"
+ "\t190Mario Escamilla\n"
+ "\t190Marco Hunter\n"
+ "\t190Robert J. Lupo\n"
+ "\t190Clayton Retzer\n"
+ "\t190David Vela\x3"
+ "c";
+ }
+
+ const char *SWORDS_CREDITS1() {
+ return "\v012\x3"
+ "c\f35Published By New World Computing, Inc.\f17\n"
+ "Developed By CATware, Inc.\x3l\n"
+ "\f01Design and Direction\t180Series Created by\n"
+ "\t020Bill Fawcett\t190John Van Caneghem\n"
+ "\n"
+ "\t010Story Contributions\t180Producer & Manual\n"
+ "\t020Ellen Guon\t190Dean Rettig\n"
+ "\n"
+ "\t010Programming & Ideas\t180Original Programming\n"
+ "\t020David Potter\t190Mark Caldwell\n"
+ "\t020Rod Retterath\t190Dave Hathaway\n"
+ "\n"
+ "\t010Manual Illustrations\t180Graphic Artists\n"
+ "\t020Todd Cameron Hamilton\t190Jonathan P. Gwyn\n"
+ "\t020James Clouse\t190Bonnie Long-Hemsath\n"
+ "\t190Julia Ulano\n"
+ "\t190Ricardo Barrera\n";
+ }
+
+ const char *SWORDS_CREDITS2() {
+ return "\f05\v012\t000\x3l\n"
+ "\t100Sound Programming\n"
+ "\t110Todd Hendrix\n"
+ "\n"
+ "\t100Music\n"
+ "\t110Tim Tully\n"
+ "\t110Quality Assurance Manager\n"
+ "\t110Peter Ryu\n"
+ "\t100Testers\n"
+ "\t110Walter Johnson\n"
+ "\t110Bryan Farina\n"
+ "\t110David Baton\n"
+ "\t110Jack Nalls\n";
+ }
+
+ const char *OPTIONS_MENU() {
+ return "\r\x1\x3"
+ "c\fdMight and Magic Options\n"
+ "%s of Xeen\x2\n"
+ "\v%.3dCopyright (c) %d NWC, Inc.\n"
+ "All Rights Reserved\x1";
+ }
+
+ const char **GAME_NAMES() {
+ delete[] _gameNames;
+ _gameNames = new const char *[3] { "Clouds", "Darkside", "World" };
+ return _gameNames;
+ }
+
+ const char *THE_PARTY_NEEDS_REST() {
+ return "\v012The Party needs rest!";
+ }
+
+ const char *WHO_WILL() {
+ return "\x3""c\v000\t000%s\n\n"
+ "Who will\n%s?\n\v055F1 - F%d";
+ }
+
+ const char *HOW_MUCH() {
+ return "\x3""cHow Much\n\n";
+ }
+
+ const char *WHATS_THE_PASSWORD() {
+ return "\x3""cWhat's the Password?\n"
+ "\n"
+ "Please turn to page %u, go to\n"
+ "line %u, and type in word %u.\v067\t000Spaces are not counted as words or lines. "
+ "Hyphenated words are treated as one word. Any line that has any text is considered a line."
+ "\x3""c\v040\t000\n";
+ }
+
+ const char *PASSWORD_INCORRECT() {
+ return "\x3""c\v040\n"
+ "\f32Incorrect!\fd";
+ }
+
+ const char *IN_NO_CONDITION() {
+ return "\v007%s is not in any condition to perform actions!";
+ }
+
+ const char *NOTHING_HERE() {
+ return "\x3""c\v010Nothing here.";
+ }
+
+ const char **WHO_ACTIONS() {
+ delete[] _whoActions;
+ _whoActions = new const char *[32] {
+ "search", "open", "drink", "mine", "touch", "read", "learn", "take",
+ "bang", "steal", "bribe", "pay", "sit", "try", "turn", "bathe",
+ "destroy", "pull", "descend", "toss a coin", "pray", "join", "act",
+ "play", "push", "rub", "pick", "eat", "sign", "close", "look", "try"
+ };
+ return _whoActions;
+ }
+
+ const char **WHO_WILL_ACTIONS() {
+ delete[] _whoWillActions;
+ _whoWillActions = new const char *[4] {
+ "Open Grate", "Open Door", "Open Scroll", "Select Char"
+ };
+ return _whoWillActions;
+ }
+
+ const char **DIRECTION_TEXT_UPPER() {
+ delete[] _directionTextUpper;
+ _directionTextUpper = new const char *[4] {"NORTH", "EAST", "SOUTH", "WEST"};
+ return _directionTextUpper;
+ }
+
+ const char **DIRECTION_TEXT() {
+ delete[] _directionText;
+ _directionText = new const char *[4] {"North", "East", "South", "West"};
+ return _directionText;
+ }
+
+ const char **RACE_NAMES() {
+ delete[] _raceNames;
+ _raceNames = new const char *[5] { "Human", "Elf", "Dwarf", "Gnome", "H-Orc" };
+ return _raceNames;
+ }
+
+ const char **ALIGNMENT_NAMES() {
+ delete[] _alignmentNames;
+ _alignmentNames = new const char *[3] { "Good", "Neutral", "Evil" };
+ return _alignmentNames;
+ }
+
+ const char **SEX_NAMES() {
+ delete[] _sexNames;
+ _sexNames = new const char *[2] { "Male", "Female" };
+ return _sexNames;
+ }
+
+ const char **SKILL_NAMES() {
+ delete[] _skillNames;
+ _skillNames = new const char *[18] {
+ "Thievery\t100", "Arms Master", "Astrologer", "Body Builder", "Cartographer",
+ "Crusader", "Direction Sense", "Linguist", "Merchant", "Mountaineer",
+ "Navigator", "Path Finder", "Prayer Master", "Prestidigitator",
+ "Swimmer", "Tracker", "Spot Secret Door", "Danger Sense"
+ };
+ return _skillNames;
+ }
+
+ const char **CLASS_NAMES() {
+ delete[] _classNames;
+ _classNames = new const char *[11] {
+ "Knight", "Paladin", "Archer", "Cleric", "Sorcerer", "Robber",
+ "Ninja", "Barbarian", "Druid", "Ranger", nullptr
+ };
+ return _classNames;
+ }
+
+ const char **CONDITION_NAMES() {
+ delete[] _conditionNames;
+ _conditionNames = new const char *[17] {
+ "Cursed", "Heart Broken", "Weak", "Poisoned", "Diseased",
+ "Insane", "In Love", "Drunk", "Asleep", "Depressed", "Confused",
+ "Paralyzed", "Unconscious", "Dead", "Stone", "Eradicated", "Good"
+ };
+ return _conditionNames;
+ }
+
+ const char *GOOD() {
+ return "Good";
+ }
+
+ const char *BLESSED() {
+ return "\n\t020Blessed\t095%+d";
+ }
+
+ const char *POWER_SHIELD() {
+ return "\n\t020Power Shield\t095%+d";
+ }
+
+ const char *HOLY_BONUS() {
+ return "\n\t020Holy Bonus\t095%+d";
+ }
+
+ const char *HEROISM() {
+ return "\n\t020Heroism\t095%+d";
+ }
+
+ const char *IN_PARTY() {
+ return "\014""15In Party\014""d";
+ }
+
+ const char *PARTY_DETAILS() {
+ return "\015\003l\002\014""00"
+ "\013""001""\011""035%s"
+ "\013""009""\011""035%s"
+ "\013""017""\011""035%s"
+ "\013""025""\011""035%s"
+ "\013""001""\011""136%s"
+ "\013""009""\011""136%s"
+ "\013""017""\011""136%s"
+ "\013""025""\011""136%s"
+ "\013""044""\011""035%s"
+ "\013""052""\011""035%s"
+ "\013""060""\011""035%s"
+ "\013""068""\011""035%s"
+ "\013""044""\011""136%s"
+ "\013""052""\011""136%s"
+ "\013""060""\011""136%s"
+ "\013""068""\011""136%s";
+ }
+
+ const char *PARTY_DIALOG_TEXT() {
+ return "%s\x2\x3""c\v106\t013Up\t048Down\t083\f37D\fdel\t118\f37R\fdem"
+ "\t153\f37C\fdreate\t188E\f37x\fdit\x1";
+ }
+
+ const char *NO_ONE_TO_ADVENTURE_WITH() {
+ return "You have no one to adventure with";
+ }
+
+ const char *YOUR_ROSTER_IS_FULL() {
+ return "Your Roster is full!";
+ }
+
+ const char *PLEASE_WAIT() {
+ return "\014""d\003""c\011""000"
+ "\013""002Please Wait...";
+ }
+
+ const char *OOPS() {
+ return "\003""c\011""000\013""002Oops...";
+ }
+
+ const char *BANK_TEXT() {
+ return "\r\x2\x3""c\v122\t013"
+ "\f37D\fdep\t040\f37W\fdith\t067ESC"
+ "\x1\t000\v000Bank of Xeen\v015\n"
+ "Bank\x3l\n"
+ "Gold\x3r\t000%s\x3l\n"
+ "Gems\x3r\t000%s\x3""c\n"
+ "\n"
+ "Party\x3l\n"
+ "Gold\x3r\t000%s\x3l\n"
+ "Gems\x3r\t000%s";
+ }
+
+ const char *BLACKSMITH_TEXT() {
+ return "\x1\r\x3""c\v000\t000"
+ "store options for\t039\v027%s\x3l\v046\n"
+ "\t011\f37b\fdrowse\n"
+ "\t000\v090gold\x3r\t000%s"
+ "\x2\x3""c\v122\t040esc\x1";
+ }
+
+ const char *GUILD_NOT_MEMBER_TEXT() {
+ return "\n\nYou have to be a member to shop here.";
+ }
+
+ const char *GUILD_TEXT() {
+ return "\x3""c\v027\t039%s"
+ "\x3l\v046\n"
+ "\t012\f37B\fduy Spells\n"
+ "\t012\f37S\fdpell Info";
+ }
+
+ const char *TAVERN_TEXT() {
+ return "\r\x3""c\v000\t000Tavern Options for\t039"
+ "\v027%s%s\x3l\t000"
+ "\v090Gold\x3r\t000%s\x2\x3""c\v122"
+ "\t021\f37S\fdign in\t060ESC\x1";
+
+ }
+
+ const char *FOOD_AND_DRINK() {
+ return "\x3l\t017\v046\f37D\fdrink\n"
+ "\t017\f37F\fdood\n"
+ "\t017\f37T\fdip\n"
+ "\t017\f37R\fdumors";
+ }
+
+ const char *GOOD_STUFF() {
+ return "\n"
+ "\n"
+ "Good Stuff\n"
+ "\n"
+ "Hit a key!";
+ }
+
+ const char *HAVE_A_DRINK() {
+ return "\n\nHave a Drink\n\nHit a key!";
+ }
+
+ const char *YOURE_DRUNK() {
+ return "\n\nYou're Drunk\n\nHit a key!";
+ }
+
+ const char *TEMPLE_TEXT() {
+ return "\r\x3""c\v000\t000Temple Options for"
+ "\t039\v027%s\x3l\t000\v046"
+ "\f37H\fdeal\x3r\t000%u\x3l\n"
+ "\f37D\fdonation\x3r\t000%u\x3l\n"
+ "\f37U\fdnCurse\x3r\t000%s"
+ "\x3l\t000\v090Gold\x3r\t000%s"
+ "\x2\x3""c\v122\t040ESC\x1";
+ }
+
+ const char *EXPERIENCE_FOR_LEVEL() {
+ return "%s needs %u experience for level %u.";
+ }
+
+ const char *TRAINING_LEARNED_ALL() {
+ return "%s has learned all we can teach!";
+ }
+
+ const char *ELIGIBLE_FOR_LEVEL() {
+ return "%s is eligible for level %u.\x3l\n"
+ "\v081Cost\x3r\t000%u";
+ }
+
+ const char *TRAINING_TEXT() {
+ return "\r\x3""cTraining Options\n"
+ "\n"
+ "%s\x3l\v090\t000Gold\x3r\t000%s\x2\x3""c\v122\t021"
+ "\f37T\fdrain\t060ESC\x1";
+ }
+
+ const char *GOLD_GEMS() {
+ return "\x3""c\v000\t000%s\x3l\n"
+ "\n"
+ "Gold\x3r\t000%s\x3l\n"
+ "Gems\x3r\t000%s\x2\x3""c\v096\t013G\f37o\fdld\t040G\f37e\fdms\t067ESC\x1";
+ }
+
+ const char *GOLD_GEMS_2() {
+ return "\x3""c\v000\t000%s\x3l\n"
+ "\n"
+ "\x4""077Gold\x3r\t000%s\x3l\n"
+ "\x4""077Gems\x3r\t000%s\x3l\t000\v051\x4""077\n"
+ "\x4""077";
+ }
+
+ const char **DEPOSIT_WITHDRAWL() {
+ delete[] _depositWithdrawl;
+ _depositWithdrawl = new const char *[2] { "Deposit", "Withdrawl" };
+ return _depositWithdrawl;
+ }
+
+ const char *NOT_ENOUGH_X_IN_THE_Y() {
+ return "\x3""c\v012Not enough %s in the %s!\x3l";
+ }
+
+ const char *NO_X_IN_THE_Y() {
+ return "\x3""c\v012No %s in the %s!\x3l";
+ }
+
+ const char **STAT_NAMES() {
+ delete[] _statNames;
+ _statNames = new const char *[16] {
+ "Might", "Intellect", "Personality", "Endurance", "Speed",
+ "Accuracy", "Luck", "Age", "Level", "Armor Class", "Hit Points",
+ "Spell Points", "Resistances", "Skills", "Awards", "Experience"
+ };
+ return _statNames;
+ }
+
+ const char **CONSUMABLE_NAMES() {
+ delete[] _consumableNames;
+ _consumableNames = new const char *[4] { "Gold", "Gems", "Food", "Condition" };
+ return _consumableNames;
+ }
+
+ const char **WHERE_NAMES() {
+ delete[] _whereNames;
+ _whereNames = new const char *[2] { "Party", "Bank" };
+ return _whereNames;
+ }
+
+ const char *AMOUNT() {
+ return "\x3""c\t000\v051Amount\x3l\n";
+ }
+
+ const char *FOOD_PACKS_FULL() {
+ return "\v007Your food packs are already full!";
+ }
+
+ const char *BUY_SPELLS() {
+ return "\x3""c\v027\t039%s\x3l\v046\n"
+ "\t012\f37B\fduy Spells\n"
+ "\t012\f37S\fdpell Info";
+ }
+
+ const char *GUILD_OPTIONS() {
+ return "\r\f00\x3""c\v000\t000Guild Options for%s"
+ "\x3l\t000\v090Gold"
+ "\x3r\t000%s\x2\x3""c\v122\t040ESC\x1";
+ }
+
+ const char *NOT_A_SPELL_CASTER() {
+ return "Not a spell caster...";
+ }
+
+ const char *SPELLS_LEARNED_ALL() {
+ return "You have learned all we\n"
+ "\t010can teach you.";
+ }
+
+ const char *SPELLS_FOR() {
+ return "\r\fd%s\x2\x3""c\t000\v002Spells for %s";
+ }
+
+ const char *SPELL_LINES_0_TO_9() {
+ return "\x2\x3l\v015\t0011\n2\n3\n4\n5\n6\n7\n8\n9\n0";
+ }
+
+ const char *SPELLS_DIALOG_SPELLS() {
+ return "\x3l\v015"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l"
+ "\t004\v110%s - %u\x1";
+ }
+
+ const char *SPELL_PTS() {
+ return "Spell Pts";
+ }
+
+ const char *GOLD() {
+ return "Gold";
+ }
+
+ const char *SPELL_INFO() {
+ return "\x3""c\f09%s\fd\x3l\n"
+ "\n"
+ "%s\x3""c\t000\v100Press a Key!";
+ }
+
+ const char *SPELL_PURCHASE() {
+ return "\x3l\v000\t000\fd%s Do you wish to purchase "
+ "\f09%s\fd for %u?";
+ }
+
+ const char *MAP_TEXT() {
+ return "\x3""c\v000\t000%s\x3l\v139"
+ "\t000X = %d\x3r\t000Y = %d\x3""c\t000%s";
+ }
+
+ const char *LIGHT_COUNT_TEXT() {
+ return "\x3l\n\n\t024Light\x3r\t124%d";
+ }
+
+ const char *FIRE_RESISTENCE_TEXT() {
+ return "%c%sFire%s%u";
+ }
+
+ const char *ELECRICITY_RESISTENCE_TEXT() {
+ return "%c%sElectricity%s%u";
+ }
+
+ const char *COLD_RESISTENCE_TEXT() {
+ return "%c%sCold%s%u";
+ }
+
+ const char *POISON_RESISTENCE_TEXT() {
+ return "%c%sPoison/Acid%s%u";
+ }
+
+ const char *CLAIRVOYANCE_TEXT() {
+ return "%c%sClairvoyance%s";
+ }
+
+ const char *LEVITATE_TEXT() {
+ return "%c%sLevitate%s";
+ }
+
+ const char *WALK_ON_WATER_TEXT() {
+ return "%c%sWalk on Water";
+ }
+
+ const char *GAME_INFORMATION() {
+ return "\r\x3""c\t000\v001\f37%s of Xeen\fd\n"
+ "Game Information\n"
+ "\n"
+ "Today is \f37%ssday\fd\n"
+ "\n"
+ "\t032Time\t072Day\t112Year\n"
+ "\t032\f37%d:%02d%c\t072%u\t112%u\fd%s";
+ }
+
+ const char *WORLD_GAME_TEXT() {
+ return "World";
+ }
+
+ const char *DARKSIDE_GAME_TEXT() {
+ return "Darkside";
+ }
+
+ const char *CLOUDS_GAME_TEXT() {
+ return "Clouds";
+ }
+
+ const char *SWORDS_GAME_TEXT() {
+ return "Swords";
+ }
+
+ const char **WEEK_DAY_STRINGS() {
+ delete[] _weekDayStrings;
+ _weekDayStrings = new const char *[10] {
+ "Ten", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"
+ };
+ return _weekDayStrings;
+ }
+
+ const char *CHARACTER_DETAILS() {
+ return "\x3l\v041\t196%s\t000\v002%s : %s %s %s"
+ "\x3r\t053\v028\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3l\t131\f%02u%d\fd\t196\f15%u\fd\x3r"
+ "\t053\v051\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3l\t131\f%02u%u\fd\t196\f15%u\fd"
+ "\x3r\t053\v074\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3l\t131\f15%u\fd\t196\f15%u\fd"
+ "\x3r\t053\v097\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3l\t131\f15%u\fd\t196\f15%u day%s\fd"
+ "\x3r\t053\v120\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3l\t131\f15%u\fd\t196\f%02u%s\fd"
+ "\t230%s%s%s%s\fd";
+ }
+
+ const char **DAYS() {
+ delete[] _days;
+ _days = new const char *[3] { "", "s", "" };
+ return _days;
+ }
+
+ const char *PARTY_GOLD() {
+ return "Party Gold";
+ }
+
+ const char *PLUS_14() {
+ return "\f14+";
+ }
+
+ const char *CHARACTER_TEMPLATE() {
+ return "\x1\f00\r\x3l\t029\v018Mgt\t080Acy\t131H.P.\t196Experience"
+ "\t029\v041Int\t080Lck\t131S.P.\t029\v064Per\t080Age"
+ "\t131Resis\t196Party Gems\t029\v087End\t080Lvl\t131Skills"
+ "\t196Party Food\t029\v110Spd\t080AC\t131Awrds\t196Condition\x3""c"
+ "\t290\v025\f37I\fdtem\t290\v057\f37Q"
+ "\fduick\t290\v089\f37E\fdxch\t290\v121Exit\x3l%s";
+ }
+
+ const char *EXCHANGING_IN_COMBAT() {
+ return "\x3""c\v007\t000Exchanging in combat is not allowed!";
+ }
+
+ const char *CURRENT_MAXIMUM_RATING_TEXT() {
+ return "\x2\x3""c%s\n"
+ "Current / Maximum\n"
+ "\x3r\t054%u\x3l\t058/ %u\n"
+ "\x3""cRating: %s";
+ }
+
+ const char *CURRENT_MAXIMUM_TEXT() {
+ return "\x2\x3""c%s\n"
+ "Current / Maximum\n"
+ "\x3r\t054%u\x3l\t058/ %u";
+ }
+
+ const char **RATING_TEXT() {
+ delete[] _ratingText;
+ _ratingText = new const char *[24] {
+ "Nonexistant", "Very Poor", "Poor", "Very Low", "Low", "Average", "Good",
+ "Very Good", "High", "Very High", "Great", "Super", "Amazing", "Incredible",
+ "Gigantic", "Fantastic", "Astoundig", "Astonishing", "Monumental", "Tremendous",
+ "Collosal", "Awesome", "Awe Inspiring", "Ultimate"
+ };
+ return _ratingText;
+ }
+
+ const char *AGE_TEXT() {
+ return "\x2\x3""c%s\n"
+ "Current / Natural\n"
+ "\x3r\t057%u\x3l\t061/ %u\n"
+ "\x3""cBorn: %u / %u\x1";
+ }
+
+ const char *LEVEL_TEXT() {
+ return "\x2\x3""c%s\n"
+ "Current / Maximum\n"
+ "\x3r\t054%u\x3l\t058/ %u\n"
+ "\x3""c%u Attack%s/Round\x1";
+ }
+
+ const char *RESISTENCES_TEXT() {
+ return "\x2\x3""c%s\x3l\n"
+ "\t020Fire\t100%u\n"
+ "\t020Cold\t100%u\n"
+ "\t020Electricity\t100%u\n"
+ "\t020Poison\t100%u\n"
+ "\t020Energy\t100%u\n"
+ "\t020Magic\t100%u";
+ }
+
+ const char *NONE() {
+ return "\n\t020None";
+ }
+
+ const char *EXPERIENCE_TEXT() {
+ return "\x2\x3""c%s\x3l\n"
+ "\t010Current:\t070%u\n"
+ "\t010Next Level:\t070%s\x1";
+ }
+
+ const char *ELIGIBLE() {
+ return "\f12Eligible\fd";
+ }
+
+ const char *IN_PARTY_IN_BANK() {
+ return "\x2\x3""cParty %s\n"
+ "%u on hand\n"
+ "%u in bank\x1\x3l";
+ }
+
+ const char *FOOD_TEXT() {
+ return "\x2\x3""cParty %s\n"
+ "%u on hand\n"
+ "Enough for %u day%s\x3l";
+ }
+
+ const char *EXCHANGE_WITH_WHOM() {
+ return "\t010\v005Exchange with whom?";
+ }
+
+ const char *QUICK_REF_LINE() {
+ return "\v%3d\t007%u)\t027%s\t110%c%c%c\x3r\t160\f%02u%u\fd"
+ "\x3l\t170\f%02u%d\fd\t208\f%02u%u\fd\t247\f"
+ "%02u%u\fd\t270\f%02u%c%c%c%c\fd";
+ }
+
+ const char *QUICK_REFERENCE() {
+ return "\r\x3""cQuick Reference Chart\v012\x3l"
+ "\t007#\t027Name\t110Cls\t140Lvl\t176H.P."
+ "\t212S.P.\t241A.C.\t270Cond"
+ "%s%s%s%s%s%s%s%s"
+ "\v110\t064\x3""cGold\t144Gems\t224Food\v119"
+ "\t064\f15%u\t144%u\t224%u day%s\fd";
+ }
+
+ const char *ITEMS_DIALOG_TEXT1() {
+ return "\r\x2\x3""c\v021\t017\f37W\fdeap\t051\f37A\fdrmor\t085A"
+ "\f37c\fdces\t119\f37M\fdisc\t153%s\t187%s\t221%s"
+ "\t255%s\t289Exit";
+ }
+
+ const char *ITEMS_DIALOG_TEXT2() {
+ return "\r\x2\x3""c\v021\t017\f37W\fdeap\t051\f37A\fdrmor\t085A"
+ "\f37c\fdces\t119\f37M\fdisc\t153\f37%s\t289Exit";
+ }
+
+ const char *ITEMS_DIALOG_LINE1() {
+ return "\x3r\f%02u\t023%2d)\x3l\t028%s\n";
+ }
+
+ const char *ITEMS_DIALOG_LINE2() {
+ return "\x3r\f%02u\t023%2d)\x3l\t028%s\x3r\t000%u\n";
+ }
+
+ const char *BTN_BUY() {
+ return "\f37B\fduy";
+ }
+
+ const char *BTN_SELL() {
+ return "\f37S\fdell";
+ }
+
+ const char *BTN_IDENTIFY() {
+ return "\f37I\fddentify";
+ }
+
+ const char *BTN_FIX() {
+ return "\f37F\fdix";
+ }
+
+ const char *BTN_USE() {
+ return "\f37U\fdse";
+ }
+
+ const char *BTN_EQUIP() {
+ return "\f37E\fdquip";
+ }
+
+ const char *BTN_REMOVE() {
+ return "\f37R\fdem";
+ }
+
+ const char *BTN_DISCARD() {
+ return "\f37D\fdisc";
+ }
+
+ const char *BTN_QUEST() {
+ return "\f37Q\fduest";
+ }
+
+ const char *BTN_ENCHANT() {
+ return "E\fdnchant";
+ }
+
+ const char *BTN_RECHARGE() {
+ return "R\fdechrg";
+ }
+
+ const char *BTN_GOLD() {
+ return "G\fdold";
+ }
+
+ const char *ITEM_BROKEN() {
+ return "\f32broken ";
+ }
+
+ const char *ITEM_CURSED() {
+ return "\f09cursed ";
+ }
+
+ const char *ITEM_OF() {
+ return "of ";
+ }
+
+ const char **BONUS_NAMES() {
+ delete[] _bonusNames;
+ _bonusNames = new const char *[7] {
+ "", "Dragon Slayer", "Undead Eater", "Golem Smasher",
+ "Bug Zapper", "Monster Masher", "Beast Bopper"
+ };
+ return _bonusNames;
+ }
+
+ const char **WEAPON_NAMES() {
+ delete[] _weaponNames;
+ _weaponNames = new const char *[41] {
+ nullptr, "long sword ", "short sword ", "broad sword ", "scimitar ",
+ "cutlass ", "sabre ", "club ", "hand axe ", "katana ", "nunchakas ",
+ "wakazashi ", "dagger ", "mace ", "flail ", "cudgel ", "maul ", "spear ",
+ "bardiche ", "glaive ", "halberd ", "pike ", "flamberge ", "trident ",
+ "staff ", "hammer ", "naginata ", "battle axe ", "grand axe ", "great axe ",
+ "short bow ", "long bow ", "crossbow ", "sling ", "Xeen Slayer Sword ",
+ "Elder LongSword ", "Elder Dagger ", "Elder Mace ", "Elder Spear ",
+ "Elder Staff ", "Elder LongBow "
+ };
+ return _weaponNames;
+ }
+
+ const char **ARMOR_NAMES() {
+ delete[] _armorNames;
+ _armorNames = new const char *[14] {
+ nullptr, "robes ", "scale armor ", "ring mail ", "chain mail ",
+ "splint mail ", "plate mail ", "plate armor ", "shield ",
+ "helm ", "boots ", "cloak ", "cape ", "gauntlets "
+ };
+ return _armorNames;
+ }
+
+ const char **ACCESSORY_NAMES() {
+ delete[] _accessoryNames;
+ _accessoryNames = new const char *[11] {
+ nullptr, "ring ", "belt ", "brooch ", "medal ", "charm ", "cameo ",
+ "scarab ", "pendant ", "necklace ", "amulet "
+ };
+ return _accessoryNames;
+ }
+
+ const char **MISC_NAMES() {
+ delete[] _miscNames;
+ _miscNames = new const char *[22] {
+ nullptr, "rod ", "jewel ", "gem ", "box ", "orb ", "horn ", "coin ",
+ "wand ", "whistle ", "potion ", "scroll ", "bogus", "bogus", "bogus",
+ "bogus", "bogus", "bogus", "bogus", "bogus", "bogus", "bogus"
+ };
+ return _miscNames;
+ }
+
+ const char **SPECIAL_NAMES() {
+ delete[] _specialNames;
+ _specialNames = new const char *[74] {
+ nullptr, "light", "awakening", "magic arrows", "first aid", "fists", "energy blasts", "sleeping",
+ "revitalization", "curing", "sparking", "shrapmetal", "insect repellent", "toxic clouds", "elemental protection",
+ "pain", "jumping", "beast control", "clairvoyance", "undead turning", "levitation", "wizard eyes", "blessing",
+ "monster identification", "lightning", "holy bonuses", "power curing", "nature's cures", "beacons",
+ "shielding", "heroism", "hypnotism", "water walking", "frost biting", "monster finding", "fireballs",
+ "cold rays", "antidotes", "acid spraying", "time distortion", "dragon sleep", "vaccination", "teleportation",
+ "death", "free movement", "golem stopping", "poison volleys", "deadly swarms", "shelter", "daily protection",
+ "daily sorcerery", "feasting", "fiery flails", "recharging", "freezing", "town portals", "stone to flesh",
+ "raising the dead", "etherealization", "dancing swords", "moon rays", "mass distortion", "prismatic light",
+ "enchant item", "incinerating", "holy words", "resurrection", "storms", "megavoltage", "infernos",
+ "sun rays", "implosions", "star bursts", "the GODS!"
+ };
+ return _specialNames;
+ }
+
+ const char **ELEMENTAL_NAMES() {
+ delete[] _elementalNames;
+ _elementalNames = new const char *[6] {
+ "Fire", "Elec", "Cold", "Acid/Poison", "Energy", "Magic"
+ };
+ return _elementalNames;
+ }
+
+ const char **ATTRIBUTE_NAMES() {
+ delete[] _attributeNames;
+ _attributeNames = new const char *[10] {
+ "might", "Intellect", "Personality", "Speed", "accuracy", "Luck",
+ "Hit Points", "Spell Points", "Armor Class", "Thievery"
+ };
+ return _attributeNames;
+ }
+
+ const char **EFFECTIVENESS_NAMES() {
+ delete[] _effectivenessNames;
+ _effectivenessNames = new const char *[7] {
+ nullptr, "Dragons", "Undead", "Golems", "Bugs", "Monsters", "Beasts"
+ };
+ return _effectivenessNames;
+ }
+
+ const char **QUEST_ITEM_NAMES() {
+ delete[] _questItemNames;
+ _questItemNames = new const char *[85] {
+ "Deed to New Castle",
+ "Crystal Key to Witch Tower",
+ "Skeleton Key to Darzog's Tower",
+ "Enchanted Key to Tower of High Magic",
+ "Jeweled Amulet of the Northern Sphinx",
+ "Stone of a Thousand Terrors",
+ "Golem Stone of Admittance",
+ "Yak Stone of Opening",
+ "Xeen's Scepter of Temporal Distortion",
+ "Alacorn of Falista",
+ "Elixir of Restoration",
+ "Wand of Faery Magic",
+ "Princess Roxanne's Tiara",
+ "Holy Book of Elvenkind",
+ "Scarab of Imaging",
+ "Crystals of Piezoelectricity",
+ "Scroll of Insight",
+ "Phirna Root",
+ "Orothin's Bone Whistle",
+ "Barok's Magic Pendant",
+ "Ligono's Missing Skull",
+ "Last Flower of Summer",
+ "Last Raindrop of Spring",
+ "Last Snowflake of Winter",
+ "Last Leaf of Autumn",
+ "Ever Hot Lava Rock",
+ "King's Mega Credit",
+ "Excavation Permit",
+ "Cupie Doll",
+ "Might Doll",
+ "Speed Doll",
+ "Endurance Doll",
+ "Accuracy Doll",
+ "Luck Doll",
+ "Widget",
+ "Pass to Castleview",
+ "Pass to Sandcaster",
+ "Pass to Lakeside",
+ "Pass to Necropolis",
+ "Pass to Olympus",
+ "Key to Great Western Tower",
+ "Key to Great Southern Tower",
+ "Key to Great Eastern Tower",
+ "Key to Great Northern Tower",
+ "Key to Ellinger's Tower",
+ "Key to Dragon Tower",
+ "Key to Darkstone Tower",
+ "Key to Temple of Bark",
+ "Key to Dungeon of Lost Souls",
+ "Key to Ancient Pyramid",
+ "Key to Dungeon of Death",
+ "Amulet of the Southern Sphinx",
+ "Dragon Pharoah's Orb",
+ "Cube of Power",
+ "Chime of Opening",
+ "Gold ID Card",
+ "Silver ID Card",
+ "Vulture Repellant",
+ "Bridle",
+ "Enchanted Bridle",
+ "Treasure Map (Goto E1 x1, y11)",
+ "",
+ "Fake Map",
+ "Onyx Necklace",
+ "Dragon Egg",
+ "Tribble",
+ "Golden Pegasus Statuette",
+ "Golden Dragon Statuette",
+ "Golden Griffin Statuette",
+ "Chalice of Protection",
+ "Jewel of Ages",
+ "Songbird of Serenity",
+ "Sandro's Heart",
+ "Ector's Ring",
+ "Vespar's Emerald Handle",
+ "Queen Kalindra's Crown",
+ "Caleb's Magnifying Glass",
+ "Soul Box",
+ "Soul Box with Corak inside",
+ "Ruby Rock",
+ "Emerald Rock",
+ "Sapphire Rock",
+ "Diamond Rock",
+ "Monga Melon",
+ "Energy Disk"
+ };
+ return _questItemNames;
+ }
+
+ const char **QUEST_ITEM_NAMES_SWORDS() {
+ delete[] _questItemNamesSwords;
+ _questItemNamesSwords = new const char *[51] {
+ "Pass to Hart", "Pass to Impery", "Pass to town3", "Pass to town4", "Pass to town5",
+ "Key to Hart Sewers", "Key to Rettig's Pyramid", "Key to the Old Temple",
+ "Key to Canegtut's Pyramid", "Key to Ascihep's Pyramid", "Key to Dragon Tower",
+ "Key to Darkstone Tower", "Key to Temple of Bark", "Key to Dungeon of Lost Souls",
+ "Key to Ancient Pyramid", "Key to Dungeon of Death", "Red Magic Hammer",
+ "Green Magic Hammer", "Golden Magic Wand", "Silver Magic Hammer", "Magic Coin",
+ "Ruby", "Diamond Mineral", "Emerald", "Sapphire", "Treasure Map (Goto E1 x1, y11)",
+ "NOTUSED", "Melon", "Princess Crown", "Emerald Wand", "Druid Carving", "High Sign",
+ "Holy Wheel", "Double Cross", "Sky Hook", "Sacred Cow", "Staff of the Mountain",
+ "Hard Rock", "Soft Rock", "Rock Candy", "Ivy Plant", "Spirit Gem", "Temple of Sun holy lamp oil",
+ "Noams Hammer", "Positive Orb", "Negative Orb", "FireBane Staff", "Diamond Edged Pick",
+ "Monga Melon", "Energy Disk", "Old XEEN Quest Item"
+ };
+ return _questItemNamesSwords;
+ }
+
+ const char *NOT_PROFICIENT() {
+ return "\t000\v007\x3""c%ss are not proficient with a %s!";
+ }
+
+ const char *NO_ITEMS_AVAILABLE() {
+ return "\x3""c\n"
+ "\t000No items available.";
+ }
+
+ const char **CATEGORY_NAMES() {
+ delete[] _categoryNames;
+ _categoryNames = new const char *[4] { "Weapons", "Armor", "Accessories", "Miscellaneous" };
+ return _categoryNames;
+ }
+
+ const char *X_FOR_THE_Y() {
+ return "\x1\fd\r%s\v000\t000%s for %s the %s%s\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+ }
+
+ const char *X_FOR_Y() {
+ return "\x1\fd\r\x3l\v000\t000%s for %s\x3r\t000%s\x3l\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+ }
+
+ const char *X_FOR_Y_GOLD() {
+ return "\x1\fd\r\x3l\v000\t000%s for %s\t150Gold - %u%s\x3l\v011"
+ "\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+ }
+
+ const char *FMT_CHARGES() {
+ return "\x3rr\t000Charges\x3l";
+ }
+
+ const char *AVAILABLE_GOLD_COST() {
+ return "\x1\fd\r\x3l\v000\t000Available %s\t150Gold - %u\x3r\t000Cost"
+ "\x3l\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+ }
+
+ const char *CHARGES() {
+ return "Charges";
+ }
+
+ const char *COST() {
+ return "Cost";
+ }
+
+ const char **ITEM_ACTIONS() {
+ delete[] _itemActions;
+ _itemActions = new const char *[7] {
+ "Equip", "Remove", "Use", "Discard", "Enchant", "Recharge", "Gold"
+ };
+ return _itemActions;
+ }
+
+ const char *WHICH_ITEM() {
+ return "\t010\v005%s which item?";
+ }
+
+ const char *WHATS_YOUR_HURRY() {
+ return "\v007What's your hurry?\n"
+ "Wait till you get out of here!";
+ }
+
+ const char *USE_ITEM_IN_COMBAT() {
+ return "\v007To use an item in Combat, invoke the Use command on your turn!";
+ }
+
+ const char *NO_SPECIAL_ABILITIES() {
+ return "\v005\x3""c%s\fdhas no special abilities!";
+ }
+
+ const char *CANT_CAST_WHILE_ENGAGED() {
+ return "\x3""c\v007Can't cast %s while engaged!";
+ }
+
+ const char *EQUIPPED_ALL_YOU_CAN() {
+ return "\x3""c\v007You have equipped all the %ss you can!";
+ }
+
+ const char *REMOVE_X_TO_EQUIP_Y() {
+ return "\x3""c\v007You must remove %sto equip %s\b!";
+ }
+
+ const char *RING() {
+ return "ring";
+ }
+
+ const char *MEDAL() {
+ return "medal";
+ }
+
+ const char *CANNOT_REMOVE_CURSED_ITEM() {
+ return "\x3""You cannot remove a cursed item!";
+ }
+
+ const char *CANNOT_DISCARD_CURSED_ITEM() {
+ return "\3x""cYou cannot discard a cursed item!";
+ }
+
+ const char *PERMANENTLY_DISCARD() {
+ return "\v000\t000\x3lPermanently discard %s\fd?";
+ }
+
+ const char *BACKPACK_IS_FULL() {
+ return "\v005\x3""c\fd%s's backpack is full.";
+ }
+
+ const char **CATEGORY_BACKPACK_IS_FULL() {
+ delete[] _categoryBackpackIsFull;
+ _categoryBackpackIsFull = new const char *[4] {
+ "\v010\t000\x3""c%s's weapons backpack is full.",
+ "\v010\t000\x3""c%s's armor backpack is full.",
+ "\v010\t000\x3""c%s's accessories backpack is full.",
+ "\v010\t000\x3""c%s's miscellaneous backpack is full."
+ };
+ return _categoryBackpackIsFull;
+ }
+
+ const char *BUY_X_FOR_Y_GOLD() {
+ return "\x3l\v000\t000\fdBuy %s\fd for %u gold?";
+ }
+
+ const char *SELL_X_FOR_Y_GOLD() {
+ return "\x3l\v000\t000\fdSell %s\fd for %u gold?";
+ }
+
+ const char **SELL_X_FOR_Y_GOLD_ENDINGS() {
+ delete[] _sellXForYGoldEndings;
+ _sellXForYGoldEndings = new const char *[2] { "", "" };
+ return _sellXForYGoldEndings;
+ }
+
+ const char *NO_NEED_OF_THIS() {
+ return "\v005\x3""c\fdWe have no need of this %s\f!";
+ }
+
+ const char *NOT_RECHARGABLE() {
+ return "\v012\x3""c\fdNot Rechargeable. %s";
+ }
+
+ const char *NOT_ENCHANTABLE() {
+ return "\v012\t000\x3""cNot Enchantable. %s";
+ }
+
+ const char *SPELL_FAILED() {
+ return "Spell Failed!";
+ }
+
+ const char *ITEM_NOT_BROKEN() {
+ return "\fdThat item is not broken!";
+ }
+
+ const char **FIX_IDENTIFY() {
+ delete[] _fixIdentify;
+ _fixIdentify = new const char *[2] { "Fix", "Identify" };
+ return _fixIdentify;
+ }
+
+ const char *FIX_IDENTIFY_GOLD() {
+ return "\x3l\v000\t000%s %s\fd for %u gold?";
+ }
+
+ const char *IDENTIFY_ITEM_MSG() {
+ return "\fd\v000\t000\x3""cIdentify Item\x3l\n"
+ "\n"
+ "\v012%s\fd\n"
+ "\n"
+ "%s";
+ }
+
+ const char *ITEM_DETAILS() {
+ return "Proficient Classes\t132:\t140%s\n"
+ "to Hit Modifier\t132:\t140%s\n"
+ "Physical Damage\t132:\t140%s\n"
+ "Elemental Damage\t132:\t140%s\n"
+ "Elemental Resistance\t132:\t140%s\n"
+ "Armor Class Bonus\t132:\t140%s\n"
+ "Attribute Bonus\t132:\t140%s\n"
+ "Special Power\t132:\t140%s";
+ }
+
+ const char *ALL() {
+ return "All";
+ }
+
+ const char *FIELD_NONE() {
+ return "None";
+ }
+
+ const char *DAMAGE_X_TO_Y() {
+ return "%d to %d";
+ }
+
+ const char *ELEMENTAL_XY_DAMAGE() {
+ return "%+d %s Damage";
+ }
+
+ const char *ATTR_XY_BONUS() {
+ return "%+d %s";
+ }
+
+ const char *EFFECTIVE_AGAINST() {
+ return "x3 vs %s";
+ }
+
+ const char *QUESTS_DIALOG_TEXT() {
+ return "\r\x2\x3""c\v021\t017\f37I\fdtems\t085\f37Q\fduests\t153"
+ "\f37A\fduto Notes 221\f37U\fdp\t255\f37D\fdown"
+ "\t289Exit";
+ }
+
+ const char *CLOUDS_OF_XEEN_LINE() {
+ return "\b \b*-- \f04Clouds of Xeen\fd --";
+ }
+
+ const char *DARKSIDE_OF_XEEN_LINE() {
+ return "\b \b*-- \f04Darkside of Xeen\fd --";
+ }
+
+ const char *SWORDS_OF_XEEN_LINE() {
+ return "\b \b*-- \f04Swords of Xeen\fd --";
+ }
+
+ const char *NO_QUEST_ITEMS() {
+ return "\r\x3""c\v000 000Quest Items\x3l\x2\n"
+ "\n"
+ "\x3""cNo Quest Items";
+ }
+
+ const char *NO_CURRENT_QUESTS() {
+ return "\x3""c\v000\t000\n"
+ "\n"
+ "No Current Quests";
+ }
+
+ const char *NO_AUTO_NOTES() {
+ return "\x3""cNo Auto Notes";
+ }
+
+ const char *QUEST_ITEMS_DATA() {
+ return "\r\x1\fd\x3""c\v000\t000Quest Items\x3l\x2\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s";
+ }
+
+ const char *CURRENT_QUESTS_DATA() {
+ return "\r\x1\fd\x3""c\t000\v000Current Quests\x3l\x2\n"
+ "%s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "%s";
+ }
+
+ const char *AUTO_NOTES_DATA() {
+ return "\r\x1\fd\x3""c\t000\v000Auto Notes\x3l\x2\n"
+ "%s\x3l\n"
+ "%s\x3l\n"
+ "%s\x3l\n"
+ "%s\x3l\n"
+ "%s\x3l\n"
+ "%s\x3l\n"
+ "%s\x3l\n"
+ "%s\x3l\n"
+ "%s\x3l";
+ }
+
+ const char *REST_COMPLETE() {
+ return "\v000\t0008 hours pass. Rest complete.\n"
+ "%s\n"
+ "%d food consumed.";
+ }
+
+ const char *PARTY_IS_STARVING() {
+ return "\f07The Party is Starving!\fd";
+ }
+
+ const char *HIT_SPELL_POINTS_RESTORED() {
+ return "Hit Pts and Spell Pts restored.";
+ }
+
+ const char *TOO_DANGEROUS_TO_REST() {
+ return "Too dangerous to rest here!";
+ }
+
+ const char *SOME_CHARS_MAY_DIE() {
+ return "Some Chars may die. Rest anyway?";
+ }
+
+ const char *DISMISS_WHOM() {
+ return "\t010\v005Dismiss whom?";
+ }
+
+ const char *CANT_DISMISS_LAST_CHAR() {
+ return "You cannot dismiss your last character!";
+ }
+
+ const char *DELETE_CHAR_WITH_ELDER_WEAPON() {
+ return "\v000\t000This character has an Elder Weapon and cannot be deleted!";
+ }
+
+ const char **REMOVE_DELETE() {
+ delete[] _removeDelete;
+ _removeDelete = new const char *[2] { "Remove", "Delete" };
+ return _removeDelete;
+ }
+
+ const char *REMOVE_OR_DELETE_WHICH() {
+ return "\x3l\t010\v005%s which character?";
+ }
+
+ const char *YOUR_PARTY_IS_FULL() {
+ return "\v007Your party is full!";
+ }
+
+ const char *HAS_SLAYER_SWORD() {
+ return "\v000\t000This character has the Xeen Slayer Sword and cannot be deleted!";
+ }
+
+ const char *SURE_TO_DELETE_CHAR() {
+ return "Are you sure you want to delete %s the %s?";
+ }
+
+ const char *CREATE_CHAR_DETAILS() {
+ return "\f04\x3""c\x2\t144\v119\f37R\f04oll\t144\v149\f37C\f04reate"
+ "\t144\v179\f37ESC\f04\x3l\x1\t195\v021\f37M\f04gt"
+ "\t195\v045\f37I\f04nt\t195\v069\f37P\f04er\t195\v093\f37E\f04nd"
+ "\t195\v116\f37S\f04pd\t195\v140\f37A\f04cy\t195\v164\f37L\f04ck%s";
+ }
+
+ const char *NEW_CHAR_STATS() {
+ return "\f04\x3l\t022\v148Race\t055: %s\n"
+ "\t022Sex\t055: %s\n"
+ "\t022Class\t055:\n"
+ "\x3r\t215\v031%d\t215\v055%d\t215\v079%d\t215\v103%d\t215\v127%d"
+ "\t215\v151%d\t215\v175%d\x3l\t242\v020\f%.2dKnight\t242\v031\f%.2d"
+ "Paladin\t242\v042\f%.2dArcher\t242\v053\f%.2dCleric\t242\v064\f%.2d"
+ "Sorcerer\t242\v075\f%.2dRobber\t242\v086\f%.2dNinja\t242\v097\f%.2d"
+ "Barbarian\t242\v108\f%.2dDruid\t242\v119\f%.2dRanger\f04\x3""c"
+ "\t265\v142Skills\x3l\t223\v155%s\t223\v170%s%s";
+ }
+
+ const char *NAME_FOR_NEW_CHARACTER() {
+ return "\x3""cEnter a Name for this Character\n\n";
+ }
+
+ const char *SELECT_CLASS_BEFORE_SAVING() {
+ return "\v006\x3""cSelect a Class before saving.\x3l";
+ }
+
+ const char *EXCHANGE_ATTR_WITH() {
+ return "Exchange %s with...";
+ }
+
+ const char *COMBAT_DETAILS() {
+ return "\r\f00\x3""c\v000\t000\x2""Combat%s%s%s\x1";
+ }
+
+ const char *NOT_ENOUGH_TO_CAST() {
+ return "\x3""c\v010Not enough %s to Cast %s";
+ }
+
+ const char **SPELL_CAST_COMPONENTS() {
+ delete[] _spellCastComponents;
+ _spellCastComponents = new const char *[2] { "Spell Points", "Gems" };
+ return _spellCastComponents;
+ }
+
+ const char *CAST_SPELL_DETAILS() {
+ return "\r\x2\x3""c\v122\t013\f37C\fdast\t040\f37N\fdew"
+ "\t067ESC\x1\t000\v000\x3""cCast Spell\n"
+ "\n"
+ "%s\x3l\n"
+ "\n"
+ "Spell Ready:\x3""c\n"
+ "\n"
+ "\f09%s\fd\x2\x3l\n"
+ "\v082Cost\x3r\t000%u/%u\x3l\n"
+ "Cur SP\x3r\t000%u\x1";
+ }
+
+ const char *PARTY_FOUND() {
+ return "\x3""cThe Party Found:\n"
+ "\n"
+ "\x3r\t000%u Gold\n"
+ "%u Gems";
+ }
+
+ const char *BACKPACKS_FULL_PRESS_KEY() {
+ return "\v007\f12Warning! BackPacks Full!\fd\n"
+ "Press a Key";
+ }
+
+ const char *HIT_A_KEY() {
+ return "\x3l\v120\t000\x4""077\x3""c\f37Hit a key\fd";
+ }
+
+ const char *GIVE_TREASURE_FORMATTING() {
+ return "\x3l\v060\t000\x4""077\n"
+ "\x4""077\n"
+ "\x4""077\n"
+ "\x4""077\n"
+ "\x4""077\n"
+ "\x4""077";
+ }
+
+ const char *X_FOUND_Y() {
+ return "\v060\t000\x3""c%s found: %s";
+ }
+
+ const char *ON_WHO() {
+ return "\x3""c\v009On Who?";
+ }
+
+ const char *WHICH_ELEMENT1() {
+ return "\r\x3""c\x1Which Element?\x2\v034\t014\f15F\fdire\t044"
+ "\f15E\fdlec\t074\f15C\fdold\t104\f15A\fdcid\x1";
+ }
+
+ const char *WHICH_ELEMENT2() {
+ return "\r\x3""cWhich Element?\x2\v034\t014\f15F\fdire\t044"
+ "\f15E\fdlec\t074\f15C\fdold\t104\f15A\fdcid\x1";
+ }
+
+ const char *DETECT_MONSTERS() {
+ return "\x3""cDetect Monsters";
+ }
+
+ const char *LLOYDS_BEACON() {
+ return "\r\x3""c\v000\t000\x1Lloyd's Beacon\n"
+ "\n"
+ "Last Location\n"
+ "\n"
+ "%s\x3l\n"
+ "x = %d\x3r\t000y = %d\x3""c\x2\v122\t021\f15S\fdet\t060\f15R\fdeturn\x1";
+ }
+
+ const char *HOW_MANY_SQUARES() {
+ return "\x3""cTeleport\nHow many squares %s (1-9)\n";
+ }
+
+ const char *TOWN_PORTAL() {
+ return "\x3""cTown Portal\x3l\n"
+ "\n"
+ "\t0101. %s\n"
+ "\t0102. %s\n"
+ "\t0103. %s\n"
+ "\t0104. %s\n"
+ "\t0105. %s\x3""c\n"
+ "\n"
+ "To which Town (1-5)\n"
+ "\n";
+ }
+
+ const char *TOWN_PORTAL_SWORDS() {
+ return "\x3""cTown Portal\x3l\n"
+ "\n"
+ "\t0101. %s\n"
+ "\t0102. %s\n"
+ "\t0103. %s\x3""c\n"
+ "\n"
+ "To which Town (1-3)\n"
+ "\n";
+ }
+
+ const char *MONSTER_DETAILS() {
+ return "\x3l\n"
+ "%s\x3""c\t100%s\t140%u\t180%u\x3r\t000%s";
+ }
+
+ const char **MONSTER_SPECIAL_ATTACKS() {
+ delete[] _monsterSpecialAttacks;
+ _monsterSpecialAttacks = new const char *[23] {
+ "None", "Magic", "Fire", "Elec", "Cold", "Poison", "Energy", "Disease",
+ "Insane", "Asleep", "CurseItm", "InLove", "DrnSPts", "Curse", "Paralys",
+ "Uncons", "Confuse", "BrkWpn", "Weak", "Erad", "Age+5", "Dead", "Stone"
+ };
+ return _monsterSpecialAttacks;
+ }
+
+ const char *IDENTIFY_MONSTERS() {
+ return "Name\x3""c\t100HP\t140AC\t177#Atks\x3r\t000Special%s%s%s";
+ }
+
+ const char *MOONS_NOT_ALIGNED() {
+ return "\x3""c\v012\t000The moons are not aligned. Passage to the %s is unavailable";
+ }
+
+ const char *AWARDS_FOR() {
+ return "\r\x1\fd\x3""c\v000\t000Awards for %s the %s\x3l\x2\n"
+ "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\x1";
+ }
+
+ const char *AWARDS_TEXT() {
+ return "\r\x2\x3""c\v021\t221\f37U\fdp\t255\f37D\fdown\t289Exit";
+ }
+
+ const char *NO_AWARDS() {
+ return "\x3""cNo Awards";
+ }
+
+ const char *WARZONE_BATTLE_MASTER() {
+ return "The Warzone\n\t125Battle Master";
+ }
+
+ const char *WARZONE_MAXED() {
+ return "What! You again? Go pick on someone your own size!";
+ }
+
+ const char *WARZONE_LEVEL() {
+ return "What level of monsters? (1-10)\n";
+ }
+
+ const char *WARZONE_HOW_MANY() {
+ return "How many monsters? (1-20)\n";
+ }
+
+ const char *PICKS_THE_LOCK() {
+ return "\x3""c\v010%s picks the lock!\nPress any key.";
+ }
+
+ const char *UNABLE_TO_PICK_LOCK() {
+ return "\x3""c\v010%s was unable to pick the lock!\nPress any key.";
+ }
+
+ const char *CONTROL_PANEL_TEXT() {
+ return "\x1\f00\x3""c\v000\t000Control Panel\x3r"
+ "\v022\t045\f06L\fdoad:\t124\f06E\fdfx:"
+ "\v041\t045\f06S\fdave:\t124\f06M\fdusic:"
+ "\v060\t045\f06Q\fduit:"
+ "\v080\t084Mr \f06W\fdizard:%s\t000\x1";
+ }
+
+ const char *CONTROL_PANEL_BUTTONS() {
+ return "\x3""c\f11"
+ "\v022\t062load\t141%s"
+ "\v041\t062save\t141%s"
+ "\v060\t062exit"
+ "\v079\t102Help\fd";
+ }
+
+ const char *ON() {
+ return "\f15on\f11";
+ }
+
+ const char *OFF() {
+ return "\f32off\f11";
+ }
+
+ const char *CONFIRM_QUIT() {
+ return "Are you sure you want to quit?";
+ }
+
+ const char *MR_WIZARD() {
+ return "Are you sure you want Mr.Wizard's Help ?";
+ }
+
+ const char *NO_LOADING_IN_COMBAT() {
+ return "No Loading Allowed in Combat!";
+ }
+
+ const char *NO_SAVING_IN_COMBAT() {
+ return "No Saving Allowed in Combat!";
+ }
+
+ const char *QUICK_FIGHT_TEXT() {
+ return "\r\fd\x3""c\v000\t000QuickFight Options\n\n"
+ "%s\x3l\n\n"
+ "Current\x3r\n"
+ "\t000%s\x2\x3""c\v122\t021\f37N\f04ext\t060Exit\x1";
+ }
+
+ const char **QUICK_FIGHT_OPTIONS() {
+ delete[] _quickFightOptions;
+ _quickFightOptions = new const char *[4] { "Attack", "Cast", "Block", "Run" };
+ return _quickFightOptions;
+ }
+
+ const char **WORLD_END_TEXT() {
+ delete[] _worldEndText;
+ _worldEndText = new const char *[9] {
+ "\n\n\n\n\n\n\n"
+ "Congratulations Adventurers!\n\n"
+ "Let the unification ceremony begin!",
+ "And so the call went out to the people throughout the lands of Xeen"
+ " that the prophecy was nearing completion.",
+ "They came in great numbers to witness the momentous occasion.",
+ "\v026The Dragon Pharoah presided over the ceremony.",
+ "\v026Queen Kalindra presented the Cube of Power.",
+ "\v026Prince Roland presented the Xeen Sceptre.",
+ "\v026Together, they placed the Cube of Power...",
+ "\v026and the Sceptre, onto the Altar of Joining.",
+ "With the prophecy complete, the two sides of Xeen were united as one",
+ };
+ return _worldEndText;
+ }
+
+ const char *WORLD_CONGRATULATIONS() {
+ return "\x3""cCongratulations\n\n"
+ "Your Final Score is:\n\n"
+ "%010lu\n"
+ "\x3l\n"
+ "Please send this score to the Ancient's Headquarters where "
+ "you'll be added to the Hall of Legends!\n\n"
+ "Ancient's Headquarters\n"
+ "New World Computing, Inc.\n"
+ "P.O. Box 4302\n"
+ "Hollywood, CA 90078";
+ }
+
+ const char *WORLD_CONGRATULATIONS2() {
+ return "\n\n\n\n\n\n"
+ "But wait... there's more!\n"
+ "\n\n"
+ "Include the message\n"
+ "\"%s\"\n"
+ "with your final score and receive a special bonus.";
+ }
+
+ const char *CLOUDS_CONGRATULATIONS1() {
+ return "\f23\x3l"
+ "\v000\t000Please send this score to the Ancient's Headquarters "
+ "where you'll be added to the Hall of Legends!\f33\x3""c"
+ "\v070\t000Press a Key";
+ }
+
+ const char *CLOUDS_CONGRATULATIONS2() {
+ return "\f23\x3l"
+ "\v000\t000Ancient's Headquarters\n"
+ "New World Computing, Inc.\n"
+ "P.O. Box 4302\n"
+ "Hollywood, CA 90078-4302\f33\x3""c"
+ "\v070\t000Press a Key";
+ }
+
+ const char **GOOBER() {
+ delete[] _goober;
+ _goober = new const char *[3] {
+ "", "I am a Goober!", "I am a Super Goober!"
+ };
+ return _goober;
+ }
+
+ const char *DIFFICULTY_TEXT() {
+ return "\v000\t000\x3""cSelect Game Preference";
+ }
+
+ const char *SAVE_OFF_LIMITS() {
+ return "\x3""c\v002\t000The Gods of Game Restoration deem this area off limits!\n"
+ "Sorry, no saving in this maze.";
+ }
+
+ const char *CLOUDS_INTRO1() {
+ return "\f00\v082\t040\x3"
+ "cKing Burlock\v190\t040Peasants\v082\t247"
+ "Lord Xeen\v190\t258Xeen's Pet\v179\t150Crodo";
+ }
+
+ const char *DARKSIDE_ENDING1() {
+ return "\n\x3" "cCongratulations\n"
+ "\n"
+ "Your Final Score is:\n"
+ "\n"
+ "%010lu\n"
+ "\x3" "l\n"
+ "Please send this score to the Ancient's Headquarters "
+ "where you'll be added to the Hall of Legends!\n"
+ "\n"
+ "Ancient's Headquarters\n"
+ "New World Computing, Inc.\n"
+ "P.O. Box 4302\n"
+ "Hollywood, CA 90078";
+ }
+
+ const char *DARKSIDE_ENDING2() {
+ return "\n"
+ "Adventurers,\n"
+ "\n"
+ "I will save your game in Castleview.\n"
+ "\n"
+ "The World of Xeen still needs you!\n"
+ "\n"
+ "Load your game afterwards and come visit me in the "
+ "Great Pyramid for further instructions";
+ }
+
+ const char *PHAROAH_ENDING_TEXT1() {
+ return "\fd\v001\t001%s\x3" "c\t000\v180Press a Key!\x3" "l";
+ }
+
+ const char *PHAROAH_ENDING_TEXT2() {
+ return "\f04\v000\t000%s\x3" "c\t000\v180Press a Key!\x3" "l\fd";
+ }
};
-static const char* const SURFACE_NAMES[16] = {
- "water.srf", "dirt.srf", "grass.srf", "snow.srf", "swamp.srf",
- "lava.srf", "desert.srf", "road.srf", "dwater.srf", "tflr.srf",
- "sky.srf", "croad.srf", "sewer.srf", "cloud.srf", "scortch.srf",
- "space.srf"
+class RU : public LangConstants {
+public:
+ const char *CLOUDS_CREDITS() {
+ return
+ "\v012\t000\x3""c\f35¤¥ï ¨ à㪮¢®¤á⢮ ¯à®¥ªâ®¬:\n"
+ "\f17¦® ¥£¥¬\x3""l\n"
+ "\n"
+ "\t025\f35à®£à ¬¬¨áâë:\n"
+ "\t035\f17 ઠ®«¤ãí««\n"
+ "\t035¥©¢ íâíãí©\n"
+ "\n"
+ "\t025\f35㤨®á¨á⥬ ¨ §¢ãª:\n"
+ "\t035\f17®¤¤ ¥¤à¨ªá\n"
+ "\n"
+ "\t025\f35ã§ëª ¨ à¥çì:\n"
+ "\t035\f17¨¬ ««¨\n"
+ "\n"
+ "\t025\f35æ¥ à¨©:\n"
+ "\t035\f17®« â¥à\n"
+ "\t035¥¡¡¨ ñàä¨\n"
+ "\t035¦® ¥£¥¬\v012\n"
+ "\n"
+ "\n"
+ "\t180\f35㤮¦¨ª¨:\n"
+ "\t190\f17㨠¦®á®\n"
+ "\t190¦® â . ¢¨\n"
+ "\t190®¨â ®£-¥¬á â\n"
+ "\t190¦ã«¨ï « ®\n"
+ "\t190¨ª म àà¥à \n"
+ "\n"
+ "\t180\f35¥áâ¥àë:\n"
+ "\t190\f17¥¤¦ ¬¨ ¥â\n"
+ "\t190 ਮ ᪠¬¨«« \n"
+ "\t190¨ç ठᯨ\n"
+ "\t190ª®ââ ª¤í¨¥«\n"
+ "\t190«¥©â® ¥â§¥à\n"
+ "\t190 ©ª« ã à¥á\x3""c";
+ }
+
+ const char *DARK_SIDE_CREDITS() {
+ return
+ "\v012\t000\x3""c\f35Designed and Directed By:\n"
+ "\f17Jon Van Caneghem\x3l\n"
+ "\n"
+ "\t025\f35Programming:\n"
+ "\t035\f17Mark Caldwell\n"
+ "\t035Dave Hathaway\n"
+ "\n"
+ "\t025\f35Sound System & FX:\n"
+ "\t035\f17Mike Heilemann\n"
+ "\n"
+ "\t025\f35Music & Speech:\n"
+ "\t035\f17Tim Tully\n"
+ "\n"
+ "\t025\f35Writing:\n"
+ "\t035\f17Paul Rattner\n"
+ "\t035Debbie Van Caneghem\n"
+ "\t035Jon Van Caneghem\v012\n"
+ "\n"
+ "\n"
+ "\t180\f35Graphics:\n"
+ "\t190\f17Jonathan P. Gwyn\n"
+ "\t190Bonita Long-Hemsath\n"
+ "\t190Julia Ulano\n"
+ "\t190Ricardo Barrera\n"
+ "\n"
+ "\t180\f35Testing:\n"
+ "\t190\f17Benjamin Bent\n"
+ "\t190Christian Dailey\n"
+ "\t190Mario Escamilla\n"
+ "\t190Marco Hunter\n"
+ "\t190Robert J. Lupo\n"
+ "\t190Clayton Retzer\n"
+ "\t190David Vela\x3""c";
+ }
+
+ const char *SWORDS_CREDITS1() {
+ return "\v012\x3"
+ "c\f35Published By New World Computing, Inc.\f17\n"
+ "Developed By CATware, Inc.\x3l\n"
+ "\f01Design and Direction\t180Series Created by\n"
+ "\t020Bill Fawcett\t190John Van Caneghem\n"
+ "\n"
+ "\t010Story Contributions\t180Producer & Manual\n"
+ "\t020Ellen Guon\t190Dean Rettig\n"
+ "\n"
+ "\t010Programming & Ideas\t180Original Programming\n"
+ "\t020David Potter\t190Mark Caldwell\n"
+ "\t020Rod Retterath\t190Dave Hathaway\n"
+ "\n"
+ "\t010Manual Illustrations\t180Graphic Artists\n"
+ "\t020Todd Cameron Hamilton\t190Jonathan P. Gwyn\n"
+ "\t020James Clouse\t190Bonnie Long-Hemsath\n"
+ "\t190Julia Ulano\n"
+ "\t190Ricardo Barrera\n";
+ }
+
+ const char *SWORDS_CREDITS2() {
+ return "\f05\v012\t000\x3l\n"
+ "\t100Sound Programming\n"
+ "\t110Todd Hendrix\n"
+ "\n"
+ "\t100Music\n"
+ "\t110Tim Tully\n"
+ "\t110Quality Assurance Manager\n"
+ "\t110Peter Ryu\n"
+ "\t100Testers\n"
+ "\t110Walter Johnson\n"
+ "\t110Bryan Farina\n"
+ "\t110David Baton\n"
+ "\t110Jack Nalls\n";
+ }
+
+ const char *OPTIONS_MENU() {
+ return
+ "\r\x1\x3""c\fd¥ç ¨ £¨ï\n"
+ "%s ᨠ\x2\n"
+ "\v%.3dCopyright (c) %d NWC, Inc.\n"
+ "All Rights Reserved\x1";
+ }
+
+ const char **GAME_NAMES() {
+ delete[] _gameNames;
+ _gameNames = new const char *[3] { "¡« ª ", "Darkside", "World" };
+ return _gameNames;
+ }
+
+ const char *THE_PARTY_NEEDS_REST() {
+ return "\v012âàï¤ ã¦¤ ¥âáï ¢ ®â¤ëå¥!";
+ }
+
+ const char *WHO_WILL() {
+ return "\x3""c\v000\t000%s\n\n%s?\n\v055F1 - F%d";
+ }
+
+ const char *HOW_MUCH() {
+ return "\x3""cª®«ìª®\n\n";
+ }
+
+ const char *WHATS_THE_PASSWORD() {
+ return "\x3"
+ "cWhat's the Password?\n"
+ "\n"
+ "Please turn to page %u, go to\n"
+ "line %u, and type in word %u.\v067\t000Spaces are not counted as words or lines. "
+ "Hyphenated words are treated as one word. Any line that has any text is considered a line."
+ "\x3"
+ "c\v040\t000\n";
+ }
+
+ const char *PASSWORD_INCORRECT() {
+ return "\x3"
+ "c\v040\n"
+ "\f32Incorrect!\fd";
+ }
+
+ const char *IN_NO_CONDITION() {
+ return "\v007%s ¥ ¢ á®áâ®ï¨¨ çâ®-«¨¡® ᤥ« âì!";
+ }
+
+ const char *NOTHING_HERE() {
+ return "\x3""c\v010¤¥áì ¨ç¥£® ¥â.";
+ }
+
+ const char **WHO_ACTIONS() {
+ delete[] _whoActions;
+ _whoActions = new const char *[32] {
+ "â® ®¡ëé¥â",
+ "â® ®âªà®¥â",
+ "â® ¢ë¯ì¥â",
+ "â® ¡ã¤¥â ª®¯ âì",
+ "â® ¯®âண ¥â",
+ "â® ¯à®çâñâ",
+ "®£® ãç¨âì",
+ "â® ¢®§ì¬ñâ",
+ "⮠㤠à¨â",
+ "â® ãªà ¤ñâ",
+ "â® ¤ áâ ¢§ïâªã",
+ "â® § ¯« â¨â",
+ "â® ¯à¨á拉â",
+ "â® ¯®¯à®¡ã¥â",
+ "â® ¥£® ¯®¢¥àñâ",
+ "â® ¨áªã¯ñâáï",
+ "â® ¥£® ã¨ç⮦¨â",
+ "â® ¢ë¤¥à¥â",
+ "â® á¯ãáâ¨âáï",
+ "â® ¡à®á¨â ¬®¥âªã",
+ "pray",
+ "â® áâ ¥â ç«¥®¬",
+ "act",
+ "â® å®ç¥â áë£à âì",
+ "â® ¦¬ñâ",
+ "rub",
+ "pick",
+ "eat",
+ "sign",
+ "close",
+ "look",
+ "try"
+ };
+ return _whoActions;
+ }
+
+ const char **WHO_WILL_ACTIONS() {
+ delete[] _whoWillActions;
+ _whoWillActions = new const char *[4] {
+ "âªàëâì à¥èñâªã",
+ "âªàëâì ¤¢¥àì",
+ " áªàëâì ᢨ⮪",
+ "ë¡¥à¨â¥ ¯¥àá® ¦ "
+ };
+ return _whoWillActions;
+ }
+
+ const char **DIRECTION_TEXT_UPPER() {
+ delete[] _directionTextUpper;
+ _directionTextUpper = new const char *[4] { "NORTH", "EAST", "SOUTH", "WEST" };
+ return _directionTextUpper;
+ }
+
+ const char **DIRECTION_TEXT() {
+ delete[] _directionText;
+ _directionText = new const char *[4] {
+ "¥¢¥à",
+ "®á⮪",
+ "£",
+ " ¯ ¤"
+ };
+ return _directionText;
+ }
+
+ const char **RACE_NAMES() {
+ delete[] _raceNames;
+ _raceNames = new const char *[5] {
+ "¥«®¢¥ª",
+ "«ìä",
+ "¢®àä",
+ "®¬",
+ "®«ã®àª"
+ };
+ return _raceNames;
+ }
+
+ const char **ALIGNMENT_NAMES() {
+ delete[] _alignmentNames;
+ _alignmentNames = new const char *[3] {
+ "®à®è¨©",
+ "¥©âà «",
+ "«®©(- ï)"
+ };
+ return _alignmentNames;
+ }
+
+ const char **SEX_NAMES() {
+ delete[] _sexNames;
+ _sexNames = new const char *[2] {
+ "ã¦ç¨ ",
+ "¥é¨ "
+ };
+ return _sexNames;
+ }
+
+ const char **SKILL_NAMES() {
+ delete[] _skillNames;
+ _skillNames = new const char *[18] {
+ "®à®¢á⢮\t100",
+ "à㦥©¨ª",
+ "áâ஫®£",
+ "â«¥â",
+ " à⮣à ä",
+ "à¥áâ®®á¥æ",
+ "ã¢á⢮ ¯à ¢«¥¨ï",
+ "§ëª®¢¥¤",
+ "㯥æ",
+ "ª «®« §",
+ "âãଠ",
+ "«¥¤®¯ëâ",
+ " £¨áâà ¬®«¨â¢ë",
+ "®¢ª®áâì ¯ «ì楢",
+ "«®¢¥æ",
+ "å®â¨ª",
+ "®á¯à¨ï⨥",
+ "ã¢á⢮ ®¯ á®áâ¨"
+ };
+ return _skillNames;
+ }
+
+ const char **CLASS_NAMES() {
+ delete[] _classNames;
+ _classNames = new const char *[11] {
+ "ëæ àì",
+ " « ¤¨",
+ "ã稪",
+ "«¨à¨ª",
+ " £",
+ "®à",
+ "¨¤§ï",
+ " ࢠà",
+ "à㨤",
+ "«¥¤®¯ëâ",
+ nullptr
+ };
+ return _classNames;
+ }
+
+ const char **CONDITION_NAMES() {
+ delete[] _conditionNames;
+ _conditionNames = new const char *[17] {
+ "ப«ï⨥",
+ "Heart Broken",
+ "« ¡®áâì",
+ "âà ¢«¥¨¥",
+ "®«¥§ì",
+ "¥§ã¬¨¥",
+ "«î¡«ñ(- )",
+ " ¢¥á¥«¥",
+ "®",
+ " ã먨",
+ " á¬ï⥨¨",
+ " à «¨ç",
+ ".á®§ ¨ï",
+ "¥àâ¢",
+ " ¬¥ì",
+ "¨ç⮦¥",
+ "®à®è¥¥"
+ };
+ return _conditionNames;
+ }
+
+ const char *GOOD() {
+ return "®à®è¥¥";
+ }
+
+ const char *BLESSED() {
+ return "\n\t014« £®á«®¢¥¨¥\t095%+d";
+ }
+
+ const char *POWER_SHIELD() {
+ return "\n\t014¨«®¢®© é¨â\t095%+d";
+ }
+
+ const char *HOLY_BONUS() {
+ return "\n\t014¢ï⮩ ¤ à\t095%+d";
+ }
+
+ const char *HEROISM() {
+ return "\n\t014㦥á⢮\t095%+d";
+ }
+
+ const char *IN_PARTY() {
+ return "\f15 ®âà拉\fd";
+ }
+
+ const char *PARTY_DETAILS() {
+ return
+ "\015\003l\002\014""00"
+ "\013""001""\011""035%s"
+ "\013""009""\011""035%s"
+ "\013""017""\011""035%s"
+ "\013""025""\011""035%s"
+ "\013""001""\011""136%s"
+ "\013""009""\011""136%s"
+ "\013""017""\011""136%s"
+ "\013""025""\011""136%s"
+ "\013""044""\011""035%s"
+ "\013""052""\011""035%s"
+ "\013""060""\011""035%s"
+ "\013""068""\011""035%s"
+ "\013""044""\011""136%s"
+ "\013""052""\011""136%s"
+ "\013""060""\011""136%s"
+ "\013""068""\011""136%s";
+ }
+
+ const char *PARTY_DIALOG_TEXT() {
+ return
+ "%s\x2\x3""c\v106\t013¢¥àå\t048¨§\t083\f37\fd¤ «\t118\f37\fdë£"
+ "\t153\f37\fd®§¤\t188\f37ë\fd室\x1";
+ }
+
+ const char *NO_ONE_TO_ADVENTURE_WITH() {
+ return " ¬ ¥ á ª¥¬ ¯ãâ¥è¥á⢮¢ âì";
+ }
+
+ const char *YOUR_ROSTER_IS_FULL() {
+ return " è ᯨ᮪ ¯®«®!";
+ }
+
+ const char *PLEASE_WAIT() {
+ return "\fd\x3""c\t000\v002®¤®¦¤¨â¥...";
+ }
+
+ const char *OOPS() {
+ return "\x3""c\t000\v002¯á...";
+ }
+
+ const char *BANK_TEXT() {
+ return
+ "\r\x2\x3""c\v122\t013"
+ "\f37\fdª«\t040\f37\fd\t067ESC"
+ "\x1\t000\v000 ª ᨠ\v015\n"
+ " ª\x3""l\n"
+ "®«\x3""r\t000%s\x3""l\n"
+ "«¬§\x3""r\t000%s\x3""c\n"
+ "\n"
+ "âàï¤\x3""l\n"
+ "®«\x3""r\t000%s\x3""l\n"
+ "«¬§\x3""r\t000%s";
+ }
+
+ const char *BLACKSMITH_TEXT() {
+ return
+ "\x1\r\x3""c\v000\t000"
+ " ¢ª \t039\v027%s\x3""l\v046\n"
+ "\t011\f37\fd¬®âà¥âì\n"
+ "\t000\v090®«\x3""r\t000%s"
+ "\x2\x3""c\v122\t040ESC\x1";
+ }
+
+ const char *GUILD_NOT_MEMBER_TEXT() {
+ return "\në ¤®«¦ë ¡ëâì ç«¥®¬ £¨«ì¤¨¨, çâ®¡ë ¯®ªã¯ âì § ª«¨ ¨ï.";
+ }
+
+ const char *GUILD_TEXT() {
+ return
+ "\x3""c\v027\t039%s"
+ "\x3""l\v046\n"
+ "\t012\f37\fd㯨âì\n"
+ "\t012\f37\fd¯¨á ¨ï";
+ }
+
+ const char *TAVERN_TEXT() {
+ return
+ "\r\x3""c\v000\t000 ¢¥à \t039"
+ "\v027%s%s\x3""l\t000"
+ "\v090®«\x3""r\t000%s\x2\x3""c\v122"
+ "\t021\f37\fdâ¤ëå\t060ESC\x1";
+ }
+
+ const char *FOOD_AND_DRINK() {
+ return
+ "\x3""l\t017\v046\f37\fd믨âì\n"
+ "\t017\f37
\fd¤ \n"
+ "\t017\f37\fd ¥¢ë¥\n"
+ "\t017\f37\fd«ãå¨";
+ }
+
+ const char *GOOD_STUFF() {
+ return
+ "\n"
+ "\n"
+ "¥¤ãà®\n"
+ "\n"
+ " ¦¬¨â¥ ª« ¢¨èã!";
+ }
+
+ const char *HAVE_A_DRINK() {
+ return "\n¯¥à¢ ¢ë¯¥©â¥\n\n ¦¬¨â¥ ª« ¢¨èã!";
+ }
+
+ const char *YOURE_DRUNK() {
+ return "\n\në ¯ìïë\n\n ¦¬¨â¥ ª« ¢¨èã!";
+ }
+
+ const char *TEMPLE_TEXT() {
+ return
+ "\r\x3""c\v000\t000à ¬"
+ "\t039\v027%s\x3""l\t000\v046"
+ "\f37\fd¥ç¨âì\x3""r\t000%lu\x3""l\n"
+ "\f37\fd à\x3""r\t000%lu\x3""l\n"
+ "\f37\fdப«\x3""r\t000%s"
+ "\x3""l\t000\v090®«\x3""r\t000%s"
+ "\x2\x3""c\v122\t040ESC\x1";
+ }
+
+ const char *EXPERIENCE_FOR_LEVEL() {
+ return "%s\n㦮 %lu ®çª®¢ ®¯ëâ ¤«ï ã஢ï %u.";
+ }
+
+ const char *TRAINING_LEARNED_ALL() {
+ return "%s\në 㦥 § ¥â¥ ¢áñ, ç¥¬ã ¬ë ¬®¦¥¬ ¢ á ãç¨âì!";
+ }
+
+ const char *ELIGIBLE_FOR_LEVEL() {
+ return
+ "%s ¬®¦¥â ®¡ãç âìáï ¤® ã஢ï %d.\x3""l\n"
+ "\v081¥ \x3""r\t000%lu";
+ }
+
+ const char *TRAINING_TEXT() {
+ return
+ "\r\x3""c¡ã票¥\n"
+ "\n"
+ "%s\x3""l\v090\t000®«\x3""r\t000%s\x2\x3""c\v122\t021"
+ "\f37\fd¡ã票¥\t060ESC\x1";
+ }
+
+ const char *GOLD_GEMS() {
+ return
+ "\x3""c\v000\t000%s\x3""l\n"
+ "\n"
+ "®«\x3""r\t000%s\x3""l\n"
+ "«¬§\x3""r\t000%s\x2\x3""c\v096\t007\f37\fd«¬§\t035\f37\fd®«\t067ESC\x1";
+ }
+
+ const char *GOLD_GEMS_2() {
+ return
+ "\t000\v000\x3""c%s\x3""l\n"
+ "\n"
+ "\x4""077®«\x3""r\t000%s\x3""l\n"
+ "\x4""077«¬§\x3""r\t000%s\x3""l\t000\v051\x4""077\n"
+ "\x4""077";
+ }
+
+ const char **DEPOSIT_WITHDRAWL() {
+ delete[] _depositWithdrawl;
+ _depositWithdrawl = new const char *[2] { "®«®¦¨âì áçñâ", "ïâì á® áçñâ " };
+ return _depositWithdrawl;
+ }
+
+ const char *NOT_ENOUGH_X_IN_THE_Y() {
+ return "\x3""c\v012¥¤®áâ â®ç® %s %s!\x3""l";
+ }
+
+ const char *NO_X_IN_THE_Y() {
+ return "\x3""c\v012¥â %s %s!\x3""l";
+ }
+
+ const char **STAT_NAMES() {
+ delete[] _statNames;
+ _statNames = new const char *[16] {
+ "¨« ", "⥫«¥ªâ", "¨« ¤ãå ", "«®¦¥¨¥", "ª®à®áâì",
+ "¥âª®áâì", "¤ ç ", "®§à áâ", "஢¥ì", "« áá § é¨âë", "¤®à®¢ì¥",
+ "窨 ¬ £¨¨", "á⮩稢®áâ¨", " ¢ëª¨", " £à ¤ë", "¯ëâ"
+ };
+ return _statNames;
+ }
+
+ const char **CONSUMABLE_NAMES() {
+ delete[] _consumableNames;
+ _consumableNames = new const char *[4] { "®«®â®", "«¬ §ë", "¨é ", "®áâ®ï¨¥" };
+ return _consumableNames;
+ }
+
+ const char **WHERE_NAMES() {
+ delete[] _whereNames;
+ _whereNames = new const char *[2] { "ã ®âàï¤ ", "¢ ¡ ª¥" };
+ return _whereNames;
+ }
+
+ const char *AMOUNT() {
+ return "\x3""c\t000\v051ª®«ìª®\x3""l\n";
+ }
+
+ const char *FOOD_PACKS_FULL() {
+ return "\v007 è¨ à ª¨ 㦥 ¯®«¥ë!";
+ }
+
+ const char *BUY_SPELLS() {
+ return
+ "\x3""c\v027\t039%s\x3""l\v046\n"
+ "\t012\f37\fd㯨âì\n"
+ "\t012\f37\fd¯¨á ¨ï";
+ }
+
+ const char *GUILD_OPTIONS() {
+ return
+ "\x1\r\f00\x3""c\v000\t000¨«ì¤¨ï\n"
+ "%s\x3""l\t000\v090®«"
+ "\x3""r\t000%s\x2\x3""c\v122\t040ESC\x1";
+ }
+
+ const char *NOT_A_SPELL_CASTER() {
+ return "ë ¥ § ª«¨ ⥫ì...";
+ }
+
+ const char *SPELLS_LEARNED_ALL() {
+ return
+ "ë 㦥 § ¥â¥ ¢áñ,\n"
+ "\t010ç¥¬ã ¬ë ¬®¦¥¬ ¢ á\n"
+ "\t010 ãç¨âì!\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n";
+ }
+
+ const char *SPELLS_FOR() {
+ return "\r\fd%s\x2\x3""c\t000\v002 ª«¨ ¨ï";
+ }
+
+ const char *SPELL_LINES_0_TO_9() {
+ return "\x2\x3l\v015\t0011\n2\n3\n4\n5\n6\n7\n8\n9\n0";
+ }
+
+ const char *SPELLS_DIALOG_SPELLS() {
+ return
+ "\x3l\v015"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l"
+ "\t004\v110%s - %u\x1";
+ }
+
+ const char *SPELL_PTS() {
+ return " ";
+ }
+
+ const char *GOLD() {
+ return "®«";
+ }
+
+ const char *SPELL_INFO() {
+ return
+ "\x3""c\f09%s\fd\x3""l\n"
+ "\n"
+ "%s\x3""c\t000\v110. ª« ¢¨èã!";
+ }
+
+ const char *SPELL_PURCHASE() {
+ return
+ "\x3""l\v000\t000\fd%s ¥« ¥â¥ ¯à¨®¡à¥á⨠"
+ "\f09%s\fd § %u?";
+ }
+
+ const char *MAP_TEXT() {
+ return
+ "\x3""c\v000\t000%s\x3l\v139"
+ "\t000X = %d\x3r\t000Y = %d\x3""c\t000%s";
+ }
+
+ const char *LIGHT_COUNT_TEXT() {
+ return "\x3""l\n\n\t024¢¥â\x3""r\t124%u";
+ }
+
+ const char *FIRE_RESISTENCE_TEXT() {
+ return "%c%s£®ì%s%u";
+ }
+
+ const char *ELECRICITY_RESISTENCE_TEXT() {
+ return "%c%s஬%s%u";
+ }
+
+ const char *COLD_RESISTENCE_TEXT() {
+ return "%c%s®«®¤%s%u";
+ }
+
+ const char *POISON_RESISTENCE_TEXT() {
+ return "%c%s¤/¨á«®â %s%u";
+ }
+
+ const char *CLAIRVOYANCE_TEXT() {
+ return "%c%sᮢ¨¤¥¨¥%s";
+ }
+
+ const char *LEVITATE_TEXT() {
+ return "%c%s¥¢¨â æ¨ï%s";
+ }
+
+ const char *WALK_ON_WATER_TEXT() {
+ return "%c%s®¦¤¥¨¥ ¯® ¢®¤¥";
+ }
+
+ const char *GAME_INFORMATION() {
+ return
+ "\r\x3""c\t000\v001\f37%s ᨠ\fd\n"
+ "£à®¢ ï ¨ä®à¬ æ¨ï\n"
+ "\n"
+ "¥£®¤ï \f37%s\fd\n"
+ "\n"
+ "\t032६ï\t072¥ì\t112®¤\n"
+ "\t032\f37%d:%02d%c\t072%u\t112%u\fd%s";
+ }
+
+ const char *WORLD_GAME_TEXT() {
+ return "World";
+ }
+
+ const char *DARKSIDE_GAME_TEXT() {
+ return "Darkside";
+ }
+
+ const char *CLOUDS_GAME_TEXT() {
+ return "¡« ª ";
+ }
+
+ const char *SWORDS_GAME_TEXT() {
+ return "Swords";
+ }
+
+ const char **WEEK_DAY_STRINGS() {
+ delete[] _weekDayStrings;
+ _weekDayStrings = new const char *[10] {
+ "¤¥áï⨤¥ì", "¯¥à¢®¤¥ì", "¢â®à®¤¥ì", "âà¥â쥤¥ì", "ç¥â¢¥à®¤¥ì",
+ "¯ï⨤¥ì", "è¥á⨤¥ì", "ᥬ¨¤¥ì", "¢®á쬨¤¥ì", "¤¥¢ï⨤¥ì"
+ };
+ return _weekDayStrings;
+ }
+
+ const char *CHARACTER_DETAILS() {
+ return
+ "\x3""l\v041\t196%s\t000\v002%s : %s %s %s"
+ "\x3""r\t053\v028\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3""l\t131\f%02u%d\fd\t196\f15%lu\fd\x3""r"
+ "\t053\v051\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3""l\t131\f%02u%u\fd\t196\f15%lu\fd"
+ "\x3""r\t053\v074\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3""l\t131\f15%u\fd\t196\f15%lu\fd"
+ "\x3""r\t053\v097\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3""l\t131\f15%u\fd\t196\f15%u %s\fd"
+ "\x3""r\t053\v120\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3""l\t131\f15%u\fd\t196\f%02u%s\fd"
+ "\t245%s%s%s%s\fd";
+ }
+
+ const char **DAYS() {
+ delete[] _days;
+ _days = new const char *[3] { "¤¥ì", "¤ï", "¤¥©" };
+ return _days;
+ }
+
+ const char *PARTY_GOLD() {
+ return "®«®â®";
+ }
+
+ const char *PLUS_14() {
+ return "\f14+";
+ }
+
+ const char *CHARACTER_TEMPLATE() {
+ return
+ "\x1\f00\r\x3""l\t029\v018¨«\t080âª\t131¤®à\t196¯ëâ"
+ "\t029\v041â\t080¤ç\t131\t029\v064ãå\t080§à"
+ "\t131áâ\t196«¬ §ë\t029\v087«¦\t080à¢\t131¢ª"
+ "\t196¨é \t029\v110ªà\t080\t131 £à\t196®áâ®ï¨¥"
+ "\x3""c\t290\v025\f37\fd¥é¨\t290\v057\f37"
+ "\fdáâà\t290\v089\f37\fd¬¥\t290\v121ë室\x3""l%s";
+ }
+
+ const char *EXCHANGING_IN_COMBAT() {
+ return "\x3""c\v007\t000® ¢à¥¬ï ¡¨â¢ë § ¯à¥é¥® ¬¥ïâìáï ¬¥áâ ¬¨!";
+ }
+
+ const char *CURRENT_MAXIMUM_RATING_TEXT() {
+ return
+ "\x2\x3""c%s\n"
+ "¥©ç á / ªá¨¬ã¬\n"
+ "\x3""r\t054%lu\x3""l\t058/ %lu\n"
+ "\x3""c £: %s\x1";
+ }
+
+ const char *CURRENT_MAXIMUM_TEXT() {
+ return
+ "\x2\x3""c%s\n"
+ "¥©ç á / ªá¨¬ã¬\n"
+ "\x3""r\t054%d\x3""l\t058/ %lu";
+ }
+
+ const char **RATING_TEXT() {
+ delete[] _ratingText;
+ _ratingText = new const char *[24] {
+ "¥â", "¨§¥àë©", " «ª¨©", "ç.¨§ª¨©", "¨§ª¨©", "।¨©", "®à®è¨©",
+ "⫨çë©", "ë᮪¨©", "ëá®ç¥ë©", "®«ì让", "£à®¬ë©", "¤¨¢¨â¥«ìë©",
+ "¥¢¥à®ïâë©", "¨£ â᪨©", " â áâ¨çë©", "§ã¬¨â¥«ìë©", "®à §¨â¥«ìë©",
+ "à ¤¨®§ë©", "஬ ¤ë©", "®«®áá «ìë©", "®âàïá î騩", "㤮¢¨éë©",
+ "ëá®ç ©è¨©"
+ };
+ return _ratingText;
+ }
+
+ const char *AGE_TEXT() {
+ return
+ "\x2\x3""c%s\n"
+ "¥ªã騩 / áâ®ï騩\n"
+ "\x3""r\t057%u\x3""l\t061/ %u\n"
+ "\x3""c®¤¨«%s: %u / %u\x1";
+ }
+
+ const char *LEVEL_TEXT() {
+ return
+ "\x2\x3""c%s\n"
+ "¥ªã騩 / ªá¨¬ã¬\n"
+ "\x3""r\t054%u\x3""l\t058/ %u\n"
+ "\x3""c%u â ª%s/ ã¤\x1";
+ }
+
+ const char *RESISTENCES_TEXT() {
+ return
+ "\x2\x3""c%s\x3""l\n"
+ "\t020£®ì\t100%u\n"
+ "\t020®«®¤\t100%u\n"
+ "\t020஬\t100%u\n"
+ "\t020¤\t100%u\n"
+ "\t020¥à£¨ï\t100%u\n"
+ "\t020 £¨ï\t100%u";
+ }
+
+ const char *NONE() {
+ return "\n\t012¥â";
+ }
+
+ const char *EXPERIENCE_TEXT() {
+ return
+ "\x2\x3""c%s\x3""l\n"
+ "\t005¥ªã騩:\t070%lu\n"
+ "\t005«. ã஢¥ì:\t070%s\x1";
+ }
+
+ const char *ELIGIBLE() {
+ return "\f12®áâ㯥\fd";
+ }
+
+ const char *IN_PARTY_IN_BANK() {
+ return
+ "\x2\x3""c%s\n"
+ "%lu á ᮡ®©\n"
+ "%lu ¢ ¡ ª¥\x1\x3""l";
+ }
+
+ const char *FOOD_TEXT() {
+ return
+ "\x2\x3""c%s\n"
+ "%u ¯®àæ¨%c\n"
+ "¢ â¨â %u %s\x1\x3""l";
+ }
+
+ const char *EXCHANGE_WITH_WHOM() {
+ return "\t010\v005®¬¥ïâìáï á ª¥¬?";
+ }
+
+ const char *QUICK_REF_LINE() {
+ return
+ "\v%3d\t007%u)\t027%s\t110%c%c%c\x3r\t160\f%02u%u\fd"
+ "\x3l\t170\f%02u%d\fd\t208\f%02u%u\fd\t247\f"
+ "%02u%u\fd\t270\f%02u%c%c%c%c\fd";
+ }
+
+ const char *QUICK_REFERENCE() {
+ return
+ "\r\x3""cëáâà ï c¯à ¢ª \v012\x3""l"
+ "\t007#\t027¬ï\t110«á\t147à¢\t174¤®à"
+ "\t214\t242\t270®áâ"
+ "%s%s%s%s%s%s%s%s"
+ "\v110\t064\x3""c®«®â®\t144«¬ §ë\t224¨é \v119"
+ "\t064\f15%lu\t144%lu\t224%u %s\fd";
+ }
+
+ const char *ITEMS_DIALOG_TEXT1() {
+ return
+ "\r\x2\x3""c\v021\t017àã\f37¦\fd\t051\f37\fdà®ï\t085"
+ "\f37\fdªà è\t119\f37\fd §\t153%s\t187%s\t221%s\t255%s\t289ë室";
+ }
+
+ const char *ITEMS_DIALOG_TEXT2() {
+ return
+ "\r\x2\x3""c\v021\t017àã\f37¦\fd\t051\f37\fdà®ï\t085"
+ "\f37\fdªà è\t119\f37\fd §\t153\f37%s\t289ë室";
+ }
+
+ const char *ITEMS_DIALOG_LINE1() {
+ return "\x3r\f%02u\t023%2d)\x3l\t028%s\n";
+ }
+
+ const char *ITEMS_DIALOG_LINE2() {
+ return "\x3r\f%02u\t023%2d)\x3l\t028%s\x3r\t000%u\n";
+ }
+
+ const char *BTN_BUY() {
+ return "\f37\fdã¯";
+ }
+
+ const char *BTN_SELL() {
+ return "\f37\fdத";
+ }
+
+ const char *BTN_IDENTIFY() {
+ return "\f37\fd¯®§";
+ }
+
+ const char *BTN_FIX() {
+ return "\f37\fd¨¨âì";
+ }
+
+ const char *BTN_USE() {
+ return "\f37\fdá¯";
+ }
+
+ const char *BTN_EQUIP() {
+ return "\f37\fd ¤";
+ }
+
+ const char *BTN_REMOVE() {
+ return "\f37\fdïâì";
+ }
+
+ const char *BTN_DISCARD() {
+ return "\f37\fdë¡à";
+ }
+
+ const char *BTN_QUEST() {
+ return "\f37\fd ¤ ";
+ }
+
+ const char *BTN_ENCHANT() {
+ return "\fd ç à";
+ }
+
+ const char *BTN_RECHARGE() {
+ return "\fd¥à¥§à";
+ }
+
+ const char *BTN_GOLD() {
+ return "\fd®«®â®";
+ }
+
+ const char *ITEM_BROKEN() {
+ return "\f32á«®¬ ® ";
+ }
+
+ const char *ITEM_CURSED() {
+ return "\f09¯à®ª«ïâ® ";
+ }
+
+ const char *ITEM_OF() {
+ return "";
+ }
+
+ const char **BONUS_NAMES() {
+ delete[] _bonusNames;
+ _bonusNames = new const char *[7] {
+ "", "¡¨©æë ¤à ª®®¢", "§£®ïî饣® ¬ñàâ¢ëå", "àãè¨â¥«ï £®«¥¬®¢",
+ " ¢¨â¥«ï ᥪ®¬ëå", "¡¨©æë ¬®áâ஢", "¡¨©æë §¢¥à¥©"
+ };
+ return _bonusNames;
+ }
+
+ const char **WEAPON_NAMES() {
+ delete[] _weaponNames;
+ _weaponNames = new const char *[41] {
+ nullptr, "¬¥ç ", "£« ¤¨ãá ", "¯ « è ", "ïâ £ ",
+ "ª®à⨪ ", "á ¡«ï ", "¤ã¡¨ ", "⮯®à ", "ª â ", "ãç ª¨ ",
+ "¢ ª¨¤§ ᨠ", "ª¨¦ « ", "¡ã« ¢ ", "楯 ", "¦¥§« ", "¬®«®â ", "ª®¯ìñ ",
+ "¡¥à¤ëè ", "£«¥ä ", " «¥¡ ठ", "¯¨ª ", "ä« ¬¡¥à£ ", "â१㡥æ ",
+ "¯®á®å ", "¡®¥¢®© ¬®«®â ", " £¨ â ", "¡®¥¢®© ⮯®à ", "ᥪ¨à ",
+ "⮯®à ¯ « ç ", "«ãª ", "¡®«ì让 «ãª ", " à¡ «¥â ", "¯à é ",
+ "¥ç - 㡨©æ ᨠ",
+ "Elder LongSword ", "Elder Dagger ", "Elder Mace ", "Elder Spear ",
+ "Elder Staff ", "Elder LongBow "
+ };
+ return _weaponNames;
+ }
+
+ const char **ARMOR_NAMES() {
+ delete[] _armorNames;
+ _armorNames = new const char *[14] {
+ nullptr, "¬ â¨ï ", "ç¥èãï ", "¯ æ¨àì ", "ª®«ìç㣠",
+ "îè¬ ", "¡¥åâ¥à¥æ ", "« âë ", "é¨â ",
+ "è«¥¬ ", "á ¯®£¨ ", "¯« é ", " ª¨¤ª ", "¯¥àç ⪨ "
+ };
+ return _armorNames;
+ }
+
+ const char **ACCESSORY_NAMES() {
+ delete[] _accessoryNames;
+ _accessoryNames = new const char *[11] {
+ nullptr, "ª®«ìæ® ", "¯®ïá ", "¡à®èì ", "¬¥¤ «ì ", "â «¨á¬ ", "ª ¬¥ï ",
+ "áª à ¡¥© ", "ªã«® ", "®¦¥à¥«ì¥ ", " ¬ã«¥â "
+ };
+ return _accessoryNames;
+ }
+
+ const char **MISC_NAMES() {
+ delete[] _miscNames;
+ _miscNames = new const char *[22] {
+ nullptr, "᪨¯¥âà ", "á ¬®æ¢¥â ", "ª ¬¥ì ", "èª â㫪 ", "áä¥à ", "ண ",
+ "¬®¥âª ", "¦¥§« ", "ᢨá⮪ ", "§¥«ì¥ ", "ᢨ⮪ ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ",
+ "¯®¤¤¥«ª ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ",
+ "¯®¤¤¥«ª ", "¯®¤¤¥«ª "
+ };
+ return _miscNames;
+ }
+
+ const char **SPECIAL_NAMES() {
+ delete[] _specialNames;
+ _specialNames = new const char *[74] {
+ nullptr, "ᢥâ ", "¯à®¡ã¦¤¥¨ï", "¢®«è¥¡ëå áâ५", "¯¥à¢®© ¯®¬®é¨",
+ "ªã« ª®¢", "í¥à£¥â¨ç¥áª®£® ¢§àë¢ ", "ãá믫¥¨ï", "«¥ç¥¨ï á« ¡®áâ¨",
+ "«¥ç¥¨ï", "¨áªà", "èà ¯¥«¨", "९¥««¥â ", "冷¢¨âëå ®¡« ª®¢",
+ "§ é¨âë ®â áâ¨å¨©", "¡®«¨", "¯à릪®¢", "ª®âà®«ï ¤ ¬®áâà ¬¨",
+ "ïᮢ¨¤¥¨ï", "¨§£ ¨ï ¥¦¨â¨", "«¥¢¨â 樨", "¢®«è¥¡®£® £« § ",
+ "¡« £®á«®¢¥¨ï", "®¯®§ ¨ï ¬®áâ஢", "¬®«¨©", "á¢ïâëå ¤ ஢", "¨á楫¥¨ï",
+ "¯à¨à®¤®£® «¥ç¥¨ï", "¬ 类¢", "é¨â ", "¬ã¦¥á⢠", "£¨¯®§ ",
+ "宦¤¥¨ï ¯® ¢®¤¥", "®¡¦¨£ î饣® 宫®¤ ", "¯®¨áª ¬®áâ஢",
+ "®£¥ëå è ஢", "«ã祩 宫®¤ ", "¯à®â¨¢®ï¤¨ï", "à á¯ë«¥¨ï ª¨á«®âë",
+ "¢à¥¬¥®£® ¨áª ¦¥¨ï", "ãá믫¥¨ï ¤à ª®®¢", "¢ ªæ¨ 樨", "⥫¥¯®àâ æ¨¨",
+ "ᬥàâ¨", "᢮¡®¤®£® ¤¢¨¦¥¨ï", "®áâ ®¢ª¨ £®«¥¬ ", "冷¢¨âëå § «¯®¢",
+ "ᬥà⥫쮣® à®ï", "ã¡¥¦¨é ", "¤ï § é¨âë", "¤ï ¬ £¨¨", "¯¨à ",
+ "®£¥®£® 楯 ", "¯¥à¥§ à浪¨", "¬®à®§ ", "£®à®¤áª¨å ¯®àâ «®¢",
+ "áïâ¨ï ®ª ¬¥¥¨ï", "®¦¨¢«¥¨ï ¬ñàâ¢ëå", "¤¥¬ â¥à¨ «¨§ 樨",
+ "â æãîé¨å ª«¨ª®¢", "«ãëå «ã祩", "¨§¬¥¥¨ï ¢¥á ",
+ "¯à¨§¬ â¨ç¥áª®£® ᢥâ ", "ç à", "¨á¯¥¯¥«¥¨ï", "á¢ïâëå á«®¢", "¢®áªà¥è¥¨ï",
+ "¡ãàì", "¬¥£ ¢®«ìâ", "¨ä¥à®", "᮫¥çëå «ã祩", "¨¬¯«®§¨©",
+ "¢§àë¢ §¢¥§¤ë", "!"
+ };
+ return _specialNames;
+ }
+
+ const char **ELEMENTAL_NAMES() {
+ delete[] _elementalNames;
+ _elementalNames = new const char *[6] {
+ "£ï", "஬ ", "®«®¤ ", "¨á«®âë/¤ ", "¥à£¨¨", " £¨¨"
+ };
+ return _elementalNames;
+ }
+
+ const char **ATTRIBUTE_NAMES() {
+ delete[] _attributeNames;
+ _attributeNames = new const char *[10] {
+ "¨« ", "⥫«¥ªâ", "¨« ¤ãå ", "ª®à®áâì", "¥âª®áâì", "¤ ç ",
+ "¤®à®¢ì¥", "窨 ¬ £¨¨", "« áá § é¨âë", "®à®¢á⢮"
+ };
+ return _attributeNames;
+ }
+
+ const char **EFFECTIVENESS_NAMES() {
+ delete[] _effectivenessNames;
+ _effectivenessNames = new const char *[7] {
+ nullptr, "à ª®®¢", "ñàâ¢ëå", "®«¥¬®¢", " ᥪ®¬ëå", "®áâ஢", "¢¥à¥©"
+ };
+ return _effectivenessNames;
+ }
+
+ const char **QUEST_ITEM_NAMES() {
+ delete[] _questItemNames;
+ _questItemNames = new const char *[85] {
+ "à ¢® ¢« ¤¥¨ï ìîª á«®¬",
+ "àãáâ «ìë© ª«îç ®â ¥¤ì¬¨®© ¡ è¨",
+ "â¬ëçª ¤«ï ¡ è¨ à§®£ ",
+ "«îç ®â è¨ ¢ëá襩 ¬ £¨¨",
+ "à £®æ¥ë© ¬ã«¥â ¥¢¥à®£® 䨪á ",
+ " ¬¥ì ëáïç¨ ¦ ᮢ",
+ "⯨à î騩 ª ¬¥ì £®«¥¬®¢",
+ "⯨à î騩 ª ¬¥ì ª ",
+ "ª¨¯¥âà ६¥®£® ᪠¦¥¨ï",
+ "®£ «¨áâë",
+ "«¨ªá¨à ®ááâ ®¢«¥¨ï",
+ "®«è¥¡ë© ¦¥§« 䥩",
+ "¨ ¤¥¬ ¯à¨æ¥ááë ®ªá ë",
+ "¢ïé¥ ï ¨£ «ì䮢",
+ "ª à ¡¥© ®¯«®é¥¨ï",
+ "à¨áâ ««ë 쥧®í«¥ªâà¨ç¥á⢠",
+ "¢¨â®ª ã¤à®áâ¨",
+ "®à¥ì ä¨àë",
+ "®áâﮩ ᢨá⮪ à®ä¨ ",
+ "®«è¥¡ë© ªã«® ப ",
+ "ய ¢è¨© ç¥à¥¯ ¨£®®",
+ "®á«¥¤¨© 梥⮪ «¥â ",
+ "®á«¥¤ïï ¤®¦¤¥¢ ï ª ¯¥«ìª ¢¥áë",
+ "®á«¥¤ïï ᥦ¨ª §¨¬ë",
+ "®á«¥¤¨© «¨á⠮ᥨ",
+ "¥ç® £®àï稩 ªã᮪ ¯¥¬§ë",
+ "¥£ ªà¥¤¨â ª®à®«ï",
+ " §à¥è¥¨¥ à ᪮¯ª¨",
+ "㪮«ª ",
+ "㪫 ¨«ë",
+ "㪫 ª®à®áâ¨",
+ "㪫 «®¦¥¨ï",
+ "㪫 ¥âª®áâ¨",
+ "㪫 ¤ ç¨",
+ "áâனá⢮",
+ "Pass to Castleview",
+ "Pass to Sandcaster",
+ "Pass to Lakeside",
+ "Pass to Necropolis",
+ "Pass to Olympus",
+ "Key to Great Western Tower",
+ "Key to Great Southern Tower",
+ "Key to Great Eastern Tower",
+ "Key to Great Northern Tower",
+ "Key to Ellinger's Tower",
+ "Key to Dragon Tower",
+ "Key to Darkstone Tower",
+ "Key to Temple of Bark",
+ "Key to Dungeon of Lost Souls",
+ "Key to Ancient Pyramid",
+ "Key to Dungeon of Death",
+ "Amulet of the Southern Sphinx",
+ "Dragon Pharoah's Orb",
+ "Cube of Power",
+ "Chime of Opening",
+ "Gold ID Card",
+ "Silver ID Card",
+ "Vulture Repellant",
+ "Bridle",
+ "Enchanted Bridle",
+ "Treasure Map (Goto E1 x1, y11)",
+ "",
+ "Fake Map",
+ "Onyx Necklace",
+ "Dragon Egg",
+ "Tribble",
+ "Golden Pegasus Statuette",
+ "Golden Dragon Statuette",
+ "Golden Griffin Statuette",
+ "Chalice of Protection",
+ "Jewel of Ages",
+ "Songbird of Serenity",
+ "Sandro's Heart",
+ "Ector's Ring",
+ "Vespar's Emerald Handle",
+ "Queen Kalindra's Crown",
+ "Caleb's Magnifying Glass",
+ "Soul Box",
+ "Soul Box with Corak inside",
+ "Ruby Rock",
+ "Emerald Rock",
+ "Sapphire Rock",
+ "Diamond Rock",
+ "Monga Melon",
+ "Energy Disk"
+ };
+ return _questItemNames;
+ }
+
+ const char **QUEST_ITEM_NAMES_SWORDS() {
+ delete[] _questItemNamesSwords;
+ _questItemNamesSwords = new const char *[51] {
+ "Pass to Hart", "Pass to Impery", "Pass to town3", "Pass to town4", "Pass to town5",
+ "Key to Hart Sewers", "Key to Rettig's Pyramid", "Key to the Old Temple",
+ "Key to Canegtut's Pyramid", "Key to Ascihep's Pyramid", "Key to Dragon Tower",
+ "Key to Darkstone Tower", "Key to Temple of Bark", "Key to Dungeon of Lost Souls",
+ "Key to Ancient Pyramid", "Key to Dungeon of Death", "Red Magic Hammer",
+ "Green Magic Hammer", "Golden Magic Wand", "Silver Magic Hammer", "Magic Coin",
+ "Ruby", "Diamond Mineral", "Emerald", "Sapphire", "Treasure Map (Goto E1 x1, y11)",
+ "NOTUSED", "Melon", "Princess Crown", "Emerald Wand", "Druid Carving", "High Sign",
+ "Holy Wheel", "Double Cross", "Sky Hook", "Sacred Cow", "Staff of the Mountain",
+ "Hard Rock", "Soft Rock", "Rock Candy", "Ivy Plant", "Spirit Gem", "Temple of Sun holy lamp oil",
+ "Noams Hammer", "Positive Orb", "Negative Orb", "FireBane Staff", "Diamond Edged Pick",
+ "Monga Melon", "Energy Disk", "Old XEEN Quest Item"
+ };
+ return _questItemNamesSwords;
+ }
+
+ const char *NOT_PROFICIENT() {
+ return "\t000\v007\x3""c%s ¥ ¬®¦¥â ¨á¯®«ì§®¢ âì %s!";
+ }
+
+ const char *NO_ITEMS_AVAILABLE() {
+ return "\x3""c\n\t000¥â ¢¥é¥©.";
+ }
+
+ const char **CATEGORY_NAMES() {
+ delete[] _categoryNames;
+ _categoryNames = new const char *[4] { "à㦨¥", "à®ï", "ªà 襨ï", " §®¥" };
+ return _categoryNames;
+ }
+
+ const char *X_FOR_THE_Y() {
+ return "\x1\fd\r%s\v000\t000%s - %s %s%s\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+ }
+
+ const char *X_FOR_Y() {
+ return
+ "\x1\fd\r\x3""l\v000\t000%s - %s\x3""r\t000%s\x3""l\v011"
+ "\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+ }
+
+ const char *X_FOR_Y_GOLD() {
+ return
+ "\x1\fd\r\x3""l\v000\t000%s - %s\t150®«®â® - %lu%s\x3""l\v011"
+ "\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+ }
+
+ const char *FMT_CHARGES() {
+ return "\x3""r\t000 à冷¢\x3""l";
+ }
+
+ const char *AVAILABLE_GOLD_COST() {
+ return
+ "\x1\fd\r\x3""l\v000\t000%s\t150®«®â® - %lu\x3""r\t000¥ "
+ "\x3""l\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+ }
+
+ const char *CHARGES() {
+ return " à冷¢";
+ }
+
+ const char *COST() {
+ return "¥ ";
+ }
+
+ const char **ITEM_ACTIONS() {
+ delete[] _itemActions;
+ _itemActions = new const char *[7] {
+ " ¤¥âì", "áïâì", "¨á¯®«ì§®¢ âì", "¢ëª¨ãâì", "§ ç ஢ âì", "¯¥à¥§ à廊âì",
+ "ॢà â¨âì ¢ §®«®â®"
+ };
+ return _itemActions;
+ }
+
+ const char *WHICH_ITEM() {
+ return "\v000 ª®© ¯à¥¤¬¥â ¢ë ¦¥« ¥â¥ %s?";
+ }
+
+ const char *WHATS_YOUR_HURRY() {
+ return
+ "\v007¥£® â®à®¯¨èìáï?\n"
+ "®¤®¦¤¨, ¯®ª ¥ ¢ë¡¥à¥èìáï ®âáî¤ !";
+ }
+
+ const char *USE_ITEM_IN_COMBAT() {
+ return "\v007â®¡ë ¨á¯®«ì§®¢ âì ¯à¥¤¬¥â ¢ ¡¨â¢¥, ¦¬¨â¥ ª®¯ªã 'á¯' ¡®ª®¢®© ¯ ¥«¨.";
+ }
+
+ const char *NO_SPECIAL_ABILITIES() {
+ return "\v005\x3""c%s\fd¥ ¨¬¥¥â ®á®¡ëå ᢮©áâ¢!";
+ }
+
+ const char *CANT_CAST_WHILE_ENGAGED() {
+ return "\x3""c\v007 ª«¨ ¨¥ %s ¥«ì§ï ¨á¯®«ì§®¢ âì ¢ ¡¨â¢¥!";
+ }
+
+ const char *EQUIPPED_ALL_YOU_CAN() {
+ return "\x3""c\v007ë ¥ ¬®¦¥â¥ ¤¥âì ¡®«ìè¥ ¤¢ãå %s!";
+ }
+
+ const char *REMOVE_X_TO_EQUIP_Y() {
+ return "\x3""c\v007 ¬ 㦮 áïâì %sçâ®¡ë ¤¥âì %s\b!";
+ }
+
+ const char *RING() {
+ return "ª®«¥æ";
+ }
+
+ const char *MEDAL() {
+ return "¬¥¤ «¥©";
+ }
+
+ const char *CANNOT_REMOVE_CURSED_ITEM() {
+ return "\x3""cë ¥ ¬®¦¥â¥ áïâì ¯à®ª«ïâãî ¢¥éì!";
+ }
+
+ const char *CANNOT_DISCARD_CURSED_ITEM() {
+ return "\x3""cë ¥ ¬®¦¥â¥ ¢ëª¨ãâì ¯à®ª«ïâãî ¢¥éì!";
+ }
+
+ const char *PERMANENTLY_DISCARD() {
+ return "\v000\t000\x3""l모ãâì ¢á¥£¤ ? %s";
+ }
+
+ const char *BACKPACK_IS_FULL() {
+ return "\v005\x3""c\fd%s! è à ª ¯®«®.";
+ }
+
+ const char **CATEGORY_BACKPACK_IS_FULL() {
+ delete[] _categoryBackpackIsFull;
+ _categoryBackpackIsFull = new const char *[4] {
+ "\v010\t000\x3""c%s! è à ª ¯®«®.",
+ "\v010\t000\x3""c%s! è à ª ¯®«®.",
+ "\v010\t000\x3""c%s! è à ª ¯®«®.",
+ "\v010\t000\x3""c%s! è à ª ¯®«®."
+ };
+ return _categoryBackpackIsFull;
+ }
+
+ const char *BUY_X_FOR_Y_GOLD() {
+ return "\x3""l\v000\t000\fd㯨âì %s\fd § %lu §®«®â%s?";
+ }
+
+ const char *SELL_X_FOR_Y_GOLD() {
+ return "\x3""l\v000\t000\fdத âì %s\fd § %lu §®«®â%s?";
+ }
+
+ const char **SELL_X_FOR_Y_GOLD_ENDINGS() {
+ delete[] _sellXForYGoldEndings;
+ _sellXForYGoldEndings = new const char *[2] { "®©", "ëå" };
+ return _sellXForYGoldEndings;
+ }
+
+ const char *NO_NEED_OF_THIS() {
+ return "\v005\x3""c\fd á ¥ ¨â¥à¥áã¥â %s\fd!";
+ }
+
+ const char *NOT_RECHARGABLE() {
+ return "\v007\x3""c\fd¥¢®§¬®¦® ¯¥à¥§ à廊âì.\n%s";
+ }
+
+ const char *NOT_ENCHANTABLE() {
+ return "\v007\t000\x3""c¥¢®§¬®¦® § ç ஢ âì.\n%s";
+ }
+
+ const char *SPELL_FAILED() {
+ return " ª«¨ ¨¥ ¥ áà ¡®â «®!";
+ }
+
+ const char *ITEM_NOT_BROKEN() {
+ return "\fdâ®â ¯à¥¤¬¥â ¥ á«®¬ !";
+ }
+
+ const char **FIX_IDENTIFY() {
+ delete[] _fixIdentify;
+ _fixIdentify = new const char *[2] { "®ç¨¨âì", "¯®§ âì" };
+ return _fixIdentify;
+ }
+
+ const char *FIX_IDENTIFY_GOLD() {
+ return "\x3""l\v000\t000%s %s\fd § %lu §®«®â%s?";
+ }
+
+ const char *IDENTIFY_ITEM_MSG() {
+ return
+ "\fd\v000\t000\x3""c¯®§ âì ¯à¥¤¬¥â\x3""l\n"
+ "\n"
+ "\v012%s\fd\n"
+ "\n"
+ "%s";
+ }
+
+ const char *ITEM_DETAILS() {
+ return
+ "ᯮ«ì§ãîâ ª« ááë\t132:\t140%s\n"
+ "®¤¨ä¨ª â®à ãà® \t132:\t140%s\n"
+ "¨§¨ç¥áª¨© ãà®\t132:\t140%s\n"
+ "à® ®â â¨å¨©\t132:\t140%s\n"
+ " é¨â ®â â¨å¨©\t132:\t140%s\n"
+ "« áá § é¨âë\t132:\t140%s\n"
+ "®ãá ᢮©á⢠\t132:\t140%s\n"
+ "ᮡ®¥ ᢮©á⢮\t132:\t140%s";
+ }
+
+ const char *ALL() {
+ return "á¥";
+ }
+
+ const char *FIELD_NONE() {
+ return "¥â";
+ }
+
+ const char *DAMAGE_X_TO_Y() {
+ return "%d-%d";
+ }
+
+ const char *ELEMENTAL_XY_DAMAGE() {
+ return "%+d ãà® ®â %s";
+ }
+
+ const char *ATTR_XY_BONUS() {
+ return "%+d %s";
+ }
+
+ const char *EFFECTIVE_AGAINST() {
+ return "x3 ¯à®â¨¢ %s";
+ }
+
+ const char *QUESTS_DIALOG_TEXT() {
+ return
+ "\r\x2\x3""c\v021\t017\f37\fd¥é¨\t085\f37\fd ¤ ¨ï\t153"
+ "\f37 \fd¬¥âª¨\t221¢¥àå\t255¨§"
+ "\t289ë室";
+ }
+
+ const char *CLOUDS_OF_XEEN_LINE() {
+ return "\b \b*-- \f04¡« ª ᨠ\fd --";
+ }
+
+ const char *DARKSIDE_OF_XEEN_LINE() {
+ return "\b \b*-- \f04Darkside of Xeen\fd --";
+ }
+
+ const char *SWORDS_OF_XEEN_LINE() {
+ return "\b \b*-- \f04Swords of Xeen\fd --";
+ }
+
+ const char *NO_QUEST_ITEMS() {
+ return
+ "\r\x1\fd\x3""c\v000\t000।¬¥âë § ¤ ¨©\x3""l\x2\n"
+ "\n"
+ "\x3""c¥â ¯à¥¤¬¥â®¢";
+ }
+
+ const char *NO_CURRENT_QUESTS() {
+ return
+ "\x3""c\v000\t000\n"
+ "\n"
+ "¥â § ¤ ¨©";
+ }
+
+ const char *NO_AUTO_NOTES() {
+ return "\x3""c ¬¥â®ª ¥â";
+ }
+
+ const char *QUEST_ITEMS_DATA() {
+ return
+ "\r\x1\fd\x3""c\v000\t000।¬¥âë § ¤ ¨©\x3""l\x2\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s";
+ }
+
+ const char *CURRENT_QUESTS_DATA() {
+ return
+ "\r\x1\fd\x3""c\t000\v000 ¤ ¨ï\x3""l\x2\n"
+ "%s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "%s";
+ }
+
+ const char *AUTO_NOTES_DATA() {
+ return
+ "\r\x1\fd\x3""c\t000\v000 ¬¥âª¨\x3""l\x2\n"
+ "%s\x3""l\n"
+ "%s\x3""l\n"
+ "%s\x3""l\n"
+ "%s\x3""l\n"
+ "%s\x3""l\n"
+ "%s\x3""l\n"
+ "%s\x3""l\n"
+ "%s\x3""l\n"
+ "%s\x3""l";
+ }
+
+ const char *REST_COMPLETE() {
+ return
+ "\v000\t000à®è«® 8 ç ᮢ. â¤ëå § ª®ç¥\n"
+ "%s\n"
+ "ë«® áꥤ¥® %d ¯¨é¨.";
+ }
+
+ const char *PARTY_IS_STARVING() {
+ return "\f07âàï¤ £®«®¤ ¥â!\fd";
+ }
+
+ const char *HIT_SPELL_POINTS_RESTORED() {
+ return "¤®à®¢ì¥ ¨ ¬ ¢®ááâ ®¢«¥ë";
+ }
+
+ const char *TOO_DANGEROUS_TO_REST() {
+ return "¤¥áì ᫨誮¬ ®¯ á® ®â¤ëå âì!";
+ }
+
+ const char *SOME_CHARS_MAY_DIE() {
+ return "â®-â® ¨§ ®âàï¤ ¬®¦¥â 㬥à¥âì. ë ¢áñ à ¢® ¦¥« ¥â¥ ®â¤®åãâì?";
+ }
+
+ const char *DISMISS_WHOM() {
+ return "\r\t010\v005®£® ¢ë£ âì?";
+ }
+
+ const char *CANT_DISMISS_LAST_CHAR() {
+ return "ë ¥ ¬®¦¥â¥ ¢ë£ âì ᢮¥£® ¯®á«¥¤¥£® ¯¥àá® ¦ !";
+ }
+
+ const char *DELETE_CHAR_WITH_ELDER_WEAPON() {
+ return "\v000\t000This character has an Elder Weapon and cannot be deleted!";
+ }
+
+ const char **REMOVE_DELETE() {
+ delete[] _removeDelete;
+ _removeDelete = new const char *[2] { "ë£ âì", "㤠«¨âì" };
+ return _removeDelete;
+ }
+
+ const char *REMOVE_OR_DELETE_WHICH() {
+ return "\x3""l\t010\v005®£® %s?";
+ }
+
+ const char *YOUR_PARTY_IS_FULL() {
+ return "\v007 è ®âàï¤ ¯®«®!";
+ }
+
+ const char *HAS_SLAYER_SWORD() {
+ return "\v000\t000â®â ¯¥àá® ¦ ¥ ¬®¦¥â ¡ëâì 㤠«ñ, â ª ª ª ã ¥£® ¥ç-㡨©æ ᨠ!";
+ }
+
+ const char *SURE_TO_DELETE_CHAR() {
+ return "%s %s. ë 㢥à¥ë, çâ® å®â¨â¥ 㤠«¨âì í⮣® £¥à®ï?";
+ }
+
+ const char *CREATE_CHAR_DETAILS() {
+ return
+ "\f04\x3""c\x2\t144\v119\f37\f04à®á®ª\t144\v149\f37\f04®§¤"
+ "\t144\v179\f37ESC\f04\x3""l\x1\t195\v021¨\f37«\f04"
+ "\t195\v045\f37\f04â\t195\v069\f37\f04ãå\t195\v093«\f37¦\f04"
+ "\t195\v116\f37ª\f04à\t195\v140\f37\f04âª\t195\v164\f37\f04¤ç%s";
+ }
+
+ const char *NEW_CHAR_STATS() {
+ return
+ "\f04\x3""l\t017\v148 á \t055: %s\n"
+ "\t017®«\t055: %s\n"
+ "\t017« áá\t055:\n"
+ "\x3""r\t215\v031%d\t215\v055%d\t215\v079%d\t215\v103%d\t215\v127%d"
+ "\t215\v151%d\t215\v175%d\x3""l\t242\v020\f%2dëæ àì\t242\v031\f%2d"
+ " « ¤¨\t242\v042\f%2dã稪\t242\v053\f%2d«¨à¨ª\t242\v064\f%2d"
+ " £\t242\v075\f%2d®à\t242\v086\f%2d¨¤§ï\t242\v097\f%2d"
+ " ࢠà\t242\v108\f%2dà㨤\t242\v119\f%2d«¥¤®¯ëâ\f04\x3""c"
+ "\t265\v142 ¢ëª¨\x2\x3""l\t223\v155%s\t223\v170%s%s\x1";
+ }
+
+ const char *NAME_FOR_NEW_CHARACTER() {
+ return "\x3""c¢¥¤¨â¥ ¨¬ï ¯¥àá® ¦ \n\n";
+ }
+
+ const char *SELECT_CLASS_BEFORE_SAVING() {
+ return "\v003\x3""c¥à¥¤ á®åà ¥¨¥¬ ¢ë¡¥à¨â¥ ª« áá.\x3""l";
+ }
+
+ const char *EXCHANGE_ATTR_WITH() {
+ return "®¬¥ïâì %s á...";
+ }
+
+ const char *COMBAT_DETAILS() {
+ return "\r\f00\x3""c\v000\t000\x2%s%s%s\x1";
+ }
+
+ const char *NOT_ENOUGH_TO_CAST() {
+ return "\x3""c\v000¥¤®áâ â®ç® %s, çâ®¡ë § ª«¨ âì %s";
+ }
+
+ const char **SPELL_CAST_COMPONENTS() {
+ delete[] _spellCastComponents;
+ _spellCastComponents = new const char *[2] { "®çª®¢ ¬ £¨¨", " «¬ §®¢" };
+ return _spellCastComponents;
+ }
+
+ const char *CAST_SPELL_DETAILS() {
+ return
+ "\r\x2\x3""c\v122\t013\f37\fd ª«\t040\f37\fd®¢"
+ "\t067ESC\x1\t000\v000\x3""c ª«¨ ¨¥\n"
+ "\n"
+ "%s\x3""c\n"
+ "\n"
+ " ®â®¢®¥:\x3""c\n"
+ "\n"
+ "\f09%s\fd\x2\x3""l\n"
+ "\v082¥ \x3""r\t000%u/%u\x3""l\n"
+ "¥ª \x3""r\t000%u\x1";
+ }
+
+ const char *PARTY_FOUND() {
+ return
+ "\x3""c ©¤¥®:\n"
+ "\n"
+ "\x3""r\t000%lu ®«\n"
+ "%lu «¬§";
+ }
+
+ const char *BACKPACKS_FULL_PRESS_KEY() {
+ return
+ "\v007\f12¨¬ ¨¥!  ª¨ ¯¥à¥¯®«¥ë!\fd\n"
+ " ¦¬¨â¥ ª« ¢¨èã";
+ }
+
+ const char *HIT_A_KEY() {
+ return "\x3""l\v120\t000\x4""077\x3""c\f37. ª« ¢¨èã\fd";
+ }
+
+ const char *GIVE_TREASURE_FORMATTING() {
+ return
+ "\x3l\v060\t000\x4""077\n"
+ "\x4""077\n"
+ "\x4""077\n"
+ "\x4""077\n"
+ "\x4""077\n"
+ "\x4""077";
+ }
+
+ const char *X_FOUND_Y() {
+ return "\v060\t000\x3""c%s è%s: %s";
+ }
+
+ const char *ON_WHO() {
+ return "\x3""c\v009®£®?";
+ }
+
+ const char *WHICH_ELEMENT1() {
+ return
+ "\r\x3""c\x1 ª ï â¨å¨ï?\x2\v034\t014\f15\fd£®ì\t044"
+ "\f15\fd஬\t074\f15\fd®«®¤\t104\f15\fd¤\x1";
+ }
+
+ const char *WHICH_ELEMENT2() {
+ return
+ "\r\x3""c ª ï â¨å¨ï?\x2\v034\t014\f15\fd£®ì\t044"
+ "\f15\fd஬\t074\f15\fd®«®¤\t104\f15\fd¤\x1";
+ }
+
+ const char *DETECT_MONSTERS() {
+ return "\x3""c®¨áª ¬®áâ஢";
+ }
+
+ const char *LLOYDS_BEACON() {
+ return
+ "\r\x3""c\v000\t000\x1 ïª «®©¤ \n"
+ "\n"
+ "®á«¥¤¥¥ ¬¥áâ®\n"
+ "\n"
+ "%s\x3""l\n"
+ "x = %d\x3""r\t000y = %d\x3""c\x2\v122\t021\f15\fdáâ \t060\f15\fd¥à\x1";
+ }
+
+ const char *HOW_MANY_SQUARES() {
+ return "\x3""c¥«¥¯®àâ\nª®«ìª® ª«¥â®ª %s (1-9)\n";
+ }
+
+ const char *TOWN_PORTAL() {
+ return
+ "\x3""c®à®¤áª®© ¯®àâ «\x3""l\n"
+ "\n"
+ "\t0101. %s\n"
+ "\t0102. %s\n"
+ "\t0103. %s\n"
+ "\t0104. %s\n"
+ "\t0105. %s\x3""c\n"
+ "\n"
+ " ª ª®© £®à®¤ (1-5)\n"
+ "\n";
+ }
+
+ const char *TOWN_PORTAL_SWORDS() {
+ return "\x3"
+ "cTown Portal\x3l\n"
+ "\n"
+ "\t0101. %s\n"
+ "\t0102. %s\n"
+ "\t0103. %s\x3"
+ "c\n"
+ "\n"
+ "To which Town (1-3)\n"
+ "\n";
+ }
+
+ const char *MONSTER_DETAILS() {
+ return "\x3l\n"
+ "%s\x3"
+ "c\t100%s\t140%u\t180%u\x3r\t000%s";
+ }
+
+ const char **MONSTER_SPECIAL_ATTACKS() {
+ delete[] _monsterSpecialAttacks;
+ _monsterSpecialAttacks = new const char *[23] {
+ "¥â", " £¨ï", "£ï", "஬ ", "®«®¤ ", "âà ¢«¥¨¥", "¥à£¨¨",
+ "®«¥§ì", "¥§ã¬¨¥", "®", "ફब", "«î¡«", "áã褮à", "ப«ï⨥",
+ " à «¨ç", "¥áá®§", "¬ï⥨¥", "®¬à®", "« ¡®áâì", "¨ç⮦",
+ "®§à áâ+5", "¥àâ¢", " ¬¥ì"
+ };
+ return _monsterSpecialAttacks;
+ }
+
+ const char *IDENTIFY_MONSTERS() {
+ return "®áâà\x3""c\t155\t195\t233#â ª\x3""r\t000ᮡ®¥%s%s%s";
+ }
+
+ const char *MOONS_NOT_ALIGNED() {
+ return "\x3""c\v012\t000®ª «ãë ¥ ¢áâ ãâ ¢ àï¤, ¢ë ¥ ᬮ¦¥â¥ ¯¥à¥©â¨ ñ¬ãî áâ®à®ã ᨠ";
+ }
+
+ const char *AWARDS_FOR() {
+ return
+ "\r\x1\fd\x3""c\v000\t000%s %s: £à ¤ë \x3""l\x2\n"
+ "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\x1";
+ }
+
+ const char *AWARDS_TEXT() {
+ return "\r\x2\x3""c\v021\t221¢¥àå\t255¨§\t289ë室";
+ }
+
+ const char *NO_AWARDS() {
+ return "\x3""c ¯¥àá® ¦ ¥â £à ¤";
+ }
+
+ const char *WARZONE_BATTLE_MASTER() {
+ return "ॠ\n\t125 áâ¥à ¡¨â¢ë";
+ }
+
+ const char *WARZONE_MAXED() {
+ return "â®! ¯ïâì ¢ë? ¥ ¯à¨áâ ¢ ©â¥ ª ⥬, ªâ® ¥ ¬®¦¥â ¤ âì ᤠç¨!";
+ }
+
+ const char *WARZONE_LEVEL() {
+ return " ª®© ã஢¥ì ¬®áâ஢? (1-10)\n";
+ }
+
+ const char *WARZONE_HOW_MANY() {
+ return "ª®«ìª® ¬®áâ஢? (1-20)\n";
+ }
+
+ const char *PICKS_THE_LOCK() {
+ return "\x3""c\v010%s ¢§«®¬ «%s § ¬®ª!\n ¦¬¨â¥ ª« ¢¨èã.";
+ }
+
+ const char *UNABLE_TO_PICK_LOCK() {
+ return "\x3""c\v010%s ¥ ᬮ£%s ¢§«®¬ âì § ¬®ª!\n ¦¬¨â¥ ª« ¢¨èã.";
+ }
+
+ const char *CONTROL_PANEL_TEXT() {
+ return
+ "\x1\f00\x3""c\v000\t000 ¥«ì ã¯à ¢«¥¨ï\x3""r"
+ "\v022\t045¢\f06ã\fdª:\t124\f06\fd®åà:"
+ "\v041\t045\f06\fdã§.:\t124\f06®\fdåà:\v060\t045\f06\fd £à:"
+ "\t124\f06\fdë室"
+ "\v080\t084\f06\fd®¬®éì %s\t137 £ \t000\x1";
+ }
+
+ const char *CONTROL_PANEL_BUTTONS() {
+ return
+ "\x3""c\f11"
+ "\v022\t062load\t141%s"
+ "\v041\t062save\t141%s"
+ "\v060\t062exit"
+ "\v079\t102Help\fd";
+ }
+
+ const char *ON() {
+ return "\f15¢ª«\f11";
+ }
+
+ const char *OFF() {
+ return "\f32¢ëª\f11";
+ }
+
+ const char *CONFIRM_QUIT() {
+ return "ë 㢥à¥ë, çâ® å®â¨â¥ ¢ë©â¨?";
+ }
+
+ const char *MR_WIZARD() {
+ return "ë â®ç® å®â¨â¥ ¢®á¯®«ì§®¢ âìáï ¯®¬®éìî à. £ ?";
+ }
+
+ const char *NO_LOADING_IN_COMBAT() {
+ return "¨ª ª¨å § £àã§®ª ¢® ¢à¥¬ï ¡¨â¢ë!";
+ }
+
+ const char *NO_SAVING_IN_COMBAT() {
+ return "¨ª ª¨å á®åà ¥¨© ¢® ¢à¥¬ï ¡¨â¢ë!";
+ }
+
+ const char *QUICK_FIGHT_TEXT() {
+ return
+ "\r\fd\x3""c\v000\t000ëáâ஥ ¤¥©á⢨¥\n\n"
+ "%s\x3""l\n\n"
+ "¥ªã饥\x3""r\n"
+ "\t000%s\x2\x3""c\v122\t019\f37\f04«¥¤\t055ë室\x1";
+ }
+
+ const char **QUICK_FIGHT_OPTIONS() {
+ delete[] _quickFightOptions;
+ _quickFightOptions = new const char *[4] { "â ª ", " ª«¨ ¨¥", "«®ª", "¥£á⢮" };
+ return _quickFightOptions;
+ }
+
+ const char **WORLD_END_TEXT() {
+ delete[] _worldEndText;
+ _worldEndText = new const char *[9] {
+ "\n\n\n\n\n\n\n"
+ "Congratulations Adventurers!\n\n"
+ "Let the unification ceremony begin!",
+ "And so the call went out to the people throughout the lands of Xeen"
+ " that the prophecy was nearing completion.",
+ "They came in great numbers to witness the momentous occasion.",
+ "\v026The Dragon Pharoah presided over the ceremony.",
+ "\v026Queen Kalindra presented the Cube of Power.",
+ "\v026Prince Roland presented the Xeen Sceptre.",
+ "\v026Together, they placed the Cube of Power...",
+ "\v026and the Sceptre, onto the Altar of Joining.",
+ "With the prophecy complete, the two sides of Xeen were united as one",
+ };
+ return _worldEndText;
+ }
+
+ const char *WORLD_CONGRATULATIONS() {
+ return "\x3"
+ "cCongratulations\n\n"
+ "Your Final Score is:\n\n"
+ "%010lu\n"
+ "\x3l\n"
+ "Please send this score to the Ancient's Headquarters where "
+ "you'll be added to the Hall of Legends!\n\n"
+ "Ancient's Headquarters\n"
+ "New World Computing, Inc.\n"
+ "P.O. Box 4302\n"
+ "Hollywood, CA 90078";
+ }
+
+ const char *WORLD_CONGRATULATIONS2() {
+ return "\n\n\n\n\n\n"
+ "But wait... there's more!\n"
+ "\n\n"
+ "Include the message\n"
+ "\"%s\"\n"
+ "with your final score and receive a special bonus.";
+ }
+
+ const char *CLOUDS_CONGRATULATIONS1() {
+ return "\f23\x3l"
+ "\v000\t000Please send this score to the Ancient's Headquarters "
+ "where you'll be added to the Hall of Legends!\f33\x3"
+ "c"
+ "\v070\t000Press a Key";
+ }
+
+ const char *CLOUDS_CONGRATULATIONS2() {
+ return "\f23\x3l"
+ "\v000\t000Ancient's Headquarters\n"
+ "New World Computing, Inc.\n"
+ "P.O. Box 4302\n"
+ "Hollywood, CA 90078-4302\f33\x3"
+ "c"
+ "\v070\t000Press a Key";
+ }
+
+ const char **GOOBER() {
+ delete[] _goober;
+ _goober = new const char *[3] {
+ "", "I am a Goober!", "I am a Super Goober!"
+ };
+ return _goober;
+ }
+
+ const char *DIFFICULTY_TEXT() {
+ return "\v000\t000\x3""cë¡¥à¨â¥ ¨£à®¢®© ०¨¬";
+ }
+
+ const char *SAVE_OFF_LIMITS() {
+ return
+ "\x3""c\v002\t000®£¨ ®ááâ ®¢«¥¨ï £à áç¨â îâ íâ® ¬¥áâ® § ¯à¥âë¬!\n"
+ "¢ë, §¤¥áì ¥«ì§ï á®åà ïâìáï";
+ }
+
+ const char *CLOUDS_INTRO1() {
+ return "\f00\v082\t040\x3"
+ "cKing Burlock\v190\t040Peasants\v082\t247"
+ "Lord Xeen\v190\t258Xeen's Pet\v179\t150Crodo";
+ }
+
+ const char *DARKSIDE_ENDING1() {
+ return "\n\x3"
+ "cCongratulations\n"
+ "\n"
+ "Your Final Score is:\n"
+ "\n"
+ "%010lu\n"
+ "\x3"
+ "l\n"
+ "Please send this score to the Ancient's Headquarters "
+ "where you'll be added to the Hall of Legends!\n"
+ "\n"
+ "Ancient's Headquarters\n"
+ "New World Computing, Inc.\n"
+ "P.O. Box 4302\n"
+ "Hollywood, CA 90078";
+ }
+
+ const char *DARKSIDE_ENDING2() {
+ return "\n"
+ "Adventurers,\n"
+ "\n"
+ "I will save your game in Castleview.\n"
+ "\n"
+ "The World of Xeen still needs you!\n"
+ "\n"
+ "Load your game afterwards and come visit me in the "
+ "Great Pyramid for further instructions";
+ }
+
+ const char *PHAROAH_ENDING_TEXT1() {
+ return "\fd\v001\t001%s\x3"
+ "c\t000\v180Press a Key!\x3"
+ "l";
+ }
+
+ const char *PHAROAH_ENDING_TEXT2() {
+ return "\f04\v000\t000%s\x3"
+ "c\t000\v180Press a Key!\x3"
+ "l\fd";
+ }
};
-static const char* const WHO_ACTIONS[32] = {
- "â® ®¡ëé¥â",
- "â® ®âªà®¥â",
- "â® ¢ë¯ì¥â",
- "â® ¡ã¤¥â ª®¯ âì",
- "â® ¯®âண ¥â",
- "â® ¯à®çâñâ",
- "®£® ãç¨âì",
- "â® ¢®§ì¬ñâ",
- "⮠㤠à¨â",
- "â® ãªà ¤ñâ",
- "â® ¤ áâ ¢§ïâªã",
- "â® § ¯« â¨â",
- "â® ¯à¨á拉â",
- "â® ¯®¯à®¡ã¥â",
- "â® ¥£® ¯®¢¥àñâ",
- "â® ¨áªã¯ñâáï",
- "â® ¥£® ã¨ç⮦¨â",
- "â® ¢ë¤¥à¥â",
- "â® á¯ãáâ¨âáï",
- "â® ¡à®á¨â ¬®¥âªã",
- "pray",
- "â® áâ ¥â ç«¥®¬",
- "act",
- "â® å®ç¥â áë£à âì",
- "â® ¦¬ñâ",
- "rub",
- "pick",
- "eat",
- "sign",
- "close",
- "look",
- "try"
-};
-
-static const char* const WHO_WILL_ACTIONS[4] = {
- "âªàëâì à¥èñâªã",
- "âªàëâì ¤¢¥àì",
- " áªàëâì ᢨ⮪",
- "ë¡¥à¨â¥ ¯¥àá® ¦ "
-};
-
-static const byte SYMBOLS[20][64] = {
- { // 0
- 0x00, 0x00, 0xA8, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x00, 0xA8, 0x9E, 0x9C, 0x9C, 0x9E, 0x9E, 0x9E,
- 0xAC, 0x9C, 0xA4, 0xAC, 0xAC, 0x9A, 0x9A, 0x9A, 0xAC, 0x9E, 0xAC, 0xA8, 0xA8, 0xA6, 0x97, 0x98,
- 0xAC, 0xA0, 0xAC, 0xAC, 0xA4, 0xA6, 0x98, 0x99, 0x00, 0xAC, 0xA0, 0xA0, 0xA8, 0xAC, 0x9A, 0x9A,
- 0x00, 0x00, 0xAC, 0xAC, 0xAC, 0xA4, 0x9B, 0x9A, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xA0, 0x9B, 0x9B,
- },
- { // 1
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
- 0x99, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x99, 0x98, 0x98, 0x98, 0x97, 0x97, 0x97, 0x97, 0x97,
- 0x99, 0x98, 0x98, 0x99, 0x98, 0x98, 0x99, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
- 0x9A, 0x9B, 0x9B, 0x9C, 0x9B, 0x9A, 0x9C, 0x9A, 0x9B, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x9A, 0x9B,
- },
- { // 2
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
- 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x99, 0x98, 0x98, 0x99, 0x98, 0x98, 0x97, 0x98, 0x98,
- 0x99, 0x98, 0x98, 0x98, 0x99, 0x99, 0x98, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
- 0x9B, 0x9B, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9B, 0x99, 0x9A, 0x9B, 0x9B, 0x9A, 0x9A, 0x99, 0x9A,
- },
- { // 3
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
- 0x99, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x98, 0x98, 0x97, 0x97, 0x98, 0x98, 0x98, 0x98,
- 0x99, 0x99, 0x98, 0x99, 0x98, 0x98, 0x99, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
- 0x9B, 0x9C, 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0x9C, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x9A,
- },
- { // 4
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
- 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x99, 0x9A, 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
- 0x99, 0x99, 0x98, 0x99, 0x99, 0x98, 0x98, 0x98, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
- 0x9A, 0x9C, 0x9B, 0x9B, 0x9C, 0x9B, 0x9B, 0x9B, 0x9A, 0x99, 0x9B, 0x9B, 0x9A, 0x99, 0x9A, 0x9A,
- },
- { // 5
- 0xA4, 0xA4, 0xA8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x9E, 0x9E, 0xA0, 0xA8, 0xAC, 0x00, 0x00,
- 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9E, 0xAC, 0x00, 0x97, 0x97, 0x97, 0x98, 0x9C, 0x9C, 0xA0, 0xAC,
- 0x99, 0x98, 0x99, 0x99, 0x99, 0x9B, 0xA0, 0xAC, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9B, 0xA0, 0xAC,
- 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x9A, 0x9A, 0x9B, 0x9B, 0xA4, 0xAC, 0x00,
- },
- { // 6
- 0x00, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x00, 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x9B, 0x99,
- 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x98, 0x99, 0x99,
- 0x00, 0xAC, 0xA0, 0x9C, 0x9C, 0xA0, 0x9C, 0x9A, 0x00, 0x00, 0xAC, 0xA4, 0xA0, 0x99, 0x99, 0x99,
- 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99,
- },
- { // 7
- 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x9C, 0x99, 0x99,
- 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x00, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99,
- 0x00, 0x00, 0xAC, 0xA0, 0x9B, 0xA0, 0x9E, 0x9C, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x9C, 0x99, 0x99,
- },
- { // 8
- 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x9B, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x9C, 0x99, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x9E, 0x9C, 0x99,
- },
- { // 9
- 0x00, 0x00, 0xAC, 0xA4, 0xA0, 0x9C, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x9C, 0xA0, 0x9C, 0x9A,
- 0xAC, 0xA4, 0x9C, 0x9A, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99,
- 0x00, 0xAC, 0xA4, 0x9C, 0x9A, 0x9C, 0x99, 0x99, 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x9A, 0x99, 0x99,
- },
- { // 10
- 0x99, 0x99, 0x99, 0x9A, 0xA0, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
- 0x99, 0x99, 0x9C, 0x9E, 0xA4, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x9C, 0x99, 0x9C, 0xA4, 0xAC, 0x00,
- 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
- 0x99, 0x99, 0x99, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x9A, 0x9B, 0x9E, 0x9C, 0x9C, 0xA4, 0xAC, 0x00,
- },
- { // 11
- 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0x9E, 0xAC,
- 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
- 0x9C, 0x99, 0x99, 0x99, 0x9C, 0x9C, 0xA4, 0xAC, 0x99, 0x9E, 0x9E, 0x9C, 0x9C, 0xA0, 0xAC, 0x00,
- },
- { // 12
- 0x99, 0x99, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x9B, 0x9C, 0x9E, 0x9C, 0x9C, 0xA4, 0xAC, 0x00,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
- 0x99, 0x99, 0x99, 0x99, 0x9C, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xA4, 0xAC, 0x00,
- 0x99, 0x99, 0x9C, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
- },
- { // 13
- 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
- 0x99, 0x9B, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x9A, 0x99, 0x9C, 0xA0, 0xAC, 0x00,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
- 0x99, 0x99, 0x99, 0x99, 0x9A, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x9A, 0x9C, 0xA4, 0xAC, 0x00,
- },
- { // 14
- 0x00, 0x00, 0xAC, 0x9E, 0x9C, 0x9C, 0x9C, 0x9B, 0x00, 0xAC, 0x9C, 0xA0, 0x9E, 0xA4, 0xA4, 0xA4,
- 0xAC, 0x9C, 0xA4, 0xAC, 0xAC, 0xAC, 0x9C, 0x9E, 0xAC, 0xA0, 0xAC, 0xA8, 0x9E, 0xA8, 0xAC, 0x99,
- 0xAC, 0x9E, 0xAC, 0xA8, 0xAC, 0x9E, 0xA4, 0xAC, 0xAC, 0xA4, 0xA0, 0xAC, 0xAC, 0xA0, 0xA4, 0xAC,
- 0x00, 0xAC, 0xA4, 0xA0, 0xA0, 0xA4, 0xAC, 0xA4, 0x00, 0x00, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
- },
- { // 15
- 0x9C, 0x9C, 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
- 0x9E, 0x9E, 0x9E, 0x9C, 0x9E, 0x9E, 0x9E, 0x9E, 0x99, 0x99, 0x99, 0x99, 0x99, 0x98, 0x99, 0x98,
- 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0x9E, 0x9E, 0xA0,
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
- },
- { // 16
- 0x9B, 0x9B, 0x9B, 0x9B, 0x9C, 0x9B, 0x9C, 0x9C, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
- 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9E, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
- 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0xA0, 0xA0, 0xA0, 0x9E, 0xA0, 0x9E, 0x9E, 0xA0,
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
- },
- { // 17
- 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9C, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
- 0x9E, 0x9E, 0x9E, 0x9C, 0x9C, 0x9C, 0x9E, 0x9E, 0x98, 0x98, 0x98, 0x99, 0x9A, 0x9A, 0x99, 0x98,
- 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9C, 0xA0, 0x9E, 0x9E, 0xA0, 0xA0, 0xA0, 0xA0, 0x9E,
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
- },
- { // 18
- 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
- 0x9E, 0x9E, 0x9E, 0x9E, 0x9C, 0x9C, 0x9C, 0x9E, 0x98, 0x98, 0x98, 0x98, 0x9A, 0x9A, 0x98, 0x99,
- 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9B, 0x9C, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0xA0, 0xA0, 0xA0,
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
- },
- { // 19
- 0x9C, 0x9B, 0x9C, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0x00, 0x00,
- 0x9E, 0x9E, 0x9C, 0x9C, 0x9E, 0xA0, 0xAC, 0x00, 0x99, 0x98, 0x98, 0x99, 0x9A, 0x9A, 0xA0, 0xAC,
- 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0xA0, 0xAC, 0xA0, 0xA0, 0x9E, 0xA0, 0xA0, 0xA0, 0xA0, 0xAC,
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0x00, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0x00, 0x00,
- }
-};
-
-static const byte TEXT_COLORS[40][4] = {
- { 0x00, 0x19, 0x19, 0x19 },
- { 0x00, 0x08, 0x08, 0x08 },
- { 0x00, 0x0F, 0x0F, 0x0F },
- { 0x00, 0x15, 0x15, 0x15 },
- { 0x00, 0x01, 0x01, 0x01 },
- { 0x00, 0x21, 0x21, 0x21 },
- { 0x00, 0x26, 0x26, 0x26 },
- { 0x00, 0x2B, 0x2B, 0x2B },
- { 0x00, 0x31, 0x31, 0x31 },
- { 0x00, 0x36, 0x36, 0x36 },
- { 0x00, 0x3D, 0x3D, 0x3D },
- { 0x00, 0x41, 0x41, 0x41 },
- { 0x00, 0x46, 0x46, 0x46 },
- { 0x00, 0x4C, 0x4C, 0x4C },
- { 0x00, 0x50, 0x50, 0x50 },
- { 0x00, 0x55, 0x55, 0x55 },
- { 0x00, 0x5D, 0x5D, 0x5D },
- { 0x00, 0x60, 0x60, 0x60 },
- { 0x00, 0x65, 0x65, 0x65 },
- { 0x00, 0x6C, 0x6C, 0x6C },
- { 0x00, 0x70, 0x70, 0x70 },
- { 0x00, 0x75, 0x75, 0x75 },
- { 0x00, 0x7B, 0x7B, 0x7B },
- { 0x00, 0x80, 0x80, 0x80 },
- { 0x00, 0x85, 0x85, 0x85 },
- { 0x00, 0x8D, 0x8D, 0x8D },
- { 0x00, 0x90, 0x90, 0x90 },
- { 0x00, 0x97, 0x97, 0x97 },
- { 0x00, 0x9D, 0x9D, 0x9D },
- { 0x00, 0xA4, 0xA4, 0xA4 },
- { 0x00, 0xAB, 0xAB, 0xAB },
- { 0x00, 0xB0, 0xB0, 0xB0 },
- { 0x00, 0xB6, 0xB6, 0xB6 },
- { 0x00, 0xBD, 0xBD, 0xBD },
- { 0x00, 0xC0, 0xC0, 0xC0 },
- { 0x00, 0xC6, 0xC6, 0xC6 },
- { 0x00, 0xCD, 0xCD, 0xCD },
- { 0x00, 0xD0, 0xD0, 0xD0 },
- { 0x00, 0xD6, 0xD6, 0xD6 },
- { 0x00, 0xDB, 0xDB, 0xDB },
-};
-
-static const byte TEXT_COLORS_STARTUP[40][4] = {
- { 0x00, 0x19, 0x19, 0x19 },
- { 0x00, 0x08, 0x08, 0x08 },
- { 0x00, 0x0F, 0x0F, 0x0F },
- { 0x00, 0x15, 0x15, 0x15 },
- { 0x00, 0x01, 0x01, 0x01 },
- { 0x00, 0x1F, 0x1F, 0x1F },
- { 0x00, 0x26, 0x26, 0x26 },
- { 0x00, 0x2B, 0x2B, 0x2B },
- { 0x00, 0x31, 0x31, 0x31 },
- { 0x00, 0x36, 0x36, 0x36 },
- { 0x00, 0x3D, 0x3D, 0x3D },
- { 0x00, 0x42, 0x42, 0x42 },
- { 0x00, 0x46, 0x46, 0x46 },
- { 0x00, 0x4C, 0x4C, 0x4C },
- { 0x00, 0x50, 0x50, 0x50 },
- { 0x00, 0x55, 0x55, 0x55 },
- { 0x00, 0x5D, 0x5D, 0x5D },
- { 0x00, 0x60, 0x60, 0x60 },
- { 0x00, 0x65, 0x65, 0x65 },
- { 0x00, 0x6C, 0x6C, 0x6C },
- { 0x00, 0x70, 0x70, 0x70 },
- { 0x00, 0x75, 0x75, 0x75 },
- { 0x00, 0x7B, 0x7B, 0x7B },
- { 0x00, 0x80, 0x80, 0x80 },
- { 0x00, 0x85, 0x85, 0x85 },
- { 0x00, 0x8D, 0x8D, 0x8D },
- { 0x00, 0x90, 0x90, 0x90 },
- { 0x00, 0x97, 0x97, 0x97 },
- { 0x00, 0x9D, 0x9D, 0x9D },
- { 0x00, 0xA4, 0xA4, 0xA4 },
- { 0x00, 0xAB, 0xAB, 0xAB },
- { 0x00, 0xB0, 0xB0, 0xB0 },
- { 0x00, 0xB6, 0xB6, 0xB6 },
- { 0x00, 0xBD, 0xBD, 0xBD },
- { 0x00, 0xC0, 0xC0, 0xC0 },
- { 0x00, 0xC6, 0xC6, 0xC6 },
- { 0x00, 0xCD, 0xCD, 0xCD },
- { 0x00, 0xD0, 0xD0, 0xD0 },
- { 0x00, 0x19, 0x19, 0x19 },
- { 0x00, 0x31, 0x31, 0x31 }
-};
-
-static const char* const DIRECTION_TEXT_UPPER[4] = {
- "NORTH", "EAST", "SOUTH", "WEST"
-};
-
-static const char* const DIRECTION_TEXT[4] = {
- "¥¢¥à",
- "®á⮪",
- "£",
- " ¯ ¤"
-};
-
-static const char* const RACE_NAMES[5] = {
- "¥«®¢¥ª",
- "«ìä",
- "¢®àä",
- "®¬",
- "®«ã®àª"
-};
-
-static const int RACE_HP_BONUSES[5] = { 0, -2, 1, -1, 2 };
-
-static const int RACE_SP_BONUSES[5][2] = {
- { 0, 0 }, { 2, 0 }, { -1, -1 }, { 1, 1 }, { -2, -2 }
-};
-
-static const char* const ALIGNMENT_NAMES[3] = {
- "®à®è¨©",
- "¥©âà «",
- "«®©(- ï)"
-};
-
-static const char* const SEX_NAMES[2] = {
- "ã¦ç¨ ",
- "¥é¨ "
-};
-
-static const char* const SKILL_NAMES[18] = {
- "®à®¢á⢮\t100",
- "à㦥©¨ª",
- "áâ஫®£",
- "â«¥â",
- " à⮣à ä",
- "à¥áâ®®á¥æ",
- "ã¢á⢮ ¯à ¢«¥¨ï",
- "§ëª®¢¥¤",
- "㯥æ",
- "ª «®« §",
- "âãଠ",
- "«¥¤®¯ëâ",
- " £¨áâà ¬®«¨â¢ë",
- "®¢ª®áâì ¯ «ì楢",
- "«®¢¥æ",
- "å®â¨ª",
- "®á¯à¨ï⨥",
- "ã¢á⢮ ®¯ á®áâ¨"
-};
-
-static const char* const CLASS_NAMES[11] = {
- "ëæ àì",
- " « ¤¨",
- "ã稪",
- "«¨à¨ª",
- " £",
- "®à",
- "¨¤§ï",
- " ࢠà",
- "à㨤",
- "«¥¤®¯ëâ",
- nullptr
-};
-
-static const int CLASS_EXP_LEVELS[10] = {
- 1500, 2000, 2000, 1500, 2000, 1000, 1500, 1500, 1500, 2000
-};
-
-static const char* const CONDITION_NAMES[17] = {
- "ப«ï⨥",
- "Heart Broken",
- "« ¡®áâì",
- "âà ¢«¥¨¥",
- "®«¥§ì",
- "¥§ã¬¨¥",
- "«î¡«ñ(- )",
- " ¢¥á¥«¥",
- "®",
- " ã먨",
- " á¬ï⥨¨",
- " à «¨ç",
- ".á®§ ¨ï",
- "¥àâ¢",
- " ¬¥ì",
- "¨ç⮦¥",
- "®à®è¥¥"
-};
-
-static const int CONDITION_COLORS[17] = {
- 9, 9, 9, 9, 9, 9, 9, 9, 32, 32, 32, 32, 6, 6, 6, 6, 15
-};
-
-static const char* const GOOD = "®à®è¥¥";
-
-static const char* const BLESSED = "\n\t014« £®á«®¢¥¨¥\t095%+d";
-
-static const char* const POWER_SHIELD = "\n\t014¨«®¢®© é¨â\t095%+d";
-
-static const char* const HOLY_BONUS = "\n\t014¢ï⮩ ¤ à\t095%+d";
-
-static const char* const HEROISM = "\n\t014㦥á⢮\t095%+d";
-
-static const char* const IN_PARTY = "\f15 ®âà拉\fd";
-
-static const char* const PARTY_DETAILS =
- "\015\003l\002\014""00"
- "\013""001""\011""035%s"
- "\013""009""\011""035%s"
- "\013""017""\011""035%s"
- "\013""025""\011""035%s"
- "\013""001""\011""136%s"
- "\013""009""\011""136%s"
- "\013""017""\011""136%s"
- "\013""025""\011""136%s"
- "\013""044""\011""035%s"
- "\013""052""\011""035%s"
- "\013""060""\011""035%s"
- "\013""068""\011""035%s"
- "\013""044""\011""136%s"
- "\013""052""\011""136%s"
- "\013""060""\011""136%s"
- "\013""068""\011""136%s";
-
-static const char* const PARTY_DIALOG_TEXT =
- "%s\x2\x3""c\v106\t013¢¥àå\t048¨§\t083\f37\fd¤ «\t118\f37\fdë£"
- "\t153\f37\fd®§¤\t188\f37ë\fd室\x1";
-
-static const int FACE_CONDITION_FRAMES[17] = {
- 2, 2, 2, 1, 1, 4, 4, 4, 3, 2, 4, 3, 3, 5, 6, 7, 0
-};
-
-static const int CHAR_FACES_X[6] = { 10, 45, 81, 117, 153, 189 };
-
-static const int HP_BARS_X[6] = { 13, 50, 86, 122, 158, 194 };
-
-static const char* const NO_ONE_TO_ADVENTURE_WITH =
- " ¬ ¥ á ª¥¬ ¯ãâ¥è¥á⢮¢ âì";
-
-static const char* const YOUR_ROSTER_IS_FULL = " è ᯨ᮪ ¯®«®!";
-
-static const byte DARKNESS_XLAT[3][256] = {
- {
- 0, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 44, 45, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 108, 109, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 124, 125, 126, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 140, 141, 142, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 168, 169, 170, 171, 172, 173, 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 188, 189, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 204, 205, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 220, 221, 222, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- }, {
- 0, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
- 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0,
- 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0,
- 104, 105, 106, 107, 108, 109, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0,
- 120, 121, 122, 123, 124, 125, 126, 127, 0, 0, 0, 0, 0, 0, 0, 0,
- 136, 137, 138, 139, 140, 141, 142, 143, 0, 0, 0, 0, 0, 0, 0, 0,
- 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 184, 185, 186, 187, 188, 189, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0,
- 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0,
- 216, 217, 218, 219, 220, 221, 222, 223, 0, 0, 0, 0, 0, 0, 0, 0,
- 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 0,
- 248, 249, 250, 251, 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, 0, 0
- }, {
- 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, 0,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, 0,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 0, 0, 0, 0,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 0, 0, 0, 0,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 0, 0, 0, 0,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
- 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 0, 0, 0, 0,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 0, 0, 0, 0,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, 0,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 0, 0, 0
- }
-};
-
-static const char* const PLEASE_WAIT = "\fd\x3""c\t000\v002®¤®¦¤¨â¥...";
-
-static const char* const OOPS = "\x3""c\t000\v002¯á...";
-
-static const int SCREEN_POSITIONING_X[4][48] = {
- {
- -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, -2, -1,
- -1, 0, 0, 0, 1, 1, 2, -4, -3, -3, -2, -2,
- -1, -1, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4,
- -3, -2, -1, 0, 0, 1, 2, 3, -4, 4, 0, 0
- }, {
- 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 1
- }, {
- 1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 2, 1,
- 1, 0, 0, 0, -1, -1, -2, 4, 3, 3, 2, 2,
- 1, 1, 0, 0, 0, -1, -1, -2, -2, -3, -3, -4,
- 3, 2, 1, 0, 0, -1, -2, -3, 4, -4, 0, 0
- }, {
- 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3,
- -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
- -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, -1
- }
-};
-
-static const int SCREEN_POSITIONING_Y[4][48] = {
- {
- 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 1
- }, {
- 1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 2, 1,
- 1, 0, 0, 0, -1, -1, -2, 4, 3, 3, 2, 2,
- 1, 1, 0, 0, 0, -1, -1, -2, -2, -3, -3, -4,
- 3, 2, 1, 0, 0, -1, -2, -3, 4, -4, 0, 0
- }, {
- 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3,
- -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
- -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, -1
- }, {
- -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, -2, -1,
- -1, 0, 0, 0, 1, 1, 2, -4, -3, -3, -2, -2,
- -1, -1, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4,
- -3, -2, -1, 0, 0, 1, 2, 3, -4, 4, 0, 0
- }
-};
-
-static const int MONSTER_GRID_BITMASK[12] = {
- 0xC, 8, 4, 0, 0xF, 0xF000, 0xF00, 0xF0, 0xF00, 0xF0, 0x0F, 0xF000
-};
-
-static const int INDOOR_OBJECT_X[2][12] = {
- { -5, -7, -112, 98, -8, -65, 49, -9, -34, 16, -58, 40 },
- { -35, -35, -142, 68, -35, -95, 19, -35, -62, -14, -98, 16 }
-};
-
-static const int MAP_OBJECT_Y[2][12] = {
- { 2, 25, 25, 25, 50, 50, 50, 58, 58, 58, 58, 58 },
- { -65, -6, -6, -6, 36, 36, 36, 54, 54, 54, 54, 54 }
-};
-
-static const int INDOOR_MONSTERS_Y[4] = { 2, 34, 53, 59 };
-
-static const int OUTDOOR_OBJECT_X[2][12] = {
- { -5, -7, -112, 98, -8, -77, 61, -9, -43, 25, -74, 56 },
- { -35, -35, -142, 68, -35, -95, 19, -35, -62, -24, -98, 16 }
-};
-
-static const int OUTDOOR_MONSTER_INDEXES[26] = {
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 69, 70,
- 71, 72, 73, 74, 75, 90, 91, 92, 93, 94, 112, 115, 118
-};
-
-static const int OUTDOOR_MONSTERS_Y[26] = {
- 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 53, 53,
- 53, 53, 53, 53, 53, 34, 34, 34, 34, 34, 2, 2, 2
-};
-
-static const int DIRECTION_ANIM_POSITIONS[4][4] = {
- { 0, 1, 2, 3 }, { 3, 0, 1, 2 }, { 2, 3, 0, 1 }, { 1, 2, 3, 0 }
-};
-
-static const byte WALL_SHIFTS[4][48] = {
- {
- 12, 0, 12, 8, 12, 12, 0, 12, 8, 12, 12, 0,
- 12, 0, 12, 8, 12, 8, 12, 12, 0, 12, 0, 12,
- 0, 12, 0, 12, 8, 12, 8, 12, 8, 12, 8, 12,
- 0, 0, 0, 0, 8, 8, 8, 8, 0, 0, 4, 4
- }, {
- 8, 12, 8, 4, 8, 8, 12, 8, 4, 8, 8, 12,
- 8, 12, 8, 4, 8, 4, 8, 8, 12, 8, 12, 8,
- 12, 8, 12, 8, 4, 8, 4, 8, 4, 8, 4, 8,
- 12, 12, 12, 12, 4, 4, 4, 4, 0, 0, 0, 0
- }, {
- 4, 8, 4, 0, 4, 4, 8, 4, 0, 4, 4, 8,
- 4, 8, 4, 0, 4, 0, 4, 4, 8, 4, 8, 4,
- 8, 4, 8, 4, 0, 4, 0, 4, 0, 4, 0, 4,
- 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 12, 12
- }, {
- 0, 4, 0, 12, 0, 0, 4, 0, 12, 0, 0, 4,
- 0, 4, 0, 12, 0, 12, 0, 0, 4, 0, 4, 0,
- 4, 0, 4, 0, 12, 0, 12, 0, 12, 0, 12, 0,
- 4, 4, 4, 4, 12, 12, 12, 12, 0, 0, 8, 8
- }
-};
-
-static const int DRAW_NUMBERS[25] = {
- 36, 37, 38, 43, 42, 41,
- 39, 20, 22, 24, 33, 31,
- 29, 26, 10, 11, 18, 16,
- 13, 5, 9, 6, 0, 4, 1
-};
-
-static const int DRAW_FRAMES[25][2] = {
- { 18, 24 }, { 19, 23 }, { 20, 22 }, { 24, 18 }, { 23, 19 }, { 22, 20 },
- { 21, 21 }, { 11, 17 }, { 12, 16 }, { 13, 15 }, { 17, 11 }, { 16, 12 },
- { 15, 13 }, { 14, 14 }, { 6, 10 }, { 7, 9 }, { 10, 6 }, { 9, 7 },
- { 8, 8 }, { 3, 5 }, { 5, 3 }, { 4, 4 }, { 0, 2 }, { 2, 0 },
- { 1, 1 }
-};
-
-static const int COMBAT_FLOAT_X[8] = { -2, -1, 0, 1, 2, 1, 0, -1 };
-
-static const int COMBAT_FLOAT_Y[8] = { -2, 0, 2, 0, -1, 0, 2, 0 };
-
-static const int MONSTER_EFFECT_FLAGS[15][8] = {
- { 0x104, 0x105, 0x106, 0x107, 0x108, 0x109, 0x10A, 0x10B },
- { 0x10C, 0x10D, 0x10E, 0x10F, 0x0, 0x0, 0x0, 0x0 },
- { 0x110, 0x111, 0x112, 0x113, 0x0, 0x0, 0x0, 0x0 },
- { 0x114, 0x115, 0x116, 0x117, 0x0, 0x0, 0x0, 0x0 },
- { 0x200, 0x201, 0x202, 0x203, 0x0, 0x0, 0x0, 0x0 },
- { 0x300, 0x301, 0x302, 0x303, 0x400, 0x401, 0x402, 0x403 },
- { 0x500, 0x501, 0x502, 0x503, 0x0, 0x0, 0x0, 0x0 },
- { 0x600, 0x601, 0x602, 0x603, 0x0, 0x0, 0x0, 0x0 },
- { 0x604, 0x605, 0x606, 0x607, 0x608, 0x609, 0x60A, 0x60B },
- { 0x60C, 0x60D, 0x60E, 0x60F, 0x0, 0x0, 0x0, 0x0 },
- { 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100 },
- { 0x101, 0x101, 0x101, 0x101, 0x101, 0x101, 0x101, 0x101 },
- { 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102 },
- { 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103 },
- { 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108 }
-};
-
-static const int SPELLS_ALLOWED[3][40] = {
- {
- 0, 1, 2, 3, 5, 6, 7, 8, 9, 10,
- 12, 14, 16, 23, 26, 27, 28, 30, 31, 32,
- 33, 42, 46, 48, 49, 50, 52, 55, 56, 58,
- 59, 62, 64, 65, 67, 68, 71, 73, 74, 76
- }, {
- 1, 4, 11, 13, 15, 17, 18, 19, 20, 21,
- 22, 24, 25, 29, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 47, 51, 53, 54,
- 57, 60, 61, 63, 66, 69, 70, 72, 75, 76
- }, {
- 0, 1, 2, 3, 4, 5, 7, 9, 10, 20,
- 25, 26, 27, 28, 30, 31, 34, 38, 40, 41,
- 42, 43, 44, 45, 49, 50, 52, 53, 55, 59,
- 60, 61, 62, 67, 68, 72, 73, 74, 75, 76
- }
-};
-
-static const int BASE_HP_BY_CLASS[10] = { 10, 8, 7, 5, 4, 8, 7, 12, 6, 9 };
-
-static const int AGE_RANGES[10] =
- { 1, 6, 11, 18, 36, 51, 76, 101, 201, 0xffff };
-
-static const int AGE_RANGES_ADJUST[2][10] = {
- { -250, -50, -20, -10, 0, -2, -5, -10, -20, -50 },
- { -250, -50, -20, -10, 0, 2, 5, 10, 20, 50 }
-};
-
-static const int STAT_VALUES[24] = {
- 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 25, 30, 35, 40,
- 50, 75, 100, 125, 150, 175, 200, 225, 250, 65535
-};
-
-static const int STAT_BONUSES[24] = {
- -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20
-};
-
-static const int ELEMENTAL_CATEGORIES[6] = { 8, 15, 20, 25, 33, 36 };
-
-static const int ATTRIBUTE_CATEGORIES[10] =
- { 9, 17, 25, 33, 39, 45, 50, 56, 61, 72 };
-
-static const int ATTRIBUTE_BONUSES[72] = {
- 2, 3, 5, 8, 12, 17, 23, 30, 38, 47, // Might bonus
- 2, 3, 5, 8, 12, 17, 23, 30, // INT bonus
- 2, 3, 5, 8, 12, 17, 23, 30, // PER bonus
- 2, 3, 5, 8, 12, 17, 23, 30, // SPD bonus
- 3, 5, 10, 15, 20, 30, // ACC bonus
- 5, 10, 15, 20, 25, 30, // LUC bonus
- 4, 6, 10, 20, 50, // HP bonus
- 4, 8, 12, 16, 20, 25, // SP bonus
- 2, 4, 6, 10, 16, // AC bonus
- 4, 6, 8, 10, 12, 14, 16, 18, 20, 25 // Thievery bonus
-};
-
-static const int ELEMENTAL_RESISTENCES[37] = {
- 0, 5, 7, 9, 12, 15, 20, 25, 30, 5, 7, 9, 12, 15, 20, 25,
- 5, 10, 15, 20, 25, 10, 15, 20, 25, 40, 5, 7, 9, 11, 13, 15, 20, 25,
- 5, 10, 20
-};
-
-static const int ELEMENTAL_DAMAGE[37] = {
- 0, 2, 3, 4, 5, 10, 15, 20, 30, 2, 3, 4, 5, 10, 15, 20, 2, 4, 5, 10, 20,
- 2, 4, 8, 16, 32, 2, 3, 4, 5, 10, 15, 20, 30, 5, 10, 25
-};
-
-static const int WEAPON_DAMAGE_BASE[35] = {
- 0, 3, 2, 3, 2, 2, 4, 1, 2, 4, 2, 3,
- 2, 2, 1, 1, 1, 1, 4, 4, 3, 2, 4, 2,
- 2, 2, 5, 3, 3, 3, 3, 5, 4, 2, 6
-};
-
-static const int WEAPON_DAMAGE_MULTIPLIER[35] = {
- 0, 3, 3, 4, 5, 4, 2, 3, 3, 3, 3, 3,
- 2, 4, 10, 6, 8, 9, 4, 3, 6, 8, 5, 6,
- 4, 5, 3, 5, 6, 7, 2, 2, 2, 2, 4
-};
-
-static const int METAL_DAMAGE[22] = {
- -3, -6, -4, -2, 2, 4, 6, 8, 10, 0, 1,
- 1, 2, 2, 3, 4, 5, 12, 15, 20, 30, 50
-};
-
-static const int METAL_DAMAGE_PERCENT[22] = {
- 253, 252, 3, 2, 1, 2, 3, 4, 6, 0, 1,
- 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10
-};
-
-static const int METAL_LAC[22] = {
- -3, 0, -2, -1, 1, 2, 4, 6, 8, 0, 1,
- 1, 2, 2, 3, 4, 5, 10, 12, 14, 16, 20
-};
-
-static const int ARMOR_STRENGTHS[14] = { 0, 2, 4, 5, 6, 7, 8, 10, 4, 2, 1, 1, 1, 1 };
-
-static const int MAKE_ITEM_ARR1[6] = { 0, 8, 15, 20, 25, 33 };
-
-static const int MAKE_ITEM_ARR2[6][7][2] = {
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 6, 7 }, { 7, 7 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 5 }, { 5, 5 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
- { { 0, 0 }, { 1, 1 }, { 1, 1 }, { 1, 2 }, { 2, 2 }, { 2, 3 }, { 3, 3 } }
-};
-
-static const int MAKE_ITEM_ARR3[10][7][2] = {
- { { 0, 0 }, { 1, 4 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 6, 10 }, { 10, 10 } },
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 6 }, { 6, 6 } },
- { { 0, 0 }, { 1, 2 }, { 2, 3 }, { 3, 4 }, { 4, 5 }, { 5, 6 }, { 6, 6 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 6 }, { 6, 6 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
- { { 0, 0 }, { 1, 2 }, { 1, 4 }, { 3, 6 }, { 5, 8 }, { 7, 10 }, { 10, 10 } }
-};
-
-static const int MAKE_ITEM_ARR4[2][7][2] = {
- { { 0, 0 }, { 1, 4 }, { 3, 7 }, { 4, 8 }, { 5, 9 }, { 8, 9 }, { 9, 9 } },
- { { 0, 0 }, { 1, 4 }, { 2, 6 }, { 4, 7 }, { 6, 10 }, { 9, 13 }, { 13, 13 } }
-};
-
-static const int MAKE_ITEM_ARR5[8][2] = {
- { 0, 0 }, { 1, 15 }, { 16, 30 }, { 31, 40 }, { 41, 50 },
- { 51, 60 }, { 61, 73 }, { 61, 73 }
-};
-
-static const int OUTDOOR_DRAWSTRUCT_INDEXES[44] = {
- 37, 38, 39, 40, 41, 44, 42, 43, 47, 45, 46,
- 48, 49, 52, 50, 51, 66, 67, 68, 69, 70, 71,
- 72, 75, 73, 74, 87, 88, 89, 90, 91, 94, 92,
- 93, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120
-};
-
-static const int TOWN_MAXES[2][11] = {
- { 23, 13, 32, 16, 26, 16, 16, 16, 16, 16, 16 },
- { 26, 19, 48, 27, 26, 37, 16, 16, 16, 16, 16 }
-};
-
-static const char* const TOWN_ACTION_MUSIC[2][7] = {
- { "bank.m", "smith.m", "guild.m", "tavern.m",
- "temple.m", "grounds.m", "endgame.m" },
- { "bank.m", "sf09.m", "guild.m", "tavern.m",
- "temple.m", "smith.m", "endgame.m" }
-};
-
-static const char* const TOWN_ACTION_SHAPES[7] = {
- "bnkr", "blck", "gild", "tvrn", "tmpl", "trng", "eface08"
-};
-
-static const int TOWN_ACTION_FILES[2][7] = {
- { 3, 2, 4, 2, 4, 2, 1 }, { 5, 3, 7, 5, 4, 6, 1 }
-};
-
-static const char* const BANK_TEXT =
- "\r\x2\x3""c\v122\t013"
- "\f37\fdª«\t040\f37\fd\t067ESC"
- "\x1\t000\v000 ª ᨠ\v015\n"
- " ª\x3""l\n"
- "®«\x3""r\t000%s\x3""l\n"
- "«¬§\x3""r\t000%s\x3""c\n"
- "\n"
- "âàï¤\x3""l\n"
- "®«\x3""r\t000%s\x3""l\n"
- "«¬§\x3""r\t000%s";
-
-static const char* const BLACKSMITH_TEXT =
- "\x1\r\x3""c\v000\t000"
- " ¢ª \t039\v027%s\x3""l\v046\n"
- "\t011\f37\fd¬®âà¥âì\n"
- "\t000\v090®«\x3""r\t000%s"
- "\x2\x3""c\v122\t040ESC\x1";
-
-static const char* const GUILD_NOT_MEMBER_TEXT =
- "\në ¤®«¦ë ¡ëâì ç«¥®¬ £¨«ì¤¨¨, çâ®¡ë ¯®ªã¯ âì § ª«¨ ¨ï.";
-
-static const char* const GUILD_TEXT =
- "\x3""c\v027\t039%s"
- "\x3""l\v046\n"
- "\t012\f37\fd㯨âì\n"
- "\t012\f37\fd¯¨á ¨ï";
-
-static const char* const TAVERN_TEXT =
- "\r\x3""c\v000\t000 ¢¥à \t039"
- "\v027%s%s\x3""l\t000"
- "\v090®«\x3""r\t000%s\x2\x3""c\v122"
- "\t021\f37\fdâ¤ëå\t060ESC\x1";
-
-static const char* const FOOD_AND_DRINK =
- "\x3""l\t017\v046\f37\fd믨âì\n"
- "\t017\f37
\fd¤ \n"
- "\t017\f37\fd ¥¢ë¥\n"
- "\t017\f37\fd«ãå¨";
-
-static const char* const GOOD_STUFF =
- "\n"
- "\n"
- "¥¤ãà®\n"
- "\n"
- " ¦¬¨â¥ ª« ¢¨èã!";
-
-static const char* const HAVE_A_DRINK = "\n¯¥à¢ ¢ë¯¥©â¥\n\n ¦¬¨â¥ ª« ¢¨èã!";
-
-static const char* const YOURE_DRUNK = "\n\në ¯ìïë\n\n ¦¬¨â¥ ª« ¢¨èã!";
-
-static const int TAVERN_EXIT_LIST[2][6][5][2] = {
- {
- { { 21, 17 }, { 0, 0 }, { 20, 3 }, { 0, 0 }, { 0, 0 } },
- { { 13, 4 }, { 0, 0 }, { 19, 9 }, { 0, 0 }, { 0, 0 } },
- { { 20, 10 }, { 12, 8 }, { 5, 26 }, { 3, 4 }, { 7, 5 } },
- { { 18, 4 }, { 0, 0 }, { 19, 16 }, { 0, 0 }, { 11, 12 } },
- { { 15, 21 }, { 0, 0 }, { 13, 21 }, { 0, 0 }, { 0, 0 } },
- { { 10, 8 }, { 0, 0 }, { 15, 12 }, { 0, 0 }, { 0, 0 } },
- }, {
- { { 21, 17 }, { 0, 0 }, { 20, 3 }, { 0, 0 }, { 0, 0 } },
- { { 13, 4 }, { 0, 0 }, { 19, 9 }, { 0, 0 }, { 0, 0 } },
- { { 20, 10 }, { 12, 8 }, { 5, 26 }, { 3, 4 }, { 7, 5 } },
- { { 17, 24 }, { 14, 13 }, { 0, 0 }, { 0, 0 }, { 9, 4 } },
- { { 15, 21 }, { 0, 0 }, { 13, 21 }, { 0, 0 }, { 0, 0 } },
- { { 10, 8 }, { 0, 0 }, { 15, 12 }, { 0, 0 }, { 0, 0 } }
- }
-};
-
-static const char* const TEMPLE_TEXT =
- "\r\x3""c\v000\t000à ¬"
- "\t039\v027%s\x3""l\t000\v046"
- "\f37\fd¥ç¨âì\x3""r\t000%lu\x3""l\n"
- "\f37\fd à\x3""r\t000%lu\x3""l\n"
- "\f37\fdப«\x3""r\t000%s"
- "\x3""l\t000\v090®«\x3""r\t000%s"
- "\x2\x3""c\v122\t040ESC\x1";
-
-static const char* const EXPERIENCE_FOR_LEVEL =
- "%s\n㦮 %lu ®çª®¢ ®¯ëâ ¤«ï ã஢ï %u.";
-
-static const char* const TRAINING_LEARNED_ALL =
- "%s\në 㦥 § ¥â¥ ¢áñ, ç¥¬ã ¬ë ¬®¦¥¬ ¢ á ãç¨âì!";
-
-static const char* const ELIGIBLE_FOR_LEVEL =
- "%s ¬®¦¥â ®¡ãç âìáï ¤® ã஢ï %d.\x3""l\n"
- "\v081¥ \x3""r\t000%lu";
-
-static const char* const TRAINING_TEXT =
- "\r\x3""c¡ã票¥\n"
- "\n"
- "%s\x3""l\v090\t000®«\x3""r\t000%s\x2\x3""c\v122\t021"
- "\f37\fd¡ã票¥\t060ESC\x1";
-
-static const char* const GOLD_GEMS =
- "\x3""c\v000\t000%s\x3""l\n"
- "\n"
- "®«\x3""r\t000%s\x3""l\n"
- "«¬§\x3""r\t000%s\x2\x3""c\v096\t007\f37\fd«¬§\t035\f37\fd®«\t067ESC\x1";
-
-static const char* const GOLD_GEMS_2 =
- "\t000\v000\x3""c%s\x3""l\n"
- "\n"
- "\x4""077®«\x3""r\t000%s\x3""l\n"
- "\x4""077«¬§\x3""r\t000%s\x3""l\t000\v051\x4""077\n"
- "\x4""077";
-
-static const char* const DEPOSIT_WITHDRAWL[2] =
- { "®«®¦¨âì áçñâ", "ïâì á® áçñâ " };
-
-static const char* const NOT_ENOUGH_X_IN_THE_Y =
- "\x3""c\v012¥¤®áâ â®ç® %s %s!\x3""l";
-
-static const char* const NO_X_IN_THE_Y = "\x3""c\v012¥â %s %s!\x3""l";
-
-static const char* const STAT_NAMES[16] = {
- "¨« ", "⥫«¥ªâ", "¨« ¤ãå ", "«®¦¥¨¥", "ª®à®áâì",
- "¥âª®áâì", "¤ ç ", "®§à áâ", "஢¥ì", "« áá § é¨âë", "¤®à®¢ì¥",
- "窨 ¬ £¨¨", "á⮩稢®áâ¨", " ¢ëª¨", " £à ¤ë", "¯ëâ"
-};
-
-static const char* const CONSUMABLE_NAMES[4] =
- { "®«®â®", "«¬ §ë", "¨é ", "®áâ®ï¨¥" };
-
-static const char* const WHERE_NAMES[2] = { "ã ®âàï¤ ", "¢ ¡ ª¥" };
-
-static const char* const AMOUNT = "\x3""c\t000\v051ª®«ìª®\x3""l\n";
-
-static const char* const FOOD_PACKS_FULL = "\v007 è¨ à ª¨ 㦥 ¯®«¥ë!";
-
-static const char* const BUY_SPELLS =
- "\x3""c\v027\t039%s\x3""l\v046\n"
- "\t012\f37\fd㯨âì\n"
- "\t012\f37\fd¯¨á ¨ï";
-
-static const char* const GUILD_OPTIONS =
- "\x1\r\f00\x3""c\v000\t000¨«ì¤¨ï\n"
- "%s\x3""l\t000\v090®«"
- "\x3""r\t000%s\x2\x3""c\v122\t040ESC\x1";
-
-static const int MISC_SPELL_INDEX[74] = {
- NO_SPELL, MS_Light, MS_Awaken, MS_MagicArrow,
- MS_FirstAid, MS_FlyingFist, MS_EnergyBlast, MS_Sleep,
- MS_Revitalize, MS_CureWounds, MS_Sparks, MS_Shrapmetal,
- MS_InsectSpray, MS_ToxicCloud, MS_ProtFromElements, MS_Pain,
- MS_Jump, MS_BeastMaster, MS_Clairvoyance, MS_TurnUndead,
- MS_Levitate, MS_WizardEye, MS_Bless, MS_IdentifyMonster,
- MS_LightningBolt, MS_HolyBonus, MS_PowerCure, MS_NaturesCure,
- MS_LloydsBeacon, MS_PowerShield, MS_Heroism, MS_Hynotize,
- MS_WalkOnWater, MS_FrostBite, MS_DetectMonster, MS_Fireball,
- MS_ColdRay, MS_CurePoison, MS_AcidSpray, MS_TimeDistortion,
- MS_DragonSleep, MS_CureDisease, MS_Teleport, MS_FingerOfDeath,
- MS_CureParalysis, MS_GolemStopper, MS_PoisonVolley, MS_DeadlySwarm,
- MS_SuperShelter, MS_DayOfProtection, MS_DayOfSorcery, MS_CreateFood,
- MS_FieryFlail, MS_RechargeItem, MS_FantasticFreeze, MS_TownPortal,
- MS_StoneToFlesh, MS_RaiseDead, MS_Etheralize, MS_DancingSword,
- MS_MoonRay, MS_MassDistortion, MS_PrismaticLight, MS_EnchantItem,
- MS_Incinerate, MS_HolyWord, MS_Resurrection, MS_ElementalStorm,
- MS_MegaVolts, MS_Inferno, MS_SunRay, MS_Implosion,
- MS_StarBurst, MS_DivineIntervention
-};
-
-static const int SPELL_COSTS[77] = {
- 8, 1, 5, -2, 5, -2, 20, 10, 12, 8, 3,
- -3, 75, 40, 12, 6, 200, 10, 100, 30, -1, 30,
- 15, 25, 10, -2, 1, 2, 7, 20, -2, -2, 100,
- 15, 5, 100, 35, 75, 5, 20, 4, 5, 1, -2,
- 6, 2, 75, 40, 60, 6, 4, 25, -2, -2, 60,
- -1, 50, 15, 125, 2, -1, 3, -1, 200, 35, 150,
- 15, 5, 4, 10, 8, 30, 4, 5, 7, 5, 0
-};
-
-static const int DARK_SPELL_RANGES[12][2] = {
- { 0, 20 }, { 16, 35 }, { 27, 37 }, { 29, 39 },
- { 0, 17 }, { 14, 34 }, { 26, 37 }, { 29, 39 },
- { 0, 20 }, { 16, 35 }, { 27, 37 }, { 29, 39 }
-};
-
-static const int SWORDS_SPELL_RANGES[12][2] = {
- { 0, 20 },{ 16, 35 },{ 27, 39 },{ 29, 39 },
- { 0, 17 },{ 14, 34 },{ 26, 39 },{ 29, 39 },
- { 0, 20 },{ 16, 35 },{ 27, 39 },{ 29, 39 }
-};
-
-static const int CLOUDS_GUILD_SPELLS[5][20] = {
- {
- 1, 10, 20, 26, 27, 38, 40, 42, 45, 50,
- 55, 59, 60, 61, 62, 68, 72, 75, 77, 77
- }, {
- 3, 4, 5, 14, 15, 25, 30, 31, 34, 41,
- 49, 51, 53, 67, 73, 75, -1, -1, -1, -1
- }, {
- 4, 8, 9, 12, 13, 22, 23, 24, 28, 34,
- 41, 44, 52, 70, 73, 74, -1, -1, -1, -1
- }, {
- 6, 7, 9, 11, 12, 13, 17, 21, 22, 24,
- 29, 36, 56, 58, 64, 71, -1, -1, -1, -1
- }, {
- 6, 7, 9, 11, 12, 13, 18, 21, 29, 32,
- 36, 37, 46, 51, 56, 58, 69, -1, -1, -1
- }
-};
-
-static const int DARK_SPELL_OFFSETS[3][39] = {
- {
- 42, 1, 26, 59, 27, 10, 50, 68, 55, 62, 67, 73, 2,
- 5, 3, 31, 30, 52, 49, 28, 74, 0, 9, 7, 14, 8,
- 33, 6, 23, 71, 64, 56, 48, 46, 12, 32, 58, 65, 16
- }, {
- 42, 1, 45, 61, 72, 40, 20, 60, 38, 41, 75, 34, 4,
- 43, 25, 53, 44, 15, 70, 17, 24, 69, 22, 66, 57, 11,
- 29, 39, 51, 21, 19, 36, 47, 13, 54, 37, 18, 35, 63
- }, {
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38
- }
-};
-
-static const int SPELL_GEM_COST[77] = {
- 0, 0, 2, 1, 2, 4, 5, 0, 0, 0, 0, 10, 10, 10, 0, 0, 20, 4, 10, 20, 1, 10,
- 5, 5, 4, 2, 0, 0, 0, 10, 3, 1, 20, 4, 0, 20, 10, 10, 1, 10, 0, 0, 0, 2,
- 2, 0, 10, 10, 10, 0, 0, 10, 3, 2, 10, 1, 10, 10, 20, 0, 0, 1, 1, 20, 5, 20,
- 5, 0, 0, 0, 0, 5, 1, 2, 0, 2, 0
-};
-
-static const char* const NOT_A_SPELL_CASTER = "ë ¥ § ª«¨ ⥫ì...";
-
-static const char* const SPELLS_LEARNED_ALL =
- "ë 㦥 § ¥â¥ ¢áñ,\n"
- "\t010ç¥¬ã ¬ë ¬®¦¥¬ ¢ á\n"
- "\t010 ãç¨âì!\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n";
-
-static const char* const SPELLS_FOR = "\r\fd%s\x2\x3""c\t000\v002 ª«¨ ¨ï";
-
-static const char* const SPELL_LINES_0_TO_9 =
- "\x2\x3l\v015\t0011\n2\n3\n4\n5\n6\n7\n8\n9\n0";
-
-static const char* const SPELLS_DIALOG_SPELLS =
- "\x3l\v015"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l"
- "\t004\v110%s - %u\x1";
-
-static const char* const SPELL_PTS = " ";
-
-static const char* const GOLD = "®«";
-
-static const char* const SPELL_INFO =
- "\x3""c\f09%s\fd\x3""l\n"
- "\n"
- "%s\x3""c\t000\v110. ª« ¢¨èã!";
-
-static const char* const SPELL_PURCHASE =
- "\x3""l\v000\t000\fd%s ¥« ¥â¥ ¯à¨®¡à¥á⨠"
- "\f09%s\fd § %u?";
-
-static const char* const MAP_TEXT =
- "\x3""c\v000\t000%s\x3l\v139"
- "\t000X = %d\x3r\t000Y = %d\x3""c\t000%s";
-
-static const char* const LIGHT_COUNT_TEXT = "\x3""l\n\n\t024¢¥â\x3""r\t124%u";
-
-static const char* const FIRE_RESISTENCE_TEXT = "%c%s£®ì%s%u";
-
-static const char* const ELECRICITY_RESISTENCE_TEXT = "%c%s஬%s%u";
-
-static const char* const COLD_RESISTENCE_TEXT = "%c%s®«®¤%s%u";
-
-static const char* const POISON_RESISTENCE_TEXT = "%c%s¤/¨á«®â %s%u";
-
-static const char* const CLAIRVOYANCE_TEXT = "%c%sᮢ¨¤¥¨¥%s";
-
-static const char* const LEVITATE_TEXT = "%c%s¥¢¨â æ¨ï%s";
-
-static const char* const WALK_ON_WATER_TEXT = "%c%s®¦¤¥¨¥ ¯® ¢®¤¥";
-
-static const char* const GAME_INFORMATION =
- "\r\x3""c\t000\v001\f37%s ᨠ\fd\n"
- "£à®¢ ï ¨ä®à¬ æ¨ï\n"
- "\n"
- "¥£®¤ï \f37%s\fd\n"
- "\n"
- "\t032६ï\t072¥ì\t112®¤\n"
- "\t032\f37%d:%02d%c\t072%u\t112%u\fd%s";
-
-static const char* const WORLD_GAME_TEXT = "World";
-static const char* const DARKSIDE_GAME_TEXT = "Darkside";
-static const char* const CLOUDS_GAME_TEXT = "¡« ª ";
-static const char* const SWORDS_GAME_TEXT = "Swords";
-
-static const char* const WEEK_DAY_STRINGS[10] = {
- "¤¥áï⨤¥ì", "¯¥à¢®¤¥ì", "¢â®à®¤¥ì", "âà¥â쥤¥ì", "ç¥â¢¥à®¤¥ì",
- "¯ï⨤¥ì", "è¥á⨤¥ì", "ᥬ¨¤¥ì", "¢®á쬨¤¥ì", "¤¥¢ï⨤¥ì"
-};
-
-static const char* const CHARACTER_DETAILS =
- "\x3""l\v041\t196%s\t000\v002%s : %s %s %s"
- "\x3""r\t053\v028\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3""l\t131\f%02u%d\fd\t196\f15%lu\fd\x3""r"
- "\t053\v051\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3""l\t131\f%02u%u\fd\t196\f15%lu\fd"
- "\x3""r\t053\v074\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3""l\t131\f15%u\fd\t196\f15%lu\fd"
- "\x3""r\t053\v097\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3""l\t131\f15%u\fd\t196\f15%u %s\fd"
- "\x3""r\t053\v120\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3""l\t131\f15%u\fd\t196\f%02u%s\fd"
- "\t245%s%s%s%s\fd";
-
-static const char *const RU_DAYS[3] = { "¤¥ì", "¤ï", "¤¥©" };
-
-static const char* const PARTY_GOLD = "®«®â®";
-
-static const char* const PLUS_14 = "\f14+";
-
-static const char* const CHARACTER_TEMPLATE =
- "\x1\f00\r\x3""l\t029\v018¨«\t080âª\t131¤®à\t196¯ëâ"
- "\t029\v041â\t080¤ç\t131\t029\v064ãå\t080§à"
- "\t131áâ\t196«¬ §ë\t029\v087«¦\t080à¢\t131¢ª"
- "\t196¨é \t029\v110ªà\t080\t131 £à\t196®áâ®ï¨¥"
- "\x3""c\t290\v025\f37\fd¥é¨\t290\v057\f37"
- "\fdáâà\t290\v089\f37\fd¬¥\t290\v121ë室\x3""l%s";
-
-static const char* const EXCHANGING_IN_COMBAT =
- "\x3""c\v007\t000® ¢à¥¬ï ¡¨â¢ë § ¯à¥é¥® ¬¥ïâìáï ¬¥áâ ¬¨!";
-
-static const char* const CURRENT_MAXIMUM_RATING_TEXT =
- "\x2\x3""c%s\n"
- "¥©ç á / ªá¨¬ã¬\n"
- "\x3""r\t054%lu\x3""l\t058/ %lu\n"
- "\x3""c £: %s\x1";
-
-static const char* const CURRENT_MAXIMUM_TEXT =
- "\x2\x3""c%s\n"
- "¥©ç á / ªá¨¬ã¬\n"
- "\x3""r\t054%d\x3""l\t058/ %lu";
-
-static const char* const RATING_TEXT[24] = {
- "¥â", "¨§¥àë©", " «ª¨©", "ç.¨§ª¨©", "¨§ª¨©", "।¨©", "®à®è¨©",
- "⫨çë©", "ë᮪¨©", "ëá®ç¥ë©", "®«ì让", "£à®¬ë©", "¤¨¢¨â¥«ìë©",
- "¥¢¥à®ïâë©", "¨£ â᪨©", " â áâ¨çë©", "§ã¬¨â¥«ìë©", "®à §¨â¥«ìë©",
- "à ¤¨®§ë©", "஬ ¤ë©", "®«®áá «ìë©", "®âàïá î騩", "㤮¢¨éë©",
- "ëá®ç ©è¨©"
-};
-
-static const char* const AGE_TEXT =
- "\x2\x3""c%s\n"
- "¥ªã騩 / áâ®ï騩\n"
- "\x3""r\t057%u\x3""l\t061/ %u\n"
- "\x3""c®¤¨«%s: %u / %u\x1";
-
-static const char* const LEVEL_TEXT =
- "\x2\x3""c%s\n"
- "¥ªã騩 / ªá¨¬ã¬\n"
- "\x3""r\t054%u\x3""l\t058/ %u\n"
- "\x3""c%u â ª%s/ ã¤\x1";
-
-static const char* const RESISTENCES_TEXT =
- "\x2\x3""c%s\x3""l\n"
- "\t020£®ì\t100%u\n"
- "\t020®«®¤\t100%u\n"
- "\t020஬\t100%u\n"
- "\t020¤\t100%u\n"
- "\t020¥à£¨ï\t100%u\n"
- "\t020 £¨ï\t100%u";
-
-static const char* const NONE = "\n\t012¥â";
-
-static const char* const EXPERIENCE_TEXT =
- "\x2\x3""c%s\x3""l\n"
- "\t005¥ªã騩:\t070%lu\n"
- "\t005«. ã஢¥ì:\t070%s\x1";
-
-static const char* const ELIGIBLE = "\f12®áâ㯥\fd";
-
-static const char* const IN_PARTY_IN_BANK =
- "\x2\x3""c%s\n"
- "%lu á ᮡ®©\n"
- "%lu ¢ ¡ ª¥\x1\x3""l";
-
-static const char* const FOOD_TEXT =
- "\x2\x3""c%s\n"
- "%u ¯®àæ¨%c\n"
- "¢ â¨â %u %s\x1\x3""l";
-
-static const char* const EXCHANGE_WITH_WHOM = "\t010\v005®¬¥ïâìáï á ª¥¬?";
-
-static const char* const QUICK_REF_LINE =
- "\v%3d\t007%u)\t027%s\t110%c%c%c\x3r\t160\f%02u%u\fd"
- "\x3l\t170\f%02u%d\fd\t208\f%02u%u\fd\t247\f"
- "%02u%u\fd\t270\f%02u%c%c%c%c\fd";
-
-static const char* const QUICK_REFERENCE =
- "\r\x3""cëáâà ï c¯à ¢ª \v012\x3""l"
- "\t007#\t027¬ï\t110«á\t147à¢\t174¤®à"
- "\t214\t242\t270®áâ"
- "%s%s%s%s%s%s%s%s"
- "\v110\t064\x3""c®«®â®\t144«¬ §ë\t224¨é \v119"
- "\t064\f15%lu\t144%lu\t224%u %s\fd";
-
-static const int BLACKSMITH_MAP_IDS[2][4] =
- { { 28, 30, 73, 49 }, { 29, 31, 37, 43 } };
-
-static const char* const ITEMS_DIALOG_TEXT1 =
- "\r\x2\x3""c\v021\t017àã\f37¦\fd\t051\f37\fdà®ï\t085"
- "\f37\fdªà è\t119\f37\fd §\t153%s\t187%s\t221%s\t255%s\t289ë室";
-
-static const char* const ITEMS_DIALOG_TEXT2 =
- "\r\x2\x3""c\v021\t017àã\f37¦\fd\t051\f37\fdà®ï\t085"
- "\f37\fdªà è\t119\f37\fd §\t153\f37%s\t289ë室";
-
-static const char* const ITEMS_DIALOG_LINE1 = "\x3r\f%02u\t023%2d)\x3l\t028%s\n";
-static const char* const ITEMS_DIALOG_LINE2 = "\x3r\f%02u\t023%2d)\x3l\t028%s\x3r\t000%u\n";
-
-static const char* const BTN_BUY = "\f37\fdã¯";
-static const char *const BTN_SELL = "\f37\fdத";
-static const char* const BTN_IDENTIFY = "\f37\fd¯®§";
-static const char* const BTN_FIX = "\f37\fd¨¨âì";
-static const char* const BTN_USE = "\f37\fdá¯";
-static const char* const BTN_EQUIP = "\f37\fd ¤";
-static const char* const BTN_REMOVE = "\f37\fdïâì";
-static const char* const BTN_DISCARD = "\f37\fdë¡à";
-static const char* const BTN_QUEST = "\f37\fd ¤ ";
-static const char* const BTN_ENCHANT = "\fd ç à";
-static const char* const BTN_RECHARGE = "\fd¥à¥§à";
-static const char* const BTN_GOLD = "\fd®«®â®";
-
-static const char* const ITEM_BROKEN = "\f32á«®¬ ® ";
-static const char* const ITEM_CURSED = "\f09¯à®ª«ïâ® ";
-static const char* const ITEM_OF = "";
-
-static const char* const BONUS_NAMES[7] = {
- "", "¡¨©æë ¤à ª®®¢", "§£®ïî饣® ¬ñàâ¢ëå", "àãè¨â¥«ï £®«¥¬®¢",
- " ¢¨â¥«ï ᥪ®¬ëå", "¡¨©æë ¬®áâ஢", "¡¨©æë §¢¥à¥©"
-};
-
-static const char* const WEAPON_NAMES[41] = {
- nullptr, "¬¥ç ", "£« ¤¨ãá ", "¯ « è ", "ïâ £ ",
- "ª®à⨪ ", "á ¡«ï ", "¤ã¡¨ ", "⮯®à ", "ª â ", "ãç ª¨ ",
- "¢ ª¨¤§ ᨠ", "ª¨¦ « ", "¡ã« ¢ ", "楯 ", "¦¥§« ", "¬®«®â ", "ª®¯ìñ ",
- "¡¥à¤ëè ", "£«¥ä ", " «¥¡ ठ", "¯¨ª ", "ä« ¬¡¥à£ ", "â१㡥æ ",
- "¯®á®å ", "¡®¥¢®© ¬®«®â ", " £¨ â ", "¡®¥¢®© ⮯®à ", "ᥪ¨à ",
- "⮯®à ¯ « ç ", "«ãª ", "¡®«ì让 «ãª ", " à¡ «¥â ", "¯à é ",
- "¥ç - 㡨©æ ᨠ",
- "Elder LongSword ", "Elder Dagger ", "Elder Mace ", "Elder Spear ",
- "Elder Staff ", "Elder LongBow "
-};
-
-static const char* const ARMOR_NAMES[14] = {
- nullptr, "¬ â¨ï ", "ç¥èãï ", "¯ æ¨àì ", "ª®«ìç㣠",
- "îè¬ ", "¡¥åâ¥à¥æ ", "« âë ", "é¨â ",
- "è«¥¬ ", "á ¯®£¨ ", "¯« é ", " ª¨¤ª ", "¯¥àç ⪨ "
-};
-
-static const char* const ACCESSORY_NAMES[11] = {
- nullptr, "ª®«ìæ® ", "¯®ïá ", "¡à®èì ", "¬¥¤ «ì ", "â «¨á¬ ", "ª ¬¥ï ",
- "áª à ¡¥© ", "ªã«® ", "®¦¥à¥«ì¥ ", " ¬ã«¥â "
-};
-
-static const char* const MISC_NAMES[22] = {
- nullptr, "᪨¯¥âà ", "á ¬®æ¢¥â ", "ª ¬¥ì ", "èª â㫪 ", "áä¥à ", "ண ",
- "¬®¥âª ", "¦¥§« ", "ᢨá⮪ ", "§¥«ì¥ ", "ᢨ⮪ ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ",
- "¯®¤¤¥«ª ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ",
- "¯®¤¤¥«ª ", "¯®¤¤¥«ª "
-};
-
-static const char* const SPECIAL_NAMES[74] = {
- nullptr, "ᢥâ ", "¯à®¡ã¦¤¥¨ï", "¢®«è¥¡ëå áâ५", "¯¥à¢®© ¯®¬®é¨",
- "ªã« ª®¢", "í¥à£¥â¨ç¥áª®£® ¢§àë¢ ", "ãá믫¥¨ï", "«¥ç¥¨ï á« ¡®áâ¨",
- "«¥ç¥¨ï", "¨áªà", "èà ¯¥«¨", "९¥««¥â ", "冷¢¨âëå ®¡« ª®¢",
- "§ é¨âë ®â áâ¨å¨©", "¡®«¨", "¯à릪®¢", "ª®âà®«ï ¤ ¬®áâà ¬¨",
- "ïᮢ¨¤¥¨ï", "¨§£ ¨ï ¥¦¨â¨", "«¥¢¨â 樨", "¢®«è¥¡®£® £« § ",
- "¡« £®á«®¢¥¨ï", "®¯®§ ¨ï ¬®áâ஢", "¬®«¨©", "á¢ïâëå ¤ ஢", "¨á楫¥¨ï",
- "¯à¨à®¤®£® «¥ç¥¨ï", "¬ 类¢", "é¨â ", "¬ã¦¥á⢠", "£¨¯®§ ",
- "宦¤¥¨ï ¯® ¢®¤¥", "®¡¦¨£ î饣® 宫®¤ ", "¯®¨áª ¬®áâ஢",
- "®£¥ëå è ஢", "«ã祩 宫®¤ ", "¯à®â¨¢®ï¤¨ï", "à á¯ë«¥¨ï ª¨á«®âë",
- "¢à¥¬¥®£® ¨áª ¦¥¨ï", "ãá믫¥¨ï ¤à ª®®¢", "¢ ªæ¨ 樨", "⥫¥¯®àâ æ¨¨",
- "ᬥàâ¨", "᢮¡®¤®£® ¤¢¨¦¥¨ï", "®áâ ®¢ª¨ £®«¥¬ ", "冷¢¨âëå § «¯®¢",
- "ᬥà⥫쮣® à®ï", "ã¡¥¦¨é ", "¤ï § é¨âë", "¤ï ¬ £¨¨", "¯¨à ",
- "®£¥®£® 楯 ", "¯¥à¥§ à浪¨", "¬®à®§ ", "£®à®¤áª¨å ¯®àâ «®¢",
- "áïâ¨ï ®ª ¬¥¥¨ï", "®¦¨¢«¥¨ï ¬ñàâ¢ëå", "¤¥¬ â¥à¨ «¨§ 樨",
- "â æãîé¨å ª«¨ª®¢", "«ãëå «ã祩", "¨§¬¥¥¨ï ¢¥á ",
- "¯à¨§¬ â¨ç¥áª®£® ᢥâ ", "ç à", "¨á¯¥¯¥«¥¨ï", "á¢ïâëå á«®¢", "¢®áªà¥è¥¨ï",
- "¡ãàì", "¬¥£ ¢®«ìâ", "¨ä¥à®", "᮫¥çëå «ã祩", "¨¬¯«®§¨©",
- "¢§àë¢ §¢¥§¤ë", "!"
-};
-
-static const char* const ELEMENTAL_NAMES[6] = {
- "£ï", "஬ ", "®«®¤ ", "¨á«®âë/¤ ", "¥à£¨¨", " £¨¨"
-};
-
-static const char* const ATTRIBUTE_NAMES[10] = {
- "¨« ", "⥫«¥ªâ", "¨« ¤ãå ", "ª®à®áâì", "¥âª®áâì", "¤ ç ",
- "¤®à®¢ì¥", "窨 ¬ £¨¨", "« áá § é¨âë", "®à®¢á⢮"
-};
-
-static const char* const EFFECTIVENESS_NAMES[7] = {
- nullptr, "à ª®®¢", "ñàâ¢ëå", "®«¥¬®¢", " ᥪ®¬ëå", "®áâ஢", "¢¥à¥©"
-};
-
-static const char* const QUEST_ITEM_NAMES[85] = {
- "à ¢® ¢« ¤¥¨ï ìîª á«®¬",
- "àãáâ «ìë© ª«îç ®â ¥¤ì¬¨®© ¡ è¨",
- "â¬ëçª ¤«ï ¡ è¨ à§®£ ",
- "«îç ®â è¨ ¢ëá襩 ¬ £¨¨",
- "à £®æ¥ë© ¬ã«¥â ¥¢¥à®£® 䨪á ",
- " ¬¥ì ëáïç¨ ¦ ᮢ",
- "⯨à î騩 ª ¬¥ì £®«¥¬®¢",
- "⯨à î騩 ª ¬¥ì ª ",
- "ª¨¯¥âà ६¥®£® ᪠¦¥¨ï",
- "®£ «¨áâë",
- "«¨ªá¨à ®ááâ ®¢«¥¨ï",
- "®«è¥¡ë© ¦¥§« 䥩",
- "¨ ¤¥¬ ¯à¨æ¥ááë ®ªá ë",
- "¢ïé¥ ï ¨£ «ì䮢",
- "ª à ¡¥© ®¯«®é¥¨ï",
- "à¨áâ ««ë 쥧®í«¥ªâà¨ç¥á⢠",
- "¢¨â®ª ã¤à®áâ¨",
- "®à¥ì ä¨àë",
- "®áâﮩ ᢨá⮪ à®ä¨ ",
- "®«è¥¡ë© ªã«® ப ",
- "ய ¢è¨© ç¥à¥¯ ¨£®®",
- "®á«¥¤¨© 梥⮪ «¥â ",
- "®á«¥¤ïï ¤®¦¤¥¢ ï ª ¯¥«ìª ¢¥áë",
- "®á«¥¤ïï ᥦ¨ª §¨¬ë",
- "®á«¥¤¨© «¨á⠮ᥨ",
- "¥ç® £®àï稩 ªã᮪ ¯¥¬§ë",
- "¥£ ªà¥¤¨â ª®à®«ï",
- " §à¥è¥¨¥ à ᪮¯ª¨",
- "㪮«ª ",
- "㪫 ¨«ë",
- "㪫 ª®à®áâ¨",
- "㪫 «®¦¥¨ï",
- "㪫 ¥âª®áâ¨",
- "㪫 ¤ ç¨",
- "áâனá⢮",
- "Pass to Castleview",
- "Pass to Sandcaster",
- "Pass to Lakeside",
- "Pass to Necropolis",
- "Pass to Olympus",
- "Key to Great Western Tower",
- "Key to Great Southern Tower",
- "Key to Great Eastern Tower",
- "Key to Great Northern Tower",
- "Key to Ellinger's Tower",
- "Key to Dragon Tower",
- "Key to Darkstone Tower",
- "Key to Temple of Bark",
- "Key to Dungeon of Lost Souls",
- "Key to Ancient Pyramid",
- "Key to Dungeon of Death",
- "Amulet of the Southern Sphinx",
- "Dragon Pharoah's Orb",
- "Cube of Power",
- "Chime of Opening",
- "Gold ID Card",
- "Silver ID Card",
- "Vulture Repellant",
- "Bridle",
- "Enchanted Bridle",
- "Treasure Map (Goto E1 x1, y11)",
- "",
- "Fake Map",
- "Onyx Necklace",
- "Dragon Egg",
- "Tribble",
- "Golden Pegasus Statuette",
- "Golden Dragon Statuette",
- "Golden Griffin Statuette",
- "Chalice of Protection",
- "Jewel of Ages",
- "Songbird of Serenity",
- "Sandro's Heart",
- "Ector's Ring",
- "Vespar's Emerald Handle",
- "Queen Kalindra's Crown",
- "Caleb's Magnifying Glass",
- "Soul Box",
- "Soul Box with Corak inside",
- "Ruby Rock",
- "Emerald Rock",
- "Sapphire Rock",
- "Diamond Rock",
- "Monga Melon",
- "Energy Disk"
-};
-
-static const char* QUEST_ITEM_NAMES_SWORDS[51] = {
- "Pass to Hart", "Pass to Impery", "Pass to town3", "Pass to town4", "Pass to town5",
- "Key to Hart Sewers", "Key to Rettig's Pyramid", "Key to the Old Temple",
- "Key to Canegtut's Pyramid", "Key to Ascihep's Pyramid", "Key to Dragon Tower",
- "Key to Darkstone Tower", "Key to Temple of Bark", "Key to Dungeon of Lost Souls",
- "Key to Ancient Pyramid", "Key to Dungeon of Death", "Red Magic Hammer",
- "Green Magic Hammer", "Golden Magic Wand", "Silver Magic Hammer", "Magic Coin",
- "Ruby", "Diamond Mineral", "Emerald", "Sapphire", "Treasure Map (Goto E1 x1, y11)",
- "NOTUSED", "Melon", "Princess Crown", "Emerald Wand", "Druid Carving", "High Sign",
- "Holy Wheel", "Double Cross", "Sky Hook", "Sacred Cow", "Staff of the Mountain",
- "Hard Rock", "Soft Rock", "Rock Candy", "Ivy Plant", "Spirit Gem", "Temple of Sun holy lamp oil",
- "Noams Hammer", "Positive Orb", "Negative Orb", "FireBane Staff", "Diamond Edged Pick",
- "Monga Melon", "Energy Disk", "Old XEEN Quest Item"
-};
-
-static const int WEAPON_BASE_COSTS[35] = {
- 0, 50, 15, 100, 80, 40, 60, 1, 10, 150, 30, 60, 8, 50,
- 100, 15, 30, 15, 200, 80, 250, 150, 400, 100, 40, 120,
- 300, 100, 200, 300, 25, 100, 50, 15, 0
-};
-static const int ARMOR_BASE_COSTS[14] = {
- 0, 20, 100, 200, 400, 600, 1000, 2000, 100, 60, 40, 250, 200, 100
-};
-static const int ACCESSORY_BASE_COSTS[11] = {
- 0, 100, 100, 250, 100, 50, 300, 200, 500, 1000, 2000
-};
-static const int MISC_MATERIAL_COSTS[22] = {
- 0, 50, 1000, 500, 10, 100, 20, 10, 50, 10, 10, 100,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
-};
-static const int MISC_BASE_COSTS[76] = {
- 0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100, 100, 100, 100, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 300, 300, 300, 300, 300,
- 300, 300, 300, 300, 300, 400, 400, 400, 400, 400, 400, 400,
- 400, 400, 400, 500, 500, 500, 500, 500, 500, 500, 500, 500,
- 500, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
- 600, 600, 600, 600
-};
-static const int METAL_BASE_MULTIPLIERS[22] = {
- 10, 25, 5, 75, 2, 5, 10, 20, 50, 2, 3, 5, 10, 20, 30, 40,
- 50, 60, 70, 80, 90, 100
-};
-static const int ITEM_SKILL_DIVISORS[4] = { 1, 2, 100, 10 };
-
-static const int RESTRICTION_OFFSETS[4] = { 0, 35, 49, 60 };
-
-static const int ITEM_RESTRICTIONS[86] = {
- 0, 86, 86, 86, 86, 86, 86, 0, 6, 239, 239, 239, 2, 4, 4, 4, 4,
- 6, 70, 70, 70, 70, 94, 70, 0, 4, 239, 86, 86, 86, 70, 70, 70, 70,
- 0, 0, 0, 68, 100, 116, 125, 255, 255, 85, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const char* const NOT_PROFICIENT =
- "\t000\v007\x3""c%s ¥ ¬®¦¥â ¨á¯®«ì§®¢ âì %s!";
-
-static const char* const NO_ITEMS_AVAILABLE = "\x3""c\n\t000¥â ¢¥é¥©.";
-
-static const char* const CATEGORY_NAMES[4] = {
- "à㦨¥", "à®ï", "ªà 襨ï", " §®¥"
-};
-
-static const char* const X_FOR_THE_Y =
- "\x1\fd\r%s\v000\t000%s - %s %s%s\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
-
-static const char* const X_FOR_Y =
- "\x1\fd\r\x3""l\v000\t000%s - %s\x3""r\t000%s\x3""l\v011"
- "\x2%s%s%s%s%s%s%s%s%s\x1\fd";
-
-static const char* const X_FOR_Y_GOLD =
- "\x1\fd\r\x3""l\v000\t000%s - %s\t150®«®â® - %lu%s\x3""l\v011"
- "\x2%s%s%s%s%s%s%s%s%s\x1\fd";
-
-static const char* const FMT_CHARGES = "\x3""r\t000 à冷¢\x3""l";
-
-static const char* const AVAILABLE_GOLD_COST =
- "\x1\fd\r\x3""l\v000\t000%s\t150®«®â® - %lu\x3""r\t000¥ "
- "\x3""l\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
-
-static const char* const CHARGES = " à冷¢";
-
-static const char* const COST = "¥ ";
-
-static const char* const ITEM_ACTIONS[7] = {
- " ¤¥âì", "áïâì", "¨á¯®«ì§®¢ âì", "¢ëª¨ãâì", "§ ç ஢ âì", "¯¥à¥§ à廊âì",
- "ॢà â¨âì ¢ §®«®â®"
-};
-
-static const char* const WHICH_ITEM = "\v000 ª®© ¯à¥¤¬¥â ¢ë ¦¥« ¥â¥ %s?";
-
-static const char* const WHATS_YOUR_HURRY =
- "\v007¥£® â®à®¯¨èìáï?\n"
- "®¤®¦¤¨, ¯®ª ¥ ¢ë¡¥à¥èìáï ®âáî¤ !";
-
-static const char* const USE_ITEM_IN_COMBAT =
- "\v007â®¡ë ¨á¯®«ì§®¢ âì ¯à¥¤¬¥â ¢ ¡¨â¢¥, ¦¬¨â¥ ª®¯ªã 'á¯' ¡®ª®¢®© ¯ ¥«¨.";
-
-static const char* const NO_SPECIAL_ABILITIES =
- "\v005\x3""c%s\fd¥ ¨¬¥¥â ®á®¡ëå ᢮©áâ¢!";
-
-static const char* const CANT_CAST_WHILE_ENGAGED =
- "\x3""c\v007 ª«¨ ¨¥ %s ¥«ì§ï ¨á¯®«ì§®¢ âì ¢ ¡¨â¢¥!";
-
-static const char* const EQUIPPED_ALL_YOU_CAN =
- "\x3""c\v007ë ¥ ¬®¦¥â¥ ¤¥âì ¡®«ìè¥ ¤¢ãå %s!";
-
-static const char* const REMOVE_X_TO_EQUIP_Y =
- "\x3""c\v007 ¬ 㦮 áïâì %sçâ®¡ë ¤¥âì %s\b!";
-
-static const char* const RING = "ª®«¥æ";
-static const char* const MEDAL = "¬¥¤ «¥©";
-
-static const char* const CANNOT_REMOVE_CURSED_ITEM =
- "\x3""cë ¥ ¬®¦¥â¥ áïâì ¯à®ª«ïâãî ¢¥éì!";
-
-static const char* const CANNOT_DISCARD_CURSED_ITEM =
- "\x3""cë ¥ ¬®¦¥â¥ ¢ëª¨ãâì ¯à®ª«ïâãî ¢¥éì!";
-
-static const char* const PERMANENTLY_DISCARD =
- "\v000\t000\x3""l모ãâì ¢á¥£¤ ? %s";
-
-static const char* const BACKPACK_IS_FULL =
- "\v005\x3""c\fd%s! è à ª ¯®«®.";
-
-static const char* const CATEGORY_BACKPACK_IS_FULL[4] = {
- "\v010\t000\x3""c%s! è à ª ¯®«®.",
- "\v010\t000\x3""c%s! è à ª ¯®«®.",
- "\v010\t000\x3""c%s! è à ª ¯®«®.",
- "\v010\t000\x3""c%s! è à ª ¯®«®."
-};
-
-static const char* const BUY_X_FOR_Y_GOLD =
- "\x3""l\v000\t000\fd㯨âì %s\fd § %lu §®«®â%s?";
-
-static const char* const SELL_X_FOR_Y_GOLD =
- "\x3""l\v000\t000\fdத âì %s\fd § %lu §®«®â%s?";
-
-static const char *const RU_SELL_X_FOR_Y_GOLD_ENDINGS[2] = { "®©", "ëå" };
-
-static const char* const NO_NEED_OF_THIS =
- "\v005\x3""c\fd á ¥ ¨â¥à¥áã¥â %s\fd!";
-
-static const char* const NOT_RECHARGABLE =
- "\v007\x3""c\fd¥¢®§¬®¦® ¯¥à¥§ à廊âì.\n%s";
-
-static const char* const NOT_ENCHANTABLE =
- "\v007\t000\x3""c¥¢®§¬®¦® § ç ஢ âì.\n%s";
-
-static const char* const SPELL_FAILED = " ª«¨ ¨¥ ¥ áà ¡®â «®!";
-
-static const char* const ITEM_NOT_BROKEN = "\fdâ®â ¯à¥¤¬¥â ¥ á«®¬ !";
-
-static const char* const FIX_IDENTIFY[2] = { "®ç¨¨âì", "¯®§ âì" };
-
-static const char* const FIX_IDENTIFY_GOLD =
- "\x3""l\v000\t000%s %s\fd § %lu §®«®â%s?";
-
-static const char* const IDENTIFY_ITEM_MSG =
- "\fd\v000\t000\x3""c¯®§ âì ¯à¥¤¬¥â\x3""l\n"
- "\n"
- "\v012%s\fd\n"
- "\n"
- "%s";
-
-static const char* const ITEM_DETAILS =
- "ᯮ«ì§ãîâ ª« ááë\t132:\t140%s\n"
- "®¤¨ä¨ª â®à ãà® \t132:\t140%s\n"
- "¨§¨ç¥áª¨© ãà®\t132:\t140%s\n"
- "à® ®â â¨å¨©\t132:\t140%s\n"
- " é¨â ®â â¨å¨©\t132:\t140%s\n"
- "« áá § é¨âë\t132:\t140%s\n"
- "®ãá ᢮©á⢠\t132:\t140%s\n"
- "ᮡ®¥ ᢮©á⢮\t132:\t140%s";
-
-static const char* const ALL = "á¥";
-static const char* const FIELD_NONE = "¥â";
-static const char* const DAMAGE_X_TO_Y = "%d-%d";
-static const char* const ELEMENTAL_XY_DAMAGE = "%+d ãà® ®â %s";
-static const char* const ATTR_XY_BONUS = "%+d %s";
-static const char* const EFFECTIVE_AGAINST = "x3 ¯à®â¨¢ %s";
-
-static const char* const QUESTS_DIALOG_TEXT =
- "\r\x2\x3""c\v021\t017\f37\fd¥é¨\t085\f37\fd ¤ ¨ï\t153"
- "\f37 \fd¬¥âª¨\t221¢¥àå\t255¨§"
- "\t289ë室";
-
-static const char* const CLOUDS_OF_XEEN_LINE =
- "\b \b*-- \f04¡« ª ᨠ\fd --";
-static const char* const DARKSIDE_OF_XEEN_LINE =
- "\b \b*-- \f04Darkside of Xeen\fd --";
-static const char* const SWORDS_OF_XEEN_LINE =
- "\b \b*-- \f04Swords of Xeen\fd --";
-
-static const char* const NO_QUEST_ITEMS =
- "\r\x1\fd\x3""c\v000\t000।¬¥âë § ¤ ¨©\x3""l\x2\n"
- "\n"
- "\x3""c¥â ¯à¥¤¬¥â®¢";
-
-static const char* const NO_CURRENT_QUESTS =
- "\x3""c\v000\t000\n"
- "\n"
- "¥â § ¤ ¨©";
-
-static const char* const NO_AUTO_NOTES = "\x3""c ¬¥â®ª ¥â";
-
-static const char* const QUEST_ITEMS_DATA =
- "\r\x1\fd\x3""c\v000\t000।¬¥âë § ¤ ¨©\x3""l\x2\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s";
-
-static const char* const CURRENT_QUESTS_DATA =
- "\r\x1\fd\x3""c\t000\v000 ¤ ¨ï\x3""l\x2\n"
- "%s\n"
- "\n"
- "%s\n"
- "\n"
- "%s";
-
-static const char* const AUTO_NOTES_DATA =
- "\r\x1\fd\x3""c\t000\v000 ¬¥âª¨\x3""l\x2\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l";
-
-static const char* const REST_COMPLETE =
- "\v000\t000à®è«® 8 ç ᮢ. â¤ëå § ª®ç¥\n"
- "%s\n"
- "ë«® áꥤ¥® %d ¯¨é¨.";
-
-static const char* const PARTY_IS_STARVING = "\f07âàï¤ £®«®¤ ¥â!\fd";
-
-static const char* const HIT_SPELL_POINTS_RESTORED =
- "¤®à®¢ì¥ ¨ ¬ ¢®ááâ ®¢«¥ë";
-
-static const char* const TOO_DANGEROUS_TO_REST =
- "¤¥áì ᫨誮¬ ®¯ á® ®â¤ëå âì!";
-
-static const char* const SOME_CHARS_MAY_DIE =
- "â®-â® ¨§ ®âàï¤ ¬®¦¥â 㬥à¥âì. ë ¢áñ à ¢® ¦¥« ¥â¥ ®â¤®åãâì?";
-
-static const char* const DISMISS_WHOM = "\r\t010\v005®£® ¢ë£ âì?";
-
-static const char* const CANT_DISMISS_LAST_CHAR =
- "ë ¥ ¬®¦¥â¥ ¢ë£ âì ᢮¥£® ¯®á«¥¤¥£® ¯¥àá® ¦ !";
-
-static const char* const DELETE_CHAR_WITH_ELDER_WEAPON = "\v000\t000This character has an Elder Weapon and cannot be deleted!";
-
-static const char* const REMOVE_DELETE[2] = { "ë£ âì", "㤠«¨âì" };
-
-static const char* const REMOVE_OR_DELETE_WHICH = "\x3""l\t010\v005®£® %s?";
-
-static const char* const YOUR_PARTY_IS_FULL = "\v007 è ®âàï¤ ¯®«®!";
-
-static const char* const HAS_SLAYER_SWORD =
- "\v000\t000â®â ¯¥àá® ¦ ¥ ¬®¦¥â ¡ëâì 㤠«ñ, â ª ª ª ã ¥£® ¥ç-㡨©æ ᨠ!";
-
-static const char* const SURE_TO_DELETE_CHAR =
- "%s %s. ë 㢥à¥ë, çâ® å®â¨â¥ 㤠«¨âì í⮣® £¥à®ï?";
-
-static const char* const CREATE_CHAR_DETAILS =
- "\f04\x3""c\x2\t144\v119\f37\f04à®á®ª\t144\v149\f37\f04®§¤"
- "\t144\v179\f37ESC\f04\x3""l\x1\t195\v021¨\f37«\f04"
- "\t195\v045\f37\f04â\t195\v069\f37\f04ãå\t195\v093«\f37¦\f04"
- "\t195\v116\f37ª\f04à\t195\v140\f37\f04âª\t195\v164\f37\f04¤ç%s";
-
-static const char* const NEW_CHAR_STATS =
-"\f04\x3""l\t017\v148 á \t055: %s\n"
-"\t017®«\t055: %s\n"
-"\t017« áá\t055:\n"
-"\x3""r\t215\v031%d\t215\v055%d\t215\v079%d\t215\v103%d\t215\v127%d"
-"\t215\v151%d\t215\v175%d\x3""l\t242\v020\f%2dëæ àì\t242\v031\f%2d"
-" « ¤¨\t242\v042\f%2dã稪\t242\v053\f%2d«¨à¨ª\t242\v064\f%2d"
-" £\t242\v075\f%2d®à\t242\v086\f%2d¨¤§ï\t242\v097\f%2d"
-" ࢠà\t242\v108\f%2dà㨤\t242\v119\f%2d«¥¤®¯ëâ\f04\x3""c"
-"\t265\v142 ¢ëª¨\x2\x3""l\t223\v155%s\t223\v170%s%s\x1";
-
-static const char* const NAME_FOR_NEW_CHARACTER =
- "\x3""c¢¥¤¨â¥ ¨¬ï ¯¥àá® ¦ \n\n";
-
-static const char* const SELECT_CLASS_BEFORE_SAVING =
- "\v003\x3""c¥à¥¤ á®åà ¥¨¥¬ ¢ë¡¥à¨â¥ ª« áá.\x3""l";
-
-static const char* const EXCHANGE_ATTR_WITH = "®¬¥ïâì %s á...";
-
-static const int NEW_CHAR_SKILLS[10] = { 1, 5, -1, -1, 4, 0, 0, -1, 6, 11 };
-static const int NEW_CHAR_SKILLS_OFFSET[10] = { 0, 0, 0, 5, 0, 0, 0, 0, 0, 0 };
-static const int NEW_CHAR_SKILLS_LEN[10] = { 11, 8, 0, 0, 12, 8, 8, 0, 9, 11 };
-static const int NEW_CHAR_RACE_SKILLS[10] = { 14, -1, 17, 16, -1, 0, 0, 0, 0, 0 };
-
-static const int RACE_MAGIC_RESISTENCES[5] = { 7, 5, 20, 0, 0 };
-static const int RACE_FIRE_RESISTENCES[5] = { 7, 0, 2, 5, 10 };
-static const int RACE_ELECTRIC_RESISTENCES[5] = { 7, 0, 2, 5, 10 };
-static const int RACE_COLD_RESISTENCES[5] = { 7, 0, 2, 5, 10 };
-static const int RACE_ENERGY_RESISTENCES[5] = { 7, 5, 2, 5, 0 };
-static const int RACE_POISON_RESISTENCES[5] = { 7, 0, 2, 20, 0 };
-static const int NEW_CHARACTER_SPELLS[10][4] = {
- { -1, -1, -1, -1 },
- { 21, -1, -1, -1 },
- { 22, -1, -1, -1 },
- { 21, 1, 14, -1 },
- { 22, 0, 25, -1 },
- { -1, -1, -1, -1 },
- { -1, -1, -1, -1 },
- { -1, -1, -1, -1 },
- { 20, 1, 11, 23 },
- { 20, 1, -1, -1 }
-};
-
-static const char* const COMBAT_DETAILS = "\r\f00\x3""c\v000\t000\x2%s%s%s\x1";
-
-static const char* NOT_ENOUGH_TO_CAST =
- "\x3""c\v000¥¤®áâ â®ç® %s, çâ®¡ë § ª«¨ âì %s";
-
-static const char* SPELL_CAST_COMPONENTS[2] = { "®çª®¢ ¬ £¨¨", " «¬ §®¢" };
-
-static const char* const CAST_SPELL_DETAILS =
- "\r\x2\x3""c\v122\t013\f37\fd ª«\t040\f37\fd®¢"
- "\t067ESC\x1\t000\v000\x3""c ª«¨ ¨¥\n"
- "\n"
- "%s\x3""c\n"
- "\n"
- " ®â®¢®¥:\x3""c\n"
- "\n"
- "\f09%s\fd\x2\x3""l\n"
- "\v082¥ \x3""r\t000%u/%u\x3""l\n"
- "¥ª \x3""r\t000%u\x1";
-
-static const char* const PARTY_FOUND =
- "\x3""c ©¤¥®:\n"
- "\n"
- "\x3""r\t000%lu ®«\n"
- "%lu «¬§";
-
-static const char* const BACKPACKS_FULL_PRESS_KEY =
- "\v007\f12¨¬ ¨¥!  ª¨ ¯¥à¥¯®«¥ë!\fd\n"
- " ¦¬¨â¥ ª« ¢¨èã";
-
-static const char* const HIT_A_KEY =
- "\x3""l\v120\t000\x4""077\x3""c\f37. ª« ¢¨èã\fd";
-
-static const char* const GIVE_TREASURE_FORMATTING =
- "\x3l\v060\t000\x4""077\n"
- "\x4""077\n"
- "\x4""077\n"
- "\x4""077\n"
- "\x4""077\n"
- "\x4""077";
-
-static const char* const X_FOUND_Y = "\v060\t000\x3""c%s è%s: %s";
-
-static const char* const ON_WHO = "\x3""c\v009®£®?";
-
-static const char* const WHICH_ELEMENT1 =
- "\r\x3""c\x1 ª ï â¨å¨ï?\x2\v034\t014\f15\fd£®ì\t044"
- "\f15\fd஬\t074\f15\fd®«®¤\t104\f15\fd¤\x1";
-
-static const char* const WHICH_ELEMENT2 =
- "\r\x3""c ª ï â¨å¨ï?\x2\v034\t014\f15\fd£®ì\t044"
- "\f15\fd஬\t074\f15\fd®«®¤\t104\f15\fd¤\x1";
-
-static const char* const DETECT_MONSTERS = "\x3""c®¨áª ¬®áâ஢";
-
-static const char* const LLOYDS_BEACON =
- "\r\x3""c\v000\t000\x1 ïª «®©¤ \n"
- "\n"
- "®á«¥¤¥¥ ¬¥áâ®\n"
- "\n"
- "%s\x3""l\n"
- "x = %d\x3""r\t000y = %d\x3""c\x2\v122\t021\f15\fdáâ \t060\f15\fd¥à\x1";
-
-static const char* const HOW_MANY_SQUARES =
- "\x3""c¥«¥¯®àâ\nª®«ìª® ª«¥â®ª %s (1-9)\n";
-
-static const char* const TOWN_PORTAL =
- "\x3""c®à®¤áª®© ¯®àâ «\x3""l\n"
- "\n"
- "\t0101. %s\n"
- "\t0102. %s\n"
- "\t0103. %s\n"
- "\t0104. %s\n"
- "\t0105. %s\x3""c\n"
- "\n"
- " ª ª®© £®à®¤ (1-5)\n"
- "\n";
-
-static const char* const TOWN_PORTAL_SWORDS =
-"\x3""cTown Portal\x3l\n"
-"\n"
-"\t0101. %s\n"
-"\t0102. %s\n"
-"\t0103. %s\x3""c\n"
-"\n"
-"To which Town (1-3)\n"
-"\n";
-
-static const int TOWN_MAP_NUMBERS[3][5] = {
- { 28, 29, 30, 31, 32 }, { 29, 31, 33, 35, 37 }, { 53, 92, 63, 0, 0 }
-};
-
-static const char* const MONSTER_DETAILS =
-"\x3l\n"
-"%s\x3""c\t100%s\t140%u\t180%u\x3r\t000%s";
-
-static const char* const MONSTER_SPECIAL_ATTACKS[23] = {
- "¥â", " £¨ï", "£ï", "஬ ", "®«®¤ ", "âà ¢«¥¨¥", "¥à£¨¨",
- "®«¥§ì", "¥§ã¬¨¥", "®", "ફब", "«î¡«", "áã褮à", "ப«ï⨥",
- " à «¨ç", "¥áá®§", "¬ï⥨¥", "®¬à®", "« ¡®áâì", "¨ç⮦",
- "®§à áâ+5", "¥àâ¢", " ¬¥ì"
-};
-
-static const char* const IDENTIFY_MONSTERS =
- "®áâà\x3""c\t155\t195\t233#â ª\x3""r\t000ᮡ®¥%s%s%s";
-
-static const char* const EVENT_SAMPLES[6] = {
- "ahh.voc", "whereto.voc", "gulp.voc", "null.voc", "scream.voc", "laff1.voc"
-};
-
-static const char* const MOONS_NOT_ALIGNED =
- "\x3""c\v012\t000®ª «ãë ¥ ¢áâ ãâ ¢ àï¤, ¢ë ¥ ᬮ¦¥â¥ ¯¥à¥©â¨ ñ¬ãî áâ®à®ã ᨠ";
-
-static const char* const AWARDS_FOR =
- "\r\x1\fd\x3""c\v000\t000%s %s: £à ¤ë \x3""l\x2\n"
- "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\x1";
-
-static const char* const AWARDS_TEXT =
- "\r\x2\x3""c\v021\t221¢¥àå\t255¨§\t289ë室";
-
-static const char* const NO_AWARDS = "\x3""c ¯¥àá® ¦ ¥â £à ¤";
-
-
-static const char* const WARZONE_BATTLE_MASTER = "ॠ\n\t125 áâ¥à ¡¨â¢ë";
-
-static const char* const WARZONE_MAXED =
- "â®! ¯ïâì ¢ë? ¥ ¯à¨áâ ¢ ©â¥ ª ⥬, ªâ® ¥ ¬®¦¥â ¤ âì ᤠç¨!";
-
-static const char* const WARZONE_LEVEL = " ª®© ã஢¥ì ¬®áâ஢? (1-10)\n";
-
-static const char* const WARZONE_HOW_MANY = "ª®«ìª® ¬®áâ஢? (1-20)\n";
-
-static const char* const PICKS_THE_LOCK =
- "\x3""c\v010%s ¢§«®¬ «%s § ¬®ª!\n ¦¬¨â¥ ª« ¢¨èã.";
-
-static const char* const UNABLE_TO_PICK_LOCK =
- "\x3""c\v010%s ¥ ᬮ£%s ¢§«®¬ âì § ¬®ª!\n ¦¬¨â¥ ª« ¢¨èã.";
-
-static const char* const CONTROL_PANEL_TEXT =
- "\x1\f00\x3""c\v000\t000 ¥«ì ã¯à ¢«¥¨ï\x3""r"
- "\v022\t045¢\f06ã\fdª:\t124\f06\fd®åà:"
- "\v041\t045\f06\fdã§.:\t124\f06®\fdåà:\v060\t045\f06\fd £à:"
- "\t124\f06\fdë室"
- "\v080\t084\f06\fd®¬®éì %s\t137 £ \t000\x1";
-
-static const char* const CONTROL_PANEL_BUTTONS =
-"\x3""c\f11"
-"\v022\t062load\t141%s"
-"\v041\t062save\t141%s"
-"\v060\t062exit"
-"\v079\t102Help\fd";
-
-static const char* const ON = "\f15¢ª«\f11";
-
-static const char* const OFF = "\f32¢ëª\f11";
-
-static const char* const CONFIRM_QUIT = "ë 㢥à¥ë, çâ® å®â¨â¥ ¢ë©â¨?";
-
-static const char* const MR_WIZARD =
- "ë â®ç® å®â¨â¥ ¢®á¯®«ì§®¢ âìáï ¯®¬®éìî à. £ ?";
-
-static const char* const NO_LOADING_IN_COMBAT =
- "¨ª ª¨å § £àã§®ª ¢® ¢à¥¬ï ¡¨â¢ë!";
-
-static const char* const NO_SAVING_IN_COMBAT =
- "¨ª ª¨å á®åà ¥¨© ¢® ¢à¥¬ï ¡¨â¢ë!";
-
-static const char* const QUICK_FIGHT_TEXT =
- "\r\fd\x3""c\v000\t000ëáâ஥ ¤¥©á⢨¥\n\n"
- "%s\x3""l\n\n"
- "¥ªã饥\x3""r\n"
- "\t000%s\x2\x3""c\v122\t019\f37\f04«¥¤\t055ë室\x1";
-
-static const char* const QUICK_FIGHT_OPTIONS[4] = {
- "â ª ", " ª«¨ ¨¥", "«®ª", "¥£á⢮"
-};
-
-static const char* const WORLD_END_TEXT[9] = {
- "\n\n\n\n\n\n\n"
- "Congratulations Adventurers!\n\n"
- "Let the unification ceremony begin!",
- "And so the call went out to the people throughout the lands of Xeen"
- " that the prophecy was nearing completion.",
- "They came in great numbers to witness the momentous occasion.",
- "\v026The Dragon Pharoah presided over the ceremony.",
- "\v026Queen Kalindra presented the Cube of Power.",
- "\v026Prince Roland presented the Xeen Sceptre.",
- "\v026Together, they placed the Cube of Power...",
- "\v026and the Sceptre, onto the Altar of Joining.",
- "With the prophecy complete, the two sides of Xeen were united as one",
-};
-
-static const char* const WORLD_CONGRATULATIONS =
- "\x3""cCongratulations\n\n"
- "Your Final Score is:\n\n"
- "%010lu\n"
- "\x3l\n"
- "Please send this score to the Ancient's Headquarters where "
- "you'll be added to the Hall of Legends!\n\n"
- "Ancient's Headquarters\n"
- "New World Computing, Inc.\n"
- "P.O. Box 4302\n"
- "Hollywood, CA 90078";
-
-static const char* const WORLD_CONGRATULATIONS2 =
- "\n\n\n\n\n\n"
- "But wait... there's more!\n"
- "\n\n"
- "Include the message\n"
- "\"%s\"\n"
- "with your final score and receive a special bonus.";
- static const char* const CLOUDS_CONGRATULATIONS1 =
- "\f23\x3l"
- "\v000\t000Please send this score to the Ancient's Headquarters "
- "where you'll be added to the Hall of Legends!\f33\x3""c"
- "\v070\t000Press a Key";
-
-static const char* const CLOUDS_CONGRATULATIONS2 =
- "\f23\x3l"
- "\v000\t000Ancient's Headquarters\n"
- "New World Computing, Inc.\n"
- "P.O. Box 4302\n"
- "Hollywood, CA 90078-4302\f33\x3""c"
- "\v070\t000Press a Key";
-
-static const char* const GOOBER[3] = {
- "", "I am a Goober!", "I am a Super Goober!"
-};
-
-static const char* const MUSIC_FILES1[5] = {
- "outdoors.m", "town.m", "cavern.m", "dungeon.m", "castle.m"
-};
-
-static const char* const MUSIC_FILES2[6][7] = {
- { "outday1.m", "outday2.m", "outday4.m", "outnght1.m",
- "outnght2.m", "outnght4.m", "daydesrt.m" },
- { "townday1.m", "twnwlk.m", "newbrigh.m", "twnnitea.m",
- "twnniteb.m", "twnwlk.m", "townday1.m" },
- { "cavern1.m", "cavern2.m", "cavern3a.m", "cavern1.m",
- "cavern2.m", "cavern3a.m", "cavern1.m" },
- { "dngon1.m", "dngon2.m", "dngon3.m", "dngon1.m",
- "dngon2.m", "dngon3.m", "dngon1.m" },
- { "cstl1rev.m", "cstl2rev.m", "cstl3rev.m", "cstl1rev.m",
- "cstl2rev.m", "cstl3rev.m", "cstl1rev.m" },
- { "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m" }
-};
-
-static const char* const DIFFICULTY_TEXT =
- "\v000\t000\x3""cë¡¥à¨â¥ ¨£à®¢®© ०¨¬";
-
-static const char* const SAVE_OFF_LIMITS =
-"\x3""c\v002\t000®£¨ ®ááâ ®¢«¥¨ï £à áç¨â îâ íâ® ¬¥áâ® § ¯à¥âë¬!\n"
-"¢ë, §¤¥áì ¥«ì§ï á®åà ïâìáï";
-
-static const char* const CLOUDS_INTRO1 =
- "\f00\v082\t040\x3"
- "cKing Burlock\v190\t040Peasants\v082\t247"
- "Lord Xeen\v190\t258Xeen's Pet\v179\t150Crodo";
-
-static const char* const DARKSIDE_ENDING1 =
- "\n\x3" "cCongratulations\n"
- "\n"
- "Your Final Score is:\n"
- "\n"
- "%010lu\n"
- "\x3" "l\n"
- "Please send this score to the Ancient's Headquarters "
- "where you'll be added to the Hall of Legends!\n"
- "\n"
- "Ancient's Headquarters\n"
- "New World Computing, Inc.\n"
- "P.O. Box 4302\n"
- "Hollywood, CA 90078";
-
-static const char* const DARKSIDE_ENDING2 = "\n"
- "Adventurers,\n"
- "\n"
- "I will save your game in Castleview.\n"
- "\n"
- "The World of Xeen still needs you!\n"
- "\n"
- "Load your game afterwards and come visit me in the "
- "Great Pyramid for further instructions";
-
-static const char* const PHAROAH_ENDING_TEXT1 =
- "\fd\v001\t001%s\x3" "c\t000\v180Press a Key!\x3" "l";
-static const char* const PHAROAH_ENDING_TEXT2 =
- "\f04\v000\t000%s\x3" "c\t000\v180Press a Key!\x3" "l\fd";
-
-
-void writeConstants(CCArchive& cc) {
- Common::MemFile file;
- file.syncString(CLOUDS_CREDITS);
- file.syncString(DARK_SIDE_CREDITS);
- file.syncString(SWORDS_CREDITS1);
- file.syncString(SWORDS_CREDITS2);
- file.syncString(OPTIONS_MENU);
- file.syncStrings(GAME_NAMES, 3);
- file.syncString(THE_PARTY_NEEDS_REST);
- file.syncString(WHO_WILL);
- file.syncString(HOW_MUCH);
- file.syncString(WHATS_THE_PASSWORD);
- file.syncString(PASSWORD_INCORRECT);
- file.syncString(IN_NO_CONDITION);
- file.syncString(NOTHING_HERE);
- file.syncStrings(TERRAIN_TYPES, 6);
- file.syncStrings(OUTDOORS_WALL_TYPES, 16);
- file.syncStrings(SURFACE_NAMES, 16);
- file.syncStrings(WHO_ACTIONS, 32);
- file.syncStrings(WHO_WILL_ACTIONS, 4);
- file.syncBytes2D((const byte*)SYMBOLS, 20, 64);
- file.syncBytes2D((const byte*)TEXT_COLORS, 40, 4);
- file.syncBytes2D((const byte*)TEXT_COLORS_STARTUP, 40, 4);
- file.syncStrings(DIRECTION_TEXT_UPPER, 4);
- file.syncStrings(DIRECTION_TEXT, 4);
- file.syncStrings(RACE_NAMES, 5);
- file.syncNumbers(RACE_HP_BONUSES, 5);
- file.syncNumbers2D((const int*)RACE_SP_BONUSES, 5, 2);
- file.syncStrings(CLASS_NAMES, 11);
- file.syncNumbers(CLASS_EXP_LEVELS, 10);
- file.syncStrings(ALIGNMENT_NAMES, 3);
- file.syncStrings(SEX_NAMES, 2);
- file.syncStrings(SKILL_NAMES, 18);
- file.syncStrings(CONDITION_NAMES, 17);
- file.syncNumbers(CONDITION_COLORS, 17);
- file.syncString(GOOD);
- file.syncString(BLESSED);
- file.syncString(POWER_SHIELD);
- file.syncString(HOLY_BONUS);
- file.syncString(HEROISM);
- file.syncString(IN_PARTY);
- file.syncString(PARTY_DETAILS);
- file.syncString(PARTY_DIALOG_TEXT);
- file.syncNumbers(FACE_CONDITION_FRAMES, 17);
- file.syncNumbers(CHAR_FACES_X, 6);
- file.syncNumbers(HP_BARS_X, 6);
- file.syncString(NO_ONE_TO_ADVENTURE_WITH);
- file.syncBytes2D((const byte*)DARKNESS_XLAT, 3, 256);
- file.syncString(YOUR_ROSTER_IS_FULL);
- file.syncString(PLEASE_WAIT);
- file.syncString(OOPS);
- file.syncNumbers2D((const int*)SCREEN_POSITIONING_X, 4, 48);
- file.syncNumbers2D((const int*)SCREEN_POSITIONING_Y, 4, 48);
- file.syncNumbers(MONSTER_GRID_BITMASK, 12);
- file.syncNumbers2D((const int*)INDOOR_OBJECT_X, 2, 12);
- file.syncNumbers2D((const int*)MAP_OBJECT_Y, 2, 12);
- file.syncNumbers(INDOOR_MONSTERS_Y, 4);
- file.syncNumbers2D((const int*)OUTDOOR_OBJECT_X, 2, 12);
- file.syncNumbers(OUTDOOR_MONSTER_INDEXES, 26);
- file.syncNumbers(OUTDOOR_MONSTERS_Y, 26);
- file.syncNumbers2D((const int*)DIRECTION_ANIM_POSITIONS, 4, 4);
- file.syncBytes2D((const byte*)WALL_SHIFTS, 4, 48);
- file.syncNumbers(DRAW_NUMBERS, 25);
- file.syncNumbers2D((const int*)DRAW_FRAMES, 25, 2);
- file.syncNumbers(COMBAT_FLOAT_X, 8);
- file.syncNumbers(COMBAT_FLOAT_Y, 8);
- file.syncNumbers2D((const int*)MONSTER_EFFECT_FLAGS, 15, 8);
- file.syncNumbers2D((const int*)SPELLS_ALLOWED, 3, 40);
- file.syncNumbers(BASE_HP_BY_CLASS, 10);
- file.syncNumbers(AGE_RANGES, 10);
- file.syncNumbers2D((const int*)AGE_RANGES_ADJUST, 2, 10);
- file.syncNumbers(STAT_VALUES, 24);
- file.syncNumbers(STAT_BONUSES, 24);
- file.syncNumbers(ELEMENTAL_CATEGORIES, 6);
- file.syncNumbers(ATTRIBUTE_CATEGORIES, 10);
- file.syncNumbers(ATTRIBUTE_BONUSES, 72);
- file.syncNumbers(ELEMENTAL_RESISTENCES, 37);
- file.syncNumbers(ELEMENTAL_DAMAGE, 37);
- file.syncNumbers(WEAPON_DAMAGE_BASE, 35);
- file.syncNumbers(WEAPON_DAMAGE_MULTIPLIER, 35);
- file.syncNumbers(METAL_DAMAGE, 22);
- file.syncNumbers(METAL_DAMAGE_PERCENT, 22);
- file.syncNumbers(METAL_LAC, 22);
- file.syncNumbers(ARMOR_STRENGTHS, 14);
- file.syncNumbers(MAKE_ITEM_ARR1, 6);
- file.syncNumbers3D((const int*)MAKE_ITEM_ARR2, 6, 7, 2);
- file.syncNumbers3D((const int*)MAKE_ITEM_ARR3, 10, 7, 2);
- file.syncNumbers3D((const int*)MAKE_ITEM_ARR4, 2, 7, 2);
- file.syncNumbers2D((const int*)MAKE_ITEM_ARR5, 8, 2);
- file.syncNumbers(OUTDOOR_DRAWSTRUCT_INDEXES, 44);
- file.syncNumbers2D((const int*)TOWN_MAXES, 2, 11);
- file.syncStrings2D((const char* const*)TOWN_ACTION_MUSIC, 2, 7);
- file.syncStrings(TOWN_ACTION_SHAPES, 7);
- file.syncNumbers2D((const int*)TOWN_ACTION_FILES, 2, 7);
- file.syncString(BANK_TEXT);
- file.syncString(BLACKSMITH_TEXT);
- file.syncString(GUILD_NOT_MEMBER_TEXT);
- file.syncString(GUILD_TEXT);
- file.syncString(TAVERN_TEXT);
- file.syncString(GOOD_STUFF);
- file.syncString(HAVE_A_DRINK);
- file.syncString(YOURE_DRUNK);
- file.syncNumbers4D((const int*)TAVERN_EXIT_LIST, 2, 6, 5, 2);
- file.syncString(FOOD_AND_DRINK);
- file.syncString(TEMPLE_TEXT);
- file.syncString(EXPERIENCE_FOR_LEVEL);
- file.syncString(TRAINING_LEARNED_ALL);
- file.syncString(ELIGIBLE_FOR_LEVEL);
- file.syncString(TRAINING_TEXT);
- file.syncString(GOLD_GEMS);
- file.syncString(GOLD_GEMS_2);
- file.syncStrings(DEPOSIT_WITHDRAWL, 2);
- file.syncString(NOT_ENOUGH_X_IN_THE_Y);
- file.syncString(NO_X_IN_THE_Y);
- file.syncStrings(STAT_NAMES, 16);
- file.syncStrings(CONSUMABLE_NAMES, 4);
- file.syncStrings(WHERE_NAMES, 2);
- file.syncString(AMOUNT);
- file.syncString(FOOD_PACKS_FULL);
- file.syncString(BUY_SPELLS);
- file.syncString(GUILD_OPTIONS);
- file.syncNumbers((const int*)MISC_SPELL_INDEX, 74);
- file.syncNumbers((const int*)SPELL_COSTS, 77);
- file.syncNumbers2D((const int*)CLOUDS_GUILD_SPELLS, 5, 20);
- file.syncNumbers2D((const int*)DARK_SPELL_OFFSETS, 3, 39);
- file.syncNumbers2D((const int*)DARK_SPELL_RANGES, 12, 2);
- file.syncNumbers2D((const int*)SWORDS_SPELL_RANGES, 12, 2);
- file.syncNumbers((const int*)SPELL_GEM_COST, 77);
- file.syncString(NOT_A_SPELL_CASTER);
- file.syncString(SPELLS_LEARNED_ALL);
- file.syncString(SPELLS_FOR);
- file.syncString(SPELL_LINES_0_TO_9);
- file.syncString(SPELLS_DIALOG_SPELLS);
- file.syncString(SPELL_PTS);
- file.syncString(GOLD);
- file.syncString(SPELL_INFO);
- file.syncString(SPELL_PURCHASE);
- file.syncString(MAP_TEXT);
- file.syncString(LIGHT_COUNT_TEXT);
- file.syncString(FIRE_RESISTENCE_TEXT);
- file.syncString(ELECRICITY_RESISTENCE_TEXT);
- file.syncString(COLD_RESISTENCE_TEXT);
- file.syncString(POISON_RESISTENCE_TEXT);
- file.syncString(CLAIRVOYANCE_TEXT);
- file.syncString(LEVITATE_TEXT);
- file.syncString(WALK_ON_WATER_TEXT);
- file.syncString(GAME_INFORMATION);
- file.syncString(WORLD_GAME_TEXT);
- file.syncString(DARKSIDE_GAME_TEXT);
- file.syncString(CLOUDS_GAME_TEXT);
- file.syncString(SWORDS_GAME_TEXT);
- file.syncStrings(WEEK_DAY_STRINGS, 10);
- file.syncString(CHARACTER_DETAILS);
- file.syncStrings(RU_DAYS, 3);
- file.syncString(PARTY_GOLD);
- file.syncString(PLUS_14);
- file.syncString(CHARACTER_TEMPLATE);
- file.syncString(EXCHANGING_IN_COMBAT);
- file.syncString(CURRENT_MAXIMUM_RATING_TEXT);
- file.syncString(CURRENT_MAXIMUM_TEXT);
- file.syncStrings(RATING_TEXT, 24);
- file.syncString(AGE_TEXT);
- file.syncString(LEVEL_TEXT);
- file.syncString(RESISTENCES_TEXT);
- file.syncString(NONE);
- file.syncString(EXPERIENCE_TEXT);
- file.syncString(ELIGIBLE);
- file.syncString(IN_PARTY_IN_BANK);
- file.syncString(FOOD_TEXT);
- file.syncString(EXCHANGE_WITH_WHOM);
- file.syncString(QUICK_REF_LINE);
- file.syncString(QUICK_REFERENCE);
- file.syncNumbers2D((const int*)BLACKSMITH_MAP_IDS, 2, 4);
- file.syncString(ITEMS_DIALOG_TEXT1);
- file.syncString(ITEMS_DIALOG_TEXT2);
- file.syncString(ITEMS_DIALOG_LINE1);
- file.syncString(ITEMS_DIALOG_LINE2);
- file.syncString(BTN_BUY);
- file.syncString(BTN_SELL);
- file.syncString(BTN_IDENTIFY);
- file.syncString(BTN_FIX);
- file.syncString(BTN_USE);
- file.syncString(BTN_EQUIP);
- file.syncString(BTN_REMOVE);
- file.syncString(BTN_DISCARD);
- file.syncString(BTN_QUEST);
- file.syncString(BTN_ENCHANT);
- file.syncString(BTN_RECHARGE);
- file.syncString(BTN_GOLD);
- file.syncString(ITEM_BROKEN);
- file.syncString(ITEM_CURSED);
- file.syncString(ITEM_OF);
- file.syncStrings(BONUS_NAMES, 7);
- file.syncStrings(WEAPON_NAMES, 41);
- file.syncStrings(ARMOR_NAMES, 14);
- file.syncStrings(ACCESSORY_NAMES, 11);
- file.syncStrings(MISC_NAMES, 22);
- file.syncStrings(SPECIAL_NAMES, 74);
- file.syncStrings(ELEMENTAL_NAMES, 6);
- file.syncStrings(ATTRIBUTE_NAMES, 10);
- file.syncStrings(EFFECTIVENESS_NAMES, 7);
- file.syncStrings(QUEST_ITEM_NAMES, 85);
- file.syncStrings(QUEST_ITEM_NAMES_SWORDS, 51);
- file.syncNumbers((const int*)WEAPON_BASE_COSTS, 35);
- file.syncNumbers((const int*)ARMOR_BASE_COSTS, 14);
- file.syncNumbers((const int*)ACCESSORY_BASE_COSTS, 11);
- file.syncNumbers((const int*)MISC_MATERIAL_COSTS, 22);
- file.syncNumbers((const int*)MISC_BASE_COSTS, 76);
- file.syncNumbers((const int*)METAL_BASE_MULTIPLIERS, 22);
- file.syncNumbers((const int*)ITEM_SKILL_DIVISORS, 4);
- file.syncNumbers((const int*)RESTRICTION_OFFSETS, 4);
- file.syncNumbers((const int*)ITEM_RESTRICTIONS, 86);
- file.syncString(NOT_PROFICIENT);
- file.syncString(NO_ITEMS_AVAILABLE);
- file.syncStrings(CATEGORY_NAMES, 4);
- file.syncString(X_FOR_THE_Y);
- file.syncString(X_FOR_Y);
- file.syncString(X_FOR_Y_GOLD);
- file.syncString(FMT_CHARGES);
- file.syncString(AVAILABLE_GOLD_COST);
- file.syncString(CHARGES);
- file.syncString(COST);
- file.syncStrings(ITEM_ACTIONS, 7);
- file.syncString(WHICH_ITEM);
- file.syncString(WHATS_YOUR_HURRY);
- file.syncString(USE_ITEM_IN_COMBAT);
- file.syncString(NO_SPECIAL_ABILITIES);
- file.syncString(CANT_CAST_WHILE_ENGAGED);
- file.syncString(EQUIPPED_ALL_YOU_CAN);
- file.syncString(REMOVE_X_TO_EQUIP_Y);
- file.syncString(RING);
- file.syncString(MEDAL);
- file.syncString(CANNOT_REMOVE_CURSED_ITEM);
- file.syncString(CANNOT_DISCARD_CURSED_ITEM);
- file.syncString(PERMANENTLY_DISCARD);
- file.syncString(BACKPACK_IS_FULL);
- file.syncStrings(CATEGORY_BACKPACK_IS_FULL, 4);
- file.syncString(BUY_X_FOR_Y_GOLD);
- file.syncString(SELL_X_FOR_Y_GOLD);
- file.syncStrings(RU_SELL_X_FOR_Y_GOLD_ENDINGS, 2);
- file.syncString(NO_NEED_OF_THIS);
- file.syncString(NOT_RECHARGABLE);
- file.syncString(SPELL_FAILED);
- file.syncString(NOT_ENCHANTABLE);
- file.syncString(ITEM_NOT_BROKEN);
- file.syncStrings(FIX_IDENTIFY, 2);
- file.syncString(FIX_IDENTIFY_GOLD);
- file.syncString(IDENTIFY_ITEM_MSG);
- file.syncString(ITEM_DETAILS);
- file.syncString(ALL);
- file.syncString(FIELD_NONE);
- file.syncString(DAMAGE_X_TO_Y);
- file.syncString(ELEMENTAL_XY_DAMAGE);
- file.syncString(ATTR_XY_BONUS);
- file.syncString(EFFECTIVE_AGAINST);
- file.syncString(QUESTS_DIALOG_TEXT);
- file.syncString(CLOUDS_OF_XEEN_LINE);
- file.syncString(DARKSIDE_OF_XEEN_LINE);
- file.syncString(SWORDS_OF_XEEN_LINE);
- file.syncString(NO_QUEST_ITEMS);
- file.syncString(NO_CURRENT_QUESTS);
- file.syncString(NO_AUTO_NOTES);
- file.syncString(QUEST_ITEMS_DATA);
- file.syncString(CURRENT_QUESTS_DATA);
- file.syncString(AUTO_NOTES_DATA);
- file.syncString(REST_COMPLETE);
- file.syncString(PARTY_IS_STARVING);
- file.syncString(HIT_SPELL_POINTS_RESTORED);
- file.syncString(TOO_DANGEROUS_TO_REST);
- file.syncString(SOME_CHARS_MAY_DIE);
- file.syncString(DISMISS_WHOM);
- file.syncString(CANT_DISMISS_LAST_CHAR);
- file.syncString(DELETE_CHAR_WITH_ELDER_WEAPON);
- file.syncStrings(REMOVE_DELETE, 2);
- file.syncString(REMOVE_OR_DELETE_WHICH);
- file.syncString(YOUR_PARTY_IS_FULL);
- file.syncString(HAS_SLAYER_SWORD);
- file.syncString(SURE_TO_DELETE_CHAR);
- file.syncString(CREATE_CHAR_DETAILS);
- file.syncString(NEW_CHAR_STATS);
- file.syncString(NAME_FOR_NEW_CHARACTER);
- file.syncString(SELECT_CLASS_BEFORE_SAVING);
- file.syncString(EXCHANGE_ATTR_WITH);
- file.syncNumbers((const int*)NEW_CHAR_SKILLS, 10);
- file.syncNumbers((const int*)NEW_CHAR_SKILLS_OFFSET, 10);
- file.syncNumbers((const int*)NEW_CHAR_SKILLS_LEN, 10);
- file.syncNumbers((const int*)NEW_CHAR_RACE_SKILLS, 10);
- file.syncNumbers((const int*)RACE_MAGIC_RESISTENCES, 5);
- file.syncNumbers((const int*)RACE_FIRE_RESISTENCES, 5);
- file.syncNumbers((const int*)RACE_ELECTRIC_RESISTENCES, 5);
- file.syncNumbers((const int*)RACE_COLD_RESISTENCES, 5);
- file.syncNumbers((const int*)RACE_ENERGY_RESISTENCES, 5);
- file.syncNumbers((const int*)RACE_POISON_RESISTENCES, 5);
- file.syncNumbers2D((const int*)NEW_CHARACTER_SPELLS, 10, 4);
- file.syncString(COMBAT_DETAILS);
- file.syncString(NOT_ENOUGH_TO_CAST);
- file.syncStrings(SPELL_CAST_COMPONENTS, 2);
- file.syncString(CAST_SPELL_DETAILS);
- file.syncString(PARTY_FOUND);
- file.syncString(BACKPACKS_FULL_PRESS_KEY);
- file.syncString(HIT_A_KEY);
- file.syncString(GIVE_TREASURE_FORMATTING);
- file.syncString(X_FOUND_Y);
- file.syncString(ON_WHO);
- file.syncString(WHICH_ELEMENT1);
- file.syncString(WHICH_ELEMENT2);
- file.syncString(DETECT_MONSTERS);
- file.syncString(LLOYDS_BEACON);
- file.syncString(HOW_MANY_SQUARES);
- file.syncString(TOWN_PORTAL);
- file.syncString(TOWN_PORTAL_SWORDS);
- file.syncNumbers2D((const int*)TOWN_MAP_NUMBERS, 3, 5);
- file.syncString(MONSTER_DETAILS);
- file.syncStrings(MONSTER_SPECIAL_ATTACKS, 23);
- file.syncString(IDENTIFY_MONSTERS);
- file.syncStrings(EVENT_SAMPLES, 6);
- file.syncString(MOONS_NOT_ALIGNED);
- file.syncString(AWARDS_FOR);
- file.syncString(AWARDS_TEXT);
- file.syncString(NO_AWARDS);
- file.syncString(WARZONE_BATTLE_MASTER);
- file.syncString(WARZONE_MAXED);
- file.syncString(WARZONE_LEVEL);
- file.syncString(WARZONE_HOW_MANY);
- file.syncString(PICKS_THE_LOCK);
- file.syncString(UNABLE_TO_PICK_LOCK);
- file.syncString(CONTROL_PANEL_TEXT);
- file.syncString(CONTROL_PANEL_BUTTONS);
- file.syncString(ON);
- file.syncString(OFF);
- file.syncString(CONFIRM_QUIT);
- file.syncString(MR_WIZARD);
- file.syncString(NO_LOADING_IN_COMBAT);
- file.syncString(NO_SAVING_IN_COMBAT);
- file.syncString(QUICK_FIGHT_TEXT);
- file.syncStrings(QUICK_FIGHT_OPTIONS, 4);
- file.syncStrings(WORLD_END_TEXT, 9);
- file.syncString(WORLD_CONGRATULATIONS);
- file.syncString(WORLD_CONGRATULATIONS2);
- file.syncString(CLOUDS_CONGRATULATIONS1);
- file.syncString(CLOUDS_CONGRATULATIONS2);
- file.syncStrings(GOOBER, 3);
- file.syncStrings(MUSIC_FILES1, 5);
- file.syncStrings2D((const char* const*)MUSIC_FILES2, 6, 7);
- file.syncString(DIFFICULTY_TEXT);
- file.syncString(SAVE_OFF_LIMITS);
- file.syncString(CLOUDS_INTRO1);
- file.syncString(DARKSIDE_ENDING1);
- file.syncString(DARKSIDE_ENDING2);
- file.syncString(PHAROAH_ENDING_TEXT1);
- file.syncString(PHAROAH_ENDING_TEXT2);
-
- cc.add("CONSTANTS", file);
+void writeConstants(CCArchive &cc) {
+ EN eng;
+ eng.writeConstants(Common::String::format("_%i", Common::Language::EN_ANY), cc);
+ RU ru;
+ ru.writeConstants(Common::String::format("_%i", Common::Language::RU_RUS), cc);
}
diff --git a/devtools/create_xeen/create_xeen.cpp b/devtools/create_xeen/create_xeen.cpp
index d18ba178f5..d15689e6c9 100644
--- a/devtools/create_xeen/create_xeen.cpp
+++ b/devtools/create_xeen/create_xeen.cpp
@@ -39,7 +39,7 @@
#include "constants.h"
#include "map.h"
-#define VERSION_NUMBER 4
+#define VERSION_NUMBER 5
void NORETURN_PRE error(const char *s, ...) {
va_list ap;
diff --git a/dists/engine-data/xeen.ccs b/dists/engine-data/xeen.ccs
index 1aeeeeda89..7f7dc12d25 100644
Binary files a/dists/engine-data/xeen.ccs and b/dists/engine-data/xeen.ccs differ
diff --git a/engines/xeen/dialogs/dialogs_char_info.cpp b/engines/xeen/dialogs/dialogs_char_info.cpp
index fe64ce8aed..7d83106598 100644
--- a/engines/xeen/dialogs/dialogs_char_info.cpp
+++ b/engines/xeen/dialogs/dialogs_char_info.cpp
@@ -278,15 +278,23 @@ void CharacterInfo::addButtons() {
addPartyButtons(_vm);
}
-int CharacterInfo::getRuDays(int val) {
- int i = val % 100;
- if (i < 5 || i > 20) switch (val % 10) {
- case 1: return 0;
- case 2:
- case 3:
- case 4: return 1;
+Common::String CharacterInfo::getDaysPlurals(int val) {
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ int i = val % 100;
+ if (i < 5 || i > 20)
+ switch (val % 10) {
+ case 1:
+ return Res.DAYS[0];
+ case 2:
+ case 3:
+ case 4:
+ return Res.DAYS[1];
+ }
+ return Res.DAYS[2];
+ } else {
+ return Res.DAYS[val == 1 ? 0 : 1];
}
- return 2;
+
}
Common::String CharacterInfo::loadCharacterDetails(const Character &c) {
@@ -302,39 +310,7 @@ Common::String CharacterInfo::loadCharacterDetails(const Character &c) {
c._energyResistence._permanent + c.itemScan(15) + c._energyResistence._temporary +
c._magicResistence._permanent + c.itemScan(16) + c._magicResistence._temporary;
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
- return Common::String::format(Res.CHARACTER_DETAILS,
- Res.PARTY_GOLD, c._name.c_str(), Res.SEX_NAMES[c._sex],
- Res.RACE_NAMES[c._race], Res.CLASS_NAMES[c._class],
- c.statColor(c.getStat(MIGHT), c.getStat(MIGHT, true)), c.getStat(MIGHT),
- c.statColor(c.getStat(ACCURACY), c.getStat(ACCURACY, true)), c.getStat(ACCURACY),
- c.statColor(c._currentHp, c.getMaxHP()), c._currentHp,
- c.getCurrentExperience(),
- c.statColor(c.getStat(INTELLECT), c.getStat(INTELLECT, true)), c.getStat(INTELLECT),
- c.statColor(c.getStat(LUCK), c.getStat(LUCK, true)), c.getStat(LUCK),
- c.statColor(c._currentSp, c.getMaxSP()), c._currentSp,
- party._gold,
- c.statColor(c.getStat(PERSONALITY), c.getStat(PERSONALITY, true)), c.getStat(PERSONALITY),
- c.statColor(c.getAge(), c.getAge(true)), c.getAge(),
- totalResist,
- party._gems,
- c.statColor(c.getStat(ENDURANCE), c.getStat(ENDURANCE, true)), c.getStat(ENDURANCE),
- c.statColor(c.getCurrentLevel(), c._level._permanent), c.getCurrentLevel(),
- c.getNumSkills(),
- foodVal,
- Res.RU_DAYS[getRuDays(foodVal)],
- c.statColor(c.getStat(SPEED), c.getStat(SPEED, true)), c.getStat(SPEED),
- c.statColor(c.getArmorClass(), c.getArmorClass(true)), c.getArmorClass(),
- c.getNumAwards(),
- Res.CONDITION_COLORS[condition], Res.CONDITION_NAMES[condition],
- condition == NO_CONDITION && party._blessed ? Res.PLUS_14 : "",
- condition == NO_CONDITION && party._powerShield ? Res.PLUS_14 : "",
- condition == NO_CONDITION && party._holyBonus ? Res.PLUS_14 : "",
- condition == NO_CONDITION && party._heroism ? Res.PLUS_14 : ""
- );
- }
-
- return Common::String::format(Res.CHARACTER_DETAILS,
+ return Common::String::format(Res.CHARACTER_DETAILS,
Res.PARTY_GOLD, c._name.c_str(), Res.SEX_NAMES[c._sex],
Res.RACE_NAMES[c._race], Res.CLASS_NAMES[c._class],
c.statColor(c.getStat(MIGHT), c.getStat(MIGHT, true)), c.getStat(MIGHT),
@@ -352,7 +328,8 @@ Common::String CharacterInfo::loadCharacterDetails(const Character &c) {
c.statColor(c.getStat(ENDURANCE), c.getStat(ENDURANCE, true)), c.getStat(ENDURANCE),
c.statColor(c.getCurrentLevel(), c._level._permanent), c.getCurrentLevel(),
c.getNumSkills(),
- foodVal, (foodVal == 1) ? ' ' : 's',
+ foodVal,
+ getDaysPlurals(foodVal).c_str(),
c.statColor(c.getStat(SPEED), c.getStat(SPEED, true)), c.getStat(SPEED),
c.statColor(c.getArmorClass(), c.getArmorClass(true)), c.getArmorClass(),
c.getNumAwards(),
@@ -360,8 +337,7 @@ Common::String CharacterInfo::loadCharacterDetails(const Character &c) {
condition == NO_CONDITION && party._blessed ? Res.PLUS_14 : "",
condition == NO_CONDITION && party._powerShield ? Res.PLUS_14 : "",
condition == NO_CONDITION && party._holyBonus ? Res.PLUS_14 : "",
- condition == NO_CONDITION && party._heroism ? Res.PLUS_14 : ""
- );
+ condition == NO_CONDITION && party._heroism ? Res.PLUS_14 : "");
}
void CharacterInfo::showCursor(bool flag) {
diff --git a/engines/xeen/dialogs/dialogs_char_info.h b/engines/xeen/dialogs/dialogs_char_info.h
index 8abbb5d4bd..d1b3580600 100644
--- a/engines/xeen/dialogs/dialogs_char_info.h
+++ b/engines/xeen/dialogs/dialogs_char_info.h
@@ -50,9 +50,9 @@ private:
void addButtons();
/**
- * Get russian day/days form id
+ * Get plural day/days form
*/
- int getRuDays(int val);
+ Common::String getDaysPlurals(int val);
/**
* Return a string containing the details of the character
diff --git a/engines/xeen/files.cpp b/engines/xeen/files.cpp
index 2ae5052499..5d8e3b7e4f 100644
--- a/engines/xeen/files.cpp
+++ b/engines/xeen/files.cpp
@@ -272,7 +272,7 @@ bool FileManager::setup() {
// Verify the version of the CC is correct
CCArchive *dataCc = new CCArchive("xeen.ccs", "data", true);
- if (!f.open("VERSION", *dataCc) || f.readUint32LE() != 4) {
+ if (!f.open("VERSION", *dataCc) || f.readUint32LE() != 5) {
GUIErrorMessage("xeen.ccs is out of date");
return false;
}
diff --git a/engines/xeen/font.cpp b/engines/xeen/font.cpp
index 6f471e8fa7..676904b2d5 100644
--- a/engines/xeen/font.cpp
+++ b/engines/xeen/font.cpp
@@ -35,36 +35,25 @@ byte FontData::_bgColor;
bool FontData::_fontReduced;
Justify FontData::_fontJustify;
-Common::Language lang;
-int offset_fntEn;
-int offset_fntEnReduced;
-int offset_fntNonEn;
-int offset_fntNonEnReduced;
-int offset_fntEnW;
-int offset_fntEnReducedW;
-int offset_fntNonEnW;
-int offset_fntNonEnReducedW;
-
-
FontSurface::FontSurface() : XSurface(), _msgWraps(false), _displayString(nullptr),
_writePos(*FontData::_fontWritePos) {
setTextColor(0);
lang = Common::parseLanguage(ConfMan.get("language"));
if (Common::RU_RUS == lang) {
- offset_fntEn = 0x0000;
- offset_fntNonEn = 0x0800;
- offset_fntEnReduced = 0x1000;
- offset_fntNonEnReduced = 0x1800;
- offset_fntEnW = 0x2000;
- offset_fntNonEnW = 0x2080;
- offset_fntEnReducedW = 0x2100;
- offset_fntNonEnReducedW = 0x2180;
+ _fntEnOffset = 0x0000;
+ _fntNonEnOffset = 0x0800;
+ _fntEnReducedOffset = 0x1000;
+ _fntNonEnReducedOffset = 0x1800;
+ _fntEnWOffset = 0x2000;
+ _fntNonEnWOffset = 0x2080;
+ _fntEnReducedWOffset = 0x2100;
+ _fntNonEnReducedWOffset = 0x2180;
} else {
- offset_fntEn = 0x0000;
- offset_fntEnReduced = 0x0800;
- offset_fntEnW = 0x1000;
- offset_fntEnReducedW = 0x1080;
+ _fntEnOffset = 0x0000;
+ _fntEnReducedOffset = 0x0800;
+ _fntEnWOffset = 0x1000;
+ _fntEnReducedWOffset = 0x1080;
}
}
@@ -75,19 +64,19 @@ FontSurface::FontSurface(int wv, int hv) : XSurface(wv, hv),
lang = Common::parseLanguage(ConfMan.get("language"));
if (Common::RU_RUS == lang) {
- offset_fntEn = 0x0000;
- offset_fntNonEn = 0x0800;
- offset_fntEnReduced = 0x1000;
- offset_fntNonEnReduced = 0x1800;
- offset_fntEnW = 0x2000;
- offset_fntNonEnW = 0x2080;
- offset_fntEnReducedW = 0x2100;
- offset_fntNonEnReducedW = 0x2180;
+ _fntEnOffset = 0x0000;
+ _fntNonEnOffset = 0x0800;
+ _fntEnReducedOffset = 0x1000;
+ _fntNonEnReducedOffset = 0x1800;
+ _fntEnWOffset = 0x2000;
+ _fntNonEnWOffset = 0x2080;
+ _fntEnReducedWOffset = 0x2100;
+ _fntNonEnReducedWOffset = 0x2180;
} else {
- offset_fntEn = 0x0000;
- offset_fntEnReduced = 0x0800;
- offset_fntEnW = 0x1000;
- offset_fntEnReducedW = 0x1080;
+ _fntEnOffset = 0x0000;
+ _fntEnReducedOffset = 0x0800;
+ _fntEnWOffset = 0x1000;
+ _fntEnReducedWOffset = 0x1080;
}
}
@@ -240,8 +229,8 @@ const char *FontSurface::writeString(const Common::String &s, const Common::Rect
if (c == 6)
c = ' ';
int offset_charW = c < 0 ?
- (_fontReduced ? offset_fntNonEnReducedW : offset_fntNonEnW) + (int)(0x80 + c) :
- (_fontReduced ? offset_fntEnReducedW : offset_fntEnW) + (int)c;
+ (_fontReduced ? _fntNonEnReducedWOffset : _fntNonEnWOffset) + (int)(0x80 + c) :
+ (_fontReduced ? _fntEnReducedWOffset : _fntEnWOffset) + (int)c;
byte charSize = _fontData[offset_charW];
_writePos.x -= charSize;
@@ -316,10 +305,10 @@ char FontSurface::getNextChar() {
}
bool FontSurface::getNextCharWidth(int &total) {
- char c = getNextChar();
+ char c = getNextChar();
if (c > ' ') {
- total += _fontData[(_fontReduced ? offset_fntEnReducedW : offset_fntEnW) + (int)c];
+ total += _fontData[(_fontReduced ? _fntEnReducedWOffset : _fntEnWOffset) + (int)c];
return false;
} else if (c == ' ') {
total += 4;
@@ -339,7 +328,7 @@ bool FontSurface::getNextCharWidth(int &total) {
getNextChar();
return false;
} else if (Common::RU_RUS == lang && c < 0) {
- total += _fontData[(_fontReduced ? offset_fntNonEnReducedW : offset_fntNonEnW) + (int)(0x80 + c)];
+ total += _fontData[(_fontReduced ? _fntNonEnReducedWOffset : _fntNonEnWOffset) + (int)(0x80 + c)];
return false;
} else {
--_displayString;
@@ -394,11 +383,11 @@ void FontSurface::writeChar(char c, const Common::Rect &clipRect) {
int offset_charData;
int offset_charW;
if (Common::RU_RUS == lang && c < 0) {
- offset_charData = (_fontReduced ? offset_fntNonEnReduced : offset_fntNonEn) + (int)(0x80 + c) * 16;
- offset_charW = (_fontReduced ? offset_fntNonEnReducedW : offset_fntNonEnW) + (int)(0x80 + c);
+ offset_charData = (_fontReduced ? _fntNonEnReducedOffset : _fntNonEnOffset) + (int)(0x80 + c) * 16;
+ offset_charW = (_fontReduced ? _fntNonEnReducedWOffset : _fntNonEnWOffset) + (int)(0x80 + c);
} else {
- offset_charData = (_fontReduced ? offset_fntEnReduced : offset_fntEn) + (int)c * 16;
- offset_charW = (_fontReduced ? offset_fntEnReducedW : offset_fntEnW) + (int)c;
+ offset_charData = (_fontReduced ? _fntEnReducedOffset : _fntEnOffset) + (int)c * 16;
+ offset_charW = (_fontReduced ? _fntEnReducedWOffset : _fntEnWOffset) + (int)c;
}
const byte *srcP = &_fontData[offset_charData];
diff --git a/engines/xeen/font.h b/engines/xeen/font.h
index a317a626a1..bc84e09c64 100644
--- a/engines/xeen/font.h
+++ b/engines/xeen/font.h
@@ -23,6 +23,7 @@
#ifndef XEEN_FONT_H
#define XEEN_FONT_H
+#include "common/language.h"
#include "xeen/xsurface.h"
namespace Xeen {
@@ -47,6 +48,19 @@ private:
const char *_displayString;
bool _msgWraps;
+ Common::Language lang;
+ /**
+ * fnt file offsets
+ */
+ int _fntEnOffset; // English characters
+ int _fntEnReducedOffset; // English characters (reduced)
+ int _fntNonEnOffset; // Non-English characters
+ int _fntNonEnReducedOffset; // Non-English characters (reduced)
+ int _fntEnWOffset; // English characters Width
+ int _fntEnReducedWOffset; // English characters (reduced) Width
+ int _fntNonEnWOffset; // Non-English characters Width
+ int _fntNonEnReducedWOffset; // Non-English characters (reduced) Width
+
/**
* Return the next pending character to display
*/
diff --git a/engines/xeen/resources.cpp b/engines/xeen/resources.cpp
index a14198736f..fc500ad1ce 100644
--- a/engines/xeen/resources.cpp
+++ b/engines/xeen/resources.cpp
@@ -20,6 +20,7 @@
*
*/
+#include "common/config-manager.h"
#include "common/scummsys.h"
#include "xeen/resources.h"
#include "xeen/files.h"
@@ -60,7 +61,8 @@ Resources::Resources() {
}
void Resources::loadData() {
- ResFile file(_buffer);
+ Common::Language lang = Common::parseLanguage(ConfMan.get("language"));
+ ResFile file(_buffer, lang);
file.syncString(CLOUDS_CREDITS);
file.syncString(DARK_SIDE_CREDITS);
file.syncString(SWORDS_CREDITS1);
@@ -212,7 +214,7 @@ void Resources::loadData() {
file.syncString(SWORDS_GAME_TEXT);
file.syncStrings(WEEK_DAY_STRINGS, 10);
file.syncString(CHARACTER_DETAILS);
- file.syncStrings(RU_DAYS, 3);
+ file.syncStrings(DAYS, 3);
file.syncString(PARTY_GOLD);
file.syncString(PLUS_14);
file.syncString(CHARACTER_TEMPLATE);
diff --git a/engines/xeen/resources.h b/engines/xeen/resources.h
index 6785d43fae..decad4cf03 100644
--- a/engines/xeen/resources.h
+++ b/engines/xeen/resources.h
@@ -48,7 +48,7 @@ class Resources {
char *_buffer;
char *_buffStart;
public:
- ResFile(char *buffer) : File("CONSTANTS"), _buffer(buffer), _buffStart(buffer) {}
+ ResFile(char *buffer, int num) : File("CONSTANTS_" + Common::String::format("%i", num)), _buffer(buffer), _buffStart(buffer) {}
void syncString(const char *&str) {
str = _buffer;
@@ -116,6 +116,7 @@ public:
const char **ITEM_NAMES[4];
// Data loaded from xeen.ccs
+ int RES_LANGUAGE;
const char *CLOUDS_CREDITS;
const char *DARK_SIDE_CREDITS;
const char *SWORDS_CREDITS1;
@@ -267,7 +268,7 @@ public:
const char *SWORDS_GAME_TEXT;
const char *WEEK_DAY_STRINGS[10];
const char *CHARACTER_DETAILS;
- const char *RU_DAYS[3];
+ const char *DAYS[3];
const char *PARTY_GOLD;
const char *PLUS_14;
const char *CHARACTER_TEMPLATE;
Commit: d18f2bb2196c183fa9648eabfd141fe8ffd8994f
https://github.com/scummvm/scummvm/commit/d18f2bb2196c183fa9648eabfd141fe8ffd8994f
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Split language constants
Further sharpening ru translation
Changed paths:
A devtools/create_xeen/en_constants.h
A devtools/create_xeen/ru_constants.h
devtools/create_xeen/clouds.cpp
devtools/create_xeen/constants.cpp
devtools/create_xeen/constants.h
engines/xeen/resources.h
diff --git a/devtools/create_xeen/clouds.cpp b/devtools/create_xeen/clouds.cpp
index ee3051614e..f8aba7b7d6 100644
--- a/devtools/create_xeen/clouds.cpp
+++ b/devtools/create_xeen/clouds.cpp
@@ -32,7 +32,6 @@
#include "file.h"
#include "clouds.h"
-
static const char *const MAP_NAMES[86] = {
"", "Area A1", "Area A2", "Area A3", "Area A4", "Area B1", "Area B2",
"Area B3", "Area B4", "Area C1", "Area C2", "Area C3", "Area C4",
diff --git a/devtools/create_xeen/constants.cpp b/devtools/create_xeen/constants.cpp
index 0d89a09c42..59b6af13af 100644
--- a/devtools/create_xeen/constants.cpp
+++ b/devtools/create_xeen/constants.cpp
@@ -20,7 +20,7 @@
*
*/
- // Disable symbol overrides so that we can use system headers.
+// Disable symbol overrides so that we can use system headers.
#define FORBIDDEN_SYMBOL_ALLOW_ALL
// HACK to allow building with the SDL backend on MinGW
@@ -30,5205 +30,441 @@
#endif // main
#include "common/language.h"
-#include "file.h"
#include "constants.h"
-enum MagicSpell {
- MS_AcidSpray = 0, MS_Awaken = 1, MS_BeastMaster = 2, MS_Bless = 3,
- MS_Clairvoyance = 4, MS_ColdRay = 5, MS_CreateFood = 6,
- MS_CureDisease = 7, MS_CureParalysis = 8, MS_CurePoison = 9,
- MS_CureWounds = 10, MS_DancingSword = 11, MS_DayOfProtection = 12,
- MS_DayOfSorcery = 13, MS_DeadlySwarm = 14, MS_DetectMonster = 15,
- MS_DivineIntervention = 16, MS_DragonSleep = 17, MS_ElementalStorm = 18,
- MS_EnchantItem = 19, MS_EnergyBlast = 20, MS_Etheralize = 21,
- MS_FantasticFreeze = 22, MS_FieryFlail = 23, MS_FingerOfDeath = 24,
- MS_Fireball = 25, MS_FirstAid = 26, MS_FlyingFist = 27,
- MS_FrostBite = 28, MS_GolemStopper = 29, MS_Heroism = 30,
- MS_HolyBonus = 31, MS_HolyWord = 32, MS_Hynotize = 33,
- MS_IdentifyMonster = 34, MS_Implosion = 35, MS_Incinerate = 36,
- MS_Inferno = 37, MS_InsectSpray = 38, MS_ItemToGold = 39,
- MS_Jump = 40, MS_Levitate = 41, MS_Light = 42, MS_LightningBolt = 43,
- MS_LloydsBeacon = 44, MS_MagicArrow = 45, MS_MassDistortion = 46,
- MS_MegaVolts = 47, MS_MoonRay = 48, MS_NaturesCure = 49, MS_Pain = 50,
- MS_PoisonVolley = 51, MS_PowerCure = 52, MS_PowerShield = 53,
- MS_PrismaticLight = 54, MS_ProtFromElements = 55, MS_RaiseDead = 56,
- MS_RechargeItem = 57, MS_Resurrection = 58, MS_Revitalize = 59,
- MS_Shrapmetal = 60, MS_Sleep = 61, MS_Sparks = 62, MS_StarBurst = 63,
- MS_StoneToFlesh = 64, MS_SunRay = 65, MS_SuperShelter = 66,
- MS_SuppressDisease = 67, MS_SuppressPoison = 68, MS_Teleport = 69,
- MS_TimeDistortion = 70, MS_TownPortal = 71, MS_ToxicCloud = 72,
- MS_TurnUndead = 73, MS_WalkOnWater = 74, MS_WizardEye = 75,
- NO_SPELL = 76
-};
-
-class LangConstants {
-protected:
- const char **_gameNames = NULL;
- const char **_whoWillActions = NULL;
- const char **_whoActions = NULL;
- const char **_directionText = NULL;
- const char **_directionTextUpper = NULL;
- const char **_raceNames = NULL;
- const char **_sexNames = NULL;
- const char **_alignmentNames = NULL;
- const char **_skillNames = NULL;
- const char **_classNames = NULL;
- const char **_conditionNames = NULL;
- const char **_depositWithdrawl = NULL;
- const char **_statNames = NULL;
- const char **_whereNames = NULL;
- const char **_consumableNames = NULL;
- const char **_weekDayStrings = NULL;
- const char **_ratingText = NULL;
- const char **_bonusNames = NULL;
- const char **_weaponNames = NULL;
- const char **_armorNames = NULL;
- const char **_accessoryNames = NULL;
- const char **_miscNames = NULL;
- const char **_elementalNames = NULL;
- const char **_specialNames = NULL;
- const char **_attributeNames = NULL;
- const char **_effectivenessNames = NULL;
- const char **_questItemNamesSwords = NULL;
- const char **_questItemNames = NULL;
- const char **_categoryNames = NULL;
- const char **_itemActions = NULL;
- const char **_categoryBackpackIsFull = NULL;
- const char **_fixIdentify = NULL;
- const char **_removeDelete = NULL;
- const char **_spellCastComponents = NULL;
- const char **_monsterSpecialAttacks = NULL;
- const char **_quickFightOptions = NULL;
- const char **_goober = NULL;
- const char **_worldEndText = NULL;
- const char **_days = NULL;
- const char **_sellXForYGoldEndings = NULL;
-
-
-public:
- virtual const char *CLOUDS_CREDITS() = 0;
- virtual const char *DARK_SIDE_CREDITS() = 0;
- virtual const char *SWORDS_CREDITS1() = 0;
- virtual const char *SWORDS_CREDITS2() = 0;
- virtual const char *OPTIONS_MENU() = 0;
- virtual const char **GAME_NAMES() = 0;
- virtual const char *THE_PARTY_NEEDS_REST() = 0;
- virtual const char *WHO_WILL() = 0;
- virtual const char *HOW_MUCH() = 0;
- virtual const char *WHATS_THE_PASSWORD() = 0;
- virtual const char *PASSWORD_INCORRECT() = 0;
- virtual const char *IN_NO_CONDITION() = 0;
- virtual const char *NOTHING_HERE() = 0;
-
- const char *const TERRAIN_TYPES[6] = {
- "town", "cave", "towr", "cstl", "dung", "scfi"
- };
-
- const char *const OUTDOORS_WALL_TYPES[16] = {
- nullptr, "mount", "ltree", "dtree", "grass", "snotree", "dsnotree",
- "snomnt", "dedltree", "mount", "lavamnt", "palm", "dmount", "dedltree",
- "dedltree", "dedltree"
- };
-
- const char *const SURFACE_NAMES[16] = {
- "water.srf", "dirt.srf", "grass.srf", "snow.srf", "swamp.srf",
- "lava.srf", "desert.srf", "road.srf", "dwater.srf", "tflr.srf",
- "sky.srf", "croad.srf", "sewer.srf", "cloud.srf", "scortch.srf",
- "space.srf"
- };
-
- virtual const char **WHO_ACTIONS() = 0;
- virtual const char **WHO_WILL_ACTIONS() = 0;
-
- const byte SYMBOLS[20][64] = {
- { // 0
- 0x00, 0x00, 0xA8, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x00, 0xA8, 0x9E, 0x9C, 0x9C, 0x9E, 0x9E, 0x9E,
- 0xAC, 0x9C, 0xA4, 0xAC, 0xAC, 0x9A, 0x9A, 0x9A, 0xAC, 0x9E, 0xAC, 0xA8, 0xA8, 0xA6, 0x97, 0x98,
- 0xAC, 0xA0, 0xAC, 0xAC, 0xA4, 0xA6, 0x98, 0x99, 0x00, 0xAC, 0xA0, 0xA0, 0xA8, 0xAC, 0x9A, 0x9A,
- 0x00, 0x00, 0xAC, 0xAC, 0xAC, 0xA4, 0x9B, 0x9A, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xA0, 0x9B, 0x9B,
- },
- { // 1
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
- 0x99, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x99, 0x98, 0x98, 0x98, 0x97, 0x97, 0x97, 0x97, 0x97,
- 0x99, 0x98, 0x98, 0x99, 0x98, 0x98, 0x99, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
- 0x9A, 0x9B, 0x9B, 0x9C, 0x9B, 0x9A, 0x9C, 0x9A, 0x9B, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x9A, 0x9B,
- },
- { // 2
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
- 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x99, 0x98, 0x98, 0x99, 0x98, 0x98, 0x97, 0x98, 0x98,
- 0x99, 0x98, 0x98, 0x98, 0x99, 0x99, 0x98, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
- 0x9B, 0x9B, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9B, 0x99, 0x9A, 0x9B, 0x9B, 0x9A, 0x9A, 0x99, 0x9A,
- },
- { // 3
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
- 0x99, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x98, 0x98, 0x97, 0x97, 0x98, 0x98, 0x98, 0x98,
- 0x99, 0x99, 0x98, 0x99, 0x98, 0x98, 0x99, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
- 0x9B, 0x9C, 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0x9C, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x9A,
- },
- { // 4
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
- 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x99, 0x9A, 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
- 0x99, 0x99, 0x98, 0x99, 0x99, 0x98, 0x98, 0x98, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
- 0x9A, 0x9C, 0x9B, 0x9B, 0x9C, 0x9B, 0x9B, 0x9B, 0x9A, 0x99, 0x9B, 0x9B, 0x9A, 0x99, 0x9A, 0x9A,
- },
- { // 5
- 0xA4, 0xA4, 0xA8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x9E, 0x9E, 0xA0, 0xA8, 0xAC, 0x00, 0x00,
- 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9E, 0xAC, 0x00, 0x97, 0x97, 0x97, 0x98, 0x9C, 0x9C, 0xA0, 0xAC,
- 0x99, 0x98, 0x99, 0x99, 0x99, 0x9B, 0xA0, 0xAC, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9B, 0xA0, 0xAC,
- 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x9A, 0x9A, 0x9B, 0x9B, 0xA4, 0xAC, 0x00,
- },
- { // 6
- 0x00, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x00, 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x9B, 0x99,
- 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x98, 0x99, 0x99,
- 0x00, 0xAC, 0xA0, 0x9C, 0x9C, 0xA0, 0x9C, 0x9A, 0x00, 0x00, 0xAC, 0xA4, 0xA0, 0x99, 0x99, 0x99,
- 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99,
- },
- { // 7
- 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x9C, 0x99, 0x99,
- 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x00, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99,
- 0x00, 0x00, 0xAC, 0xA0, 0x9B, 0xA0, 0x9E, 0x9C, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x9C, 0x99, 0x99,
- },
- { // 8
- 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x9B, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x9C, 0x99, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x9E, 0x9C, 0x99,
- },
- { // 9
- 0x00, 0x00, 0xAC, 0xA4, 0xA0, 0x9C, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x9C, 0xA0, 0x9C, 0x9A,
- 0xAC, 0xA4, 0x9C, 0x9A, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99,
- 0x00, 0xAC, 0xA4, 0x9C, 0x9A, 0x9C, 0x99, 0x99, 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x9A, 0x99, 0x99,
- },
- { // 10
- 0x99, 0x99, 0x99, 0x9A, 0xA0, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
- 0x99, 0x99, 0x9C, 0x9E, 0xA4, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x9C, 0x99, 0x9C, 0xA4, 0xAC, 0x00,
- 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
- 0x99, 0x99, 0x99, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x9A, 0x9B, 0x9E, 0x9C, 0x9C, 0xA4, 0xAC, 0x00,
- },
- { // 11
- 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0x9E, 0xAC,
- 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
- 0x9C, 0x99, 0x99, 0x99, 0x9C, 0x9C, 0xA4, 0xAC, 0x99, 0x9E, 0x9E, 0x9C, 0x9C, 0xA0, 0xAC, 0x00,
- },
- { // 12
- 0x99, 0x99, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x9B, 0x9C, 0x9E, 0x9C, 0x9C, 0xA4, 0xAC, 0x00,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
- 0x99, 0x99, 0x99, 0x99, 0x9C, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xA4, 0xAC, 0x00,
- 0x99, 0x99, 0x9C, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
- },
- { // 13
- 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
- 0x99, 0x9B, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x9A, 0x99, 0x9C, 0xA0, 0xAC, 0x00,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
- 0x99, 0x99, 0x99, 0x99, 0x9A, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x9A, 0x9C, 0xA4, 0xAC, 0x00,
- },
- { // 14
- 0x00, 0x00, 0xAC, 0x9E, 0x9C, 0x9C, 0x9C, 0x9B, 0x00, 0xAC, 0x9C, 0xA0, 0x9E, 0xA4, 0xA4, 0xA4,
- 0xAC, 0x9C, 0xA4, 0xAC, 0xAC, 0xAC, 0x9C, 0x9E, 0xAC, 0xA0, 0xAC, 0xA8, 0x9E, 0xA8, 0xAC, 0x99,
- 0xAC, 0x9E, 0xAC, 0xA8, 0xAC, 0x9E, 0xA4, 0xAC, 0xAC, 0xA4, 0xA0, 0xAC, 0xAC, 0xA0, 0xA4, 0xAC,
- 0x00, 0xAC, 0xA4, 0xA0, 0xA0, 0xA4, 0xAC, 0xA4, 0x00, 0x00, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
- },
- { // 15
- 0x9C, 0x9C, 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
- 0x9E, 0x9E, 0x9E, 0x9C, 0x9E, 0x9E, 0x9E, 0x9E, 0x99, 0x99, 0x99, 0x99, 0x99, 0x98, 0x99, 0x98,
- 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0x9E, 0x9E, 0xA0,
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
- },
- { // 16
- 0x9B, 0x9B, 0x9B, 0x9B, 0x9C, 0x9B, 0x9C, 0x9C, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
- 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9E, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
- 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0xA0, 0xA0, 0xA0, 0x9E, 0xA0, 0x9E, 0x9E, 0xA0,
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
- },
- { // 17
- 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9C, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
- 0x9E, 0x9E, 0x9E, 0x9C, 0x9C, 0x9C, 0x9E, 0x9E, 0x98, 0x98, 0x98, 0x99, 0x9A, 0x9A, 0x99, 0x98,
- 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9C, 0xA0, 0x9E, 0x9E, 0xA0, 0xA0, 0xA0, 0xA0, 0x9E,
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
- },
- { // 18
- 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
- 0x9E, 0x9E, 0x9E, 0x9E, 0x9C, 0x9C, 0x9C, 0x9E, 0x98, 0x98, 0x98, 0x98, 0x9A, 0x9A, 0x98, 0x99,
- 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9B, 0x9C, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0xA0, 0xA0, 0xA0,
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
- },
- { // 19
- 0x9C, 0x9B, 0x9C, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0x00, 0x00,
- 0x9E, 0x9E, 0x9C, 0x9C, 0x9E, 0xA0, 0xAC, 0x00, 0x99, 0x98, 0x98, 0x99, 0x9A, 0x9A, 0xA0, 0xAC,
- 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0xA0, 0xAC, 0xA0, 0xA0, 0x9E, 0xA0, 0xA0, 0xA0, 0xA0, 0xAC,
- 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0x00, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0x00, 0x00,
- }
- };
-
- const byte TEXT_COLORS[40][4] = {
- {0x00, 0x19, 0x19, 0x19},
- {0x00, 0x08, 0x08, 0x08},
- {0x00, 0x0F, 0x0F, 0x0F},
- {0x00, 0x15, 0x15, 0x15},
- {0x00, 0x01, 0x01, 0x01},
- {0x00, 0x21, 0x21, 0x21},
- {0x00, 0x26, 0x26, 0x26},
- {0x00, 0x2B, 0x2B, 0x2B},
- {0x00, 0x31, 0x31, 0x31},
- {0x00, 0x36, 0x36, 0x36},
- {0x00, 0x3D, 0x3D, 0x3D},
- {0x00, 0x41, 0x41, 0x41},
- {0x00, 0x46, 0x46, 0x46},
- {0x00, 0x4C, 0x4C, 0x4C},
- {0x00, 0x50, 0x50, 0x50},
- {0x00, 0x55, 0x55, 0x55},
- {0x00, 0x5D, 0x5D, 0x5D},
- {0x00, 0x60, 0x60, 0x60},
- {0x00, 0x65, 0x65, 0x65},
- {0x00, 0x6C, 0x6C, 0x6C},
- {0x00, 0x70, 0x70, 0x70},
- {0x00, 0x75, 0x75, 0x75},
- {0x00, 0x7B, 0x7B, 0x7B},
- {0x00, 0x80, 0x80, 0x80},
- {0x00, 0x85, 0x85, 0x85},
- {0x00, 0x8D, 0x8D, 0x8D},
- {0x00, 0x90, 0x90, 0x90},
- {0x00, 0x97, 0x97, 0x97},
- {0x00, 0x9D, 0x9D, 0x9D},
- {0x00, 0xA4, 0xA4, 0xA4},
- {0x00, 0xAB, 0xAB, 0xAB},
- {0x00, 0xB0, 0xB0, 0xB0},
- {0x00, 0xB6, 0xB6, 0xB6},
- {0x00, 0xBD, 0xBD, 0xBD},
- {0x00, 0xC0, 0xC0, 0xC0},
- {0x00, 0xC6, 0xC6, 0xC6},
- {0x00, 0xCD, 0xCD, 0xCD},
- {0x00, 0xD0, 0xD0, 0xD0},
- {0x00, 0xD6, 0xD6, 0xD6},
- {0x00, 0xDB, 0xDB, 0xDB},
- };
-
- const byte TEXT_COLORS_STARTUP[40][4] = {
- {0x00, 0x19, 0x19, 0x19},
- {0x00, 0x08, 0x08, 0x08},
- {0x00, 0x0F, 0x0F, 0x0F},
- {0x00, 0x15, 0x15, 0x15},
- {0x00, 0x01, 0x01, 0x01},
- {0x00, 0x1F, 0x1F, 0x1F},
- {0x00, 0x26, 0x26, 0x26},
- {0x00, 0x2B, 0x2B, 0x2B},
- {0x00, 0x31, 0x31, 0x31},
- {0x00, 0x36, 0x36, 0x36},
- {0x00, 0x3D, 0x3D, 0x3D},
- {0x00, 0x42, 0x42, 0x42},
- {0x00, 0x46, 0x46, 0x46},
- {0x00, 0x4C, 0x4C, 0x4C},
- {0x00, 0x50, 0x50, 0x50},
- {0x00, 0x55, 0x55, 0x55},
- {0x00, 0x5D, 0x5D, 0x5D},
- {0x00, 0x60, 0x60, 0x60},
- {0x00, 0x65, 0x65, 0x65},
- {0x00, 0x6C, 0x6C, 0x6C},
- {0x00, 0x70, 0x70, 0x70},
- {0x00, 0x75, 0x75, 0x75},
- {0x00, 0x7B, 0x7B, 0x7B},
- {0x00, 0x80, 0x80, 0x80},
- {0x00, 0x85, 0x85, 0x85},
- {0x00, 0x8D, 0x8D, 0x8D},
- {0x00, 0x90, 0x90, 0x90},
- {0x00, 0x97, 0x97, 0x97},
- {0x00, 0x9D, 0x9D, 0x9D},
- {0x00, 0xA4, 0xA4, 0xA4},
- {0x00, 0xAB, 0xAB, 0xAB},
- {0x00, 0xB0, 0xB0, 0xB0},
- {0x00, 0xB6, 0xB6, 0xB6},
- {0x00, 0xBD, 0xBD, 0xBD},
- {0x00, 0xC0, 0xC0, 0xC0},
- {0x00, 0xC6, 0xC6, 0xC6},
- {0x00, 0xCD, 0xCD, 0xCD},
- {0x00, 0xD0, 0xD0, 0xD0},
- {0x00, 0x19, 0x19, 0x19},
- {0x00, 0x31, 0x31, 0x31}
- };
-
- virtual const char **DIRECTION_TEXT_UPPER() = 0;
- virtual const char **DIRECTION_TEXT() = 0;
- virtual const char **RACE_NAMES() = 0;
-
- const int RACE_HP_BONUSES[5] = {0, -2, 1, -1, 2};
-
- const int RACE_SP_BONUSES[5][2] = {
- {0, 0}, {2, 0}, {-1, -1}, {1, 1}, {-2, -2}
- };
-
- virtual const char **ALIGNMENT_NAMES() = 0;
- virtual const char **SEX_NAMES() = 0;
- virtual const char **SKILL_NAMES() = 0;
- virtual const char **CLASS_NAMES() = 0;
-
- const int CLASS_EXP_LEVELS[10] = {
- 1500, 2000, 2000, 1500, 2000, 1000, 1500, 1500, 1500, 2000
- };
-
- virtual const char **CONDITION_NAMES() = 0;
-
- const int CONDITION_COLORS[17] = {
- 9, 9, 9, 9, 9, 9, 9, 9, 32, 32, 32, 32, 6, 6, 6, 6, 15
- };
-
- virtual const char *GOOD() = 0;
- virtual const char *BLESSED() = 0;
- virtual const char *POWER_SHIELD() = 0;
- virtual const char *HOLY_BONUS() = 0;
- virtual const char *HEROISM() = 0;
- virtual const char *IN_PARTY() = 0;
- virtual const char *PARTY_DETAILS() = 0;
- virtual const char *PARTY_DIALOG_TEXT() = 0;
-
- const int FACE_CONDITION_FRAMES[17] = {
- 2, 2, 2, 1, 1, 4, 4, 4, 3, 2, 4, 3, 3, 5, 6, 7, 0
- };
-
- const int CHAR_FACES_X[6] = {10, 45, 81, 117, 153, 189};
-
- const int HP_BARS_X[6] = {13, 50, 86, 122, 158, 194};
-
- virtual const char *NO_ONE_TO_ADVENTURE_WITH() = 0;
- virtual const char *YOUR_ROSTER_IS_FULL() = 0;
-
- const byte DARKNESS_XLAT[3][256] = {
- {
- 0, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 44, 45, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 108, 109, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 124, 125, 126, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 140, 141, 142, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 168, 169, 170, 171, 172, 173, 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 188, 189, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 204, 205, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 220, 221, 222, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- }, {
- 0, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
- 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 0,
- 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0,
- 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0,
- 104, 105, 106, 107, 108, 109, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0,
- 120, 121, 122, 123, 124, 125, 126, 127, 0, 0, 0, 0, 0, 0, 0, 0,
- 136, 137, 138, 139, 140, 141, 142, 143, 0, 0, 0, 0, 0, 0, 0, 0,
- 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 184, 185, 186, 187, 188, 189, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0,
- 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0,
- 216, 217, 218, 219, 220, 221, 222, 223, 0, 0, 0, 0, 0, 0, 0, 0,
- 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 0,
- 248, 249, 250, 251, 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, 0, 0
- }, {
- 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, 0,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, 0,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 0, 0, 0, 0,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 0, 0, 0, 0,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 0, 0, 0, 0,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
- 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 0, 0, 0, 0,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 0, 0, 0, 0,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, 0,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 0, 0, 0
- }
- };
-
- virtual const char *PLEASE_WAIT() = 0;
- virtual const char *OOPS() = 0;
-
- const int SCREEN_POSITIONING_X[4][48] = {
- {
- -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, -2, -1,
- -1, 0, 0, 0, 1, 1, 2, -4, -3, -3, -2, -2,
- -1, -1, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4,
- -3, -2, -1, 0, 0, 1, 2, 3, -4, 4, 0, 0
- }, {
- 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 1
- }, {
- 1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 2, 1,
- 1, 0, 0, 0, -1, -1, -2, 4, 3, 3, 2, 2,
- 1, 1, 0, 0, 0, -1, -1, -2, -2, -3, -3, -4,
- 3, 2, 1, 0, 0, -1, -2, -3, 4, -4, 0, 0
- }, {
- 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3,
- -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
- -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, -1
- }
- };
-
- const int SCREEN_POSITIONING_Y[4][48] = {
- {
- 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 1
- }, {
- 1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 2, 1,
- 1, 0, 0, 0, -1, -1, -2, 4, 3, 3, 2, 2,
- 1, 1, 0, 0, 0, -1, -1, -2, -2, -3, -3, -4,
- 3, 2, 1, 0, 0, -1, -2, -3, 4, -4, 0, 0
- }, {
- 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -2, -2,
- -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3,
- -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
- -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, -1
- }, {
- -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, -2, -1,
- -1, 0, 0, 0, 1, 1, 2, -4, -3, -3, -2, -2,
- -1, -1, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4,
- -3, -2, -1, 0, 0, 1, 2, 3, -4, 4, 0, 0
- }
- };
-
- const int MONSTER_GRID_BITMASK[12] = {
- 0xC, 8, 4, 0, 0xF, 0xF000, 0xF00, 0xF0, 0xF00, 0xF0, 0x0F, 0xF000
- };
-
- const int INDOOR_OBJECT_X[2][12] = {
- { -5, -7, -112, 98, -8, -65, 49, -9, -34, 16, -58, 40 },
- { -35, -35, -142, 68, -35, -95, 19, -35, -62, -14, -98, 16 }
- };
-
- const int MAP_OBJECT_Y[2][12] = {
- { 2, 25, 25, 25, 50, 50, 50, 58, 58, 58, 58, 58 },
- { -65, -6, -6, -6, 36, 36, 36, 54, 54, 54, 54, 54 }
- };
-
- const int INDOOR_MONSTERS_Y[4] = { 2, 34, 53, 59 };
-
- const int OUTDOOR_OBJECT_X[2][12] = {
- { -5, -7, -112, 98, -8, -77, 61, -9, -43, 25, -74, 56 },
- { -35, -35, -142, 68, -35, -95, 19, -35, -62, -24, -98, 16 }
- };
-
- const int OUTDOOR_MONSTER_INDEXES[26] = {
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 69, 70,
- 71, 72, 73, 74, 75, 90, 91, 92, 93, 94, 112, 115, 118
- };
-
- const int OUTDOOR_MONSTERS_Y[26] = {
- 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 53, 53,
- 53, 53, 53, 53, 53, 34, 34, 34, 34, 34, 2, 2, 2
- };
-
- const int DIRECTION_ANIM_POSITIONS[4][4] = {
- { 0, 1, 2, 3 }, { 3, 0, 1, 2 }, { 2, 3, 0, 1 }, { 1, 2, 3, 0 }
- };
-
- const byte WALL_SHIFTS[4][48] = {
- {
- 12, 0, 12, 8, 12, 12, 0, 12, 8, 12, 12, 0,
- 12, 0, 12, 8, 12, 8, 12, 12, 0, 12, 0, 12,
- 0, 12, 0, 12, 8, 12, 8, 12, 8, 12, 8, 12,
- 0, 0, 0, 0, 8, 8, 8, 8, 0, 0, 4, 4
- }, {
- 8, 12, 8, 4, 8, 8, 12, 8, 4, 8, 8, 12,
- 8, 12, 8, 4, 8, 4, 8, 8, 12, 8, 12, 8,
- 12, 8, 12, 8, 4, 8, 4, 8, 4, 8, 4, 8,
- 12, 12, 12, 12, 4, 4, 4, 4, 0, 0, 0, 0
- }, {
- 4, 8, 4, 0, 4, 4, 8, 4, 0, 4, 4, 8,
- 4, 8, 4, 0, 4, 0, 4, 4, 8, 4, 8, 4,
- 8, 4, 8, 4, 0, 4, 0, 4, 0, 4, 0, 4,
- 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 12, 12
- }, {
- 0, 4, 0, 12, 0, 0, 4, 0, 12, 0, 0, 4,
- 0, 4, 0, 12, 0, 12, 0, 0, 4, 0, 4, 0,
- 4, 0, 4, 0, 12, 0, 12, 0, 12, 0, 12, 0,
- 4, 4, 4, 4, 12, 12, 12, 12, 0, 0, 8, 8
- }
- };
-
- const int DRAW_NUMBERS[25] = {
- 36, 37, 38, 43, 42, 41,
- 39, 20, 22, 24, 33, 31,
- 29, 26, 10, 11, 18, 16,
- 13, 5, 9, 6, 0, 4, 1
- };
-
- const int DRAW_FRAMES[25][2] = {
- { 18, 24 }, { 19, 23 }, { 20, 22 }, { 24, 18 }, { 23, 19 }, { 22, 20 },
- { 21, 21 }, { 11, 17 }, { 12, 16 }, { 13, 15 }, { 17, 11 }, { 16, 12 },
- { 15, 13 }, { 14, 14 }, { 6, 10 }, { 7, 9 }, { 10, 6 }, { 9, 7 },
- { 8, 8 }, { 3, 5 }, { 5, 3 }, { 4, 4 }, { 0, 2 }, { 2, 0 },
- { 1, 1 }
- };
-
- const int COMBAT_FLOAT_X[8] = { -2, -1, 0, 1, 2, 1, 0, -1 };
-
- const int COMBAT_FLOAT_Y[8] = { -2, 0, 2, 0, -1, 0, 2, 0 };
-
- const int MONSTER_EFFECT_FLAGS[15][8] = {
- { 0x104, 0x105, 0x106, 0x107, 0x108, 0x109, 0x10A, 0x10B },
- { 0x10C, 0x10D, 0x10E, 0x10F, 0x0, 0x0, 0x0, 0x0 },
- { 0x110, 0x111, 0x112, 0x113, 0x0, 0x0, 0x0, 0x0 },
- { 0x114, 0x115, 0x116, 0x117, 0x0, 0x0, 0x0, 0x0 },
- { 0x200, 0x201, 0x202, 0x203, 0x0, 0x0, 0x0, 0x0 },
- { 0x300, 0x301, 0x302, 0x303, 0x400, 0x401, 0x402, 0x403 },
- { 0x500, 0x501, 0x502, 0x503, 0x0, 0x0, 0x0, 0x0 },
- { 0x600, 0x601, 0x602, 0x603, 0x0, 0x0, 0x0, 0x0 },
- { 0x604, 0x605, 0x606, 0x607, 0x608, 0x609, 0x60A, 0x60B },
- { 0x60C, 0x60D, 0x60E, 0x60F, 0x0, 0x0, 0x0, 0x0 },
- { 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100 },
- { 0x101, 0x101, 0x101, 0x101, 0x101, 0x101, 0x101, 0x101 },
- { 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102 },
- { 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103 },
- { 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108 }
- };
-
- const int SPELLS_ALLOWED[3][40] = {
- {
- 0, 1, 2, 3, 5, 6, 7, 8, 9, 10,
- 12, 14, 16, 23, 26, 27, 28, 30, 31, 32,
- 33, 42, 46, 48, 49, 50, 52, 55, 56, 58,
- 59, 62, 64, 65, 67, 68, 71, 73, 74, 76
- }, {
- 1, 4, 11, 13, 15, 17, 18, 19, 20, 21,
- 22, 24, 25, 29, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 47, 51, 53, 54,
- 57, 60, 61, 63, 66, 69, 70, 72, 75, 76
- }, {
- 0, 1, 2, 3, 4, 5, 7, 9, 10, 20,
- 25, 26, 27, 28, 30, 31, 34, 38, 40, 41,
- 42, 43, 44, 45, 49, 50, 52, 53, 55, 59,
- 60, 61, 62, 67, 68, 72, 73, 74, 75, 76
- }
- };
-
- const int BASE_HP_BY_CLASS[10] = { 10, 8, 7, 5, 4, 8, 7, 12, 6, 9 };
-
- const int AGE_RANGES[10] = { 1, 6, 11, 18, 36, 51, 76, 101, 201, 0xffff };
-
- const int AGE_RANGES_ADJUST[2][10] = {
- { -250, -50, -20, -10, 0, -2, -5, -10, -20, -50 },
- { -250, -50, -20, -10, 0, 2, 5, 10, 20, 50 }
- };
-
- const int STAT_VALUES[24] = {
- 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 25, 30, 35, 40,
- 50, 75, 100, 125, 150, 175, 200, 225, 250, 65535
- };
-
- const int STAT_BONUSES[24] = {
- -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20
- };
-
- const int ELEMENTAL_CATEGORIES[6] = { 8, 15, 20, 25, 33, 36 };
-
- const int ATTRIBUTE_CATEGORIES[10] = {
- 9, 17, 25, 33, 39, 45, 50, 56, 61, 72
- };
-
- const int ATTRIBUTE_BONUSES[72] = {
- 2, 3, 5, 8, 12, 17, 23, 30, 38, 47, // Might bonus
- 2, 3, 5, 8, 12, 17, 23, 30, // INT bonus
- 2, 3, 5, 8, 12, 17, 23, 30, // PER bonus
- 2, 3, 5, 8, 12, 17, 23, 30, // SPD bonus
- 3, 5, 10, 15, 20, 30, // ACC bonus
- 5, 10, 15, 20, 25, 30, // LUC bonus
- 4, 6, 10, 20, 50, // HP bonus
- 4, 8, 12, 16, 20, 25, // SP bonus
- 2, 4, 6, 10, 16, // AC bonus
- 4, 6, 8, 10, 12, 14, 16, 18, 20, 25 // Thievery bonus
- };
-
- const int ELEMENTAL_RESISTENCES[37] = {
- 0, 5, 7, 9, 12, 15, 20, 25, 30, 5, 7, 9, 12, 15, 20, 25,
- 5, 10, 15, 20, 25, 10, 15, 20, 25, 40, 5, 7, 9, 11, 13, 15, 20, 25,
- 5, 10, 20
- };
-
- const int ELEMENTAL_DAMAGE[37] = {
- 0, 2, 3, 4, 5, 10, 15, 20, 30, 2, 3, 4, 5, 10, 15, 20, 2, 4, 5, 10, 20,
- 2, 4, 8, 16, 32, 2, 3, 4, 5, 10, 15, 20, 30, 5, 10, 25
- };
-
- const int WEAPON_DAMAGE_BASE[35] = {
- 0, 3, 2, 3, 2, 2, 4, 1, 2, 4, 2, 3,
- 2, 2, 1, 1, 1, 1, 4, 4, 3, 2, 4, 2,
- 2, 2, 5, 3, 3, 3, 3, 5, 4, 2, 6
- };
-
- const int WEAPON_DAMAGE_MULTIPLIER[35] = {
- 0, 3, 3, 4, 5, 4, 2, 3, 3, 3, 3, 3,
- 2, 4, 10, 6, 8, 9, 4, 3, 6, 8, 5, 6,
- 4, 5, 3, 5, 6, 7, 2, 2, 2, 2, 4
- };
-
- const int METAL_DAMAGE[22] = {
- -3, -6, -4, -2, 2, 4, 6, 8, 10, 0, 1,
- 1, 2, 2, 3, 4, 5, 12, 15, 20, 30, 50
- };
-
- const int METAL_DAMAGE_PERCENT[22] = {
- 253, 252, 3, 2, 1, 2, 3, 4, 6, 0, 1,
- 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10
- };
-
- const int METAL_LAC[22] = {
- -3, 0, -2, -1, 1, 2, 4, 6, 8, 0, 1,
- 1, 2, 2, 3, 4, 5, 10, 12, 14, 16, 20
- };
-
- const int ARMOR_STRENGTHS[14] = { 0, 2, 4, 5, 6, 7, 8, 10, 4, 2, 1, 1, 1, 1 };
-
- const int MAKE_ITEM_ARR1[6] = { 0, 8, 15, 20, 25, 33 };
-
- const int MAKE_ITEM_ARR2[6][7][2] = {
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 6, 7 }, { 7, 7 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 5 }, { 5, 5 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
- { { 0, 0 }, { 1, 1 }, { 1, 1 }, { 1, 2 }, { 2, 2 }, { 2, 3 }, { 3, 3 } }
- };
-
- const int MAKE_ITEM_ARR3[10][7][2] = {
- { { 0, 0 }, { 1, 4 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 6, 10 }, { 10, 10 } },
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
- { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 6 }, { 6, 6 } },
- { { 0, 0 }, { 1, 2 }, { 2, 3 }, { 3, 4 }, { 4, 5 }, { 5, 6 }, { 6, 6 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 6 }, { 6, 6 } },
- { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
- { { 0, 0 }, { 1, 2 }, { 1, 4 }, { 3, 6 }, { 5, 8 }, { 7, 10 }, { 10, 10 } }
- };
-
- const int MAKE_ITEM_ARR4[2][7][2] = {
- { { 0, 0 }, { 1, 4 }, { 3, 7 }, { 4, 8 }, { 5, 9 }, { 8, 9 }, { 9, 9 } },
- { { 0, 0 }, { 1, 4 }, { 2, 6 }, { 4, 7 }, { 6, 10 }, { 9, 13 }, { 13, 13 } }
- };
-
- const int MAKE_ITEM_ARR5[8][2] = {
- { 0, 0 }, { 1, 15 }, { 16, 30 }, { 31, 40 }, { 41, 50 },
- { 51, 60 }, { 61, 73 }, { 61, 73 }
- };
-
- const int OUTDOOR_DRAWSTRUCT_INDEXES[44] = {
- 37, 38, 39, 40, 41, 44, 42, 43, 47, 45, 46,
- 48, 49, 52, 50, 51, 66, 67, 68, 69, 70, 71,
- 72, 75, 73, 74, 87, 88, 89, 90, 91, 94, 92,
- 93, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120
- };
-
- const int TOWN_MAXES[2][11] = {
- { 23, 13, 32, 16, 26, 16, 16, 16, 16, 16, 16 },
- { 26, 19, 48, 27, 26, 37, 16, 16, 16, 16, 16 }
- };
-
- const char *const TOWN_ACTION_MUSIC[2][7] = {
- { "bank.m", "smith.m", "guild.m", "tavern.m",
- "temple.m", "grounds.m", "endgame.m" },
- { "bank.m", "sf09.m", "guild.m", "tavern.m",
- "temple.m", "smith.m", "endgame.m" }
- };
-
- const char *const TOWN_ACTION_SHAPES[7] = {
- "bnkr", "blck", "gild", "tvrn", "tmpl", "trng", "eface08"
- };
-
- const int TOWN_ACTION_FILES[2][7] = {
- { 3, 2, 4, 2, 4, 2, 1 }, { 5, 3, 7, 5, 4, 6, 1 }
- };
-
- virtual const char *BANK_TEXT() = 0;
- virtual const char *BLACKSMITH_TEXT() = 0;
- virtual const char *GUILD_NOT_MEMBER_TEXT() = 0;
- virtual const char *GUILD_TEXT() = 0;
- virtual const char *TAVERN_TEXT() = 0;
- virtual const char *FOOD_AND_DRINK() = 0;
- virtual const char *GOOD_STUFF() = 0;
- virtual const char *HAVE_A_DRINK() = 0;
- virtual const char *YOURE_DRUNK() = 0;
-
- const int TAVERN_EXIT_LIST[2][6][5][2] = {
- {
- { { 21, 17 }, { 0, 0 }, { 20, 3 }, { 0, 0 }, { 0, 0 } },
- { { 13, 4 }, { 0, 0 }, { 19, 9 }, { 0, 0 }, { 0, 0 } },
- { { 20, 10 }, { 12, 8 }, { 5, 26 }, { 3, 4 }, { 7, 5 } },
- { { 18, 4 }, { 0, 0 }, { 19, 16 }, { 0, 0 }, { 11, 12 } },
- { { 15, 21 }, { 0, 0 }, { 13, 21 }, { 0, 0 }, { 0, 0 } },
- { { 10, 8 }, { 0, 0 }, { 15, 12 }, { 0, 0 }, { 0, 0 } },
- }, {
- { { 21, 17 }, { 0, 0 }, { 20, 3 }, { 0, 0 }, { 0, 0 } },
- { { 13, 4 }, { 0, 0 }, { 19, 9 }, { 0, 0 }, { 0, 0 } },
- { { 20, 10 }, { 12, 8 }, { 5, 26 }, { 3, 4 }, { 7, 5 } },
- { { 17, 24 }, { 14, 13 }, { 0, 0 }, { 0, 0 }, { 9, 4 } },
- { { 15, 21 }, { 0, 0 }, { 13, 21 }, { 0, 0 }, { 0, 0 } },
- { { 10, 8 }, { 0, 0 }, { 15, 12 }, { 0, 0 }, { 0, 0 } }
- }
- };
-
- virtual const char *TEMPLE_TEXT() = 0;
- virtual const char *EXPERIENCE_FOR_LEVEL() = 0;
- virtual const char *TRAINING_LEARNED_ALL() = 0;
- virtual const char *ELIGIBLE_FOR_LEVEL() = 0;
- virtual const char *TRAINING_TEXT() = 0;
- virtual const char *GOLD_GEMS() = 0;
- virtual const char *GOLD_GEMS_2() = 0;
- virtual const char **DEPOSIT_WITHDRAWL() = 0;
- virtual const char *NOT_ENOUGH_X_IN_THE_Y() = 0;
- virtual const char *NO_X_IN_THE_Y() = 0;
- virtual const char **STAT_NAMES() = 0;
- virtual const char **CONSUMABLE_NAMES() = 0;
- virtual const char **WHERE_NAMES() = 0;
- virtual const char *AMOUNT() = 0;
- virtual const char *FOOD_PACKS_FULL() = 0;
- virtual const char *BUY_SPELLS() = 0;
- virtual const char *GUILD_OPTIONS() = 0;
-
- const int MISC_SPELL_INDEX[74] = {
- NO_SPELL, MS_Light, MS_Awaken, MS_MagicArrow,
- MS_FirstAid, MS_FlyingFist, MS_EnergyBlast, MS_Sleep,
- MS_Revitalize, MS_CureWounds, MS_Sparks, MS_Shrapmetal,
- MS_InsectSpray, MS_ToxicCloud, MS_ProtFromElements, MS_Pain,
- MS_Jump, MS_BeastMaster, MS_Clairvoyance, MS_TurnUndead,
- MS_Levitate, MS_WizardEye, MS_Bless, MS_IdentifyMonster,
- MS_LightningBolt, MS_HolyBonus, MS_PowerCure, MS_NaturesCure,
- MS_LloydsBeacon, MS_PowerShield, MS_Heroism, MS_Hynotize,
- MS_WalkOnWater, MS_FrostBite, MS_DetectMonster, MS_Fireball,
- MS_ColdRay, MS_CurePoison, MS_AcidSpray, MS_TimeDistortion,
- MS_DragonSleep, MS_CureDisease, MS_Teleport, MS_FingerOfDeath,
- MS_CureParalysis, MS_GolemStopper, MS_PoisonVolley, MS_DeadlySwarm,
- MS_SuperShelter, MS_DayOfProtection, MS_DayOfSorcery, MS_CreateFood,
- MS_FieryFlail, MS_RechargeItem, MS_FantasticFreeze, MS_TownPortal,
- MS_StoneToFlesh, MS_RaiseDead, MS_Etheralize, MS_DancingSword,
- MS_MoonRay, MS_MassDistortion, MS_PrismaticLight, MS_EnchantItem,
- MS_Incinerate, MS_HolyWord, MS_Resurrection, MS_ElementalStorm,
- MS_MegaVolts, MS_Inferno, MS_SunRay, MS_Implosion,
- MS_StarBurst, MS_DivineIntervention
- };
-
- const int SPELL_COSTS[77] = {
- 8, 1, 5, -2, 5, -2, 20, 10, 12, 8, 3,
- - 3, 75, 40, 12, 6, 200, 10, 100, 30, -1, 30,
- 15, 25, 10, -2, 1, 2, 7, 20, -2, -2, 100,
- 15, 5, 100, 35, 75, 5, 20, 4, 5, 1, -2,
- 6, 2, 75, 40, 60, 6, 4, 25, -2, -2, 60,
- - 1, 50, 15, 125, 2, -1, 3, -1, 200, 35, 150,
- 15, 5, 4, 10, 8, 30, 4, 5, 7, 5, 0
- };
-
- const int DARK_SPELL_RANGES[12][2] = {
- { 0, 20 }, { 16, 35 }, { 27, 37 }, { 29, 39 },
- { 0, 17 }, { 14, 34 }, { 26, 37 }, { 29, 39 },
- { 0, 20 }, { 16, 35 }, { 27, 37 }, { 29, 39 }
- };
-
- const int SWORDS_SPELL_RANGES[12][2] = {
- { 0, 20 },{ 16, 35 },{ 27, 39 },{ 29, 39 },
- { 0, 17 },{ 14, 34 },{ 26, 39 },{ 29, 39 },
- { 0, 20 },{ 16, 35 },{ 27, 39 },{ 29, 39 }
- };
-
- const int CLOUDS_GUILD_SPELLS[5][20] = {
- {
- 1, 10, 20, 26, 27, 38, 40, 42, 45, 50,
- 55, 59, 60, 61, 62, 68, 72, 75, 77, 77
- }, {
- 3, 4, 5, 14, 15, 25, 30, 31, 34, 41,
- 49, 51, 53, 67, 73, 75, -1, -1, -1, -1
- }, {
- 4, 8, 9, 12, 13, 22, 23, 24, 28, 34,
- 41, 44, 52, 70, 73, 74, -1, -1, -1, -1
- }, {
- 6, 7, 9, 11, 12, 13, 17, 21, 22, 24,
- 29, 36, 56, 58, 64, 71, -1, -1, -1, -1
- }, {
- 6, 7, 9, 11, 12, 13, 18, 21, 29, 32,
- 36, 37, 46, 51, 56, 58, 69, -1, -1, -1
- }
- };
-
- const int DARK_SPELL_OFFSETS[3][39] = {
- {
- 42, 1, 26, 59, 27, 10, 50, 68, 55, 62, 67, 73, 2,
- 5, 3, 31, 30, 52, 49, 28, 74, 0, 9, 7, 14, 8,
- 33, 6, 23, 71, 64, 56, 48, 46, 12, 32, 58, 65, 16
- }, {
- 42, 1, 45, 61, 72, 40, 20, 60, 38, 41, 75, 34, 4,
- 43, 25, 53, 44, 15, 70, 17, 24, 69, 22, 66, 57, 11,
- 29, 39, 51, 21, 19, 36, 47, 13, 54, 37, 18, 35, 63
- }, {
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38
- }
- };
-
- const int SPELL_GEM_COST[77] = {
- 0, 0, 2, 1, 2, 4, 5, 0, 0, 0, 0, 10, 10, 10, 0, 0, 20, 4, 10, 20, 1, 10,
- 5, 5, 4, 2, 0, 0, 0, 10, 3, 1, 20, 4, 0, 20, 10, 10, 1, 10, 0, 0, 0, 2,
- 2, 0, 10, 10, 10, 0, 0, 10, 3, 2, 10, 1, 10, 10, 20, 0, 0, 1, 1, 20, 5, 20,
- 5, 0, 0, 0, 0, 5, 1, 2, 0, 2, 0
- };
-
- virtual const char *NOT_A_SPELL_CASTER() = 0;
- virtual const char *SPELLS_LEARNED_ALL() = 0;
- virtual const char *SPELLS_FOR() = 0;
- virtual const char *SPELL_LINES_0_TO_9() = 0;
- virtual const char *SPELLS_DIALOG_SPELLS() = 0;
- virtual const char *SPELL_PTS() = 0;
- virtual const char *GOLD() = 0;
- virtual const char *SPELL_INFO() = 0;
- virtual const char *SPELL_PURCHASE() = 0;
- virtual const char *MAP_TEXT() = 0;
- virtual const char *LIGHT_COUNT_TEXT() = 0;
- virtual const char *FIRE_RESISTENCE_TEXT() = 0;
- virtual const char *ELECRICITY_RESISTENCE_TEXT() = 0;
- virtual const char *COLD_RESISTENCE_TEXT() = 0;
- virtual const char *POISON_RESISTENCE_TEXT() = 0;
- virtual const char *CLAIRVOYANCE_TEXT() = 0;
- virtual const char *LEVITATE_TEXT() = 0;
- virtual const char *WALK_ON_WATER_TEXT() = 0;
- virtual const char *GAME_INFORMATION() = 0;
- virtual const char *WORLD_GAME_TEXT() = 0;
- virtual const char *DARKSIDE_GAME_TEXT() = 0;
- virtual const char *CLOUDS_GAME_TEXT() = 0;
- virtual const char *SWORDS_GAME_TEXT() = 0;
- virtual const char **WEEK_DAY_STRINGS() = 0;
- virtual const char *CHARACTER_DETAILS() = 0;
- virtual const char **DAYS() = 0;
- virtual const char *PARTY_GOLD() = 0;
- virtual const char *PLUS_14() = 0;
- virtual const char *CHARACTER_TEMPLATE() = 0;
- virtual const char *EXCHANGING_IN_COMBAT() = 0;
- virtual const char *CURRENT_MAXIMUM_RATING_TEXT() = 0;
- virtual const char *CURRENT_MAXIMUM_TEXT() = 0;
- virtual const char **RATING_TEXT() = 0;
- virtual const char *AGE_TEXT() = 0;
- virtual const char *LEVEL_TEXT() = 0;
- virtual const char *RESISTENCES_TEXT() = 0;
- virtual const char *NONE() = 0;
- virtual const char *EXPERIENCE_TEXT() = 0;
- virtual const char *ELIGIBLE() = 0;
- virtual const char *IN_PARTY_IN_BANK() = 0;
- virtual const char *FOOD_TEXT() = 0;
- virtual const char *EXCHANGE_WITH_WHOM() = 0;
- virtual const char *QUICK_REF_LINE() = 0;
- virtual const char *QUICK_REFERENCE() = 0;
-
- const int BLACKSMITH_MAP_IDS[2][4] = { { 28, 30, 73, 49 }, { 29, 31, 37, 43 } };
-
- virtual const char *ITEMS_DIALOG_TEXT1() = 0;
- virtual const char *ITEMS_DIALOG_TEXT2() = 0;
- virtual const char *ITEMS_DIALOG_LINE1() = 0;
- virtual const char *ITEMS_DIALOG_LINE2() = 0;
- virtual const char *BTN_BUY() = 0;
- virtual const char *BTN_SELL() = 0;
- virtual const char *BTN_IDENTIFY() = 0;
- virtual const char *BTN_FIX() = 0;
- virtual const char *BTN_USE() = 0;
- virtual const char *BTN_EQUIP() = 0;
- virtual const char *BTN_REMOVE() = 0;
- virtual const char *BTN_DISCARD() = 0;
- virtual const char *BTN_QUEST() = 0;
- virtual const char *BTN_ENCHANT() = 0;
- virtual const char *BTN_RECHARGE() = 0;
- virtual const char *BTN_GOLD() = 0;
- virtual const char *ITEM_BROKEN() = 0;
- virtual const char *ITEM_CURSED() = 0;
- virtual const char *ITEM_OF() = 0;
- virtual const char **BONUS_NAMES() = 0;
- virtual const char **WEAPON_NAMES() = 0;
- virtual const char **ARMOR_NAMES() = 0;
- virtual const char **ACCESSORY_NAMES() = 0;
- virtual const char **MISC_NAMES() = 0;
- virtual const char **SPECIAL_NAMES() = 0;
- virtual const char **ELEMENTAL_NAMES() = 0;
- virtual const char **ATTRIBUTE_NAMES() = 0;
- virtual const char **EFFECTIVENESS_NAMES() = 0;
- virtual const char **QUEST_ITEM_NAMES() = 0;
- virtual const char **QUEST_ITEM_NAMES_SWORDS() = 0;
-
- const int WEAPON_BASE_COSTS[35] = {
- 0, 50, 15, 100, 80, 40, 60, 1, 10, 150, 30, 60, 8, 50,
- 100, 15, 30, 15, 200, 80, 250, 150, 400, 100, 40, 120,
- 300, 100, 200, 300, 25, 100, 50, 15, 0
- };
- const int ARMOR_BASE_COSTS[14] = {
- 0, 20, 100, 200, 400, 600, 1000, 2000, 100, 60, 40, 250, 200, 100
- };
- const int ACCESSORY_BASE_COSTS[11] = {
- 0, 100, 100, 250, 100, 50, 300, 200, 500, 1000, 2000
- };
- const int MISC_MATERIAL_COSTS[22] = {
- 0, 50, 1000, 500, 10, 100, 20, 10, 50, 10, 10, 100,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
- };
- const int MISC_BASE_COSTS[76] = {
- 0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100, 100, 100, 100, 200, 200, 200, 200, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 200, 300, 300, 300, 300, 300,
- 300, 300, 300, 300, 300, 400, 400, 400, 400, 400, 400, 400,
- 400, 400, 400, 500, 500, 500, 500, 500, 500, 500, 500, 500,
- 500, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
- 600, 600, 600, 600
- };
- const int METAL_BASE_MULTIPLIERS[22] = {
- 10, 25, 5, 75, 2, 5, 10, 20, 50, 2, 3, 5, 10, 20, 30, 40,
- 50, 60, 70, 80, 90, 100
- };
- const int ITEM_SKILL_DIVISORS[4] = { 1, 2, 100, 10 };
-
- const int RESTRICTION_OFFSETS[4] = { 0, 35, 49, 60 };
-
- const int ITEM_RESTRICTIONS[86] = {
- 0, 86, 86, 86, 86, 86, 86, 0, 6, 239, 239, 239, 2, 4, 4, 4, 4,
- 6, 70, 70, 70, 70, 94, 70, 0, 4, 239, 86, 86, 86, 70, 70, 70, 70,
- 0, 0, 0, 68, 100, 116, 125, 255, 255, 85, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- };
-
- virtual const char *NOT_PROFICIENT() = 0;
- virtual const char *NO_ITEMS_AVAILABLE() = 0;
- virtual const char **CATEGORY_NAMES() = 0;
- virtual const char *X_FOR_THE_Y() = 0;
- virtual const char *X_FOR_Y() = 0;
- virtual const char *X_FOR_Y_GOLD() = 0;
- virtual const char *FMT_CHARGES() = 0;
- virtual const char *AVAILABLE_GOLD_COST() = 0;
- virtual const char *CHARGES() = 0;
- virtual const char *COST() = 0;
- virtual const char **ITEM_ACTIONS() = 0;
- virtual const char *WHICH_ITEM() = 0;
- virtual const char *WHATS_YOUR_HURRY() = 0;
- virtual const char *USE_ITEM_IN_COMBAT() = 0;
- virtual const char *NO_SPECIAL_ABILITIES() = 0;
- virtual const char *CANT_CAST_WHILE_ENGAGED() = 0;
- virtual const char *EQUIPPED_ALL_YOU_CAN() = 0;
- virtual const char *REMOVE_X_TO_EQUIP_Y() = 0;
- virtual const char *RING() = 0;
- virtual const char *MEDAL() = 0;
- virtual const char *CANNOT_REMOVE_CURSED_ITEM() = 0;
- virtual const char *CANNOT_DISCARD_CURSED_ITEM() = 0;
- virtual const char *PERMANENTLY_DISCARD() = 0;
- virtual const char *BACKPACK_IS_FULL() = 0;
- virtual const char **CATEGORY_BACKPACK_IS_FULL() = 0;
- virtual const char *BUY_X_FOR_Y_GOLD() = 0;
- virtual const char *SELL_X_FOR_Y_GOLD() = 0;
- virtual const char **SELL_X_FOR_Y_GOLD_ENDINGS() = 0;
- virtual const char *NO_NEED_OF_THIS() = 0;
- virtual const char *NOT_RECHARGABLE() = 0;
- virtual const char *NOT_ENCHANTABLE() = 0;
- virtual const char *SPELL_FAILED() = 0;
- virtual const char *ITEM_NOT_BROKEN() = 0;
- virtual const char **FIX_IDENTIFY() = 0;
- virtual const char *FIX_IDENTIFY_GOLD() = 0;
- virtual const char *IDENTIFY_ITEM_MSG() = 0;
- virtual const char *ITEM_DETAILS() = 0;
- virtual const char *ALL() = 0;
- virtual const char *FIELD_NONE() = 0;
- virtual const char *DAMAGE_X_TO_Y() = 0;
- virtual const char *ELEMENTAL_XY_DAMAGE() = 0;
- virtual const char *ATTR_XY_BONUS() = 0;
- virtual const char *EFFECTIVE_AGAINST() = 0;
- virtual const char *QUESTS_DIALOG_TEXT() = 0;
- virtual const char *CLOUDS_OF_XEEN_LINE() = 0;
- virtual const char *DARKSIDE_OF_XEEN_LINE() = 0;
- virtual const char *SWORDS_OF_XEEN_LINE() = 0;
- virtual const char *NO_QUEST_ITEMS() = 0;
- virtual const char *NO_CURRENT_QUESTS() = 0;
- virtual const char *NO_AUTO_NOTES() = 0;
- virtual const char *QUEST_ITEMS_DATA() = 0;
- virtual const char *CURRENT_QUESTS_DATA() = 0;
- virtual const char *AUTO_NOTES_DATA() = 0;
- virtual const char *REST_COMPLETE() = 0;
- virtual const char *PARTY_IS_STARVING() = 0;
- virtual const char *HIT_SPELL_POINTS_RESTORED() = 0;
- virtual const char *TOO_DANGEROUS_TO_REST() = 0;
- virtual const char *SOME_CHARS_MAY_DIE() = 0;
- virtual const char *DISMISS_WHOM() = 0;
- virtual const char *CANT_DISMISS_LAST_CHAR() = 0;
- virtual const char *DELETE_CHAR_WITH_ELDER_WEAPON() = 0;
- virtual const char **REMOVE_DELETE() = 0;
- virtual const char *REMOVE_OR_DELETE_WHICH() = 0;
- virtual const char *YOUR_PARTY_IS_FULL() = 0;
- virtual const char *HAS_SLAYER_SWORD() = 0;
- virtual const char *SURE_TO_DELETE_CHAR() = 0;
- virtual const char *CREATE_CHAR_DETAILS() = 0;
- virtual const char *NEW_CHAR_STATS() = 0;
- virtual const char *NAME_FOR_NEW_CHARACTER() = 0;
- virtual const char *SELECT_CLASS_BEFORE_SAVING() = 0;
- virtual const char *EXCHANGE_ATTR_WITH() = 0;
-
- const int NEW_CHAR_SKILLS[10] = { 1, 5, -1, -1, 4, 0, 0, -1, 6, 11 };
- const int NEW_CHAR_SKILLS_OFFSET[10] = { 0, 0, 0, 5, 0, 0, 0, 0, 0, 0 };
- const int NEW_CHAR_SKILLS_LEN[10] = { 11, 8, 0, 0, 12, 8, 8, 0, 9, 11 };
- const int NEW_CHAR_RACE_SKILLS[10] = { 14, -1, 17, 16, -1, 0, 0, 0, 0, 0 };
-
- const int RACE_MAGIC_RESISTENCES[5] = { 7, 5, 20, 0, 0 };
- const int RACE_FIRE_RESISTENCES[5] = { 7, 0, 2, 5, 10 };
- const int RACE_ELECTRIC_RESISTENCES[5] = { 7, 0, 2, 5, 10 };
- const int RACE_COLD_RESISTENCES[5] = { 7, 0, 2, 5, 10 };
- const int RACE_ENERGY_RESISTENCES[5] = { 7, 5, 2, 5, 0 };
- const int RACE_POISON_RESISTENCES[5] = { 7, 0, 2, 20, 0 };
- const int NEW_CHARACTER_SPELLS[10][4] = {
- { -1, -1, -1, -1 },
- { 21, -1, -1, -1 },
- { 22, -1, -1, -1 },
- { 21, 1, 14, -1 },
- { 22, 0, 25, -1 },
- { -1, -1, -1, -1 },
- { -1, -1, -1, -1 },
- { -1, -1, -1, -1 },
- { 20, 1, 11, 23 },
- { 20, 1, -1, -1 }
- };
-
- virtual const char *COMBAT_DETAILS() = 0;
- virtual const char *NOT_ENOUGH_TO_CAST() = 0;
- virtual const char **SPELL_CAST_COMPONENTS() = 0;
- virtual const char *CAST_SPELL_DETAILS() = 0;
- virtual const char *PARTY_FOUND() = 0;
- virtual const char *BACKPACKS_FULL_PRESS_KEY() = 0;
- virtual const char *HIT_A_KEY() = 0;
- virtual const char *GIVE_TREASURE_FORMATTING() = 0;
- virtual const char *X_FOUND_Y() = 0;
- virtual const char *ON_WHO() = 0;
- virtual const char *WHICH_ELEMENT1() = 0;
- virtual const char *WHICH_ELEMENT2() = 0;
- virtual const char *DETECT_MONSTERS() = 0;
- virtual const char *LLOYDS_BEACON() = 0;
- virtual const char *HOW_MANY_SQUARES() = 0;
- virtual const char *TOWN_PORTAL() = 0;
- virtual const char *TOWN_PORTAL_SWORDS() = 0;
-
- const int TOWN_MAP_NUMBERS[3][5] = {
- { 28, 29, 30, 31, 32 }, { 29, 31, 33, 35, 37 }, { 53, 92, 63, 0, 0 }
- };
-
- virtual const char *MONSTER_DETAILS() = 0;
- virtual const char **MONSTER_SPECIAL_ATTACKS() = 0;
- virtual const char *IDENTIFY_MONSTERS() = 0;
-
- const char *const EVENT_SAMPLES[6] = {
- "ahh.voc", "whereto.voc", "gulp.voc", "null.voc", "scream.voc", "laff1.voc"
- };
-
- virtual const char *MOONS_NOT_ALIGNED() = 0;
- virtual const char *AWARDS_FOR() = 0;
- virtual const char *AWARDS_TEXT() = 0;
- virtual const char *NO_AWARDS() = 0;
- virtual const char *WARZONE_BATTLE_MASTER() = 0;
- virtual const char *WARZONE_MAXED() = 0;
- virtual const char *WARZONE_LEVEL() = 0;
- virtual const char *WARZONE_HOW_MANY() = 0;
- virtual const char *PICKS_THE_LOCK() = 0;
- virtual const char *UNABLE_TO_PICK_LOCK() = 0;
- virtual const char *CONTROL_PANEL_TEXT() = 0;
- virtual const char *CONTROL_PANEL_BUTTONS() = 0;
- virtual const char *ON() = 0;
- virtual const char *OFF() = 0;
- virtual const char *CONFIRM_QUIT() = 0;
- virtual const char *MR_WIZARD() = 0;
- virtual const char *NO_LOADING_IN_COMBAT() = 0;
- virtual const char *NO_SAVING_IN_COMBAT() = 0;
- virtual const char *QUICK_FIGHT_TEXT() = 0;
- virtual const char **QUICK_FIGHT_OPTIONS() = 0;
- virtual const char **WORLD_END_TEXT() = 0;
- virtual const char *WORLD_CONGRATULATIONS() = 0;
- virtual const char *WORLD_CONGRATULATIONS2() = 0;
- virtual const char *CLOUDS_CONGRATULATIONS1() = 0;
- virtual const char *CLOUDS_CONGRATULATIONS2() = 0;
- virtual const char **GOOBER() = 0;
-
- const char *const MUSIC_FILES1[5] = {
- "outdoors.m", "town.m", "cavern.m", "dungeon.m", "castle.m"
- };
-
- const char *const MUSIC_FILES2[6][7] = {
- { "outday1.m", "outday2.m", "outday4.m", "outnght1.m",
- "outnght2.m", "outnght4.m", "daydesrt.m" },
- { "townday1.m", "twnwlk.m", "newbrigh.m", "twnnitea.m",
- "twnniteb.m", "twnwlk.m", "townday1.m" },
- { "cavern1.m", "cavern2.m", "cavern3a.m", "cavern1.m",
- "cavern2.m", "cavern3a.m", "cavern1.m" },
- { "dngon1.m", "dngon2.m", "dngon3.m", "dngon1.m",
- "dngon2.m", "dngon3.m", "dngon1.m" },
- { "cstl1rev.m", "cstl2rev.m", "cstl3rev.m", "cstl1rev.m",
- "cstl2rev.m", "cstl3rev.m", "cstl1rev.m" },
- { "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m" }
- };
-
- virtual const char *DIFFICULTY_TEXT() = 0;
- virtual const char *SAVE_OFF_LIMITS() = 0;
- virtual const char *CLOUDS_INTRO1() = 0;
- virtual const char *DARKSIDE_ENDING1() = 0;
- virtual const char *DARKSIDE_ENDING2() = 0;
- virtual const char *PHAROAH_ENDING_TEXT1() = 0;
- virtual const char *PHAROAH_ENDING_TEXT2() = 0;
-
- void writeConstants(Common::String num, CCArchive &cc) {
- Common::MemFile file;
- file.syncString(CLOUDS_CREDITS());
- file.syncString(DARK_SIDE_CREDITS());
- file.syncString(SWORDS_CREDITS1());
- file.syncString(SWORDS_CREDITS2());
- file.syncString(OPTIONS_MENU());
- file.syncStrings(GAME_NAMES(), 3);
- delete[] _gameNames;
- _gameNames = NULL;
- file.syncString(THE_PARTY_NEEDS_REST());
- file.syncString(WHO_WILL());
- file.syncString(HOW_MUCH());
- file.syncString(WHATS_THE_PASSWORD());
- file.syncString(PASSWORD_INCORRECT());
- file.syncString(IN_NO_CONDITION());
- file.syncString(NOTHING_HERE());
- file.syncStrings(TERRAIN_TYPES, 6);
- file.syncStrings(OUTDOORS_WALL_TYPES, 16);
- file.syncStrings(SURFACE_NAMES, 16);
- file.syncStrings(WHO_ACTIONS(), 32);
- delete[] _whoActions;
- _whoActions = NULL;
- file.syncStrings(WHO_WILL_ACTIONS(), 4);
- delete[] _whoWillActions;
- _whoWillActions = NULL;
- file.syncBytes2D((const byte *)SYMBOLS, 20, 64);
- file.syncBytes2D((const byte *)TEXT_COLORS, 40, 4);
- file.syncBytes2D((const byte *)TEXT_COLORS_STARTUP, 40, 4);
- file.syncStrings(DIRECTION_TEXT_UPPER(), 4);
- delete[] _directionTextUpper;
- _directionTextUpper = NULL;
- file.syncStrings(DIRECTION_TEXT(), 4);
- delete[] _directionText;
- _directionText = NULL;
- file.syncStrings(RACE_NAMES(), 5);
- delete[] _raceNames;
- _raceNames = NULL;
- file.syncNumbers(RACE_HP_BONUSES, 5);
- file.syncNumbers2D((const int *)RACE_SP_BONUSES, 5, 2);
- file.syncStrings(CLASS_NAMES(), 11);
- delete[] _classNames;
- _classNames = NULL;
- file.syncNumbers(CLASS_EXP_LEVELS, 10);
- file.syncStrings(ALIGNMENT_NAMES(), 3);
- delete[] _alignmentNames;
- _alignmentNames = NULL;
- file.syncStrings(SEX_NAMES(), 2);
- delete[] _sexNames;
- _sexNames = NULL;
- file.syncStrings(SKILL_NAMES(), 18);
- delete[] _skillNames;
- _skillNames = NULL;
- file.syncStrings(CONDITION_NAMES(), 17);
- delete[] _conditionNames;
- _conditionNames = NULL;
- file.syncNumbers(CONDITION_COLORS, 17);
- file.syncString(GOOD());
- file.syncString(BLESSED());
- file.syncString(POWER_SHIELD());
- file.syncString(HOLY_BONUS());
- file.syncString(HEROISM());
- file.syncString(IN_PARTY());
- file.syncString(PARTY_DETAILS());
- file.syncString(PARTY_DIALOG_TEXT());
- file.syncNumbers(FACE_CONDITION_FRAMES, 17);
- file.syncNumbers(CHAR_FACES_X, 6);
- file.syncNumbers(HP_BARS_X, 6);
- file.syncString(NO_ONE_TO_ADVENTURE_WITH());
- file.syncBytes2D((const byte *)DARKNESS_XLAT, 3, 256);
- file.syncString(YOUR_ROSTER_IS_FULL());
- file.syncString(PLEASE_WAIT());
- file.syncString(OOPS());
- file.syncNumbers2D((const int *)SCREEN_POSITIONING_X, 4, 48);
- file.syncNumbers2D((const int *)SCREEN_POSITIONING_Y, 4, 48);
- file.syncNumbers(MONSTER_GRID_BITMASK, 12);
- file.syncNumbers2D((const int *)INDOOR_OBJECT_X, 2, 12);
- file.syncNumbers2D((const int *)MAP_OBJECT_Y, 2, 12);
- file.syncNumbers(INDOOR_MONSTERS_Y, 4);
- file.syncNumbers2D((const int *)OUTDOOR_OBJECT_X, 2, 12);
- file.syncNumbers(OUTDOOR_MONSTER_INDEXES, 26);
- file.syncNumbers(OUTDOOR_MONSTERS_Y, 26);
- file.syncNumbers2D((const int *)DIRECTION_ANIM_POSITIONS, 4, 4);
- file.syncBytes2D((const byte *)WALL_SHIFTS, 4, 48);
- file.syncNumbers(DRAW_NUMBERS, 25);
- file.syncNumbers2D((const int *)DRAW_FRAMES, 25, 2);
- file.syncNumbers(COMBAT_FLOAT_X, 8);
- file.syncNumbers(COMBAT_FLOAT_Y, 8);
- file.syncNumbers2D((const int *)MONSTER_EFFECT_FLAGS, 15, 8);
- file.syncNumbers2D((const int *)SPELLS_ALLOWED, 3, 40);
- file.syncNumbers(BASE_HP_BY_CLASS, 10);
- file.syncNumbers(AGE_RANGES, 10);
- file.syncNumbers2D((const int *)AGE_RANGES_ADJUST, 2, 10);
- file.syncNumbers(STAT_VALUES, 24);
- file.syncNumbers(STAT_BONUSES, 24);
- file.syncNumbers(ELEMENTAL_CATEGORIES, 6);
- file.syncNumbers(ATTRIBUTE_CATEGORIES, 10);
- file.syncNumbers(ATTRIBUTE_BONUSES, 72);
- file.syncNumbers(ELEMENTAL_RESISTENCES, 37);
- file.syncNumbers(ELEMENTAL_DAMAGE, 37);
- file.syncNumbers(WEAPON_DAMAGE_BASE, 35);
- file.syncNumbers(WEAPON_DAMAGE_MULTIPLIER, 35);
- file.syncNumbers(METAL_DAMAGE, 22);
- file.syncNumbers(METAL_DAMAGE_PERCENT, 22);
- file.syncNumbers(METAL_LAC, 22);
- file.syncNumbers(ARMOR_STRENGTHS, 14);
- file.syncNumbers(MAKE_ITEM_ARR1, 6);
- file.syncNumbers3D((const int *)MAKE_ITEM_ARR2, 6, 7, 2);
- file.syncNumbers3D((const int *)MAKE_ITEM_ARR3, 10, 7, 2);
- file.syncNumbers3D((const int *)MAKE_ITEM_ARR4, 2, 7, 2);
- file.syncNumbers2D((const int *)MAKE_ITEM_ARR5, 8, 2);
- file.syncNumbers(OUTDOOR_DRAWSTRUCT_INDEXES, 44);
- file.syncNumbers2D((const int *)TOWN_MAXES, 2, 11);
- file.syncStrings2D((const char *const *)TOWN_ACTION_MUSIC, 2, 7);
- file.syncStrings(TOWN_ACTION_SHAPES, 7);
- file.syncNumbers2D((const int *)TOWN_ACTION_FILES, 2, 7);
- file.syncString(BANK_TEXT());
- file.syncString(BLACKSMITH_TEXT());
- file.syncString(GUILD_NOT_MEMBER_TEXT());
- file.syncString(GUILD_TEXT());
- file.syncString(TAVERN_TEXT());
- file.syncString(GOOD_STUFF());
- file.syncString(HAVE_A_DRINK());
- file.syncString(YOURE_DRUNK());
- file.syncNumbers4D((const int *)TAVERN_EXIT_LIST, 2, 6, 5, 2);
- file.syncString(FOOD_AND_DRINK());
- file.syncString(TEMPLE_TEXT());
- file.syncString(EXPERIENCE_FOR_LEVEL());
- file.syncString(TRAINING_LEARNED_ALL());
- file.syncString(ELIGIBLE_FOR_LEVEL());
- file.syncString(TRAINING_TEXT());
- file.syncString(GOLD_GEMS());
- file.syncString(GOLD_GEMS_2());
- file.syncStrings(DEPOSIT_WITHDRAWL(), 2);
- delete[] _depositWithdrawl;
- _depositWithdrawl = NULL;
- file.syncString(NOT_ENOUGH_X_IN_THE_Y());
- file.syncString(NO_X_IN_THE_Y());
- file.syncStrings(STAT_NAMES(), 16);
- delete[] _statNames;
- _statNames = NULL;
- file.syncStrings(CONSUMABLE_NAMES(), 4);
- delete[] _consumableNames;
- _consumableNames = NULL;
- file.syncStrings(WHERE_NAMES(), 2);
- delete[] _whereNames;
- _whereNames = NULL;
- file.syncString(AMOUNT());
- file.syncString(FOOD_PACKS_FULL());
- file.syncString(BUY_SPELLS());
- file.syncString(GUILD_OPTIONS());
- file.syncNumbers((const int *)MISC_SPELL_INDEX, 74);
- file.syncNumbers((const int *)SPELL_COSTS, 77);
- file.syncNumbers2D((const int *)CLOUDS_GUILD_SPELLS, 5, 20);
- file.syncNumbers2D((const int *)DARK_SPELL_OFFSETS, 3, 39);
- file.syncNumbers2D((const int *)DARK_SPELL_RANGES, 12, 2);
- file.syncNumbers2D((const int *)SWORDS_SPELL_RANGES, 12, 2);
- file.syncNumbers((const int *)SPELL_GEM_COST, 77);
- file.syncString(NOT_A_SPELL_CASTER());
- file.syncString(SPELLS_LEARNED_ALL());
- file.syncString(SPELLS_FOR());
- file.syncString(SPELL_LINES_0_TO_9());
- file.syncString(SPELLS_DIALOG_SPELLS());
- file.syncString(SPELL_PTS());
- file.syncString(GOLD());
- file.syncString(SPELL_INFO());
- file.syncString(SPELL_PURCHASE());
- file.syncString(MAP_TEXT());
- file.syncString(LIGHT_COUNT_TEXT());
- file.syncString(FIRE_RESISTENCE_TEXT());
- file.syncString(ELECRICITY_RESISTENCE_TEXT());
- file.syncString(COLD_RESISTENCE_TEXT());
- file.syncString(POISON_RESISTENCE_TEXT());
- file.syncString(CLAIRVOYANCE_TEXT());
- file.syncString(LEVITATE_TEXT());
- file.syncString(WALK_ON_WATER_TEXT());
- file.syncString(GAME_INFORMATION());
- file.syncString(WORLD_GAME_TEXT());
- file.syncString(DARKSIDE_GAME_TEXT());
- file.syncString(CLOUDS_GAME_TEXT());
- file.syncString(SWORDS_GAME_TEXT());
- file.syncStrings(WEEK_DAY_STRINGS(), 10);
- delete[] _weekDayStrings;
- _weekDayStrings = NULL;
- file.syncString(CHARACTER_DETAILS());
- file.syncStrings(DAYS(), 3);
- file.syncString(PARTY_GOLD());
- file.syncString(PLUS_14());
- file.syncString(CHARACTER_TEMPLATE());
- file.syncString(EXCHANGING_IN_COMBAT());
- file.syncString(CURRENT_MAXIMUM_RATING_TEXT());
- file.syncString(CURRENT_MAXIMUM_TEXT());
- file.syncStrings(RATING_TEXT(), 24);
- delete[] _ratingText;
- _ratingText = NULL;
- file.syncString(AGE_TEXT());
- file.syncString(LEVEL_TEXT());
- file.syncString(RESISTENCES_TEXT());
- file.syncString(NONE());
- file.syncString(EXPERIENCE_TEXT());
- file.syncString(ELIGIBLE());
- file.syncString(IN_PARTY_IN_BANK());
- file.syncString(FOOD_TEXT());
- file.syncString(EXCHANGE_WITH_WHOM());
- file.syncString(QUICK_REF_LINE());
- file.syncString(QUICK_REFERENCE());
- file.syncNumbers2D((const int *)BLACKSMITH_MAP_IDS, 2, 4);
- file.syncString(ITEMS_DIALOG_TEXT1());
- file.syncString(ITEMS_DIALOG_TEXT2());
- file.syncString(ITEMS_DIALOG_LINE1());
- file.syncString(ITEMS_DIALOG_LINE2());
- file.syncString(BTN_BUY());
- file.syncString(BTN_SELL());
- file.syncString(BTN_IDENTIFY());
- file.syncString(BTN_FIX());
- file.syncString(BTN_USE());
- file.syncString(BTN_EQUIP());
- file.syncString(BTN_REMOVE());
- file.syncString(BTN_DISCARD());
- file.syncString(BTN_QUEST());
- file.syncString(BTN_ENCHANT());
- file.syncString(BTN_RECHARGE());
- file.syncString(BTN_GOLD());
- file.syncString(ITEM_BROKEN());
- file.syncString(ITEM_CURSED());
- file.syncString(ITEM_OF());
- file.syncStrings(BONUS_NAMES(), 7);
- delete[] _bonusNames;
- _bonusNames = NULL;
- file.syncStrings(WEAPON_NAMES(), 41);
- delete[] _weaponNames;
- _weaponNames = NULL;
- file.syncStrings(ARMOR_NAMES(), 14);
- delete[] _armorNames;
- _armorNames = NULL;
- file.syncStrings(ACCESSORY_NAMES(), 11);
- delete[] _accessoryNames;
- _accessoryNames = NULL;
- file.syncStrings(MISC_NAMES(), 22);
- delete[] _miscNames;
- _miscNames = NULL;
- file.syncStrings(SPECIAL_NAMES(), 74);
- delete[] _specialNames;
- _specialNames = NULL;
- file.syncStrings(ELEMENTAL_NAMES(), 6);
- delete[] _elementalNames;
- _elementalNames = NULL;
- file.syncStrings(ATTRIBUTE_NAMES(), 10);
- delete[] _attributeNames;
- _attributeNames = NULL;
- file.syncStrings(EFFECTIVENESS_NAMES(), 7);
- delete[] _effectivenessNames;
- _effectivenessNames = NULL;
- file.syncStrings(QUEST_ITEM_NAMES(), 85);
- delete[] _questItemNames;
- _questItemNames = NULL;
- file.syncStrings(QUEST_ITEM_NAMES_SWORDS(), 51);
- delete[] _questItemNamesSwords;
- _questItemNamesSwords = NULL;
- file.syncNumbers((const int *)WEAPON_BASE_COSTS, 35);
- file.syncNumbers((const int *)ARMOR_BASE_COSTS, 14);
- file.syncNumbers((const int *)ACCESSORY_BASE_COSTS, 11);
- file.syncNumbers((const int *)MISC_MATERIAL_COSTS, 22);
- file.syncNumbers((const int *)MISC_BASE_COSTS, 76);
- file.syncNumbers((const int *)METAL_BASE_MULTIPLIERS, 22);
- file.syncNumbers((const int *)ITEM_SKILL_DIVISORS, 4);
- file.syncNumbers((const int *)RESTRICTION_OFFSETS, 4);
- file.syncNumbers((const int *)ITEM_RESTRICTIONS, 86);
- file.syncString(NOT_PROFICIENT());
- file.syncString(NO_ITEMS_AVAILABLE());
- file.syncStrings(CATEGORY_NAMES(), 4);
- delete[] _categoryNames;
- _categoryNames = NULL;
- file.syncString(X_FOR_THE_Y());
- file.syncString(X_FOR_Y());
- file.syncString(X_FOR_Y_GOLD());
- file.syncString(FMT_CHARGES());
- file.syncString(AVAILABLE_GOLD_COST());
- file.syncString(CHARGES());
- file.syncString(COST());
- file.syncStrings(ITEM_ACTIONS(), 7);
- delete[] _itemActions;
- _itemActions = NULL;
- file.syncString(WHICH_ITEM());
- file.syncString(WHATS_YOUR_HURRY());
- file.syncString(USE_ITEM_IN_COMBAT());
- file.syncString(NO_SPECIAL_ABILITIES());
- file.syncString(CANT_CAST_WHILE_ENGAGED());
- file.syncString(EQUIPPED_ALL_YOU_CAN());
- file.syncString(REMOVE_X_TO_EQUIP_Y());
- file.syncString(RING());
- file.syncString(MEDAL());
- file.syncString(CANNOT_REMOVE_CURSED_ITEM());
- file.syncString(CANNOT_DISCARD_CURSED_ITEM());
- file.syncString(PERMANENTLY_DISCARD());
- file.syncString(BACKPACK_IS_FULL());
- file.syncStrings(CATEGORY_BACKPACK_IS_FULL(), 4);
- file.syncString(BUY_X_FOR_Y_GOLD());
- file.syncString(SELL_X_FOR_Y_GOLD());
- file.syncStrings(SELL_X_FOR_Y_GOLD_ENDINGS(), 2);
- delete[] _sellXForYGoldEndings;
- _sellXForYGoldEndings = NULL;
- file.syncString(NO_NEED_OF_THIS());
- file.syncString(NOT_RECHARGABLE());
- file.syncString(SPELL_FAILED());
- file.syncString(NOT_ENCHANTABLE());
- file.syncString(ITEM_NOT_BROKEN());
- file.syncStrings(FIX_IDENTIFY(), 2);
- delete[] _fixIdentify;
- _fixIdentify = NULL;
- file.syncString(FIX_IDENTIFY_GOLD());
- file.syncString(IDENTIFY_ITEM_MSG());
- file.syncString(ITEM_DETAILS());
- file.syncString(ALL());
- file.syncString(FIELD_NONE());
- file.syncString(DAMAGE_X_TO_Y());
- file.syncString(ELEMENTAL_XY_DAMAGE());
- file.syncString(ATTR_XY_BONUS());
- file.syncString(EFFECTIVE_AGAINST());
- file.syncString(QUESTS_DIALOG_TEXT());
- file.syncString(CLOUDS_OF_XEEN_LINE());
- file.syncString(DARKSIDE_OF_XEEN_LINE());
- file.syncString(SWORDS_OF_XEEN_LINE());
- file.syncString(NO_QUEST_ITEMS());
- file.syncString(NO_CURRENT_QUESTS());
- file.syncString(NO_AUTO_NOTES());
- file.syncString(QUEST_ITEMS_DATA());
- file.syncString(CURRENT_QUESTS_DATA());
- file.syncString(AUTO_NOTES_DATA());
- file.syncString(REST_COMPLETE());
- file.syncString(PARTY_IS_STARVING());
- file.syncString(HIT_SPELL_POINTS_RESTORED());
- file.syncString(TOO_DANGEROUS_TO_REST());
- file.syncString(SOME_CHARS_MAY_DIE());
- file.syncString(DISMISS_WHOM());
- file.syncString(CANT_DISMISS_LAST_CHAR());
- file.syncString(DELETE_CHAR_WITH_ELDER_WEAPON());
- file.syncStrings(REMOVE_DELETE(), 2);
- delete[] _removeDelete;
- _removeDelete = NULL;
- file.syncString(REMOVE_OR_DELETE_WHICH());
- file.syncString(YOUR_PARTY_IS_FULL());
- file.syncString(HAS_SLAYER_SWORD());
- file.syncString(SURE_TO_DELETE_CHAR());
- file.syncString(CREATE_CHAR_DETAILS());
- file.syncString(NEW_CHAR_STATS());
- file.syncString(NAME_FOR_NEW_CHARACTER());
- file.syncString(SELECT_CLASS_BEFORE_SAVING());
- file.syncString(EXCHANGE_ATTR_WITH());
- file.syncNumbers((const int *)NEW_CHAR_SKILLS, 10);
- file.syncNumbers((const int *)NEW_CHAR_SKILLS_OFFSET, 10);
- file.syncNumbers((const int *)NEW_CHAR_SKILLS_LEN, 10);
- file.syncNumbers((const int *)NEW_CHAR_RACE_SKILLS, 10);
- file.syncNumbers((const int *)RACE_MAGIC_RESISTENCES, 5);
- file.syncNumbers((const int *)RACE_FIRE_RESISTENCES, 5);
- file.syncNumbers((const int *)RACE_ELECTRIC_RESISTENCES, 5);
- file.syncNumbers((const int *)RACE_COLD_RESISTENCES, 5);
- file.syncNumbers((const int *)RACE_ENERGY_RESISTENCES, 5);
- file.syncNumbers((const int *)RACE_POISON_RESISTENCES, 5);
- file.syncNumbers2D((const int *)NEW_CHARACTER_SPELLS, 10, 4);
- file.syncString(COMBAT_DETAILS());
- file.syncString(NOT_ENOUGH_TO_CAST());
- file.syncStrings(SPELL_CAST_COMPONENTS(), 2);
- delete[] _spellCastComponents;
- _spellCastComponents = NULL;
- file.syncString(CAST_SPELL_DETAILS());
- file.syncString(PARTY_FOUND());
- file.syncString(BACKPACKS_FULL_PRESS_KEY());
- file.syncString(HIT_A_KEY());
- file.syncString(GIVE_TREASURE_FORMATTING());
- file.syncString(X_FOUND_Y());
- file.syncString(ON_WHO());
- file.syncString(WHICH_ELEMENT1());
- file.syncString(WHICH_ELEMENT2());
- file.syncString(DETECT_MONSTERS());
- file.syncString(LLOYDS_BEACON());
- file.syncString(HOW_MANY_SQUARES());
- file.syncString(TOWN_PORTAL());
- file.syncString(TOWN_PORTAL_SWORDS());
- file.syncNumbers2D((const int *)TOWN_MAP_NUMBERS, 3, 5);
- file.syncString(MONSTER_DETAILS());
- file.syncStrings(MONSTER_SPECIAL_ATTACKS(), 23);
- delete[] _monsterSpecialAttacks;
- _monsterSpecialAttacks = NULL;
- file.syncString(IDENTIFY_MONSTERS());
- file.syncStrings(EVENT_SAMPLES, 6);
- file.syncString(MOONS_NOT_ALIGNED());
- file.syncString(AWARDS_FOR());
- file.syncString(AWARDS_TEXT());
- file.syncString(NO_AWARDS());
- file.syncString(WARZONE_BATTLE_MASTER());
- file.syncString(WARZONE_MAXED());
- file.syncString(WARZONE_LEVEL());
- file.syncString(WARZONE_HOW_MANY());
- file.syncString(PICKS_THE_LOCK());
- file.syncString(UNABLE_TO_PICK_LOCK());
- file.syncString(CONTROL_PANEL_TEXT());
- file.syncString(CONTROL_PANEL_BUTTONS());
- file.syncString(ON());
- file.syncString(OFF());
- file.syncString(CONFIRM_QUIT());
- file.syncString(MR_WIZARD());
- file.syncString(NO_LOADING_IN_COMBAT());
- file.syncString(NO_SAVING_IN_COMBAT());
- file.syncString(QUICK_FIGHT_TEXT());
- file.syncStrings(QUICK_FIGHT_OPTIONS(), 4);
- delete[] _quickFightOptions;
- _quickFightOptions = NULL;
- file.syncStrings(WORLD_END_TEXT(), 9);
- delete[] _worldEndText;
- _worldEndText = NULL;
- file.syncString(WORLD_CONGRATULATIONS());
- file.syncString(WORLD_CONGRATULATIONS2());
- file.syncString(CLOUDS_CONGRATULATIONS1());
- file.syncString(CLOUDS_CONGRATULATIONS2());
- file.syncStrings(GOOBER(), 3);
- delete[] _goober;
- _goober = NULL;
- file.syncStrings(MUSIC_FILES1, 5);
- file.syncStrings2D((const char* const *)MUSIC_FILES2, 6, 7);
- file.syncString(DIFFICULTY_TEXT());
- file.syncString(SAVE_OFF_LIMITS());
- file.syncString(CLOUDS_INTRO1());
- file.syncString(DARKSIDE_ENDING1());
- file.syncString(DARKSIDE_ENDING2());
- file.syncString(PHAROAH_ENDING_TEXT1());
- file.syncString(PHAROAH_ENDING_TEXT2());
-
- cc.add("CONSTANTS" + num, file);
- }
-};
-
-class EN : public LangConstants {
-public:
- const char *CLOUDS_CREDITS() {
- return "\v012\t000\x3"
- "c\f35Designed and Directed By:\n"
- "\f17Jon Van Caneghem\x3l\n"
- "\n"
- "\t025\f35Programming:\n"
- "\t035\f17Mark Caldwell\n"
- "\t035Dave Hathaway\n"
- "\n"
- "\t025\f35Sound System & FX:\n"
- "\t035\f17Todd Hendrix\n"
- "\n"
- "\t025\f35Music & Speech:\n"
- "\t035\f17Tim Tully\n"
- "\n"
- "\t025\f35Writing:\n"
- "\t035\f17Paul Rattner\n"
- "\t035Debbie Murphy\n"
- "\t035Jon Van Caneghem\v012\n"
- "\n"
- "\n"
- "\t180\f35Graphics:\n"
- "\t190\f17Louis Johnson\n"
- "\t190Jonathan P. Gwyn\n"
- "\t190Bonita Long-Hemsath\n"
- "\t190Julia Ulano\n"
- "\t190Ricardo Barrera\n"
- "\n"
- "\t180\f35Testing:\n"
- "\t190\f17Benjamin Bent\n"
- "\t190Mario Escamilla\n"
- "\t190Richard Espy\n"
- "\t190Scott McDaniel\n"
- "\t190Clayton Retzer\n"
- "\t190Michael Suarez\x3"
- "c";
- }
-
- const char *DARK_SIDE_CREDITS() {
- return "\v012\t000\x3"
- "c\f35Designed and Directed By:\n"
- "\f17Jon Van Caneghem\x3l\n"
- "\n"
- "\t025\f35Programming:\n"
- "\t035\f17Mark Caldwell\n"
- "\t035Dave Hathaway\n"
- "\n"
- "\t025\f35Sound System & FX:\n"
- "\t035\f17Mike Heilemann\n"
- "\n"
- "\t025\f35Music & Speech:\n"
- "\t035\f17Tim Tully\n"
- "\n"
- "\t025\f35Writing:\n"
- "\t035\f17Paul Rattner\n"
- "\t035Debbie Van Caneghem\n"
- "\t035Jon Van Caneghem\v012\n"
- "\n"
- "\n"
- "\t180\f35Graphics:\n"
- "\t190\f17Jonathan P. Gwyn\n"
- "\t190Bonita Long-Hemsath\n"
- "\t190Julia Ulano\n"
- "\t190Ricardo Barrera\n"
- "\n"
- "\t180\f35Testing:\n"
- "\t190\f17Benjamin Bent\n"
- "\t190Christian Dailey\n"
- "\t190Mario Escamilla\n"
- "\t190Marco Hunter\n"
- "\t190Robert J. Lupo\n"
- "\t190Clayton Retzer\n"
- "\t190David Vela\x3"
- "c";
- }
-
- const char *SWORDS_CREDITS1() {
- return "\v012\x3"
- "c\f35Published By New World Computing, Inc.\f17\n"
- "Developed By CATware, Inc.\x3l\n"
- "\f01Design and Direction\t180Series Created by\n"
- "\t020Bill Fawcett\t190John Van Caneghem\n"
- "\n"
- "\t010Story Contributions\t180Producer & Manual\n"
- "\t020Ellen Guon\t190Dean Rettig\n"
- "\n"
- "\t010Programming & Ideas\t180Original Programming\n"
- "\t020David Potter\t190Mark Caldwell\n"
- "\t020Rod Retterath\t190Dave Hathaway\n"
- "\n"
- "\t010Manual Illustrations\t180Graphic Artists\n"
- "\t020Todd Cameron Hamilton\t190Jonathan P. Gwyn\n"
- "\t020James Clouse\t190Bonnie Long-Hemsath\n"
- "\t190Julia Ulano\n"
- "\t190Ricardo Barrera\n";
- }
-
- const char *SWORDS_CREDITS2() {
- return "\f05\v012\t000\x3l\n"
- "\t100Sound Programming\n"
- "\t110Todd Hendrix\n"
- "\n"
- "\t100Music\n"
- "\t110Tim Tully\n"
- "\t110Quality Assurance Manager\n"
- "\t110Peter Ryu\n"
- "\t100Testers\n"
- "\t110Walter Johnson\n"
- "\t110Bryan Farina\n"
- "\t110David Baton\n"
- "\t110Jack Nalls\n";
- }
-
- const char *OPTIONS_MENU() {
- return "\r\x1\x3"
- "c\fdMight and Magic Options\n"
- "%s of Xeen\x2\n"
- "\v%.3dCopyright (c) %d NWC, Inc.\n"
- "All Rights Reserved\x1";
- }
-
- const char **GAME_NAMES() {
- delete[] _gameNames;
- _gameNames = new const char *[3] { "Clouds", "Darkside", "World" };
- return _gameNames;
- }
-
- const char *THE_PARTY_NEEDS_REST() {
- return "\v012The Party needs rest!";
- }
-
- const char *WHO_WILL() {
- return "\x3""c\v000\t000%s\n\n"
- "Who will\n%s?\n\v055F1 - F%d";
- }
-
- const char *HOW_MUCH() {
- return "\x3""cHow Much\n\n";
- }
-
- const char *WHATS_THE_PASSWORD() {
- return "\x3""cWhat's the Password?\n"
- "\n"
- "Please turn to page %u, go to\n"
- "line %u, and type in word %u.\v067\t000Spaces are not counted as words or lines. "
- "Hyphenated words are treated as one word. Any line that has any text is considered a line."
- "\x3""c\v040\t000\n";
- }
-
- const char *PASSWORD_INCORRECT() {
- return "\x3""c\v040\n"
- "\f32Incorrect!\fd";
- }
-
- const char *IN_NO_CONDITION() {
- return "\v007%s is not in any condition to perform actions!";
- }
-
- const char *NOTHING_HERE() {
- return "\x3""c\v010Nothing here.";
- }
-
- const char **WHO_ACTIONS() {
- delete[] _whoActions;
- _whoActions = new const char *[32] {
- "search", "open", "drink", "mine", "touch", "read", "learn", "take",
- "bang", "steal", "bribe", "pay", "sit", "try", "turn", "bathe",
- "destroy", "pull", "descend", "toss a coin", "pray", "join", "act",
- "play", "push", "rub", "pick", "eat", "sign", "close", "look", "try"
- };
- return _whoActions;
- }
-
- const char **WHO_WILL_ACTIONS() {
- delete[] _whoWillActions;
- _whoWillActions = new const char *[4] {
- "Open Grate", "Open Door", "Open Scroll", "Select Char"
- };
- return _whoWillActions;
- }
-
- const char **DIRECTION_TEXT_UPPER() {
- delete[] _directionTextUpper;
- _directionTextUpper = new const char *[4] {"NORTH", "EAST", "SOUTH", "WEST"};
- return _directionTextUpper;
- }
-
- const char **DIRECTION_TEXT() {
- delete[] _directionText;
- _directionText = new const char *[4] {"North", "East", "South", "West"};
- return _directionText;
- }
-
- const char **RACE_NAMES() {
- delete[] _raceNames;
- _raceNames = new const char *[5] { "Human", "Elf", "Dwarf", "Gnome", "H-Orc" };
- return _raceNames;
- }
-
- const char **ALIGNMENT_NAMES() {
- delete[] _alignmentNames;
- _alignmentNames = new const char *[3] { "Good", "Neutral", "Evil" };
- return _alignmentNames;
- }
-
- const char **SEX_NAMES() {
- delete[] _sexNames;
- _sexNames = new const char *[2] { "Male", "Female" };
- return _sexNames;
- }
-
- const char **SKILL_NAMES() {
- delete[] _skillNames;
- _skillNames = new const char *[18] {
- "Thievery\t100", "Arms Master", "Astrologer", "Body Builder", "Cartographer",
- "Crusader", "Direction Sense", "Linguist", "Merchant", "Mountaineer",
- "Navigator", "Path Finder", "Prayer Master", "Prestidigitator",
- "Swimmer", "Tracker", "Spot Secret Door", "Danger Sense"
- };
- return _skillNames;
- }
-
- const char **CLASS_NAMES() {
- delete[] _classNames;
- _classNames = new const char *[11] {
- "Knight", "Paladin", "Archer", "Cleric", "Sorcerer", "Robber",
- "Ninja", "Barbarian", "Druid", "Ranger", nullptr
- };
- return _classNames;
- }
-
- const char **CONDITION_NAMES() {
- delete[] _conditionNames;
- _conditionNames = new const char *[17] {
- "Cursed", "Heart Broken", "Weak", "Poisoned", "Diseased",
- "Insane", "In Love", "Drunk", "Asleep", "Depressed", "Confused",
- "Paralyzed", "Unconscious", "Dead", "Stone", "Eradicated", "Good"
- };
- return _conditionNames;
- }
-
- const char *GOOD() {
- return "Good";
- }
-
- const char *BLESSED() {
- return "\n\t020Blessed\t095%+d";
- }
-
- const char *POWER_SHIELD() {
- return "\n\t020Power Shield\t095%+d";
- }
-
- const char *HOLY_BONUS() {
- return "\n\t020Holy Bonus\t095%+d";
- }
-
- const char *HEROISM() {
- return "\n\t020Heroism\t095%+d";
- }
-
- const char *IN_PARTY() {
- return "\014""15In Party\014""d";
- }
-
- const char *PARTY_DETAILS() {
- return "\015\003l\002\014""00"
- "\013""001""\011""035%s"
- "\013""009""\011""035%s"
- "\013""017""\011""035%s"
- "\013""025""\011""035%s"
- "\013""001""\011""136%s"
- "\013""009""\011""136%s"
- "\013""017""\011""136%s"
- "\013""025""\011""136%s"
- "\013""044""\011""035%s"
- "\013""052""\011""035%s"
- "\013""060""\011""035%s"
- "\013""068""\011""035%s"
- "\013""044""\011""136%s"
- "\013""052""\011""136%s"
- "\013""060""\011""136%s"
- "\013""068""\011""136%s";
- }
-
- const char *PARTY_DIALOG_TEXT() {
- return "%s\x2\x3""c\v106\t013Up\t048Down\t083\f37D\fdel\t118\f37R\fdem"
- "\t153\f37C\fdreate\t188E\f37x\fdit\x1";
- }
-
- const char *NO_ONE_TO_ADVENTURE_WITH() {
- return "You have no one to adventure with";
- }
-
- const char *YOUR_ROSTER_IS_FULL() {
- return "Your Roster is full!";
- }
-
- const char *PLEASE_WAIT() {
- return "\014""d\003""c\011""000"
- "\013""002Please Wait...";
- }
-
- const char *OOPS() {
- return "\003""c\011""000\013""002Oops...";
- }
-
- const char *BANK_TEXT() {
- return "\r\x2\x3""c\v122\t013"
- "\f37D\fdep\t040\f37W\fdith\t067ESC"
- "\x1\t000\v000Bank of Xeen\v015\n"
- "Bank\x3l\n"
- "Gold\x3r\t000%s\x3l\n"
- "Gems\x3r\t000%s\x3""c\n"
- "\n"
- "Party\x3l\n"
- "Gold\x3r\t000%s\x3l\n"
- "Gems\x3r\t000%s";
- }
-
- const char *BLACKSMITH_TEXT() {
- return "\x1\r\x3""c\v000\t000"
- "store options for\t039\v027%s\x3l\v046\n"
- "\t011\f37b\fdrowse\n"
- "\t000\v090gold\x3r\t000%s"
- "\x2\x3""c\v122\t040esc\x1";
- }
-
- const char *GUILD_NOT_MEMBER_TEXT() {
- return "\n\nYou have to be a member to shop here.";
- }
-
- const char *GUILD_TEXT() {
- return "\x3""c\v027\t039%s"
- "\x3l\v046\n"
- "\t012\f37B\fduy Spells\n"
- "\t012\f37S\fdpell Info";
- }
-
- const char *TAVERN_TEXT() {
- return "\r\x3""c\v000\t000Tavern Options for\t039"
- "\v027%s%s\x3l\t000"
- "\v090Gold\x3r\t000%s\x2\x3""c\v122"
- "\t021\f37S\fdign in\t060ESC\x1";
-
- }
-
- const char *FOOD_AND_DRINK() {
- return "\x3l\t017\v046\f37D\fdrink\n"
- "\t017\f37F\fdood\n"
- "\t017\f37T\fdip\n"
- "\t017\f37R\fdumors";
- }
-
- const char *GOOD_STUFF() {
- return "\n"
- "\n"
- "Good Stuff\n"
- "\n"
- "Hit a key!";
- }
-
- const char *HAVE_A_DRINK() {
- return "\n\nHave a Drink\n\nHit a key!";
- }
-
- const char *YOURE_DRUNK() {
- return "\n\nYou're Drunk\n\nHit a key!";
- }
-
- const char *TEMPLE_TEXT() {
- return "\r\x3""c\v000\t000Temple Options for"
- "\t039\v027%s\x3l\t000\v046"
- "\f37H\fdeal\x3r\t000%u\x3l\n"
- "\f37D\fdonation\x3r\t000%u\x3l\n"
- "\f37U\fdnCurse\x3r\t000%s"
- "\x3l\t000\v090Gold\x3r\t000%s"
- "\x2\x3""c\v122\t040ESC\x1";
- }
-
- const char *EXPERIENCE_FOR_LEVEL() {
- return "%s needs %u experience for level %u.";
- }
-
- const char *TRAINING_LEARNED_ALL() {
- return "%s has learned all we can teach!";
- }
-
- const char *ELIGIBLE_FOR_LEVEL() {
- return "%s is eligible for level %u.\x3l\n"
- "\v081Cost\x3r\t000%u";
- }
-
- const char *TRAINING_TEXT() {
- return "\r\x3""cTraining Options\n"
- "\n"
- "%s\x3l\v090\t000Gold\x3r\t000%s\x2\x3""c\v122\t021"
- "\f37T\fdrain\t060ESC\x1";
- }
-
- const char *GOLD_GEMS() {
- return "\x3""c\v000\t000%s\x3l\n"
- "\n"
- "Gold\x3r\t000%s\x3l\n"
- "Gems\x3r\t000%s\x2\x3""c\v096\t013G\f37o\fdld\t040G\f37e\fdms\t067ESC\x1";
- }
-
- const char *GOLD_GEMS_2() {
- return "\x3""c\v000\t000%s\x3l\n"
- "\n"
- "\x4""077Gold\x3r\t000%s\x3l\n"
- "\x4""077Gems\x3r\t000%s\x3l\t000\v051\x4""077\n"
- "\x4""077";
- }
-
- const char **DEPOSIT_WITHDRAWL() {
- delete[] _depositWithdrawl;
- _depositWithdrawl = new const char *[2] { "Deposit", "Withdrawl" };
- return _depositWithdrawl;
- }
-
- const char *NOT_ENOUGH_X_IN_THE_Y() {
- return "\x3""c\v012Not enough %s in the %s!\x3l";
- }
-
- const char *NO_X_IN_THE_Y() {
- return "\x3""c\v012No %s in the %s!\x3l";
- }
-
- const char **STAT_NAMES() {
- delete[] _statNames;
- _statNames = new const char *[16] {
- "Might", "Intellect", "Personality", "Endurance", "Speed",
- "Accuracy", "Luck", "Age", "Level", "Armor Class", "Hit Points",
- "Spell Points", "Resistances", "Skills", "Awards", "Experience"
- };
- return _statNames;
- }
-
- const char **CONSUMABLE_NAMES() {
- delete[] _consumableNames;
- _consumableNames = new const char *[4] { "Gold", "Gems", "Food", "Condition" };
- return _consumableNames;
- }
-
- const char **WHERE_NAMES() {
- delete[] _whereNames;
- _whereNames = new const char *[2] { "Party", "Bank" };
- return _whereNames;
- }
-
- const char *AMOUNT() {
- return "\x3""c\t000\v051Amount\x3l\n";
- }
-
- const char *FOOD_PACKS_FULL() {
- return "\v007Your food packs are already full!";
- }
-
- const char *BUY_SPELLS() {
- return "\x3""c\v027\t039%s\x3l\v046\n"
- "\t012\f37B\fduy Spells\n"
- "\t012\f37S\fdpell Info";
- }
-
- const char *GUILD_OPTIONS() {
- return "\r\f00\x3""c\v000\t000Guild Options for%s"
- "\x3l\t000\v090Gold"
- "\x3r\t000%s\x2\x3""c\v122\t040ESC\x1";
- }
-
- const char *NOT_A_SPELL_CASTER() {
- return "Not a spell caster...";
- }
-
- const char *SPELLS_LEARNED_ALL() {
- return "You have learned all we\n"
- "\t010can teach you.";
- }
-
- const char *SPELLS_FOR() {
- return "\r\fd%s\x2\x3""c\t000\v002Spells for %s";
- }
-
- const char *SPELL_LINES_0_TO_9() {
- return "\x2\x3l\v015\t0011\n2\n3\n4\n5\n6\n7\n8\n9\n0";
- }
-
- const char *SPELLS_DIALOG_SPELLS() {
- return "\x3l\v015"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l"
- "\t004\v110%s - %u\x1";
- }
-
- const char *SPELL_PTS() {
- return "Spell Pts";
- }
-
- const char *GOLD() {
- return "Gold";
- }
-
- const char *SPELL_INFO() {
- return "\x3""c\f09%s\fd\x3l\n"
- "\n"
- "%s\x3""c\t000\v100Press a Key!";
- }
-
- const char *SPELL_PURCHASE() {
- return "\x3l\v000\t000\fd%s Do you wish to purchase "
- "\f09%s\fd for %u?";
- }
-
- const char *MAP_TEXT() {
- return "\x3""c\v000\t000%s\x3l\v139"
- "\t000X = %d\x3r\t000Y = %d\x3""c\t000%s";
- }
-
- const char *LIGHT_COUNT_TEXT() {
- return "\x3l\n\n\t024Light\x3r\t124%d";
- }
-
- const char *FIRE_RESISTENCE_TEXT() {
- return "%c%sFire%s%u";
- }
-
- const char *ELECRICITY_RESISTENCE_TEXT() {
- return "%c%sElectricity%s%u";
- }
-
- const char *COLD_RESISTENCE_TEXT() {
- return "%c%sCold%s%u";
- }
-
- const char *POISON_RESISTENCE_TEXT() {
- return "%c%sPoison/Acid%s%u";
- }
-
- const char *CLAIRVOYANCE_TEXT() {
- return "%c%sClairvoyance%s";
- }
-
- const char *LEVITATE_TEXT() {
- return "%c%sLevitate%s";
- }
-
- const char *WALK_ON_WATER_TEXT() {
- return "%c%sWalk on Water";
- }
-
- const char *GAME_INFORMATION() {
- return "\r\x3""c\t000\v001\f37%s of Xeen\fd\n"
- "Game Information\n"
- "\n"
- "Today is \f37%ssday\fd\n"
- "\n"
- "\t032Time\t072Day\t112Year\n"
- "\t032\f37%d:%02d%c\t072%u\t112%u\fd%s";
- }
-
- const char *WORLD_GAME_TEXT() {
- return "World";
- }
-
- const char *DARKSIDE_GAME_TEXT() {
- return "Darkside";
- }
-
- const char *CLOUDS_GAME_TEXT() {
- return "Clouds";
- }
-
- const char *SWORDS_GAME_TEXT() {
- return "Swords";
- }
-
- const char **WEEK_DAY_STRINGS() {
- delete[] _weekDayStrings;
- _weekDayStrings = new const char *[10] {
- "Ten", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"
- };
- return _weekDayStrings;
- }
-
- const char *CHARACTER_DETAILS() {
- return "\x3l\v041\t196%s\t000\v002%s : %s %s %s"
- "\x3r\t053\v028\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3l\t131\f%02u%d\fd\t196\f15%u\fd\x3r"
- "\t053\v051\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3l\t131\f%02u%u\fd\t196\f15%u\fd"
- "\x3r\t053\v074\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3l\t131\f15%u\fd\t196\f15%u\fd"
- "\x3r\t053\v097\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3l\t131\f15%u\fd\t196\f15%u day%s\fd"
- "\x3r\t053\v120\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3l\t131\f15%u\fd\t196\f%02u%s\fd"
- "\t230%s%s%s%s\fd";
- }
-
- const char **DAYS() {
- delete[] _days;
- _days = new const char *[3] { "", "s", "" };
- return _days;
- }
-
- const char *PARTY_GOLD() {
- return "Party Gold";
- }
-
- const char *PLUS_14() {
- return "\f14+";
- }
-
- const char *CHARACTER_TEMPLATE() {
- return "\x1\f00\r\x3l\t029\v018Mgt\t080Acy\t131H.P.\t196Experience"
- "\t029\v041Int\t080Lck\t131S.P.\t029\v064Per\t080Age"
- "\t131Resis\t196Party Gems\t029\v087End\t080Lvl\t131Skills"
- "\t196Party Food\t029\v110Spd\t080AC\t131Awrds\t196Condition\x3""c"
- "\t290\v025\f37I\fdtem\t290\v057\f37Q"
- "\fduick\t290\v089\f37E\fdxch\t290\v121Exit\x3l%s";
- }
-
- const char *EXCHANGING_IN_COMBAT() {
- return "\x3""c\v007\t000Exchanging in combat is not allowed!";
- }
-
- const char *CURRENT_MAXIMUM_RATING_TEXT() {
- return "\x2\x3""c%s\n"
- "Current / Maximum\n"
- "\x3r\t054%u\x3l\t058/ %u\n"
- "\x3""cRating: %s";
- }
-
- const char *CURRENT_MAXIMUM_TEXT() {
- return "\x2\x3""c%s\n"
- "Current / Maximum\n"
- "\x3r\t054%u\x3l\t058/ %u";
- }
-
- const char **RATING_TEXT() {
- delete[] _ratingText;
- _ratingText = new const char *[24] {
- "Nonexistant", "Very Poor", "Poor", "Very Low", "Low", "Average", "Good",
- "Very Good", "High", "Very High", "Great", "Super", "Amazing", "Incredible",
- "Gigantic", "Fantastic", "Astoundig", "Astonishing", "Monumental", "Tremendous",
- "Collosal", "Awesome", "Awe Inspiring", "Ultimate"
- };
- return _ratingText;
- }
-
- const char *AGE_TEXT() {
- return "\x2\x3""c%s\n"
- "Current / Natural\n"
- "\x3r\t057%u\x3l\t061/ %u\n"
- "\x3""cBorn: %u / %u\x1";
- }
-
- const char *LEVEL_TEXT() {
- return "\x2\x3""c%s\n"
- "Current / Maximum\n"
- "\x3r\t054%u\x3l\t058/ %u\n"
- "\x3""c%u Attack%s/Round\x1";
- }
-
- const char *RESISTENCES_TEXT() {
- return "\x2\x3""c%s\x3l\n"
- "\t020Fire\t100%u\n"
- "\t020Cold\t100%u\n"
- "\t020Electricity\t100%u\n"
- "\t020Poison\t100%u\n"
- "\t020Energy\t100%u\n"
- "\t020Magic\t100%u";
- }
-
- const char *NONE() {
- return "\n\t020None";
- }
-
- const char *EXPERIENCE_TEXT() {
- return "\x2\x3""c%s\x3l\n"
- "\t010Current:\t070%u\n"
- "\t010Next Level:\t070%s\x1";
- }
-
- const char *ELIGIBLE() {
- return "\f12Eligible\fd";
- }
-
- const char *IN_PARTY_IN_BANK() {
- return "\x2\x3""cParty %s\n"
- "%u on hand\n"
- "%u in bank\x1\x3l";
- }
-
- const char *FOOD_TEXT() {
- return "\x2\x3""cParty %s\n"
- "%u on hand\n"
- "Enough for %u day%s\x3l";
- }
-
- const char *EXCHANGE_WITH_WHOM() {
- return "\t010\v005Exchange with whom?";
- }
-
- const char *QUICK_REF_LINE() {
- return "\v%3d\t007%u)\t027%s\t110%c%c%c\x3r\t160\f%02u%u\fd"
- "\x3l\t170\f%02u%d\fd\t208\f%02u%u\fd\t247\f"
- "%02u%u\fd\t270\f%02u%c%c%c%c\fd";
- }
-
- const char *QUICK_REFERENCE() {
- return "\r\x3""cQuick Reference Chart\v012\x3l"
- "\t007#\t027Name\t110Cls\t140Lvl\t176H.P."
- "\t212S.P.\t241A.C.\t270Cond"
- "%s%s%s%s%s%s%s%s"
- "\v110\t064\x3""cGold\t144Gems\t224Food\v119"
- "\t064\f15%u\t144%u\t224%u day%s\fd";
- }
-
- const char *ITEMS_DIALOG_TEXT1() {
- return "\r\x2\x3""c\v021\t017\f37W\fdeap\t051\f37A\fdrmor\t085A"
- "\f37c\fdces\t119\f37M\fdisc\t153%s\t187%s\t221%s"
- "\t255%s\t289Exit";
- }
-
- const char *ITEMS_DIALOG_TEXT2() {
- return "\r\x2\x3""c\v021\t017\f37W\fdeap\t051\f37A\fdrmor\t085A"
- "\f37c\fdces\t119\f37M\fdisc\t153\f37%s\t289Exit";
- }
-
- const char *ITEMS_DIALOG_LINE1() {
- return "\x3r\f%02u\t023%2d)\x3l\t028%s\n";
- }
-
- const char *ITEMS_DIALOG_LINE2() {
- return "\x3r\f%02u\t023%2d)\x3l\t028%s\x3r\t000%u\n";
- }
-
- const char *BTN_BUY() {
- return "\f37B\fduy";
- }
-
- const char *BTN_SELL() {
- return "\f37S\fdell";
- }
-
- const char *BTN_IDENTIFY() {
- return "\f37I\fddentify";
- }
-
- const char *BTN_FIX() {
- return "\f37F\fdix";
- }
-
- const char *BTN_USE() {
- return "\f37U\fdse";
- }
-
- const char *BTN_EQUIP() {
- return "\f37E\fdquip";
- }
-
- const char *BTN_REMOVE() {
- return "\f37R\fdem";
- }
-
- const char *BTN_DISCARD() {
- return "\f37D\fdisc";
- }
-
- const char *BTN_QUEST() {
- return "\f37Q\fduest";
- }
-
- const char *BTN_ENCHANT() {
- return "E\fdnchant";
- }
-
- const char *BTN_RECHARGE() {
- return "R\fdechrg";
- }
-
- const char *BTN_GOLD() {
- return "G\fdold";
- }
-
- const char *ITEM_BROKEN() {
- return "\f32broken ";
- }
-
- const char *ITEM_CURSED() {
- return "\f09cursed ";
- }
-
- const char *ITEM_OF() {
- return "of ";
- }
-
- const char **BONUS_NAMES() {
- delete[] _bonusNames;
- _bonusNames = new const char *[7] {
- "", "Dragon Slayer", "Undead Eater", "Golem Smasher",
- "Bug Zapper", "Monster Masher", "Beast Bopper"
- };
- return _bonusNames;
- }
-
- const char **WEAPON_NAMES() {
- delete[] _weaponNames;
- _weaponNames = new const char *[41] {
- nullptr, "long sword ", "short sword ", "broad sword ", "scimitar ",
- "cutlass ", "sabre ", "club ", "hand axe ", "katana ", "nunchakas ",
- "wakazashi ", "dagger ", "mace ", "flail ", "cudgel ", "maul ", "spear ",
- "bardiche ", "glaive ", "halberd ", "pike ", "flamberge ", "trident ",
- "staff ", "hammer ", "naginata ", "battle axe ", "grand axe ", "great axe ",
- "short bow ", "long bow ", "crossbow ", "sling ", "Xeen Slayer Sword ",
- "Elder LongSword ", "Elder Dagger ", "Elder Mace ", "Elder Spear ",
- "Elder Staff ", "Elder LongBow "
- };
- return _weaponNames;
- }
-
- const char **ARMOR_NAMES() {
- delete[] _armorNames;
- _armorNames = new const char *[14] {
- nullptr, "robes ", "scale armor ", "ring mail ", "chain mail ",
- "splint mail ", "plate mail ", "plate armor ", "shield ",
- "helm ", "boots ", "cloak ", "cape ", "gauntlets "
- };
- return _armorNames;
- }
-
- const char **ACCESSORY_NAMES() {
- delete[] _accessoryNames;
- _accessoryNames = new const char *[11] {
- nullptr, "ring ", "belt ", "brooch ", "medal ", "charm ", "cameo ",
- "scarab ", "pendant ", "necklace ", "amulet "
- };
- return _accessoryNames;
- }
-
- const char **MISC_NAMES() {
- delete[] _miscNames;
- _miscNames = new const char *[22] {
- nullptr, "rod ", "jewel ", "gem ", "box ", "orb ", "horn ", "coin ",
- "wand ", "whistle ", "potion ", "scroll ", "bogus", "bogus", "bogus",
- "bogus", "bogus", "bogus", "bogus", "bogus", "bogus", "bogus"
- };
- return _miscNames;
- }
-
- const char **SPECIAL_NAMES() {
- delete[] _specialNames;
- _specialNames = new const char *[74] {
- nullptr, "light", "awakening", "magic arrows", "first aid", "fists", "energy blasts", "sleeping",
- "revitalization", "curing", "sparking", "shrapmetal", "insect repellent", "toxic clouds", "elemental protection",
- "pain", "jumping", "beast control", "clairvoyance", "undead turning", "levitation", "wizard eyes", "blessing",
- "monster identification", "lightning", "holy bonuses", "power curing", "nature's cures", "beacons",
- "shielding", "heroism", "hypnotism", "water walking", "frost biting", "monster finding", "fireballs",
- "cold rays", "antidotes", "acid spraying", "time distortion", "dragon sleep", "vaccination", "teleportation",
- "death", "free movement", "golem stopping", "poison volleys", "deadly swarms", "shelter", "daily protection",
- "daily sorcerery", "feasting", "fiery flails", "recharging", "freezing", "town portals", "stone to flesh",
- "raising the dead", "etherealization", "dancing swords", "moon rays", "mass distortion", "prismatic light",
- "enchant item", "incinerating", "holy words", "resurrection", "storms", "megavoltage", "infernos",
- "sun rays", "implosions", "star bursts", "the GODS!"
- };
- return _specialNames;
- }
-
- const char **ELEMENTAL_NAMES() {
- delete[] _elementalNames;
- _elementalNames = new const char *[6] {
- "Fire", "Elec", "Cold", "Acid/Poison", "Energy", "Magic"
- };
- return _elementalNames;
- }
-
- const char **ATTRIBUTE_NAMES() {
- delete[] _attributeNames;
- _attributeNames = new const char *[10] {
- "might", "Intellect", "Personality", "Speed", "accuracy", "Luck",
- "Hit Points", "Spell Points", "Armor Class", "Thievery"
- };
- return _attributeNames;
- }
-
- const char **EFFECTIVENESS_NAMES() {
- delete[] _effectivenessNames;
- _effectivenessNames = new const char *[7] {
- nullptr, "Dragons", "Undead", "Golems", "Bugs", "Monsters", "Beasts"
- };
- return _effectivenessNames;
- }
-
- const char **QUEST_ITEM_NAMES() {
- delete[] _questItemNames;
- _questItemNames = new const char *[85] {
- "Deed to New Castle",
- "Crystal Key to Witch Tower",
- "Skeleton Key to Darzog's Tower",
- "Enchanted Key to Tower of High Magic",
- "Jeweled Amulet of the Northern Sphinx",
- "Stone of a Thousand Terrors",
- "Golem Stone of Admittance",
- "Yak Stone of Opening",
- "Xeen's Scepter of Temporal Distortion",
- "Alacorn of Falista",
- "Elixir of Restoration",
- "Wand of Faery Magic",
- "Princess Roxanne's Tiara",
- "Holy Book of Elvenkind",
- "Scarab of Imaging",
- "Crystals of Piezoelectricity",
- "Scroll of Insight",
- "Phirna Root",
- "Orothin's Bone Whistle",
- "Barok's Magic Pendant",
- "Ligono's Missing Skull",
- "Last Flower of Summer",
- "Last Raindrop of Spring",
- "Last Snowflake of Winter",
- "Last Leaf of Autumn",
- "Ever Hot Lava Rock",
- "King's Mega Credit",
- "Excavation Permit",
- "Cupie Doll",
- "Might Doll",
- "Speed Doll",
- "Endurance Doll",
- "Accuracy Doll",
- "Luck Doll",
- "Widget",
- "Pass to Castleview",
- "Pass to Sandcaster",
- "Pass to Lakeside",
- "Pass to Necropolis",
- "Pass to Olympus",
- "Key to Great Western Tower",
- "Key to Great Southern Tower",
- "Key to Great Eastern Tower",
- "Key to Great Northern Tower",
- "Key to Ellinger's Tower",
- "Key to Dragon Tower",
- "Key to Darkstone Tower",
- "Key to Temple of Bark",
- "Key to Dungeon of Lost Souls",
- "Key to Ancient Pyramid",
- "Key to Dungeon of Death",
- "Amulet of the Southern Sphinx",
- "Dragon Pharoah's Orb",
- "Cube of Power",
- "Chime of Opening",
- "Gold ID Card",
- "Silver ID Card",
- "Vulture Repellant",
- "Bridle",
- "Enchanted Bridle",
- "Treasure Map (Goto E1 x1, y11)",
- "",
- "Fake Map",
- "Onyx Necklace",
- "Dragon Egg",
- "Tribble",
- "Golden Pegasus Statuette",
- "Golden Dragon Statuette",
- "Golden Griffin Statuette",
- "Chalice of Protection",
- "Jewel of Ages",
- "Songbird of Serenity",
- "Sandro's Heart",
- "Ector's Ring",
- "Vespar's Emerald Handle",
- "Queen Kalindra's Crown",
- "Caleb's Magnifying Glass",
- "Soul Box",
- "Soul Box with Corak inside",
- "Ruby Rock",
- "Emerald Rock",
- "Sapphire Rock",
- "Diamond Rock",
- "Monga Melon",
- "Energy Disk"
- };
- return _questItemNames;
- }
-
- const char **QUEST_ITEM_NAMES_SWORDS() {
- delete[] _questItemNamesSwords;
- _questItemNamesSwords = new const char *[51] {
- "Pass to Hart", "Pass to Impery", "Pass to town3", "Pass to town4", "Pass to town5",
- "Key to Hart Sewers", "Key to Rettig's Pyramid", "Key to the Old Temple",
- "Key to Canegtut's Pyramid", "Key to Ascihep's Pyramid", "Key to Dragon Tower",
- "Key to Darkstone Tower", "Key to Temple of Bark", "Key to Dungeon of Lost Souls",
- "Key to Ancient Pyramid", "Key to Dungeon of Death", "Red Magic Hammer",
- "Green Magic Hammer", "Golden Magic Wand", "Silver Magic Hammer", "Magic Coin",
- "Ruby", "Diamond Mineral", "Emerald", "Sapphire", "Treasure Map (Goto E1 x1, y11)",
- "NOTUSED", "Melon", "Princess Crown", "Emerald Wand", "Druid Carving", "High Sign",
- "Holy Wheel", "Double Cross", "Sky Hook", "Sacred Cow", "Staff of the Mountain",
- "Hard Rock", "Soft Rock", "Rock Candy", "Ivy Plant", "Spirit Gem", "Temple of Sun holy lamp oil",
- "Noams Hammer", "Positive Orb", "Negative Orb", "FireBane Staff", "Diamond Edged Pick",
- "Monga Melon", "Energy Disk", "Old XEEN Quest Item"
- };
- return _questItemNamesSwords;
- }
-
- const char *NOT_PROFICIENT() {
- return "\t000\v007\x3""c%ss are not proficient with a %s!";
- }
-
- const char *NO_ITEMS_AVAILABLE() {
- return "\x3""c\n"
- "\t000No items available.";
- }
-
- const char **CATEGORY_NAMES() {
- delete[] _categoryNames;
- _categoryNames = new const char *[4] { "Weapons", "Armor", "Accessories", "Miscellaneous" };
- return _categoryNames;
- }
-
- const char *X_FOR_THE_Y() {
- return "\x1\fd\r%s\v000\t000%s for %s the %s%s\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
- }
-
- const char *X_FOR_Y() {
- return "\x1\fd\r\x3l\v000\t000%s for %s\x3r\t000%s\x3l\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
- }
-
- const char *X_FOR_Y_GOLD() {
- return "\x1\fd\r\x3l\v000\t000%s for %s\t150Gold - %u%s\x3l\v011"
- "\x2%s%s%s%s%s%s%s%s%s\x1\fd";
- }
-
- const char *FMT_CHARGES() {
- return "\x3rr\t000Charges\x3l";
- }
-
- const char *AVAILABLE_GOLD_COST() {
- return "\x1\fd\r\x3l\v000\t000Available %s\t150Gold - %u\x3r\t000Cost"
- "\x3l\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
- }
-
- const char *CHARGES() {
- return "Charges";
- }
-
- const char *COST() {
- return "Cost";
- }
-
- const char **ITEM_ACTIONS() {
- delete[] _itemActions;
- _itemActions = new const char *[7] {
- "Equip", "Remove", "Use", "Discard", "Enchant", "Recharge", "Gold"
- };
- return _itemActions;
- }
-
- const char *WHICH_ITEM() {
- return "\t010\v005%s which item?";
- }
-
- const char *WHATS_YOUR_HURRY() {
- return "\v007What's your hurry?\n"
- "Wait till you get out of here!";
- }
-
- const char *USE_ITEM_IN_COMBAT() {
- return "\v007To use an item in Combat, invoke the Use command on your turn!";
- }
-
- const char *NO_SPECIAL_ABILITIES() {
- return "\v005\x3""c%s\fdhas no special abilities!";
- }
-
- const char *CANT_CAST_WHILE_ENGAGED() {
- return "\x3""c\v007Can't cast %s while engaged!";
- }
-
- const char *EQUIPPED_ALL_YOU_CAN() {
- return "\x3""c\v007You have equipped all the %ss you can!";
- }
-
- const char *REMOVE_X_TO_EQUIP_Y() {
- return "\x3""c\v007You must remove %sto equip %s\b!";
- }
-
- const char *RING() {
- return "ring";
- }
-
- const char *MEDAL() {
- return "medal";
- }
-
- const char *CANNOT_REMOVE_CURSED_ITEM() {
- return "\x3""You cannot remove a cursed item!";
- }
-
- const char *CANNOT_DISCARD_CURSED_ITEM() {
- return "\3x""cYou cannot discard a cursed item!";
- }
-
- const char *PERMANENTLY_DISCARD() {
- return "\v000\t000\x3lPermanently discard %s\fd?";
- }
-
- const char *BACKPACK_IS_FULL() {
- return "\v005\x3""c\fd%s's backpack is full.";
- }
-
- const char **CATEGORY_BACKPACK_IS_FULL() {
- delete[] _categoryBackpackIsFull;
- _categoryBackpackIsFull = new const char *[4] {
- "\v010\t000\x3""c%s's weapons backpack is full.",
- "\v010\t000\x3""c%s's armor backpack is full.",
- "\v010\t000\x3""c%s's accessories backpack is full.",
- "\v010\t000\x3""c%s's miscellaneous backpack is full."
- };
- return _categoryBackpackIsFull;
- }
-
- const char *BUY_X_FOR_Y_GOLD() {
- return "\x3l\v000\t000\fdBuy %s\fd for %u gold?";
- }
-
- const char *SELL_X_FOR_Y_GOLD() {
- return "\x3l\v000\t000\fdSell %s\fd for %u gold?";
- }
-
- const char **SELL_X_FOR_Y_GOLD_ENDINGS() {
- delete[] _sellXForYGoldEndings;
- _sellXForYGoldEndings = new const char *[2] { "", "" };
- return _sellXForYGoldEndings;
- }
-
- const char *NO_NEED_OF_THIS() {
- return "\v005\x3""c\fdWe have no need of this %s\f!";
- }
-
- const char *NOT_RECHARGABLE() {
- return "\v012\x3""c\fdNot Rechargeable. %s";
- }
-
- const char *NOT_ENCHANTABLE() {
- return "\v012\t000\x3""cNot Enchantable. %s";
- }
-
- const char *SPELL_FAILED() {
- return "Spell Failed!";
- }
-
- const char *ITEM_NOT_BROKEN() {
- return "\fdThat item is not broken!";
- }
-
- const char **FIX_IDENTIFY() {
- delete[] _fixIdentify;
- _fixIdentify = new const char *[2] { "Fix", "Identify" };
- return _fixIdentify;
- }
-
- const char *FIX_IDENTIFY_GOLD() {
- return "\x3l\v000\t000%s %s\fd for %u gold?";
- }
-
- const char *IDENTIFY_ITEM_MSG() {
- return "\fd\v000\t000\x3""cIdentify Item\x3l\n"
- "\n"
- "\v012%s\fd\n"
- "\n"
- "%s";
- }
-
- const char *ITEM_DETAILS() {
- return "Proficient Classes\t132:\t140%s\n"
- "to Hit Modifier\t132:\t140%s\n"
- "Physical Damage\t132:\t140%s\n"
- "Elemental Damage\t132:\t140%s\n"
- "Elemental Resistance\t132:\t140%s\n"
- "Armor Class Bonus\t132:\t140%s\n"
- "Attribute Bonus\t132:\t140%s\n"
- "Special Power\t132:\t140%s";
- }
-
- const char *ALL() {
- return "All";
- }
-
- const char *FIELD_NONE() {
- return "None";
- }
-
- const char *DAMAGE_X_TO_Y() {
- return "%d to %d";
- }
-
- const char *ELEMENTAL_XY_DAMAGE() {
- return "%+d %s Damage";
- }
-
- const char *ATTR_XY_BONUS() {
- return "%+d %s";
- }
-
- const char *EFFECTIVE_AGAINST() {
- return "x3 vs %s";
- }
-
- const char *QUESTS_DIALOG_TEXT() {
- return "\r\x2\x3""c\v021\t017\f37I\fdtems\t085\f37Q\fduests\t153"
- "\f37A\fduto Notes 221\f37U\fdp\t255\f37D\fdown"
- "\t289Exit";
- }
-
- const char *CLOUDS_OF_XEEN_LINE() {
- return "\b \b*-- \f04Clouds of Xeen\fd --";
- }
-
- const char *DARKSIDE_OF_XEEN_LINE() {
- return "\b \b*-- \f04Darkside of Xeen\fd --";
- }
-
- const char *SWORDS_OF_XEEN_LINE() {
- return "\b \b*-- \f04Swords of Xeen\fd --";
- }
-
- const char *NO_QUEST_ITEMS() {
- return "\r\x3""c\v000 000Quest Items\x3l\x2\n"
- "\n"
- "\x3""cNo Quest Items";
- }
-
- const char *NO_CURRENT_QUESTS() {
- return "\x3""c\v000\t000\n"
- "\n"
- "No Current Quests";
- }
-
- const char *NO_AUTO_NOTES() {
- return "\x3""cNo Auto Notes";
- }
-
- const char *QUEST_ITEMS_DATA() {
- return "\r\x1\fd\x3""c\v000\t000Quest Items\x3l\x2\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s";
- }
-
- const char *CURRENT_QUESTS_DATA() {
- return "\r\x1\fd\x3""c\t000\v000Current Quests\x3l\x2\n"
- "%s\n"
- "\n"
- "%s\n"
- "\n"
- "%s";
- }
-
- const char *AUTO_NOTES_DATA() {
- return "\r\x1\fd\x3""c\t000\v000Auto Notes\x3l\x2\n"
- "%s\x3l\n"
- "%s\x3l\n"
- "%s\x3l\n"
- "%s\x3l\n"
- "%s\x3l\n"
- "%s\x3l\n"
- "%s\x3l\n"
- "%s\x3l\n"
- "%s\x3l";
- }
-
- const char *REST_COMPLETE() {
- return "\v000\t0008 hours pass. Rest complete.\n"
- "%s\n"
- "%d food consumed.";
- }
-
- const char *PARTY_IS_STARVING() {
- return "\f07The Party is Starving!\fd";
- }
-
- const char *HIT_SPELL_POINTS_RESTORED() {
- return "Hit Pts and Spell Pts restored.";
- }
-
- const char *TOO_DANGEROUS_TO_REST() {
- return "Too dangerous to rest here!";
- }
-
- const char *SOME_CHARS_MAY_DIE() {
- return "Some Chars may die. Rest anyway?";
- }
-
- const char *DISMISS_WHOM() {
- return "\t010\v005Dismiss whom?";
- }
-
- const char *CANT_DISMISS_LAST_CHAR() {
- return "You cannot dismiss your last character!";
- }
-
- const char *DELETE_CHAR_WITH_ELDER_WEAPON() {
- return "\v000\t000This character has an Elder Weapon and cannot be deleted!";
- }
-
- const char **REMOVE_DELETE() {
- delete[] _removeDelete;
- _removeDelete = new const char *[2] { "Remove", "Delete" };
- return _removeDelete;
- }
-
- const char *REMOVE_OR_DELETE_WHICH() {
- return "\x3l\t010\v005%s which character?";
- }
-
- const char *YOUR_PARTY_IS_FULL() {
- return "\v007Your party is full!";
- }
-
- const char *HAS_SLAYER_SWORD() {
- return "\v000\t000This character has the Xeen Slayer Sword and cannot be deleted!";
- }
-
- const char *SURE_TO_DELETE_CHAR() {
- return "Are you sure you want to delete %s the %s?";
- }
-
- const char *CREATE_CHAR_DETAILS() {
- return "\f04\x3""c\x2\t144\v119\f37R\f04oll\t144\v149\f37C\f04reate"
- "\t144\v179\f37ESC\f04\x3l\x1\t195\v021\f37M\f04gt"
- "\t195\v045\f37I\f04nt\t195\v069\f37P\f04er\t195\v093\f37E\f04nd"
- "\t195\v116\f37S\f04pd\t195\v140\f37A\f04cy\t195\v164\f37L\f04ck%s";
- }
-
- const char *NEW_CHAR_STATS() {
- return "\f04\x3l\t022\v148Race\t055: %s\n"
- "\t022Sex\t055: %s\n"
- "\t022Class\t055:\n"
- "\x3r\t215\v031%d\t215\v055%d\t215\v079%d\t215\v103%d\t215\v127%d"
- "\t215\v151%d\t215\v175%d\x3l\t242\v020\f%.2dKnight\t242\v031\f%.2d"
- "Paladin\t242\v042\f%.2dArcher\t242\v053\f%.2dCleric\t242\v064\f%.2d"
- "Sorcerer\t242\v075\f%.2dRobber\t242\v086\f%.2dNinja\t242\v097\f%.2d"
- "Barbarian\t242\v108\f%.2dDruid\t242\v119\f%.2dRanger\f04\x3""c"
- "\t265\v142Skills\x3l\t223\v155%s\t223\v170%s%s";
- }
-
- const char *NAME_FOR_NEW_CHARACTER() {
- return "\x3""cEnter a Name for this Character\n\n";
- }
-
- const char *SELECT_CLASS_BEFORE_SAVING() {
- return "\v006\x3""cSelect a Class before saving.\x3l";
- }
-
- const char *EXCHANGE_ATTR_WITH() {
- return "Exchange %s with...";
- }
-
- const char *COMBAT_DETAILS() {
- return "\r\f00\x3""c\v000\t000\x2""Combat%s%s%s\x1";
- }
-
- const char *NOT_ENOUGH_TO_CAST() {
- return "\x3""c\v010Not enough %s to Cast %s";
- }
-
- const char **SPELL_CAST_COMPONENTS() {
- delete[] _spellCastComponents;
- _spellCastComponents = new const char *[2] { "Spell Points", "Gems" };
- return _spellCastComponents;
- }
-
- const char *CAST_SPELL_DETAILS() {
- return "\r\x2\x3""c\v122\t013\f37C\fdast\t040\f37N\fdew"
- "\t067ESC\x1\t000\v000\x3""cCast Spell\n"
- "\n"
- "%s\x3l\n"
- "\n"
- "Spell Ready:\x3""c\n"
- "\n"
- "\f09%s\fd\x2\x3l\n"
- "\v082Cost\x3r\t000%u/%u\x3l\n"
- "Cur SP\x3r\t000%u\x1";
- }
-
- const char *PARTY_FOUND() {
- return "\x3""cThe Party Found:\n"
- "\n"
- "\x3r\t000%u Gold\n"
- "%u Gems";
- }
-
- const char *BACKPACKS_FULL_PRESS_KEY() {
- return "\v007\f12Warning! BackPacks Full!\fd\n"
- "Press a Key";
- }
-
- const char *HIT_A_KEY() {
- return "\x3l\v120\t000\x4""077\x3""c\f37Hit a key\fd";
- }
-
- const char *GIVE_TREASURE_FORMATTING() {
- return "\x3l\v060\t000\x4""077\n"
- "\x4""077\n"
- "\x4""077\n"
- "\x4""077\n"
- "\x4""077\n"
- "\x4""077";
- }
-
- const char *X_FOUND_Y() {
- return "\v060\t000\x3""c%s found: %s";
- }
-
- const char *ON_WHO() {
- return "\x3""c\v009On Who?";
- }
-
- const char *WHICH_ELEMENT1() {
- return "\r\x3""c\x1Which Element?\x2\v034\t014\f15F\fdire\t044"
- "\f15E\fdlec\t074\f15C\fdold\t104\f15A\fdcid\x1";
- }
-
- const char *WHICH_ELEMENT2() {
- return "\r\x3""cWhich Element?\x2\v034\t014\f15F\fdire\t044"
- "\f15E\fdlec\t074\f15C\fdold\t104\f15A\fdcid\x1";
- }
-
- const char *DETECT_MONSTERS() {
- return "\x3""cDetect Monsters";
- }
-
- const char *LLOYDS_BEACON() {
- return "\r\x3""c\v000\t000\x1Lloyd's Beacon\n"
- "\n"
- "Last Location\n"
- "\n"
- "%s\x3l\n"
- "x = %d\x3r\t000y = %d\x3""c\x2\v122\t021\f15S\fdet\t060\f15R\fdeturn\x1";
- }
-
- const char *HOW_MANY_SQUARES() {
- return "\x3""cTeleport\nHow many squares %s (1-9)\n";
- }
-
- const char *TOWN_PORTAL() {
- return "\x3""cTown Portal\x3l\n"
- "\n"
- "\t0101. %s\n"
- "\t0102. %s\n"
- "\t0103. %s\n"
- "\t0104. %s\n"
- "\t0105. %s\x3""c\n"
- "\n"
- "To which Town (1-5)\n"
- "\n";
- }
-
- const char *TOWN_PORTAL_SWORDS() {
- return "\x3""cTown Portal\x3l\n"
- "\n"
- "\t0101. %s\n"
- "\t0102. %s\n"
- "\t0103. %s\x3""c\n"
- "\n"
- "To which Town (1-3)\n"
- "\n";
- }
-
- const char *MONSTER_DETAILS() {
- return "\x3l\n"
- "%s\x3""c\t100%s\t140%u\t180%u\x3r\t000%s";
- }
-
- const char **MONSTER_SPECIAL_ATTACKS() {
- delete[] _monsterSpecialAttacks;
- _monsterSpecialAttacks = new const char *[23] {
- "None", "Magic", "Fire", "Elec", "Cold", "Poison", "Energy", "Disease",
- "Insane", "Asleep", "CurseItm", "InLove", "DrnSPts", "Curse", "Paralys",
- "Uncons", "Confuse", "BrkWpn", "Weak", "Erad", "Age+5", "Dead", "Stone"
- };
- return _monsterSpecialAttacks;
- }
-
- const char *IDENTIFY_MONSTERS() {
- return "Name\x3""c\t100HP\t140AC\t177#Atks\x3r\t000Special%s%s%s";
- }
-
- const char *MOONS_NOT_ALIGNED() {
- return "\x3""c\v012\t000The moons are not aligned. Passage to the %s is unavailable";
- }
-
- const char *AWARDS_FOR() {
- return "\r\x1\fd\x3""c\v000\t000Awards for %s the %s\x3l\x2\n"
- "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\x1";
- }
-
- const char *AWARDS_TEXT() {
- return "\r\x2\x3""c\v021\t221\f37U\fdp\t255\f37D\fdown\t289Exit";
- }
-
- const char *NO_AWARDS() {
- return "\x3""cNo Awards";
- }
-
- const char *WARZONE_BATTLE_MASTER() {
- return "The Warzone\n\t125Battle Master";
- }
-
- const char *WARZONE_MAXED() {
- return "What! You again? Go pick on someone your own size!";
- }
-
- const char *WARZONE_LEVEL() {
- return "What level of monsters? (1-10)\n";
- }
-
- const char *WARZONE_HOW_MANY() {
- return "How many monsters? (1-20)\n";
- }
-
- const char *PICKS_THE_LOCK() {
- return "\x3""c\v010%s picks the lock!\nPress any key.";
- }
-
- const char *UNABLE_TO_PICK_LOCK() {
- return "\x3""c\v010%s was unable to pick the lock!\nPress any key.";
- }
-
- const char *CONTROL_PANEL_TEXT() {
- return "\x1\f00\x3""c\v000\t000Control Panel\x3r"
- "\v022\t045\f06L\fdoad:\t124\f06E\fdfx:"
- "\v041\t045\f06S\fdave:\t124\f06M\fdusic:"
- "\v060\t045\f06Q\fduit:"
- "\v080\t084Mr \f06W\fdizard:%s\t000\x1";
- }
-
- const char *CONTROL_PANEL_BUTTONS() {
- return "\x3""c\f11"
- "\v022\t062load\t141%s"
- "\v041\t062save\t141%s"
- "\v060\t062exit"
- "\v079\t102Help\fd";
- }
-
- const char *ON() {
- return "\f15on\f11";
- }
-
- const char *OFF() {
- return "\f32off\f11";
- }
-
- const char *CONFIRM_QUIT() {
- return "Are you sure you want to quit?";
- }
-
- const char *MR_WIZARD() {
- return "Are you sure you want Mr.Wizard's Help ?";
- }
-
- const char *NO_LOADING_IN_COMBAT() {
- return "No Loading Allowed in Combat!";
- }
-
- const char *NO_SAVING_IN_COMBAT() {
- return "No Saving Allowed in Combat!";
- }
-
- const char *QUICK_FIGHT_TEXT() {
- return "\r\fd\x3""c\v000\t000QuickFight Options\n\n"
- "%s\x3l\n\n"
- "Current\x3r\n"
- "\t000%s\x2\x3""c\v122\t021\f37N\f04ext\t060Exit\x1";
- }
-
- const char **QUICK_FIGHT_OPTIONS() {
- delete[] _quickFightOptions;
- _quickFightOptions = new const char *[4] { "Attack", "Cast", "Block", "Run" };
- return _quickFightOptions;
- }
-
- const char **WORLD_END_TEXT() {
- delete[] _worldEndText;
- _worldEndText = new const char *[9] {
- "\n\n\n\n\n\n\n"
- "Congratulations Adventurers!\n\n"
- "Let the unification ceremony begin!",
- "And so the call went out to the people throughout the lands of Xeen"
- " that the prophecy was nearing completion.",
- "They came in great numbers to witness the momentous occasion.",
- "\v026The Dragon Pharoah presided over the ceremony.",
- "\v026Queen Kalindra presented the Cube of Power.",
- "\v026Prince Roland presented the Xeen Sceptre.",
- "\v026Together, they placed the Cube of Power...",
- "\v026and the Sceptre, onto the Altar of Joining.",
- "With the prophecy complete, the two sides of Xeen were united as one",
- };
- return _worldEndText;
- }
-
- const char *WORLD_CONGRATULATIONS() {
- return "\x3""cCongratulations\n\n"
- "Your Final Score is:\n\n"
- "%010lu\n"
- "\x3l\n"
- "Please send this score to the Ancient's Headquarters where "
- "you'll be added to the Hall of Legends!\n\n"
- "Ancient's Headquarters\n"
- "New World Computing, Inc.\n"
- "P.O. Box 4302\n"
- "Hollywood, CA 90078";
- }
-
- const char *WORLD_CONGRATULATIONS2() {
- return "\n\n\n\n\n\n"
- "But wait... there's more!\n"
- "\n\n"
- "Include the message\n"
- "\"%s\"\n"
- "with your final score and receive a special bonus.";
- }
-
- const char *CLOUDS_CONGRATULATIONS1() {
- return "\f23\x3l"
- "\v000\t000Please send this score to the Ancient's Headquarters "
- "where you'll be added to the Hall of Legends!\f33\x3""c"
- "\v070\t000Press a Key";
- }
-
- const char *CLOUDS_CONGRATULATIONS2() {
- return "\f23\x3l"
- "\v000\t000Ancient's Headquarters\n"
- "New World Computing, Inc.\n"
- "P.O. Box 4302\n"
- "Hollywood, CA 90078-4302\f33\x3""c"
- "\v070\t000Press a Key";
- }
-
- const char **GOOBER() {
- delete[] _goober;
- _goober = new const char *[3] {
- "", "I am a Goober!", "I am a Super Goober!"
- };
- return _goober;
- }
-
- const char *DIFFICULTY_TEXT() {
- return "\v000\t000\x3""cSelect Game Preference";
- }
-
- const char *SAVE_OFF_LIMITS() {
- return "\x3""c\v002\t000The Gods of Game Restoration deem this area off limits!\n"
- "Sorry, no saving in this maze.";
- }
-
- const char *CLOUDS_INTRO1() {
- return "\f00\v082\t040\x3"
- "cKing Burlock\v190\t040Peasants\v082\t247"
- "Lord Xeen\v190\t258Xeen's Pet\v179\t150Crodo";
- }
-
- const char *DARKSIDE_ENDING1() {
- return "\n\x3" "cCongratulations\n"
- "\n"
- "Your Final Score is:\n"
- "\n"
- "%010lu\n"
- "\x3" "l\n"
- "Please send this score to the Ancient's Headquarters "
- "where you'll be added to the Hall of Legends!\n"
- "\n"
- "Ancient's Headquarters\n"
- "New World Computing, Inc.\n"
- "P.O. Box 4302\n"
- "Hollywood, CA 90078";
- }
-
- const char *DARKSIDE_ENDING2() {
- return "\n"
- "Adventurers,\n"
- "\n"
- "I will save your game in Castleview.\n"
- "\n"
- "The World of Xeen still needs you!\n"
- "\n"
- "Load your game afterwards and come visit me in the "
- "Great Pyramid for further instructions";
- }
-
- const char *PHAROAH_ENDING_TEXT1() {
- return "\fd\v001\t001%s\x3" "c\t000\v180Press a Key!\x3" "l";
- }
-
- const char *PHAROAH_ENDING_TEXT2() {
- return "\f04\v000\t000%s\x3" "c\t000\v180Press a Key!\x3" "l\fd";
- }
-};
-
-class RU : public LangConstants {
-public:
- const char *CLOUDS_CREDITS() {
- return
- "\v012\t000\x3""c\f35¤¥ï ¨ à㪮¢®¤á⢮ ¯à®¥ªâ®¬:\n"
- "\f17¦® ¥£¥¬\x3""l\n"
- "\n"
- "\t025\f35à®£à ¬¬¨áâë:\n"
- "\t035\f17 ઠ®«¤ãí««\n"
- "\t035¥©¢ íâíãí©\n"
- "\n"
- "\t025\f35㤨®á¨á⥬ ¨ §¢ãª:\n"
- "\t035\f17®¤¤ ¥¤à¨ªá\n"
- "\n"
- "\t025\f35ã§ëª ¨ à¥çì:\n"
- "\t035\f17¨¬ ««¨\n"
- "\n"
- "\t025\f35æ¥ à¨©:\n"
- "\t035\f17®« â¥à\n"
- "\t035¥¡¡¨ ñàä¨\n"
- "\t035¦® ¥£¥¬\v012\n"
- "\n"
- "\n"
- "\t180\f35㤮¦¨ª¨:\n"
- "\t190\f17㨠¦®á®\n"
- "\t190¦® â . ¢¨\n"
- "\t190®¨â ®£-¥¬á â\n"
- "\t190¦ã«¨ï « ®\n"
- "\t190¨ª म àà¥à \n"
- "\n"
- "\t180\f35¥áâ¥àë:\n"
- "\t190\f17¥¤¦ ¬¨ ¥â\n"
- "\t190 ਮ ᪠¬¨«« \n"
- "\t190¨ç ठᯨ\n"
- "\t190ª®ââ ª¤í¨¥«\n"
- "\t190«¥©â® ¥â§¥à\n"
- "\t190 ©ª« ã à¥á\x3""c";
- }
-
- const char *DARK_SIDE_CREDITS() {
- return
- "\v012\t000\x3""c\f35Designed and Directed By:\n"
- "\f17Jon Van Caneghem\x3l\n"
- "\n"
- "\t025\f35Programming:\n"
- "\t035\f17Mark Caldwell\n"
- "\t035Dave Hathaway\n"
- "\n"
- "\t025\f35Sound System & FX:\n"
- "\t035\f17Mike Heilemann\n"
- "\n"
- "\t025\f35Music & Speech:\n"
- "\t035\f17Tim Tully\n"
- "\n"
- "\t025\f35Writing:\n"
- "\t035\f17Paul Rattner\n"
- "\t035Debbie Van Caneghem\n"
- "\t035Jon Van Caneghem\v012\n"
- "\n"
- "\n"
- "\t180\f35Graphics:\n"
- "\t190\f17Jonathan P. Gwyn\n"
- "\t190Bonita Long-Hemsath\n"
- "\t190Julia Ulano\n"
- "\t190Ricardo Barrera\n"
- "\n"
- "\t180\f35Testing:\n"
- "\t190\f17Benjamin Bent\n"
- "\t190Christian Dailey\n"
- "\t190Mario Escamilla\n"
- "\t190Marco Hunter\n"
- "\t190Robert J. Lupo\n"
- "\t190Clayton Retzer\n"
- "\t190David Vela\x3""c";
- }
-
- const char *SWORDS_CREDITS1() {
- return "\v012\x3"
- "c\f35Published By New World Computing, Inc.\f17\n"
- "Developed By CATware, Inc.\x3l\n"
- "\f01Design and Direction\t180Series Created by\n"
- "\t020Bill Fawcett\t190John Van Caneghem\n"
- "\n"
- "\t010Story Contributions\t180Producer & Manual\n"
- "\t020Ellen Guon\t190Dean Rettig\n"
- "\n"
- "\t010Programming & Ideas\t180Original Programming\n"
- "\t020David Potter\t190Mark Caldwell\n"
- "\t020Rod Retterath\t190Dave Hathaway\n"
- "\n"
- "\t010Manual Illustrations\t180Graphic Artists\n"
- "\t020Todd Cameron Hamilton\t190Jonathan P. Gwyn\n"
- "\t020James Clouse\t190Bonnie Long-Hemsath\n"
- "\t190Julia Ulano\n"
- "\t190Ricardo Barrera\n";
- }
-
- const char *SWORDS_CREDITS2() {
- return "\f05\v012\t000\x3l\n"
- "\t100Sound Programming\n"
- "\t110Todd Hendrix\n"
- "\n"
- "\t100Music\n"
- "\t110Tim Tully\n"
- "\t110Quality Assurance Manager\n"
- "\t110Peter Ryu\n"
- "\t100Testers\n"
- "\t110Walter Johnson\n"
- "\t110Bryan Farina\n"
- "\t110David Baton\n"
- "\t110Jack Nalls\n";
- }
-
- const char *OPTIONS_MENU() {
- return
- "\r\x1\x3""c\fd¥ç ¨ £¨ï\n"
- "%s ᨠ\x2\n"
- "\v%.3dCopyright (c) %d NWC, Inc.\n"
- "All Rights Reserved\x1";
- }
-
- const char **GAME_NAMES() {
- delete[] _gameNames;
- _gameNames = new const char *[3] { "¡« ª ", "Darkside", "World" };
- return _gameNames;
- }
-
- const char *THE_PARTY_NEEDS_REST() {
- return "\v012âàï¤ ã¦¤ ¥âáï ¢ ®â¤ëå¥!";
- }
-
- const char *WHO_WILL() {
- return "\x3""c\v000\t000%s\n\n%s?\n\v055F1 - F%d";
- }
-
- const char *HOW_MUCH() {
- return "\x3""cª®«ìª®\n\n";
- }
-
- const char *WHATS_THE_PASSWORD() {
- return "\x3"
- "cWhat's the Password?\n"
- "\n"
- "Please turn to page %u, go to\n"
- "line %u, and type in word %u.\v067\t000Spaces are not counted as words or lines. "
- "Hyphenated words are treated as one word. Any line that has any text is considered a line."
- "\x3"
- "c\v040\t000\n";
- }
-
- const char *PASSWORD_INCORRECT() {
- return "\x3"
- "c\v040\n"
- "\f32Incorrect!\fd";
- }
-
- const char *IN_NO_CONDITION() {
- return "\v007%s ¥ ¢ á®áâ®ï¨¨ çâ®-«¨¡® ᤥ« âì!";
- }
-
- const char *NOTHING_HERE() {
- return "\x3""c\v010¤¥áì ¨ç¥£® ¥â.";
- }
-
- const char **WHO_ACTIONS() {
- delete[] _whoActions;
- _whoActions = new const char *[32] {
- "â® ®¡ëé¥â",
- "â® ®âªà®¥â",
- "â® ¢ë¯ì¥â",
- "â® ¡ã¤¥â ª®¯ âì",
- "â® ¯®âண ¥â",
- "â® ¯à®çâñâ",
- "®£® ãç¨âì",
- "â® ¢®§ì¬ñâ",
- "⮠㤠à¨â",
- "â® ãªà ¤ñâ",
- "â® ¤ áâ ¢§ïâªã",
- "â® § ¯« â¨â",
- "â® ¯à¨á拉â",
- "â® ¯®¯à®¡ã¥â",
- "â® ¥£® ¯®¢¥àñâ",
- "â® ¨áªã¯ñâáï",
- "â® ¥£® ã¨ç⮦¨â",
- "â® ¢ë¤¥à¥â",
- "â® á¯ãáâ¨âáï",
- "â® ¡à®á¨â ¬®¥âªã",
- "pray",
- "â® áâ ¥â ç«¥®¬",
- "act",
- "â® å®ç¥â áë£à âì",
- "â® ¦¬ñâ",
- "rub",
- "pick",
- "eat",
- "sign",
- "close",
- "look",
- "try"
- };
- return _whoActions;
- }
-
- const char **WHO_WILL_ACTIONS() {
- delete[] _whoWillActions;
- _whoWillActions = new const char *[4] {
- "âªàëâì à¥èñâªã",
- "âªàëâì ¤¢¥àì",
- " áªàëâì ᢨ⮪",
- "ë¡¥à¨â¥ ¯¥àá® ¦ "
- };
- return _whoWillActions;
- }
-
- const char **DIRECTION_TEXT_UPPER() {
- delete[] _directionTextUpper;
- _directionTextUpper = new const char *[4] { "NORTH", "EAST", "SOUTH", "WEST" };
- return _directionTextUpper;
- }
-
- const char **DIRECTION_TEXT() {
- delete[] _directionText;
- _directionText = new const char *[4] {
- "¥¢¥à",
- "®á⮪",
- "£",
- " ¯ ¤"
- };
- return _directionText;
- }
-
- const char **RACE_NAMES() {
- delete[] _raceNames;
- _raceNames = new const char *[5] {
- "¥«®¢¥ª",
- "«ìä",
- "¢®àä",
- "®¬",
- "®«ã®àª"
- };
- return _raceNames;
- }
-
- const char **ALIGNMENT_NAMES() {
- delete[] _alignmentNames;
- _alignmentNames = new const char *[3] {
- "®à®è¨©",
- "¥©âà «",
- "«®©(- ï)"
- };
- return _alignmentNames;
- }
-
- const char **SEX_NAMES() {
- delete[] _sexNames;
- _sexNames = new const char *[2] {
- "ã¦ç¨ ",
- "¥é¨ "
- };
- return _sexNames;
- }
-
- const char **SKILL_NAMES() {
- delete[] _skillNames;
- _skillNames = new const char *[18] {
- "®à®¢á⢮\t100",
- "à㦥©¨ª",
- "áâ஫®£",
- "â«¥â",
- " à⮣à ä",
- "à¥áâ®®á¥æ",
- "ã¢á⢮ ¯à ¢«¥¨ï",
- "§ëª®¢¥¤",
- "㯥æ",
- "ª «®« §",
- "âãଠ",
- "«¥¤®¯ëâ",
- " £¨áâà ¬®«¨â¢ë",
- "®¢ª®áâì ¯ «ì楢",
- "«®¢¥æ",
- "å®â¨ª",
- "®á¯à¨ï⨥",
- "ã¢á⢮ ®¯ á®áâ¨"
- };
- return _skillNames;
- }
-
- const char **CLASS_NAMES() {
- delete[] _classNames;
- _classNames = new const char *[11] {
- "ëæ àì",
- " « ¤¨",
- "ã稪",
- "«¨à¨ª",
- " £",
- "®à",
- "¨¤§ï",
- " ࢠà",
- "à㨤",
- "«¥¤®¯ëâ",
- nullptr
- };
- return _classNames;
- }
-
- const char **CONDITION_NAMES() {
- delete[] _conditionNames;
- _conditionNames = new const char *[17] {
- "ப«ï⨥",
- "Heart Broken",
- "« ¡®áâì",
- "âà ¢«¥¨¥",
- "®«¥§ì",
- "¥§ã¬¨¥",
- "«î¡«ñ(- )",
- " ¢¥á¥«¥",
- "®",
- " ã먨",
- " á¬ï⥨¨",
- " à «¨ç",
- ".á®§ ¨ï",
- "¥àâ¢",
- " ¬¥ì",
- "¨ç⮦¥",
- "®à®è¥¥"
- };
- return _conditionNames;
- }
-
- const char *GOOD() {
- return "®à®è¥¥";
- }
-
- const char *BLESSED() {
- return "\n\t014« £®á«®¢¥¨¥\t095%+d";
- }
-
- const char *POWER_SHIELD() {
- return "\n\t014¨«®¢®© é¨â\t095%+d";
- }
-
- const char *HOLY_BONUS() {
- return "\n\t014¢ï⮩ ¤ à\t095%+d";
- }
-
- const char *HEROISM() {
- return "\n\t014㦥á⢮\t095%+d";
- }
-
- const char *IN_PARTY() {
- return "\f15 ®âà拉\fd";
- }
-
- const char *PARTY_DETAILS() {
- return
- "\015\003l\002\014""00"
- "\013""001""\011""035%s"
- "\013""009""\011""035%s"
- "\013""017""\011""035%s"
- "\013""025""\011""035%s"
- "\013""001""\011""136%s"
- "\013""009""\011""136%s"
- "\013""017""\011""136%s"
- "\013""025""\011""136%s"
- "\013""044""\011""035%s"
- "\013""052""\011""035%s"
- "\013""060""\011""035%s"
- "\013""068""\011""035%s"
- "\013""044""\011""136%s"
- "\013""052""\011""136%s"
- "\013""060""\011""136%s"
- "\013""068""\011""136%s";
- }
-
- const char *PARTY_DIALOG_TEXT() {
- return
- "%s\x2\x3""c\v106\t013¢¥àå\t048¨§\t083\f37\fd¤ «\t118\f37\fdë£"
- "\t153\f37\fd®§¤\t188\f37ë\fd室\x1";
- }
-
- const char *NO_ONE_TO_ADVENTURE_WITH() {
- return " ¬ ¥ á ª¥¬ ¯ãâ¥è¥á⢮¢ âì";
- }
-
- const char *YOUR_ROSTER_IS_FULL() {
- return " è ᯨ᮪ ¯®«®!";
- }
-
- const char *PLEASE_WAIT() {
- return "\fd\x3""c\t000\v002®¤®¦¤¨â¥...";
- }
-
- const char *OOPS() {
- return "\x3""c\t000\v002¯á...";
- }
-
- const char *BANK_TEXT() {
- return
- "\r\x2\x3""c\v122\t013"
- "\f37\fdª«\t040\f37\fd\t067ESC"
- "\x1\t000\v000 ª ᨠ\v015\n"
- " ª\x3""l\n"
- "®«\x3""r\t000%s\x3""l\n"
- "«¬§\x3""r\t000%s\x3""c\n"
- "\n"
- "âàï¤\x3""l\n"
- "®«\x3""r\t000%s\x3""l\n"
- "«¬§\x3""r\t000%s";
- }
-
- const char *BLACKSMITH_TEXT() {
- return
- "\x1\r\x3""c\v000\t000"
- " ¢ª \t039\v027%s\x3""l\v046\n"
- "\t011\f37\fd¬®âà¥âì\n"
- "\t000\v090®«\x3""r\t000%s"
- "\x2\x3""c\v122\t040ESC\x1";
- }
-
- const char *GUILD_NOT_MEMBER_TEXT() {
- return "\në ¤®«¦ë ¡ëâì ç«¥®¬ £¨«ì¤¨¨, çâ®¡ë ¯®ªã¯ âì § ª«¨ ¨ï.";
- }
-
- const char *GUILD_TEXT() {
- return
- "\x3""c\v027\t039%s"
- "\x3""l\v046\n"
- "\t012\f37\fd㯨âì\n"
- "\t012\f37\fd¯¨á ¨ï";
- }
-
- const char *TAVERN_TEXT() {
- return
- "\r\x3""c\v000\t000 ¢¥à \t039"
- "\v027%s%s\x3""l\t000"
- "\v090®«\x3""r\t000%s\x2\x3""c\v122"
- "\t021\f37\fdâ¤ëå\t060ESC\x1";
- }
-
- const char *FOOD_AND_DRINK() {
- return
- "\x3""l\t017\v046\f37\fd믨âì\n"
- "\t017\f37
\fd¤ \n"
- "\t017\f37\fd ¥¢ë¥\n"
- "\t017\f37\fd«ãå¨";
- }
-
- const char *GOOD_STUFF() {
- return
- "\n"
- "\n"
- "¥¤ãà®\n"
- "\n"
- " ¦¬¨â¥ ª« ¢¨èã!";
- }
-
- const char *HAVE_A_DRINK() {
- return "\n¯¥à¢ ¢ë¯¥©â¥\n\n ¦¬¨â¥ ª« ¢¨èã!";
- }
-
- const char *YOURE_DRUNK() {
- return "\n\në ¯ìïë\n\n ¦¬¨â¥ ª« ¢¨èã!";
- }
-
- const char *TEMPLE_TEXT() {
- return
- "\r\x3""c\v000\t000à ¬"
- "\t039\v027%s\x3""l\t000\v046"
- "\f37\fd¥ç¨âì\x3""r\t000%lu\x3""l\n"
- "\f37\fd à\x3""r\t000%lu\x3""l\n"
- "\f37\fdப«\x3""r\t000%s"
- "\x3""l\t000\v090®«\x3""r\t000%s"
- "\x2\x3""c\v122\t040ESC\x1";
- }
-
- const char *EXPERIENCE_FOR_LEVEL() {
- return "%s\n㦮 %lu ®çª®¢ ®¯ëâ ¤«ï ã஢ï %u.";
- }
-
- const char *TRAINING_LEARNED_ALL() {
- return "%s\në 㦥 § ¥â¥ ¢áñ, ç¥¬ã ¬ë ¬®¦¥¬ ¢ á ãç¨âì!";
- }
-
- const char *ELIGIBLE_FOR_LEVEL() {
- return
- "%s ¬®¦¥â ®¡ãç âìáï ¤® ã஢ï %d.\x3""l\n"
- "\v081¥ \x3""r\t000%lu";
- }
-
- const char *TRAINING_TEXT() {
- return
- "\r\x3""c¡ã票¥\n"
- "\n"
- "%s\x3""l\v090\t000®«\x3""r\t000%s\x2\x3""c\v122\t021"
- "\f37\fd¡ã票¥\t060ESC\x1";
- }
-
- const char *GOLD_GEMS() {
- return
- "\x3""c\v000\t000%s\x3""l\n"
- "\n"
- "®«\x3""r\t000%s\x3""l\n"
- "«¬§\x3""r\t000%s\x2\x3""c\v096\t007\f37\fd«¬§\t035\f37\fd®«\t067ESC\x1";
- }
-
- const char *GOLD_GEMS_2() {
- return
- "\t000\v000\x3""c%s\x3""l\n"
- "\n"
- "\x4""077®«\x3""r\t000%s\x3""l\n"
- "\x4""077«¬§\x3""r\t000%s\x3""l\t000\v051\x4""077\n"
- "\x4""077";
- }
-
- const char **DEPOSIT_WITHDRAWL() {
- delete[] _depositWithdrawl;
- _depositWithdrawl = new const char *[2] { "®«®¦¨âì áçñâ", "ïâì á® áçñâ " };
- return _depositWithdrawl;
- }
-
- const char *NOT_ENOUGH_X_IN_THE_Y() {
- return "\x3""c\v012¥¤®áâ â®ç® %s %s!\x3""l";
- }
-
- const char *NO_X_IN_THE_Y() {
- return "\x3""c\v012¥â %s %s!\x3""l";
- }
-
- const char **STAT_NAMES() {
- delete[] _statNames;
- _statNames = new const char *[16] {
- "¨« ", "⥫«¥ªâ", "¨« ¤ãå ", "«®¦¥¨¥", "ª®à®áâì",
- "¥âª®áâì", "¤ ç ", "®§à áâ", "஢¥ì", "« áá § é¨âë", "¤®à®¢ì¥",
- "窨 ¬ £¨¨", "á⮩稢®áâ¨", " ¢ëª¨", " £à ¤ë", "¯ëâ"
- };
- return _statNames;
- }
-
- const char **CONSUMABLE_NAMES() {
- delete[] _consumableNames;
- _consumableNames = new const char *[4] { "®«®â®", "«¬ §ë", "¨é ", "®áâ®ï¨¥" };
- return _consumableNames;
- }
-
- const char **WHERE_NAMES() {
- delete[] _whereNames;
- _whereNames = new const char *[2] { "ã ®âàï¤ ", "¢ ¡ ª¥" };
- return _whereNames;
- }
-
- const char *AMOUNT() {
- return "\x3""c\t000\v051ª®«ìª®\x3""l\n";
- }
-
- const char *FOOD_PACKS_FULL() {
- return "\v007 è¨ à ª¨ 㦥 ¯®«¥ë!";
- }
-
- const char *BUY_SPELLS() {
- return
- "\x3""c\v027\t039%s\x3""l\v046\n"
- "\t012\f37\fd㯨âì\n"
- "\t012\f37\fd¯¨á ¨ï";
- }
-
- const char *GUILD_OPTIONS() {
- return
- "\x1\r\f00\x3""c\v000\t000¨«ì¤¨ï\n"
- "%s\x3""l\t000\v090®«"
- "\x3""r\t000%s\x2\x3""c\v122\t040ESC\x1";
- }
-
- const char *NOT_A_SPELL_CASTER() {
- return "ë ¥ § ª«¨ ⥫ì...";
- }
-
- const char *SPELLS_LEARNED_ALL() {
- return
- "ë 㦥 § ¥â¥ ¢áñ,\n"
- "\t010ç¥¬ã ¬ë ¬®¦¥¬ ¢ á\n"
- "\t010 ãç¨âì!\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n";
- }
-
- const char *SPELLS_FOR() {
- return "\r\fd%s\x2\x3""c\t000\v002 ª«¨ ¨ï";
- }
-
- const char *SPELL_LINES_0_TO_9() {
- return "\x2\x3l\v015\t0011\n2\n3\n4\n5\n6\n7\n8\n9\n0";
- }
-
- const char *SPELLS_DIALOG_SPELLS() {
- return
- "\x3l\v015"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l\n"
- "\t010\f%2u%s\fd\x3l"
- "\t004\v110%s - %u\x1";
- }
-
- const char *SPELL_PTS() {
- return " ";
- }
-
- const char *GOLD() {
- return "®«";
- }
-
- const char *SPELL_INFO() {
- return
- "\x3""c\f09%s\fd\x3""l\n"
- "\n"
- "%s\x3""c\t000\v110. ª« ¢¨èã!";
- }
-
- const char *SPELL_PURCHASE() {
- return
- "\x3""l\v000\t000\fd%s ¥« ¥â¥ ¯à¨®¡à¥á⨠"
- "\f09%s\fd § %u?";
- }
-
- const char *MAP_TEXT() {
- return
- "\x3""c\v000\t000%s\x3l\v139"
- "\t000X = %d\x3r\t000Y = %d\x3""c\t000%s";
- }
-
- const char *LIGHT_COUNT_TEXT() {
- return "\x3""l\n\n\t024¢¥â\x3""r\t124%u";
- }
-
- const char *FIRE_RESISTENCE_TEXT() {
- return "%c%s£®ì%s%u";
- }
-
- const char *ELECRICITY_RESISTENCE_TEXT() {
- return "%c%s஬%s%u";
- }
-
- const char *COLD_RESISTENCE_TEXT() {
- return "%c%s®«®¤%s%u";
- }
-
- const char *POISON_RESISTENCE_TEXT() {
- return "%c%s¤/¨á«®â %s%u";
- }
-
- const char *CLAIRVOYANCE_TEXT() {
- return "%c%sᮢ¨¤¥¨¥%s";
- }
-
- const char *LEVITATE_TEXT() {
- return "%c%s¥¢¨â æ¨ï%s";
- }
-
- const char *WALK_ON_WATER_TEXT() {
- return "%c%s®¦¤¥¨¥ ¯® ¢®¤¥";
- }
-
- const char *GAME_INFORMATION() {
- return
- "\r\x3""c\t000\v001\f37%s ᨠ\fd\n"
- "£à®¢ ï ¨ä®à¬ æ¨ï\n"
- "\n"
- "¥£®¤ï \f37%s\fd\n"
- "\n"
- "\t032६ï\t072¥ì\t112®¤\n"
- "\t032\f37%d:%02d%c\t072%u\t112%u\fd%s";
- }
-
- const char *WORLD_GAME_TEXT() {
- return "World";
- }
-
- const char *DARKSIDE_GAME_TEXT() {
- return "Darkside";
- }
-
- const char *CLOUDS_GAME_TEXT() {
- return "¡« ª ";
- }
-
- const char *SWORDS_GAME_TEXT() {
- return "Swords";
- }
-
- const char **WEEK_DAY_STRINGS() {
- delete[] _weekDayStrings;
- _weekDayStrings = new const char *[10] {
- "¤¥áï⨤¥ì", "¯¥à¢®¤¥ì", "¢â®à®¤¥ì", "âà¥â쥤¥ì", "ç¥â¢¥à®¤¥ì",
- "¯ï⨤¥ì", "è¥á⨤¥ì", "ᥬ¨¤¥ì", "¢®á쬨¤¥ì", "¤¥¢ï⨤¥ì"
- };
- return _weekDayStrings;
- }
-
- const char *CHARACTER_DETAILS() {
- return
- "\x3""l\v041\t196%s\t000\v002%s : %s %s %s"
- "\x3""r\t053\v028\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3""l\t131\f%02u%d\fd\t196\f15%lu\fd\x3""r"
- "\t053\v051\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3""l\t131\f%02u%u\fd\t196\f15%lu\fd"
- "\x3""r\t053\v074\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3""l\t131\f15%u\fd\t196\f15%lu\fd"
- "\x3""r\t053\v097\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3""l\t131\f15%u\fd\t196\f15%u %s\fd"
- "\x3""r\t053\v120\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3""l\t131\f15%u\fd\t196\f%02u%s\fd"
- "\t245%s%s%s%s\fd";
- }
-
- const char **DAYS() {
- delete[] _days;
- _days = new const char *[3] { "¤¥ì", "¤ï", "¤¥©" };
- return _days;
- }
-
- const char *PARTY_GOLD() {
- return "®«®â®";
- }
-
- const char *PLUS_14() {
- return "\f14+";
- }
-
- const char *CHARACTER_TEMPLATE() {
- return
- "\x1\f00\r\x3""l\t029\v018¨«\t080âª\t131¤®à\t196¯ëâ"
- "\t029\v041â\t080¤ç\t131\t029\v064ãå\t080§à"
- "\t131áâ\t196«¬ §ë\t029\v087«¦\t080à¢\t131¢ª"
- "\t196¨é \t029\v110ªà\t080\t131 £à\t196®áâ®ï¨¥"
- "\x3""c\t290\v025\f37\fd¥é¨\t290\v057\f37"
- "\fdáâà\t290\v089\f37\fd¬¥\t290\v121ë室\x3""l%s";
- }
-
- const char *EXCHANGING_IN_COMBAT() {
- return "\x3""c\v007\t000® ¢à¥¬ï ¡¨â¢ë § ¯à¥é¥® ¬¥ïâìáï ¬¥áâ ¬¨!";
- }
-
- const char *CURRENT_MAXIMUM_RATING_TEXT() {
- return
- "\x2\x3""c%s\n"
- "¥©ç á / ªá¨¬ã¬\n"
- "\x3""r\t054%lu\x3""l\t058/ %lu\n"
- "\x3""c £: %s\x1";
- }
-
- const char *CURRENT_MAXIMUM_TEXT() {
- return
- "\x2\x3""c%s\n"
- "¥©ç á / ªá¨¬ã¬\n"
- "\x3""r\t054%d\x3""l\t058/ %lu";
- }
-
- const char **RATING_TEXT() {
- delete[] _ratingText;
- _ratingText = new const char *[24] {
- "¥â", "¨§¥àë©", " «ª¨©", "ç.¨§ª¨©", "¨§ª¨©", "।¨©", "®à®è¨©",
- "⫨çë©", "ë᮪¨©", "ëá®ç¥ë©", "®«ì让", "£à®¬ë©", "¤¨¢¨â¥«ìë©",
- "¥¢¥à®ïâë©", "¨£ â᪨©", " â áâ¨çë©", "§ã¬¨â¥«ìë©", "®à §¨â¥«ìë©",
- "à ¤¨®§ë©", "஬ ¤ë©", "®«®áá «ìë©", "®âàïá î騩", "㤮¢¨éë©",
- "ëá®ç ©è¨©"
- };
- return _ratingText;
- }
-
- const char *AGE_TEXT() {
- return
- "\x2\x3""c%s\n"
- "¥ªã騩 / áâ®ï騩\n"
- "\x3""r\t057%u\x3""l\t061/ %u\n"
- "\x3""c®¤¨«%s: %u / %u\x1";
- }
-
- const char *LEVEL_TEXT() {
- return
- "\x2\x3""c%s\n"
- "¥ªã騩 / ªá¨¬ã¬\n"
- "\x3""r\t054%u\x3""l\t058/ %u\n"
- "\x3""c%u â ª%s/ ã¤\x1";
- }
-
- const char *RESISTENCES_TEXT() {
- return
- "\x2\x3""c%s\x3""l\n"
- "\t020£®ì\t100%u\n"
- "\t020®«®¤\t100%u\n"
- "\t020஬\t100%u\n"
- "\t020¤\t100%u\n"
- "\t020¥à£¨ï\t100%u\n"
- "\t020 £¨ï\t100%u";
- }
-
- const char *NONE() {
- return "\n\t012¥â";
- }
-
- const char *EXPERIENCE_TEXT() {
- return
- "\x2\x3""c%s\x3""l\n"
- "\t005¥ªã騩:\t070%lu\n"
- "\t005«. ã஢¥ì:\t070%s\x1";
- }
-
- const char *ELIGIBLE() {
- return "\f12®áâ㯥\fd";
- }
-
- const char *IN_PARTY_IN_BANK() {
- return
- "\x2\x3""c%s\n"
- "%lu á ᮡ®©\n"
- "%lu ¢ ¡ ª¥\x1\x3""l";
- }
-
- const char *FOOD_TEXT() {
- return
- "\x2\x3""c%s\n"
- "%u ¯®àæ¨%c\n"
- "¢ â¨â %u %s\x1\x3""l";
- }
-
- const char *EXCHANGE_WITH_WHOM() {
- return "\t010\v005®¬¥ïâìáï á ª¥¬?";
- }
-
- const char *QUICK_REF_LINE() {
- return
- "\v%3d\t007%u)\t027%s\t110%c%c%c\x3r\t160\f%02u%u\fd"
- "\x3l\t170\f%02u%d\fd\t208\f%02u%u\fd\t247\f"
- "%02u%u\fd\t270\f%02u%c%c%c%c\fd";
- }
-
- const char *QUICK_REFERENCE() {
- return
- "\r\x3""cëáâà ï c¯à ¢ª \v012\x3""l"
- "\t007#\t027¬ï\t110«á\t147à¢\t174¤®à"
- "\t214\t242\t270®áâ"
- "%s%s%s%s%s%s%s%s"
- "\v110\t064\x3""c®«®â®\t144«¬ §ë\t224¨é \v119"
- "\t064\f15%lu\t144%lu\t224%u %s\fd";
- }
-
- const char *ITEMS_DIALOG_TEXT1() {
- return
- "\r\x2\x3""c\v021\t017àã\f37¦\fd\t051\f37\fdà®ï\t085"
- "\f37\fdªà è\t119\f37\fd §\t153%s\t187%s\t221%s\t255%s\t289ë室";
- }
-
- const char *ITEMS_DIALOG_TEXT2() {
- return
- "\r\x2\x3""c\v021\t017àã\f37¦\fd\t051\f37\fdà®ï\t085"
- "\f37\fdªà è\t119\f37\fd §\t153\f37%s\t289ë室";
- }
-
- const char *ITEMS_DIALOG_LINE1() {
- return "\x3r\f%02u\t023%2d)\x3l\t028%s\n";
- }
-
- const char *ITEMS_DIALOG_LINE2() {
- return "\x3r\f%02u\t023%2d)\x3l\t028%s\x3r\t000%u\n";
- }
-
- const char *BTN_BUY() {
- return "\f37\fdã¯";
- }
-
- const char *BTN_SELL() {
- return "\f37\fdத";
- }
-
- const char *BTN_IDENTIFY() {
- return "\f37\fd¯®§";
- }
-
- const char *BTN_FIX() {
- return "\f37\fd¨¨âì";
- }
-
- const char *BTN_USE() {
- return "\f37\fdá¯";
- }
-
- const char *BTN_EQUIP() {
- return "\f37\fd ¤";
- }
-
- const char *BTN_REMOVE() {
- return "\f37\fdïâì";
- }
-
- const char *BTN_DISCARD() {
- return "\f37\fdë¡à";
- }
-
- const char *BTN_QUEST() {
- return "\f37\fd ¤ ";
- }
-
- const char *BTN_ENCHANT() {
- return "\fd ç à";
- }
-
- const char *BTN_RECHARGE() {
- return "\fd¥à¥§à";
- }
-
- const char *BTN_GOLD() {
- return "\fd®«®â®";
- }
-
- const char *ITEM_BROKEN() {
- return "\f32á«®¬ ® ";
- }
-
- const char *ITEM_CURSED() {
- return "\f09¯à®ª«ïâ® ";
- }
-
- const char *ITEM_OF() {
- return "";
- }
-
- const char **BONUS_NAMES() {
- delete[] _bonusNames;
- _bonusNames = new const char *[7] {
- "", "¡¨©æë ¤à ª®®¢", "§£®ïî饣® ¬ñàâ¢ëå", "àãè¨â¥«ï £®«¥¬®¢",
- " ¢¨â¥«ï ᥪ®¬ëå", "¡¨©æë ¬®áâ஢", "¡¨©æë §¢¥à¥©"
- };
- return _bonusNames;
- }
-
- const char **WEAPON_NAMES() {
- delete[] _weaponNames;
- _weaponNames = new const char *[41] {
- nullptr, "¬¥ç ", "£« ¤¨ãá ", "¯ « è ", "ïâ £ ",
- "ª®à⨪ ", "á ¡«ï ", "¤ã¡¨ ", "⮯®à ", "ª â ", "ãç ª¨ ",
- "¢ ª¨¤§ ᨠ", "ª¨¦ « ", "¡ã« ¢ ", "楯 ", "¦¥§« ", "¬®«®â ", "ª®¯ìñ ",
- "¡¥à¤ëè ", "£«¥ä ", " «¥¡ ठ", "¯¨ª ", "ä« ¬¡¥à£ ", "â१㡥æ ",
- "¯®á®å ", "¡®¥¢®© ¬®«®â ", " £¨ â ", "¡®¥¢®© ⮯®à ", "ᥪ¨à ",
- "⮯®à ¯ « ç ", "«ãª ", "¡®«ì让 «ãª ", " à¡ «¥â ", "¯à é ",
- "¥ç - 㡨©æ ᨠ",
- "Elder LongSword ", "Elder Dagger ", "Elder Mace ", "Elder Spear ",
- "Elder Staff ", "Elder LongBow "
- };
- return _weaponNames;
- }
-
- const char **ARMOR_NAMES() {
- delete[] _armorNames;
- _armorNames = new const char *[14] {
- nullptr, "¬ â¨ï ", "ç¥èãï ", "¯ æ¨àì ", "ª®«ìç㣠",
- "îè¬ ", "¡¥åâ¥à¥æ ", "« âë ", "é¨â ",
- "è«¥¬ ", "á ¯®£¨ ", "¯« é ", " ª¨¤ª ", "¯¥àç ⪨ "
- };
- return _armorNames;
- }
-
- const char **ACCESSORY_NAMES() {
- delete[] _accessoryNames;
- _accessoryNames = new const char *[11] {
- nullptr, "ª®«ìæ® ", "¯®ïá ", "¡à®èì ", "¬¥¤ «ì ", "â «¨á¬ ", "ª ¬¥ï ",
- "áª à ¡¥© ", "ªã«® ", "®¦¥à¥«ì¥ ", " ¬ã«¥â "
- };
- return _accessoryNames;
- }
-
- const char **MISC_NAMES() {
- delete[] _miscNames;
- _miscNames = new const char *[22] {
- nullptr, "᪨¯¥âà ", "á ¬®æ¢¥â ", "ª ¬¥ì ", "èª â㫪 ", "áä¥à ", "ண ",
- "¬®¥âª ", "¦¥§« ", "ᢨá⮪ ", "§¥«ì¥ ", "ᢨ⮪ ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ",
- "¯®¤¤¥«ª ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ", "¯®¤¤¥«ª ",
- "¯®¤¤¥«ª ", "¯®¤¤¥«ª "
- };
- return _miscNames;
- }
-
- const char **SPECIAL_NAMES() {
- delete[] _specialNames;
- _specialNames = new const char *[74] {
- nullptr, "ᢥâ ", "¯à®¡ã¦¤¥¨ï", "¢®«è¥¡ëå áâ५", "¯¥à¢®© ¯®¬®é¨",
- "ªã« ª®¢", "í¥à£¥â¨ç¥áª®£® ¢§àë¢ ", "ãá믫¥¨ï", "«¥ç¥¨ï á« ¡®áâ¨",
- "«¥ç¥¨ï", "¨áªà", "èà ¯¥«¨", "९¥««¥â ", "冷¢¨âëå ®¡« ª®¢",
- "§ é¨âë ®â áâ¨å¨©", "¡®«¨", "¯à릪®¢", "ª®âà®«ï ¤ ¬®áâà ¬¨",
- "ïᮢ¨¤¥¨ï", "¨§£ ¨ï ¥¦¨â¨", "«¥¢¨â 樨", "¢®«è¥¡®£® £« § ",
- "¡« £®á«®¢¥¨ï", "®¯®§ ¨ï ¬®áâ஢", "¬®«¨©", "á¢ïâëå ¤ ஢", "¨á楫¥¨ï",
- "¯à¨à®¤®£® «¥ç¥¨ï", "¬ 类¢", "é¨â ", "¬ã¦¥á⢠", "£¨¯®§ ",
- "宦¤¥¨ï ¯® ¢®¤¥", "®¡¦¨£ î饣® 宫®¤ ", "¯®¨áª ¬®áâ஢",
- "®£¥ëå è ஢", "«ã祩 宫®¤ ", "¯à®â¨¢®ï¤¨ï", "à á¯ë«¥¨ï ª¨á«®âë",
- "¢à¥¬¥®£® ¨áª ¦¥¨ï", "ãá믫¥¨ï ¤à ª®®¢", "¢ ªæ¨ 樨", "⥫¥¯®àâ æ¨¨",
- "ᬥàâ¨", "᢮¡®¤®£® ¤¢¨¦¥¨ï", "®áâ ®¢ª¨ £®«¥¬ ", "冷¢¨âëå § «¯®¢",
- "ᬥà⥫쮣® à®ï", "ã¡¥¦¨é ", "¤ï § é¨âë", "¤ï ¬ £¨¨", "¯¨à ",
- "®£¥®£® 楯 ", "¯¥à¥§ à浪¨", "¬®à®§ ", "£®à®¤áª¨å ¯®àâ «®¢",
- "áïâ¨ï ®ª ¬¥¥¨ï", "®¦¨¢«¥¨ï ¬ñàâ¢ëå", "¤¥¬ â¥à¨ «¨§ 樨",
- "â æãîé¨å ª«¨ª®¢", "«ãëå «ã祩", "¨§¬¥¥¨ï ¢¥á ",
- "¯à¨§¬ â¨ç¥áª®£® ᢥâ ", "ç à", "¨á¯¥¯¥«¥¨ï", "á¢ïâëå á«®¢", "¢®áªà¥è¥¨ï",
- "¡ãàì", "¬¥£ ¢®«ìâ", "¨ä¥à®", "᮫¥çëå «ã祩", "¨¬¯«®§¨©",
- "¢§àë¢ §¢¥§¤ë", "!"
- };
- return _specialNames;
- }
-
- const char **ELEMENTAL_NAMES() {
- delete[] _elementalNames;
- _elementalNames = new const char *[6] {
- "£ï", "஬ ", "®«®¤ ", "¨á«®âë/¤ ", "¥à£¨¨", " £¨¨"
- };
- return _elementalNames;
- }
-
- const char **ATTRIBUTE_NAMES() {
- delete[] _attributeNames;
- _attributeNames = new const char *[10] {
- "¨« ", "⥫«¥ªâ", "¨« ¤ãå ", "ª®à®áâì", "¥âª®áâì", "¤ ç ",
- "¤®à®¢ì¥", "窨 ¬ £¨¨", "« áá § é¨âë", "®à®¢á⢮"
- };
- return _attributeNames;
- }
-
- const char **EFFECTIVENESS_NAMES() {
- delete[] _effectivenessNames;
- _effectivenessNames = new const char *[7] {
- nullptr, "à ª®®¢", "ñàâ¢ëå", "®«¥¬®¢", " ᥪ®¬ëå", "®áâ஢", "¢¥à¥©"
- };
- return _effectivenessNames;
- }
-
- const char **QUEST_ITEM_NAMES() {
- delete[] _questItemNames;
- _questItemNames = new const char *[85] {
- "à ¢® ¢« ¤¥¨ï ìîª á«®¬",
- "àãáâ «ìë© ª«îç ®â ¥¤ì¬¨®© ¡ è¨",
- "â¬ëçª ¤«ï ¡ è¨ à§®£ ",
- "«îç ®â è¨ ¢ëá襩 ¬ £¨¨",
- "à £®æ¥ë© ¬ã«¥â ¥¢¥à®£® 䨪á ",
- " ¬¥ì ëáïç¨ ¦ ᮢ",
- "⯨à î騩 ª ¬¥ì £®«¥¬®¢",
- "⯨à î騩 ª ¬¥ì ª ",
- "ª¨¯¥âà ६¥®£® ᪠¦¥¨ï",
- "®£ «¨áâë",
- "«¨ªá¨à ®ááâ ®¢«¥¨ï",
- "®«è¥¡ë© ¦¥§« 䥩",
- "¨ ¤¥¬ ¯à¨æ¥ááë ®ªá ë",
- "¢ïé¥ ï ¨£ «ì䮢",
- "ª à ¡¥© ®¯«®é¥¨ï",
- "à¨áâ ««ë 쥧®í«¥ªâà¨ç¥á⢠",
- "¢¨â®ª ã¤à®áâ¨",
- "®à¥ì ä¨àë",
- "®áâﮩ ᢨá⮪ à®ä¨ ",
- "®«è¥¡ë© ªã«® ப ",
- "ய ¢è¨© ç¥à¥¯ ¨£®®",
- "®á«¥¤¨© 梥⮪ «¥â ",
- "®á«¥¤ïï ¤®¦¤¥¢ ï ª ¯¥«ìª ¢¥áë",
- "®á«¥¤ïï ᥦ¨ª §¨¬ë",
- "®á«¥¤¨© «¨á⠮ᥨ",
- "¥ç® £®àï稩 ªã᮪ ¯¥¬§ë",
- "¥£ ªà¥¤¨â ª®à®«ï",
- " §à¥è¥¨¥ à ᪮¯ª¨",
- "㪮«ª ",
- "㪫 ¨«ë",
- "㪫 ª®à®áâ¨",
- "㪫 «®¦¥¨ï",
- "㪫 ¥âª®áâ¨",
- "㪫 ¤ ç¨",
- "áâனá⢮",
- "Pass to Castleview",
- "Pass to Sandcaster",
- "Pass to Lakeside",
- "Pass to Necropolis",
- "Pass to Olympus",
- "Key to Great Western Tower",
- "Key to Great Southern Tower",
- "Key to Great Eastern Tower",
- "Key to Great Northern Tower",
- "Key to Ellinger's Tower",
- "Key to Dragon Tower",
- "Key to Darkstone Tower",
- "Key to Temple of Bark",
- "Key to Dungeon of Lost Souls",
- "Key to Ancient Pyramid",
- "Key to Dungeon of Death",
- "Amulet of the Southern Sphinx",
- "Dragon Pharoah's Orb",
- "Cube of Power",
- "Chime of Opening",
- "Gold ID Card",
- "Silver ID Card",
- "Vulture Repellant",
- "Bridle",
- "Enchanted Bridle",
- "Treasure Map (Goto E1 x1, y11)",
- "",
- "Fake Map",
- "Onyx Necklace",
- "Dragon Egg",
- "Tribble",
- "Golden Pegasus Statuette",
- "Golden Dragon Statuette",
- "Golden Griffin Statuette",
- "Chalice of Protection",
- "Jewel of Ages",
- "Songbird of Serenity",
- "Sandro's Heart",
- "Ector's Ring",
- "Vespar's Emerald Handle",
- "Queen Kalindra's Crown",
- "Caleb's Magnifying Glass",
- "Soul Box",
- "Soul Box with Corak inside",
- "Ruby Rock",
- "Emerald Rock",
- "Sapphire Rock",
- "Diamond Rock",
- "Monga Melon",
- "Energy Disk"
- };
- return _questItemNames;
- }
-
- const char **QUEST_ITEM_NAMES_SWORDS() {
- delete[] _questItemNamesSwords;
- _questItemNamesSwords = new const char *[51] {
- "Pass to Hart", "Pass to Impery", "Pass to town3", "Pass to town4", "Pass to town5",
- "Key to Hart Sewers", "Key to Rettig's Pyramid", "Key to the Old Temple",
- "Key to Canegtut's Pyramid", "Key to Ascihep's Pyramid", "Key to Dragon Tower",
- "Key to Darkstone Tower", "Key to Temple of Bark", "Key to Dungeon of Lost Souls",
- "Key to Ancient Pyramid", "Key to Dungeon of Death", "Red Magic Hammer",
- "Green Magic Hammer", "Golden Magic Wand", "Silver Magic Hammer", "Magic Coin",
- "Ruby", "Diamond Mineral", "Emerald", "Sapphire", "Treasure Map (Goto E1 x1, y11)",
- "NOTUSED", "Melon", "Princess Crown", "Emerald Wand", "Druid Carving", "High Sign",
- "Holy Wheel", "Double Cross", "Sky Hook", "Sacred Cow", "Staff of the Mountain",
- "Hard Rock", "Soft Rock", "Rock Candy", "Ivy Plant", "Spirit Gem", "Temple of Sun holy lamp oil",
- "Noams Hammer", "Positive Orb", "Negative Orb", "FireBane Staff", "Diamond Edged Pick",
- "Monga Melon", "Energy Disk", "Old XEEN Quest Item"
- };
- return _questItemNamesSwords;
- }
-
- const char *NOT_PROFICIENT() {
- return "\t000\v007\x3""c%s ¥ ¬®¦¥â ¨á¯®«ì§®¢ âì %s!";
- }
-
- const char *NO_ITEMS_AVAILABLE() {
- return "\x3""c\n\t000¥â ¢¥é¥©.";
- }
-
- const char **CATEGORY_NAMES() {
- delete[] _categoryNames;
- _categoryNames = new const char *[4] { "à㦨¥", "à®ï", "ªà 襨ï", " §®¥" };
- return _categoryNames;
- }
-
- const char *X_FOR_THE_Y() {
- return "\x1\fd\r%s\v000\t000%s - %s %s%s\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
- }
-
- const char *X_FOR_Y() {
- return
- "\x1\fd\r\x3""l\v000\t000%s - %s\x3""r\t000%s\x3""l\v011"
- "\x2%s%s%s%s%s%s%s%s%s\x1\fd";
- }
-
- const char *X_FOR_Y_GOLD() {
- return
- "\x1\fd\r\x3""l\v000\t000%s - %s\t150®«®â® - %lu%s\x3""l\v011"
- "\x2%s%s%s%s%s%s%s%s%s\x1\fd";
- }
-
- const char *FMT_CHARGES() {
- return "\x3""r\t000 à冷¢\x3""l";
- }
-
- const char *AVAILABLE_GOLD_COST() {
- return
- "\x1\fd\r\x3""l\v000\t000%s\t150®«®â® - %lu\x3""r\t000¥ "
- "\x3""l\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
- }
-
- const char *CHARGES() {
- return " à冷¢";
- }
-
- const char *COST() {
- return "¥ ";
- }
-
- const char **ITEM_ACTIONS() {
- delete[] _itemActions;
- _itemActions = new const char *[7] {
- " ¤¥âì", "áïâì", "¨á¯®«ì§®¢ âì", "¢ëª¨ãâì", "§ ç ஢ âì", "¯¥à¥§ à廊âì",
- "ॢà â¨âì ¢ §®«®â®"
- };
- return _itemActions;
- }
-
- const char *WHICH_ITEM() {
- return "\v000 ª®© ¯à¥¤¬¥â ¢ë ¦¥« ¥â¥ %s?";
- }
-
- const char *WHATS_YOUR_HURRY() {
- return
- "\v007¥£® â®à®¯¨èìáï?\n"
- "®¤®¦¤¨, ¯®ª ¥ ¢ë¡¥à¥èìáï ®âáî¤ !";
- }
-
- const char *USE_ITEM_IN_COMBAT() {
- return "\v007â®¡ë ¨á¯®«ì§®¢ âì ¯à¥¤¬¥â ¢ ¡¨â¢¥, ¦¬¨â¥ ª®¯ªã 'á¯' ¡®ª®¢®© ¯ ¥«¨.";
- }
-
- const char *NO_SPECIAL_ABILITIES() {
- return "\v005\x3""c%s\fd¥ ¨¬¥¥â ®á®¡ëå ᢮©áâ¢!";
- }
-
- const char *CANT_CAST_WHILE_ENGAGED() {
- return "\x3""c\v007 ª«¨ ¨¥ %s ¥«ì§ï ¨á¯®«ì§®¢ âì ¢ ¡¨â¢¥!";
- }
-
- const char *EQUIPPED_ALL_YOU_CAN() {
- return "\x3""c\v007ë ¥ ¬®¦¥â¥ ¤¥âì ¡®«ìè¥ ¤¢ãå %s!";
- }
-
- const char *REMOVE_X_TO_EQUIP_Y() {
- return "\x3""c\v007 ¬ 㦮 áïâì %sçâ®¡ë ¤¥âì %s\b!";
- }
-
- const char *RING() {
- return "ª®«¥æ";
- }
-
- const char *MEDAL() {
- return "¬¥¤ «¥©";
- }
-
- const char *CANNOT_REMOVE_CURSED_ITEM() {
- return "\x3""cë ¥ ¬®¦¥â¥ áïâì ¯à®ª«ïâãî ¢¥éì!";
- }
-
- const char *CANNOT_DISCARD_CURSED_ITEM() {
- return "\x3""cë ¥ ¬®¦¥â¥ ¢ëª¨ãâì ¯à®ª«ïâãî ¢¥éì!";
- }
-
- const char *PERMANENTLY_DISCARD() {
- return "\v000\t000\x3""l모ãâì ¢á¥£¤ ? %s";
- }
-
- const char *BACKPACK_IS_FULL() {
- return "\v005\x3""c\fd%s! è à ª ¯®«®.";
- }
-
- const char **CATEGORY_BACKPACK_IS_FULL() {
- delete[] _categoryBackpackIsFull;
- _categoryBackpackIsFull = new const char *[4] {
- "\v010\t000\x3""c%s! è à ª ¯®«®.",
- "\v010\t000\x3""c%s! è à ª ¯®«®.",
- "\v010\t000\x3""c%s! è à ª ¯®«®.",
- "\v010\t000\x3""c%s! è à ª ¯®«®."
- };
- return _categoryBackpackIsFull;
- }
-
- const char *BUY_X_FOR_Y_GOLD() {
- return "\x3""l\v000\t000\fd㯨âì %s\fd § %lu §®«®â%s?";
- }
-
- const char *SELL_X_FOR_Y_GOLD() {
- return "\x3""l\v000\t000\fdத âì %s\fd § %lu §®«®â%s?";
- }
-
- const char **SELL_X_FOR_Y_GOLD_ENDINGS() {
- delete[] _sellXForYGoldEndings;
- _sellXForYGoldEndings = new const char *[2] { "®©", "ëå" };
- return _sellXForYGoldEndings;
- }
-
- const char *NO_NEED_OF_THIS() {
- return "\v005\x3""c\fd á ¥ ¨â¥à¥áã¥â %s\fd!";
- }
-
- const char *NOT_RECHARGABLE() {
- return "\v007\x3""c\fd¥¢®§¬®¦® ¯¥à¥§ à廊âì.\n%s";
- }
-
- const char *NOT_ENCHANTABLE() {
- return "\v007\t000\x3""c¥¢®§¬®¦® § ç ஢ âì.\n%s";
- }
-
- const char *SPELL_FAILED() {
- return " ª«¨ ¨¥ ¥ áà ¡®â «®!";
- }
-
- const char *ITEM_NOT_BROKEN() {
- return "\fdâ®â ¯à¥¤¬¥â ¥ á«®¬ !";
- }
-
- const char **FIX_IDENTIFY() {
- delete[] _fixIdentify;
- _fixIdentify = new const char *[2] { "®ç¨¨âì", "¯®§ âì" };
- return _fixIdentify;
- }
-
- const char *FIX_IDENTIFY_GOLD() {
- return "\x3""l\v000\t000%s %s\fd § %lu §®«®â%s?";
- }
-
- const char *IDENTIFY_ITEM_MSG() {
- return
- "\fd\v000\t000\x3""c¯®§ âì ¯à¥¤¬¥â\x3""l\n"
- "\n"
- "\v012%s\fd\n"
- "\n"
- "%s";
- }
-
- const char *ITEM_DETAILS() {
- return
- "ᯮ«ì§ãîâ ª« ááë\t132:\t140%s\n"
- "®¤¨ä¨ª â®à ãà® \t132:\t140%s\n"
- "¨§¨ç¥áª¨© ãà®\t132:\t140%s\n"
- "à® ®â â¨å¨©\t132:\t140%s\n"
- " é¨â ®â â¨å¨©\t132:\t140%s\n"
- "« áá § é¨âë\t132:\t140%s\n"
- "®ãá ᢮©á⢠\t132:\t140%s\n"
- "ᮡ®¥ ᢮©á⢮\t132:\t140%s";
- }
-
- const char *ALL() {
- return "á¥";
- }
-
- const char *FIELD_NONE() {
- return "¥â";
- }
-
- const char *DAMAGE_X_TO_Y() {
- return "%d-%d";
- }
-
- const char *ELEMENTAL_XY_DAMAGE() {
- return "%+d ãà® ®â %s";
- }
-
- const char *ATTR_XY_BONUS() {
- return "%+d %s";
- }
-
- const char *EFFECTIVE_AGAINST() {
- return "x3 ¯à®â¨¢ %s";
- }
-
- const char *QUESTS_DIALOG_TEXT() {
- return
- "\r\x2\x3""c\v021\t017\f37\fd¥é¨\t085\f37\fd ¤ ¨ï\t153"
- "\f37 \fd¬¥âª¨\t221¢¥àå\t255¨§"
- "\t289ë室";
- }
-
- const char *CLOUDS_OF_XEEN_LINE() {
- return "\b \b*-- \f04¡« ª ᨠ\fd --";
- }
-
- const char *DARKSIDE_OF_XEEN_LINE() {
- return "\b \b*-- \f04Darkside of Xeen\fd --";
- }
-
- const char *SWORDS_OF_XEEN_LINE() {
- return "\b \b*-- \f04Swords of Xeen\fd --";
- }
-
- const char *NO_QUEST_ITEMS() {
- return
- "\r\x1\fd\x3""c\v000\t000।¬¥âë § ¤ ¨©\x3""l\x2\n"
- "\n"
- "\x3""c¥â ¯à¥¤¬¥â®¢";
- }
-
- const char *NO_CURRENT_QUESTS() {
- return
- "\x3""c\v000\t000\n"
- "\n"
- "¥â § ¤ ¨©";
- }
-
- const char *NO_AUTO_NOTES() {
- return "\x3""c ¬¥â®ª ¥â";
- }
-
- const char *QUEST_ITEMS_DATA() {
- return
- "\r\x1\fd\x3""c\v000\t000।¬¥âë § ¤ ¨©\x3""l\x2\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s";
- }
-
- const char *CURRENT_QUESTS_DATA() {
- return
- "\r\x1\fd\x3""c\t000\v000 ¤ ¨ï\x3""l\x2\n"
- "%s\n"
- "\n"
- "%s\n"
- "\n"
- "%s";
- }
-
- const char *AUTO_NOTES_DATA() {
- return
- "\r\x1\fd\x3""c\t000\v000 ¬¥âª¨\x3""l\x2\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l";
- }
-
- const char *REST_COMPLETE() {
- return
- "\v000\t000à®è«® 8 ç ᮢ. â¤ëå § ª®ç¥\n"
- "%s\n"
- "ë«® áꥤ¥® %d ¯¨é¨.";
- }
-
- const char *PARTY_IS_STARVING() {
- return "\f07âàï¤ £®«®¤ ¥â!\fd";
- }
-
- const char *HIT_SPELL_POINTS_RESTORED() {
- return "¤®à®¢ì¥ ¨ ¬ ¢®ááâ ®¢«¥ë";
- }
-
- const char *TOO_DANGEROUS_TO_REST() {
- return "¤¥áì ᫨誮¬ ®¯ á® ®â¤ëå âì!";
- }
-
- const char *SOME_CHARS_MAY_DIE() {
- return "â®-â® ¨§ ®âàï¤ ¬®¦¥â 㬥à¥âì. ë ¢áñ à ¢® ¦¥« ¥â¥ ®â¤®åãâì?";
- }
-
- const char *DISMISS_WHOM() {
- return "\r\t010\v005®£® ¢ë£ âì?";
- }
-
- const char *CANT_DISMISS_LAST_CHAR() {
- return "ë ¥ ¬®¦¥â¥ ¢ë£ âì ᢮¥£® ¯®á«¥¤¥£® ¯¥àá® ¦ !";
- }
-
- const char *DELETE_CHAR_WITH_ELDER_WEAPON() {
- return "\v000\t000This character has an Elder Weapon and cannot be deleted!";
- }
-
- const char **REMOVE_DELETE() {
- delete[] _removeDelete;
- _removeDelete = new const char *[2] { "ë£ âì", "㤠«¨âì" };
- return _removeDelete;
- }
-
- const char *REMOVE_OR_DELETE_WHICH() {
- return "\x3""l\t010\v005®£® %s?";
- }
-
- const char *YOUR_PARTY_IS_FULL() {
- return "\v007 è ®âàï¤ ¯®«®!";
- }
-
- const char *HAS_SLAYER_SWORD() {
- return "\v000\t000â®â ¯¥àá® ¦ ¥ ¬®¦¥â ¡ëâì 㤠«ñ, â ª ª ª ã ¥£® ¥ç-㡨©æ ᨠ!";
- }
-
- const char *SURE_TO_DELETE_CHAR() {
- return "%s %s. ë 㢥à¥ë, çâ® å®â¨â¥ 㤠«¨âì í⮣® £¥à®ï?";
- }
-
- const char *CREATE_CHAR_DETAILS() {
- return
- "\f04\x3""c\x2\t144\v119\f37\f04à®á®ª\t144\v149\f37\f04®§¤"
- "\t144\v179\f37ESC\f04\x3""l\x1\t195\v021¨\f37«\f04"
- "\t195\v045\f37\f04â\t195\v069\f37\f04ãå\t195\v093«\f37¦\f04"
- "\t195\v116\f37ª\f04à\t195\v140\f37\f04âª\t195\v164\f37\f04¤ç%s";
- }
-
- const char *NEW_CHAR_STATS() {
- return
- "\f04\x3""l\t017\v148 á \t055: %s\n"
- "\t017®«\t055: %s\n"
- "\t017« áá\t055:\n"
- "\x3""r\t215\v031%d\t215\v055%d\t215\v079%d\t215\v103%d\t215\v127%d"
- "\t215\v151%d\t215\v175%d\x3""l\t242\v020\f%2dëæ àì\t242\v031\f%2d"
- " « ¤¨\t242\v042\f%2dã稪\t242\v053\f%2d«¨à¨ª\t242\v064\f%2d"
- " £\t242\v075\f%2d®à\t242\v086\f%2d¨¤§ï\t242\v097\f%2d"
- " ࢠà\t242\v108\f%2dà㨤\t242\v119\f%2d«¥¤®¯ëâ\f04\x3""c"
- "\t265\v142 ¢ëª¨\x2\x3""l\t223\v155%s\t223\v170%s%s\x1";
- }
-
- const char *NAME_FOR_NEW_CHARACTER() {
- return "\x3""c¢¥¤¨â¥ ¨¬ï ¯¥àá® ¦ \n\n";
- }
-
- const char *SELECT_CLASS_BEFORE_SAVING() {
- return "\v003\x3""c¥à¥¤ á®åà ¥¨¥¬ ¢ë¡¥à¨â¥ ª« áá.\x3""l";
- }
-
- const char *EXCHANGE_ATTR_WITH() {
- return "®¬¥ïâì %s á...";
- }
-
- const char *COMBAT_DETAILS() {
- return "\r\f00\x3""c\v000\t000\x2%s%s%s\x1";
- }
-
- const char *NOT_ENOUGH_TO_CAST() {
- return "\x3""c\v000¥¤®áâ â®ç® %s, çâ®¡ë § ª«¨ âì %s";
- }
-
- const char **SPELL_CAST_COMPONENTS() {
- delete[] _spellCastComponents;
- _spellCastComponents = new const char *[2] { "®çª®¢ ¬ £¨¨", " «¬ §®¢" };
- return _spellCastComponents;
- }
-
- const char *CAST_SPELL_DETAILS() {
- return
- "\r\x2\x3""c\v122\t013\f37\fd ª«\t040\f37\fd®¢"
- "\t067ESC\x1\t000\v000\x3""c ª«¨ ¨¥\n"
- "\n"
- "%s\x3""c\n"
- "\n"
- " ®â®¢®¥:\x3""c\n"
- "\n"
- "\f09%s\fd\x2\x3""l\n"
- "\v082¥ \x3""r\t000%u/%u\x3""l\n"
- "¥ª \x3""r\t000%u\x1";
- }
-
- const char *PARTY_FOUND() {
- return
- "\x3""c ©¤¥®:\n"
- "\n"
- "\x3""r\t000%lu ®«\n"
- "%lu «¬§";
- }
-
- const char *BACKPACKS_FULL_PRESS_KEY() {
- return
- "\v007\f12¨¬ ¨¥!  ª¨ ¯¥à¥¯®«¥ë!\fd\n"
- " ¦¬¨â¥ ª« ¢¨èã";
- }
-
- const char *HIT_A_KEY() {
- return "\x3""l\v120\t000\x4""077\x3""c\f37. ª« ¢¨èã\fd";
- }
-
- const char *GIVE_TREASURE_FORMATTING() {
- return
- "\x3l\v060\t000\x4""077\n"
- "\x4""077\n"
- "\x4""077\n"
- "\x4""077\n"
- "\x4""077\n"
- "\x4""077";
- }
-
- const char *X_FOUND_Y() {
- return "\v060\t000\x3""c%s è%s: %s";
- }
-
- const char *ON_WHO() {
- return "\x3""c\v009®£®?";
- }
-
- const char *WHICH_ELEMENT1() {
- return
- "\r\x3""c\x1 ª ï â¨å¨ï?\x2\v034\t014\f15\fd£®ì\t044"
- "\f15\fd஬\t074\f15\fd®«®¤\t104\f15\fd¤\x1";
- }
-
- const char *WHICH_ELEMENT2() {
- return
- "\r\x3""c ª ï â¨å¨ï?\x2\v034\t014\f15\fd£®ì\t044"
- "\f15\fd஬\t074\f15\fd®«®¤\t104\f15\fd¤\x1";
- }
-
- const char *DETECT_MONSTERS() {
- return "\x3""c®¨áª ¬®áâ஢";
- }
-
- const char *LLOYDS_BEACON() {
- return
- "\r\x3""c\v000\t000\x1 ïª «®©¤ \n"
- "\n"
- "®á«¥¤¥¥ ¬¥áâ®\n"
- "\n"
- "%s\x3""l\n"
- "x = %d\x3""r\t000y = %d\x3""c\x2\v122\t021\f15\fdáâ \t060\f15\fd¥à\x1";
- }
-
- const char *HOW_MANY_SQUARES() {
- return "\x3""c¥«¥¯®àâ\nª®«ìª® ª«¥â®ª %s (1-9)\n";
- }
-
- const char *TOWN_PORTAL() {
- return
- "\x3""c®à®¤áª®© ¯®àâ «\x3""l\n"
- "\n"
- "\t0101. %s\n"
- "\t0102. %s\n"
- "\t0103. %s\n"
- "\t0104. %s\n"
- "\t0105. %s\x3""c\n"
- "\n"
- " ª ª®© £®à®¤ (1-5)\n"
- "\n";
- }
-
- const char *TOWN_PORTAL_SWORDS() {
- return "\x3"
- "cTown Portal\x3l\n"
- "\n"
- "\t0101. %s\n"
- "\t0102. %s\n"
- "\t0103. %s\x3"
- "c\n"
- "\n"
- "To which Town (1-3)\n"
- "\n";
- }
-
- const char *MONSTER_DETAILS() {
- return "\x3l\n"
- "%s\x3"
- "c\t100%s\t140%u\t180%u\x3r\t000%s";
- }
-
- const char **MONSTER_SPECIAL_ATTACKS() {
- delete[] _monsterSpecialAttacks;
- _monsterSpecialAttacks = new const char *[23] {
- "¥â", " £¨ï", "£ï", "஬ ", "®«®¤ ", "âà ¢«¥¨¥", "¥à£¨¨",
- "®«¥§ì", "¥§ã¬¨¥", "®", "ફब", "«î¡«", "áã褮à", "ப«ï⨥",
- " à «¨ç", "¥áá®§", "¬ï⥨¥", "®¬à®", "« ¡®áâì", "¨ç⮦",
- "®§à áâ+5", "¥àâ¢", " ¬¥ì"
- };
- return _monsterSpecialAttacks;
- }
-
- const char *IDENTIFY_MONSTERS() {
- return "®áâà\x3""c\t155\t195\t233#â ª\x3""r\t000ᮡ®¥%s%s%s";
- }
-
- const char *MOONS_NOT_ALIGNED() {
- return "\x3""c\v012\t000®ª «ãë ¥ ¢áâ ãâ ¢ àï¤, ¢ë ¥ ᬮ¦¥â¥ ¯¥à¥©â¨ ñ¬ãî áâ®à®ã ᨠ";
- }
-
- const char *AWARDS_FOR() {
- return
- "\r\x1\fd\x3""c\v000\t000%s %s: £à ¤ë \x3""l\x2\n"
- "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\x1";
- }
-
- const char *AWARDS_TEXT() {
- return "\r\x2\x3""c\v021\t221¢¥àå\t255¨§\t289ë室";
- }
-
- const char *NO_AWARDS() {
- return "\x3""c ¯¥àá® ¦ ¥â £à ¤";
- }
-
- const char *WARZONE_BATTLE_MASTER() {
- return "ॠ\n\t125 áâ¥à ¡¨â¢ë";
- }
-
- const char *WARZONE_MAXED() {
- return "â®! ¯ïâì ¢ë? ¥ ¯à¨áâ ¢ ©â¥ ª ⥬, ªâ® ¥ ¬®¦¥â ¤ âì ᤠç¨!";
- }
-
- const char *WARZONE_LEVEL() {
- return " ª®© ã஢¥ì ¬®áâ஢? (1-10)\n";
- }
-
- const char *WARZONE_HOW_MANY() {
- return "ª®«ìª® ¬®áâ஢? (1-20)\n";
- }
-
- const char *PICKS_THE_LOCK() {
- return "\x3""c\v010%s ¢§«®¬ «%s § ¬®ª!\n ¦¬¨â¥ ª« ¢¨èã.";
- }
-
- const char *UNABLE_TO_PICK_LOCK() {
- return "\x3""c\v010%s ¥ ᬮ£%s ¢§«®¬ âì § ¬®ª!\n ¦¬¨â¥ ª« ¢¨èã.";
- }
-
- const char *CONTROL_PANEL_TEXT() {
- return
- "\x1\f00\x3""c\v000\t000 ¥«ì ã¯à ¢«¥¨ï\x3""r"
- "\v022\t045¢\f06ã\fdª:\t124\f06\fd®åà:"
- "\v041\t045\f06\fdã§.:\t124\f06®\fdåà:\v060\t045\f06\fd £à:"
- "\t124\f06\fdë室"
- "\v080\t084\f06\fd®¬®éì %s\t137 £ \t000\x1";
- }
-
- const char *CONTROL_PANEL_BUTTONS() {
- return
- "\x3""c\f11"
- "\v022\t062load\t141%s"
- "\v041\t062save\t141%s"
- "\v060\t062exit"
- "\v079\t102Help\fd";
- }
-
- const char *ON() {
- return "\f15¢ª«\f11";
- }
-
- const char *OFF() {
- return "\f32¢ëª\f11";
- }
-
- const char *CONFIRM_QUIT() {
- return "ë 㢥à¥ë, çâ® å®â¨â¥ ¢ë©â¨?";
- }
-
- const char *MR_WIZARD() {
- return "ë â®ç® å®â¨â¥ ¢®á¯®«ì§®¢ âìáï ¯®¬®éìî à. £ ?";
- }
-
- const char *NO_LOADING_IN_COMBAT() {
- return "¨ª ª¨å § £àã§®ª ¢® ¢à¥¬ï ¡¨â¢ë!";
- }
-
- const char *NO_SAVING_IN_COMBAT() {
- return "¨ª ª¨å á®åà ¥¨© ¢® ¢à¥¬ï ¡¨â¢ë!";
- }
-
- const char *QUICK_FIGHT_TEXT() {
- return
- "\r\fd\x3""c\v000\t000ëáâ஥ ¤¥©á⢨¥\n\n"
- "%s\x3""l\n\n"
- "¥ªã饥\x3""r\n"
- "\t000%s\x2\x3""c\v122\t019\f37\f04«¥¤\t055ë室\x1";
- }
-
- const char **QUICK_FIGHT_OPTIONS() {
- delete[] _quickFightOptions;
- _quickFightOptions = new const char *[4] { "â ª ", " ª«¨ ¨¥", "«®ª", "¥£á⢮" };
- return _quickFightOptions;
- }
-
- const char **WORLD_END_TEXT() {
- delete[] _worldEndText;
- _worldEndText = new const char *[9] {
- "\n\n\n\n\n\n\n"
- "Congratulations Adventurers!\n\n"
- "Let the unification ceremony begin!",
- "And so the call went out to the people throughout the lands of Xeen"
- " that the prophecy was nearing completion.",
- "They came in great numbers to witness the momentous occasion.",
- "\v026The Dragon Pharoah presided over the ceremony.",
- "\v026Queen Kalindra presented the Cube of Power.",
- "\v026Prince Roland presented the Xeen Sceptre.",
- "\v026Together, they placed the Cube of Power...",
- "\v026and the Sceptre, onto the Altar of Joining.",
- "With the prophecy complete, the two sides of Xeen were united as one",
- };
- return _worldEndText;
- }
-
- const char *WORLD_CONGRATULATIONS() {
- return "\x3"
- "cCongratulations\n\n"
- "Your Final Score is:\n\n"
- "%010lu\n"
- "\x3l\n"
- "Please send this score to the Ancient's Headquarters where "
- "you'll be added to the Hall of Legends!\n\n"
- "Ancient's Headquarters\n"
- "New World Computing, Inc.\n"
- "P.O. Box 4302\n"
- "Hollywood, CA 90078";
- }
-
- const char *WORLD_CONGRATULATIONS2() {
- return "\n\n\n\n\n\n"
- "But wait... there's more!\n"
- "\n\n"
- "Include the message\n"
- "\"%s\"\n"
- "with your final score and receive a special bonus.";
- }
-
- const char *CLOUDS_CONGRATULATIONS1() {
- return "\f23\x3l"
- "\v000\t000Please send this score to the Ancient's Headquarters "
- "where you'll be added to the Hall of Legends!\f33\x3"
- "c"
- "\v070\t000Press a Key";
- }
-
- const char *CLOUDS_CONGRATULATIONS2() {
- return "\f23\x3l"
- "\v000\t000Ancient's Headquarters\n"
- "New World Computing, Inc.\n"
- "P.O. Box 4302\n"
- "Hollywood, CA 90078-4302\f33\x3"
- "c"
- "\v070\t000Press a Key";
- }
-
- const char **GOOBER() {
- delete[] _goober;
- _goober = new const char *[3] {
- "", "I am a Goober!", "I am a Super Goober!"
- };
- return _goober;
- }
-
- const char *DIFFICULTY_TEXT() {
- return "\v000\t000\x3""cë¡¥à¨â¥ ¨£à®¢®© ०¨¬";
- }
-
- const char *SAVE_OFF_LIMITS() {
- return
- "\x3""c\v002\t000®£¨ ®ááâ ®¢«¥¨ï £à áç¨â îâ íâ® ¬¥áâ® § ¯à¥âë¬!\n"
- "¢ë, §¤¥áì ¥«ì§ï á®åà ïâìáï";
- }
-
- const char *CLOUDS_INTRO1() {
- return "\f00\v082\t040\x3"
- "cKing Burlock\v190\t040Peasants\v082\t247"
- "Lord Xeen\v190\t258Xeen's Pet\v179\t150Crodo";
- }
-
- const char *DARKSIDE_ENDING1() {
- return "\n\x3"
- "cCongratulations\n"
- "\n"
- "Your Final Score is:\n"
- "\n"
- "%010lu\n"
- "\x3"
- "l\n"
- "Please send this score to the Ancient's Headquarters "
- "where you'll be added to the Hall of Legends!\n"
- "\n"
- "Ancient's Headquarters\n"
- "New World Computing, Inc.\n"
- "P.O. Box 4302\n"
- "Hollywood, CA 90078";
- }
-
- const char *DARKSIDE_ENDING2() {
- return "\n"
- "Adventurers,\n"
- "\n"
- "I will save your game in Castleview.\n"
- "\n"
- "The World of Xeen still needs you!\n"
- "\n"
- "Load your game afterwards and come visit me in the "
- "Great Pyramid for further instructions";
- }
-
- const char *PHAROAH_ENDING_TEXT1() {
- return "\fd\v001\t001%s\x3"
- "c\t000\v180Press a Key!\x3"
- "l";
- }
-
- const char *PHAROAH_ENDING_TEXT2() {
- return "\f04\v000\t000%s\x3"
- "c\t000\v180Press a Key!\x3"
- "l\fd";
- }
-};
+#include "en_constants.h"
+#include "ru_constants.h"
+
+void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
+ Common::MemFile file;
+ file.syncString(CLOUDS_CREDITS());
+ file.syncString(DARK_SIDE_CREDITS());
+ file.syncString(SWORDS_CREDITS1());
+ file.syncString(SWORDS_CREDITS2());
+ file.syncString(OPTIONS_MENU());
+ file.syncStrings(GAME_NAMES(), 3);
+ delete[] _gameNames;
+ _gameNames = NULL;
+ file.syncString(THE_PARTY_NEEDS_REST());
+ file.syncString(WHO_WILL());
+ file.syncString(HOW_MUCH());
+ file.syncString(WHATS_THE_PASSWORD());
+ file.syncString(PASSWORD_INCORRECT());
+ file.syncString(IN_NO_CONDITION());
+ file.syncString(NOTHING_HERE());
+ file.syncStrings(TERRAIN_TYPES, 6);
+ file.syncStrings(OUTDOORS_WALL_TYPES, 16);
+ file.syncStrings(SURFACE_NAMES, 16);
+ file.syncStrings(WHO_ACTIONS(), 32);
+ delete[] _whoActions;
+ _whoActions = NULL;
+ file.syncStrings(WHO_WILL_ACTIONS(), 4);
+ delete[] _whoWillActions;
+ _whoWillActions = NULL;
+ file.syncBytes2D((const byte *)SYMBOLS, 20, 64);
+ file.syncBytes2D((const byte *)TEXT_COLORS, 40, 4);
+ file.syncBytes2D((const byte *)TEXT_COLORS_STARTUP, 40, 4);
+ file.syncStrings(DIRECTION_TEXT_UPPER(), 4);
+ delete[] _directionTextUpper;
+ _directionTextUpper = NULL;
+ file.syncStrings(DIRECTION_TEXT(), 4);
+ delete[] _directionText;
+ _directionText = NULL;
+ file.syncStrings(RACE_NAMES(), 5);
+ delete[] _raceNames;
+ _raceNames = NULL;
+ file.syncNumbers(RACE_HP_BONUSES, 5);
+ file.syncNumbers2D((const int *)RACE_SP_BONUSES, 5, 2);
+ file.syncStrings(CLASS_NAMES(), 11);
+ delete[] _classNames;
+ _classNames = NULL;
+ file.syncNumbers(CLASS_EXP_LEVELS, 10);
+ file.syncStrings(ALIGNMENT_NAMES(), 3);
+ delete[] _alignmentNames;
+ _alignmentNames = NULL;
+ file.syncStrings(SEX_NAMES(), 2);
+ delete[] _sexNames;
+ _sexNames = NULL;
+ file.syncStrings(SKILL_NAMES(), 18);
+ delete[] _skillNames;
+ _skillNames = NULL;
+ file.syncStrings(CONDITION_NAMES(), 17);
+ delete[] _conditionNames;
+ _conditionNames = NULL;
+ file.syncNumbers(CONDITION_COLORS, 17);
+ file.syncString(GOOD());
+ file.syncString(BLESSED());
+ file.syncString(POWER_SHIELD());
+ file.syncString(HOLY_BONUS());
+ file.syncString(HEROISM());
+ file.syncString(IN_PARTY());
+ file.syncString(PARTY_DETAILS());
+ file.syncString(PARTY_DIALOG_TEXT());
+ file.syncNumbers(FACE_CONDITION_FRAMES, 17);
+ file.syncNumbers(CHAR_FACES_X, 6);
+ file.syncNumbers(HP_BARS_X, 6);
+ file.syncString(NO_ONE_TO_ADVENTURE_WITH());
+ file.syncBytes2D((const byte *)DARKNESS_XLAT, 3, 256);
+ file.syncString(YOUR_ROSTER_IS_FULL());
+ file.syncString(PLEASE_WAIT());
+ file.syncString(OOPS());
+ file.syncNumbers2D((const int *)SCREEN_POSITIONING_X, 4, 48);
+ file.syncNumbers2D((const int *)SCREEN_POSITIONING_Y, 4, 48);
+ file.syncNumbers(MONSTER_GRID_BITMASK, 12);
+ file.syncNumbers2D((const int *)INDOOR_OBJECT_X, 2, 12);
+ file.syncNumbers2D((const int *)MAP_OBJECT_Y, 2, 12);
+ file.syncNumbers(INDOOR_MONSTERS_Y, 4);
+ file.syncNumbers2D((const int *)OUTDOOR_OBJECT_X, 2, 12);
+ file.syncNumbers(OUTDOOR_MONSTER_INDEXES, 26);
+ file.syncNumbers(OUTDOOR_MONSTERS_Y, 26);
+ file.syncNumbers2D((const int *)DIRECTION_ANIM_POSITIONS, 4, 4);
+ file.syncBytes2D((const byte *)WALL_SHIFTS, 4, 48);
+ file.syncNumbers(DRAW_NUMBERS, 25);
+ file.syncNumbers2D((const int *)DRAW_FRAMES, 25, 2);
+ file.syncNumbers(COMBAT_FLOAT_X, 8);
+ file.syncNumbers(COMBAT_FLOAT_Y, 8);
+ file.syncNumbers2D((const int *)MONSTER_EFFECT_FLAGS, 15, 8);
+ file.syncNumbers2D((const int *)SPELLS_ALLOWED, 3, 40);
+ file.syncNumbers(BASE_HP_BY_CLASS, 10);
+ file.syncNumbers(AGE_RANGES, 10);
+ file.syncNumbers2D((const int *)AGE_RANGES_ADJUST, 2, 10);
+ file.syncNumbers(STAT_VALUES, 24);
+ file.syncNumbers(STAT_BONUSES, 24);
+ file.syncNumbers(ELEMENTAL_CATEGORIES, 6);
+ file.syncNumbers(ATTRIBUTE_CATEGORIES, 10);
+ file.syncNumbers(ATTRIBUTE_BONUSES, 72);
+ file.syncNumbers(ELEMENTAL_RESISTENCES, 37);
+ file.syncNumbers(ELEMENTAL_DAMAGE, 37);
+ file.syncNumbers(WEAPON_DAMAGE_BASE, 35);
+ file.syncNumbers(WEAPON_DAMAGE_MULTIPLIER, 35);
+ file.syncNumbers(METAL_DAMAGE, 22);
+ file.syncNumbers(METAL_DAMAGE_PERCENT, 22);
+ file.syncNumbers(METAL_LAC, 22);
+ file.syncNumbers(ARMOR_STRENGTHS, 14);
+ file.syncNumbers(MAKE_ITEM_ARR1, 6);
+ file.syncNumbers3D((const int *)MAKE_ITEM_ARR2, 6, 7, 2);
+ file.syncNumbers3D((const int *)MAKE_ITEM_ARR3, 10, 7, 2);
+ file.syncNumbers3D((const int *)MAKE_ITEM_ARR4, 2, 7, 2);
+ file.syncNumbers2D((const int *)MAKE_ITEM_ARR5, 8, 2);
+ file.syncNumbers(OUTDOOR_DRAWSTRUCT_INDEXES, 44);
+ file.syncNumbers2D((const int *)TOWN_MAXES, 2, 11);
+ file.syncStrings2D((const char *const *)TOWN_ACTION_MUSIC, 2, 7);
+ file.syncStrings(TOWN_ACTION_SHAPES, 7);
+ file.syncNumbers2D((const int *)TOWN_ACTION_FILES, 2, 7);
+ file.syncString(BANK_TEXT());
+ file.syncString(BLACKSMITH_TEXT());
+ file.syncString(GUILD_NOT_MEMBER_TEXT());
+ file.syncString(GUILD_TEXT());
+ file.syncString(TAVERN_TEXT());
+ file.syncString(GOOD_STUFF());
+ file.syncString(HAVE_A_DRINK());
+ file.syncString(YOURE_DRUNK());
+ file.syncNumbers4D((const int *)TAVERN_EXIT_LIST, 2, 6, 5, 2);
+ file.syncString(FOOD_AND_DRINK());
+ file.syncString(TEMPLE_TEXT());
+ file.syncString(EXPERIENCE_FOR_LEVEL());
+ file.syncString(TRAINING_LEARNED_ALL());
+ file.syncString(ELIGIBLE_FOR_LEVEL());
+ file.syncString(TRAINING_TEXT());
+ file.syncString(GOLD_GEMS());
+ file.syncString(GOLD_GEMS_2());
+ file.syncStrings(DEPOSIT_WITHDRAWL(), 2);
+ delete[] _depositWithdrawl;
+ _depositWithdrawl = NULL;
+ file.syncString(NOT_ENOUGH_X_IN_THE_Y());
+ file.syncString(NO_X_IN_THE_Y());
+ file.syncStrings(STAT_NAMES(), 16);
+ delete[] _statNames;
+ _statNames = NULL;
+ file.syncStrings(CONSUMABLE_NAMES(), 4);
+ delete[] _consumableNames;
+ _consumableNames = NULL;
+ file.syncStrings(WHERE_NAMES(), 2);
+ delete[] _whereNames;
+ _whereNames = NULL;
+ file.syncString(AMOUNT());
+ file.syncString(FOOD_PACKS_FULL());
+ file.syncString(BUY_SPELLS());
+ file.syncString(GUILD_OPTIONS());
+ file.syncNumbers((const int *)MISC_SPELL_INDEX, 74);
+ file.syncNumbers((const int *)SPELL_COSTS, 77);
+ file.syncNumbers2D((const int *)CLOUDS_GUILD_SPELLS, 5, 20);
+ file.syncNumbers2D((const int *)DARK_SPELL_OFFSETS, 3, 39);
+ file.syncNumbers2D((const int *)DARK_SPELL_RANGES, 12, 2);
+ file.syncNumbers2D((const int *)SWORDS_SPELL_RANGES, 12, 2);
+ file.syncNumbers((const int *)SPELL_GEM_COST, 77);
+ file.syncString(NOT_A_SPELL_CASTER());
+ file.syncString(SPELLS_LEARNED_ALL());
+ file.syncString(SPELLS_FOR());
+ file.syncString(SPELL_LINES_0_TO_9());
+ file.syncString(SPELLS_DIALOG_SPELLS());
+ file.syncString(SPELL_PTS());
+ file.syncString(GOLD());
+ file.syncString(SPELL_INFO());
+ file.syncString(SPELL_PURCHASE());
+ file.syncString(MAP_TEXT());
+ file.syncString(LIGHT_COUNT_TEXT());
+ file.syncString(FIRE_RESISTENCE_TEXT());
+ file.syncString(ELECRICITY_RESISTENCE_TEXT());
+ file.syncString(COLD_RESISTENCE_TEXT());
+ file.syncString(POISON_RESISTENCE_TEXT());
+ file.syncString(CLAIRVOYANCE_TEXT());
+ file.syncString(LEVITATE_TEXT());
+ file.syncString(WALK_ON_WATER_TEXT());
+ file.syncString(GAME_INFORMATION());
+ file.syncString(WORLD_GAME_TEXT());
+ file.syncString(DARKSIDE_GAME_TEXT());
+ file.syncString(CLOUDS_GAME_TEXT());
+ file.syncString(SWORDS_GAME_TEXT());
+ file.syncStrings(WEEK_DAY_STRINGS(), 10);
+ delete[] _weekDayStrings;
+ _weekDayStrings = NULL;
+ file.syncString(CHARACTER_DETAILS());
+ file.syncStrings(DAYS(), 3);
+ file.syncString(PARTY_GOLD());
+ file.syncString(PLUS_14());
+ file.syncString(CHARACTER_TEMPLATE());
+ file.syncString(EXCHANGING_IN_COMBAT());
+ file.syncString(CURRENT_MAXIMUM_RATING_TEXT());
+ file.syncString(CURRENT_MAXIMUM_TEXT());
+ file.syncStrings(RATING_TEXT(), 24);
+ delete[] _ratingText;
+ _ratingText = NULL;
+ file.syncString(AGE_TEXT());
+ file.syncString(LEVEL_TEXT());
+ file.syncString(RESISTENCES_TEXT());
+ file.syncString(NONE());
+ file.syncString(EXPERIENCE_TEXT());
+ file.syncString(ELIGIBLE());
+ file.syncString(IN_PARTY_IN_BANK());
+ file.syncString(FOOD_TEXT());
+ file.syncString(EXCHANGE_WITH_WHOM());
+ file.syncString(QUICK_REF_LINE());
+ file.syncString(QUICK_REFERENCE());
+ file.syncNumbers2D((const int *)BLACKSMITH_MAP_IDS, 2, 4);
+ file.syncString(ITEMS_DIALOG_TEXT1());
+ file.syncString(ITEMS_DIALOG_TEXT2());
+ file.syncString(ITEMS_DIALOG_LINE1());
+ file.syncString(ITEMS_DIALOG_LINE2());
+ file.syncString(BTN_BUY());
+ file.syncString(BTN_SELL());
+ file.syncString(BTN_IDENTIFY());
+ file.syncString(BTN_FIX());
+ file.syncString(BTN_USE());
+ file.syncString(BTN_EQUIP());
+ file.syncString(BTN_REMOVE());
+ file.syncString(BTN_DISCARD());
+ file.syncString(BTN_QUEST());
+ file.syncString(BTN_ENCHANT());
+ file.syncString(BTN_RECHARGE());
+ file.syncString(BTN_GOLD());
+ file.syncString(ITEM_BROKEN());
+ file.syncString(ITEM_CURSED());
+ file.syncString(ITEM_OF());
+ file.syncStrings(BONUS_NAMES(), 7);
+ delete[] _bonusNames;
+ _bonusNames = NULL;
+ file.syncStrings(WEAPON_NAMES(), 41);
+ delete[] _weaponNames;
+ _weaponNames = NULL;
+ file.syncStrings(ARMOR_NAMES(), 14);
+ delete[] _armorNames;
+ _armorNames = NULL;
+ file.syncStrings(ACCESSORY_NAMES(), 11);
+ delete[] _accessoryNames;
+ _accessoryNames = NULL;
+ file.syncStrings(MISC_NAMES(), 22);
+ delete[] _miscNames;
+ _miscNames = NULL;
+ file.syncStrings(SPECIAL_NAMES(), 74);
+ delete[] _specialNames;
+ _specialNames = NULL;
+ file.syncStrings(ELEMENTAL_NAMES(), 6);
+ delete[] _elementalNames;
+ _elementalNames = NULL;
+ file.syncStrings(ATTRIBUTE_NAMES(), 10);
+ delete[] _attributeNames;
+ _attributeNames = NULL;
+ file.syncStrings(EFFECTIVENESS_NAMES(), 7);
+ delete[] _effectivenessNames;
+ _effectivenessNames = NULL;
+ file.syncStrings(QUEST_ITEM_NAMES(), 85);
+ delete[] _questItemNames;
+ _questItemNames = NULL;
+ file.syncStrings(QUEST_ITEM_NAMES_SWORDS(), 51);
+ delete[] _questItemNamesSwords;
+ _questItemNamesSwords = NULL;
+ file.syncNumbers((const int *)WEAPON_BASE_COSTS, 35);
+ file.syncNumbers((const int *)ARMOR_BASE_COSTS, 14);
+ file.syncNumbers((const int *)ACCESSORY_BASE_COSTS, 11);
+ file.syncNumbers((const int *)MISC_MATERIAL_COSTS, 22);
+ file.syncNumbers((const int *)MISC_BASE_COSTS, 76);
+ file.syncNumbers((const int *)METAL_BASE_MULTIPLIERS, 22);
+ file.syncNumbers((const int *)ITEM_SKILL_DIVISORS, 4);
+ file.syncNumbers((const int *)RESTRICTION_OFFSETS, 4);
+ file.syncNumbers((const int *)ITEM_RESTRICTIONS, 86);
+ file.syncString(NOT_PROFICIENT());
+ file.syncString(NO_ITEMS_AVAILABLE());
+ file.syncStrings(CATEGORY_NAMES(), 4);
+ delete[] _categoryNames;
+ _categoryNames = NULL;
+ file.syncString(X_FOR_THE_Y());
+ file.syncString(X_FOR_Y());
+ file.syncString(X_FOR_Y_GOLD());
+ file.syncString(FMT_CHARGES());
+ file.syncString(AVAILABLE_GOLD_COST());
+ file.syncString(CHARGES());
+ file.syncString(COST());
+ file.syncStrings(ITEM_ACTIONS(), 7);
+ delete[] _itemActions;
+ _itemActions = NULL;
+ file.syncString(WHICH_ITEM());
+ file.syncString(WHATS_YOUR_HURRY());
+ file.syncString(USE_ITEM_IN_COMBAT());
+ file.syncString(NO_SPECIAL_ABILITIES());
+ file.syncString(CANT_CAST_WHILE_ENGAGED());
+ file.syncString(EQUIPPED_ALL_YOU_CAN());
+ file.syncString(REMOVE_X_TO_EQUIP_Y());
+ file.syncString(RING());
+ file.syncString(MEDAL());
+ file.syncString(CANNOT_REMOVE_CURSED_ITEM());
+ file.syncString(CANNOT_DISCARD_CURSED_ITEM());
+ file.syncString(PERMANENTLY_DISCARD());
+ file.syncString(BACKPACK_IS_FULL());
+ file.syncStrings(CATEGORY_BACKPACK_IS_FULL(), 4);
+ file.syncString(BUY_X_FOR_Y_GOLD());
+ file.syncString(SELL_X_FOR_Y_GOLD());
+ file.syncStrings(SELL_X_FOR_Y_GOLD_ENDINGS(), 2);
+ delete[] _sellXForYGoldEndings;
+ _sellXForYGoldEndings = NULL;
+ file.syncString(NO_NEED_OF_THIS());
+ file.syncString(NOT_RECHARGABLE());
+ file.syncString(SPELL_FAILED());
+ file.syncString(NOT_ENCHANTABLE());
+ file.syncString(ITEM_NOT_BROKEN());
+ file.syncStrings(FIX_IDENTIFY(), 2);
+ delete[] _fixIdentify;
+ _fixIdentify = NULL;
+ file.syncString(FIX_IDENTIFY_GOLD());
+ file.syncString(IDENTIFY_ITEM_MSG());
+ file.syncString(ITEM_DETAILS());
+ file.syncString(ALL());
+ file.syncString(FIELD_NONE());
+ file.syncString(DAMAGE_X_TO_Y());
+ file.syncString(ELEMENTAL_XY_DAMAGE());
+ file.syncString(ATTR_XY_BONUS());
+ file.syncString(EFFECTIVE_AGAINST());
+ file.syncString(QUESTS_DIALOG_TEXT());
+ file.syncString(CLOUDS_OF_XEEN_LINE());
+ file.syncString(DARKSIDE_OF_XEEN_LINE());
+ file.syncString(SWORDS_OF_XEEN_LINE());
+ file.syncString(NO_QUEST_ITEMS());
+ file.syncString(NO_CURRENT_QUESTS());
+ file.syncString(NO_AUTO_NOTES());
+ file.syncString(QUEST_ITEMS_DATA());
+ file.syncString(CURRENT_QUESTS_DATA());
+ file.syncString(AUTO_NOTES_DATA());
+ file.syncString(REST_COMPLETE());
+ file.syncString(PARTY_IS_STARVING());
+ file.syncString(HIT_SPELL_POINTS_RESTORED());
+ file.syncString(TOO_DANGEROUS_TO_REST());
+ file.syncString(SOME_CHARS_MAY_DIE());
+ file.syncString(DISMISS_WHOM());
+ file.syncString(CANT_DISMISS_LAST_CHAR());
+ file.syncString(DELETE_CHAR_WITH_ELDER_WEAPON());
+ file.syncStrings(REMOVE_DELETE(), 2);
+ delete[] _removeDelete;
+ _removeDelete = NULL;
+ file.syncString(REMOVE_OR_DELETE_WHICH());
+ file.syncString(YOUR_PARTY_IS_FULL());
+ file.syncString(HAS_SLAYER_SWORD());
+ file.syncString(SURE_TO_DELETE_CHAR());
+ file.syncString(CREATE_CHAR_DETAILS());
+ file.syncString(NEW_CHAR_STATS());
+ file.syncString(NAME_FOR_NEW_CHARACTER());
+ file.syncString(SELECT_CLASS_BEFORE_SAVING());
+ file.syncString(EXCHANGE_ATTR_WITH());
+ file.syncNumbers((const int *)NEW_CHAR_SKILLS, 10);
+ file.syncNumbers((const int *)NEW_CHAR_SKILLS_OFFSET, 10);
+ file.syncNumbers((const int *)NEW_CHAR_SKILLS_LEN, 10);
+ file.syncNumbers((const int *)NEW_CHAR_RACE_SKILLS, 10);
+ file.syncNumbers((const int *)RACE_MAGIC_RESISTENCES, 5);
+ file.syncNumbers((const int *)RACE_FIRE_RESISTENCES, 5);
+ file.syncNumbers((const int *)RACE_ELECTRIC_RESISTENCES, 5);
+ file.syncNumbers((const int *)RACE_COLD_RESISTENCES, 5);
+ file.syncNumbers((const int *)RACE_ENERGY_RESISTENCES, 5);
+ file.syncNumbers((const int *)RACE_POISON_RESISTENCES, 5);
+ file.syncNumbers2D((const int *)NEW_CHARACTER_SPELLS, 10, 4);
+ file.syncString(COMBAT_DETAILS());
+ file.syncString(NOT_ENOUGH_TO_CAST());
+ file.syncStrings(SPELL_CAST_COMPONENTS(), 2);
+ delete[] _spellCastComponents;
+ _spellCastComponents = NULL;
+ file.syncString(CAST_SPELL_DETAILS());
+ file.syncString(PARTY_FOUND());
+ file.syncString(BACKPACKS_FULL_PRESS_KEY());
+ file.syncString(HIT_A_KEY());
+ file.syncString(GIVE_TREASURE_FORMATTING());
+ file.syncString(X_FOUND_Y());
+ file.syncString(ON_WHO());
+ file.syncString(WHICH_ELEMENT1());
+ file.syncString(WHICH_ELEMENT2());
+ file.syncString(DETECT_MONSTERS());
+ file.syncString(LLOYDS_BEACON());
+ file.syncString(HOW_MANY_SQUARES());
+ file.syncString(TOWN_PORTAL());
+ file.syncString(TOWN_PORTAL_SWORDS());
+ file.syncNumbers2D((const int *)TOWN_MAP_NUMBERS, 3, 5);
+ file.syncString(MONSTER_DETAILS());
+ file.syncStrings(MONSTER_SPECIAL_ATTACKS(), 23);
+ delete[] _monsterSpecialAttacks;
+ _monsterSpecialAttacks = NULL;
+ file.syncString(IDENTIFY_MONSTERS());
+ file.syncStrings(EVENT_SAMPLES, 6);
+ file.syncString(MOONS_NOT_ALIGNED());
+ file.syncString(AWARDS_FOR());
+ file.syncString(AWARDS_TEXT());
+ file.syncString(NO_AWARDS());
+ file.syncString(WARZONE_BATTLE_MASTER());
+ file.syncString(WARZONE_MAXED());
+ file.syncString(WARZONE_LEVEL());
+ file.syncString(WARZONE_HOW_MANY());
+ file.syncString(PICKS_THE_LOCK());
+ file.syncString(UNABLE_TO_PICK_LOCK());
+ file.syncString(CONTROL_PANEL_TEXT());
+ file.syncString(CONTROL_PANEL_BUTTONS());
+ file.syncString(ON());
+ file.syncString(OFF());
+ file.syncString(CONFIRM_QUIT());
+ file.syncString(MR_WIZARD());
+ file.syncString(NO_LOADING_IN_COMBAT());
+ file.syncString(NO_SAVING_IN_COMBAT());
+ file.syncString(QUICK_FIGHT_TEXT());
+ file.syncStrings(QUICK_FIGHT_OPTIONS(), 4);
+ delete[] _quickFightOptions;
+ _quickFightOptions = NULL;
+ file.syncStrings(WORLD_END_TEXT(), 9);
+ delete[] _worldEndText;
+ _worldEndText = NULL;
+ file.syncString(WORLD_CONGRATULATIONS());
+ file.syncString(WORLD_CONGRATULATIONS2());
+ file.syncString(CLOUDS_CONGRATULATIONS1());
+ file.syncString(CLOUDS_CONGRATULATIONS2());
+ file.syncStrings(GOOBER(), 3);
+ delete[] _goober;
+ _goober = NULL;
+ file.syncStrings(MUSIC_FILES1, 5);
+ file.syncStrings2D((const char *const *)MUSIC_FILES2, 6, 7);
+ file.syncString(DIFFICULTY_TEXT());
+ file.syncString(SAVE_OFF_LIMITS());
+ file.syncString(CLOUDS_INTRO1());
+ file.syncString(DARKSIDE_ENDING1());
+ file.syncString(DARKSIDE_ENDING2());
+ file.syncString(PHAROAH_ENDING_TEXT1());
+ file.syncString(PHAROAH_ENDING_TEXT2());
+
+ cc.add("CONSTANTS" + num, file);
+}
void writeConstants(CCArchive &cc) {
EN eng;
diff --git a/devtools/create_xeen/constants.h b/devtools/create_xeen/constants.h
index 32177e80ac..2159b6c30f 100644
--- a/devtools/create_xeen/constants.h
+++ b/devtools/create_xeen/constants.h
@@ -26,6 +26,1210 @@
#include "common/scummsys.h"
#include "cc.h"
+enum MagicSpell {
+ MS_AcidSpray = 0,
+ MS_Awaken = 1,
+ MS_BeastMaster = 2,
+ MS_Bless = 3,
+ MS_Clairvoyance = 4,
+ MS_ColdRay = 5,
+ MS_CreateFood = 6,
+ MS_CureDisease = 7,
+ MS_CureParalysis = 8,
+ MS_CurePoison = 9,
+ MS_CureWounds = 10,
+ MS_DancingSword = 11,
+ MS_DayOfProtection = 12,
+ MS_DayOfSorcery = 13,
+ MS_DeadlySwarm = 14,
+ MS_DetectMonster = 15,
+ MS_DivineIntervention = 16,
+ MS_DragonSleep = 17,
+ MS_ElementalStorm = 18,
+ MS_EnchantItem = 19,
+ MS_EnergyBlast = 20,
+ MS_Etheralize = 21,
+ MS_FantasticFreeze = 22,
+ MS_FieryFlail = 23,
+ MS_FingerOfDeath = 24,
+ MS_Fireball = 25,
+ MS_FirstAid = 26,
+ MS_FlyingFist = 27,
+ MS_FrostBite = 28,
+ MS_GolemStopper = 29,
+ MS_Heroism = 30,
+ MS_HolyBonus = 31,
+ MS_HolyWord = 32,
+ MS_Hynotize = 33,
+ MS_IdentifyMonster = 34,
+ MS_Implosion = 35,
+ MS_Incinerate = 36,
+ MS_Inferno = 37,
+ MS_InsectSpray = 38,
+ MS_ItemToGold = 39,
+ MS_Jump = 40,
+ MS_Levitate = 41,
+ MS_Light = 42,
+ MS_LightningBolt = 43,
+ MS_LloydsBeacon = 44,
+ MS_MagicArrow = 45,
+ MS_MassDistortion = 46,
+ MS_MegaVolts = 47,
+ MS_MoonRay = 48,
+ MS_NaturesCure = 49,
+ MS_Pain = 50,
+ MS_PoisonVolley = 51,
+ MS_PowerCure = 52,
+ MS_PowerShield = 53,
+ MS_PrismaticLight = 54,
+ MS_ProtFromElements = 55,
+ MS_RaiseDead = 56,
+ MS_RechargeItem = 57,
+ MS_Resurrection = 58,
+ MS_Revitalize = 59,
+ MS_Shrapmetal = 60,
+ MS_Sleep = 61,
+ MS_Sparks = 62,
+ MS_StarBurst = 63,
+ MS_StoneToFlesh = 64,
+ MS_SunRay = 65,
+ MS_SuperShelter = 66,
+ MS_SuppressDisease = 67,
+ MS_SuppressPoison = 68,
+ MS_Teleport = 69,
+ MS_TimeDistortion = 70,
+ MS_TownPortal = 71,
+ MS_ToxicCloud = 72,
+ MS_TurnUndead = 73,
+ MS_WalkOnWater = 74,
+ MS_WizardEye = 75,
+ NO_SPELL = 76
+};
+
+class LangConstants {
+protected:
+ const char **_gameNames = NULL;
+ const char **_whoWillActions = NULL;
+ const char **_whoActions = NULL;
+ const char **_directionText = NULL;
+ const char **_directionTextUpper = NULL;
+ const char **_raceNames = NULL;
+ const char **_sexNames = NULL;
+ const char **_alignmentNames = NULL;
+ const char **_skillNames = NULL;
+ const char **_classNames = NULL;
+ const char **_conditionNames = NULL;
+ const char **_depositWithdrawl = NULL;
+ const char **_statNames = NULL;
+ const char **_whereNames = NULL;
+ const char **_consumableNames = NULL;
+ const char **_weekDayStrings = NULL;
+ const char **_ratingText = NULL;
+ const char **_bonusNames = NULL;
+ const char **_weaponNames = NULL;
+ const char **_armorNames = NULL;
+ const char **_accessoryNames = NULL;
+ const char **_miscNames = NULL;
+ const char **_elementalNames = NULL;
+ const char **_specialNames = NULL;
+ const char **_attributeNames = NULL;
+ const char **_effectivenessNames = NULL;
+ const char **_questItemNamesSwords = NULL;
+ const char **_questItemNames = NULL;
+ const char **_categoryNames = NULL;
+ const char **_itemActions = NULL;
+ const char **_categoryBackpackIsFull = NULL;
+ const char **_fixIdentify = NULL;
+ const char **_removeDelete = NULL;
+ const char **_spellCastComponents = NULL;
+ const char **_monsterSpecialAttacks = NULL;
+ const char **_quickFightOptions = NULL;
+ const char **_goober = NULL;
+ const char **_worldEndText = NULL;
+ const char **_days = NULL;
+ const char **_sellXForYGoldEndings = NULL;
+
+public:
+ virtual const char *CLOUDS_CREDITS() = 0;
+ virtual const char *DARK_SIDE_CREDITS() = 0;
+ virtual const char *SWORDS_CREDITS1() = 0;
+ virtual const char *SWORDS_CREDITS2() = 0;
+ virtual const char *OPTIONS_MENU() = 0;
+ virtual const char **GAME_NAMES() = 0;
+ virtual const char *THE_PARTY_NEEDS_REST() = 0;
+ virtual const char *WHO_WILL() = 0;
+ virtual const char *HOW_MUCH() = 0;
+ virtual const char *WHATS_THE_PASSWORD() = 0;
+ virtual const char *PASSWORD_INCORRECT() = 0;
+ virtual const char *IN_NO_CONDITION() = 0;
+ virtual const char *NOTHING_HERE() = 0;
+
+ const char *const TERRAIN_TYPES[6] = {
+ "town", "cave", "towr", "cstl", "dung", "scfi"
+ };
+
+ const char *const OUTDOORS_WALL_TYPES[16] = {
+ nullptr, "mount", "ltree", "dtree", "grass", "snotree", "dsnotree",
+ "snomnt", "dedltree", "mount", "lavamnt", "palm", "dmount", "dedltree",
+ "dedltree", "dedltree"
+ };
+
+ const char *const SURFACE_NAMES[16] = {
+ "water.srf", "dirt.srf", "grass.srf", "snow.srf", "swamp.srf",
+ "lava.srf", "desert.srf", "road.srf", "dwater.srf", "tflr.srf",
+ "sky.srf", "croad.srf", "sewer.srf", "cloud.srf", "scortch.srf",
+ "space.srf"
+ };
+
+ virtual const char **WHO_ACTIONS() = 0;
+ virtual const char **WHO_WILL_ACTIONS() = 0;
+
+ const byte SYMBOLS[20][64] = {
+ { // 0
+ 0x00, 0x00, 0xA8, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x00, 0xA8, 0x9E, 0x9C, 0x9C, 0x9E, 0x9E, 0x9E,
+ 0xAC, 0x9C, 0xA4, 0xAC, 0xAC, 0x9A, 0x9A, 0x9A, 0xAC, 0x9E, 0xAC, 0xA8, 0xA8, 0xA6, 0x97, 0x98,
+ 0xAC, 0xA0, 0xAC, 0xAC, 0xA4, 0xA6, 0x98, 0x99, 0x00, 0xAC, 0xA0, 0xA0, 0xA8, 0xAC, 0x9A, 0x9A,
+ 0x00, 0x00, 0xAC, 0xAC, 0xAC, 0xA4, 0x9B, 0x9A, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xA0, 0x9B, 0x9B,
+ },
+ { // 1
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
+ 0x99, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x99, 0x98, 0x98, 0x98, 0x97, 0x97, 0x97, 0x97, 0x97,
+ 0x99, 0x98, 0x98, 0x99, 0x98, 0x98, 0x99, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
+ 0x9A, 0x9B, 0x9B, 0x9C, 0x9B, 0x9A, 0x9C, 0x9A, 0x9B, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x9A, 0x9B,
+ },
+ { // 2
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
+ 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x99, 0x98, 0x98, 0x99, 0x98, 0x98, 0x97, 0x98, 0x98,
+ 0x99, 0x98, 0x98, 0x98, 0x99, 0x99, 0x98, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
+ 0x9B, 0x9B, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9B, 0x99, 0x9A, 0x9B, 0x9B, 0x9A, 0x9A, 0x99, 0x9A,
+ },
+ { // 3
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
+ 0x99, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x9A, 0x98, 0x98, 0x97, 0x97, 0x98, 0x98, 0x98, 0x98,
+ 0x99, 0x99, 0x98, 0x99, 0x98, 0x98, 0x99, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
+ 0x9B, 0x9C, 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0x9C, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x9A,
+ },
+ { // 4
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
+ 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x99, 0x9A, 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
+ 0x99, 0x99, 0x98, 0x99, 0x99, 0x98, 0x98, 0x98, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
+ 0x9A, 0x9C, 0x9B, 0x9B, 0x9C, 0x9B, 0x9B, 0x9B, 0x9A, 0x99, 0x9B, 0x9B, 0x9A, 0x99, 0x9A, 0x9A,
+ },
+ { // 5
+ 0xA4, 0xA4, 0xA8, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x9E, 0x9E, 0xA0, 0xA8, 0xAC, 0x00, 0x00,
+ 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9E, 0xAC, 0x00, 0x97, 0x97, 0x97, 0x98, 0x9C, 0x9C, 0xA0, 0xAC,
+ 0x99, 0x98, 0x99, 0x99, 0x99, 0x9B, 0xA0, 0xAC, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9B, 0xA0, 0xAC,
+ 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x9A, 0x9A, 0x9B, 0x9B, 0xA4, 0xAC, 0x00,
+ },
+ { // 6
+ 0x00, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x00, 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x9B, 0x99,
+ 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x98, 0x99, 0x99,
+ 0x00, 0xAC, 0xA0, 0x9C, 0x9C, 0xA0, 0x9C, 0x9A, 0x00, 0x00, 0xAC, 0xA4, 0xA0, 0x99, 0x99, 0x99,
+ 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99,
+ },
+ { // 7
+ 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x9C, 0x99, 0x99,
+ 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x00, 0x00, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99,
+ 0x00, 0x00, 0xAC, 0xA0, 0x9B, 0xA0, 0x9E, 0x9C, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x9C, 0x99, 0x99,
+ },
+ { // 8
+ 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x9B, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x9C, 0x99, 0x00, 0xAC, 0xA4, 0x9C, 0x99, 0x9E, 0x9C, 0x99,
+ },
+ { // 9
+ 0x00, 0x00, 0xAC, 0xA4, 0xA0, 0x9C, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x9C, 0xA0, 0x9C, 0x9A,
+ 0xAC, 0xA4, 0x9C, 0x9A, 0x99, 0x99, 0x99, 0x99, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0xAC, 0xA4, 0x9C, 0x99, 0x99, 0x99, 0x99, 0x99, 0x00, 0xAC, 0xA0, 0x9C, 0x99, 0x99, 0x99, 0x99,
+ 0x00, 0xAC, 0xA4, 0x9C, 0x9A, 0x9C, 0x99, 0x99, 0x00, 0x00, 0xAC, 0xA0, 0x9C, 0x9A, 0x99, 0x99,
+ },
+ { // 10
+ 0x99, 0x99, 0x99, 0x9A, 0xA0, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
+ 0x99, 0x99, 0x9C, 0x9E, 0xA4, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x9C, 0x99, 0x9C, 0xA4, 0xAC, 0x00,
+ 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
+ 0x99, 0x99, 0x99, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x9A, 0x9B, 0x9E, 0x9C, 0x9C, 0xA4, 0xAC, 0x00,
+ },
+ { // 11
+ 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0x9E, 0xAC,
+ 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
+ 0x9C, 0x99, 0x99, 0x99, 0x9C, 0x9C, 0xA4, 0xAC, 0x99, 0x9E, 0x9E, 0x9C, 0x9C, 0xA0, 0xAC, 0x00,
+ },
+ { // 12
+ 0x99, 0x99, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x9B, 0x9C, 0x9E, 0x9C, 0x9C, 0xA4, 0xAC, 0x00,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
+ 0x99, 0x99, 0x99, 0x99, 0x9C, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xA4, 0xAC, 0x00,
+ 0x99, 0x99, 0x9C, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
+ },
+ { // 13
+ 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC, 0x00, 0x00,
+ 0x99, 0x9B, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0x00, 0x99, 0x99, 0x9A, 0x99, 0x9C, 0xA0, 0xAC, 0x00,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9C, 0xA0, 0xAC,
+ 0x99, 0x99, 0x99, 0x99, 0x9A, 0x9C, 0xA4, 0xAC, 0x99, 0x99, 0x99, 0x9A, 0x9C, 0xA4, 0xAC, 0x00,
+ },
+ { // 14
+ 0x00, 0x00, 0xAC, 0x9E, 0x9C, 0x9C, 0x9C, 0x9B, 0x00, 0xAC, 0x9C, 0xA0, 0x9E, 0xA4, 0xA4, 0xA4,
+ 0xAC, 0x9C, 0xA4, 0xAC, 0xAC, 0xAC, 0x9C, 0x9E, 0xAC, 0xA0, 0xAC, 0xA8, 0x9E, 0xA8, 0xAC, 0x99,
+ 0xAC, 0x9E, 0xAC, 0xA8, 0xAC, 0x9E, 0xA4, 0xAC, 0xAC, 0xA4, 0xA0, 0xAC, 0xAC, 0xA0, 0xA4, 0xAC,
+ 0x00, 0xAC, 0xA4, 0xA0, 0xA0, 0xA4, 0xAC, 0xA4, 0x00, 0x00, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
+ },
+ { // 15
+ 0x9C, 0x9C, 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
+ 0x9E, 0x9E, 0x9E, 0x9C, 0x9E, 0x9E, 0x9E, 0x9E, 0x99, 0x99, 0x99, 0x99, 0x99, 0x98, 0x99, 0x98,
+ 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0x9E, 0x9E, 0xA0,
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
+ },
+ { // 16
+ 0x9B, 0x9B, 0x9B, 0x9B, 0x9C, 0x9B, 0x9C, 0x9C, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
+ 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9E, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
+ 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0xA0, 0xA0, 0xA0, 0x9E, 0xA0, 0x9E, 0x9E, 0xA0,
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
+ },
+ { // 17
+ 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9C, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
+ 0x9E, 0x9E, 0x9E, 0x9C, 0x9C, 0x9C, 0x9E, 0x9E, 0x98, 0x98, 0x98, 0x99, 0x9A, 0x9A, 0x99, 0x98,
+ 0x9C, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9C, 0xA0, 0x9E, 0x9E, 0xA0, 0xA0, 0xA0, 0xA0, 0x9E,
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
+ },
+ { // 18
+ 0x9B, 0x9B, 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
+ 0x9E, 0x9E, 0x9E, 0x9E, 0x9C, 0x9C, 0x9C, 0x9E, 0x98, 0x98, 0x98, 0x98, 0x9A, 0x9A, 0x98, 0x99,
+ 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9B, 0x9C, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0xA0, 0xA0, 0xA0,
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
+ },
+ { // 19
+ 0x9C, 0x9B, 0x9C, 0x9C, 0xA0, 0xA4, 0xAC, 0x00, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0x00, 0x00,
+ 0x9E, 0x9E, 0x9C, 0x9C, 0x9E, 0xA0, 0xAC, 0x00, 0x99, 0x98, 0x98, 0x99, 0x9A, 0x9A, 0xA0, 0xAC,
+ 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0xA0, 0xAC, 0xA0, 0xA0, 0x9E, 0xA0, 0xA0, 0xA0, 0xA0, 0xAC,
+ 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xAC, 0x00, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0x00, 0x00,
+ }
+ };
+
+ const byte TEXT_COLORS[40][4] = {
+ {0x00, 0x19, 0x19, 0x19},
+ {0x00, 0x08, 0x08, 0x08},
+ {0x00, 0x0F, 0x0F, 0x0F},
+ {0x00, 0x15, 0x15, 0x15},
+ {0x00, 0x01, 0x01, 0x01},
+ {0x00, 0x21, 0x21, 0x21},
+ {0x00, 0x26, 0x26, 0x26},
+ {0x00, 0x2B, 0x2B, 0x2B},
+ {0x00, 0x31, 0x31, 0x31},
+ {0x00, 0x36, 0x36, 0x36},
+ {0x00, 0x3D, 0x3D, 0x3D},
+ {0x00, 0x41, 0x41, 0x41},
+ {0x00, 0x46, 0x46, 0x46},
+ {0x00, 0x4C, 0x4C, 0x4C},
+ {0x00, 0x50, 0x50, 0x50},
+ {0x00, 0x55, 0x55, 0x55},
+ {0x00, 0x5D, 0x5D, 0x5D},
+ {0x00, 0x60, 0x60, 0x60},
+ {0x00, 0x65, 0x65, 0x65},
+ {0x00, 0x6C, 0x6C, 0x6C},
+ {0x00, 0x70, 0x70, 0x70},
+ {0x00, 0x75, 0x75, 0x75},
+ {0x00, 0x7B, 0x7B, 0x7B},
+ {0x00, 0x80, 0x80, 0x80},
+ {0x00, 0x85, 0x85, 0x85},
+ {0x00, 0x8D, 0x8D, 0x8D},
+ {0x00, 0x90, 0x90, 0x90},
+ {0x00, 0x97, 0x97, 0x97},
+ {0x00, 0x9D, 0x9D, 0x9D},
+ {0x00, 0xA4, 0xA4, 0xA4},
+ {0x00, 0xAB, 0xAB, 0xAB},
+ {0x00, 0xB0, 0xB0, 0xB0},
+ {0x00, 0xB6, 0xB6, 0xB6},
+ {0x00, 0xBD, 0xBD, 0xBD},
+ {0x00, 0xC0, 0xC0, 0xC0},
+ {0x00, 0xC6, 0xC6, 0xC6},
+ {0x00, 0xCD, 0xCD, 0xCD},
+ {0x00, 0xD0, 0xD0, 0xD0},
+ {0x00, 0xD6, 0xD6, 0xD6},
+ {0x00, 0xDB, 0xDB, 0xDB},
+ };
+
+ const byte TEXT_COLORS_STARTUP[40][4] = {
+ {0x00, 0x19, 0x19, 0x19},
+ {0x00, 0x08, 0x08, 0x08},
+ {0x00, 0x0F, 0x0F, 0x0F},
+ {0x00, 0x15, 0x15, 0x15},
+ {0x00, 0x01, 0x01, 0x01},
+ {0x00, 0x1F, 0x1F, 0x1F},
+ {0x00, 0x26, 0x26, 0x26},
+ {0x00, 0x2B, 0x2B, 0x2B},
+ {0x00, 0x31, 0x31, 0x31},
+ {0x00, 0x36, 0x36, 0x36},
+ {0x00, 0x3D, 0x3D, 0x3D},
+ {0x00, 0x42, 0x42, 0x42},
+ {0x00, 0x46, 0x46, 0x46},
+ {0x00, 0x4C, 0x4C, 0x4C},
+ {0x00, 0x50, 0x50, 0x50},
+ {0x00, 0x55, 0x55, 0x55},
+ {0x00, 0x5D, 0x5D, 0x5D},
+ {0x00, 0x60, 0x60, 0x60},
+ {0x00, 0x65, 0x65, 0x65},
+ {0x00, 0x6C, 0x6C, 0x6C},
+ {0x00, 0x70, 0x70, 0x70},
+ {0x00, 0x75, 0x75, 0x75},
+ {0x00, 0x7B, 0x7B, 0x7B},
+ {0x00, 0x80, 0x80, 0x80},
+ {0x00, 0x85, 0x85, 0x85},
+ {0x00, 0x8D, 0x8D, 0x8D},
+ {0x00, 0x90, 0x90, 0x90},
+ {0x00, 0x97, 0x97, 0x97},
+ {0x00, 0x9D, 0x9D, 0x9D},
+ {0x00, 0xA4, 0xA4, 0xA4},
+ {0x00, 0xAB, 0xAB, 0xAB},
+ {0x00, 0xB0, 0xB0, 0xB0},
+ {0x00, 0xB6, 0xB6, 0xB6},
+ {0x00, 0xBD, 0xBD, 0xBD},
+ {0x00, 0xC0, 0xC0, 0xC0},
+ {0x00, 0xC6, 0xC6, 0xC6},
+ {0x00, 0xCD, 0xCD, 0xCD},
+ {0x00, 0xD0, 0xD0, 0xD0},
+ {0x00, 0x19, 0x19, 0x19},
+ {0x00, 0x31, 0x31, 0x31}
+ };
+
+ virtual const char **DIRECTION_TEXT_UPPER() = 0;
+ virtual const char **DIRECTION_TEXT() = 0;
+ virtual const char **RACE_NAMES() = 0;
+
+ const int RACE_HP_BONUSES[5] = {0, -2, 1, -1, 2};
+
+ const int RACE_SP_BONUSES[5][2] = {
+ {0, 0}, {2, 0}, {-1, -1}, {1, 1}, {-2, -2}
+ };
+
+ virtual const char **ALIGNMENT_NAMES() = 0;
+ virtual const char **SEX_NAMES() = 0;
+ virtual const char **SKILL_NAMES() = 0;
+ virtual const char **CLASS_NAMES() = 0;
+
+ const int CLASS_EXP_LEVELS[10] = {
+ 1500, 2000, 2000, 1500, 2000, 1000, 1500, 1500, 1500, 2000
+ };
+
+ virtual const char **CONDITION_NAMES() = 0;
+
+ const int CONDITION_COLORS[17] = {
+ 9, 9, 9, 9, 9, 9, 9, 9, 32, 32, 32, 32, 6, 6, 6, 6, 15
+ };
+
+ virtual const char *GOOD() = 0;
+ virtual const char *BLESSED() = 0;
+ virtual const char *POWER_SHIELD() = 0;
+ virtual const char *HOLY_BONUS() = 0;
+ virtual const char *HEROISM() = 0;
+ virtual const char *IN_PARTY() = 0;
+ virtual const char *PARTY_DETAILS() = 0;
+ virtual const char *PARTY_DIALOG_TEXT() = 0;
+
+ const int FACE_CONDITION_FRAMES[17] = {
+ 2, 2, 2, 1, 1, 4, 4, 4, 3, 2, 4, 3, 3, 5, 6, 7, 0
+ };
+
+ const int CHAR_FACES_X[6] = {10, 45, 81, 117, 153, 189};
+
+ const int HP_BARS_X[6] = {13, 50, 86, 122, 158, 194};
+
+ virtual const char *NO_ONE_TO_ADVENTURE_WITH() = 0;
+ virtual const char *YOUR_ROSTER_IS_FULL() = 0;
+
+ const byte DARKNESS_XLAT[3][256] = {
+ {
+ 0, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 44, 45, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 108, 109, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 124, 125, 126, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 140, 141, 142, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 168, 169, 170, 171, 172, 173, 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 188, 189, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 204, 205, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 220, 221, 222, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ }, {
+ 0, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
+ 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0,
+ 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0,
+ 104, 105, 106, 107, 108, 109, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0,
+ 120, 121, 122, 123, 124, 125, 126, 127, 0, 0, 0, 0, 0, 0, 0, 0,
+ 136, 137, 138, 139, 140, 141, 142, 143, 0, 0, 0, 0, 0, 0, 0, 0,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 184, 185, 186, 187, 188, 189, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0,
+ 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0,
+ 216, 217, 218, 219, 220, 221, 222, 223, 0, 0, 0, 0, 0, 0, 0, 0,
+ 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 0,
+ 248, 249, 250, 251, 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, 0, 0
+ }, {
+ 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, 0, 0,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, 0,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 0, 0, 0, 0,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 0, 0, 0, 0,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 0, 0, 0, 0,
+ 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 0, 0, 0, 0, 0, 0, 0, 0,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 0, 0, 0, 0,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 0, 0, 0, 0,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, 0,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 0, 0, 0
+ }
+ };
+
+ virtual const char *PLEASE_WAIT() = 0;
+ virtual const char *OOPS() = 0;
+
+ const int SCREEN_POSITIONING_X[4][48] = {
+ {
+ -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, -2, -1,
+ -1, 0, 0, 0, 1, 1, 2, -4, -3, -3, -2, -2,
+ -1, -1, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4,
+ -3, -2, -1, 0, 0, 1, 2, 3, -4, 4, 0, 0
+ }, {
+ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 1
+ }, {
+ 1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 2, 1,
+ 1, 0, 0, 0, -1, -1, -2, 4, 3, 3, 2, 2,
+ 1, 1, 0, 0, 0, -1, -1, -2, -2, -3, -3, -4,
+ 3, 2, 1, 0, 0, -1, -2, -3, 4, -4, 0, 0
+ }, {
+ 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3,
+ -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
+ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, -1
+ }
+ };
+
+ const int SCREEN_POSITIONING_Y[4][48] = {
+ {
+ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 1
+ }, {
+ 1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 2, 1,
+ 1, 0, 0, 0, -1, -1, -2, 4, 3, 3, 2, 2,
+ 1, 1, 0, 0, 0, -1, -1, -2, -2, -3, -3, -4,
+ 3, 2, 1, 0, 0, -1, -2, -3, 4, -4, 0, 0
+ }, {
+ 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3,
+ -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
+ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, -1
+ }, {
+ -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, -2, -1,
+ -1, 0, 0, 0, 1, 1, 2, -4, -3, -3, -2, -2,
+ -1, -1, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4,
+ -3, -2, -1, 0, 0, 1, 2, 3, -4, 4, 0, 0
+ }
+ };
+
+ const int MONSTER_GRID_BITMASK[12] = {
+ 0xC, 8, 4, 0, 0xF, 0xF000, 0xF00, 0xF0, 0xF00, 0xF0, 0x0F, 0xF000
+ };
+
+ const int INDOOR_OBJECT_X[2][12] = {
+ { -5, -7, -112, 98, -8, -65, 49, -9, -34, 16, -58, 40 },
+ { -35, -35, -142, 68, -35, -95, 19, -35, -62, -14, -98, 16 }
+ };
+
+ const int MAP_OBJECT_Y[2][12] = {
+ { 2, 25, 25, 25, 50, 50, 50, 58, 58, 58, 58, 58 },
+ { -65, -6, -6, -6, 36, 36, 36, 54, 54, 54, 54, 54 }
+ };
+
+ const int INDOOR_MONSTERS_Y[4] = { 2, 34, 53, 59 };
+
+ const int OUTDOOR_OBJECT_X[2][12] = {
+ { -5, -7, -112, 98, -8, -77, 61, -9, -43, 25, -74, 56 },
+ { -35, -35, -142, 68, -35, -95, 19, -35, -62, -24, -98, 16 }
+ };
+
+ const int OUTDOOR_MONSTER_INDEXES[26] = {
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 69, 70,
+ 71, 72, 73, 74, 75, 90, 91, 92, 93, 94, 112, 115, 118
+ };
+
+ const int OUTDOOR_MONSTERS_Y[26] = {
+ 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 53, 53,
+ 53, 53, 53, 53, 53, 34, 34, 34, 34, 34, 2, 2, 2
+ };
+
+ const int DIRECTION_ANIM_POSITIONS[4][4] = {
+ { 0, 1, 2, 3 }, { 3, 0, 1, 2 }, { 2, 3, 0, 1 }, { 1, 2, 3, 0 }
+ };
+
+ const byte WALL_SHIFTS[4][48] = {
+ {
+ 12, 0, 12, 8, 12, 12, 0, 12, 8, 12, 12, 0,
+ 12, 0, 12, 8, 12, 8, 12, 12, 0, 12, 0, 12,
+ 0, 12, 0, 12, 8, 12, 8, 12, 8, 12, 8, 12,
+ 0, 0, 0, 0, 8, 8, 8, 8, 0, 0, 4, 4
+ }, {
+ 8, 12, 8, 4, 8, 8, 12, 8, 4, 8, 8, 12,
+ 8, 12, 8, 4, 8, 4, 8, 8, 12, 8, 12, 8,
+ 12, 8, 12, 8, 4, 8, 4, 8, 4, 8, 4, 8,
+ 12, 12, 12, 12, 4, 4, 4, 4, 0, 0, 0, 0
+ }, {
+ 4, 8, 4, 0, 4, 4, 8, 4, 0, 4, 4, 8,
+ 4, 8, 4, 0, 4, 0, 4, 4, 8, 4, 8, 4,
+ 8, 4, 8, 4, 0, 4, 0, 4, 0, 4, 0, 4,
+ 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 12, 12
+ }, {
+ 0, 4, 0, 12, 0, 0, 4, 0, 12, 0, 0, 4,
+ 0, 4, 0, 12, 0, 12, 0, 0, 4, 0, 4, 0,
+ 4, 0, 4, 0, 12, 0, 12, 0, 12, 0, 12, 0,
+ 4, 4, 4, 4, 12, 12, 12, 12, 0, 0, 8, 8
+ }
+ };
+
+ const int DRAW_NUMBERS[25] = {
+ 36, 37, 38, 43, 42, 41,
+ 39, 20, 22, 24, 33, 31,
+ 29, 26, 10, 11, 18, 16,
+ 13, 5, 9, 6, 0, 4, 1
+ };
+
+ const int DRAW_FRAMES[25][2] = {
+ { 18, 24 }, { 19, 23 }, { 20, 22 }, { 24, 18 }, { 23, 19 }, { 22, 20 },
+ { 21, 21 }, { 11, 17 }, { 12, 16 }, { 13, 15 }, { 17, 11 }, { 16, 12 },
+ { 15, 13 }, { 14, 14 }, { 6, 10 }, { 7, 9 }, { 10, 6 }, { 9, 7 },
+ { 8, 8 }, { 3, 5 }, { 5, 3 }, { 4, 4 }, { 0, 2 }, { 2, 0 },
+ { 1, 1 }
+ };
+
+ const int COMBAT_FLOAT_X[8] = { -2, -1, 0, 1, 2, 1, 0, -1 };
+
+ const int COMBAT_FLOAT_Y[8] = { -2, 0, 2, 0, -1, 0, 2, 0 };
+
+ const int MONSTER_EFFECT_FLAGS[15][8] = {
+ { 0x104, 0x105, 0x106, 0x107, 0x108, 0x109, 0x10A, 0x10B },
+ { 0x10C, 0x10D, 0x10E, 0x10F, 0x0, 0x0, 0x0, 0x0 },
+ { 0x110, 0x111, 0x112, 0x113, 0x0, 0x0, 0x0, 0x0 },
+ { 0x114, 0x115, 0x116, 0x117, 0x0, 0x0, 0x0, 0x0 },
+ { 0x200, 0x201, 0x202, 0x203, 0x0, 0x0, 0x0, 0x0 },
+ { 0x300, 0x301, 0x302, 0x303, 0x400, 0x401, 0x402, 0x403 },
+ { 0x500, 0x501, 0x502, 0x503, 0x0, 0x0, 0x0, 0x0 },
+ { 0x600, 0x601, 0x602, 0x603, 0x0, 0x0, 0x0, 0x0 },
+ { 0x604, 0x605, 0x606, 0x607, 0x608, 0x609, 0x60A, 0x60B },
+ { 0x60C, 0x60D, 0x60E, 0x60F, 0x0, 0x0, 0x0, 0x0 },
+ { 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100 },
+ { 0x101, 0x101, 0x101, 0x101, 0x101, 0x101, 0x101, 0x101 },
+ { 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102 },
+ { 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103 },
+ { 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108 }
+ };
+
+ const int SPELLS_ALLOWED[3][40] = {
+ {
+ 0, 1, 2, 3, 5, 6, 7, 8, 9, 10,
+ 12, 14, 16, 23, 26, 27, 28, 30, 31, 32,
+ 33, 42, 46, 48, 49, 50, 52, 55, 56, 58,
+ 59, 62, 64, 65, 67, 68, 71, 73, 74, 76
+ }, {
+ 1, 4, 11, 13, 15, 17, 18, 19, 20, 21,
+ 22, 24, 25, 29, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 47, 51, 53, 54,
+ 57, 60, 61, 63, 66, 69, 70, 72, 75, 76
+ }, {
+ 0, 1, 2, 3, 4, 5, 7, 9, 10, 20,
+ 25, 26, 27, 28, 30, 31, 34, 38, 40, 41,
+ 42, 43, 44, 45, 49, 50, 52, 53, 55, 59,
+ 60, 61, 62, 67, 68, 72, 73, 74, 75, 76
+ }
+ };
+
+ const int BASE_HP_BY_CLASS[10] = { 10, 8, 7, 5, 4, 8, 7, 12, 6, 9 };
+
+ const int AGE_RANGES[10] = { 1, 6, 11, 18, 36, 51, 76, 101, 201, 0xffff };
+
+ const int AGE_RANGES_ADJUST[2][10] = {
+ { -250, -50, -20, -10, 0, -2, -5, -10, -20, -50 },
+ { -250, -50, -20, -10, 0, 2, 5, 10, 20, 50 }
+ };
+
+ const int STAT_VALUES[24] = {
+ 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 25, 30, 35, 40,
+ 50, 75, 100, 125, 150, 175, 200, 225, 250, 65535
+ };
+
+ const int STAT_BONUSES[24] = {
+ -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20
+ };
+
+ const int ELEMENTAL_CATEGORIES[6] = { 8, 15, 20, 25, 33, 36 };
+
+ const int ATTRIBUTE_CATEGORIES[10] = {
+ 9, 17, 25, 33, 39, 45, 50, 56, 61, 72
+ };
+
+ const int ATTRIBUTE_BONUSES[72] = {
+ 2, 3, 5, 8, 12, 17, 23, 30, 38, 47, // Might bonus
+ 2, 3, 5, 8, 12, 17, 23, 30, // INT bonus
+ 2, 3, 5, 8, 12, 17, 23, 30, // PER bonus
+ 2, 3, 5, 8, 12, 17, 23, 30, // SPD bonus
+ 3, 5, 10, 15, 20, 30, // ACC bonus
+ 5, 10, 15, 20, 25, 30, // LUC bonus
+ 4, 6, 10, 20, 50, // HP bonus
+ 4, 8, 12, 16, 20, 25, // SP bonus
+ 2, 4, 6, 10, 16, // AC bonus
+ 4, 6, 8, 10, 12, 14, 16, 18, 20, 25 // Thievery bonus
+ };
+
+ const int ELEMENTAL_RESISTENCES[37] = {
+ 0, 5, 7, 9, 12, 15, 20, 25, 30, 5, 7, 9, 12, 15, 20, 25,
+ 5, 10, 15, 20, 25, 10, 15, 20, 25, 40, 5, 7, 9, 11, 13, 15, 20, 25,
+ 5, 10, 20
+ };
+
+ const int ELEMENTAL_DAMAGE[37] = {
+ 0, 2, 3, 4, 5, 10, 15, 20, 30, 2, 3, 4, 5, 10, 15, 20, 2, 4, 5, 10, 20,
+ 2, 4, 8, 16, 32, 2, 3, 4, 5, 10, 15, 20, 30, 5, 10, 25
+ };
+
+ const int WEAPON_DAMAGE_BASE[35] = {
+ 0, 3, 2, 3, 2, 2, 4, 1, 2, 4, 2, 3,
+ 2, 2, 1, 1, 1, 1, 4, 4, 3, 2, 4, 2,
+ 2, 2, 5, 3, 3, 3, 3, 5, 4, 2, 6
+ };
+
+ const int WEAPON_DAMAGE_MULTIPLIER[35] = {
+ 0, 3, 3, 4, 5, 4, 2, 3, 3, 3, 3, 3,
+ 2, 4, 10, 6, 8, 9, 4, 3, 6, 8, 5, 6,
+ 4, 5, 3, 5, 6, 7, 2, 2, 2, 2, 4
+ };
+
+ const int METAL_DAMAGE[22] = {
+ -3, -6, -4, -2, 2, 4, 6, 8, 10, 0, 1,
+ 1, 2, 2, 3, 4, 5, 12, 15, 20, 30, 50
+ };
+
+ const int METAL_DAMAGE_PERCENT[22] = {
+ 253, 252, 3, 2, 1, 2, 3, 4, 6, 0, 1,
+ 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10
+ };
+
+ const int METAL_LAC[22] = {
+ -3, 0, -2, -1, 1, 2, 4, 6, 8, 0, 1,
+ 1, 2, 2, 3, 4, 5, 10, 12, 14, 16, 20
+ };
+
+ const int ARMOR_STRENGTHS[14] = { 0, 2, 4, 5, 6, 7, 8, 10, 4, 2, 1, 1, 1, 1 };
+
+ const int MAKE_ITEM_ARR1[6] = { 0, 8, 15, 20, 25, 33 };
+
+ const int MAKE_ITEM_ARR2[6][7][2] = {
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 6, 7 }, { 7, 7 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 5 }, { 5, 5 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
+ { { 0, 0 }, { 1, 1 }, { 1, 1 }, { 1, 2 }, { 2, 2 }, { 2, 3 }, { 3, 3 } }
+ };
+
+ const int MAKE_ITEM_ARR3[10][7][2] = {
+ { { 0, 0 }, { 1, 4 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 6, 10 }, { 10, 10 } },
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
+ { { 0, 0 }, { 1, 3 }, { 2, 5 }, { 3, 6 }, { 4, 7 }, { 5, 8 }, { 8, 8 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 6 }, { 6, 6 } },
+ { { 0, 0 }, { 1, 2 }, { 2, 3 }, { 3, 4 }, { 4, 5 }, { 5, 6 }, { 6, 6 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 5 }, { 4, 6 }, { 6, 6 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 3 }, { 2, 4 }, { 3, 4 }, { 4, 5 }, { 5, 5 } },
+ { { 0, 0 }, { 1, 2 }, { 1, 4 }, { 3, 6 }, { 5, 8 }, { 7, 10 }, { 10, 10 } }
+ };
+
+ const int MAKE_ITEM_ARR4[2][7][2] = {
+ { { 0, 0 }, { 1, 4 }, { 3, 7 }, { 4, 8 }, { 5, 9 }, { 8, 9 }, { 9, 9 } },
+ { { 0, 0 }, { 1, 4 }, { 2, 6 }, { 4, 7 }, { 6, 10 }, { 9, 13 }, { 13, 13 } }
+ };
+
+ const int MAKE_ITEM_ARR5[8][2] = {
+ { 0, 0 }, { 1, 15 }, { 16, 30 }, { 31, 40 }, { 41, 50 },
+ { 51, 60 }, { 61, 73 }, { 61, 73 }
+ };
+
+ const int OUTDOOR_DRAWSTRUCT_INDEXES[44] = {
+ 37, 38, 39, 40, 41, 44, 42, 43, 47, 45, 46,
+ 48, 49, 52, 50, 51, 66, 67, 68, 69, 70, 71,
+ 72, 75, 73, 74, 87, 88, 89, 90, 91, 94, 92,
+ 93, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120
+ };
+
+ const int TOWN_MAXES[2][11] = {
+ { 23, 13, 32, 16, 26, 16, 16, 16, 16, 16, 16 },
+ { 26, 19, 48, 27, 26, 37, 16, 16, 16, 16, 16 }
+ };
+
+ const char *const TOWN_ACTION_MUSIC[2][7] = {
+ { "bank.m", "smith.m", "guild.m", "tavern.m",
+ "temple.m", "grounds.m", "endgame.m" },
+ { "bank.m", "sf09.m", "guild.m", "tavern.m",
+ "temple.m", "smith.m", "endgame.m" }
+ };
+
+ const char *const TOWN_ACTION_SHAPES[7] = {
+ "bnkr", "blck", "gild", "tvrn", "tmpl", "trng", "eface08"
+ };
+
+ const int TOWN_ACTION_FILES[2][7] = {
+ { 3, 2, 4, 2, 4, 2, 1 }, { 5, 3, 7, 5, 4, 6, 1 }
+ };
+
+ virtual const char *BANK_TEXT() = 0;
+ virtual const char *BLACKSMITH_TEXT() = 0;
+ virtual const char *GUILD_NOT_MEMBER_TEXT() = 0;
+ virtual const char *GUILD_TEXT() = 0;
+ virtual const char *TAVERN_TEXT() = 0;
+ virtual const char *FOOD_AND_DRINK() = 0;
+ virtual const char *GOOD_STUFF() = 0;
+ virtual const char *HAVE_A_DRINK() = 0;
+ virtual const char *YOURE_DRUNK() = 0;
+
+ const int TAVERN_EXIT_LIST[2][6][5][2] = {
+ {
+ { { 21, 17 }, { 0, 0 }, { 20, 3 }, { 0, 0 }, { 0, 0 } },
+ { { 13, 4 }, { 0, 0 }, { 19, 9 }, { 0, 0 }, { 0, 0 } },
+ { { 20, 10 }, { 12, 8 }, { 5, 26 }, { 3, 4 }, { 7, 5 } },
+ { { 18, 4 }, { 0, 0 }, { 19, 16 }, { 0, 0 }, { 11, 12 } },
+ { { 15, 21 }, { 0, 0 }, { 13, 21 }, { 0, 0 }, { 0, 0 } },
+ { { 10, 8 }, { 0, 0 }, { 15, 12 }, { 0, 0 }, { 0, 0 } },
+ }, {
+ { { 21, 17 }, { 0, 0 }, { 20, 3 }, { 0, 0 }, { 0, 0 } },
+ { { 13, 4 }, { 0, 0 }, { 19, 9 }, { 0, 0 }, { 0, 0 } },
+ { { 20, 10 }, { 12, 8 }, { 5, 26 }, { 3, 4 }, { 7, 5 } },
+ { { 17, 24 }, { 14, 13 }, { 0, 0 }, { 0, 0 }, { 9, 4 } },
+ { { 15, 21 }, { 0, 0 }, { 13, 21 }, { 0, 0 }, { 0, 0 } },
+ { { 10, 8 }, { 0, 0 }, { 15, 12 }, { 0, 0 }, { 0, 0 } }
+ }
+ };
+
+ virtual const char *TEMPLE_TEXT() = 0;
+ virtual const char *EXPERIENCE_FOR_LEVEL() = 0;
+ virtual const char *TRAINING_LEARNED_ALL() = 0;
+ virtual const char *ELIGIBLE_FOR_LEVEL() = 0;
+ virtual const char *TRAINING_TEXT() = 0;
+ virtual const char *GOLD_GEMS() = 0;
+ virtual const char *GOLD_GEMS_2() = 0;
+ virtual const char **DEPOSIT_WITHDRAWL() = 0;
+ virtual const char *NOT_ENOUGH_X_IN_THE_Y() = 0;
+ virtual const char *NO_X_IN_THE_Y() = 0;
+ virtual const char **STAT_NAMES() = 0;
+ virtual const char **CONSUMABLE_NAMES() = 0;
+ virtual const char **WHERE_NAMES() = 0;
+ virtual const char *AMOUNT() = 0;
+ virtual const char *FOOD_PACKS_FULL() = 0;
+ virtual const char *BUY_SPELLS() = 0;
+ virtual const char *GUILD_OPTIONS() = 0;
+
+ const int MISC_SPELL_INDEX[74] = {
+ NO_SPELL, MS_Light, MS_Awaken, MS_MagicArrow,
+ MS_FirstAid, MS_FlyingFist, MS_EnergyBlast, MS_Sleep,
+ MS_Revitalize, MS_CureWounds, MS_Sparks, MS_Shrapmetal,
+ MS_InsectSpray, MS_ToxicCloud, MS_ProtFromElements, MS_Pain,
+ MS_Jump, MS_BeastMaster, MS_Clairvoyance, MS_TurnUndead,
+ MS_Levitate, MS_WizardEye, MS_Bless, MS_IdentifyMonster,
+ MS_LightningBolt, MS_HolyBonus, MS_PowerCure, MS_NaturesCure,
+ MS_LloydsBeacon, MS_PowerShield, MS_Heroism, MS_Hynotize,
+ MS_WalkOnWater, MS_FrostBite, MS_DetectMonster, MS_Fireball,
+ MS_ColdRay, MS_CurePoison, MS_AcidSpray, MS_TimeDistortion,
+ MS_DragonSleep, MS_CureDisease, MS_Teleport, MS_FingerOfDeath,
+ MS_CureParalysis, MS_GolemStopper, MS_PoisonVolley, MS_DeadlySwarm,
+ MS_SuperShelter, MS_DayOfProtection, MS_DayOfSorcery, MS_CreateFood,
+ MS_FieryFlail, MS_RechargeItem, MS_FantasticFreeze, MS_TownPortal,
+ MS_StoneToFlesh, MS_RaiseDead, MS_Etheralize, MS_DancingSword,
+ MS_MoonRay, MS_MassDistortion, MS_PrismaticLight, MS_EnchantItem,
+ MS_Incinerate, MS_HolyWord, MS_Resurrection, MS_ElementalStorm,
+ MS_MegaVolts, MS_Inferno, MS_SunRay, MS_Implosion,
+ MS_StarBurst, MS_DivineIntervention
+ };
+
+ const int SPELL_COSTS[77] = {
+ 8, 1, 5, -2, 5, -2, 20, 10, 12, 8, 3,
+ - 3, 75, 40, 12, 6, 200, 10, 100, 30, -1, 30,
+ 15, 25, 10, -2, 1, 2, 7, 20, -2, -2, 100,
+ 15, 5, 100, 35, 75, 5, 20, 4, 5, 1, -2,
+ 6, 2, 75, 40, 60, 6, 4, 25, -2, -2, 60,
+ - 1, 50, 15, 125, 2, -1, 3, -1, 200, 35, 150,
+ 15, 5, 4, 10, 8, 30, 4, 5, 7, 5, 0
+ };
+
+ const int DARK_SPELL_RANGES[12][2] = {
+ { 0, 20 }, { 16, 35 }, { 27, 37 }, { 29, 39 },
+ { 0, 17 }, { 14, 34 }, { 26, 37 }, { 29, 39 },
+ { 0, 20 }, { 16, 35 }, { 27, 37 }, { 29, 39 }
+ };
+
+ const int SWORDS_SPELL_RANGES[12][2] = {
+ { 0, 20 },{ 16, 35 },{ 27, 39 },{ 29, 39 },
+ { 0, 17 },{ 14, 34 },{ 26, 39 },{ 29, 39 },
+ { 0, 20 },{ 16, 35 },{ 27, 39 },{ 29, 39 }
+ };
+
+ const int CLOUDS_GUILD_SPELLS[5][20] = {
+ {
+ 1, 10, 20, 26, 27, 38, 40, 42, 45, 50,
+ 55, 59, 60, 61, 62, 68, 72, 75, 77, 77
+ }, {
+ 3, 4, 5, 14, 15, 25, 30, 31, 34, 41,
+ 49, 51, 53, 67, 73, 75, -1, -1, -1, -1
+ }, {
+ 4, 8, 9, 12, 13, 22, 23, 24, 28, 34,
+ 41, 44, 52, 70, 73, 74, -1, -1, -1, -1
+ }, {
+ 6, 7, 9, 11, 12, 13, 17, 21, 22, 24,
+ 29, 36, 56, 58, 64, 71, -1, -1, -1, -1
+ }, {
+ 6, 7, 9, 11, 12, 13, 18, 21, 29, 32,
+ 36, 37, 46, 51, 56, 58, 69, -1, -1, -1
+ }
+ };
+
+ const int DARK_SPELL_OFFSETS[3][39] = {
+ {
+ 42, 1, 26, 59, 27, 10, 50, 68, 55, 62, 67, 73, 2,
+ 5, 3, 31, 30, 52, 49, 28, 74, 0, 9, 7, 14, 8,
+ 33, 6, 23, 71, 64, 56, 48, 46, 12, 32, 58, 65, 16
+ }, {
+ 42, 1, 45, 61, 72, 40, 20, 60, 38, 41, 75, 34, 4,
+ 43, 25, 53, 44, 15, 70, 17, 24, 69, 22, 66, 57, 11,
+ 29, 39, 51, 21, 19, 36, 47, 13, 54, 37, 18, 35, 63
+ }, {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38
+ }
+ };
+
+ const int SPELL_GEM_COST[77] = {
+ 0, 0, 2, 1, 2, 4, 5, 0, 0, 0, 0, 10, 10, 10, 0, 0, 20, 4, 10, 20, 1, 10,
+ 5, 5, 4, 2, 0, 0, 0, 10, 3, 1, 20, 4, 0, 20, 10, 10, 1, 10, 0, 0, 0, 2,
+ 2, 0, 10, 10, 10, 0, 0, 10, 3, 2, 10, 1, 10, 10, 20, 0, 0, 1, 1, 20, 5, 20,
+ 5, 0, 0, 0, 0, 5, 1, 2, 0, 2, 0
+ };
+
+ virtual const char *NOT_A_SPELL_CASTER() = 0;
+ virtual const char *SPELLS_LEARNED_ALL() = 0;
+ virtual const char *SPELLS_FOR() = 0;
+ virtual const char *SPELL_LINES_0_TO_9() = 0;
+ virtual const char *SPELLS_DIALOG_SPELLS() = 0;
+ virtual const char *SPELL_PTS() = 0;
+ virtual const char *GOLD() = 0;
+ virtual const char *SPELL_INFO() = 0;
+ virtual const char *SPELL_PURCHASE() = 0;
+ virtual const char *MAP_TEXT() = 0;
+ virtual const char *LIGHT_COUNT_TEXT() = 0;
+ virtual const char *FIRE_RESISTENCE_TEXT() = 0;
+ virtual const char *ELECRICITY_RESISTENCE_TEXT() = 0;
+ virtual const char *COLD_RESISTENCE_TEXT() = 0;
+ virtual const char *POISON_RESISTENCE_TEXT() = 0;
+ virtual const char *CLAIRVOYANCE_TEXT() = 0;
+ virtual const char *LEVITATE_TEXT() = 0;
+ virtual const char *WALK_ON_WATER_TEXT() = 0;
+ virtual const char *GAME_INFORMATION() = 0;
+ virtual const char *WORLD_GAME_TEXT() = 0;
+ virtual const char *DARKSIDE_GAME_TEXT() = 0;
+ virtual const char *CLOUDS_GAME_TEXT() = 0;
+ virtual const char *SWORDS_GAME_TEXT() = 0;
+ virtual const char **WEEK_DAY_STRINGS() = 0;
+ virtual const char *CHARACTER_DETAILS() = 0;
+ virtual const char **DAYS() = 0;
+ virtual const char *PARTY_GOLD() = 0;
+ virtual const char *PLUS_14() = 0;
+ virtual const char *CHARACTER_TEMPLATE() = 0;
+ virtual const char *EXCHANGING_IN_COMBAT() = 0;
+ virtual const char *CURRENT_MAXIMUM_RATING_TEXT() = 0;
+ virtual const char *CURRENT_MAXIMUM_TEXT() = 0;
+ virtual const char **RATING_TEXT() = 0;
+ virtual const char *AGE_TEXT() = 0;
+ virtual const char *LEVEL_TEXT() = 0;
+ virtual const char *RESISTENCES_TEXT() = 0;
+ virtual const char *NONE() = 0;
+ virtual const char *EXPERIENCE_TEXT() = 0;
+ virtual const char *ELIGIBLE() = 0;
+ virtual const char *IN_PARTY_IN_BANK() = 0;
+ virtual const char *FOOD_TEXT() = 0;
+ virtual const char *EXCHANGE_WITH_WHOM() = 0;
+ virtual const char *QUICK_REF_LINE() = 0;
+ virtual const char *QUICK_REFERENCE() = 0;
+
+ const int BLACKSMITH_MAP_IDS[2][4] = { { 28, 30, 73, 49 }, { 29, 31, 37, 43 } };
+
+ virtual const char *ITEMS_DIALOG_TEXT1() = 0;
+ virtual const char *ITEMS_DIALOG_TEXT2() = 0;
+ virtual const char *ITEMS_DIALOG_LINE1() = 0;
+ virtual const char *ITEMS_DIALOG_LINE2() = 0;
+ virtual const char *BTN_BUY() = 0;
+ virtual const char *BTN_SELL() = 0;
+ virtual const char *BTN_IDENTIFY() = 0;
+ virtual const char *BTN_FIX() = 0;
+ virtual const char *BTN_USE() = 0;
+ virtual const char *BTN_EQUIP() = 0;
+ virtual const char *BTN_REMOVE() = 0;
+ virtual const char *BTN_DISCARD() = 0;
+ virtual const char *BTN_QUEST() = 0;
+ virtual const char *BTN_ENCHANT() = 0;
+ virtual const char *BTN_RECHARGE() = 0;
+ virtual const char *BTN_GOLD() = 0;
+ virtual const char *ITEM_BROKEN() = 0;
+ virtual const char *ITEM_CURSED() = 0;
+ virtual const char *ITEM_OF() = 0;
+ virtual const char **BONUS_NAMES() = 0;
+ virtual const char **WEAPON_NAMES() = 0;
+ virtual const char **ARMOR_NAMES() = 0;
+ virtual const char **ACCESSORY_NAMES() = 0;
+ virtual const char **MISC_NAMES() = 0;
+ virtual const char **SPECIAL_NAMES() = 0;
+ virtual const char **ELEMENTAL_NAMES() = 0;
+ virtual const char **ATTRIBUTE_NAMES() = 0;
+ virtual const char **EFFECTIVENESS_NAMES() = 0;
+ virtual const char **QUEST_ITEM_NAMES() = 0;
+ virtual const char **QUEST_ITEM_NAMES_SWORDS() = 0;
+
+ const int WEAPON_BASE_COSTS[35] = {
+ 0, 50, 15, 100, 80, 40, 60, 1, 10, 150, 30, 60, 8, 50,
+ 100, 15, 30, 15, 200, 80, 250, 150, 400, 100, 40, 120,
+ 300, 100, 200, 300, 25, 100, 50, 15, 0
+ };
+ const int ARMOR_BASE_COSTS[14] = {
+ 0, 20, 100, 200, 400, 600, 1000, 2000, 100, 60, 40, 250, 200, 100
+ };
+ const int ACCESSORY_BASE_COSTS[11] = {
+ 0, 100, 100, 250, 100, 50, 300, 200, 500, 1000, 2000
+ };
+ const int MISC_MATERIAL_COSTS[22] = {
+ 0, 50, 1000, 500, 10, 100, 20, 10, 50, 10, 10, 100,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ };
+ const int MISC_BASE_COSTS[76] = {
+ 0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
+ 100, 100, 100, 100, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 300, 300, 300, 300, 300,
+ 300, 300, 300, 300, 300, 400, 400, 400, 400, 400, 400, 400,
+ 400, 400, 400, 500, 500, 500, 500, 500, 500, 500, 500, 500,
+ 500, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
+ 600, 600, 600, 600
+ };
+ const int METAL_BASE_MULTIPLIERS[22] = {
+ 10, 25, 5, 75, 2, 5, 10, 20, 50, 2, 3, 5, 10, 20, 30, 40,
+ 50, 60, 70, 80, 90, 100
+ };
+ const int ITEM_SKILL_DIVISORS[4] = { 1, 2, 100, 10 };
+
+ const int RESTRICTION_OFFSETS[4] = { 0, 35, 49, 60 };
+
+ const int ITEM_RESTRICTIONS[86] = {
+ 0, 86, 86, 86, 86, 86, 86, 0, 6, 239, 239, 239, 2, 4, 4, 4, 4,
+ 6, 70, 70, 70, 70, 94, 70, 0, 4, 239, 86, 86, 86, 70, 70, 70, 70,
+ 0, 0, 0, 68, 100, 116, 125, 255, 255, 85, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ };
+
+ virtual const char *NOT_PROFICIENT() = 0;
+ virtual const char *NO_ITEMS_AVAILABLE() = 0;
+ virtual const char **CATEGORY_NAMES() = 0;
+ virtual const char *X_FOR_THE_Y() = 0;
+ virtual const char *X_FOR_Y() = 0;
+ virtual const char *X_FOR_Y_GOLD() = 0;
+ virtual const char *FMT_CHARGES() = 0;
+ virtual const char *AVAILABLE_GOLD_COST() = 0;
+ virtual const char *CHARGES() = 0;
+ virtual const char *COST() = 0;
+ virtual const char **ITEM_ACTIONS() = 0;
+ virtual const char *WHICH_ITEM() = 0;
+ virtual const char *WHATS_YOUR_HURRY() = 0;
+ virtual const char *USE_ITEM_IN_COMBAT() = 0;
+ virtual const char *NO_SPECIAL_ABILITIES() = 0;
+ virtual const char *CANT_CAST_WHILE_ENGAGED() = 0;
+ virtual const char *EQUIPPED_ALL_YOU_CAN() = 0;
+ virtual const char *REMOVE_X_TO_EQUIP_Y() = 0;
+ virtual const char *RING() = 0;
+ virtual const char *MEDAL() = 0;
+ virtual const char *CANNOT_REMOVE_CURSED_ITEM() = 0;
+ virtual const char *CANNOT_DISCARD_CURSED_ITEM() = 0;
+ virtual const char *PERMANENTLY_DISCARD() = 0;
+ virtual const char *BACKPACK_IS_FULL() = 0;
+ virtual const char **CATEGORY_BACKPACK_IS_FULL() = 0;
+ virtual const char *BUY_X_FOR_Y_GOLD() = 0;
+ virtual const char *SELL_X_FOR_Y_GOLD() = 0;
+ virtual const char **SELL_X_FOR_Y_GOLD_ENDINGS() = 0;
+ virtual const char *NO_NEED_OF_THIS() = 0;
+ virtual const char *NOT_RECHARGABLE() = 0;
+ virtual const char *NOT_ENCHANTABLE() = 0;
+ virtual const char *SPELL_FAILED() = 0;
+ virtual const char *ITEM_NOT_BROKEN() = 0;
+ virtual const char **FIX_IDENTIFY() = 0;
+ virtual const char *FIX_IDENTIFY_GOLD() = 0;
+ virtual const char *IDENTIFY_ITEM_MSG() = 0;
+ virtual const char *ITEM_DETAILS() = 0;
+ virtual const char *ALL() = 0;
+ virtual const char *FIELD_NONE() = 0;
+ virtual const char *DAMAGE_X_TO_Y() = 0;
+ virtual const char *ELEMENTAL_XY_DAMAGE() = 0;
+ virtual const char *ATTR_XY_BONUS() = 0;
+ virtual const char *EFFECTIVE_AGAINST() = 0;
+ virtual const char *QUESTS_DIALOG_TEXT() = 0;
+ virtual const char *CLOUDS_OF_XEEN_LINE() = 0;
+ virtual const char *DARKSIDE_OF_XEEN_LINE() = 0;
+ virtual const char *SWORDS_OF_XEEN_LINE() = 0;
+ virtual const char *NO_QUEST_ITEMS() = 0;
+ virtual const char *NO_CURRENT_QUESTS() = 0;
+ virtual const char *NO_AUTO_NOTES() = 0;
+ virtual const char *QUEST_ITEMS_DATA() = 0;
+ virtual const char *CURRENT_QUESTS_DATA() = 0;
+ virtual const char *AUTO_NOTES_DATA() = 0;
+ virtual const char *REST_COMPLETE() = 0;
+ virtual const char *PARTY_IS_STARVING() = 0;
+ virtual const char *HIT_SPELL_POINTS_RESTORED() = 0;
+ virtual const char *TOO_DANGEROUS_TO_REST() = 0;
+ virtual const char *SOME_CHARS_MAY_DIE() = 0;
+ virtual const char *DISMISS_WHOM() = 0;
+ virtual const char *CANT_DISMISS_LAST_CHAR() = 0;
+ virtual const char *DELETE_CHAR_WITH_ELDER_WEAPON() = 0;
+ virtual const char **REMOVE_DELETE() = 0;
+ virtual const char *REMOVE_OR_DELETE_WHICH() = 0;
+ virtual const char *YOUR_PARTY_IS_FULL() = 0;
+ virtual const char *HAS_SLAYER_SWORD() = 0;
+ virtual const char *SURE_TO_DELETE_CHAR() = 0;
+ virtual const char *CREATE_CHAR_DETAILS() = 0;
+ virtual const char *NEW_CHAR_STATS() = 0;
+ virtual const char *NAME_FOR_NEW_CHARACTER() = 0;
+ virtual const char *SELECT_CLASS_BEFORE_SAVING() = 0;
+ virtual const char *EXCHANGE_ATTR_WITH() = 0;
+
+ const int NEW_CHAR_SKILLS[10] = { 1, 5, -1, -1, 4, 0, 0, -1, 6, 11 };
+ const int NEW_CHAR_SKILLS_OFFSET[10] = { 0, 0, 0, 5, 0, 0, 0, 0, 0, 0 };
+ const int NEW_CHAR_SKILLS_LEN[10] = { 11, 8, 0, 0, 12, 8, 8, 0, 9, 11 };
+ const int NEW_CHAR_RACE_SKILLS[10] = { 14, -1, 17, 16, -1, 0, 0, 0, 0, 0 };
+
+ const int RACE_MAGIC_RESISTENCES[5] = { 7, 5, 20, 0, 0 };
+ const int RACE_FIRE_RESISTENCES[5] = { 7, 0, 2, 5, 10 };
+ const int RACE_ELECTRIC_RESISTENCES[5] = { 7, 0, 2, 5, 10 };
+ const int RACE_COLD_RESISTENCES[5] = { 7, 0, 2, 5, 10 };
+ const int RACE_ENERGY_RESISTENCES[5] = { 7, 5, 2, 5, 0 };
+ const int RACE_POISON_RESISTENCES[5] = { 7, 0, 2, 20, 0 };
+ const int NEW_CHARACTER_SPELLS[10][4] = {
+ { -1, -1, -1, -1 },
+ { 21, -1, -1, -1 },
+ { 22, -1, -1, -1 },
+ { 21, 1, 14, -1 },
+ { 22, 0, 25, -1 },
+ { -1, -1, -1, -1 },
+ { -1, -1, -1, -1 },
+ { -1, -1, -1, -1 },
+ { 20, 1, 11, 23 },
+ { 20, 1, -1, -1 }
+ };
+
+ virtual const char *COMBAT_DETAILS() = 0;
+ virtual const char *NOT_ENOUGH_TO_CAST() = 0;
+ virtual const char **SPELL_CAST_COMPONENTS() = 0;
+ virtual const char *CAST_SPELL_DETAILS() = 0;
+ virtual const char *PARTY_FOUND() = 0;
+ virtual const char *BACKPACKS_FULL_PRESS_KEY() = 0;
+ virtual const char *HIT_A_KEY() = 0;
+ virtual const char *GIVE_TREASURE_FORMATTING() = 0;
+ virtual const char *X_FOUND_Y() = 0;
+ virtual const char *ON_WHO() = 0;
+ virtual const char *WHICH_ELEMENT1() = 0;
+ virtual const char *WHICH_ELEMENT2() = 0;
+ virtual const char *DETECT_MONSTERS() = 0;
+ virtual const char *LLOYDS_BEACON() = 0;
+ virtual const char *HOW_MANY_SQUARES() = 0;
+ virtual const char *TOWN_PORTAL() = 0;
+ virtual const char *TOWN_PORTAL_SWORDS() = 0;
+
+ const int TOWN_MAP_NUMBERS[3][5] = {
+ { 28, 29, 30, 31, 32 }, { 29, 31, 33, 35, 37 }, { 53, 92, 63, 0, 0 }
+ };
+
+ virtual const char *MONSTER_DETAILS() = 0;
+ virtual const char **MONSTER_SPECIAL_ATTACKS() = 0;
+ virtual const char *IDENTIFY_MONSTERS() = 0;
+
+ const char *const EVENT_SAMPLES[6] = {
+ "ahh.voc", "whereto.voc", "gulp.voc", "null.voc", "scream.voc", "laff1.voc"
+ };
+
+ virtual const char *MOONS_NOT_ALIGNED() = 0;
+ virtual const char *AWARDS_FOR() = 0;
+ virtual const char *AWARDS_TEXT() = 0;
+ virtual const char *NO_AWARDS() = 0;
+ virtual const char *WARZONE_BATTLE_MASTER() = 0;
+ virtual const char *WARZONE_MAXED() = 0;
+ virtual const char *WARZONE_LEVEL() = 0;
+ virtual const char *WARZONE_HOW_MANY() = 0;
+ virtual const char *PICKS_THE_LOCK() = 0;
+ virtual const char *UNABLE_TO_PICK_LOCK() = 0;
+ virtual const char *CONTROL_PANEL_TEXT() = 0;
+ virtual const char *CONTROL_PANEL_BUTTONS() = 0;
+ virtual const char *ON() = 0;
+ virtual const char *OFF() = 0;
+ virtual const char *CONFIRM_QUIT() = 0;
+ virtual const char *MR_WIZARD() = 0;
+ virtual const char *NO_LOADING_IN_COMBAT() = 0;
+ virtual const char *NO_SAVING_IN_COMBAT() = 0;
+ virtual const char *QUICK_FIGHT_TEXT() = 0;
+ virtual const char **QUICK_FIGHT_OPTIONS() = 0;
+ virtual const char **WORLD_END_TEXT() = 0;
+ virtual const char *WORLD_CONGRATULATIONS() = 0;
+ virtual const char *WORLD_CONGRATULATIONS2() = 0;
+ virtual const char *CLOUDS_CONGRATULATIONS1() = 0;
+ virtual const char *CLOUDS_CONGRATULATIONS2() = 0;
+ virtual const char **GOOBER() = 0;
+
+ const char *const MUSIC_FILES1[5] = {
+ "outdoors.m", "town.m", "cavern.m", "dungeon.m", "castle.m"
+ };
+
+ const char *const MUSIC_FILES2[6][7] = {
+ { "outday1.m", "outday2.m", "outday4.m", "outnght1.m",
+ "outnght2.m", "outnght4.m", "daydesrt.m" },
+ { "townday1.m", "twnwlk.m", "newbrigh.m", "twnnitea.m",
+ "twnniteb.m", "twnwlk.m", "townday1.m" },
+ { "cavern1.m", "cavern2.m", "cavern3a.m", "cavern1.m",
+ "cavern2.m", "cavern3a.m", "cavern1.m" },
+ { "dngon1.m", "dngon2.m", "dngon3.m", "dngon1.m",
+ "dngon2.m", "dngon3.m", "dngon1.m" },
+ { "cstl1rev.m", "cstl2rev.m", "cstl3rev.m", "cstl1rev.m",
+ "cstl2rev.m", "cstl3rev.m", "cstl1rev.m" },
+ { "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m" }
+ };
+
+ virtual const char *DIFFICULTY_TEXT() = 0;
+ virtual const char *SAVE_OFF_LIMITS() = 0;
+ virtual const char *CLOUDS_INTRO1() = 0;
+ virtual const char *DARKSIDE_ENDING1() = 0;
+ virtual const char *DARKSIDE_ENDING2() = 0;
+ virtual const char *PHAROAH_ENDING_TEXT1() = 0;
+ virtual const char *PHAROAH_ENDING_TEXT2() = 0;
+
+ void writeConstants(Common::String num, CCArchive &cc);
+};
+
extern void writeConstants(CCArchive &cc);
#endif
diff --git a/devtools/create_xeen/en_constants.h b/devtools/create_xeen/en_constants.h
new file mode 100644
index 0000000000..469d81b60e
--- /dev/null
+++ b/devtools/create_xeen/en_constants.h
@@ -0,0 +1,1932 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#pragma once
+
+#include "constants.h"
+
+class EN : public LangConstants {
+public:
+ const char *CLOUDS_CREDITS() {
+ return "\v012\t000\x3"
+ "c\f35Designed and Directed By:\n"
+ "\f17Jon Van Caneghem\x3l\n"
+ "\n"
+ "\t025\f35Programming:\n"
+ "\t035\f17Mark Caldwell\n"
+ "\t035Dave Hathaway\n"
+ "\n"
+ "\t025\f35Sound System & FX:\n"
+ "\t035\f17Todd Hendrix\n"
+ "\n"
+ "\t025\f35Music & Speech:\n"
+ "\t035\f17Tim Tully\n"
+ "\n"
+ "\t025\f35Writing:\n"
+ "\t035\f17Paul Rattner\n"
+ "\t035Debbie Murphy\n"
+ "\t035Jon Van Caneghem\v012\n"
+ "\n"
+ "\n"
+ "\t180\f35Graphics:\n"
+ "\t190\f17Louis Johnson\n"
+ "\t190Jonathan P. Gwyn\n"
+ "\t190Bonita Long-Hemsath\n"
+ "\t190Julia Ulano\n"
+ "\t190Ricardo Barrera\n"
+ "\n"
+ "\t180\f35Testing:\n"
+ "\t190\f17Benjamin Bent\n"
+ "\t190Mario Escamilla\n"
+ "\t190Richard Espy\n"
+ "\t190Scott McDaniel\n"
+ "\t190Clayton Retzer\n"
+ "\t190Michael Suarez\x3"
+ "c";
+ }
+
+ const char *DARK_SIDE_CREDITS() {
+ return "\v012\t000\x3"
+ "c\f35Designed and Directed By:\n"
+ "\f17Jon Van Caneghem\x3l\n"
+ "\n"
+ "\t025\f35Programming:\n"
+ "\t035\f17Mark Caldwell\n"
+ "\t035Dave Hathaway\n"
+ "\n"
+ "\t025\f35Sound System & FX:\n"
+ "\t035\f17Mike Heilemann\n"
+ "\n"
+ "\t025\f35Music & Speech:\n"
+ "\t035\f17Tim Tully\n"
+ "\n"
+ "\t025\f35Writing:\n"
+ "\t035\f17Paul Rattner\n"
+ "\t035Debbie Van Caneghem\n"
+ "\t035Jon Van Caneghem\v012\n"
+ "\n"
+ "\n"
+ "\t180\f35Graphics:\n"
+ "\t190\f17Jonathan P. Gwyn\n"
+ "\t190Bonita Long-Hemsath\n"
+ "\t190Julia Ulano\n"
+ "\t190Ricardo Barrera\n"
+ "\n"
+ "\t180\f35Testing:\n"
+ "\t190\f17Benjamin Bent\n"
+ "\t190Christian Dailey\n"
+ "\t190Mario Escamilla\n"
+ "\t190Marco Hunter\n"
+ "\t190Robert J. Lupo\n"
+ "\t190Clayton Retzer\n"
+ "\t190David Vela\x3"
+ "c";
+ }
+
+ const char *SWORDS_CREDITS1() {
+ return "\v012\x3"
+ "c\f35Published By New World Computing, Inc.\f17\n"
+ "Developed By CATware, Inc.\x3l\n"
+ "\f01Design and Direction\t180Series Created by\n"
+ "\t020Bill Fawcett\t190John Van Caneghem\n"
+ "\n"
+ "\t010Story Contributions\t180Producer & Manual\n"
+ "\t020Ellen Guon\t190Dean Rettig\n"
+ "\n"
+ "\t010Programming & Ideas\t180Original Programming\n"
+ "\t020David Potter\t190Mark Caldwell\n"
+ "\t020Rod Retterath\t190Dave Hathaway\n"
+ "\n"
+ "\t010Manual Illustrations\t180Graphic Artists\n"
+ "\t020Todd Cameron Hamilton\t190Jonathan P. Gwyn\n"
+ "\t020James Clouse\t190Bonnie Long-Hemsath\n"
+ "\t190Julia Ulano\n"
+ "\t190Ricardo Barrera\n";
+ }
+
+ const char *SWORDS_CREDITS2() {
+ return "\f05\v012\t000\x3l\n"
+ "\t100Sound Programming\n"
+ "\t110Todd Hendrix\n"
+ "\n"
+ "\t100Music\n"
+ "\t110Tim Tully\n"
+ "\t110Quality Assurance Manager\n"
+ "\t110Peter Ryu\n"
+ "\t100Testers\n"
+ "\t110Walter Johnson\n"
+ "\t110Bryan Farina\n"
+ "\t110David Baton\n"
+ "\t110Jack Nalls\n";
+ }
+
+ const char *OPTIONS_MENU() {
+ return "\r\x1\x3"
+ "c\fdMight and Magic Options\n"
+ "%s of Xeen\x2\n"
+ "\v%.3dCopyright (c) %d NWC, Inc.\n"
+ "All Rights Reserved\x1";
+ }
+
+ const char **GAME_NAMES() {
+ delete[] _gameNames;
+ _gameNames = new const char *[3] { "Clouds", "Darkside", "World" };
+ return _gameNames;
+ }
+
+ const char *THE_PARTY_NEEDS_REST() {
+ return "\v012The Party needs rest!";
+ }
+
+ const char *WHO_WILL() {
+ return "\x3"
+ "c\v000\t000%s\n\n"
+ "Who will\n%s?\n\v055F1 - F%d";
+ }
+
+ const char *HOW_MUCH() {
+ return "\x3"
+ "cHow Much\n\n";
+ }
+
+ const char *WHATS_THE_PASSWORD() {
+ return "\x3"
+ "cWhat's the Password?\n"
+ "\n"
+ "Please turn to page %u, go to\n"
+ "line %u, and type in word %u.\v067\t000Spaces are not counted as words or lines. "
+ "Hyphenated words are treated as one word. Any line that has any text is considered a line."
+ "\x3"
+ "c\v040\t000\n";
+ }
+
+ const char *PASSWORD_INCORRECT() {
+ return "\x3"
+ "c\v040\n"
+ "\f32Incorrect!\fd";
+ }
+
+ const char *IN_NO_CONDITION() {
+ return "\v007%s is not in any condition to perform actions!";
+ }
+
+ const char *NOTHING_HERE() {
+ return "\x3"
+ "c\v010Nothing here.";
+ }
+
+ const char **WHO_ACTIONS() {
+ delete[] _whoActions;
+ _whoActions = new const char *[32] {
+ "search", "open", "drink", "mine", "touch", "read", "learn", "take",
+ "bang", "steal", "bribe", "pay", "sit", "try", "turn", "bathe",
+ "destroy", "pull", "descend", "toss a coin", "pray", "join", "act",
+ "play", "push", "rub", "pick", "eat", "sign", "close", "look", "try"
+ };
+ return _whoActions;
+ }
+
+ const char **WHO_WILL_ACTIONS() {
+ delete[] _whoWillActions;
+ _whoWillActions = new const char *[4] {
+ "Open Grate", "Open Door", "Open Scroll", "Select Char"
+ };
+ return _whoWillActions;
+ }
+
+ const char **DIRECTION_TEXT_UPPER() {
+ delete[] _directionTextUpper;
+ _directionTextUpper = new const char *[4] { "NORTH", "EAST", "SOUTH", "WEST" };
+ return _directionTextUpper;
+ }
+
+ const char **DIRECTION_TEXT() {
+ delete[] _directionText;
+ _directionText = new const char *[4] { "North", "East", "South", "West" };
+ return _directionText;
+ }
+
+ const char **RACE_NAMES() {
+ delete[] _raceNames;
+ _raceNames = new const char *[5] { "Human", "Elf", "Dwarf", "Gnome", "H-Orc" };
+ return _raceNames;
+ }
+
+ const char **ALIGNMENT_NAMES() {
+ delete[] _alignmentNames;
+ _alignmentNames = new const char *[3] { "Good", "Neutral", "Evil" };
+ return _alignmentNames;
+ }
+
+ const char **SEX_NAMES() {
+ delete[] _sexNames;
+ _sexNames = new const char *[2] { "Male", "Female" };
+ return _sexNames;
+ }
+
+ const char **SKILL_NAMES() {
+ delete[] _skillNames;
+ _skillNames = new const char *[18] {
+ "Thievery\t100", "Arms Master", "Astrologer", "Body Builder", "Cartographer",
+ "Crusader", "Direction Sense", "Linguist", "Merchant", "Mountaineer",
+ "Navigator", "Path Finder", "Prayer Master", "Prestidigitator",
+ "Swimmer", "Tracker", "Spot Secret Door", "Danger Sense"
+ };
+ return _skillNames;
+ }
+
+ const char **CLASS_NAMES() {
+ delete[] _classNames;
+ _classNames = new const char *[11] {
+ "Knight", "Paladin", "Archer", "Cleric", "Sorcerer", "Robber",
+ "Ninja", "Barbarian", "Druid", "Ranger", nullptr
+ };
+ return _classNames;
+ }
+
+ const char **CONDITION_NAMES() {
+ delete[] _conditionNames;
+ _conditionNames = new const char *[17] {
+ "Cursed", "Heart Broken", "Weak", "Poisoned", "Diseased",
+ "Insane", "In Love", "Drunk", "Asleep", "Depressed", "Confused",
+ "Paralyzed", "Unconscious", "Dead", "Stone", "Eradicated", "Good"
+ };
+ return _conditionNames;
+ }
+
+ const char *GOOD() {
+ return "Good";
+ }
+
+ const char *BLESSED() {
+ return "\n\t020Blessed\t095%+d";
+ }
+
+ const char *POWER_SHIELD() {
+ return "\n\t020Power Shield\t095%+d";
+ }
+
+ const char *HOLY_BONUS() {
+ return "\n\t020Holy Bonus\t095%+d";
+ }
+
+ const char *HEROISM() {
+ return "\n\t020Heroism\t095%+d";
+ }
+
+ const char *IN_PARTY() {
+ return "\014"
+ "15In Party\014"
+ "d";
+ }
+
+ const char *PARTY_DETAILS() {
+ return "\015\003l\002\014"
+ "00"
+ "\013"
+ "001"
+ "\011"
+ "035%s"
+ "\013"
+ "009"
+ "\011"
+ "035%s"
+ "\013"
+ "017"
+ "\011"
+ "035%s"
+ "\013"
+ "025"
+ "\011"
+ "035%s"
+ "\013"
+ "001"
+ "\011"
+ "136%s"
+ "\013"
+ "009"
+ "\011"
+ "136%s"
+ "\013"
+ "017"
+ "\011"
+ "136%s"
+ "\013"
+ "025"
+ "\011"
+ "136%s"
+ "\013"
+ "044"
+ "\011"
+ "035%s"
+ "\013"
+ "052"
+ "\011"
+ "035%s"
+ "\013"
+ "060"
+ "\011"
+ "035%s"
+ "\013"
+ "068"
+ "\011"
+ "035%s"
+ "\013"
+ "044"
+ "\011"
+ "136%s"
+ "\013"
+ "052"
+ "\011"
+ "136%s"
+ "\013"
+ "060"
+ "\011"
+ "136%s"
+ "\013"
+ "068"
+ "\011"
+ "136%s";
+ }
+
+ const char *PARTY_DIALOG_TEXT() {
+ return "%s\x2\x3"
+ "c\v106\t013Up\t048Down\t083\f37D\fdel\t118\f37R\fdem"
+ "\t153\f37C\fdreate\t188E\f37x\fdit\x1";
+ }
+
+ const char *NO_ONE_TO_ADVENTURE_WITH() {
+ return "You have no one to adventure with";
+ }
+
+ const char *YOUR_ROSTER_IS_FULL() {
+ return "Your Roster is full!";
+ }
+
+ const char *PLEASE_WAIT() {
+ return "\014"
+ "d\003"
+ "c\011"
+ "000"
+ "\013"
+ "002Please Wait...";
+ }
+
+ const char *OOPS() {
+ return "\003"
+ "c\011"
+ "000\013"
+ "002Oops...";
+ }
+
+ const char *BANK_TEXT() {
+ return "\r\x2\x3"
+ "c\v122\t013"
+ "\f37D\fdep\t040\f37W\fdith\t067ESC"
+ "\x1\t000\v000Bank of Xeen\v015\n"
+ "Bank\x3l\n"
+ "Gold\x3r\t000%s\x3l\n"
+ "Gems\x3r\t000%s\x3"
+ "c\n"
+ "\n"
+ "Party\x3l\n"
+ "Gold\x3r\t000%s\x3l\n"
+ "Gems\x3r\t000%s";
+ }
+
+ const char *BLACKSMITH_TEXT() {
+ return "\x1\r\x3"
+ "c\v000\t000"
+ "store options for\t039\v027%s\x3l\v046\n"
+ "\t011\f37b\fdrowse\n"
+ "\t000\v090gold\x3r\t000%s"
+ "\x2\x3"
+ "c\v122\t040esc\x1";
+ }
+
+ const char *GUILD_NOT_MEMBER_TEXT() {
+ return "\n\nYou have to be a member to shop here.";
+ }
+
+ const char *GUILD_TEXT() {
+ return "\x3"
+ "c\v027\t039%s"
+ "\x3l\v046\n"
+ "\t012\f37B\fduy Spells\n"
+ "\t012\f37S\fdpell Info";
+ }
+
+ const char *TAVERN_TEXT() {
+ return "\r\x3"
+ "c\v000\t000Tavern Options for\t039"
+ "\v027%s%s\x3l\t000"
+ "\v090Gold\x3r\t000%s\x2\x3"
+ "c\v122"
+ "\t021\f37S\fdign in\t060ESC\x1";
+ }
+
+ const char *FOOD_AND_DRINK() {
+ return "\x3l\t017\v046\f37D\fdrink\n"
+ "\t017\f37F\fdood\n"
+ "\t017\f37T\fdip\n"
+ "\t017\f37R\fdumors";
+ }
+
+ const char *GOOD_STUFF() {
+ return "\n"
+ "\n"
+ "Good Stuff\n"
+ "\n"
+ "Hit a key!";
+ }
+
+ const char *HAVE_A_DRINK() {
+ return "\n\nHave a Drink\n\nHit a key!";
+ }
+
+ const char *YOURE_DRUNK() {
+ return "\n\nYou're Drunk\n\nHit a key!";
+ }
+
+ const char *TEMPLE_TEXT() {
+ return "\r\x3"
+ "c\v000\t000Temple Options for"
+ "\t039\v027%s\x3l\t000\v046"
+ "\f37H\fdeal\x3r\t000%u\x3l\n"
+ "\f37D\fdonation\x3r\t000%u\x3l\n"
+ "\f37U\fdnCurse\x3r\t000%s"
+ "\x3l\t000\v090Gold\x3r\t000%s"
+ "\x2\x3"
+ "c\v122\t040ESC\x1";
+ }
+
+ const char *EXPERIENCE_FOR_LEVEL() {
+ return "%s needs %u experience for level %u.";
+ }
+
+ const char *TRAINING_LEARNED_ALL() {
+ return "%s has learned all we can teach!";
+ }
+
+ const char *ELIGIBLE_FOR_LEVEL() {
+ return "%s is eligible for level %u.\x3l\n"
+ "\v081Cost\x3r\t000%u";
+ }
+
+ const char *TRAINING_TEXT() {
+ return "\r\x3"
+ "cTraining Options\n"
+ "\n"
+ "%s\x3l\v090\t000Gold\x3r\t000%s\x2\x3"
+ "c\v122\t021"
+ "\f37T\fdrain\t060ESC\x1";
+ }
+
+ const char *GOLD_GEMS() {
+ return "\x3"
+ "c\v000\t000%s\x3l\n"
+ "\n"
+ "Gold\x3r\t000%s\x3l\n"
+ "Gems\x3r\t000%s\x2\x3"
+ "c\v096\t013G\f37o\fdld\t040G\f37e\fdms\t067ESC\x1";
+ }
+
+ const char *GOLD_GEMS_2() {
+ return "\x3"
+ "c\v000\t000%s\x3l\n"
+ "\n"
+ "\x4"
+ "077Gold\x3r\t000%s\x3l\n"
+ "\x4"
+ "077Gems\x3r\t000%s\x3l\t000\v051\x4"
+ "077\n"
+ "\x4"
+ "077";
+ }
+
+ const char **DEPOSIT_WITHDRAWL() {
+ delete[] _depositWithdrawl;
+ _depositWithdrawl = new const char *[2] { "Deposit", "Withdrawl" };
+ return _depositWithdrawl;
+ }
+
+ const char *NOT_ENOUGH_X_IN_THE_Y() {
+ return "\x3"
+ "c\v012Not enough %s in the %s!\x3l";
+ }
+
+ const char *NO_X_IN_THE_Y() {
+ return "\x3"
+ "c\v012No %s in the %s!\x3l";
+ }
+
+ const char **STAT_NAMES() {
+ delete[] _statNames;
+ _statNames = new const char *[16] {
+ "Might", "Intellect", "Personality", "Endurance", "Speed",
+ "Accuracy", "Luck", "Age", "Level", "Armor Class", "Hit Points",
+ "Spell Points", "Resistances", "Skills", "Awards", "Experience"
+ };
+ return _statNames;
+ }
+
+ const char **CONSUMABLE_NAMES() {
+ delete[] _consumableNames;
+ _consumableNames = new const char *[4] { "Gold", "Gems", "Food", "Condition" };
+ return _consumableNames;
+ }
+
+ const char **WHERE_NAMES() {
+ delete[] _whereNames;
+ _whereNames = new const char *[2] { "Party", "Bank" };
+ return _whereNames;
+ }
+
+ const char *AMOUNT() {
+ return "\x3"
+ "c\t000\v051Amount\x3l\n";
+ }
+
+ const char *FOOD_PACKS_FULL() {
+ return "\v007Your food packs are already full!";
+ }
+
+ const char *BUY_SPELLS() {
+ return "\x3"
+ "c\v027\t039%s\x3l\v046\n"
+ "\t012\f37B\fduy Spells\n"
+ "\t012\f37S\fdpell Info";
+ }
+
+ const char *GUILD_OPTIONS() {
+ return "\r\f00\x3"
+ "c\v000\t000Guild Options for%s"
+ "\x3l\t000\v090Gold"
+ "\x3r\t000%s\x2\x3"
+ "c\v122\t040ESC\x1";
+ }
+
+ const char *NOT_A_SPELL_CASTER() {
+ return "Not a spell caster...";
+ }
+
+ const char *SPELLS_LEARNED_ALL() {
+ return "You have learned all we\n"
+ "\t010can teach you.";
+ }
+
+ const char *SPELLS_FOR() {
+ return "\r\fd%s\x2\x3"
+ "c\t000\v002Spells for %s";
+ }
+
+ const char *SPELL_LINES_0_TO_9() {
+ return "\x2\x3l\v015\t0011\n2\n3\n4\n5\n6\n7\n8\n9\n0";
+ }
+
+ const char *SPELLS_DIALOG_SPELLS() {
+ return "\x3l\v015"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l"
+ "\t004\v110%s - %u\x1";
+ }
+
+ const char *SPELL_PTS() {
+ return "Spell Pts";
+ }
+
+ const char *GOLD() {
+ return "Gold";
+ }
+
+ const char *SPELL_INFO() {
+ return "\x3"
+ "c\f09%s\fd\x3l\n"
+ "\n"
+ "%s\x3"
+ "c\t000\v100Press a Key!";
+ }
+
+ const char *SPELL_PURCHASE() {
+ return "\x3l\v000\t000\fd%s Do you wish to purchase "
+ "\f09%s\fd for %u?";
+ }
+
+ const char *MAP_TEXT() {
+ return "\x3"
+ "c\v000\t000%s\x3l\v139"
+ "\t000X = %d\x3r\t000Y = %d\x3"
+ "c\t000%s";
+ }
+
+ const char *LIGHT_COUNT_TEXT() {
+ return "\x3l\n\n\t024Light\x3r\t124%d";
+ }
+
+ const char *FIRE_RESISTENCE_TEXT() {
+ return "%c%sFire%s%u";
+ }
+
+ const char *ELECRICITY_RESISTENCE_TEXT() {
+ return "%c%sElectricity%s%u";
+ }
+
+ const char *COLD_RESISTENCE_TEXT() {
+ return "%c%sCold%s%u";
+ }
+
+ const char *POISON_RESISTENCE_TEXT() {
+ return "%c%sPoison/Acid%s%u";
+ }
+
+ const char *CLAIRVOYANCE_TEXT() {
+ return "%c%sClairvoyance%s";
+ }
+
+ const char *LEVITATE_TEXT() {
+ return "%c%sLevitate%s";
+ }
+
+ const char *WALK_ON_WATER_TEXT() {
+ return "%c%sWalk on Water";
+ }
+
+ const char *GAME_INFORMATION() {
+ return "\r\x3"
+ "c\t000\v001\f37%s of Xeen\fd\n"
+ "Game Information\n"
+ "\n"
+ "Today is \f37%ssday\fd\n"
+ "\n"
+ "\t032Time\t072Day\t112Year\n"
+ "\t032\f37%d:%02d%c\t072%u\t112%u\fd%s";
+ }
+
+ const char *WORLD_GAME_TEXT() {
+ return "World";
+ }
+
+ const char *DARKSIDE_GAME_TEXT() {
+ return "Darkside";
+ }
+
+ const char *CLOUDS_GAME_TEXT() {
+ return "Clouds";
+ }
+
+ const char *SWORDS_GAME_TEXT() {
+ return "Swords";
+ }
+
+ const char **WEEK_DAY_STRINGS() {
+ delete[] _weekDayStrings;
+ _weekDayStrings = new const char *[10] {
+ "Ten", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"
+ };
+ return _weekDayStrings;
+ }
+
+ const char *CHARACTER_DETAILS() {
+ return "\x3l\v041\t196%s\t000\v002%s : %s %s %s"
+ "\x3r\t053\v028\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3l\t131\f%02u%d\fd\t196\f15%u\fd\x3r"
+ "\t053\v051\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3l\t131\f%02u%u\fd\t196\f15%u\fd"
+ "\x3r\t053\v074\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3l\t131\f15%u\fd\t196\f15%u\fd"
+ "\x3r\t053\v097\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3l\t131\f15%u\fd\t196\f15%u day%s\fd"
+ "\x3r\t053\v120\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3l\t131\f15%u\fd\t196\f%02u%s\fd"
+ "\t230%s%s%s%s\fd";
+ }
+
+ const char **DAYS() {
+ delete[] _days;
+ _days = new const char *[3] { "", "s", "" };
+ return _days;
+ }
+
+ const char *PARTY_GOLD() {
+ return "Party Gold";
+ }
+
+ const char *PLUS_14() {
+ return "\f14+";
+ }
+
+ const char *CHARACTER_TEMPLATE() {
+ return "\x1\f00\r\x3l\t029\v018Mgt\t080Acy\t131H.P.\t196Experience"
+ "\t029\v041Int\t080Lck\t131S.P.\t029\v064Per\t080Age"
+ "\t131Resis\t196Party Gems\t029\v087End\t080Lvl\t131Skills"
+ "\t196Party Food\t029\v110Spd\t080AC\t131Awrds\t196Condition\x3"
+ "c"
+ "\t290\v025\f37I\fdtem\t290\v057\f37Q"
+ "\fduick\t290\v089\f37E\fdxch\t290\v121Exit\x3l%s";
+ }
+
+ const char *EXCHANGING_IN_COMBAT() {
+ return "\x3"
+ "c\v007\t000Exchanging in combat is not allowed!";
+ }
+
+ const char *CURRENT_MAXIMUM_RATING_TEXT() {
+ return "\x2\x3"
+ "c%s\n"
+ "Current / Maximum\n"
+ "\x3r\t054%u\x3l\t058/ %u\n"
+ "\x3"
+ "cRating: %s";
+ }
+
+ const char *CURRENT_MAXIMUM_TEXT() {
+ return "\x2\x3"
+ "c%s\n"
+ "Current / Maximum\n"
+ "\x3r\t054%u\x3l\t058/ %u";
+ }
+
+ const char **RATING_TEXT() {
+ delete[] _ratingText;
+ _ratingText = new const char *[24] {
+ "Nonexistant", "Very Poor", "Poor", "Very Low", "Low", "Average", "Good",
+ "Very Good", "High", "Very High", "Great", "Super", "Amazing", "Incredible",
+ "Gigantic", "Fantastic", "Astoundig", "Astonishing", "Monumental", "Tremendous",
+ "Collosal", "Awesome", "Awe Inspiring", "Ultimate"
+ };
+ return _ratingText;
+ }
+
+ const char *AGE_TEXT() {
+ return "\x2\x3"
+ "c%s\n"
+ "Current / Natural\n"
+ "\x3r\t057%u\x3l\t061/ %u\n"
+ "\x3"
+ "cBorn: %u / %u\x1";
+ }
+
+ const char *LEVEL_TEXT() {
+ return "\x2\x3"
+ "c%s\n"
+ "Current / Maximum\n"
+ "\x3r\t054%u\x3l\t058/ %u\n"
+ "\x3"
+ "c%u Attack%s/Round\x1";
+ }
+
+ const char *RESISTENCES_TEXT() {
+ return "\x2\x3"
+ "c%s\x3l\n"
+ "\t020Fire\t100%u\n"
+ "\t020Cold\t100%u\n"
+ "\t020Electricity\t100%u\n"
+ "\t020Poison\t100%u\n"
+ "\t020Energy\t100%u\n"
+ "\t020Magic\t100%u";
+ }
+
+ const char *NONE() {
+ return "\n\t020None";
+ }
+
+ const char *EXPERIENCE_TEXT() {
+ return "\x2\x3"
+ "c%s\x3l\n"
+ "\t010Current:\t070%u\n"
+ "\t010Next Level:\t070%s\x1";
+ }
+
+ const char *ELIGIBLE() {
+ return "\f12Eligible\fd";
+ }
+
+ const char *IN_PARTY_IN_BANK() {
+ return "\x2\x3"
+ "cParty %s\n"
+ "%u on hand\n"
+ "%u in bank\x1\x3l";
+ }
+
+ const char *FOOD_TEXT() {
+ return "\x2\x3"
+ "cParty %s\n"
+ "%u on hand\n"
+ "Enough for %u day%s\x3l";
+ }
+
+ const char *EXCHANGE_WITH_WHOM() {
+ return "\t010\v005Exchange with whom?";
+ }
+
+ const char *QUICK_REF_LINE() {
+ return "\v%3d\t007%u)\t027%s\t110%c%c%c\x3r\t160\f%02u%u\fd"
+ "\x3l\t170\f%02u%d\fd\t208\f%02u%u\fd\t247\f"
+ "%02u%u\fd\t270\f%02u%c%c%c%c\fd";
+ }
+
+ const char *QUICK_REFERENCE() {
+ return "\r\x3"
+ "cQuick Reference Chart\v012\x3l"
+ "\t007#\t027Name\t110Cls\t140Lvl\t176H.P."
+ "\t212S.P.\t241A.C.\t270Cond"
+ "%s%s%s%s%s%s%s%s"
+ "\v110\t064\x3"
+ "cGold\t144Gems\t224Food\v119"
+ "\t064\f15%u\t144%u\t224%u day%s\fd";
+ }
+
+ const char *ITEMS_DIALOG_TEXT1() {
+ return "\r\x2\x3"
+ "c\v021\t017\f37W\fdeap\t051\f37A\fdrmor\t085A"
+ "\f37c\fdces\t119\f37M\fdisc\t153%s\t187%s\t221%s"
+ "\t255%s\t289Exit";
+ }
+
+ const char *ITEMS_DIALOG_TEXT2() {
+ return "\r\x2\x3"
+ "c\v021\t017\f37W\fdeap\t051\f37A\fdrmor\t085A"
+ "\f37c\fdces\t119\f37M\fdisc\t153\f37%s\t289Exit";
+ }
+
+ const char *ITEMS_DIALOG_LINE1() {
+ return "\x3r\f%02u\t023%2d)\x3l\t028%s\n";
+ }
+
+ const char *ITEMS_DIALOG_LINE2() {
+ return "\x3r\f%02u\t023%2d)\x3l\t028%s\x3r\t000%u\n";
+ }
+
+ const char *BTN_BUY() {
+ return "\f37B\fduy";
+ }
+
+ const char *BTN_SELL() {
+ return "\f37S\fdell";
+ }
+
+ const char *BTN_IDENTIFY() {
+ return "\f37I\fddentify";
+ }
+
+ const char *BTN_FIX() {
+ return "\f37F\fdix";
+ }
+
+ const char *BTN_USE() {
+ return "\f37U\fdse";
+ }
+
+ const char *BTN_EQUIP() {
+ return "\f37E\fdquip";
+ }
+
+ const char *BTN_REMOVE() {
+ return "\f37R\fdem";
+ }
+
+ const char *BTN_DISCARD() {
+ return "\f37D\fdisc";
+ }
+
+ const char *BTN_QUEST() {
+ return "\f37Q\fduest";
+ }
+
+ const char *BTN_ENCHANT() {
+ return "E\fdnchant";
+ }
+
+ const char *BTN_RECHARGE() {
+ return "R\fdechrg";
+ }
+
+ const char *BTN_GOLD() {
+ return "G\fdold";
+ }
+
+ const char *ITEM_BROKEN() {
+ return "\f32broken ";
+ }
+
+ const char *ITEM_CURSED() {
+ return "\f09cursed ";
+ }
+
+ const char *ITEM_OF() {
+ return "of ";
+ }
+
+ const char **BONUS_NAMES() {
+ delete[] _bonusNames;
+ _bonusNames = new const char *[7] {
+ "", "Dragon Slayer", "Undead Eater", "Golem Smasher",
+ "Bug Zapper", "Monster Masher", "Beast Bopper"
+ };
+ return _bonusNames;
+ }
+
+ const char **WEAPON_NAMES() {
+ delete[] _weaponNames;
+ _weaponNames = new const char *[41] {
+ nullptr, "long sword ", "short sword ", "broad sword ", "scimitar ",
+ "cutlass ", "sabre ", "club ", "hand axe ", "katana ", "nunchakas ",
+ "wakazashi ", "dagger ", "mace ", "flail ", "cudgel ", "maul ", "spear ",
+ "bardiche ", "glaive ", "halberd ", "pike ", "flamberge ", "trident ",
+ "staff ", "hammer ", "naginata ", "battle axe ", "grand axe ", "great axe ",
+ "short bow ", "long bow ", "crossbow ", "sling ", "Xeen Slayer Sword ",
+ "Elder LongSword ", "Elder Dagger ", "Elder Mace ", "Elder Spear ",
+ "Elder Staff ", "Elder LongBow "
+ };
+ return _weaponNames;
+ }
+
+ const char **ARMOR_NAMES() {
+ delete[] _armorNames;
+ _armorNames = new const char *[14] {
+ nullptr, "robes ", "scale armor ", "ring mail ", "chain mail ",
+ "splint mail ", "plate mail ", "plate armor ", "shield ",
+ "helm ", "boots ", "cloak ", "cape ", "gauntlets "
+ };
+ return _armorNames;
+ }
+
+ const char **ACCESSORY_NAMES() {
+ delete[] _accessoryNames;
+ _accessoryNames = new const char *[11] {
+ nullptr, "ring ", "belt ", "brooch ", "medal ", "charm ", "cameo ",
+ "scarab ", "pendant ", "necklace ", "amulet "
+ };
+ return _accessoryNames;
+ }
+
+ const char **MISC_NAMES() {
+ delete[] _miscNames;
+ _miscNames = new const char *[22] {
+ nullptr, "rod ", "jewel ", "gem ", "box ", "orb ", "horn ", "coin ",
+ "wand ", "whistle ", "potion ", "scroll ", "bogus", "bogus", "bogus",
+ "bogus", "bogus", "bogus", "bogus", "bogus", "bogus", "bogus"
+ };
+ return _miscNames;
+ }
+
+ const char **SPECIAL_NAMES() {
+ delete[] _specialNames;
+ _specialNames = new const char *[74] {
+ nullptr, "light", "awakening", "magic arrows", "first aid", "fists", "energy blasts", "sleeping",
+ "revitalization", "curing", "sparking", "shrapmetal", "insect repellent", "toxic clouds", "elemental protection",
+ "pain", "jumping", "beast control", "clairvoyance", "undead turning", "levitation", "wizard eyes", "blessing",
+ "monster identification", "lightning", "holy bonuses", "power curing", "nature's cures", "beacons",
+ "shielding", "heroism", "hypnotism", "water walking", "frost biting", "monster finding", "fireballs",
+ "cold rays", "antidotes", "acid spraying", "time distortion", "dragon sleep", "vaccination", "teleportation",
+ "death", "free movement", "golem stopping", "poison volleys", "deadly swarms", "shelter", "daily protection",
+ "daily sorcerery", "feasting", "fiery flails", "recharging", "freezing", "town portals", "stone to flesh",
+ "raising the dead", "etherealization", "dancing swords", "moon rays", "mass distortion", "prismatic light",
+ "enchant item", "incinerating", "holy words", "resurrection", "storms", "megavoltage", "infernos",
+ "sun rays", "implosions", "star bursts", "the GODS!"
+ };
+ return _specialNames;
+ }
+
+ const char **ELEMENTAL_NAMES() {
+ delete[] _elementalNames;
+ _elementalNames = new const char *[6] {
+ "Fire", "Elec", "Cold", "Acid/Poison", "Energy", "Magic"
+ };
+ return _elementalNames;
+ }
+
+ const char **ATTRIBUTE_NAMES() {
+ delete[] _attributeNames;
+ _attributeNames = new const char *[10] {
+ "might", "Intellect", "Personality", "Speed", "accuracy", "Luck",
+ "Hit Points", "Spell Points", "Armor Class", "Thievery"
+ };
+ return _attributeNames;
+ }
+
+ const char **EFFECTIVENESS_NAMES() {
+ delete[] _effectivenessNames;
+ _effectivenessNames = new const char *[7] {
+ nullptr, "Dragons", "Undead", "Golems", "Bugs", "Monsters", "Beasts"
+ };
+ return _effectivenessNames;
+ }
+
+ const char **QUEST_ITEM_NAMES() {
+ delete[] _questItemNames;
+ _questItemNames = new const char *[85] {
+ "Deed to New Castle",
+ "Crystal Key to Witch Tower",
+ "Skeleton Key to Darzog's Tower",
+ "Enchanted Key to Tower of High Magic",
+ "Jeweled Amulet of the Northern Sphinx",
+ "Stone of a Thousand Terrors",
+ "Golem Stone of Admittance",
+ "Yak Stone of Opening",
+ "Xeen's Scepter of Temporal Distortion",
+ "Alacorn of Falista",
+ "Elixir of Restoration",
+ "Wand of Faery Magic",
+ "Princess Roxanne's Tiara",
+ "Holy Book of Elvenkind",
+ "Scarab of Imaging",
+ "Crystals of Piezoelectricity",
+ "Scroll of Insight",
+ "Phirna Root",
+ "Orothin's Bone Whistle",
+ "Barok's Magic Pendant",
+ "Ligono's Missing Skull",
+ "Last Flower of Summer",
+ "Last Raindrop of Spring",
+ "Last Snowflake of Winter",
+ "Last Leaf of Autumn",
+ "Ever Hot Lava Rock",
+ "King's Mega Credit",
+ "Excavation Permit",
+ "Cupie Doll",
+ "Might Doll",
+ "Speed Doll",
+ "Endurance Doll",
+ "Accuracy Doll",
+ "Luck Doll",
+ "Widget",
+ "Pass to Castleview",
+ "Pass to Sandcaster",
+ "Pass to Lakeside",
+ "Pass to Necropolis",
+ "Pass to Olympus",
+ "Key to Great Western Tower",
+ "Key to Great Southern Tower",
+ "Key to Great Eastern Tower",
+ "Key to Great Northern Tower",
+ "Key to Ellinger's Tower",
+ "Key to Dragon Tower",
+ "Key to Darkstone Tower",
+ "Key to Temple of Bark",
+ "Key to Dungeon of Lost Souls",
+ "Key to Ancient Pyramid",
+ "Key to Dungeon of Death",
+ "Amulet of the Southern Sphinx",
+ "Dragon Pharoah's Orb",
+ "Cube of Power",
+ "Chime of Opening",
+ "Gold ID Card",
+ "Silver ID Card",
+ "Vulture Repellant",
+ "Bridle",
+ "Enchanted Bridle",
+ "Treasure Map (Goto E1 x1, y11)",
+ "",
+ "Fake Map",
+ "Onyx Necklace",
+ "Dragon Egg",
+ "Tribble",
+ "Golden Pegasus Statuette",
+ "Golden Dragon Statuette",
+ "Golden Griffin Statuette",
+ "Chalice of Protection",
+ "Jewel of Ages",
+ "Songbird of Serenity",
+ "Sandro's Heart",
+ "Ector's Ring",
+ "Vespar's Emerald Handle",
+ "Queen Kalindra's Crown",
+ "Caleb's Magnifying Glass",
+ "Soul Box",
+ "Soul Box with Corak inside",
+ "Ruby Rock",
+ "Emerald Rock",
+ "Sapphire Rock",
+ "Diamond Rock",
+ "Monga Melon",
+ "Energy Disk"
+ };
+ return _questItemNames;
+ }
+
+ const char **QUEST_ITEM_NAMES_SWORDS() {
+ delete[] _questItemNamesSwords;
+ _questItemNamesSwords = new const char *[51] {
+ "Pass to Hart", "Pass to Impery", "Pass to town3", "Pass to town4", "Pass to town5",
+ "Key to Hart Sewers", "Key to Rettig's Pyramid", "Key to the Old Temple",
+ "Key to Canegtut's Pyramid", "Key to Ascihep's Pyramid", "Key to Dragon Tower",
+ "Key to Darkstone Tower", "Key to Temple of Bark", "Key to Dungeon of Lost Souls",
+ "Key to Ancient Pyramid", "Key to Dungeon of Death", "Red Magic Hammer",
+ "Green Magic Hammer", "Golden Magic Wand", "Silver Magic Hammer", "Magic Coin",
+ "Ruby", "Diamond Mineral", "Emerald", "Sapphire", "Treasure Map (Goto E1 x1, y11)",
+ "NOTUSED", "Melon", "Princess Crown", "Emerald Wand", "Druid Carving", "High Sign",
+ "Holy Wheel", "Double Cross", "Sky Hook", "Sacred Cow", "Staff of the Mountain",
+ "Hard Rock", "Soft Rock", "Rock Candy", "Ivy Plant", "Spirit Gem", "Temple of Sun holy lamp oil",
+ "Noams Hammer", "Positive Orb", "Negative Orb", "FireBane Staff", "Diamond Edged Pick",
+ "Monga Melon", "Energy Disk", "Old XEEN Quest Item"
+ };
+ return _questItemNamesSwords;
+ }
+
+ const char *NOT_PROFICIENT() {
+ return "\t000\v007\x3"
+ "c%ss are not proficient with a %s!";
+ }
+
+ const char *NO_ITEMS_AVAILABLE() {
+ return "\x3"
+ "c\n"
+ "\t000No items available.";
+ }
+
+ const char **CATEGORY_NAMES() {
+ delete[] _categoryNames;
+ _categoryNames = new const char *[4] { "Weapons", "Armor", "Accessories", "Miscellaneous" };
+ return _categoryNames;
+ }
+
+ const char *X_FOR_THE_Y() {
+ return "\x1\fd\r%s\v000\t000%s for %s the %s%s\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+ }
+
+ const char *X_FOR_Y() {
+ return "\x1\fd\r\x3l\v000\t000%s for %s\x3r\t000%s\x3l\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+ }
+
+ const char *X_FOR_Y_GOLD() {
+ return "\x1\fd\r\x3l\v000\t000%s for %s\t150Gold - %u%s\x3l\v011"
+ "\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+ }
+
+ const char *FMT_CHARGES() {
+ return "\x3rr\t000Charges\x3l";
+ }
+
+ const char *AVAILABLE_GOLD_COST() {
+ return "\x1\fd\r\x3l\v000\t000Available %s\t150Gold - %u\x3r\t000Cost"
+ "\x3l\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+ }
+
+ const char *CHARGES() {
+ return "Charges";
+ }
+
+ const char *COST() {
+ return "Cost";
+ }
+
+ const char **ITEM_ACTIONS() {
+ delete[] _itemActions;
+ _itemActions = new const char *[7] {
+ "Equip", "Remove", "Use", "Discard", "Enchant", "Recharge", "Gold"
+ };
+ return _itemActions;
+ }
+
+ const char *WHICH_ITEM() {
+ return "\t010\v005%s which item?";
+ }
+
+ const char *WHATS_YOUR_HURRY() {
+ return "\v007What's your hurry?\n"
+ "Wait till you get out of here!";
+ }
+
+ const char *USE_ITEM_IN_COMBAT() {
+ return "\v007To use an item in Combat, invoke the Use command on your turn!";
+ }
+
+ const char *NO_SPECIAL_ABILITIES() {
+ return "\v005\x3"
+ "c%s\fdhas no special abilities!";
+ }
+
+ const char *CANT_CAST_WHILE_ENGAGED() {
+ return "\x3"
+ "c\v007Can't cast %s while engaged!";
+ }
+
+ const char *EQUIPPED_ALL_YOU_CAN() {
+ return "\x3"
+ "c\v007You have equipped all the %ss you can!";
+ }
+
+ const char *REMOVE_X_TO_EQUIP_Y() {
+ return "\x3"
+ "c\v007You must remove %sto equip %s\b!";
+ }
+
+ const char *RING() {
+ return "ring";
+ }
+
+ const char *MEDAL() {
+ return "medal";
+ }
+
+ const char *CANNOT_REMOVE_CURSED_ITEM() {
+ return "\x3"
+ "You cannot remove a cursed item!";
+ }
+
+ const char *CANNOT_DISCARD_CURSED_ITEM() {
+ return "\3x"
+ "cYou cannot discard a cursed item!";
+ }
+
+ const char *PERMANENTLY_DISCARD() {
+ return "\v000\t000\x3lPermanently discard %s\fd?";
+ }
+
+ const char *BACKPACK_IS_FULL() {
+ return "\v005\x3"
+ "c\fd%s's backpack is full.";
+ }
+
+ const char **CATEGORY_BACKPACK_IS_FULL() {
+ delete[] _categoryBackpackIsFull;
+ _categoryBackpackIsFull = new const char *[4] {
+ "\v010\t000\x3"
+ "c%s's weapons backpack is full.",
+ "\v010\t000\x3"
+ "c%s's armor backpack is full.",
+ "\v010\t000\x3"
+ "c%s's accessories backpack is full.",
+ "\v010\t000\x3"
+ "c%s's miscellaneous backpack is full."
+ };
+ return _categoryBackpackIsFull;
+ }
+
+ const char *BUY_X_FOR_Y_GOLD() {
+ return "\x3l\v000\t000\fdBuy %s\fd for %u gold?";
+ }
+
+ const char *SELL_X_FOR_Y_GOLD() {
+ return "\x3l\v000\t000\fdSell %s\fd for %u gold?";
+ }
+
+ const char **SELL_X_FOR_Y_GOLD_ENDINGS() {
+ delete[] _sellXForYGoldEndings;
+ _sellXForYGoldEndings = new const char *[2] { "", "" };
+ return _sellXForYGoldEndings;
+ }
+
+ const char *NO_NEED_OF_THIS() {
+ return "\v005\x3"
+ "c\fdWe have no need of this %s\f!";
+ }
+
+ const char *NOT_RECHARGABLE() {
+ return "\v012\x3"
+ "c\fdNot Rechargeable. %s";
+ }
+
+ const char *NOT_ENCHANTABLE() {
+ return "\v012\t000\x3"
+ "cNot Enchantable. %s";
+ }
+
+ const char *SPELL_FAILED() {
+ return "Spell Failed!";
+ }
+
+ const char *ITEM_NOT_BROKEN() {
+ return "\fdThat item is not broken!";
+ }
+
+ const char **FIX_IDENTIFY() {
+ delete[] _fixIdentify;
+ _fixIdentify = new const char *[2] { "Fix", "Identify" };
+ return _fixIdentify;
+ }
+
+ const char *FIX_IDENTIFY_GOLD() {
+ return "\x3l\v000\t000%s %s\fd for %u gold?";
+ }
+
+ const char *IDENTIFY_ITEM_MSG() {
+ return "\fd\v000\t000\x3"
+ "cIdentify Item\x3l\n"
+ "\n"
+ "\v012%s\fd\n"
+ "\n"
+ "%s";
+ }
+
+ const char *ITEM_DETAILS() {
+ return "Proficient Classes\t132:\t140%s\n"
+ "to Hit Modifier\t132:\t140%s\n"
+ "Physical Damage\t132:\t140%s\n"
+ "Elemental Damage\t132:\t140%s\n"
+ "Elemental Resistance\t132:\t140%s\n"
+ "Armor Class Bonus\t132:\t140%s\n"
+ "Attribute Bonus\t132:\t140%s\n"
+ "Special Power\t132:\t140%s";
+ }
+
+ const char *ALL() {
+ return "All";
+ }
+
+ const char *FIELD_NONE() {
+ return "None";
+ }
+
+ const char *DAMAGE_X_TO_Y() {
+ return "%d to %d";
+ }
+
+ const char *ELEMENTAL_XY_DAMAGE() {
+ return "%+d %s Damage";
+ }
+
+ const char *ATTR_XY_BONUS() {
+ return "%+d %s";
+ }
+
+ const char *EFFECTIVE_AGAINST() {
+ return "x3 vs %s";
+ }
+
+ const char *QUESTS_DIALOG_TEXT() {
+ return "\r\x2\x3"
+ "c\v021\t017\f37I\fdtems\t085\f37Q\fduests\t153"
+ "\f37A\fduto Notes 221\f37U\fdp\t255\f37D\fdown"
+ "\t289Exit";
+ }
+
+ const char *CLOUDS_OF_XEEN_LINE() {
+ return "\b \b*-- \f04Clouds of Xeen\fd --";
+ }
+
+ const char *DARKSIDE_OF_XEEN_LINE() {
+ return "\b \b*-- \f04Darkside of Xeen\fd --";
+ }
+
+ const char *SWORDS_OF_XEEN_LINE() {
+ return "\b \b*-- \f04Swords of Xeen\fd --";
+ }
+
+ const char *NO_QUEST_ITEMS() {
+ return "\r\x3"
+ "c\v000 000Quest Items\x3l\x2\n"
+ "\n"
+ "\x3"
+ "cNo Quest Items";
+ }
+
+ const char *NO_CURRENT_QUESTS() {
+ return "\x3"
+ "c\v000\t000\n"
+ "\n"
+ "No Current Quests";
+ }
+
+ const char *NO_AUTO_NOTES() {
+ return "\x3"
+ "cNo Auto Notes";
+ }
+
+ const char *QUEST_ITEMS_DATA() {
+ return "\r\x1\fd\x3"
+ "c\v000\t000Quest Items\x3l\x2\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n"
+ "\f04 * \fd%s";
+ }
+
+ const char *CURRENT_QUESTS_DATA() {
+ return "\r\x1\fd\x3"
+ "c\t000\v000Current Quests\x3l\x2\n"
+ "%s\n"
+ "\n"
+ "%s\n"
+ "\n"
+ "%s";
+ }
+
+ const char *AUTO_NOTES_DATA() {
+ return "\r\x1\fd\x3"
+ "c\t000\v000Auto Notes\x3l\x2\n"
+ "%s\x3l\n"
+ "%s\x3l\n"
+ "%s\x3l\n"
+ "%s\x3l\n"
+ "%s\x3l\n"
+ "%s\x3l\n"
+ "%s\x3l\n"
+ "%s\x3l\n"
+ "%s\x3l";
+ }
+
+ const char *REST_COMPLETE() {
+ return "\v000\t0008 hours pass. Rest complete.\n"
+ "%s\n"
+ "%d food consumed.";
+ }
+
+ const char *PARTY_IS_STARVING() {
+ return "\f07The Party is Starving!\fd";
+ }
+
+ const char *HIT_SPELL_POINTS_RESTORED() {
+ return "Hit Pts and Spell Pts restored.";
+ }
+
+ const char *TOO_DANGEROUS_TO_REST() {
+ return "Too dangerous to rest here!";
+ }
+
+ const char *SOME_CHARS_MAY_DIE() {
+ return "Some Chars may die. Rest anyway?";
+ }
+
+ const char *DISMISS_WHOM() {
+ return "\t010\v005Dismiss whom?";
+ }
+
+ const char *CANT_DISMISS_LAST_CHAR() {
+ return "You cannot dismiss your last character!";
+ }
+
+ const char *DELETE_CHAR_WITH_ELDER_WEAPON() {
+ return "\v000\t000This character has an Elder Weapon and cannot be deleted!";
+ }
+
+ const char **REMOVE_DELETE() {
+ delete[] _removeDelete;
+ _removeDelete = new const char *[2] { "Remove", "Delete" };
+ return _removeDelete;
+ }
+
+ const char *REMOVE_OR_DELETE_WHICH() {
+ return "\x3l\t010\v005%s which character?";
+ }
+
+ const char *YOUR_PARTY_IS_FULL() {
+ return "\v007Your party is full!";
+ }
+
+ const char *HAS_SLAYER_SWORD() {
+ return "\v000\t000This character has the Xeen Slayer Sword and cannot be deleted!";
+ }
+
+ const char *SURE_TO_DELETE_CHAR() {
+ return "Are you sure you want to delete %s the %s?";
+ }
+
+ const char *CREATE_CHAR_DETAILS() {
+ return "\f04\x3"
+ "c\x2\t144\v119\f37R\f04oll\t144\v149\f37C\f04reate"
+ "\t144\v179\f37ESC\f04\x3l\x1\t195\v021\f37M\f04gt"
+ "\t195\v045\f37I\f04nt\t195\v069\f37P\f04er\t195\v093\f37E\f04nd"
+ "\t195\v116\f37S\f04pd\t195\v140\f37A\f04cy\t195\v164\f37L\f04ck%s";
+ }
+
+ const char *NEW_CHAR_STATS() {
+ return "\f04\x3l\t022\v148Race\t055: %s\n"
+ "\t022Sex\t055: %s\n"
+ "\t022Class\t055:\n"
+ "\x3r\t215\v031%d\t215\v055%d\t215\v079%d\t215\v103%d\t215\v127%d"
+ "\t215\v151%d\t215\v175%d\x3l\t242\v020\f%.2dKnight\t242\v031\f%.2d"
+ "Paladin\t242\v042\f%.2dArcher\t242\v053\f%.2dCleric\t242\v064\f%.2d"
+ "Sorcerer\t242\v075\f%.2dRobber\t242\v086\f%.2dNinja\t242\v097\f%.2d"
+ "Barbarian\t242\v108\f%.2dDruid\t242\v119\f%.2dRanger\f04\x3"
+ "c"
+ "\t265\v142Skills\x3l\t223\v155%s\t223\v170%s%s";
+ }
+
+ const char *NAME_FOR_NEW_CHARACTER() {
+ return "\x3"
+ "cEnter a Name for this Character\n\n";
+ }
+
+ const char *SELECT_CLASS_BEFORE_SAVING() {
+ return "\v006\x3"
+ "cSelect a Class before saving.\x3l";
+ }
+
+ const char *EXCHANGE_ATTR_WITH() {
+ return "Exchange %s with...";
+ }
+
+ const char *COMBAT_DETAILS() {
+ return "\r\f00\x3"
+ "c\v000\t000\x2"
+ "Combat%s%s%s\x1";
+ }
+
+ const char *NOT_ENOUGH_TO_CAST() {
+ return "\x3"
+ "c\v010Not enough %s to Cast %s";
+ }
+
+ const char **SPELL_CAST_COMPONENTS() {
+ delete[] _spellCastComponents;
+ _spellCastComponents = new const char *[2] { "Spell Points", "Gems" };
+ return _spellCastComponents;
+ }
+
+ const char *CAST_SPELL_DETAILS() {
+ return "\r\x2\x3"
+ "c\v122\t013\f37C\fdast\t040\f37N\fdew"
+ "\t067ESC\x1\t000\v000\x3"
+ "cCast Spell\n"
+ "\n"
+ "%s\x3l\n"
+ "\n"
+ "Spell Ready:\x3"
+ "c\n"
+ "\n"
+ "\f09%s\fd\x2\x3l\n"
+ "\v082Cost\x3r\t000%u/%u\x3l\n"
+ "Cur SP\x3r\t000%u\x1";
+ }
+
+ const char *PARTY_FOUND() {
+ return "\x3"
+ "cThe Party Found:\n"
+ "\n"
+ "\x3r\t000%u Gold\n"
+ "%u Gems";
+ }
+
+ const char *BACKPACKS_FULL_PRESS_KEY() {
+ return "\v007\f12Warning! BackPacks Full!\fd\n"
+ "Press a Key";
+ }
+
+ const char *HIT_A_KEY() {
+ return "\x3l\v120\t000\x4"
+ "077\x3"
+ "c\f37Hit a key\fd";
+ }
+
+ const char *GIVE_TREASURE_FORMATTING() {
+ return "\x3l\v060\t000\x4"
+ "077\n"
+ "\x4"
+ "077\n"
+ "\x4"
+ "077\n"
+ "\x4"
+ "077\n"
+ "\x4"
+ "077\n"
+ "\x4"
+ "077";
+ }
+
+ const char *X_FOUND_Y() {
+ return "\v060\t000\x3"
+ "c%s found: %s";
+ }
+
+ const char *ON_WHO() {
+ return "\x3"
+ "c\v009On Who?";
+ }
+
+ const char *WHICH_ELEMENT1() {
+ return "\r\x3"
+ "c\x1Which Element?\x2\v034\t014\f15F\fdire\t044"
+ "\f15E\fdlec\t074\f15C\fdold\t104\f15A\fdcid\x1";
+ }
+
+ const char *WHICH_ELEMENT2() {
+ return "\r\x3"
+ "cWhich Element?\x2\v034\t014\f15F\fdire\t044"
+ "\f15E\fdlec\t074\f15C\fdold\t104\f15A\fdcid\x1";
+ }
+
+ const char *DETECT_MONSTERS() {
+ return "\x3"
+ "cDetect Monsters";
+ }
+
+ const char *LLOYDS_BEACON() {
+ return "\r\x3"
+ "c\v000\t000\x1Lloyd's Beacon\n"
+ "\n"
+ "Last Location\n"
+ "\n"
+ "%s\x3l\n"
+ "x = %d\x3r\t000y = %d\x3"
+ "c\x2\v122\t021\f15S\fdet\t060\f15R\fdeturn\x1";
+ }
+
+ const char *HOW_MANY_SQUARES() {
+ return "\x3"
+ "cTeleport\nHow many squares %s (1-9)\n";
+ }
+
+ const char *TOWN_PORTAL() {
+ return "\x3"
+ "cTown Portal\x3l\n"
+ "\n"
+ "\t0101. %s\n"
+ "\t0102. %s\n"
+ "\t0103. %s\n"
+ "\t0104. %s\n"
+ "\t0105. %s\x3"
+ "c\n"
+ "\n"
+ "To which Town (1-5)\n"
+ "\n";
+ }
+
+ const char *TOWN_PORTAL_SWORDS() {
+ return "\x3"
+ "cTown Portal\x3l\n"
+ "\n"
+ "\t0101. %s\n"
+ "\t0102. %s\n"
+ "\t0103. %s\x3"
+ "c\n"
+ "\n"
+ "To which Town (1-3)\n"
+ "\n";
+ }
+
+ const char *MONSTER_DETAILS() {
+ return "\x3l\n"
+ "%s\x3"
+ "c\t100%s\t140%u\t180%u\x3r\t000%s";
+ }
+
+ const char **MONSTER_SPECIAL_ATTACKS() {
+ delete[] _monsterSpecialAttacks;
+ _monsterSpecialAttacks = new const char *[23] {
+ "None", "Magic", "Fire", "Elec", "Cold", "Poison", "Energy", "Disease",
+ "Insane", "Asleep", "CurseItm", "InLove", "DrnSPts", "Curse", "Paralys",
+ "Uncons", "Confuse", "BrkWpn", "Weak", "Erad", "Age+5", "Dead", "Stone"
+ };
+ return _monsterSpecialAttacks;
+ }
+
+ const char *IDENTIFY_MONSTERS() {
+ return "Name\x3"
+ "c\t100HP\t140AC\t177#Atks\x3r\t000Special%s%s%s";
+ }
+
+ const char *MOONS_NOT_ALIGNED() {
+ return "\x3"
+ "c\v012\t000The moons are not aligned. Passage to the %s is unavailable";
+ }
+
+ const char *AWARDS_FOR() {
+ return "\r\x1\fd\x3"
+ "c\v000\t000Awards for %s the %s\x3l\x2\n"
+ "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\x1";
+ }
+
+ const char *AWARDS_TEXT() {
+ return "\r\x2\x3"
+ "c\v021\t221\f37U\fdp\t255\f37D\fdown\t289Exit";
+ }
+
+ const char *NO_AWARDS() {
+ return "\x3"
+ "cNo Awards";
+ }
+
+ const char *WARZONE_BATTLE_MASTER() {
+ return "The Warzone\n\t125Battle Master";
+ }
+
+ const char *WARZONE_MAXED() {
+ return "What! You again? Go pick on someone your own size!";
+ }
+
+ const char *WARZONE_LEVEL() {
+ return "What level of monsters? (1-10)\n";
+ }
+
+ const char *WARZONE_HOW_MANY() {
+ return "How many monsters? (1-20)\n";
+ }
+
+ const char *PICKS_THE_LOCK() {
+ return "\x3"
+ "c\v010%s picks the lock!\nPress any key.";
+ }
+
+ const char *UNABLE_TO_PICK_LOCK() {
+ return "\x3"
+ "c\v010%s was unable to pick the lock!\nPress any key.";
+ }
+
+ const char *CONTROL_PANEL_TEXT() {
+ return "\x1\f00\x3"
+ "c\v000\t000Control Panel\x3r"
+ "\v022\t045\f06L\fdoad:\t124\f06E\fdfx:"
+ "\v041\t045\f06S\fdave:\t124\f06M\fdusic:"
+ "\v060\t045\f06Q\fduit:"
+ "\v080\t084Mr \f06W\fdizard:%s\t000\x1";
+ }
+
+ const char *CONTROL_PANEL_BUTTONS() {
+ return "\x3"
+ "c\f11"
+ "\v022\t062load\t141%s"
+ "\v041\t062save\t141%s"
+ "\v060\t062exit"
+ "\v079\t102Help\fd";
+ }
+
+ const char *ON() {
+ return "\f15on\f11";
+ }
+
+ const char *OFF() {
+ return "\f32off\f11";
+ }
+
+ const char *CONFIRM_QUIT() {
+ return "Are you sure you want to quit?";
+ }
+
+ const char *MR_WIZARD() {
+ return "Are you sure you want Mr.Wizard's Help ?";
+ }
+
+ const char *NO_LOADING_IN_COMBAT() {
+ return "No Loading Allowed in Combat!";
+ }
+
+ const char *NO_SAVING_IN_COMBAT() {
+ return "No Saving Allowed in Combat!";
+ }
+
+ const char *QUICK_FIGHT_TEXT() {
+ return "\r\fd\x3"
+ "c\v000\t000QuickFight Options\n\n"
+ "%s\x3l\n\n"
+ "Current\x3r\n"
+ "\t000%s\x2\x3"
+ "c\v122\t021\f37N\f04ext\t060Exit\x1";
+ }
+
+ const char **QUICK_FIGHT_OPTIONS() {
+ delete[] _quickFightOptions;
+ _quickFightOptions = new const char *[4] { "Attack", "Cast", "Block", "Run" };
+ return _quickFightOptions;
+ }
+
+ const char **WORLD_END_TEXT() {
+ delete[] _worldEndText;
+ _worldEndText = new const char *[9] {
+ "\n\n\n\n\n\n\n"
+ "Congratulations Adventurers!\n\n"
+ "Let the unification ceremony begin!",
+ "And so the call went out to the people throughout the lands of Xeen"
+ " that the prophecy was nearing completion.",
+ "They came in great numbers to witness the momentous occasion.",
+ "\v026The Dragon Pharoah presided over the ceremony.",
+ "\v026Queen Kalindra presented the Cube of Power.",
+ "\v026Prince Roland presented the Xeen Sceptre.",
+ "\v026Together, they placed the Cube of Power...",
+ "\v026and the Sceptre, onto the Altar of Joining.",
+ "With the prophecy complete, the two sides of Xeen were united as one",
+ };
+ return _worldEndText;
+ }
+
+ const char *WORLD_CONGRATULATIONS() {
+ return "\x3"
+ "cCongratulations\n\n"
+ "Your Final Score is:\n\n"
+ "%010lu\n"
+ "\x3l\n"
+ "Please send this score to the Ancient's Headquarters where "
+ "you'll be added to the Hall of Legends!\n\n"
+ "Ancient's Headquarters\n"
+ "New World Computing, Inc.\n"
+ "P.O. Box 4302\n"
+ "Hollywood, CA 90078";
+ }
+
+ const char *WORLD_CONGRATULATIONS2() {
+ return "\n\n\n\n\n\n"
+ "But wait... there's more!\n"
+ "\n\n"
+ "Include the message\n"
+ "\"%s\"\n"
+ "with your final score and receive a special bonus.";
+ }
+
+ const char *CLOUDS_CONGRATULATIONS1() {
+ return "\f23\x3l"
+ "\v000\t000Please send this score to the Ancient's Headquarters "
+ "where you'll be added to the Hall of Legends!\f33\x3"
+ "c"
+ "\v070\t000Press a Key";
+ }
+
+ const char *CLOUDS_CONGRATULATIONS2() {
+ return "\f23\x3l"
+ "\v000\t000Ancient's Headquarters\n"
+ "New World Computing, Inc.\n"
+ "P.O. Box 4302\n"
+ "Hollywood, CA 90078-4302\f33\x3"
+ "c"
+ "\v070\t000Press a Key";
+ }
+
+ const char **GOOBER() {
+ delete[] _goober;
+ _goober = new const char *[3] {
+ "", "I am a Goober!", "I am a Super Goober!"
+ };
+ return _goober;
+ }
+
+ const char *DIFFICULTY_TEXT() {
+ return "\v000\t000\x3"
+ "cSelect Game Preference";
+ }
+
+ const char *SAVE_OFF_LIMITS() {
+ return "\x3"
+ "c\v002\t000The Gods of Game Restoration deem this area off limits!\n"
+ "Sorry, no saving in this maze.";
+ }
+
+ const char *CLOUDS_INTRO1() {
+ return "\f00\v082\t040\x3"
+ "cKing Burlock\v190\t040Peasants\v082\t247"
+ "Lord Xeen\v190\t258Xeen's Pet\v179\t150Crodo";
+ }
+
+ const char *DARKSIDE_ENDING1() {
+ return "\n\x3"
+ "cCongratulations\n"
+ "\n"
+ "Your Final Score is:\n"
+ "\n"
+ "%010lu\n"
+ "\x3"
+ "l\n"
+ "Please send this score to the Ancient's Headquarters "
+ "where you'll be added to the Hall of Legends!\n"
+ "\n"
+ "Ancient's Headquarters\n"
+ "New World Computing, Inc.\n"
+ "P.O. Box 4302\n"
+ "Hollywood, CA 90078";
+ }
+
+ const char *DARKSIDE_ENDING2() {
+ return "\n"
+ "Adventurers,\n"
+ "\n"
+ "I will save your game in Castleview.\n"
+ "\n"
+ "The World of Xeen still needs you!\n"
+ "\n"
+ "Load your game afterwards and come visit me in the "
+ "Great Pyramid for further instructions";
+ }
+
+ const char *PHAROAH_ENDING_TEXT1() {
+ return "\fd\v001\t001%s\x3"
+ "c\t000\v180Press a Key!\x3"
+ "l";
+ }
+
+ const char *PHAROAH_ENDING_TEXT2() {
+ return "\f04\v000\t000%s\x3"
+ "c\t000\v180Press a Key!\x3"
+ "l\fd";
+ }
+};
diff --git a/devtools/create_xeen/ru_constants.h b/devtools/create_xeen/ru_constants.h
new file mode 100644
index 0000000000..9343ad33e3
--- /dev/null
+++ b/devtools/create_xeen/ru_constants.h
@@ -0,0 +1,3265 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#pragma once
+
+#include "constants.h"
+
+class RU : public LangConstants {
+public:
+ /*
+ "\v012\t000\x3"
+ "c\f35Èäåÿ è ðóêîâîäñòâî ïðîåêòîì:\n"
+ "\f17Äæîí Âàí Êàíåãåì\x3"
+ "l\n"
+ "\n"
+ "\t025\f35Ïðîãðàììèñòû:\n"
+ "\t035\f17Ìàðê Êîëäóýëë\n"
+ "\t035Äåéâ Õýòýóýé\n"
+ "\n"
+ "\t025\f35Àóäèîñèñòåìà è çâóê:\n"
+ "\t035\f17Òîää Õåíäðèêñ\n"
+ "\n"
+ "\t025\f35Ìóçûêà è ðå÷ü:\n"
+ "\t035\f17Òèì Òàëëè\n"
+ "\n"
+ "\t025\f35Ñöåíàðèé:\n"
+ "\t035\f17Ïîë Ðàòíåð\n"
+ "\t035Äåááè ̸ðôè\n"
+ "\t035Äæîí Âàí Êàíåãåì\v012\n"
+ "\n"
+ "\n"
+ "\t180\f35Õóäîæíèêè:\n"
+ "\t190\f17Ëóè Äæîíñîí\n"
+ "\t190Äæîíàòàí Ï. Ãâèí\n"
+ "\t190Áîíèòà Ëîíã-Õåìñàò\n"
+ "\t190Äæóëèÿ Óëàíî\n"
+ "\t190Ðèêàðäî Áàððåðà\n"
+ "\n"
+ "\t180\f35Òåñòåðû:\n"
+ "\t190\f17Áåíäæàìèí Áåíò\n"
+ "\t190Ìàðèî Ýñêàìèëëà\n"
+ "\t190Ðè÷àðä Ýñïè\n"
+ "\t190Ñêîòò Ìàêäýíèåë\n"
+ "\t190Êëåéòîí Ðåòçåð\n"
+ "\t190Ìàéêë Ñóàðåñ\x3"
+ "c";
+ */
+ const char *CLOUDS_CREDITS() {
+ return "\v012\t000\x3"
+ "c\f35\x88\xA4\xA5\xEF \xA8 \xE0\xE3\xAA\xAE\xA2\xAE\xA4\xE1\xE2\xA2\xAE \xAF\xE0\xAE\xA5\xAA\xE2\xAE\xAC:\n"
+ "\f17\x84\xA6\xAE\xAD \x82\xA0\xAD \x8A\xA0\xAD\xA5\xA3\xA5\xAC\x3"
+ "l\n"
+ "\n"
+ "\t025\f35\x8F\xE0\xAE\xA3\xE0\xA0\xAC\xAC\xA8\xE1\xE2\xEB:\n"
+ "\t035\f17\x8C\xA0\xE0\xAA \x8A\xAE\xAB\xA4\xE3\xED\xAB\xAB\n"
+ "\t035\x84\xA5\xA9\xA2 \x95\xED\xE2\xED\xE3\xED\xA9\n"
+ "\n"
+ "\t025\f35\x80\xE3\xA4\xA8\xAE\xE1\xA8\xE1\xE2\xA5\xAC\xA0 \xA8 \xA7\xA2\xE3\xAA:\n"
+ "\t035\f17\x92\xAE\xA4\xA4 \x95\xA5\xAD\xA4\xE0\xA8\xAA\xE1\n"
+ "\n"
+ "\t025\f35\x8C\xE3\xA7\xEB\xAA\xA0 \xA8 \xE0\xA5\xE7\xEC:\n"
+ "\t035\f17\x92\xA8\xAC \x92\xA0\xAB\xAB\xA8\n"
+ "\n"
+ "\t025\f35\x91\xE6\xA5\xAD\xA0\xE0\xA8\xA9:\n"
+ "\t035\f17\x8F\xAE\xAB \x90\xA0\xE2\xAD\xA5\xE0\n"
+ "\t035\x84\xA5\xA1\xA1\xA8 \x8C\xF1\xE0\xE4\xA8\n"
+ "\t035\x84\xA6\xAE\xAD \x82\xA0\xAD \x8A\xA0\xAD\xA5\xA3\xA5\xAC\v012\n"
+ "\n"
+ "\n"
+ "\t180\f35\x95\xE3\xA4\xAE\xA6\xAD\xA8\xAA\xA8:\n"
+ "\t190\f17\x8B\xE3\xA8 \x84\xA6\xAE\xAD\xE1\xAE\xAD\n"
+ "\t190\x84\xA6\xAE\xAD\xA0\xE2\xA0\xAD \x8F. \x83\xA2\xA8\xAD\n"
+ "\t190\x81\xAE\xAD\xA8\xE2\xA0 \x8B\xAE\xAD\xA3-\x95\xA5\xAC\xE1\xA0\xE2\n"
+ "\t190\x84\xA6\xE3\xAB\xA8\xEF \x93\xAB\xA0\xAD\xAE\n"
+ "\t190\x90\xA8\xAA\xA0\xE0\xA4\xAE \x81\xA0\xE0\xE0\xA5\xE0\xA0\n"
+ "\n"
+ "\t180\f35\x92\xA5\xE1\xE2\xA5\xE0\xEB:\n"
+ "\t190\f17\x81\xA5\xAD\xA4\xA6\xA0\xAC\xA8\xAD \x81\xA5\xAD\xE2\n"
+ "\t190\x8C\xA0\xE0\xA8\xAE \x9D\xE1\xAA\xA0\xAC\xA8\xAB\xAB\xA0\n"
+ "\t190\x90\xA8\xE7\xA0\xE0\xA4 \x9D\xE1\xAF\xA8\n"
+ "\t190\x91\xAA\xAE\xE2\xE2 \x8C\xA0\xAA\xA4\xED\xAD\xA8\xA5\xAB\n"
+ "\t190\x8A\xAB\xA5\xA9\xE2\xAE\xAD \x90\xA5\xE2\xA7\xA5\xE0\n"
+ "\t190\x8C\xA0\xA9\xAA\xAB \x91\xE3\xA0\xE0\xA5\xE1\x3"
+ "c";
+ }
+
+ const char *DARK_SIDE_CREDITS() {
+ return "\v012\t000\x3"
+ "c\f35Designed and Directed By:\n"
+ "\f17Jon Van Caneghem\x3l\n"
+ "\n"
+ "\t025\f35Programming:\n"
+ "\t035\f17Mark Caldwell\n"
+ "\t035Dave Hathaway\n"
+ "\n"
+ "\t025\f35Sound System & FX:\n"
+ "\t035\f17Mike Heilemann\n"
+ "\n"
+ "\t025\f35Music & Speech:\n"
+ "\t035\f17Tim Tully\n"
+ "\n"
+ "\t025\f35Writing:\n"
+ "\t035\f17Paul Rattner\n"
+ "\t035Debbie Van Caneghem\n"
+ "\t035Jon Van Caneghem\v012\n"
+ "\n"
+ "\n"
+ "\t180\f35Graphics:\n"
+ "\t190\f17Jonathan P. Gwyn\n"
+ "\t190Bonita Long-Hemsath\n"
+ "\t190Julia Ulano\n"
+ "\t190Ricardo Barrera\n"
+ "\n"
+ "\t180\f35Testing:\n"
+ "\t190\f17Benjamin Bent\n"
+ "\t190Christian Dailey\n"
+ "\t190Mario Escamilla\n"
+ "\t190Marco Hunter\n"
+ "\t190Robert J. Lupo\n"
+ "\t190Clayton Retzer\n"
+ "\t190David Vela\x3"
+ "c";
+ }
+
+ const char *SWORDS_CREDITS1() {
+ return "\v012\x3"
+ "c\f35Published By New World Computing, Inc.\f17\n"
+ "Developed By CATware, Inc.\x3l\n"
+ "\f01Design and Direction\t180Series Created by\n"
+ "\t020Bill Fawcett\t190John Van Caneghem\n"
+ "\n"
+ "\t010Story Contributions\t180Producer & Manual\n"
+ "\t020Ellen Guon\t190Dean Rettig\n"
+ "\n"
+ "\t010Programming & Ideas\t180Original Programming\n"
+ "\t020David Potter\t190Mark Caldwell\n"
+ "\t020Rod Retterath\t190Dave Hathaway\n"
+ "\n"
+ "\t010Manual Illustrations\t180Graphic Artists\n"
+ "\t020Todd Cameron Hamilton\t190Jonathan P. Gwyn\n"
+ "\t020James Clouse\t190Bonnie Long-Hemsath\n"
+ "\t190Julia Ulano\n"
+ "\t190Ricardo Barrera\n";
+ }
+
+ const char *SWORDS_CREDITS2() {
+ return "\f05\v012\t000\x3l\n"
+ "\t100Sound Programming\n"
+ "\t110Todd Hendrix\n"
+ "\n"
+ "\t100Music\n"
+ "\t110Tim Tully\n"
+ "\t110Quality Assurance Manager\n"
+ "\t110Peter Ryu\n"
+ "\t100Testers\n"
+ "\t110Walter Johnson\n"
+ "\t110Bryan Farina\n"
+ "\t110David Baton\n"
+ "\t110Jack Nalls\n";
+ }
+
+ /*
+ "\r\x1\x3"
+ "c\fdÌå÷ è Ìàãèÿ\n"
+ "%s Êñèíà\x2\n"
+ "\v%.3dCopyright (c) %d NWC, Inc.\n"
+ "All Rights Reserved\x1";
+ */
+ const char *OPTIONS_MENU() {
+ return "\r\x1\x3"
+ "c\fd\x8C\xA5\xE7 \xA8 \x8C\xA0\xA3\xA8\xEF\n"
+ "%s \x8A\xE1\xA8\xAD\xA0\x2\n"
+ "\v%.3dCopyright (c) %d NWC, Inc.\n"
+ "All Rights Reserved\x1";
+ }
+ /*
+ "Îáëàêà", "Darkside", "World"
+ */
+ const char **GAME_NAMES() {
+ delete[] _gameNames;
+ _gameNames = new const char *[3] { "\x8E\xA1\xAB\xA0\xAA\xA0", "Darkside", "World" };
+ return _gameNames;
+ }
+
+ /*
+ "\v012Îòðÿä íóæäàåòñÿ â îòäûõå!"
+ */
+ const char *THE_PARTY_NEEDS_REST() {
+ return "\v012\x8E\xE2\xE0\xEF\xA4 \xAD\xE3\xA6\xA4\xA0\xA5\xE2\xE1\xEF \xA2 \xAE\xE2\xA4\xEB\xE5\xA5!";
+ }
+
+ const char *WHO_WILL() {
+ return "\x3"
+ "c\v000\t000%s\n\n%s?\n\v055F1 - F%d";
+ }
+
+ /*
+ "\x3""cÑêîëüêî\n\n"
+ */
+ const char *HOW_MUCH() {
+ return "\x3"
+ "c\x91\xAA\xAE\xAB\xEC\xAA\xAE\n\n";
+ }
+
+ const char *WHATS_THE_PASSWORD() {
+ return "\x3"
+ "cWhat's the Password?\n"
+ "\n"
+ "Please turn to page %u, go to\n"
+ "line %u, and type in word %u.\v067\t000Spaces are not counted as words or lines. "
+ "Hyphenated words are treated as one word. Any line that has any text is considered a line."
+ "\x3"
+ "c\v040\t000\n";
+ }
+
+ const char *PASSWORD_INCORRECT() {
+ return "\x3"
+ "c\v040\n"
+ "\f32Incorrect!\fd";
+ }
+
+ /*
+ "\v007%s íå â ñîñòîÿíèè ÷òî-ëèáî ñäåëàòü!"
+ */
+ const char *IN_NO_CONDITION() {
+ return "\v007%s \xAD\xA5 \xA2 \xE1\xAE\xE1\xE2\xAE\xEF\xAD\xA8\xA8 \xE7\xE2\xAE-\xAB\xA8\xA1\xAE \xE1\xA4\xA5\xAB\xA0\xE2\xEC!";
+ }
+
+ /*
+ "\x3""c\v010Çäåñü íè÷åãî íåò."
+ */
+ const char *NOTHING_HERE() {
+ return "\x3"
+ "c\v010\x87\xA4\xA5\xE1\xEC \xAD\xA8\xE7\xA5\xA3\xAE \xAD\xA5\xE2.";
+ }
+
+ /*
+ "Êòî îáûùåò",
+ "Êòî îòêðîåò",
+ "Êòî âûïüåò",
+ "Êòî áóäåò êîïàòü",
+ "Êòî ïîòðîãàåò",
+ "Êòî ïðî÷ò¸ò",
+ "Êîãî íàó÷èòü",
+ "Êòî âîçüì¸ò",
+ "Êòî óäàðèò",
+ "Êòî óêðàä¸ò",
+ "Êòî äàñò âçÿòêó",
+ "Êòî çàïëàòèò",
+ "Êòî ïðèñÿäåò",
+ "Êòî ïîïðîáóåò",
+ "Êòî åãî ïîâåðí¸ò",
+ "Êòî èñêóïí¸òñÿ",
+ "Êòî åãî óíè÷òîæèò",
+ "Êòî âûäåðíåò",
+ "Êòî ñïóñòèòñÿ",
+ "Êòî áðîñèò ìîíåòêó",
+ "pray",
+ "Êòî ñòàíåò ÷ëåíîì",
+ "act",
+ "Êòî õî÷åò ñûãðàòü",
+ "Êòî íàæì¸ò",
+ "rub",
+ "pick",
+ "eat",
+ "sign",
+ "close",
+ "look",
+ "try"
+ */
+ const char **WHO_ACTIONS() {
+ delete[] _whoActions;
+ _whoActions = new const char *[32] {
+ "\x8A\xE2\xAE \xAE\xA1\xEB\xE9\xA5\xE2",
+ "\x8A\xE2\xAE \xAE\xE2\xAA\xE0\xAE\xA5\xE2",
+ "\x8A\xE2\xAE \xA2\xEB\xAF\xEC\xA5\xE2",
+ "\x8A\xE2\xAE \xA1\xE3\xA4\xA5\xE2 \xAA\xAE\xAF\xA0\xE2\xEC",
+ "\x8A\xE2\xAE \xAF\xAE\xE2\xE0\xAE\xA3\xA0\xA5\xE2",
+ "\x8A\xE2\xAE \xAF\xE0\xAE\xE7\xE2\xF1\xE2",
+ "\x8A\xAE\xA3\xAE \xAD\xA0\xE3\xE7\xA8\xE2\xEC",
+ "\x8A\xE2\xAE \xA2\xAE\xA7\xEC\xAC\xF1\xE2",
+ "\x8A\xE2\xAE \xE3\xA4\xA0\xE0\xA8\xE2",
+ "\x8A\xE2\xAE \xE3\xAA\xE0\xA0\xA4\xF1\xE2",
+ "\x8A\xE2\xAE \xA4\xA0\xE1\xE2 \xA2\xA7\xEF\xE2\xAA\xE3",
+ "\x8A\xE2\xAE \xA7\xA0\xAF\xAB\xA0\xE2\xA8\xE2",
+ "\x8A\xE2\xAE \xAF\xE0\xA8\xE1\xEF\xA4\xA5\xE2",
+ "\x8A\xE2\xAE \xAF\xAE\xAF\xE0\xAE\xA1\xE3\xA5\xE2",
+ "\x8A\xE2\xAE \xA5\xA3\xAE \xAF\xAE\xA2\xA5\xE0\xAD\xF1\xE2",
+ "\x8A\xE2\xAE \xA8\xE1\xAA\xE3\xAF\xAD\xF1\xE2\xE1\xEF",
+ "\x8A\xE2\xAE \xA5\xA3\xAE \xE3\xAD\xA8\xE7\xE2\xAE\xA6\xA8\xE2",
+ "\x8A\xE2\xAE \xA2\xEB\xA4\xA5\xE0\xAD\xA5\xE2",
+ "\x8A\xE2\xAE \xE1\xAF\xE3\xE1\xE2\xA8\xE2\xE1\xEF",
+ "\x8A\xE2\xAE \xA1\xE0\xAE\xE1\xA8\xE2 \xAC\xAE\xAD\xA5\xE2\xAA\xE3",
+ "pray",
+ "\x8A\xE2\xAE \xE1\xE2\xA0\xAD\xA5\xE2 \xE7\xAB\xA5\xAD\xAE\xAC",
+ "act",
+ "\x8A\xE2\xAE \xE5\xAE\xE7\xA5\xE2 \xE1\xEB\xA3\xE0\xA0\xE2\xEC",
+ "\x8A\xE2\xAE \xAD\xA0\xA6\xAC\xF1\xE2",
+ "rub",
+ "pick",
+ "eat",
+ "sign",
+ "close",
+ "look",
+ "try"
+ };
+ return _whoActions;
+ }
+
+ /*
+ "Îòêðûòü ðåø¸òêó",
+ "Îòêðûòü äâåðü",
+ "Ðàñêðûòü ñâèòîê",
+ "Âûáåðèòå ïåðñîíàæà"
+ */
+ const char **WHO_WILL_ACTIONS() {
+ delete[] _whoWillActions;
+ _whoWillActions = new const char *[4] {
+ "\x8E\xE2\xAA\xE0\xEB\xE2\xEC \xE0\xA5\xE8\xF1\xE2\xAA\xE3",
+ "\x8E\xE2\xAA\xE0\xEB\xE2\xEC \xA4\xA2\xA5\xE0\xEC",
+ "\x90\xA0\xE1\xAA\xE0\xEB\xE2\xEC \xE1\xA2\xA8\xE2\xAE\xAA",
+ "\x82\xEB\xA1\xA5\xE0\xA8\xE2\xA5 \xAF\xA5\xE0\xE1\xAE\xAD\xA0\xA6\xA0"
+ };
+ return _whoWillActions;
+ }
+
+ const char **DIRECTION_TEXT_UPPER() {
+ delete[] _directionTextUpper;
+ _directionTextUpper = new const char *[4] { "NORTH", "EAST", "SOUTH", "WEST" };
+ return _directionTextUpper;
+ }
+
+ /*
+ "Ñåâåð",
+ "Âîñòîê",
+ "Þã",
+ "Çàïàä"
+ */
+ const char **DIRECTION_TEXT() {
+ delete[] _directionText;
+ _directionText = new const char *[4] {
+ "\x91\xA5\xA2\xA5\xE0",
+ "\x82\xAE\xE1\xE2\xAE\xAA",
+ "\x9E\xA3",
+ "\x87\xA0\xAF\xA0\xA4"
+ };
+ return _directionText;
+ }
+
+ /*
+ "×åëîâåê",
+ "Ýëüô",
+ "Äâîðô",
+ "Ãíîì",
+ "Ïîëóîðê"
+ */
+ const char **RACE_NAMES() {
+ delete[] _raceNames;
+ _raceNames = new const char *[5] {
+ "\x97\xA5\xAB\xAE\xA2\xA5\xAA",
+ "\x9D\xAB\xEC\xE4",
+ "\x84\xA2\xAE\xE0\xE4",
+ "\x83\xAD\xAE\xAC",
+ "\x8F\xAE\xAB\xE3\xAE\xE0\xAA"
+ };
+ return _raceNames;
+ }
+
+ /*
+ "Õîðîøèé",
+ "Íåéòðàë",
+ "Çëîé(-àÿ)"
+ */
+ const char **ALIGNMENT_NAMES() {
+ delete[] _alignmentNames;
+ _alignmentNames = new const char *[3] {
+ "\x95\xAE\xE0\xAE\xE8\xA8\xA9",
+ "\x8D\xA5\xA9\xE2\xE0\xA0\xAB",
+ "\x87\xAB\xAE\xA9(-\xA0\xEF)"
+ };
+ return _alignmentNames;
+ }
+
+ /*
+ "Ìóæ÷èíà",
+ "Æåíùèíà"
+ */
+ const char **SEX_NAMES() {
+ delete[] _sexNames;
+ _sexNames = new const char *[2] {
+ "\x8C\xE3\xA6\xE7\xA8\xAD\xA0",
+ "\x86\xA5\xAD\xE9\xA8\xAD\xA0"
+ };
+ return _sexNames;
+ }
+
+ /*
+ "Âîðîâñòâî\t100",
+ "Îðóæåéíèê",
+ "Àñòðîëîã",
+ "Àòëåò",
+ "Êàðòîãðàô",
+ "Êðåñòîíîñåö",
+ "×óâñòâî íàïðàâëåíèÿ",
+ "ßçûêîâåä",
+ "Êóïåö",
+ "Ñêàëîëàç",
+ "Øòóðìàí",
+ "Ñëåäîïûò",
+ "Ìàãèñòð ìîëèòâû",
+ "Ëîâêîñòü ïàëüöåâ",
+ "Ïëîâåö",
+ "Îõîòíèê",
+ "Âîñïðèÿòèå",
+ "×óâñòâî îïàñíîñòè"
+ */
+ const char **SKILL_NAMES() {
+ delete[] _skillNames;
+ _skillNames = new const char *[18] {
+ "\x82\xAE\xE0\xAE\xA2\xE1\xE2\xA2\xAE\t100",
+ "\x8E\xE0\xE3\xA6\xA5\xA9\xAD\xA8\xAA",
+ "\x80\xE1\xE2\xE0\xAE\xAB\xAE\xA3",
+ "\x80\xE2\xAB\xA5\xE2",
+ "\x8A\xA0\xE0\xE2\xAE\xA3\xE0\xA0\xE4",
+ "\x8A\xE0\xA5\xE1\xE2\xAE\xAD\xAE\xE1\xA5\xE6",
+ "\x97\xE3\xA2\xE1\xE2\xA2\xAE \xAD\xA0\xAF\xE0\xA0\xA2\xAB\xA5\xAD\xA8\xEF",
+ "\x9F\xA7\xEB\xAA\xAE\xA2\xA5\xA4",
+ "\x8A\xE3\xAF\xA5\xE6",
+ "\x91\xAA\xA0\xAB\xAE\xAB\xA0\xA7",
+ "\x98\xE2\xE3\xE0\xAC\xA0\xAD",
+ "\x91\xAB\xA5\xA4\xAE\xAF\xEB\xE2",
+ "\x8C\xA0\xA3\xA8\xE1\xE2\xE0 \xAC\xAE\xAB\xA8\xE2\xA2\xEB",
+ "\x8B\xAE\xA2\xAA\xAE\xE1\xE2\xEC \xAF\xA0\xAB\xEC\xE6\xA5\xA2",
+ "\x8F\xAB\xAE\xA2\xA5\xE6",
+ "\x8E\xE5\xAE\xE2\xAD\xA8\xAA",
+ "\x82\xAE\xE1\xAF\xE0\xA8\xEF\xE2\xA8\xA5",
+ "\x97\xE3\xA2\xE1\xE2\xA2\xAE \xAE\xAF\xA0\xE1\xAD\xAE\xE1\xE2\xA8"
+ };
+ return _skillNames;
+ }
+
+ /*
+ "Ðûöàðü",
+ "Ïàëàäèí",
+ "Ëó÷íèê",
+ "Êëèðèê",
+ "Ìàã",
+ "Âîð",
+ "Íèíäçÿ",
+ "Âàðâàð",
+ "Äðóèä",
+ "Ñëåäîïûò",
+ nullptr
+ */
+ const char **CLASS_NAMES() {
+ delete[] _classNames;
+ _classNames = new const char *[11] {
+ "\x90\xEB\xE6\xA0\xE0\xEC",
+ "\x8F\xA0\xAB\xA0\xA4\xA8\xAD",
+ "\x8B\xE3\xE7\xAD\xA8\xAA",
+ "\x8A\xAB\xA8\xE0\xA8\xAA",
+ "\x8C\xA0\xA3",
+ "\x82\xAE\xE0",
+ "\x8D\xA8\xAD\xA4\xA7\xEF",
+ "\x82\xA0\xE0\xA2\xA0\xE0",
+ "\x84\xE0\xE3\xA8\xA4",
+ "\x91\xAB\xA5\xA4\xAE\xAF\xEB\xE2",
+ nullptr
+ };
+ return _classNames;
+ }
+
+ /*
+ "Ïðîêëÿòèå",
+ "Heart Broken",
+ "Ñëàáîñòü",
+ "Îòðàâëåíèå",
+ "Áîëåçíü",
+ "Áåçóìèå",
+ "Âëþáë¸í(-à)",
+ "Íàâåñåëå",
+ "Ñîí",
+ "Â óíûíèè",
+ "Â ñìÿòåíèè",
+ "Ïàðàëè÷",
+ "Á.ñîçíàíèÿ",
+ "Ìåðòâ",
+ "Êàìåíü",
+ "Óíè÷òîæåí",
+ "Õîðîøåå"
+ */
+ const char **CONDITION_NAMES() {
+ delete[] _conditionNames;
+ _conditionNames = new const char *[17] {
+ "\x8F\xE0\xAE\xAA\xAB\xEF\xE2\xA8\xA5",
+ "Heart Broken",
+ "\x91\xAB\xA0\xA1\xAE\xE1\xE2\xEC",
+ "\x8E\xE2\xE0\xA0\xA2\xAB\xA5\xAD\xA8\xA5",
+ "\x81\xAE\xAB\xA5\xA7\xAD\xEC",
+ "\x81\xA5\xA7\xE3\xAC\xA8\xA5",
+ "\x82\xAB\xEE\xA1\xAB\xF1\xAD(-\xA0)",
+ "\x8D\xA0\xA2\xA5\xE1\xA5\xAB\xA5",
+ "\x91\xAE\xAD",
+ "\x82 \xE3\xAD\xEB\xAD\xA8\xA8",
+ "\x82 \xE1\xAC\xEF\xE2\xA5\xAD\xA8\xA8",
+ "\x8F\xA0\xE0\xA0\xAB\xA8\xE7",
+ "\x81.\xE1\xAE\xA7\xAD\xA0\xAD\xA8\xEF",
+ "\x8C\xA5\xE0\xE2\xA2",
+ "\x8A\xA0\xAC\xA5\xAD\xEC",
+ "\x93\xAD\xA8\xE7\xE2\xAE\xA6\xA5\xAD",
+ "\x95\xAE\xE0\xAE\xE8\xA5\xA5"
+ };
+ return _conditionNames;
+ }
+
+ /*
+ "Õîðîøåå"
+ */
+ const char *GOOD() {
+ return "\x95\xAE\xE0\xAE\xE8\xA5\xA5";
+ }
+
+ /*
+ "\n\t014Áëàãîñëîâåíèå\t095%+d"
+ */
+ const char *BLESSED() {
+ return "\n\t014\x81\xAB\xA0\xA3\xAE\xE1\xAB\xAE\xA2\xA5\xAD\xA8\xA5\t095%+d";
+ }
+
+ /*
+ "\n\t014Ñèëîâîé ùèò\t095%+d";
+ */
+ const char *POWER_SHIELD() {
+ return "\n\t014\x91\xA8\xAB\xAE\xA2\xAE\xA9 \xE9\xA8\xE2\t095%+d";
+ }
+
+ /*
+ "\n\t014Ñâÿòîé äàð\t095%+d"
+ */
+ const char *HOLY_BONUS() {
+ return "\n\t014\x91\xA2\xEF\xE2\xAE\xA9 \xA4\xA0\xE0\t095%+d";
+ }
+
+ /*
+ "\n\t014Ìóæåñòâî\t095%+d"
+ */
+ const char *HEROISM() {
+ return "\n\t014\x8C\xE3\xA6\xA5\xE1\xE2\xA2\xAE\t095%+d";
+ }
+
+ /*
+ "\f15Â îòðÿäå\fd"
+ */
+ const char *IN_PARTY() {
+ return "\f15\x82 \xAE\xE2\xE0\xEF\xA4\xA5\fd";
+ }
+
+ const char *PARTY_DETAILS() {
+ return "\015\003l\002\014"
+ "00"
+ "\013"
+ "001"
+ "\011"
+ "035%s"
+ "\013"
+ "009"
+ "\011"
+ "035%s"
+ "\013"
+ "017"
+ "\011"
+ "035%s"
+ "\013"
+ "025"
+ "\011"
+ "035%s"
+ "\013"
+ "001"
+ "\011"
+ "136%s"
+ "\013"
+ "009"
+ "\011"
+ "136%s"
+ "\013"
+ "017"
+ "\011"
+ "136%s"
+ "\013"
+ "025"
+ "\011"
+ "136%s"
+ "\013"
+ "044"
+ "\011"
+ "035%s"
+ "\013"
+ "052"
+ "\011"
+ "035%s"
+ "\013"
+ "060"
+ "\011"
+ "035%s"
+ "\013"
+ "068"
+ "\011"
+ "035%s"
+ "\013"
+ "044"
+ "\011"
+ "136%s"
+ "\013"
+ "052"
+ "\011"
+ "136%s"
+ "\013"
+ "060"
+ "\011"
+ "136%s"
+ "\013"
+ "068"
+ "\011"
+ "136%s";
+ }
+
+ /*
+ "%s\x2\x3""c\v106\t013Ââåðõ\t048Âíèç\t083\f37Ó\fdäàë\t118\f37Â\fdûãí"
+ "\t153\f37Ñ\fdîçä\t188Â\f37û\fdõîä\x1";
+ */
+ const char *PARTY_DIALOG_TEXT() {
+ return "%s\x2\x3"
+ "c\v106\t013\x82\xA2\xA5\xE0\xE5\t048\x82\xAD\xA8\xA7\t083\f37\x93\fd\xA4\xA0\xAB\t118\f37\x82\fd\xEB\xA3\xAD"
+ "\t153\f37\x91\fd\xAE\xA7\xA4\t188\x82\f37\xEB\fd\xE5\xAE\xA4\x1";
+ }
+
+ /*
+ "Âàì íå ñ êåì ïóòåøåñòâîâàòü"
+ */
+ const char *NO_ONE_TO_ADVENTURE_WITH() {
+ return "\x82\xA0\xAC \xAD\xA5 \xE1 \xAA\xA5\xAC \xAF\xE3\xE2\xA5\xE8\xA5\xE1\xE2\xA2\xAE\xA2\xA0\xE2\xEC";
+ }
+
+ /*
+ "Âàø ñïèñîê ïîëîí!"
+ */
+ const char *YOUR_ROSTER_IS_FULL() {
+ return "\x82\xA0\xE8 \xE1\xAF\xA8\xE1\xAE\xAA \xAF\xAE\xAB\xAE\xAD!";
+ }
+
+ /*
+ "\fd\x3""c\t000\v002Ïîäîæäèòå..."
+ */
+ const char *PLEASE_WAIT() {
+ return "\fd\x3"
+ "c\t000\v002\x8F\xAE\xA4\xAE\xA6\xA4\xA8\xE2\xA5...";
+ }
+
+ /*
+ "\x3""c\t000\v002Óïñ..."
+ */
+ const char *OOPS() {
+ return "\x3"
+ "c\t000\v002\x93\xAF\xE1...";
+ }
+
+ /*
+ "\r\x2\x3""c\v122\t013"
+ "\f37Â\fdêë\t040\f37Ñ\fdí\t067ESC"
+ "\x1\t000\v000Áàíê Êñèíà\v015\n"
+ "Áàíê\x3""l\n"
+ "Çîë\x3""r\t000%s\x3""l\n"
+ "Àëìç\x3""r\t000%s\x3""c\n"
+ "\n"
+ "Îòðÿä\x3""l\n"
+ "Çîë\x3""r\t000%s\x3""l\n"
+ "Àëìç\x3""r\t000%s";
+ */
+ const char *BANK_TEXT() {
+ return "\r\x2\x3"
+ "c\v122\t013"
+ "\f37\x82\fd\xAA\xAB\t040\f37\x91\fd\xAD\t067ESC"
+ "\x1\t000\v000\x81\xA0\xAD\xAA \x8A\xE1\xA8\xAD\xA0\v015\n"
+ "\x81\xA0\xAD\xAA\x3"
+ "l\n"
+ "\x87\xAE\xAB\x3"
+ "r\t000%s\x3"
+ "l\n"
+ "\x80\xAB\xAC\xA7\x3"
+ "r\t000%s\x3"
+ "c\n"
+ "\n"
+ "\x8E\xE2\xE0\xEF\xA4\x3"
+ "l\n"
+ "\x87\xAE\xAB\x3"
+ "r\t000%s\x3"
+ "l\n"
+ "\x80\xAB\xAC\xA7\x3"
+ "r\t000%s";
+ }
+
+ /*
+ "\x1\r\x3""c\v000\t000"
+ "Ëàâêà\t039\v027%s\x3""l\v046\n"
+ "\t011\f37Ñ\fdìîòðåòü\n"
+ "\t000\v090Çîë\x3""r\t000%s"
+ "\x2\x3""c\v122\t040ESC\x1";
+ */
+ const char *BLACKSMITH_TEXT() {
+ return "\x1\r\x3"
+ "c\v000\t000"
+ "\x8B\xA0\xA2\xAA\xA0\t039\v027%s\x3"
+ "l\v046\n"
+ "\t011\f37\x91\fd\xAC\xAE\xE2\xE0\xA5\xE2\xEC\n"
+ "\t000\v090\x87\xAE\xAB\x3"
+ "r\t000%s"
+ "\x2\x3"
+ "c\v122\t040ESC\x1";
+ }
+
+ /*
+ "\nÂû äîëæíû áûòü ÷ëåíîì ãèëüäèè, ÷òîáû ïîêóïàòü çàêëèíàíèÿ."
+ */
+ const char *GUILD_NOT_MEMBER_TEXT() {
+ return "\n\x82\xEB \xA4\xAE\xAB\xA6\xAD\xEB \xA1\xEB\xE2\xEC \xE7\xAB\xA5\xAD\xAE\xAC \xA3\xA8\xAB\xEC\xA4\xA8\xA8, \xE7\xE2\xAE\xA1\xEB \xAF\xAE\xAA\xE3\xAF\xA0\xE2\xEC \xA7\xA0\xAA\xAB\xA8\xAD\xA0\xAD\xA8\xEF.";
+ }
+
+ /*
+ "\x3""c\v027\t039%s"
+ "\x3""l\v046\n"
+ "\t012\f37Ê\fdóïèòü\n"
+ "\t012\f37Î\fdïèñàíèÿ";
+ */
+ const char *GUILD_TEXT() {
+ return "\x3"
+ "c\v027\t039%s"
+ "\x3"
+ "l\v046\n"
+ "\t012\f37\x8A\fd\xE3\xAF\xA8\xE2\xEC\n"
+ "\t012\f37\x8E\fd\xAF\xA8\xE1\xA0\xAD\xA8\xEF";
+ }
+
+ /*
+ "\r\x3""c\v000\t000Òàâåðíà\t039"
+ "\v027%s%s\x3""l\t000"
+ "\v090Çîë\x3""r\t000%s\x2\x3""c\v122"
+ "\t021\f37Î\fdòäûõ\t060ESC\x1";
+ */
+ const char *TAVERN_TEXT() {
+ return "\r\x3"
+ "c\v000\t000\x92\xA0\xA2\xA5\xE0\xAD\xA0\t039"
+ "\v027%s%s\x3"
+ "l\t000"
+ "\v090\x87\xAE\xAB\x3"
+ "r\t000%s\x2\x3"
+ "c\v122"
+ "\t021\f37\x8E\fd\xE2\xA4\xEB\xE5\t060ESC\x1";
+ }
+
+ /*
+ "\x3""l\t017\v046\f37Â\fdûïèòü\n"
+ "\t017\f37Å\fdäà\n"
+ "\t017\f37×\fdàåâûå\n"
+ "\t017\f37Ñ\fdëóõè";
+ */
+ const char *FOOD_AND_DRINK() {
+ return "\x3"
+ "l\t017\v046\f37\x82\fd\xEB\xAF\xA8\xE2\xEC\n"
+ "\t017\f37\x85\fd\xA4\xA0\n"
+ "\t017\f37\x97\fd\xA0\xA5\xA2\xEB\xA5\n"
+ "\t017\f37\x91\fd\xAB\xE3\xE5\xA8";
+ }
+
+ /*
+ "\n"
+ "\n"
+ "Íåäóðíî\n"
+ "\n"
+ "Íàæìèòå êëàâèøó!";
+ */
+ const char *GOOD_STUFF() {
+ return "\n"
+ "\n"
+ "\x8D\xA5\xA4\xE3\xE0\xAD\xAE\n"
+ "\n"
+ "\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3!";
+ }
+
+ /*
+ "\nÑïåðâà âûïåéòå\n\nÍàæìèòå êëàâèøó!"
+ */
+ const char *HAVE_A_DRINK() {
+ return "\n\x91\xAF\xA5\xE0\xA2\xA0 \xA2\xEB\xAF\xA5\xA9\xE2\xA5\n\n\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3!";
+ }
+
+ /*
+ "\n\nÂû ïüÿíû\n\nÍàæìèòå êëàâèøó!"
+ */
+ const char *YOURE_DRUNK() {
+ return "\n\n\x82\xEB \xAF\xEC\xEF\xAD\xEB\n\n\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3!";
+ }
+
+ /*
+ "\r\x3""c\v000\t000Õðàì"
+ "\t039\v027%s\x3""l\t000\v046"
+ "\f37Ë\fdå÷èòü\x3""r\t000%lu\x3""l\n"
+ "\f37Ä\fdàð\x3""r\t000%lu\x3""l\n"
+ "\f37Ñ\fdíÏðîêë\x3""r\t000%s"
+ "\x3""l\t000\v090Çîë\x3""r\t000%s"
+ "\x2\x3""c\v122\t040ESC\x1";
+ */
+ const char *TEMPLE_TEXT() {
+ return "\r\x3"
+ "c\v000\t000\x95\xE0\xA0\xAC"
+ "\t039\v027%s\x3"
+ "l\t000\v046"
+ "\f37\x8B\fd\xA5\xE7\xA8\xE2\xEC\x3"
+ "r\t000%lu\x3"
+ "l\n"
+ "\f37\x84\fd\xA0\xE0\x3"
+ "r\t000%lu\x3"
+ "l\n"
+ "\f37\x91\fd\xAD\x8F\xE0\xAE\xAA\xAB\x3"
+ "r\t000%s"
+ "\x3"
+ "l\t000\v090\x87\xAE\xAB\x3"
+ "r\t000%s"
+ "\x2\x3"
+ "c\v122\t040ESC\x1";
+ }
+
+ /*
+ "%s\nÍóæíî %lu î÷êîâ îïûòà äëÿ óðîâíÿ %u."
+ */
+ const char *EXPERIENCE_FOR_LEVEL() {
+ return "%s\n\x8D\xE3\xA6\xAD\xAE %lu \xAE\xE7\xAA\xAE\xA2 \xAE\xAF\xEB\xE2\xA0 \xA4\xAB\xEF \xE3\xE0\xAE\xA2\xAD\xEF %u.";
+ }
+
+ /*
+ "%s\nÂû óæå çíàåòå âñ¸, ÷åìó ìû ìîæåì âàñ íàó÷èòü!"
+ */
+ const char *TRAINING_LEARNED_ALL() {
+ return "%s\n\x82\xEB \xE3\xA6\xA5 \xA7\xAD\xA0\xA5\xE2\xA5 \xA2\xE1\xF1, \xE7\xA5\xAC\xE3 \xAC\xEB \xAC\xAE\xA6\xA5\xAC \xA2\xA0\xE1 \xAD\xA0\xE3\xE7\xA8\xE2\xEC!";
+ }
+
+ /*
+ "%s ìîæåò îáó÷àòüñÿ äî óðîâíÿ %d.\x3""l\n"
+ "\v081Öåíà\x3""r\t000%lu";
+ */
+ const char *ELIGIBLE_FOR_LEVEL() {
+ return "%s \xAC\xAE\xA6\xA5\xE2 \xAE\xA1\xE3\xE7\xA0\xE2\xEC\xE1\xEF \xA4\xAE \xE3\xE0\xAE\xA2\xAD\xEF %d.\x3"
+ "l\n"
+ "\v081\x96\xA5\xAD\xA0\x3"
+ "r\t000%lu";
+ }
+
+ /*
+ "\r\x3""cÎáó÷åíèå\n"
+ "\n"
+ "%s\x3""l\v090\t000Çîë\x3""r\t000%s\x2\x3""c\v122\t021"
+ "\f37Î\fdáó÷åíèå\t060ESC\x1";
+ */
+ const char *TRAINING_TEXT() {
+ return "\r\x3"
+ "c\x8E\xA1\xE3\xE7\xA5\xAD\xA8\xA5\n"
+ "\n"
+ "%s\x3"
+ "l\v090\t000\x87\xAE\xAB\x3"
+ "r\t000%s\x2\x3"
+ "c\v122\t021"
+ "\f37\x8E\fd\xA1\xE3\xE7\xA5\xAD\xA8\xA5\t060ESC\x1";
+ }
+
+ /*
+ "\x3""c\v000\t000%s\x3""l\n"
+ "\n"
+ "Çîë\x3""r\t000%s\x3""l\n"
+ "Àëìç\x3""r\t000%s\x2\x3""c\v096\t007\f37À\fdëìç\t035\f37Ç\fdîë\t067ESC\x1";
+ */
+ const char *GOLD_GEMS() {
+ return "\x3"
+ "c\v000\t000%s\x3"
+ "l\n"
+ "\n"
+ "\x87\xAE\xAB\x3"
+ "r\t000%s\x3"
+ "l\n"
+ "\x80\xAB\xAC\xA7\x3"
+ "r\t000%s\x2\x3"
+ "c\v096\t007\f37\x80\fd\xAB\xAC\xA7\t035\f37\x87\fd\xAE\xAB\t067ESC\x1";
+ }
+
+ /*
+ "\t000\v000\x3""c%s\x3""l\n"
+ "\n"
+ "\x4""077Çîë\x3""r\t000%s\x3""l\n"
+ "\x4""077Àëìç\x3""r\t000%s\x3""l\t000\v051\x4""077\n"
+ "\x4""077";
+ */
+ const char *GOLD_GEMS_2() {
+ return "\t000\v000\x3"
+ "c%s\x3"
+ "l\n"
+ "\n"
+ "\x4"
+ "077\x87\xAE\xAB\x3"
+ "r\t000%s\x3"
+ "l\n"
+ "\x4"
+ "077\x80\xAB\xAC\xA7\x3"
+ "r\t000%s\x3"
+ "l\t000\v051\x4"
+ "077\n"
+ "\x4"
+ "077";
+ }
+
+ /*
+ "Ïîëîæèòü íà ñ÷¸ò", "Ñíÿòü ñî ñ÷¸òà"
+ */
+ const char **DEPOSIT_WITHDRAWL() {
+ delete[] _depositWithdrawl;
+ _depositWithdrawl = new const char *[2] { "\x8F\xAE\xAB\xAE\xA6\xA8\xE2\xEC \xAD\xA0 \xE1\xE7\xF1\xE2", "\x91\xAD\xEF\xE2\xEC \xE1\xAE \xE1\xE7\xF1\xE2\xA0" };
+ return _depositWithdrawl;
+ }
+
+ /*
+ "\x3""c\v012Íåäîñòàòî÷íî %s %s!\x3""l"
+ */
+ const char *NOT_ENOUGH_X_IN_THE_Y() {
+ return "\x3"
+ "c\v012\x8D\xA5\xA4\xAE\xE1\xE2\xA0\xE2\xAE\xE7\xAD\xAE %s %s!\x3"
+ "l";
+ }
+
+ /*
+ "\x3""c\v012Íåò %s %s!\x3""l"
+ */
+ const char *NO_X_IN_THE_Y() {
+ return "\x3"
+ "c\v012\x8D\xA5\xE2 %s %s!\x3"
+ "l";
+ }
+
+ /*
+ "Ñèëà", "Èíòåëëåêò", "Ñèëà äóõà", "Ñëîæåíèå", "Ñêîðîñòü",
+ "Ìåòêîñòü", "Óäà÷à", "Âîçðàñò", "Óðîâåíü", "Êëàññ çàùèòû", "Çäîðîâüå",
+ "Î÷êè ìàãèè", "Óñòîé÷èâîñòè", "Íàâûêè", "Íàãðàäû", "Îïûò"
+ */
+ const char **STAT_NAMES() {
+ delete[] _statNames;
+ _statNames = new const char *[16] {
+ "\x91\xA8\xAB\xA0", "\x88\xAD\xE2\xA5\xAB\xAB\xA5\xAA\xE2", "\x91\xA8\xAB\xA0 \xA4\xE3\xE5\xA0", "\x91\xAB\xAE\xA6\xA5\xAD\xA8\xA5", "\x91\xAA\xAE\xE0\xAE\xE1\xE2\xEC",
+ "\x8C\xA5\xE2\xAA\xAE\xE1\xE2\xEC", "\x93\xA4\xA0\xE7\xA0", "\x82\xAE\xA7\xE0\xA0\xE1\xE2", "\x93\xE0\xAE\xA2\xA5\xAD\xEC", "\x8A\xAB\xA0\xE1\xE1 \xA7\xA0\xE9\xA8\xE2\xEB", "\x87\xA4\xAE\xE0\xAE\xA2\xEC\xA5",
+ "\x8E\xE7\xAA\xA8 \xAC\xA0\xA3\xA8\xA8", "\x93\xE1\xE2\xAE\xA9\xE7\xA8\xA2\xAE\xE1\xE2\xA8", "\x8D\xA0\xA2\xEB\xAA\xA8", "\x8D\xA0\xA3\xE0\xA0\xA4\xEB", "\x8E\xAF\xEB\xE2"
+ };
+ return _statNames;
+ }
+
+ /*
+ "Çîëîòî", "Àëìàçû", "Ïèùà", "Ñîñòîÿíèå"
+ */
+ const char **CONSUMABLE_NAMES() {
+ delete[] _consumableNames;
+ _consumableNames = new const char *[4] { "\x87\xAE\xAB\xAE\xE2\xAE", "\x80\xAB\xAC\xA0\xA7\xEB", "\x8F\xA8\xE9\xA0", "\x91\xAE\xE1\xE2\xAE\xEF\xAD\xA8\xA5" };
+ return _consumableNames;
+ }
+
+ /*
+ "ó îòðÿäà", "â áàíêå"
+ */
+ const char **WHERE_NAMES() {
+ delete[] _whereNames;
+ _whereNames = new const char *[2] { "\xE3 \xAE\xE2\xE0\xEF\xA4\xA0", "\xA2 \xA1\xA0\xAD\xAA\xA5" };
+ return _whereNames;
+ }
+
+ /*
+ "\x3""c\t000\v051Ñêîëüêî\x3""l\n"
+ */
+ const char *AMOUNT() {
+ return "\x3"
+ "c\t000\v051\x91\xAA\xAE\xAB\xEC\xAA\xAE\x3"
+ "l\n";
+ }
+
+ /*
+ "\v007Âàøè ðþêçàêè óæå íàïîëíåíû!"
+ */
+ const char *FOOD_PACKS_FULL() {
+ return "\v007\x82\xA0\xE8\xA8 \xE0\xEE\xAA\xA7\xA0\xAA\xA8 \xE3\xA6\xA5 \xAD\xA0\xAF\xAE\xAB\xAD\xA5\xAD\xEB!";
+ }
+
+ /*
+ "\x3""c\v027\t039%s\x3""l\v046\n"
+ "\t012\f37Ê\fdóïèòü\n"
+ "\t012\f37Î\fdïèñàíèÿ";
+ */
+ const char *BUY_SPELLS() {
+ return "\x3"
+ "c\v027\t039%s\x3"
+ "l\v046\n"
+ "\t012\f37\x8A\fd\xE3\xAF\xA8\xE2\xEC\n"
+ "\t012\f37\x8E\fd\xAF\xA8\xE1\xA0\xAD\xA8\xEF";
+ }
+
+ /*
+ "\x1\r\f00\x3""c\v000\t000Ãèëüäèÿ\n"
+ "%s\x3""l\t000\v090Çîë"
+ "\x3""r\t000%s\x2\x3""c\v122\t040ESC\x1";
+ */
+ const char *GUILD_OPTIONS() {
+ return "\x1\r\f00\x3"
+ "c\v000\t000\x83\xA8\xAB\xEC\xA4\xA8\xEF\n"
+ "%s\x3"
+ "l\t000\v090\x87\xAE\xAB"
+ "\x3"
+ "r\t000%s\x2\x3"
+ "c\v122\t040ESC\x1";
+ }
+
+ /*
+ "Âû íå çàêëèíàòåëü..."
+ */
+ const char *NOT_A_SPELL_CASTER() {
+ return "\x82\xEB \xAD\xA5 \xA7\xA0\xAA\xAB\xA8\xAD\xA0\xE2\xA5\xAB\xEC...";
+ }
+
+ /*
+ "Âû óæå çíàåòå âñ¸,\n"
+ "\t010÷åìó ìû ìîæåì âàñ\n"
+ "\t010íàó÷èòü!\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n";
+ */
+ const char *SPELLS_LEARNED_ALL() {
+ return "\x82\xEB \xE3\xA6\xA5 \xA7\xAD\xA0\xA5\xE2\xA5 \xA2\xE1\xF1,\n"
+ "\t010\xE7\xA5\xAC\xE3 \xAC\xEB \xAC\xAE\xA6\xA5\xAC \xA2\xA0\xE1\n"
+ "\t010\xAD\xA0\xE3\xE7\xA8\xE2\xEC!\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n";
+ }
+
+ /*
+ "\r\fd%s\x2\x3""c\t000\v002Çàêëèíàíèÿ"
+ */
+ const char *SPELLS_FOR() {
+ return "\r\fd%s\x2\x3"
+ "c\t000\v002\x87\xA0\xAA\xAB\xA8\xAD\xA0\xAD\xA8\xEF";
+ }
+
+ const char *SPELL_LINES_0_TO_9() {
+ return "\x2\x3l\v015\t0011\n2\n3\n4\n5\n6\n7\n8\n9\n0";
+ }
+
+ const char *SPELLS_DIALOG_SPELLS() {
+ return "\x3l\v015"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l\n"
+ "\t010\f%2u%s\fd\x3l"
+ "\t004\v110%s - %u\x1";
+ }
+
+ /*
+ "Ìàíà"
+ */
+ const char *SPELL_PTS() {
+ return "\x8C\xA0\xAD\xA0";
+ }
+
+ /*
+ "Çîë"
+ */
+ const char *GOLD() {
+ return "\x87\xAE\xAB";
+ }
+
+ /*
+ "\x3""c\f09%s\fd\x3""l\n"
+ "\n"
+ "%s\x3""c\t000\v110Í. êëàâèøó!";
+ */
+ const char *SPELL_INFO() {
+ return "\x3"
+ "c\f09%s\fd\x3"
+ "l\n"
+ "\n"
+ "%s\x3"
+ "c\t000\v110\x8D. \xAA\xAB\xA0\xA2\xA8\xE8\xE3!";
+ }
+
+ /*
+ "\x3""l\v000\t000\fd%s Æåëàåòå ïðèîáðåñòè "
+ "\f09%s\fd çà %u?";
+ */
+ const char *SPELL_PURCHASE() {
+ return "\x3"
+ "l\v000\t000\fd%s \x86\xA5\xAB\xA0\xA5\xE2\xA5 \xAF\xE0\xA8\xAE\xA1\xE0\xA5\xE1\xE2\xA8 "
+ "\f09%s\fd \xA7\xA0 %u?";
+ }
+
+ /*
+ "\x3""c\v000\t000%s\x3l\v139"
+ "\t000X = %d\x3r\t000Y = %d\x3""c\t000%s";
+ */
+ const char *MAP_TEXT() {
+ return "\x3"
+ "c\v000\t000%s\x3l\v139"
+ "\t000X = %d\x3r\t000Y = %d\x3"
+ "c\t000%s";
+ }
+
+ /*
+ "\x3""l\n\n\t024Ñâåò\x3""r\t124%u";
+ */
+ const char *LIGHT_COUNT_TEXT() {
+ return "\x3"
+ "l\n\n\t024\x91\xA2\xA5\xE2\x3"
+ "r\t124%u";
+ }
+
+ /*
+ "%c%sÎãîíü%s%u"
+ */
+ const char *FIRE_RESISTENCE_TEXT() {
+ return "%c%s\x8E\xA3\xAE\xAD\xEC%s%u";
+ }
+
+ /*
+ "%c%sÃðîì%s%u"
+ */
+ const char *ELECRICITY_RESISTENCE_TEXT() {
+ return "%c%s\x83\xE0\xAE\xAC%s%u";
+ }
+
+ /*
+ "%c%sÕîëîä%s%u"
Commit: 84ad41f685ba02470db8ffc2cdf268664ef125e1
https://github.com/scummvm/scummvm/commit/84ad41f685ba02470db8ffc2cdf268664ef125e1
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Further sharpening ru translation
Changed paths:
devtools/create_xeen/ru_constants.h
diff --git a/devtools/create_xeen/ru_constants.h b/devtools/create_xeen/ru_constants.h
index 9343ad33e3..8526c737ff 100644
--- a/devtools/create_xeen/ru_constants.h
+++ b/devtools/create_xeen/ru_constants.h
@@ -26,81 +26,43 @@
class RU : public LangConstants {
public:
- /*
- "\v012\t000\x3"
- "c\f35Èäåÿ è ðóêîâîäñòâî ïðîåêòîì:\n"
- "\f17Äæîí Âàí Êàíåãåì\x3"
- "l\n"
- "\n"
- "\t025\f35Ïðîãðàììèñòû:\n"
- "\t035\f17Ìàðê Êîëäóýëë\n"
- "\t035Äåéâ Õýòýóýé\n"
- "\n"
- "\t025\f35Àóäèîñèñòåìà è çâóê:\n"
- "\t035\f17Òîää Õåíäðèêñ\n"
- "\n"
- "\t025\f35Ìóçûêà è ðå÷ü:\n"
- "\t035\f17Òèì Òàëëè\n"
- "\n"
- "\t025\f35Ñöåíàðèé:\n"
- "\t035\f17Ïîë Ðàòíåð\n"
- "\t035Äåááè ̸ðôè\n"
- "\t035Äæîí Âàí Êàíåãåì\v012\n"
- "\n"
- "\n"
- "\t180\f35Õóäîæíèêè:\n"
- "\t190\f17Ëóè Äæîíñîí\n"
- "\t190Äæîíàòàí Ï. Ãâèí\n"
- "\t190Áîíèòà Ëîíã-Õåìñàò\n"
- "\t190Äæóëèÿ Óëàíî\n"
- "\t190Ðèêàðäî Áàððåðà\n"
- "\n"
- "\t180\f35Òåñòåðû:\n"
- "\t190\f17Áåíäæàìèí Áåíò\n"
- "\t190Ìàðèî Ýñêàìèëëà\n"
- "\t190Ðè÷àðä Ýñïè\n"
- "\t190Ñêîòò Ìàêäýíèåë\n"
- "\t190Êëåéòîí Ðåòçåð\n"
- "\t190Ìàéêë Ñóàðåñ\x3"
- "c";
- */
const char *CLOUDS_CREDITS() {
- return "\v012\t000\x3"
- "c\f35\x88\xA4\xA5\xEF \xA8 \xE0\xE3\xAA\xAE\xA2\xAE\xA4\xE1\xE2\xA2\xAE \xAF\xE0\xAE\xA5\xAA\xE2\xAE\xAC:\n"
- "\f17\x84\xA6\xAE\xAD \x82\xA0\xAD \x8A\xA0\xAD\xA5\xA3\xA5\xAC\x3"
- "l\n"
- "\n"
- "\t025\f35\x8F\xE0\xAE\xA3\xE0\xA0\xAC\xAC\xA8\xE1\xE2\xEB:\n"
- "\t035\f17\x8C\xA0\xE0\xAA \x8A\xAE\xAB\xA4\xE3\xED\xAB\xAB\n"
- "\t035\x84\xA5\xA9\xA2 \x95\xED\xE2\xED\xE3\xED\xA9\n"
- "\n"
- "\t025\f35\x80\xE3\xA4\xA8\xAE\xE1\xA8\xE1\xE2\xA5\xAC\xA0 \xA8 \xA7\xA2\xE3\xAA:\n"
- "\t035\f17\x92\xAE\xA4\xA4 \x95\xA5\xAD\xA4\xE0\xA8\xAA\xE1\n"
- "\n"
- "\t025\f35\x8C\xE3\xA7\xEB\xAA\xA0 \xA8 \xE0\xA5\xE7\xEC:\n"
- "\t035\f17\x92\xA8\xAC \x92\xA0\xAB\xAB\xA8\n"
- "\n"
- "\t025\f35\x91\xE6\xA5\xAD\xA0\xE0\xA8\xA9:\n"
- "\t035\f17\x8F\xAE\xAB \x90\xA0\xE2\xAD\xA5\xE0\n"
- "\t035\x84\xA5\xA1\xA1\xA8 \x8C\xF1\xE0\xE4\xA8\n"
- "\t035\x84\xA6\xAE\xAD \x82\xA0\xAD \x8A\xA0\xAD\xA5\xA3\xA5\xAC\v012\n"
- "\n"
- "\n"
- "\t180\f35\x95\xE3\xA4\xAE\xA6\xAD\xA8\xAA\xA8:\n"
- "\t190\f17\x8B\xE3\xA8 \x84\xA6\xAE\xAD\xE1\xAE\xAD\n"
- "\t190\x84\xA6\xAE\xAD\xA0\xE2\xA0\xAD \x8F. \x83\xA2\xA8\xAD\n"
- "\t190\x81\xAE\xAD\xA8\xE2\xA0 \x8B\xAE\xAD\xA3-\x95\xA5\xAC\xE1\xA0\xE2\n"
- "\t190\x84\xA6\xE3\xAB\xA8\xEF \x93\xAB\xA0\xAD\xAE\n"
- "\t190\x90\xA8\xAA\xA0\xE0\xA4\xAE \x81\xA0\xE0\xE0\xA5\xE0\xA0\n"
- "\n"
- "\t180\f35\x92\xA5\xE1\xE2\xA5\xE0\xEB:\n"
- "\t190\f17\x81\xA5\xAD\xA4\xA6\xA0\xAC\xA8\xAD \x81\xA5\xAD\xE2\n"
- "\t190\x8C\xA0\xE0\xA8\xAE \x9D\xE1\xAA\xA0\xAC\xA8\xAB\xAB\xA0\n"
- "\t190\x90\xA8\xE7\xA0\xE0\xA4 \x9D\xE1\xAF\xA8\n"
- "\t190\x91\xAA\xAE\xE2\xE2 \x8C\xA0\xAA\xA4\xED\xAD\xA8\xA5\xAB\n"
- "\t190\x8A\xAB\xA5\xA9\xE2\xAE\xAD \x90\xA5\xE2\xA7\xA5\xE0\n"
- "\t190\x8C\xA0\xA9\xAA\xAB \x91\xE3\xA0\xE0\xA5\xE1\x3"
- "c";
+ return "\v012\t000\x3" // "\v012\t000\x3"
+ "c\f35\x88\xA4\xA5\xEF \xA8 \xE0\xE3\xAA\xAE\xA2\xAE\xA4\xE1\xE2\xA2\xAE \xAF\xE0\xAE\xA5\xAA\xE2\xAE\xAC:\n" // "c\f35ÐÐ´ÐµÑ Ð¸ ÑÑководÑÑво пÑоекÑом:\n"
+ "\f17\x84\xA6\xAE\xAD \x82\xA0\xAD \x8A\xA0\xAD\xA5\xA3\xA5\xAC\x3" // "\f17Ðжон Ðан Ðанегем\x3"
+ "l\n" // "l\n"
+ "\n" // "\n"
+ "\t025\f35\x8F\xE0\xAE\xA3\xE0\xA0\xAC\xAC\xA8\xE1\xE2\xEB:\n" // "\t025\f35ÐÑогÑаммиÑÑÑ:\n"
+ "\t035\f17\x8C\xA0\xE0\xAA \x8A\xAE\xAB\xA4\xE3\xED\xAB\xAB\n" // "\t035\f17ÐаÑк ÐолдÑÑлл\n"
+ "\t035\x84\xA5\xA9\xA2 \x95\xED\xE2\xED\xE3\xED\xA9\n" // "\t035Ðейв Ð¥ÑÑÑÑÑй\n"
+ "\n" // "\n"
+ "\t025\f35\x80\xE3\xA4\xA8\xAE\xE1\xA8\xE1\xE2\xA5\xAC\xA0 \xA8 \xA7\xA2\xE3\xAA:\n" // "\t025\f35ÐÑдиоÑиÑÑема и звÑк:\n"
+ "\t035\f17\x92\xAE\xA4\xA4 \x95\xA5\xAD\xA4\xE0\xA8\xAA\xE1\n" // "\t035\f17Тодд ХендÑикÑ\n"
+ "\n" // "\n"
+ "\t025\f35\x8C\xE3\xA7\xEB\xAA\xA0 \xA8 \xE0\xA5\xE7\xEC:\n" // "\t025\f35ÐÑзÑка и ÑеÑÑ:\n"
+ "\t035\f17\x92\xA8\xAC \x92\xA0\xAB\xAB\xA8\n" // "\t035\f17Тим Талли\n"
+ "\n" // "\n"
+ "\t025\f35\x91\xE6\xA5\xAD\xA0\xE0\xA8\xA9:\n" // "\t025\f35СÑенаÑий:\n"
+ "\t035\f17\x8F\xAE\xAB \x90\xA0\xE2\xAD\xA5\xE0\n" // "\t035\f17Ðол РаÑнеÑ\n"
+ "\t035\x84\xA5\xA1\xA1\xA8 \x8C\xF1\xE0\xE4\xA8\n" // "\t035Ðебби ÐÑÑÑи\n"
+ "\t035\x84\xA6\xAE\xAD \x82\xA0\xAD \x8A\xA0\xAD\xA5\xA3\xA5\xAC\v012\n" // "\t035Ðжон Ðан Ðанегем\v012\n"
+ "\n" // "\n"
+ "\n" // "\n"
+ "\t180\f35\x95\xE3\xA4\xAE\xA6\xAD\xA8\xAA\xA8:\n" // "\t180\f35Ð¥Ñдожники:\n"
+ "\t190\f17\x8B\xE3\xA8 \x84\xA6\xAE\xAD\xE1\xAE\xAD\n" // "\t190\f17ÐÑи ÐжонÑон\n"
+ "\t190\x84\xA6\xAE\xAD\xA0\xE2\xA0\xAD \x8F. \x83\xA2\xA8\xAD\n" // "\t190ÐжонаÑан Ð. Ðвин\n"
+ "\t190\x81\xAE\xAD\xA8\xE2\xA0 \x8B\xAE\xAD\xA3-\x95\xA5\xAC\xE1\xA0\xE2\n" // "\t190ÐониÑа Ðонг-ХемÑаÑ\n"
+ "\t190\x84\xA6\xE3\xAB\xA8\xEF \x93\xAB\xA0\xAD\xAE\n" // "\t190ÐжÑÐ»Ð¸Ñ Ð£Ð»Ð°Ð½Ð¾\n"
+ "\t190\x90\xA8\xAA\xA0\xE0\xA4\xAE \x81\xA0\xE0\xE0\xA5\xE0\xA0\n" // "\t190РикаÑдо ÐаÑÑеÑа\n"
+ "\n" // "\n"
+ "\t180\f35\x92\xA5\xE1\xE2\xA5\xE0\xEB:\n" // "\t180\f35ТеÑÑеÑÑ:\n"
+ "\t190\f17\x81\xA5\xAD\xA4\xA6\xA0\xAC\xA8\xAD \x81\xA5\xAD\xE2\n" // "\t190\f17Ðенджамин ÐенÑ\n"
+ "\t190\x8C\xA0\xE0\xA8\xAE \x9D\xE1\xAA\xA0\xAC\xA8\xAB\xAB\xA0\n" // "\t190ÐаÑио ÐÑкамилла\n"
+ "\t190\x90\xA8\xE7\xA0\xE0\xA4 \x9D\xE1\xAF\xA8\n" // "\t190РиÑаÑд ÐÑпи\n"
+ "\t190\x91\xAA\xAE\xE2\xE2 \x8C\xA0\xAA\xA4\xED\xAD\xA8\xA5\xAB\n" // "\t190СкоÑÑ ÐакдÑниел\n"
+ "\t190\x8A\xAB\xA5\xA9\xE2\xAE\xAD \x90\xA5\xE2\xA7\xA5\xE0\n" // "\t190ÐлейÑон РеÑзеÑ\n"
+ "\t190\x8C\xA0\xA9\xAA\xAB \x91\xE3\xA0\xE0\xA5\xE1\x3" // "\t190Ðайкл СÑаÑеÑ\x3"
+ "c"; // "c"
}
const char *DARK_SIDE_CREDITS() {
@@ -178,34 +140,22 @@ public:
"\t110Jack Nalls\n";
}
- /*
- "\r\x1\x3"
- "c\fdÌå÷ è Ìàãèÿ\n"
- "%s Êñèíà\x2\n"
- "\v%.3dCopyright (c) %d NWC, Inc.\n"
- "All Rights Reserved\x1";
- */
const char *OPTIONS_MENU() {
- return "\r\x1\x3"
- "c\fd\x8C\xA5\xE7 \xA8 \x8C\xA0\xA3\xA8\xEF\n"
- "%s \x8A\xE1\xA8\xAD\xA0\x2\n"
- "\v%.3dCopyright (c) %d NWC, Inc.\n"
- "All Rights Reserved\x1";
- }
- /*
- "Îáëàêà", "Darkside", "World"
- */
+ return "\r\x1\x3" // "\r\x1\x3"
+ "c\fd\x8C\xA5\xE7 \xA8 \x8C\xA0\xA3\xA8\xEF\n" // "c\fdÐÐµÑ Ð¸ ÐагиÑ\n"
+ "%s \x8A\xE1\xA8\xAD\xA0\x2\n" // "%s ÐÑина\x2\n"
+ "\v%.3dCopyright (c) %d NWC, Inc.\n" // "\v%.3dCopyright (c) %d NWC, Inc.\n"
+ "All Rights Reserved\x1"; // "All Rights Reserved\x1"
+ }
+
const char **GAME_NAMES() {
delete[] _gameNames;
- _gameNames = new const char *[3] { "\x8E\xA1\xAB\xA0\xAA\xA0", "Darkside", "World" };
+ _gameNames = new const char *[3] { "\x8E\xA1\xAB\xA0\xAA\xA0", "Darkside", "World" }; // "Ðблака", "Darkside", "World"
return _gameNames;
}
- /*
- "\v012Îòðÿä íóæäàåòñÿ â îòäûõå!"
- */
const char *THE_PARTY_NEEDS_REST() {
- return "\v012\x8E\xE2\xE0\xEF\xA4 \xAD\xE3\xA6\xA4\xA0\xA5\xE2\xE1\xEF \xA2 \xAE\xE2\xA4\xEB\xE5\xA5!";
+ return "\v012\x8E\xE2\xE0\xEF\xA4 \xAD\xE3\xA6\xA4\xA0\xA5\xE2\xE1\xEF \xA2 \xAE\xE2\xA4\xEB\xE5\xA5!"; // "\v012ÐÑÑÑд нÑждаеÑÑÑ Ð² оÑдÑÑ
е!"
}
const char *WHO_WILL() {
@@ -213,12 +163,8 @@ public:
"c\v000\t000%s\n\n%s?\n\v055F1 - F%d";
}
- /*
- "\x3""cÑêîëüêî\n\n"
- */
const char *HOW_MUCH() {
- return "\x3"
- "c\x91\xAA\xAE\xAB\xEC\xAA\xAE\n\n";
+ return "\x3""c\x91\xAA\xAE\xAB\xEC\xAA\xAE\n\n"; // "\x3""cСколÑко\n\n"
}
const char *WHATS_THE_PASSWORD() {
@@ -238,107 +184,60 @@ public:
"\f32Incorrect!\fd";
}
- /*
- "\v007%s íå â ñîñòîÿíèè ÷òî-ëèáî ñäåëàòü!"
- */
const char *IN_NO_CONDITION() {
- return "\v007%s \xAD\xA5 \xA2 \xE1\xAE\xE1\xE2\xAE\xEF\xAD\xA8\xA8 \xE7\xE2\xAE-\xAB\xA8\xA1\xAE \xE1\xA4\xA5\xAB\xA0\xE2\xEC!";
+ return "\v007%s \xAD\xA5 \xA2 \xE1\xAE\xE1\xE2\xAE\xEF\xAD\xA8\xA8 \xE7\xE2\xAE-\xAB\xA8\xA1\xAE \xE1\xA4\xA5\xAB\xA0\xE2\xEC!"; // "\v007%s не в ÑоÑÑоÑнии ÑÑо-либо ÑделаÑÑ!"
}
- /*
- "\x3""c\v010Çäåñü íè÷åãî íåò."
- */
const char *NOTHING_HERE() {
- return "\x3"
- "c\v010\x87\xA4\xA5\xE1\xEC \xAD\xA8\xE7\xA5\xA3\xAE \xAD\xA5\xE2.";
- }
-
- /*
- "Êòî îáûùåò",
- "Êòî îòêðîåò",
- "Êòî âûïüåò",
- "Êòî áóäåò êîïàòü",
- "Êòî ïîòðîãàåò",
- "Êòî ïðî÷ò¸ò",
- "Êîãî íàó÷èòü",
- "Êòî âîçüì¸ò",
- "Êòî óäàðèò",
- "Êòî óêðàä¸ò",
- "Êòî äàñò âçÿòêó",
- "Êòî çàïëàòèò",
- "Êòî ïðèñÿäåò",
- "Êòî ïîïðîáóåò",
- "Êòî åãî ïîâåðí¸ò",
- "Êòî èñêóïí¸òñÿ",
- "Êòî åãî óíè÷òîæèò",
- "Êòî âûäåðíåò",
- "Êòî ñïóñòèòñÿ",
- "Êòî áðîñèò ìîíåòêó",
- "pray",
- "Êòî ñòàíåò ÷ëåíîì",
- "act",
- "Êòî õî÷åò ñûãðàòü",
- "Êòî íàæì¸ò",
- "rub",
- "pick",
- "eat",
- "sign",
- "close",
- "look",
- "try"
- */
+ return "\x3""c\v010\x87\xA4\xA5\xE1\xEC \xAD\xA8\xE7\xA5\xA3\xAE \xAD\xA5\xE2."; // "\x3""c\v010ÐдеÑÑ Ð½Ð¸Ñего неÑ."
+ }
+
const char **WHO_ACTIONS() {
delete[] _whoActions;
_whoActions = new const char *[32] {
- "\x8A\xE2\xAE \xAE\xA1\xEB\xE9\xA5\xE2",
- "\x8A\xE2\xAE \xAE\xE2\xAA\xE0\xAE\xA5\xE2",
- "\x8A\xE2\xAE \xA2\xEB\xAF\xEC\xA5\xE2",
- "\x8A\xE2\xAE \xA1\xE3\xA4\xA5\xE2 \xAA\xAE\xAF\xA0\xE2\xEC",
- "\x8A\xE2\xAE \xAF\xAE\xE2\xE0\xAE\xA3\xA0\xA5\xE2",
- "\x8A\xE2\xAE \xAF\xE0\xAE\xE7\xE2\xF1\xE2",
- "\x8A\xAE\xA3\xAE \xAD\xA0\xE3\xE7\xA8\xE2\xEC",
- "\x8A\xE2\xAE \xA2\xAE\xA7\xEC\xAC\xF1\xE2",
- "\x8A\xE2\xAE \xE3\xA4\xA0\xE0\xA8\xE2",
- "\x8A\xE2\xAE \xE3\xAA\xE0\xA0\xA4\xF1\xE2",
- "\x8A\xE2\xAE \xA4\xA0\xE1\xE2 \xA2\xA7\xEF\xE2\xAA\xE3",
- "\x8A\xE2\xAE \xA7\xA0\xAF\xAB\xA0\xE2\xA8\xE2",
- "\x8A\xE2\xAE \xAF\xE0\xA8\xE1\xEF\xA4\xA5\xE2",
- "\x8A\xE2\xAE \xAF\xAE\xAF\xE0\xAE\xA1\xE3\xA5\xE2",
- "\x8A\xE2\xAE \xA5\xA3\xAE \xAF\xAE\xA2\xA5\xE0\xAD\xF1\xE2",
- "\x8A\xE2\xAE \xA8\xE1\xAA\xE3\xAF\xAD\xF1\xE2\xE1\xEF",
- "\x8A\xE2\xAE \xA5\xA3\xAE \xE3\xAD\xA8\xE7\xE2\xAE\xA6\xA8\xE2",
- "\x8A\xE2\xAE \xA2\xEB\xA4\xA5\xE0\xAD\xA5\xE2",
- "\x8A\xE2\xAE \xE1\xAF\xE3\xE1\xE2\xA8\xE2\xE1\xEF",
- "\x8A\xE2\xAE \xA1\xE0\xAE\xE1\xA8\xE2 \xAC\xAE\xAD\xA5\xE2\xAA\xE3",
- "pray",
- "\x8A\xE2\xAE \xE1\xE2\xA0\xAD\xA5\xE2 \xE7\xAB\xA5\xAD\xAE\xAC",
- "act",
- "\x8A\xE2\xAE \xE5\xAE\xE7\xA5\xE2 \xE1\xEB\xA3\xE0\xA0\xE2\xEC",
- "\x8A\xE2\xAE \xAD\xA0\xA6\xAC\xF1\xE2",
- "rub",
- "pick",
- "eat",
- "sign",
- "close",
- "look",
- "try"
+ "\x8A\xE2\xAE \xAE\xA1\xEB\xE9\xA5\xE2", // "ÐÑо обÑÑеÑ",
+ "\x8A\xE2\xAE \xAE\xE2\xAA\xE0\xAE\xA5\xE2", // "ÐÑо оÑкÑоеÑ",
+ "\x8A\xE2\xAE \xA2\xEB\xAF\xEC\xA5\xE2", // "ÐÑо вÑпÑеÑ",
+ "\x8A\xE2\xAE \xA1\xE3\xA4\xA5\xE2 \xAA\xAE\xAF\xA0\xE2\xEC", // "ÐÑо бÑÐ´ÐµÑ ÐºÐ¾Ð¿Ð°ÑÑ",
+ "\x8A\xE2\xAE \xAF\xAE\xE2\xE0\xAE\xA3\xA0\xA5\xE2", // "ÐÑо поÑÑогаеÑ",
+ "\x8A\xE2\xAE \xAF\xE0\xAE\xE7\xE2\xF1\xE2", // "ÐÑо пÑоÑÑÑÑ",
+ "\x8A\xAE\xA3\xAE \xAD\xA0\xE3\xE7\xA8\xE2\xEC", // "Ðого наÑÑиÑÑ",
+ "\x8A\xE2\xAE \xA2\xAE\xA7\xEC\xAC\xF1\xE2", // "ÐÑо возÑмÑÑ",
+ "\x8A\xE2\xAE \xE3\xA4\xA0\xE0\xA8\xE2", // "ÐÑо ÑдаÑиÑ",
+ "\x8A\xE2\xAE \xE3\xAA\xE0\xA0\xA4\xF1\xE2", // "ÐÑо ÑкÑадÑÑ",
+ "\x8A\xE2\xAE \xA4\xA0\xE1\xE2 \xA2\xA7\xEF\xE2\xAA\xE3", // "ÐÑо даÑÑ Ð²Ð·ÑÑкÑ",
+ "\x8A\xE2\xAE \xA7\xA0\xAF\xAB\xA0\xE2\xA8\xE2", // "ÐÑо заплаÑиÑ",
+ "\x8A\xE2\xAE \xAF\xE0\xA8\xE1\xEF\xA4\xA5\xE2", // "ÐÑо пÑиÑÑдеÑ",
+ "\x8A\xE2\xAE \xAF\xAE\xAF\xE0\xAE\xA1\xE3\xA5\xE2", // "ÐÑо попÑобÑеÑ",
+ "\x8A\xE2\xAE \xA5\xA3\xAE \xAF\xAE\xA2\xA5\xE0\xAD\xF1\xE2", // "ÐÑо его повеÑнÑÑ",
+ "\x8A\xE2\xAE \xA8\xE1\xAA\xE3\xAF\xAD\xF1\xE2\xE1\xEF", // "ÐÑо иÑкÑпнÑÑÑÑ",
+ "\x8A\xE2\xAE \xA5\xA3\xAE \xE3\xAD\xA8\xE7\xE2\xAE\xA6\xA8\xE2", // "ÐÑо его ÑниÑÑожиÑ",
+ "\x8A\xE2\xAE \xA2\xEB\xA4\xA5\xE0\xAD\xA5\xE2", // "ÐÑо вÑдеÑнеÑ",
+ "\x8A\xE2\xAE \xE1\xAF\xE3\xE1\xE2\xA8\xE2\xE1\xEF", // "ÐÑо ÑпÑÑÑиÑÑÑ",
+ "\x8A\xE2\xAE \xA1\xE0\xAE\xE1\xA8\xE2 \xAC\xAE\xAD\xA5\xE2\xAA\xE3", // "ÐÑо бÑоÑÐ¸Ñ Ð¼Ð¾Ð½ÐµÑкÑ",
+ "pray", // "pray",
+ "\x8A\xE2\xAE \xE1\xE2\xA0\xAD\xA5\xE2 \xE7\xAB\xA5\xAD\xAE\xAC", // "ÐÑо ÑÑÐ°Ð½ÐµÑ Ñленом",
+ "act", // "act",
+ "\x8A\xE2\xAE \xE5\xAE\xE7\xA5\xE2 \xE1\xEB\xA3\xE0\xA0\xE2\xEC", // "ÐÑо Ñ
оÑÐµÑ ÑÑгÑаÑÑ",
+ "\x8A\xE2\xAE \xAD\xA0\xA6\xAC\xF1\xE2", // "ÐÑо нажмÑÑ",
+ "rub", // "rub",
+ "pick", // "pick",
+ "eat", // "eat",
+ "sign", // "sign",
+ "close", // "close",
+ "look", // "look",
+ "try" // "try"
};
return _whoActions;
}
- /*
- "Îòêðûòü ðåø¸òêó",
- "Îòêðûòü äâåðü",
- "Ðàñêðûòü ñâèòîê",
- "Âûáåðèòå ïåðñîíàæà"
- */
const char **WHO_WILL_ACTIONS() {
delete[] _whoWillActions;
_whoWillActions = new const char *[4] {
- "\x8E\xE2\xAA\xE0\xEB\xE2\xEC \xE0\xA5\xE8\xF1\xE2\xAA\xE3",
- "\x8E\xE2\xAA\xE0\xEB\xE2\xEC \xA4\xA2\xA5\xE0\xEC",
- "\x90\xA0\xE1\xAA\xE0\xEB\xE2\xEC \xE1\xA2\xA8\xE2\xAE\xAA",
- "\x82\xEB\xA1\xA5\xE0\xA8\xE2\xA5 \xAF\xA5\xE0\xE1\xAE\xAD\xA0\xA6\xA0"
+ "\x8E\xE2\xAA\xE0\xEB\xE2\xEC \xE0\xA5\xE8\xF1\xE2\xAA\xE3", // "ÐÑкÑÑÑÑ ÑеÑÑÑкÑ",
+ "\x8E\xE2\xAA\xE0\xEB\xE2\xEC \xA4\xA2\xA5\xE0\xEC", // "ÐÑкÑÑÑÑ Ð´Ð²ÐµÑÑ",
+ "\x90\xA0\xE1\xAA\xE0\xEB\xE2\xEC \xE1\xA2\xA8\xE2\xAE\xAA", // "РаÑкÑÑÑÑ ÑвиÑок",
+ "\x82\xEB\xA1\xA5\xE0\xA8\xE2\xA5 \xAF\xA5\xE0\xE1\xAE\xAD\xA0\xA6\xA0" // "ÐÑбеÑиÑе пеÑÑонажа"
};
return _whoWillActions;
}
@@ -349,229 +248,137 @@ public:
return _directionTextUpper;
}
- /*
- "Ñåâåð",
- "Âîñòîê",
- "Þã",
- "Çàïàä"
- */
const char **DIRECTION_TEXT() {
delete[] _directionText;
_directionText = new const char *[4] {
- "\x91\xA5\xA2\xA5\xE0",
- "\x82\xAE\xE1\xE2\xAE\xAA",
- "\x9E\xA3",
- "\x87\xA0\xAF\xA0\xA4"
+ "\x91\xA5\xA2\xA5\xE0", // "СевеÑ",
+ "\x82\xAE\xE1\xE2\xAE\xAA", // "ÐоÑÑок",
+ "\x9E\xA3", // "Юг",
+ "\x87\xA0\xAF\xA0\xA4" // "Ðапад"
};
return _directionText;
}
- /*
- "×åëîâåê",
- "Ýëüô",
- "Äâîðô",
- "Ãíîì",
- "Ïîëóîðê"
- */
const char **RACE_NAMES() {
delete[] _raceNames;
_raceNames = new const char *[5] {
- "\x97\xA5\xAB\xAE\xA2\xA5\xAA",
- "\x9D\xAB\xEC\xE4",
- "\x84\xA2\xAE\xE0\xE4",
- "\x83\xAD\xAE\xAC",
- "\x8F\xAE\xAB\xE3\xAE\xE0\xAA"
+ "\x97\xA5\xAB\xAE\xA2\xA5\xAA", // "Человек",
+ "\x9D\xAB\xEC\xE4", // "ÐлÑÑ",
+ "\x84\xA2\xAE\xE0\xE4", // "ÐвоÑÑ",
+ "\x83\xAD\xAE\xAC", // "Ðном",
+ "\x8F\xAE\xAB\xE3\xAE\xE0\xAA" // "ÐолÑоÑк"
};
return _raceNames;
}
- /*
- "Õîðîøèé",
- "Íåéòðàë",
- "Çëîé(-àÿ)"
- */
const char **ALIGNMENT_NAMES() {
delete[] _alignmentNames;
_alignmentNames = new const char *[3] {
- "\x95\xAE\xE0\xAE\xE8\xA8\xA9",
- "\x8D\xA5\xA9\xE2\xE0\xA0\xAB",
- "\x87\xAB\xAE\xA9(-\xA0\xEF)"
+ "\x95\xAE\xE0\xAE\xE8\xA8\xA9", // "ХоÑоÑий",
+ "\x8D\xA5\xA9\xE2\xE0\xA0\xAB", // "ÐейÑÑал",
+ "\x87\xAB\xAE\xA9(-\xA0\xEF)" // "Ðлой(-аÑ)"
};
return _alignmentNames;
}
- /*
- "Ìóæ÷èíà",
- "Æåíùèíà"
- */
const char **SEX_NAMES() {
delete[] _sexNames;
_sexNames = new const char *[2] {
- "\x8C\xE3\xA6\xE7\xA8\xAD\xA0",
- "\x86\xA5\xAD\xE9\xA8\xAD\xA0"
+ "\x8C\xE3\xA6\xE7\xA8\xAD\xA0", // "ÐÑжÑина",
+ "\x86\xA5\xAD\xE9\xA8\xAD\xA0" // "ÐенÑина"
};
return _sexNames;
}
- /*
- "Âîðîâñòâî\t100",
- "Îðóæåéíèê",
- "Àñòðîëîã",
- "Àòëåò",
- "Êàðòîãðàô",
- "Êðåñòîíîñåö",
- "×óâñòâî íàïðàâëåíèÿ",
- "ßçûêîâåä",
- "Êóïåö",
- "Ñêàëîëàç",
- "Øòóðìàí",
- "Ñëåäîïûò",
- "Ìàãèñòð ìîëèòâû",
- "Ëîâêîñòü ïàëüöåâ",
- "Ïëîâåö",
- "Îõîòíèê",
- "Âîñïðèÿòèå",
- "×óâñòâî îïàñíîñòè"
- */
const char **SKILL_NAMES() {
delete[] _skillNames;
_skillNames = new const char *[18] {
- "\x82\xAE\xE0\xAE\xA2\xE1\xE2\xA2\xAE\t100",
- "\x8E\xE0\xE3\xA6\xA5\xA9\xAD\xA8\xAA",
- "\x80\xE1\xE2\xE0\xAE\xAB\xAE\xA3",
- "\x80\xE2\xAB\xA5\xE2",
- "\x8A\xA0\xE0\xE2\xAE\xA3\xE0\xA0\xE4",
- "\x8A\xE0\xA5\xE1\xE2\xAE\xAD\xAE\xE1\xA5\xE6",
- "\x97\xE3\xA2\xE1\xE2\xA2\xAE \xAD\xA0\xAF\xE0\xA0\xA2\xAB\xA5\xAD\xA8\xEF",
- "\x9F\xA7\xEB\xAA\xAE\xA2\xA5\xA4",
- "\x8A\xE3\xAF\xA5\xE6",
- "\x91\xAA\xA0\xAB\xAE\xAB\xA0\xA7",
- "\x98\xE2\xE3\xE0\xAC\xA0\xAD",
- "\x91\xAB\xA5\xA4\xAE\xAF\xEB\xE2",
- "\x8C\xA0\xA3\xA8\xE1\xE2\xE0 \xAC\xAE\xAB\xA8\xE2\xA2\xEB",
- "\x8B\xAE\xA2\xAA\xAE\xE1\xE2\xEC \xAF\xA0\xAB\xEC\xE6\xA5\xA2",
- "\x8F\xAB\xAE\xA2\xA5\xE6",
- "\x8E\xE5\xAE\xE2\xAD\xA8\xAA",
- "\x82\xAE\xE1\xAF\xE0\xA8\xEF\xE2\xA8\xA5",
- "\x97\xE3\xA2\xE1\xE2\xA2\xAE \xAE\xAF\xA0\xE1\xAD\xAE\xE1\xE2\xA8"
+ "\x82\xAE\xE0\xAE\xA2\xE1\xE2\xA2\xAE\t100", // "ÐоÑовÑÑво\t100",
+ "\x8E\xE0\xE3\xA6\xA5\xA9\xAD\xA8\xAA", // "ÐÑÑжейник",
+ "\x80\xE1\xE2\xE0\xAE\xAB\xAE\xA3", // "ÐÑÑÑолог",
+ "\x80\xE2\xAB\xA5\xE2", // "ÐÑлеÑ",
+ "\x8A\xA0\xE0\xE2\xAE\xA3\xE0\xA0\xE4", // "ÐаÑÑогÑаÑ",
+ "\x8A\xE0\xA5\xE1\xE2\xAE\xAD\xAE\xE1\xA5\xE6", // "ÐÑеÑÑоноÑеÑ",
+ "\x97\xE3\xA2\xE1\xE2\xA2\xAE \xAD\xA0\xAF\xE0\xA0\xA2\xAB\xA5\xAD\xA8\xEF", // "ЧÑвÑÑво напÑавлениÑ",
+ "\x9F\xA7\xEB\xAA\xAE\xA2\xA5\xA4", // "ЯзÑковед",
+ "\x8A\xE3\xAF\xA5\xE6", // "ÐÑпеÑ",
+ "\x91\xAA\xA0\xAB\xAE\xAB\xA0\xA7", // "Скалолаз",
+ "\x98\xE2\xE3\xE0\xAC\xA0\xAD", // "ШÑÑÑман",
+ "\x91\xAB\xA5\xA4\xAE\xAF\xEB\xE2", // "СледопÑÑ",
+ "\x8C\xA0\xA3\xA8\xE1\xE2\xE0 \xAC\xAE\xAB\xA8\xE2\xA2\xEB", // "ÐагиÑÑÑ Ð¼Ð¾Ð»Ð¸ÑвÑ",
+ "\x8B\xAE\xA2\xAA\xAE\xE1\xE2\xEC \xAF\xA0\xAB\xEC\xE6\xA5\xA2", // "ÐовкоÑÑÑ Ð¿Ð°Ð»ÑÑев",
+ "\x8F\xAB\xAE\xA2\xA5\xE6", // "ÐловеÑ",
+ "\x8E\xE5\xAE\xE2\xAD\xA8\xAA", // "ÐÑ
оÑник",
+ "\x82\xAE\xE1\xAF\xE0\xA8\xEF\xE2\xA8\xA5", // "ÐоÑпÑиÑÑие",
+ "\x97\xE3\xA2\xE1\xE2\xA2\xAE \xAE\xAF\xA0\xE1\xAD\xAE\xE1\xE2\xA8" // "ЧÑвÑÑво опаÑноÑÑи"
};
return _skillNames;
}
- /*
- "Ðûöàðü",
- "Ïàëàäèí",
- "Ëó÷íèê",
- "Êëèðèê",
- "Ìàã",
- "Âîð",
- "Íèíäçÿ",
- "Âàðâàð",
- "Äðóèä",
- "Ñëåäîïûò",
- nullptr
- */
const char **CLASS_NAMES() {
delete[] _classNames;
_classNames = new const char *[11] {
- "\x90\xEB\xE6\xA0\xE0\xEC",
- "\x8F\xA0\xAB\xA0\xA4\xA8\xAD",
- "\x8B\xE3\xE7\xAD\xA8\xAA",
- "\x8A\xAB\xA8\xE0\xA8\xAA",
- "\x8C\xA0\xA3",
- "\x82\xAE\xE0",
- "\x8D\xA8\xAD\xA4\xA7\xEF",
- "\x82\xA0\xE0\xA2\xA0\xE0",
- "\x84\xE0\xE3\xA8\xA4",
- "\x91\xAB\xA5\xA4\xAE\xAF\xEB\xE2",
- nullptr
+ "\x90\xEB\xE6\xA0\xE0\xEC", // "Ð ÑÑаÑÑ",
+ "\x8F\xA0\xAB\xA0\xA4\xA8\xAD", // "Ðаладин",
+ "\x8B\xE3\xE7\xAD\xA8\xAA", // "ÐÑÑник",
+ "\x8A\xAB\xA8\xE0\xA8\xAA", // "ÐлиÑик",
+ "\x8C\xA0\xA3", // "Ðаг",
+ "\x82\xAE\xE0", // "ÐоÑ",
+ "\x8D\xA8\xAD\xA4\xA7\xEF", // "ÐиндзÑ",
+ "\x82\xA0\xE0\xA2\xA0\xE0", // "ÐаÑваÑ",
+ "\x84\xE0\xE3\xA8\xA4", // "ÐÑÑид",
+ "\x91\xAB\xA5\xA4\xAE\xAF\xEB\xE2", // "СледопÑÑ",
+ nullptr // nullptr
};
return _classNames;
}
- /*
- "Ïðîêëÿòèå",
- "Heart Broken",
- "Ñëàáîñòü",
- "Îòðàâëåíèå",
- "Áîëåçíü",
- "Áåçóìèå",
- "Âëþáë¸í(-à)",
- "Íàâåñåëå",
- "Ñîí",
- "Â óíûíèè",
- "Â ñìÿòåíèè",
- "Ïàðàëè÷",
- "Á.ñîçíàíèÿ",
- "Ìåðòâ",
- "Êàìåíü",
- "Óíè÷òîæåí",
- "Õîðîøåå"
- */
const char **CONDITION_NAMES() {
delete[] _conditionNames;
_conditionNames = new const char *[17] {
- "\x8F\xE0\xAE\xAA\xAB\xEF\xE2\xA8\xA5",
- "Heart Broken",
- "\x91\xAB\xA0\xA1\xAE\xE1\xE2\xEC",
- "\x8E\xE2\xE0\xA0\xA2\xAB\xA5\xAD\xA8\xA5",
- "\x81\xAE\xAB\xA5\xA7\xAD\xEC",
- "\x81\xA5\xA7\xE3\xAC\xA8\xA5",
- "\x82\xAB\xEE\xA1\xAB\xF1\xAD(-\xA0)",
- "\x8D\xA0\xA2\xA5\xE1\xA5\xAB\xA5",
- "\x91\xAE\xAD",
- "\x82 \xE3\xAD\xEB\xAD\xA8\xA8",
- "\x82 \xE1\xAC\xEF\xE2\xA5\xAD\xA8\xA8",
- "\x8F\xA0\xE0\xA0\xAB\xA8\xE7",
- "\x81.\xE1\xAE\xA7\xAD\xA0\xAD\xA8\xEF",
- "\x8C\xA5\xE0\xE2\xA2",
- "\x8A\xA0\xAC\xA5\xAD\xEC",
- "\x93\xAD\xA8\xE7\xE2\xAE\xA6\xA5\xAD",
- "\x95\xAE\xE0\xAE\xE8\xA5\xA5"
+ "\x8F\xE0\xAE\xAA\xAB\xEF\xE2\xA8\xA5", // "ÐÑоклÑÑие",
+ "Heart Broken", // "Heart Broken",
+ "\x91\xAB\xA0\xA1\xAE\xE1\xE2\xEC", // "СлабоÑÑÑ",
+ "\x8E\xE2\xE0\xA0\xA2\xAB\xA5\xAD\xA8\xA5", // "ÐÑÑавление",
+ "\x81\xAE\xAB\xA5\xA7\xAD\xEC", // "ÐолезнÑ",
+ "\x81\xA5\xA7\xE3\xAC\xA8\xA5", // "ÐезÑмие",
+ "\x82\xAB\xEE\xA1\xAB\xF1\xAD(-\xA0)", // "ÐлÑблÑн(-а)",
+ "\x8D\xA0\xA2\xA5\xE1\xA5\xAB\xA5", // "ÐавеÑеле",
+ "\x91\xAE\xAD", // "Сон",
+ "\x82 \xE3\xAD\xEB\xAD\xA8\xA8", // "Ð ÑнÑнии",
+ "\x82 \xE1\xAC\xEF\xE2\xA5\xAD\xA8\xA8", // "Ð ÑмÑÑении",
+ "\x8F\xA0\xE0\xA0\xAB\xA8\xE7", // "ÐаÑалиÑ",
+ "\x81.\xE1\xAE\xA7\xAD\xA0\xAD\xA8\xEF", // "Ð.ÑознаниÑ",
+ "\x8C\xA5\xE0\xE2\xA2", // "ÐеÑÑв",
+ "\x8A\xA0\xAC\xA5\xAD\xEC", // "ÐаменÑ",
+ "\x93\xAD\xA8\xE7\xE2\xAE\xA6\xA5\xAD", // "УниÑÑожен",
+ "\x95\xAE\xE0\xAE\xE8\xA5\xA5" // "ХоÑоÑее"
};
return _conditionNames;
}
- /*
- "Õîðîøåå"
- */
const char *GOOD() {
- return "\x95\xAE\xE0\xAE\xE8\xA5\xA5";
+ return "\x95\xAE\xE0\xAE\xE8\xA5\xA5"; // "ХоÑоÑее"
}
- /*
- "\n\t014Áëàãîñëîâåíèå\t095%+d"
- */
const char *BLESSED() {
- return "\n\t014\x81\xAB\xA0\xA3\xAE\xE1\xAB\xAE\xA2\xA5\xAD\xA8\xA5\t095%+d";
+ return "\n\t014\x81\xAB\xA0\xA3\xAE\xE1\xAB\xAE\xA2\xA5\xAD\xA8\xA5\t095%+d"; // "\n\t014ÐлагоÑловение\t095%+d"
}
- /*
- "\n\t014Ñèëîâîé ùèò\t095%+d";
- */
const char *POWER_SHIELD() {
- return "\n\t014\x91\xA8\xAB\xAE\xA2\xAE\xA9 \xE9\xA8\xE2\t095%+d";
+ return "\n\t014\x91\xA8\xAB\xAE\xA2\xAE\xA9 \xE9\xA8\xE2\t095%+d"; // "\n\t014Силовой ÑиÑ\t095%+d";
}
- /*
- "\n\t014Ñâÿòîé äàð\t095%+d"
- */
const char *HOLY_BONUS() {
- return "\n\t014\x91\xA2\xEF\xE2\xAE\xA9 \xA4\xA0\xE0\t095%+d";
+ return "\n\t014\x91\xA2\xEF\xE2\xAE\xA9 \xA4\xA0\xE0\t095%+d"; // "\n\t014СвÑÑой даÑ\t095%+d"
}
- /*
- "\n\t014Ìóæåñòâî\t095%+d"
- */
const char *HEROISM() {
- return "\n\t014\x8C\xE3\xA6\xA5\xE1\xE2\xA2\xAE\t095%+d";
+ return "\n\t014\x8C\xE3\xA6\xA5\xE1\xE2\xA2\xAE\t095%+d"; // "\n\t014ÐÑжеÑÑво\t095%+d"
}
- /*
- "\f15Â îòðÿäå\fd"
- */
const char *IN_PARTY() {
- return "\f15\x82 \xAE\xE2\xE0\xEF\xA4\xA5\fd";
+ return "\f15\x82 \xAE\xE2\xE0\xEF\xA4\xA5\fd"; // "\f15РоÑÑÑде\fd"
}
const char *PARTY_DETAILS() {
@@ -643,443 +450,211 @@ public:
"136%s";
}
- /*
- "%s\x2\x3""c\v106\t013Ââåðõ\t048Âíèç\t083\f37Ó\fdäàë\t118\f37Â\fdûãí"
- "\t153\f37Ñ\fdîçä\t188Â\f37û\fdõîä\x1";
- */
const char *PARTY_DIALOG_TEXT() {
- return "%s\x2\x3"
- "c\v106\t013\x82\xA2\xA5\xE0\xE5\t048\x82\xAD\xA8\xA7\t083\f37\x93\fd\xA4\xA0\xAB\t118\f37\x82\fd\xEB\xA3\xAD"
- "\t153\f37\x91\fd\xAE\xA7\xA4\t188\x82\f37\xEB\fd\xE5\xAE\xA4\x1";
+ return "%s\x2\x3""c\v106\t013\x82\xA2\xA5\xE0\xE5\t048\x82\xAD\xA8\xA7\t083\f37\x93\fd\xA4\xA0\xAB\t118\f37\x82\fd\xEB\xA3\xAD" // "%s\x2\x3""c\v106\t013ÐвеÑÑ
\t048Ðниз\t083\f37У\fdдал\t118\f37Ð\fdÑгн"
+ "\t153\f37\x91\fd\xAE\xA7\xA4\t188\x82\f37\xEB\fd\xE5\xAE\xA4\x1"; // "\t153\f37С\fdозд\t188Ð\f37Ñ\fdÑ
од\x1";
}
- /*
- "Âàì íå ñ êåì ïóòåøåñòâîâàòü"
- */
const char *NO_ONE_TO_ADVENTURE_WITH() {
- return "\x82\xA0\xAC \xAD\xA5 \xE1 \xAA\xA5\xAC \xAF\xE3\xE2\xA5\xE8\xA5\xE1\xE2\xA2\xAE\xA2\xA0\xE2\xEC";
+ return "\x82\xA0\xAC \xAD\xA5 \xE1 \xAA\xA5\xAC \xAF\xE3\xE2\xA5\xE8\xA5\xE1\xE2\xA2\xAE\xA2\xA0\xE2\xEC"; // "Ðам не Ñ ÐºÐµÐ¼ пÑÑеÑеÑÑвоваÑÑ"
}
- /*
- "Âàø ñïèñîê ïîëîí!"
- */
const char *YOUR_ROSTER_IS_FULL() {
- return "\x82\xA0\xE8 \xE1\xAF\xA8\xE1\xAE\xAA \xAF\xAE\xAB\xAE\xAD!";
+ return "\x82\xA0\xE8 \xE1\xAF\xA8\xE1\xAE\xAA \xAF\xAE\xAB\xAE\xAD!"; // "ÐÐ°Ñ ÑпиÑок полон!"
}
- /*
- "\fd\x3""c\t000\v002Ïîäîæäèòå..."
- */
const char *PLEASE_WAIT() {
- return "\fd\x3"
- "c\t000\v002\x8F\xAE\xA4\xAE\xA6\xA4\xA8\xE2\xA5...";
+ return "\fd\x3""c\t000\v002\x8F\xAE\xA4\xAE\xA6\xA4\xA8\xE2\xA5..."; // "\fd\x3""c\t000\v002ÐодождиÑе..."
}
- /*
- "\x3""c\t000\v002Óïñ..."
- */
const char *OOPS() {
- return "\x3"
- "c\t000\v002\x93\xAF\xE1...";
- }
-
- /*
- "\r\x2\x3""c\v122\t013"
- "\f37Â\fdêë\t040\f37Ñ\fdí\t067ESC"
- "\x1\t000\v000Áàíê Êñèíà\v015\n"
- "Áàíê\x3""l\n"
- "Çîë\x3""r\t000%s\x3""l\n"
- "Àëìç\x3""r\t000%s\x3""c\n"
- "\n"
- "Îòðÿä\x3""l\n"
- "Çîë\x3""r\t000%s\x3""l\n"
- "Àëìç\x3""r\t000%s";
- */
+ return "\x3""c\t000\v002\x93\xAF\xE1..."; // "\x3""c\t000\v002УпÑ..."
+ }
+
const char *BANK_TEXT() {
- return "\r\x2\x3"
- "c\v122\t013"
- "\f37\x82\fd\xAA\xAB\t040\f37\x91\fd\xAD\t067ESC"
- "\x1\t000\v000\x81\xA0\xAD\xAA \x8A\xE1\xA8\xAD\xA0\v015\n"
- "\x81\xA0\xAD\xAA\x3"
- "l\n"
- "\x87\xAE\xAB\x3"
- "r\t000%s\x3"
- "l\n"
- "\x80\xAB\xAC\xA7\x3"
- "r\t000%s\x3"
- "c\n"
- "\n"
- "\x8E\xE2\xE0\xEF\xA4\x3"
- "l\n"
- "\x87\xAE\xAB\x3"
- "r\t000%s\x3"
- "l\n"
- "\x80\xAB\xAC\xA7\x3"
- "r\t000%s";
+ return "\r\x2\x3""c\v122\t013" // "\r\x2\x3""c\v122\t013"
+ "\f37\x82\fd\xAA\xAB\t040\f37\x91\fd\xAD\t067ESC" // "\f37Ð\fdкл\t040\f37С\fdн\t067ESC"
+ "\x1\t000\v000\x81\xA0\xAD\xAA \x8A\xE1\xA8\xAD\xA0\v015\n" // "\x1\t000\v000Ðанк ÐÑина\v015\n"
+ "\x81\xA0\xAD\xAA\x3""l\n" // "Ðанк\x3""l\n"
+ "\x87\xAE\xAB\x3""r\t000%s\x3""l\n" // "Ðол\x3""r\t000%s\x3""l\n"
+ "\x80\xAB\xAC\xA7\x3""r\t000%s\x3""c\n" // "Ðлмз\x3""r\t000%s\x3""c\n"
+ "\n" // "\n"
+ "\x8E\xE2\xE0\xEF\xA4\x3""l\n" // "ÐÑÑÑд\x3""l\n"
+ "\x87\xAE\xAB\x3""r\t000%s\x3""l\n" // "Ðол\x3""r\t000%s\x3""l\n"
+ "\x80\xAB\xAC\xA7\x3""r\t000%s"; // "Ðлмз\x3""r\t000%s";
}
- /*
- "\x1\r\x3""c\v000\t000"
- "Ëàâêà\t039\v027%s\x3""l\v046\n"
- "\t011\f37Ñ\fdìîòðåòü\n"
- "\t000\v090Çîë\x3""r\t000%s"
- "\x2\x3""c\v122\t040ESC\x1";
- */
const char *BLACKSMITH_TEXT() {
- return "\x1\r\x3"
- "c\v000\t000"
- "\x8B\xA0\xA2\xAA\xA0\t039\v027%s\x3"
- "l\v046\n"
- "\t011\f37\x91\fd\xAC\xAE\xE2\xE0\xA5\xE2\xEC\n"
- "\t000\v090\x87\xAE\xAB\x3"
- "r\t000%s"
- "\x2\x3"
- "c\v122\t040ESC\x1";
- }
-
- /*
- "\nÂû äîëæíû áûòü ÷ëåíîì ãèëüäèè, ÷òîáû ïîêóïàòü çàêëèíàíèÿ."
- */
+ return "\x1\r\x3""c\v000\t000" // "\x1\r\x3""c\v000\t000"
+ "\x8B\xA0\xA2\xAA\xA0\t039\v027%s\x3""l\v046\n" // "Ðавка\t039\v027%s\x3""l\v046\n"
+ "\t011\f37\x91\fd\xAC\xAE\xE2\xE0\xA5\xE2\xEC\n" // "\t011\f37С\fdмоÑÑеÑÑ\n"
+ "\t000\v090\x87\xAE\xAB\x3""r\t000%s" // "\t000\v090Ðол\x3""r\t000%s"
+ "\x2\x3""c\v122\t040ESC\x1"; // "\x2\x3""c\v122\t040ESC\x1";
+ }
+
const char *GUILD_NOT_MEMBER_TEXT() {
- return "\n\x82\xEB \xA4\xAE\xAB\xA6\xAD\xEB \xA1\xEB\xE2\xEC \xE7\xAB\xA5\xAD\xAE\xAC \xA3\xA8\xAB\xEC\xA4\xA8\xA8, \xE7\xE2\xAE\xA1\xEB \xAF\xAE\xAA\xE3\xAF\xA0\xE2\xEC \xA7\xA0\xAA\xAB\xA8\xAD\xA0\xAD\xA8\xEF.";
+ return "\n\x82\xEB \xA4\xAE\xAB\xA6\xAD\xEB \xA1\xEB\xE2\xEC \xE7\xAB\xA5\xAD\xAE\xAC \xA3\xA8\xAB\xEC\xA4\xA8\xA8, \xE7\xE2\xAE\xA1\xEB \xAF\xAE\xAA\xE3\xAF\xA0\xE2\xEC \xA7\xA0\xAA\xAB\xA8\xAD\xA0\xAD\xA8\xEF."; // "\nÐÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ñленом гилÑдии, ÑÑÐ¾Ð±Ñ Ð¿Ð¾ÐºÑпаÑÑ Ð·Ð°ÐºÐ»Ð¸Ð½Ð°Ð½Ð¸Ñ."
}
- /*
- "\x3""c\v027\t039%s"
- "\x3""l\v046\n"
- "\t012\f37Ê\fdóïèòü\n"
- "\t012\f37Î\fdïèñàíèÿ";
- */
const char *GUILD_TEXT() {
- return "\x3"
- "c\v027\t039%s"
- "\x3"
- "l\v046\n"
- "\t012\f37\x8A\fd\xE3\xAF\xA8\xE2\xEC\n"
- "\t012\f37\x8E\fd\xAF\xA8\xE1\xA0\xAD\xA8\xEF";
+ return "\x3""c\v027\t039%s" // "\x3""c\v027\t039%s"
+ "\x3""l\v046\n" // "\x3""l\v046\n"
+ "\t012\f37\x8A\fd\xE3\xAF\xA8\xE2\xEC\n" // "\t012\f37Ð\fdÑпиÑÑ\n"
+ "\t012\f37\x8E\fd\xAF\xA8\xE1\xA0\xAD\xA8\xEF"; // "\t012\f37Ð\fdпиÑаниÑ";
}
- /*
- "\r\x3""c\v000\t000Òàâåðíà\t039"
- "\v027%s%s\x3""l\t000"
- "\v090Çîë\x3""r\t000%s\x2\x3""c\v122"
- "\t021\f37Î\fdòäûõ\t060ESC\x1";
- */
const char *TAVERN_TEXT() {
- return "\r\x3"
- "c\v000\t000\x92\xA0\xA2\xA5\xE0\xAD\xA0\t039"
- "\v027%s%s\x3"
- "l\t000"
- "\v090\x87\xAE\xAB\x3"
- "r\t000%s\x2\x3"
- "c\v122"
- "\t021\f37\x8E\fd\xE2\xA4\xEB\xE5\t060ESC\x1";
- }
-
- /*
- "\x3""l\t017\v046\f37Â\fdûïèòü\n"
- "\t017\f37Å\fdäà\n"
- "\t017\f37×\fdàåâûå\n"
- "\t017\f37Ñ\fdëóõè";
- */
+ return "\r\x3""c\v000\t000\x92\xA0\xA2\xA5\xE0\xAD\xA0\t039" // "\r\x3""c\v000\t000ТавеÑна\t039"
+ "\v027%s%s\x3""l\t000" // "\v027%s%s\x3""l\t000"
+ "\v090\x87\xAE\xAB\x3""r\t000%s\x2\x3""c\v122" // "\v090Ðол\x3""r\t000%s\x2\x3""c\v122"
+ "\t021\f37\x8E\fd\xE2\xA4\xEB\xE5\t060ESC\x1"; // "\t021\f37Ð\fdÑдÑÑ
\t060ESC\x1";
+ }
+
const char *FOOD_AND_DRINK() {
- return "\x3"
- "l\t017\v046\f37\x82\fd\xEB\xAF\xA8\xE2\xEC\n"
- "\t017\f37\x85\fd\xA4\xA0\n"
- "\t017\f37\x97\fd\xA0\xA5\xA2\xEB\xA5\n"
- "\t017\f37\x91\fd\xAB\xE3\xE5\xA8";
- }
-
- /*
- "\n"
- "\n"
- "Íåäóðíî\n"
- "\n"
- "Íàæìèòå êëàâèøó!";
- */
+ return "\x3""l\t017\v046\f37\x82\fd\xEB\xAF\xA8\xE2\xEC\n" // "\x3""l\t017\v046\f37Ð\fdÑпиÑÑ\n"
+ "\t017\f37\x85\fd\xA4\xA0\n" // "\t017\f37Ð\fdда\n"
+ "\t017\f37\x97\fd\xA0\xA5\xA2\xEB\xA5\n" // "\t017\f37Ч\fdаевÑе\n"
+ "\t017\f37\x91\fd\xAB\xE3\xE5\xA8"; // "\t017\f37С\fdлÑÑ
и";
+ }
+
const char *GOOD_STUFF() {
- return "\n"
- "\n"
- "\x8D\xA5\xA4\xE3\xE0\xAD\xAE\n"
- "\n"
- "\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3!";
+ return "\n" // "\n"
+ "\n" // "\n"
+ "\x8D\xA5\xA4\xE3\xE0\xAD\xAE\n" // "ÐедÑÑно\n"
+ "\n" // "\n"
+ "\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3!"; // "ÐажмиÑе клавиÑÑ!";
}
- /*
- "\nÑïåðâà âûïåéòå\n\nÍàæìèòå êëàâèøó!"
- */
const char *HAVE_A_DRINK() {
- return "\n\x91\xAF\xA5\xE0\xA2\xA0 \xA2\xEB\xAF\xA5\xA9\xE2\xA5\n\n\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3!";
+ return "\n\x91\xAF\xA5\xE0\xA2\xA0 \xA2\xEB\xAF\xA5\xA9\xE2\xA5\n\n\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3!"; // "\nСпеÑва вÑпейÑе\n\nÐажмиÑе клавиÑÑ!"
}
- /*
- "\n\nÂû ïüÿíû\n\nÍàæìèòå êëàâèøó!"
- */
const char *YOURE_DRUNK() {
- return "\n\n\x82\xEB \xAF\xEC\xEF\xAD\xEB\n\n\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3!";
- }
-
- /*
- "\r\x3""c\v000\t000Õðàì"
- "\t039\v027%s\x3""l\t000\v046"
- "\f37Ë\fdå÷èòü\x3""r\t000%lu\x3""l\n"
- "\f37Ä\fdàð\x3""r\t000%lu\x3""l\n"
- "\f37Ñ\fdíÏðîêë\x3""r\t000%s"
- "\x3""l\t000\v090Çîë\x3""r\t000%s"
- "\x2\x3""c\v122\t040ESC\x1";
- */
+ return "\n\n\x82\xEB \xAF\xEC\xEF\xAD\xEB\n\n\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3!"; // "\n\nÐÑ Ð¿ÑÑнÑ\n\nÐажмиÑе клавиÑÑ!"
+ }
+
const char *TEMPLE_TEXT() {
- return "\r\x3"
- "c\v000\t000\x95\xE0\xA0\xAC"
- "\t039\v027%s\x3"
- "l\t000\v046"
- "\f37\x8B\fd\xA5\xE7\xA8\xE2\xEC\x3"
- "r\t000%lu\x3"
- "l\n"
- "\f37\x84\fd\xA0\xE0\x3"
- "r\t000%lu\x3"
- "l\n"
- "\f37\x91\fd\xAD\x8F\xE0\xAE\xAA\xAB\x3"
- "r\t000%s"
- "\x3"
- "l\t000\v090\x87\xAE\xAB\x3"
- "r\t000%s"
- "\x2\x3"
- "c\v122\t040ESC\x1";
+ return "\r\x3""c\v000\t000\x95\xE0\xA0\xAC" // "\r\x3""c\v000\t000Ð¥Ñам"
+ "\t039\v027%s\x3""l\t000\v046" // "\t039\v027%s\x3""l\t000\v046"
+ "\f37\x8B\fd\xA5\xE7\xA8\xE2\xEC\x3""r\t000%lu\x3""l\n" // "\f37Ð\fdеÑиÑÑ\x3""r\t000%lu\x3""l\n"
+ "\f37\x84\fd\xA0\xE0\x3""r\t000%lu\x3""l\n" // "\f37Ð\fdаÑ\x3""r\t000%lu\x3""l\n"
+ "\f37\x91\fd\xAD\x8F\xE0\xAE\xAA\xAB\x3""r\t000%s" // "\f37С\fdнÐÑокл\x3""r\t000%s"
+ "\x3""l\t000\v090\x87\xAE\xAB\x3""r\t000%s" // "\x3""l\t000\v090Ðол\x3""r\t000%s"
+ "\x2\x3""c\v122\t040ESC\x1"; // "\x2\x3""c\v122\t040ESC\x1";
}
- /*
- "%s\nÍóæíî %lu î÷êîâ îïûòà äëÿ óðîâíÿ %u."
- */
const char *EXPERIENCE_FOR_LEVEL() {
- return "%s\n\x8D\xE3\xA6\xAD\xAE %lu \xAE\xE7\xAA\xAE\xA2 \xAE\xAF\xEB\xE2\xA0 \xA4\xAB\xEF \xE3\xE0\xAE\xA2\xAD\xEF %u.";
+ return "%s\n\x8D\xE3\xA6\xAD\xAE %lu \xAE\xE7\xAA\xAE\xA2 \xAE\xAF\xEB\xE2\xA0 \xA4\xAB\xEF \xE3\xE0\xAE\xA2\xAD\xEF %u."; // "%s\nÐÑжно %lu оÑков опÑÑа Ð´Ð»Ñ ÑÑÐ¾Ð²Ð½Ñ %u."
}
- /*
- "%s\nÂû óæå çíàåòå âñ¸, ÷åìó ìû ìîæåì âàñ íàó÷èòü!"
- */
const char *TRAINING_LEARNED_ALL() {
- return "%s\n\x82\xEB \xE3\xA6\xA5 \xA7\xAD\xA0\xA5\xE2\xA5 \xA2\xE1\xF1, \xE7\xA5\xAC\xE3 \xAC\xEB \xAC\xAE\xA6\xA5\xAC \xA2\xA0\xE1 \xAD\xA0\xE3\xE7\xA8\xE2\xEC!";
+ return "%s\n\x82\xEB \xE3\xA6\xA5 \xA7\xAD\xA0\xA5\xE2\xA5 \xA2\xE1\xF1, \xE7\xA5\xAC\xE3 \xAC\xEB \xAC\xAE\xA6\xA5\xAC \xA2\xA0\xE1 \xAD\xA0\xE3\xE7\xA8\xE2\xEC!"; // "%s\nÐÑ Ñже знаеÑе вÑÑ, ÑÐµÐ¼Ñ Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ Ð²Ð°Ñ Ð½Ð°ÑÑиÑÑ!"
}
- /*
- "%s ìîæåò îáó÷àòüñÿ äî óðîâíÿ %d.\x3""l\n"
- "\v081Öåíà\x3""r\t000%lu";
- */
const char *ELIGIBLE_FOR_LEVEL() {
- return "%s \xAC\xAE\xA6\xA5\xE2 \xAE\xA1\xE3\xE7\xA0\xE2\xEC\xE1\xEF \xA4\xAE \xE3\xE0\xAE\xA2\xAD\xEF %d.\x3"
- "l\n"
- "\v081\x96\xA5\xAD\xA0\x3"
- "r\t000%lu";
+ return "%s \xAC\xAE\xA6\xA5\xE2 \xAE\xA1\xE3\xE7\xA0\xE2\xEC\xE1\xEF \xA4\xAE \xE3\xE0\xAE\xA2\xAD\xEF %d.\x3" // "%s Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÑÑаÑÑÑÑ Ð´Ð¾ ÑÑÐ¾Ð²Ð½Ñ %d.\x3""l\n"
+ "l\n""\v081\x96\xA5\xAD\xA0\x3""r\t000%lu"; // "\v081Цена\x3""r\t000%lu";
}
- /*
- "\r\x3""cÎáó÷åíèå\n"
- "\n"
- "%s\x3""l\v090\t000Çîë\x3""r\t000%s\x2\x3""c\v122\t021"
- "\f37Î\fdáó÷åíèå\t060ESC\x1";
- */
const char *TRAINING_TEXT() {
- return "\r\x3"
- "c\x8E\xA1\xE3\xE7\xA5\xAD\xA8\xA5\n"
- "\n"
- "%s\x3"
- "l\v090\t000\x87\xAE\xAB\x3"
- "r\t000%s\x2\x3"
- "c\v122\t021"
- "\f37\x8E\fd\xA1\xE3\xE7\xA5\xAD\xA8\xA5\t060ESC\x1";
- }
-
- /*
- "\x3""c\v000\t000%s\x3""l\n"
- "\n"
- "Çîë\x3""r\t000%s\x3""l\n"
- "Àëìç\x3""r\t000%s\x2\x3""c\v096\t007\f37À\fdëìç\t035\f37Ç\fdîë\t067ESC\x1";
- */
+ return "\r\x3""c\x8E\xA1\xE3\xE7\xA5\xAD\xA8\xA5\n" // "\r\x3""cÐбÑÑение\n"
+ "\n" // "\n"
+ "%s\x3""l\v090\t000\x87\xAE\xAB\x3""r\t000%s\x2\x3""c\v122\t021" // "%s\x3""l\v090\t000Ðол\x3""r\t000%s\x2\x3""c\v122\t021"
+ "\f37\x8E\fd\xA1\xE3\xE7\xA5\xAD\xA8\xA5\t060ESC\x1"; // "\f37Ð\fdбÑÑение\t060ESC\x1";
+ }
+
const char *GOLD_GEMS() {
- return "\x3"
- "c\v000\t000%s\x3"
- "l\n"
- "\n"
- "\x87\xAE\xAB\x3"
- "r\t000%s\x3"
- "l\n"
- "\x80\xAB\xAC\xA7\x3"
- "r\t000%s\x2\x3"
- "c\v096\t007\f37\x80\fd\xAB\xAC\xA7\t035\f37\x87\fd\xAE\xAB\t067ESC\x1";
- }
-
- /*
- "\t000\v000\x3""c%s\x3""l\n"
- "\n"
- "\x4""077Çîë\x3""r\t000%s\x3""l\n"
- "\x4""077Àëìç\x3""r\t000%s\x3""l\t000\v051\x4""077\n"
- "\x4""077";
- */
+ return "\x3""c\v000\t000%s\x3""l\n" // "\x3""c\v000\t000%s\x3""l\n"
+ "\n" // "\n"
+ "\x87\xAE\xAB\x3""r\t000%s\x3""l\n" // "Ðол\x3""r\t000%s\x3""l\n"
+ "\x80\xAB\xAC\xA7\x3""r\t000%s\x2\x3""c\v096\t007\f37\x80\fd\xAB\xAC\xA7\t035\f37\x87\fd\xAE\xAB\t067ESC\x1"; // "Ðлмз\x3""r\t000%s\x2\x3""c\v096\t007\f37Ð\fdлмз\t035\f37Ð\fdол\t067ESC\x1";
+ }
+
const char *GOLD_GEMS_2() {
- return "\t000\v000\x3"
- "c%s\x3"
- "l\n"
- "\n"
- "\x4"
- "077\x87\xAE\xAB\x3"
- "r\t000%s\x3"
- "l\n"
- "\x4"
- "077\x80\xAB\xAC\xA7\x3"
- "r\t000%s\x3"
- "l\t000\v051\x4"
- "077\n"
- "\x4"
- "077";
+ return "\t000\v000\x3""c%s\x3""l\n" // "\t000\v000\x3""c%s\x3""l\n"
+ "\n" // "\n"
+ "\x4""077\x87\xAE\xAB\x3""r\t000%s\x3""l\n" // "\x4""077Ðол\x3""r\t000%s\x3""l\n"
+ "\x4""077\x80\xAB\xAC\xA7\x3""r\t000%s\x3""l\t000\v051\x4""077\n" // "\x4""077Ðлмз\x3""r\t000%s\x3""l\t000\v051\x4""077\n"
+ "\x4""077"; // "\x4""077";
}
- /*
- "Ïîëîæèòü íà ñ÷¸ò", "Ñíÿòü ñî ñ÷¸òà"
- */
const char **DEPOSIT_WITHDRAWL() {
delete[] _depositWithdrawl;
- _depositWithdrawl = new const char *[2] { "\x8F\xAE\xAB\xAE\xA6\xA8\xE2\xEC \xAD\xA0 \xE1\xE7\xF1\xE2", "\x91\xAD\xEF\xE2\xEC \xE1\xAE \xE1\xE7\xF1\xE2\xA0" };
+ _depositWithdrawl = new const char *[2] { "\x8F\xAE\xAB\xAE\xA6\xA8\xE2\xEC \xAD\xA0 \xE1\xE7\xF1\xE2", "\x91\xAD\xEF\xE2\xEC \xE1\xAE \xE1\xE7\xF1\xE2\xA0" }; // "ÐоложиÑÑ Ð½Ð° ÑÑÑÑ", "СнÑÑÑ Ñо ÑÑÑÑа"
return _depositWithdrawl;
}
- /*
- "\x3""c\v012Íåäîñòàòî÷íî %s %s!\x3""l"
- */
const char *NOT_ENOUGH_X_IN_THE_Y() {
- return "\x3"
- "c\v012\x8D\xA5\xA4\xAE\xE1\xE2\xA0\xE2\xAE\xE7\xAD\xAE %s %s!\x3"
- "l";
+ return "\x3""c\v012\x8D\xA5\xA4\xAE\xE1\xE2\xA0\xE2\xAE\xE7\xAD\xAE %s %s!\x3""l"; // "\x3""c\v012ÐедоÑÑаÑоÑно %s %s!\x3""l"
}
- /*
- "\x3""c\v012Íåò %s %s!\x3""l"
- */
const char *NO_X_IN_THE_Y() {
- return "\x3"
- "c\v012\x8D\xA5\xE2 %s %s!\x3"
- "l";
+ return "\x3""c\v012\x8D\xA5\xE2 %s %s!\x3""l"; // "\x3""c\v012ÐÐµÑ %s %s!\x3""l"
}
- /*
- "Ñèëà", "Èíòåëëåêò", "Ñèëà äóõà", "Ñëîæåíèå", "Ñêîðîñòü",
- "Ìåòêîñòü", "Óäà÷à", "Âîçðàñò", "Óðîâåíü", "Êëàññ çàùèòû", "Çäîðîâüå",
- "Î÷êè ìàãèè", "Óñòîé÷èâîñòè", "Íàâûêè", "Íàãðàäû", "Îïûò"
- */
const char **STAT_NAMES() {
delete[] _statNames;
_statNames = new const char *[16] {
- "\x91\xA8\xAB\xA0", "\x88\xAD\xE2\xA5\xAB\xAB\xA5\xAA\xE2", "\x91\xA8\xAB\xA0 \xA4\xE3\xE5\xA0", "\x91\xAB\xAE\xA6\xA5\xAD\xA8\xA5", "\x91\xAA\xAE\xE0\xAE\xE1\xE2\xEC",
- "\x8C\xA5\xE2\xAA\xAE\xE1\xE2\xEC", "\x93\xA4\xA0\xE7\xA0", "\x82\xAE\xA7\xE0\xA0\xE1\xE2", "\x93\xE0\xAE\xA2\xA5\xAD\xEC", "\x8A\xAB\xA0\xE1\xE1 \xA7\xA0\xE9\xA8\xE2\xEB", "\x87\xA4\xAE\xE0\xAE\xA2\xEC\xA5",
- "\x8E\xE7\xAA\xA8 \xAC\xA0\xA3\xA8\xA8", "\x93\xE1\xE2\xAE\xA9\xE7\xA8\xA2\xAE\xE1\xE2\xA8", "\x8D\xA0\xA2\xEB\xAA\xA8", "\x8D\xA0\xA3\xE0\xA0\xA4\xEB", "\x8E\xAF\xEB\xE2"
+ "\x91\xA8\xAB\xA0", "\x88\xAD\xE2\xA5\xAB\xAB\xA5\xAA\xE2", "\x91\xA8\xAB\xA0 \xA4\xE3\xE5\xA0", "\x91\xAB\xAE\xA6\xA5\xAD\xA8\xA5", "\x91\xAA\xAE\xE0\xAE\xE1\xE2\xEC", // "Сила", "ÐнÑеллекÑ", "Сила дÑÑ
а", "Сложение", "СкоÑоÑÑÑ",
+ "\x8C\xA5\xE2\xAA\xAE\xE1\xE2\xEC", "\x93\xA4\xA0\xE7\xA0", "\x82\xAE\xA7\xE0\xA0\xE1\xE2", "\x93\xE0\xAE\xA2\xA5\xAD\xEC", "\x8A\xAB\xA0\xE1\xE1 \xA7\xA0\xE9\xA8\xE2\xEB", // "ÐеÑкоÑÑÑ", "УдаÑа", "ÐозÑаÑÑ", "УÑовенÑ", "ÐлаÑÑ Ð·Ð°ÑиÑÑ", "ÐдоÑовÑе", "\x87\xA4\xAE\xE0\xAE\xA2\xEC\xA5",
+ "\x8E\xE7\xAA\xA8 \xAC\xA0\xA3\xA8\xA8", "\x93\xE1\xE2\xAE\xA9\xE7\xA8\xA2\xAE\xE1\xE2\xA8", "\x8D\xA0\xA2\xEB\xAA\xA8", "\x8D\xA0\xA3\xE0\xA0\xA4\xEB", "\x8E\xAF\xEB\xE2" // "ÐÑки магии", "УÑÑойÑивоÑÑи", "ÐавÑки", "ÐагÑадÑ", "ÐпÑÑ"
};
return _statNames;
}
- /*
- "Çîëîòî", "Àëìàçû", "Ïèùà", "Ñîñòîÿíèå"
- */
const char **CONSUMABLE_NAMES() {
delete[] _consumableNames;
- _consumableNames = new const char *[4] { "\x87\xAE\xAB\xAE\xE2\xAE", "\x80\xAB\xAC\xA0\xA7\xEB", "\x8F\xA8\xE9\xA0", "\x91\xAE\xE1\xE2\xAE\xEF\xAD\xA8\xA5" };
+ _consumableNames = new const char *[4] { "\x87\xAE\xAB\xAE\xE2\xAE", "\x80\xAB\xAC\xA0\xA7\xEB", "\x8F\xA8\xE9\xA0", "\x91\xAE\xE1\xE2\xAE\xEF\xAD\xA8\xA5" }; // "ÐолоÑо", "ÐлмазÑ", "ÐиÑа", "СоÑÑоÑние"
return _consumableNames;
}
- /*
- "ó îòðÿäà", "â áàíêå"
- */
const char **WHERE_NAMES() {
delete[] _whereNames;
- _whereNames = new const char *[2] { "\xE3 \xAE\xE2\xE0\xEF\xA4\xA0", "\xA2 \xA1\xA0\xAD\xAA\xA5" };
+ _whereNames = new const char *[2] { "\xE3 \xAE\xE2\xE0\xEF\xA4\xA0", "\xA2 \xA1\xA0\xAD\xAA\xA5" }; // "Ñ Ð¾ÑÑÑда", "в банке"
return _whereNames;
}
- /*
- "\x3""c\t000\v051Ñêîëüêî\x3""l\n"
- */
const char *AMOUNT() {
- return "\x3"
- "c\t000\v051\x91\xAA\xAE\xAB\xEC\xAA\xAE\x3"
- "l\n";
+ return "\x3""c\t000\v051\x91\xAA\xAE\xAB\xEC\xAA\xAE\x3""l\n"; // "\x3""c\t000\v051СколÑко\x3""l\n"
}
- /*
- "\v007Âàøè ðþêçàêè óæå íàïîëíåíû!"
- */
const char *FOOD_PACKS_FULL() {
- return "\v007\x82\xA0\xE8\xA8 \xE0\xEE\xAA\xA7\xA0\xAA\xA8 \xE3\xA6\xA5 \xAD\xA0\xAF\xAE\xAB\xAD\xA5\xAD\xEB!";
+ return "\v007\x82\xA0\xE8\xA8 \xE0\xEE\xAA\xA7\xA0\xAA\xA8 \xE3\xA6\xA5 \xAD\xA0\xAF\xAE\xAB\xAD\xA5\xAD\xEB!"; // "\v007ÐаÑи ÑÑкзаки Ñже наполненÑ!"
}
- /*
- "\x3""c\v027\t039%s\x3""l\v046\n"
- "\t012\f37Ê\fdóïèòü\n"
- "\t012\f37Î\fdïèñàíèÿ";
- */
const char *BUY_SPELLS() {
- return "\x3"
- "c\v027\t039%s\x3"
- "l\v046\n"
- "\t012\f37\x8A\fd\xE3\xAF\xA8\xE2\xEC\n"
- "\t012\f37\x8E\fd\xAF\xA8\xE1\xA0\xAD\xA8\xEF";
+ return "\x3""c\v027\t039%s\x3""l\v046\n" // "\x3""c\v027\t039%s\x3""l\v046\n"
+ "\t012\f37\x8A\fd\xE3\xAF\xA8\xE2\xEC\n" // "\t012\f37Ð\fdÑпиÑÑ\n"
+ "\t012\f37\x8E\fd\xAF\xA8\xE1\xA0\xAD\xA8\xEF"; // "\t012\f37Ð\fdпиÑаниÑ";
}
- /*
- "\x1\r\f00\x3""c\v000\t000Ãèëüäèÿ\n"
- "%s\x3""l\t000\v090Çîë"
- "\x3""r\t000%s\x2\x3""c\v122\t040ESC\x1";
- */
const char *GUILD_OPTIONS() {
- return "\x1\r\f00\x3"
- "c\v000\t000\x83\xA8\xAB\xEC\xA4\xA8\xEF\n"
- "%s\x3"
- "l\t000\v090\x87\xAE\xAB"
- "\x3"
- "r\t000%s\x2\x3"
- "c\v122\t040ESC\x1";
+ return "\x1\r\f00\x3""c\v000\t000\x83\xA8\xAB\xEC\xA4\xA8\xEF\n" // "\x1\r\f00\x3""c\v000\t000ÐилÑдиÑ\n"
+ "%s\x3""l\t000\v090\x87\xAE\xAB" // "%s\x3""l\t000\v090Ðол"
+ "\x3""r\t000%s\x2\x3""c\v122\t040ESC\x1"; // "\x3""r\t000%s\x2\x3""c\v122\t040ESC\x1";
}
- /*
- "Âû íå çàêëèíàòåëü..."
- */
const char *NOT_A_SPELL_CASTER() {
- return "\x82\xEB \xAD\xA5 \xA7\xA0\xAA\xAB\xA8\xAD\xA0\xE2\xA5\xAB\xEC...";
- }
-
- /*
- "Âû óæå çíàåòå âñ¸,\n"
- "\t010÷åìó ìû ìîæåì âàñ\n"
- "\t010íàó÷èòü!\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n";
- */
+ return "\x82\xEB \xAD\xA5 \xA7\xA0\xAA\xAB\xA8\xAD\xA0\xE2\xA5\xAB\xEC..."; // "ÐÑ Ð½Ðµ заклинаÑелÑ..."
+ }
+
const char *SPELLS_LEARNED_ALL() {
- return "\x82\xEB \xE3\xA6\xA5 \xA7\xAD\xA0\xA5\xE2\xA5 \xA2\xE1\xF1,\n"
- "\t010\xE7\xA5\xAC\xE3 \xAC\xEB \xAC\xAE\xA6\xA5\xAC \xA2\xA0\xE1\n"
- "\t010\xAD\xA0\xE3\xE7\xA8\xE2\xEC!\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n";
+ return "\x82\xEB \xE3\xA6\xA5 \xA7\xAD\xA0\xA5\xE2\xA5 \xA2\xE1\xF1,\n" // "ÐÑ Ñже знаеÑе вÑÑ,\n"
+ "\t010\xE7\xA5\xAC\xE3 \xAC\xEB \xAC\xAE\xA6\xA5\xAC \xA2\xA0\xE1\n" // "\t010ÑÐµÐ¼Ñ Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ ваÑ\n"
+ "\t010\xAD\xA0\xE3\xE7\xA8\xE2\xEC!\n" // "\t010наÑÑиÑÑ!\n"
+ "\n" // "\n"
+ "\n" // "\n"
+ "\n" // "\n"
+ "\n" // "\n"
+ "\n" // "\n"
+ "\n" // "\n"
+ "\n" // "\n"
+ "\n" // "\n"
+ "\n"; // "\n";
}
- /*
- "\r\fd%s\x2\x3""c\t000\v002Çàêëèíàíèÿ"
- */
const char *SPELLS_FOR() {
- return "\r\fd%s\x2\x3"
- "c\t000\v002\x87\xA0\xAA\xAB\xA8\xAD\xA0\xAD\xA8\xEF";
+ return "\r\fd%s\x2\x3""c\t000\v002\x87\xA0\xAA\xAB\xA8\xAD\xA0\xAD\xA8\xEF"; // "\r\fd%s\x2\x3""c\t000\v002ÐаклинаниÑ"
}
const char *SPELL_LINES_0_TO_9() {
@@ -1101,131 +676,70 @@ public:
"\t004\v110%s - %u\x1";
}
- /*
- "Ìàíà"
- */
const char *SPELL_PTS() {
- return "\x8C\xA0\xAD\xA0";
+ return "\x8C\xA0\xAD\xA0"; // "Ðана"
}
- /*
- "Çîë"
- */
const char *GOLD() {
- return "\x87\xAE\xAB";
+ return "\x87\xAE\xAB"; // "Ðол"
}
- /*
- "\x3""c\f09%s\fd\x3""l\n"
- "\n"
- "%s\x3""c\t000\v110Í. êëàâèøó!";
- */
const char *SPELL_INFO() {
- return "\x3"
- "c\f09%s\fd\x3"
- "l\n"
- "\n"
- "%s\x3"
- "c\t000\v110\x8D. \xAA\xAB\xA0\xA2\xA8\xE8\xE3!";
+ return "\x3""c\f09%s\fd\x3""l\n" // "\x3""c\f09%s\fd\x3""l\n"
+ "\n" // "\n"
+ "%s\x3""c\t000\v110\x8D. \xAA\xAB\xA0\xA2\xA8\xE8\xE3!"; // "%s\x3""c\t000\v110Ð. клавиÑÑ!";
}
- /*
- "\x3""l\v000\t000\fd%s Æåëàåòå ïðèîáðåñòè "
- "\f09%s\fd çà %u?";
- */
const char *SPELL_PURCHASE() {
- return "\x3"
- "l\v000\t000\fd%s \x86\xA5\xAB\xA0\xA5\xE2\xA5 \xAF\xE0\xA8\xAE\xA1\xE0\xA5\xE1\xE2\xA8 "
- "\f09%s\fd \xA7\xA0 %u?";
+ return "\x3""l\v000\t000\fd%s \x86\xA5\xAB\xA0\xA5\xE2\xA5 \xAF\xE0\xA8\xAE\xA1\xE0\xA5\xE1\xE2\xA8 " // "\x3""l\v000\t000\fd%s ÐелаеÑе пÑиобÑеÑÑи "
+ "\f09%s\fd \xA7\xA0 %u?"; // "\f09%s\fd за %u?";
}
- /*
- "\x3""c\v000\t000%s\x3l\v139"
- "\t000X = %d\x3r\t000Y = %d\x3""c\t000%s";
- */
const char *MAP_TEXT() {
- return "\x3"
- "c\v000\t000%s\x3l\v139"
- "\t000X = %d\x3r\t000Y = %d\x3"
- "c\t000%s";
+ return "\x3""c\v000\t000%s\x3l\v139" // "\x3""c\v000\t000%s\x3l\v139"
+ "\t000X = %d\x3r\t000Y = %d\x3""c\t000%s"; // "\t000X = %d\x3r\t000Y = %d\x3""c\t000%s";
}
- /*
- "\x3""l\n\n\t024Ñâåò\x3""r\t124%u";
- */
const char *LIGHT_COUNT_TEXT() {
- return "\x3"
- "l\n\n\t024\x91\xA2\xA5\xE2\x3"
- "r\t124%u";
+ return "\x3""l\n\n\t024\x91\xA2\xA5\xE2\x3""r\t124%u"; // "\x3""l\n\n\t024СвеÑ\x3""r\t124%u";
}
- /*
- "%c%sÎãîíü%s%u"
- */
const char *FIRE_RESISTENCE_TEXT() {
- return "%c%s\x8E\xA3\xAE\xAD\xEC%s%u";
+ return "%c%s\x8E\xA3\xAE\xAD\xEC%s%u"; // "%c%sÐгонÑ%s%u"
}
- /*
- "%c%sÃðîì%s%u"
- */
const char *ELECRICITY_RESISTENCE_TEXT() {
- return "%c%s\x83\xE0\xAE\xAC%s%u";
+ return "%c%s\x83\xE0\xAE\xAC%s%u"; // "%c%sÐÑом%s%u"
}
- /*
- "%c%sÕîëîä%s%u"
- */
const char *COLD_RESISTENCE_TEXT() {
- return "%c%s\x95\xAE\xAB\xAE\xA4%s%u";
+ return "%c%s\x95\xAE\xAB\xAE\xA4%s%u"; // "%c%sХолод%s%u"
}
- /*
- "%c%sßä/Êèñëîòà%s%u"
- */
const char *POISON_RESISTENCE_TEXT() {
- return "%c%s\x9F\xA4/\x8A\xA8\xE1\xAB\xAE\xE2\xA0%s%u";
+ return "%c%s\x9F\xA4/\x8A\xA8\xE1\xAB\xAE\xE2\xA0%s%u"; // "%c%sЯд/ÐиÑлоÑа%s%u"
}
- /*
- "%c%sßñíîâèäåíèå%s"
- */
const char *CLAIRVOYANCE_TEXT() {
- return "%c%s\x9F\xE1\xAD\xAE\xA2\xA8\xA4\xA5\xAD\xA8\xA5%s";
+ return "%c%s\x9F\xE1\xAD\xAE\xA2\xA8\xA4\xA5\xAD\xA8\xA5%s"; // "%c%sЯÑновидение%s"
}
- /*
- "%c%sËåâèòàöèÿ%s"
- */
const char *LEVITATE_TEXT() {
- return "%c%s\x8B\xA5\xA2\xA8\xE2\xA0\xE6\xA8\xEF%s";
+ return "%c%s\x8B\xA5\xA2\xA8\xE2\xA0\xE6\xA8\xEF%s"; // "%c%sÐевиÑаÑиÑ%s"
}
- /*
- "%c%sÕîæäåíèå ïî âîäå"
- */
const char *WALK_ON_WATER_TEXT() {
- return "%c%s\x95\xAE\xA6\xA4\xA5\xAD\xA8\xA5 \xAF\xAE \xA2\xAE\xA4\xA5";
- }
-
- /*
- "\r\x3""c\t000\v001\f37%s Êñèíà\fd\n"
- "Èãðîâàÿ èíôîðìàöèÿ\n"
- "\n"
- "Ñåãîäíÿ \f37%s\fd\n"
- "\n"
- "\t032Âðåìÿ\t072Äåíü\t112Ãîä\n"
- "\t032\f37%d:%02d%c\t072%u\t112%u\fd%s";
- */
+ return "%c%s\x95\xAE\xA6\xA4\xA5\xAD\xA8\xA5 \xAF\xAE \xA2\xAE\xA4\xA5"; // "%c%sХождение по воде"
+ }
+
const char *GAME_INFORMATION() {
- return "\r\x3"
- "c\t000\v001\f37%s \x8A\xE1\xA8\xAD\xA0\fd\n"
- "\x88\xA3\xE0\xAE\xA2\xA0\xEF \xA8\xAD\xE4\xAE\xE0\xAC\xA0\xE6\xA8\xEF\n"
- "\n"
- "\x91\xA5\xA3\xAE\xA4\xAD\xEF \f37%s\fd\n"
- "\n"
- "\t032\x82\xE0\xA5\xAC\xEF\t072\x84\xA5\xAD\xEC\t112\x83\xAE\xA4\n"
- "\t032\f37%d:%02d%c\t072%u\t112%u\fd%s";
+ return "\r\x3""c\t000\v001\f37%s \x8A\xE1\xA8\xAD\xA0\fd\n" // "\r\x3""c\t000\v001\f37%s ÐÑина\fd\n"
+ "\x88\xA3\xE0\xAE\xA2\xA0\xEF \xA8\xAD\xE4\xAE\xE0\xAC\xA0\xE6\xA8\xEF\n" // "ÐгÑÐ¾Ð²Ð°Ñ Ð¸Ð½ÑоÑмаÑиÑ\n"
+ "\n" // "\n"
+ "\x91\xA5\xA3\xAE\xA4\xAD\xEF \f37%s\fd\n" // "Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ \f37%s\fd\n"
+ "\n" // "\n"
+ "\t032\x82\xE0\xA5\xAC\xEF\t072\x84\xA5\xAD\xEC\t112\x83\xAE\xA4\n" // "\t032ÐÑемÑ\t072ÐенÑ\t112Ðод\n"
+ "\t032\f37%d:%02d%c\t072%u\t112%u\fd%s"; // "\t032\f37%d:%02d%c\t072%u\t112%u\fd%s";
}
const char *WORLD_GAME_TEXT() {
@@ -1236,26 +750,19 @@ public:
return "Darkside";
}
- /*
- "Îáëàêà"
- */
const char *CLOUDS_GAME_TEXT() {
- return "\x8E\xA1\xAB\xA0\xAA\xA0";
+ return "\x8E\xA1\xAB\xA0\xAA\xA0"; // "Ðблака"
}
const char *SWORDS_GAME_TEXT() {
return "Swords";
}
- /*
- "äåñÿòèäåíü", "ïåðâîäåíü", "âòîðîäåíü", "òðåòüåäåíü", "÷åòâåðîäåíü",
- "ïÿòèäåíü", "øåñòèäåíü", "ñåìèäåíü", "âîñüìèäåíü", "äåâÿòèäåíü"
- */
const char **WEEK_DAY_STRINGS() {
delete[] _weekDayStrings;
_weekDayStrings = new const char *[10] {
- "\xA4\xA5\xE1\xEF\xE2\xA8\xA4\xA5\xAD\xEC", "\xAF\xA5\xE0\xA2\xAE\xA4\xA5\xAD\xEC", "\xA2\xE2\xAE\xE0\xAE\xA4\xA5\xAD\xEC", "\xE2\xE0\xA5\xE2\xEC\xA5\xA4\xA5\xAD\xEC", "\xE7\xA5\xE2\xA2\xA5\xE0\xAE\xA4\xA5\xAD\xEC",
- "\xAF\xEF\xE2\xA8\xA4\xA5\xAD\xEC", "\xE8\xA5\xE1\xE2\xA8\xA4\xA5\xAD\xEC", "\xE1\xA5\xAC\xA8\xA4\xA5\xAD\xEC", "\xA2\xAE\xE1\xEC\xAC\xA8\xA4\xA5\xAD\xEC", "\xA4\xA5\xA2\xEF\xE2\xA8\xA4\xA5\xAD\xEC"
+ "\xA4\xA5\xE1\xEF\xE2\xA8\xA4\xA5\xAD\xEC", "\xAF\xA5\xE0\xA2\xAE\xA4\xA5\xAD\xEC", "\xA2\xE2\xAE\xE0\xAE\xA4\xA5\xAD\xEC", "\xE2\xE0\xA5\xE2\xEC\xA5\xA4\xA5\xAD\xEC", "\xE7\xA5\xE2\xA2\xA5\xE0\xAE\xA4\xA5\xAD\xEC", // "деÑÑÑиденÑ", "пеÑводенÑ", "вÑоÑоденÑ", "ÑÑеÑÑеденÑ", "ÑеÑвеÑоденÑ",
+ "\xAF\xEF\xE2\xA8\xA4\xA5\xAD\xEC", "\xE8\xA5\xE1\xE2\xA8\xA4\xA5\xAD\xEC", "\xE1\xA5\xAC\xA8\xA4\xA5\xAD\xEC", "\xA2\xAE\xE1\xEC\xAC\xA8\xA4\xA5\xAD\xEC", "\xA4\xA5\xA2\xEF\xE2\xA8\xA4\xA5\xAD\xEC" // "пÑÑиденÑ", "ÑеÑÑиденÑ", "ÑемиденÑ", "воÑÑмиденÑ", "девÑÑиденÑ"
};
return _weekDayStrings;
}
@@ -1286,217 +793,110 @@ public:
"\t245%s%s%s%s\fd";
}
- /*
- "äåíü", "äíÿ", "äíåé"
- */
const char **DAYS() {
delete[] _days;
- _days = new const char *[3] { "\xA4\xA5\xAD\xEC", "\xA4\xAD\xEF", "\xA4\xAD\xA5\xA9" };
+ _days = new const char *[3] { "\xA4\xA5\xAD\xEC", "\xA4\xAD\xEF", "\xA4\xAD\xA5\xA9" }; // "денÑ", "днÑ", "дней"
return _days;
}
- /*
- "Çîëîòî"
- */
const char *PARTY_GOLD() {
- return "\x87\xAE\xAB\xAE\xE2\xAE";
+ return "\x87\xAE\xAB\xAE\xE2\xAE"; // "ÐолоÑо"
}
const char *PLUS_14() {
return "\f14+";
}
- /*
- "\x1\f00\r\x3""l\t029\v018Ñèë\t080Ìòê\t131Çäîð\t196Îïûò"
- "\t029\v041Èíò\t080Óä÷\t131ÎÌ\t029\v064Äóõ\t080Âçð"
- "\t131Óñò\t196Àëìàçû\t029\v087Ñëæ\t080Óðâ\t131Íâê"
- "\t196Ïèùà\t029\v110Ñêð\t080ÊÇ\t131Íàãð\t196Ñîñòîÿíèå"
- "\x3""c\t290\v025\f37Â\fdåùè\t290\v057\f37Á"
- "\fdñòð\t290\v089\f37Ñ\fdìåí\t290\v121Âûõîä\x3""l%s";
- */
const char *CHARACTER_TEMPLATE() {
- return "\x1\f00\r\x3"
- "l\t029\v018\x91\xA8\xAB\t080\x8C\xE2\xAA\t131\x87\xA4\xAE\xE0\t196\x8E\xAF\xEB\xE2"
- "\t029\v041\x88\xAD\xE2\t080\x93\xA4\xE7\t131\x8E\x8C\t029\v064\x84\xE3\xE5\t080\x82\xA7\xE0"
- "\t131\x93\xE1\xE2\t196\x80\xAB\xAC\xA0\xA7\xEB\t029\v087\x91\xAB\xA6\t080\x93\xE0\xA2\t131\x8D\xA2\xAA"
- "\t196\x8F\xA8\xE9\xA0\t029\v110\x91\xAA\xE0\t080\x8A\x87\t131\x8D\xA0\xA3\xE0\t196\x91\xAE\xE1\xE2\xAE\xEF\xAD\xA8\xA5"
- "\x3"
- "c\t290\v025\f37\x82\fd\xA5\xE9\xA8\t290\v057\f37\x81"
- "\fd\xE1\xE2\xE0\t290\v089\f37\x91\fd\xAC\xA5\xAD\t290\v121\x82\xEB\xE5\xAE\xA4\x3"
- "l%s";
+ return "\x1\f00\r\x3""l\t029\v018\x91\xA8\xAB\t080\x8C\xE2\xAA\t131\x87\xA4\xAE\xE0\t196\x8E\xAF\xEB\xE2" // "\x1\f00\r\x3""l\t029\v018Сил\t080ÐÑк\t131ÐдоÑ\t196ÐпÑÑ"
+ "\t029\v041\x88\xAD\xE2\t080\x93\xA4\xE7\t131\x8E\x8C\t029\v064\x84\xE3\xE5\t080\x82\xA7\xE0" // "\t029\v041ÐнÑ\t080УдÑ\t131ÐÐ\t029\v064ÐÑÑ
\t080ÐзÑ"
+ "\t131\x93\xE1\xE2\t196\x80\xAB\xAC\xA0\xA7\xEB\t029\v087\x91\xAB\xA6\t080\x93\xE0\xA2\t131\x8D\xA2\xAA" // "\t131УÑÑ\t196ÐлмазÑ\t029\v087Слж\t080УÑв\t131Ðвк"
+ "\t196\x8F\xA8\xE9\xA0\t029\v110\x91\xAA\xE0\t080\x8A\x87\t131\x8D\xA0\xA3\xE0\t196\x91\xAE\xE1\xE2\xAE\xEF\xAD\xA8\xA5" // "\t196ÐиÑа\t029\v110СкÑ\t080ÐÐ\t131ÐагÑ\t196СоÑÑоÑние"
+ "\x3""c\t290\v025\f37\x82\fd\xA5\xE9\xA8\t290\v057\f37\x81" // "\x3""c\t290\v025\f37Ð\fdеÑи\t290\v057\f37Ð"
+ "\fd\xE1\xE2\xE0\t290\v089\f37\x91\fd\xAC\xA5\xAD\t290\v121\x82\xEB\xE5\xAE\xA4\x3""l%s"; // "\fdÑÑÑ\t290\v089\f37С\fdмен\t290\v121ÐÑÑ
од\x3""l%s";
}
- /*
- "\x3""c\v007\t000Âî âðåìÿ áèòâû çàïðåùåíî ìåíÿòüñÿ ìåñòàìè!"
- */
const char *EXCHANGING_IN_COMBAT() {
- return "\x3"
- "c\v007\t000\x82\xAE \xA2\xE0\xA5\xAC\xEF \xA1\xA8\xE2\xA2\xEB \xA7\xA0\xAF\xE0\xA5\xE9\xA5\xAD\xAE \xAC\xA5\xAD\xEF\xE2\xEC\xE1\xEF \xAC\xA5\xE1\xE2\xA0\xAC\xA8!";
+ return "\x3""c\v007\t000\x82\xAE \xA2\xE0\xA5\xAC\xEF \xA1\xA8\xE2\xA2\xEB \xA7\xA0\xAF\xE0\xA5\xE9\xA5\xAD\xAE \xAC\xA5\xAD\xEF\xE2\xEC\xE1\xEF \xAC\xA5\xE1\xE2\xA0\xAC\xA8!"; // "\x3""c\v007\t000Ðо вÑÐµÐ¼Ñ Ð±Ð¸ÑÐ²Ñ Ð·Ð°Ð¿ÑеÑено менÑÑÑÑÑ Ð¼ÐµÑÑами!"
}
- /*
- "\x2\x3""c%s\n"
- "Ñåé÷àñ / Ìàêñèìóì\n"
- "\x3""r\t054%lu\x3""l\t058/ %lu\n"
- "\x3""cÐàíã: %s\x1";
- */
const char *CURRENT_MAXIMUM_RATING_TEXT() {
- return "\x2\x3"
- "c%s\n"
- "\x91\xA5\xA9\xE7\xA0\xE1 / \x8C\xA0\xAA\xE1\xA8\xAC\xE3\xAC\n"
- "\x3"
- "r\t054%lu\x3"
- "l\t058/ %lu\n"
- "\x3"
- "c\x90\xA0\xAD\xA3: %s\x1";
+ return "\x2\x3""c%s\n" // "\x2\x3""c%s\n"
+ "\x91\xA5\xA9\xE7\xA0\xE1 / \x8C\xA0\xAA\xE1\xA8\xAC\xE3\xAC\n" // "СейÑÐ°Ñ / ÐакÑимÑм\n"
+ "\x3" "r\t054%lu\x3""l\t058/ %lu\n" // "\x3""r\t054%lu\x3""l\t058/ %lu\n"
+ "\x3""c\x90\xA0\xAD\xA3: %s\x1"; // "\x3""cРанг: %s\x1";
}
- /*
- "\x2\x3""c%s\n"
- "Ñåé÷àñ / Ìàêñèìóì\n"
- "\x3""r\t054%d\x3""l\t058/ %lu";
- */
const char *CURRENT_MAXIMUM_TEXT() {
- return "\x2\x3"
- "c%s\n"
- "\x91\xA5\xA9\xE7\xA0\xE1 / \x8C\xA0\xAA\xE1\xA8\xAC\xE3\xAC\n"
- "\x3"
- "r\t054%d\x3"
- "l\t058/ %lu";
+ return "\x2\x3""c%s\n" // "\x2\x3""c%s\n"
+ "\x91\xA5\xA9\xE7\xA0\xE1 / \x8C\xA0\xAA\xE1\xA8\xAC\xE3\xAC\n" // "СейÑÐ°Ñ / ÐакÑимÑм\n"
+ "\x3""r\t054%d\x3""l\t058/ %lu"; // "\x3""r\t054%d\x3""l\t058/ %lu";
}
- /*
- "Íåò", "Ìèçåðíûé", "Æàëêèé", "Î÷.íèçêèé", "Íèçêèé", "Ñðåäíèé", "Õîðîøèé",
- "Îòëè÷íûé", "Âûñîêèé", "Âûñî÷åííûé", "Áîëüøîé", "Îãðîìíûé", "Óäèâèòåëüíûé",
- "Íåâåðîÿòíûé", "Ãèãàíòñêèé", "Ôàíòàñòè÷íûé", "Èçóìèòåëüíûé", "Ïîðàçèòåëüíûé",
- "Ãðàíäèîçíûé", "Ãðîìàäíûé", "Êîëîññàëüíûé", "Ïîòðÿñàþùèé", "×óäîâèùíûé",
- "Âûñî÷àéøèé"
- */
const char **RATING_TEXT() {
delete[] _ratingText;
_ratingText = new const char *[24] {
- "\x8D\xA5\xE2", "\x8C\xA8\xA7\xA5\xE0\xAD\xEB\xA9", "\x86\xA0\xAB\xAA\xA8\xA9", "\x8E\xE7.\xAD\xA8\xA7\xAA\xA8\xA9", "\x8D\xA8\xA7\xAA\xA8\xA9", "\x91\xE0\xA5\xA4\xAD\xA8\xA9", "\x95\xAE\xE0\xAE\xE8\xA8\xA9",
- "\x8E\xE2\xAB\xA8\xE7\xAD\xEB\xA9", "\x82\xEB\xE1\xAE\xAA\xA8\xA9", "\x82\xEB\xE1\xAE\xE7\xA5\xAD\xAD\xEB\xA9", "\x81\xAE\xAB\xEC\xE8\xAE\xA9", "\x8E\xA3\xE0\xAE\xAC\xAD\xEB\xA9", "\x93\xA4\xA8\xA2\xA8\xE2\xA5\xAB\xEC\xAD\xEB\xA9",
- "\x8D\xA5\xA2\xA5\xE0\xAE\xEF\xE2\xAD\xEB\xA9", "\x83\xA8\xA3\xA0\xAD\xE2\xE1\xAA\xA8\xA9", "\x94\xA0\xAD\xE2\xA0\xE1\xE2\xA8\xE7\xAD\xEB\xA9", "\x88\xA7\xE3\xAC\xA8\xE2\xA5\xAB\xEC\xAD\xEB\xA9", "\x8F\xAE\xE0\xA0\xA7\xA8\xE2\xA5\xAB\xEC\xAD\xEB\xA9",
- "\x83\xE0\xA0\xAD\xA4\xA8\xAE\xA7\xAD\xEB\xA9", "\x83\xE0\xAE\xAC\xA0\xA4\xAD\xEB\xA9", "\x8A\xAE\xAB\xAE\xE1\xE1\xA0\xAB\xEC\xAD\xEB\xA9", "\x8F\xAE\xE2\xE0\xEF\xE1\xA0\xEE\xE9\xA8\xA9", "\x97\xE3\xA4\xAE\xA2\xA8\xE9\xAD\xEB\xA9",
- "\x82\xEB\xE1\xAE\xE7\xA0\xA9\xE8\xA8\xA9"
+ "\x8D\xA5\xE2", "\x8C\xA8\xA7\xA5\xE0\xAD\xEB\xA9", "\x86\xA0\xAB\xAA\xA8\xA9", "\x8E\xE7.\xAD\xA8\xA7\xAA\xA8\xA9", "\x8D\xA8\xA7\xAA\xA8\xA9", "\x91\xE0\xA5\xA4\xAD\xA8\xA9", "\x95\xAE\xE0\xAE\xE8\xA8\xA9", // "ÐеÑ", "ÐизеÑнÑй", "Ðалкий", "ÐÑ.низкий", "Ðизкий", "СÑедний", "ХоÑоÑий",
+ "\x8E\xE2\xAB\xA8\xE7\xAD\xEB\xA9", "\x82\xEB\xE1\xAE\xAA\xA8\xA9", "\x82\xEB\xE1\xAE\xE7\xA5\xAD\xAD\xEB\xA9", "\x81\xAE\xAB\xEC\xE8\xAE\xA9", "\x8E\xA3\xE0\xAE\xAC\xAD\xEB\xA9", "\x93\xA4\xA8\xA2\xA8\xE2\xA5\xAB\xEC\xAD\xEB\xA9", // "ÐÑлиÑнÑй", "ÐÑÑокий", "ÐÑÑоÑеннÑй", "ÐолÑÑой", "ÐгÑомнÑй", "УдивиÑелÑнÑй",
+ "\x8D\xA5\xA2\xA5\xE0\xAE\xEF\xE2\xAD\xEB\xA9", "\x83\xA8\xA3\xA0\xAD\xE2\xE1\xAA\xA8\xA9", "\x94\xA0\xAD\xE2\xA0\xE1\xE2\xA8\xE7\xAD\xEB\xA9", "\x88\xA7\xE3\xAC\xA8\xE2\xA5\xAB\xEC\xAD\xEB\xA9", "\x8F\xAE\xE0\xA0\xA7\xA8\xE2\xA5\xAB\xEC\xAD\xEB\xA9", // "ÐевеÑоÑÑнÑй", "ÐиганÑÑкий", "ФанÑаÑÑиÑнÑй", "ÐзÑмиÑелÑнÑй", "ÐоÑазиÑелÑнÑй",
+ "\x83\xE0\xA0\xAD\xA4\xA8\xAE\xA7\xAD\xEB\xA9", "\x83\xE0\xAE\xAC\xA0\xA4\xAD\xEB\xA9", "\x8A\xAE\xAB\xAE\xE1\xE1\xA0\xAB\xEC\xAD\xEB\xA9", "\x8F\xAE\xE2\xE0\xEF\xE1\xA0\xEE\xE9\xA8\xA9", "\x97\xE3\xA4\xAE\xA2\xA8\xE9\xAD\xEB\xA9", // "ÐÑандиознÑй", "ÐÑомаднÑй", "ÐолоÑÑалÑнÑй", "ÐоÑÑÑÑаÑÑий", "ЧÑдовиÑнÑй",
+ "\x82\xEB\xE1\xAE\xE7\xA0\xA9\xE8\xA8\xA9" // "ÐÑÑоÑайÑий"
};
return _ratingText;
}
- /*
- "\x2\x3""c%s\n"
- "Òåêóùèé / Íàñòîÿùèé\n"
- "\x3""r\t057%u\x3""l\t061/ %u\n"
- "\x3""cÐîäèë%s: %u / %u\x1";
- */
const char *AGE_TEXT() {
- return "\x2\x3"
- "c%s\n"
- "\x92\xA5\xAA\xE3\xE9\xA8\xA9 / \x8D\xA0\xE1\xE2\xAE\xEF\xE9\xA8\xA9\n"
- "\x3"
- "r\t057%u\x3"
- "l\t061/ %u\n"
- "\x3"
- "c\x90\xAE\xA4\xA8\xAB%s: %u / %u\x1";
+ return "\x2\x3""c%s\n" // "\x2\x3""c%s\n"
+ "\x92\xA5\xAA\xE3\xE9\xA8\xA9 / \x8D\xA0\xE1\xE2\xAE\xEF\xE9\xA8\xA9\n" // "ТекÑÑий / ÐаÑÑоÑÑий\n"
+ "\x3""r\t057%u\x3""l\t061/ %u\n" // "\x3""r\t057%u\x3""l\t061/ %u\n"
+ "\x3""c\x90\xAE\xA4\xA8\xAB%s: %u / %u\x1"; // "\x3""cРодил%s: %u / %u\x1";
}
- /*
- "\x2\x3""c%s\n"
- "Òåêóùèé / Ìàêñèìóì\n"
- "\x3""r\t054%u\x3""l\t058/ %u\n"
- "\x3""c%u Àòàê%s/Ðàóíä\x1";
- */
const char *LEVEL_TEXT() {
- return "\x2\x3"
- "c%s\n"
- "\x92\xA5\xAA\xE3\xE9\xA8\xA9 / \x8C\xA0\xAA\xE1\xA8\xAC\xE3\xAC\n"
- "\x3"
- "r\t054%u\x3"
- "l\t058/ %u\n"
- "\x3"
- "c%u \x80\xE2\xA0\xAA%s/\x90\xA0\xE3\xAD\xA4\x1";
- }
-
- /*
- "\x2\x3""c%s\x3""l\n"
- "\t020Îãîíü\t100%u\n"
- "\t020Õîëîä\t100%u\n"
- "\t020Ãðîì\t100%u\n"
- "\t020ßä\t100%u\n"
- "\t020Ýíåðãèÿ\t100%u\n"
- "\t020Ìàãèÿ\t100%u";
- */
+ return "\x2\x3""c%s\n" // "\x2\x3""c%s\n"
+ "\x92\xA5\xAA\xE3\xE9\xA8\xA9 / \x8C\xA0\xAA\xE1\xA8\xAC\xE3\xAC\n" // "ТекÑÑий / ÐакÑимÑм\n"
+ "\x3""r\t054%u\x3""l\t058/ %u\n" // "\x3""r\t054%u\x3""l\t058/ %u\n"
+ "\x3""c%u \x80\xE2\xA0\xAA%s/\x90\xA0\xE3\xAD\xA4\x1"; // "\x3""c%u ÐÑак%s/РаÑнд\x1";
+ }
+
const char *RESISTENCES_TEXT() {
- return "\x2\x3"
- "c%s\x3"
- "l\n"
- "\t020\x8E\xA3\xAE\xAD\xEC\t100%u\n"
- "\t020\x95\xAE\xAB\xAE\xA4\t100%u\n"
- "\t020\x83\xE0\xAE\xAC\t100%u\n"
- "\t020\x9F\xA4\t100%u\n"
- "\t020\x9D\xAD\xA5\xE0\xA3\xA8\xEF\t100%u\n"
- "\t020\x8C\xA0\xA3\xA8\xEF\t100%u";
+ return "\x2\x3""c%s\x3""l\n" // "\x2\x3""c%s\x3""l\n"
+ "\t020\x8E\xA3\xAE\xAD\xEC\t100%u\n" // "\t020ÐгонÑ\t100%u\n"
+ "\t020\x95\xAE\xAB\xAE\xA4\t100%u\n" // "\t020Холод\t100%u\n"
+ "\t020\x83\xE0\xAE\xAC\t100%u\n" // "\t020ÐÑом\t100%u\n"
+ "\t020\x9F\xA4\t100%u\n" // "\t020Яд\t100%u\n"
+ "\t020\x9D\xAD\xA5\xE0\xA3\xA8\xEF\t100%u\n" // "\t020ÐнеÑгиÑ\t100%u\n"
+ "\t020\x8C\xA0\xA3\xA8\xEF\t100%u"; // "\t020ÐагиÑ\t100%u";
}
- /*
- "\n\t012Íåò"
- */
const char *NONE() {
- return "\n\t012\x8D\xA5\xE2";
+ return "\n\t012\x8D\xA5\xE2"; // "\n\t012ÐеÑ"
}
- /*
- "\x2\x3""c%s\x3""l\n"
- "\t005Òåêóùèé:\t070%lu\n"
- "\t005Ñë. óðîâåíü:\t070%s\x1";
- */
const char *EXPERIENCE_TEXT() {
- return "\x2\x3"
- "c%s\x3"
- "l\n"
- "\t005\x92\xA5\xAA\xE3\xE9\xA8\xA9:\t070%lu\n"
- "\t005\x91\xAB. \xE3\xE0\xAE\xA2\xA5\xAD\xEC:\t070%s\x1";
+ return "\x2\x3""c%s\x3""l\n" // "\x2\x3""c%s\x3""l\n"
+ "\t005\x92\xA5\xAA\xE3\xE9\xA8\xA9:\t070%lu\n" // "\t005ТекÑÑий:\t070%lu\n"
+ "\t005\x91\xAB. \xE3\xE0\xAE\xA2\xA5\xAD\xEC:\t070%s\x1"; // "\t005Сл. ÑÑовенÑ:\t070%s\x1";
}
- /*
- "\f12Äîñòóïåí\fd"
- */
const char *ELIGIBLE() {
- return "\f12\x84\xAE\xE1\xE2\xE3\xAF\xA5\xAD\fd";
+ return "\f12\x84\xAE\xE1\xE2\xE3\xAF\xA5\xAD\fd"; // "\f12ÐоÑÑÑпен\fd"
}
- /*
- "\x2\x3""c%s\n"
- "%lu ñ ñîáîé\n"
- "%lu â áàíêå\x1\x3""l";
- */
const char *IN_PARTY_IN_BANK() {
- return "\x2\x3"
- "c%s\n"
- "%lu \xE1 \xE1\xAE\xA1\xAE\xA9\n"
- "%lu \xA2 \xA1\xA0\xAD\xAA\xA5\x1\x3"
- "l";
+ return "\x2\x3""c%s\n" // "\x2\x3""c%s\n"
+ "%lu \xE1 \xE1\xAE\xA1\xAE\xA9\n" // "%lu Ñ Ñобой\n"
+ "%lu \xA2 \xA1\xA0\xAD\xAA\xA5\x1\x3""l"; // "%lu в банке\x1\x3""l";
}
- /*
- "\x2\x3""c%s\n"
- "%u ïîðöè%c\n"
- "Õâàòèò íà %u %s\x1\x3""l";
- */
const char *FOOD_TEXT() {
- return "\x2\x3"
- "c%s\n"
- "%u \xAF\xAE\xE0\xE6\xA8%c\n"
- "\x95\xA2\xA0\xE2\xA8\xE2 \xAD\xA0 %u %s\x1\x3"
- "l";
+ return "\x2\x3""c%s\n" // "\x2\x3""c%s\n"
+ "%u \xAF\xAE\xE0\xE6\xA8%c\n" // "%u поÑÑи%c\n"
+ "\x95\xA2\xA0\xE2\xA8\xE2 \xAD\xA0 %u %s\x1\x3""l"; // "ХваÑÐ¸Ñ Ð½Ð° %u %s\x1\x3""l";
}
- /*
- "\t010\v005Ïîìåíÿòüñÿ ñ êåì?"
- */
const char *EXCHANGE_WITH_WHOM() {
- return "\t010\v005\x8F\xAE\xAC\xA5\xAD\xEF\xE2\xEC\xE1\xEF \xE1 \xAA\xA5\xAC?";
+ return "\t010\v005\x8F\xAE\xAC\xA5\xAD\xEF\xE2\xEC\xE1\xEF \xE1 \xAA\xA5\xAC?"; // "\t010\v005ÐоменÑÑÑÑÑ Ñ ÐºÐµÐ¼?"
}
const char *QUICK_REF_LINE() {
@@ -1505,502 +905,286 @@ public:
"%02u%u\fd\t270\f%02u%c%c%c%c\fd";
}
- /*
- "\r\x3""cÁûñòðàÿ cïðàâêà\v012\x3""l"
- "\t007#\t027Èìÿ\t110Êëñ\t147Óðâ\t174Çäîð"
- "\t214ÎÌ\t242ÊÇ\t270Ñîñò"
- "%s%s%s%s%s%s%s%s"
- "\v110\t064\x3""cÇîëîòî\t144Àëìàçû\t224Ïèùà\v119"
- "\t064\f15%lu\t144%lu\t224%u %s\fd";
- */
const char *QUICK_REFERENCE() {
- return "\r\x3"
- "c\x81\xEB\xE1\xE2\xE0\xA0\xEF c\xAF\xE0\xA0\xA2\xAA\xA0\v012\x3"
- "l"
- "\t007#\t027\x88\xAC\xEF\t110\x8A\xAB\xE1\t147\x93\xE0\xA2\t174\x87\xA4\xAE\xE0"
- "\t214\x8E\x8C\t242\x8A\x87\t270\x91\xAE\xE1\xE2"
- "%s%s%s%s%s%s%s%s"
- "\v110\t064\x3"
- "c\x87\xAE\xAB\xAE\xE2\xAE\t144\x80\xAB\xAC\xA0\xA7\xEB\t224\x8F\xA8\xE9\xA0\v119"
- "\t064\f15%lu\t144%lu\t224%u %s\fd";
- }
-
- /*
- "\r\x2\x3""c\v021\t017Îðó\f37æ\fd\t051\f37Á\fdðîíÿ\t085"
- "\f37Ó\fdêðàø\t119\f37Ð\fdàçí\t153%s\t187%s\t221%s\t255%s\t289Âûõîä";
- */
+ return "\r\x3""c\x81\xEB\xE1\xE2\xE0\xA0\xEF c\xAF\xE0\xA0\xA2\xAA\xA0\v012\x3""l" // "\r\x3""cÐÑÑÑÑÐ°Ñ cпÑавка\v012\x3""l"
+ "\t007#\t027\x88\xAC\xEF\t110\x8A\xAB\xE1\t147\x93\xE0\xA2\t174\x87\xA4\xAE\xE0" // "\t007#\t027ÐмÑ\t110ÐлÑ\t147УÑв\t174ÐдоÑ"
+ "\t214\x8E\x8C\t242\x8A\x87\t270\x91\xAE\xE1\xE2" // "\t214ÐÐ\t242ÐÐ\t270СоÑÑ"
+ "%s%s%s%s%s%s%s%s" // "%s%s%s%s%s%s%s%s"
+ "\v110\t064\x3""c\x87\xAE\xAB\xAE\xE2\xAE\t144\x80\xAB\xAC\xA0\xA7\xEB\t224\x8F\xA8\xE9\xA0\v119" // "\v110\t064\x3""cÐолоÑо\t144ÐлмазÑ\t224ÐиÑа\v119"
+ "\t064\f15%lu\t144%lu\t224%u %s\fd"; //"\t064\f15%lu\t144%lu\t224%u %s\fd";
+ }
+
const char *ITEMS_DIALOG_TEXT1() {
- return "\r\x2\x3"
- "c\v021\t017\x8E\xE0\xE3\f37\xA6\fd\t051\f37\x81\fd\xE0\xAE\xAD\xEF\t085"
- "\f37\x93\fd\xAA\xE0\xA0\xE8\t119\f37\x90\fd\xA0\xA7\xAD\t153%s\t187%s\t221%s\t255%s\t289\x82\xEB\xE5\xAE\xA4";
+ return "\r\x2\x3""c\v021\t017\x8E\xE0\xE3\f37\xA6\fd\t051\f37\x81\fd\xE0\xAE\xAD\xEF\t085" // "\r\x2\x3""c\v021\t017ÐÑÑ\f37ж\fd\t051\f37Ð\fdÑонÑ\t085"
+ "\f37\x93\fd\xAA\xE0\xA0\xE8\t119\f37\x90\fd\xA0\xA7\xAD\t153%s\t187%s\t221%s\t255%s\t289\x82\xEB\xE5\xAE\xA4"; // "\f37У\fdкÑаÑ\t119\f37Ð \fdазн\t153%s\t187%s\t221%s\t255%s\t289ÐÑÑ
од";
}
- /*
- "\r\x2\x3""c\v021\t017Îðó\f37æ\fd\t051\f37Á\fdðîíÿ\t085"
- "\f37Ó\fdêðàø\t119\f37Ð\fdàçí\t153\f37%s\t289Âûõîä";
- */
const char *ITEMS_DIALOG_TEXT2() {
- return "\r\x2\x3"
- "c\v021\t017\x8E\xE0\xE3\f37\xA6\fd\t051\f37\x81\fd\xE0\xAE\xAD\xEF\t085"
- "\f37\x93\fd\xAA\xE0\xA0\xE8\t119\f37\x90\fd\xA0\xA7\xAD\t153\f37%s\t289\x82\xEB\xE5\xAE\xA4";
+ return "\r\x2\x3""c\v021\t017\x8E\xE0\xE3\f37\xA6\fd\t051\f37\x81\fd\xE0\xAE\xAD\xEF\t085" // "\r\x2\x3""c\v021\t017ÐÑÑ\f37ж\fd\t051\f37Ð\fdÑонÑ\t085"
+ "\f37\x93\fd\xAA\xE0\xA0\xE8\t119\f37\x90\fd\xA0\xA7\xAD\t153\f37%s\t289\x82\xEB\xE5\xAE\xA4"; // "\f37У\fdкÑаÑ\t119\f37Ð \fdазн\t153\f37%s\t289ÐÑÑ
од";
}
- /*
- "\x3r\f%02u\t023%2d)\x3l\t028%s\n"
- */
const char *ITEMS_DIALOG_LINE1() {
- return "\x3r\f%02u\t023%2d)\x3l\t028%s\n";
+ return "\x3r\f%02u\t023%2d)\x3l\t028%s\n"; // "\x3r\f%02u\t023%2d)\x3l\t028%s\n"
}
- /*
- "\x3r\f%02u\t023%2d)\x3l\t028%s\x3r\t000%u\n"
- */
const char *ITEMS_DIALOG_LINE2() {
- return "\x3r\f%02u\t023%2d)\x3l\t028%s\x3r\t000%u\n";
+ return "\x3r\f%02u\t023%2d)\x3l\t028%s\x3r\t000%u\n"; // "\x3r\f%02u\t023%2d)\x3l\t028%s\x3r\t000%u\n"
}
- /*
- "\f37Ê\fdóï"
- */
const char *BTN_BUY() {
- return "\f37\x8A\fd\xE3\xAF";
+ return "\f37\x8A\fd\xE3\xAF"; // "\f37Ð\fdÑп"
}
- /*
- "\f37Ï\fdðîä"
- */
const char *BTN_SELL() {
- return "\f37\x8F\fd\xE0\xAE\xA4";
+ return "\f37\x8F\fd\xE0\xAE\xA4"; // "\f37Ð\fdÑод"
}
- /*
- "\f37Î\fdïîçí"
- */
const char *BTN_IDENTIFY() {
- return "\f37\x8E\fd\xAF\xAE\xA7\xAD";
+ return "\f37\x8E\fd\xAF\xAE\xA7\xAD"; // "\f37Ð\fdпозн"
}
- /*
- "\f37×\fdèíèòü"
- */
const char *BTN_FIX() {
- return "\f37\x97\fd\xA8\xAD\xA8\xE2\xEC";
+ return "\f37\x97\fd\xA8\xAD\xA8\xE2\xEC"; // "\f37Ч\fdиниÑÑ"
}
- /*
- "\f37È\fdñï"
- */
const char *BTN_USE() {
- return "\f37\x88\fd\xE1\xAF";
+ return "\f37\x88\fd\xE1\xAF"; // "\f37Ð\fdÑп"
}
- /*
- "\f37Í\fdàä"
- */
const char *BTN_EQUIP() {
- return "\f37\x8D\fd\xA0\xA4";
+ return "\f37\x8D\fd\xA0\xA4"; // "\f37Ð\fdад"
}
- /*
- "\f37Ñ\fdíÿòü"
- */
const char *BTN_REMOVE() {
- return "\f37\x91\fd\xAD\xEF\xE2\xEC";
+ return "\f37\x91\fd\xAD\xEF\xE2\xEC"; // "\f37С\fdнÑÑÑ"
}
- /*
- "\f37Â\fdûáð"
- */
const char *BTN_DISCARD() {
- return "\f37\x82\fd\xEB\xA1\xE0";
+ return "\f37\x82\fd\xEB\xA1\xE0"; // "\f37Ð\fdÑбÑ"
}
- /*
- "\f37Ç\fdàäàí"
- */
const char *BTN_QUEST() {
- return "\f37\x87\fd\xA0\xA4\xA0\xAD";
+ return "\f37\x87\fd\xA0\xA4\xA0\xAD"; // "\f37Ð\fdадан"
}
- /*
- "Ç\fdà÷àð"
- */
const char *BTN_ENCHANT() {
- return "\x87\fd\xA0\xE7\xA0\xE0";
+ return "\x87\fd\xA0\xE7\xA0\xE0"; // "Ð\fdаÑаÑ"
}
- /*
- "Ï\fdåðåçð"
- */
const char *BTN_RECHARGE() {
- return "\x8F\fd\xA5\xE0\xA5\xA7\xE0";
+ return "\x8F\fd\xA5\xE0\xA5\xA7\xE0"; // "Ð\fdеÑезÑ"
}
- /*
- "Ç\fdîëîòî"
- */
const char *BTN_GOLD() {
- return "\x87\fd\xAE\xAB\xAE\xE2\xAE";
+ return "\x87\fd\xAE\xAB\xAE\xE2\xAE"; // "Ð\fdолоÑо"
}
- /*
- "\f32ñëîìàíî "
- */
const char *ITEM_BROKEN() {
- return "\f32\xE1\xAB\xAE\xAC\xA0\xAD\xAE ";
+ return "\f32\xE1\xAB\xAE\xAC\xA0\xAD\xAE "; // "\f32Ñломано "
}
- /*
- "\f09ïðîêëÿòî "
- */
const char *ITEM_CURSED() {
- return "\f09\xAF\xE0\xAE\xAA\xAB\xEF\xE2\xAE ";
+ return "\f09\xAF\xE0\xAE\xAA\xAB\xEF\xE2\xAE "; // "\f09пÑоклÑÑо "
}
const char *ITEM_OF() {
return "";
}
- /*
- "", "Óáèéöû äðàêîíîâ", "Èçãîíÿþùåãî ì¸ðòâûõ", "Êðóøèòåëÿ ãîëåìîâ",
- "Äàâèòåëÿ íàñåêîìûõ", "Óáèéöû ìîíñòðîâ", "Óáèéöû çâåðåé"
- */
const char **BONUS_NAMES() {
delete[] _bonusNames;
_bonusNames = new const char *[7] {
- "", "\x93\xA1\xA8\xA9\xE6\xEB \xA4\xE0\xA0\xAA\xAE\xAD\xAE\xA2", "\x88\xA7\xA3\xAE\xAD\xEF\xEE\xE9\xA5\xA3\xAE \xAC\xF1\xE0\xE2\xA2\xEB\xE5", "\x8A\xE0\xE3\xE8\xA8\xE2\xA5\xAB\xEF \xA3\xAE\xAB\xA5\xAC\xAE\xA2",
- "\x84\xA0\xA2\xA8\xE2\xA5\xAB\xEF \xAD\xA0\xE1\xA5\xAA\xAE\xAC\xEB\xE5", "\x93\xA1\xA8\xA9\xE6\xEB \xAC\xAE\xAD\xE1\xE2\xE0\xAE\xA2", "\x93\xA1\xA8\xA9\xE6\xEB \xA7\xA2\xA5\xE0\xA5\xA9"
+ "", "\x93\xA1\xA8\xA9\xE6\xEB \xA4\xE0\xA0\xAA\xAE\xAD\xAE\xA2", "\x88\xA7\xA3\xAE\xAD\xEF\xEE\xE9\xA5\xA3\xAE \xAC\xF1\xE0\xE2\xA2\xEB\xE5", "\x8A\xE0\xE3\xE8\xA8\xE2\xA5\xAB\xEF \xA3\xAE\xAB\xA5\xAC\xAE\xA2", // "", "УбийÑÑ Ð´Ñаконов", "ÐзгонÑÑÑего мÑÑÑвÑÑ
", "ÐÑÑÑиÑÐµÐ»Ñ Ð³Ð¾Ð»ÐµÐ¼Ð¾Ð²",
+ "\x84\xA0\xA2\xA8\xE2\xA5\xAB\xEF \xAD\xA0\xE1\xA5\xAA\xAE\xAC\xEB\xE5", "\x93\xA1\xA8\xA9\xE6\xEB \xAC\xAE\xAD\xE1\xE2\xE0\xAE\xA2", "\x93\xA1\xA8\xA9\xE6\xEB \xA7\xA2\xA5\xE0\xA5\xA9" // "ÐавиÑÐµÐ»Ñ Ð½Ð°ÑекомÑÑ
", "УбийÑÑ Ð¼Ð¾Ð½ÑÑÑов", "УбийÑÑ Ð·Ð²ÐµÑей"
};
return _bonusNames;
}
- /*
- nullptr, "ìå÷ ", "ãëàäèóñ ", "ïàëàø ", "ÿòàãàí ",
- "êîðòèê ", "ñàáëÿ ", "äóáèíà ", "òîïîð ", "êàòàíà ", "íóí÷àêè ",
- "âàêèäçàñè ", "êèíæàë ", "áóëàâà ", "öåï ", "æåçë ", "ìîëîò ", "êîïü¸ ",
- "áåðäûø ", "ãëåôà ", "àëåáàðäà ", "ïèêà ", "ôëàìáåðã ", "òðåçóáåö ",
- "ïîñîõ ", "áîåâîé ìîëîò ", "íàãèíàòà ", "áîåâîé òîïîð ", "ñåêèðà ",
- "òîïîð ïàëà÷à ", "ëóê ", "áîëüøîé ëóê ", "àðáàëåò ", "ïðàùà ",
- "Ìå÷ - óáèéöà Êñèíà ",
- "Elder LongSword ", "Elder Dagger ", "Elder Mace ", "Elder Spear ",
- "Elder Staff ", "Elder LongBow "
- */
const char **WEAPON_NAMES() {
delete[] _weaponNames;
_weaponNames = new const char *[41] {
- nullptr, "\xAC\xA5\xE7 ", "\xA3\xAB\xA0\xA4\xA8\xE3\xE1 ", "\xAF\xA0\xAB\xA0\xE8 ", "\xEF\xE2\xA0\xA3\xA0\xAD ",
- "\xAA\xAE\xE0\xE2\xA8\xAA ", "\xE1\xA0\xA1\xAB\xEF ", "\xA4\xE3\xA1\xA8\xAD\xA0 ", "\xE2\xAE\xAF\xAE\xE0 ", "\xAA\xA0\xE2\xA0\xAD\xA0 ", "\xAD\xE3\xAD\xE7\xA0\xAA\xA8 ",
- "\xA2\xA0\xAA\xA8\xA4\xA7\xA0\xE1\xA8 ", "\xAA\xA8\xAD\xA6\xA0\xAB ", "\xA1\xE3\xAB\xA0\xA2\xA0 ", "\xE6\xA5\xAF ", "\xA6\xA5\xA7\xAB ", "\xAC\xAE\xAB\xAE\xE2 ", "\xAA\xAE\xAF\xEC\xF1 ",
- "\xA1\xA5\xE0\xA4\xEB\xE8 ", "\xA3\xAB\xA5\xE4\xA0 ", "\xA0\xAB\xA5\xA1\xA0\xE0\xA4\xA0 ", "\xAF\xA8\xAA\xA0 ", "\xE4\xAB\xA0\xAC\xA1\xA5\xE0\xA3 ", "\xE2\xE0\xA5\xA7\xE3\xA1\xA5\xE6 ",
- "\xAF\xAE\xE1\xAE\xE5 ", "\xA1\xAE\xA5\xA2\xAE\xA9 \xAC\xAE\xAB\xAE\xE2 ", "\xAD\xA0\xA3\xA8\xAD\xA0\xE2\xA0 ", "\xA1\xAE\xA5\xA2\xAE\xA9 \xE2\xAE\xAF\xAE\xE0 ", "\xE1\xA5\xAA\xA8\xE0\xA0 ",
- "\xE2\xAE\xAF\xAE\xE0 \xAF\xA0\xAB\xA0\xE7\xA0 ", "\xAB\xE3\xAA ", "\xA1\xAE\xAB\xEC\xE8\xAE\xA9 \xAB\xE3\xAA ", "\xA0\xE0\xA1\xA0\xAB\xA5\xE2 ", "\xAF\xE0\xA0\xE9\xA0 ",
- "\x8C\xA5\xE7 - \xE3\xA1\xA8\xA9\xE6\xA0 \x8A\xE1\xA8\xAD\xA0 ",
- "Elder LongSword ", "Elder Dagger ", "Elder Mace ", "Elder Spear ",
- "Elder Staff ", "Elder LongBow "
+ nullptr, "\xAC\xA5\xE7 ", "\xA3\xAB\xA0\xA4\xA8\xE3\xE1 ", "\xAF\xA0\xAB\xA0\xE8 ", "\xEF\xE2\xA0\xA3\xA0\xAD ", // nullptr, "Ð¼ÐµÑ ", "гладиÑÑ ", "Ð¿Ð°Ð»Ð°Ñ ", "ÑÑаган ",
+ "\xAA\xAE\xE0\xE2\xA8\xAA ", "\xE1\xA0\xA1\xAB\xEF ", "\xA4\xE3\xA1\xA8\xAD\xA0 ", "\xE2\xAE\xAF\xAE\xE0 ", "\xAA\xA0\xE2\xA0\xAD\xA0 ", "\xAD\xE3\xAD\xE7\xA0\xAA\xA8 ", // "коÑÑик ", "ÑÐ°Ð±Ð»Ñ ", "дÑбина ", "ÑÐ¾Ð¿Ð¾Ñ ", "каÑана ", "нÑнÑаки ",
+ "\xA2\xA0\xAA\xA8\xA4\xA7\xA0\xE1\xA8 ", "\xAA\xA8\xAD\xA6\xA0\xAB ", "\xA1\xE3\xAB\xA0\xA2\xA0 ", "\xE6\xA5\xAF ", "\xA6\xA5\xA7\xAB ", "\xAC\xAE\xAB\xAE\xE2 ", "\xAA\xAE\xAF\xEC\xF1 ", // "вакидзаÑи ", "кинжал ", "бÑлава ", "Ñеп ", "жезл ", "Ð¼Ð¾Ð»Ð¾Ñ ", "копÑÑ ",
+ "\xA1\xA5\xE0\xA4\xEB\xE8 ", "\xA3\xAB\xA5\xE4\xA0 ", "\xA0\xAB\xA5\xA1\xA0\xE0\xA4\xA0 ", "\xAF\xA8\xAA\xA0 ", "\xE4\xAB\xA0\xAC\xA1\xA5\xE0\xA3 ", "\xE2\xE0\xA5\xA7\xE3\xA1\xA5\xE6 ", // "беÑдÑÑ ", "глеÑа ", "алебаÑда ", "пика ", "ÑламбеÑг ", "ÑÑезÑÐ±ÐµÑ ",
+ "\xAF\xAE\xE1\xAE\xE5 ", "\xA1\xAE\xA5\xA2\xAE\xA9 \xAC\xAE\xAB\xAE\xE2 ", "\xAD\xA0\xA3\xA8\xAD\xA0\xE2\xA0 ", "\xA1\xAE\xA5\xA2\xAE\xA9 \xE2\xAE\xAF\xAE\xE0 ", "\xE1\xA5\xAA\xA8\xE0\xA0 ", // "поÑоÑ
", "боевой Ð¼Ð¾Ð»Ð¾Ñ ", "нагинаÑа ", "боевой ÑÐ¾Ð¿Ð¾Ñ ", "ÑекиÑа ",
+ "\xE2\xAE\xAF\xAE\xE0 \xAF\xA0\xAB\xA0\xE7\xA0 ", "\xAB\xE3\xAA ", "\xA1\xAE\xAB\xEC\xE8\xAE\xA9 \xAB\xE3\xAA ", "\xA0\xE0\xA1\xA0\xAB\xA5\xE2 ", "\xAF\xE0\xA0\xE9\xA0 ", // "ÑÐ¾Ð¿Ð¾Ñ Ð¿Ð°Ð»Ð°Ñа ", "лÑк ", "болÑÑой лÑк ", "аÑÐ±Ð°Ð»ÐµÑ ", "пÑаÑа ",
+ "\x8C\xA5\xE7 - \xE3\xA1\xA8\xA9\xE6\xA0 \x8A\xE1\xA8\xAD\xA0 ", // "ÐÐµÑ - ÑбийÑа ÐÑина ",
+ "Elder LongSword ", "Elder Dagger ", "Elder Mace ", "Elder Spear ", // "Elder LongSword ", "Elder Dagger ", "Elder Mace ", "Elder Spear ",
+ "Elder Staff ", "Elder LongBow " // "Elder Staff ", "Elder LongBow "
};
return _weaponNames;
}
- /*
- nullptr, "ìàíòèÿ ", "÷åøóÿ ", "ïàíöèðü ", "êîëü÷óãà ",
- "þøìàí ", "áåõòåðåö ", "ëàòû ", "ùèò ",
- "øëåì ", "ñàïîãè ", "ïëàù ", "íàêèäêà ", "ïåð÷àòêè "
- */
const char **ARMOR_NAMES() {
delete[] _armorNames;
_armorNames = new const char *[14] {
- nullptr, "\xAC\xA0\xAD\xE2\xA8\xEF ", "\xE7\xA5\xE8\xE3\xEF ", "\xAF\xA0\xAD\xE6\xA8\xE0\xEC ", "\xAA\xAE\xAB\xEC\xE7\xE3\xA3\xA0 ",
- "\xEE\xE8\xAC\xA0\xAD ", "\xA1\xA5\xE5\xE2\xA5\xE0\xA5\xE6 ", "\xAB\xA0\xE2\xEB ", "\xE9\xA8\xE2 ",
- "\xE8\xAB\xA5\xAC ", "\xE1\xA0\xAF\xAE\xA3\xA8 ", "\xAF\xAB\xA0\xE9 ", "\xAD\xA0\xAA\xA8\xA4\xAA\xA0 ", "\xAF\xA5\xE0\xE7\xA0\xE2\xAA\xA8 "
+ nullptr, "\xAC\xA0\xAD\xE2\xA8\xEF ", "\xE7\xA5\xE8\xE3\xEF ", "\xAF\xA0\xAD\xE6\xA8\xE0\xEC ", "\xAA\xAE\xAB\xEC\xE7\xE3\xA3\xA0 ", // nullptr, "манÑÐ¸Ñ ", "ÑеÑÑÑ ", "панÑиÑÑ ", "колÑÑÑга ",
+ "\xEE\xE8\xAC\xA0\xAD ", "\xA1\xA5\xE5\xE2\xA5\xE0\xA5\xE6 ", "\xAB\xA0\xE2\xEB ", "\xE9\xA8\xE2 ", // "ÑÑман ", "беÑ
ÑеÑÐµÑ ", "лаÑÑ ", "ÑÐ¸Ñ ",
+ "\xE8\xAB\xA5\xAC ", "\xE1\xA0\xAF\xAE\xA3\xA8 ", "\xAF\xAB\xA0\xE9 ", "\xAD\xA0\xAA\xA8\xA4\xAA\xA0 ", "\xAF\xA5\xE0\xE7\xA0\xE2\xAA\xA8 " // "Ñлем ", "Ñапоги ", "Ð¿Ð»Ð°Ñ ", "накидка ", "пеÑÑаÑки "
};
return _armorNames;
}
- /*
- nullptr, "êîëüöî ", "ïîÿñ ", "áðîøü ", "ìåäàëü ", "òàëèñìàí ", "êàìåÿ ",
- "ñêàðàáåé ", "êóëîí ", "îæåðåëüå ", "àìóëåò "
- */
const char **ACCESSORY_NAMES() {
delete[] _accessoryNames;
_accessoryNames = new const char *[11] {
- nullptr, "\xAA\xAE\xAB\xEC\xE6\xAE ", "\xAF\xAE\xEF\xE1 ", "\xA1\xE0\xAE\xE8\xEC ", "\xAC\xA5\xA4\xA0\xAB\xEC ", "\xE2\xA0\xAB\xA8\xE1\xAC\xA0\xAD ", "\xAA\xA0\xAC\xA5\xEF ",
- "\xE1\xAA\xA0\xE0\xA0\xA1\xA5\xA9 ", "\xAA\xE3\xAB\xAE\xAD ", "\xAE\xA6\xA5\xE0\xA5\xAB\xEC\xA5 ", "\xA0\xAC\xE3\xAB\xA5\xE2 "
+ nullptr, "\xAA\xAE\xAB\xEC\xE6\xAE ", "\xAF\xAE\xEF\xE1 ", "\xA1\xE0\xAE\xE8\xEC ", "\xAC\xA5\xA4\xA0\xAB\xEC ", "\xE2\xA0\xAB\xA8\xE1\xAC\xA0\xAD ", "\xAA\xA0\xAC\xA5\xEF ", // nullptr, "колÑÑо ", "поÑÑ ", "бÑоÑÑ ", "Ð¼ÐµÐ´Ð°Ð»Ñ ", "ÑалиÑман ", "ÐºÐ°Ð¼ÐµÑ ",
+ "\xE1\xAA\xA0\xE0\xA0\xA1\xA5\xA9 ", "\xAA\xE3\xAB\xAE\xAD ", "\xAE\xA6\xA5\xE0\xA5\xAB\xEC\xA5 ", "\xA0\xAC\xE3\xAB\xA5\xE2 " // "ÑкаÑабей ", "кÑлон ", "ожеÑелÑе ", "амÑÐ»ÐµÑ "
};
return _accessoryNames;
}
- /*
- nullptr, "ñêèïåòð ", "ñàìîöâåò ", "êàìåíü ", "øêàòóëêà ", "ñôåðà ", "ðîã ",
- "ìîíåòêà ", "æåçë ", "ñâèñòîê ", "çåëüå ", "ñâèòîê ", "ïîääåëêà", "ïîääåëêà",
- "ïîääåëêà", "ïîääåëêà", "ïîääåëêà", "ïîääåëêà", "ïîääåëêà", "ïîääåëêà",
- "ïîääåëêà", "ïîääåëêà"
- */
const char **MISC_NAMES() {
delete[] _miscNames;
_miscNames = new const char *[22] {
- nullptr, "\xE1\xAA\xA8\xAF\xA5\xE2\xE0 ", "\xE1\xA0\xAC\xAE\xE6\xA2\xA5\xE2 ", "\xAA\xA0\xAC\xA5\xAD\xEC ", "\xE8\xAA\xA0\xE2\xE3\xAB\xAA\xA0 ", "\xE1\xE4\xA5\xE0\xA0 ", "\xE0\xAE\xA3 ",
- "\xAC\xAE\xAD\xA5\xE2\xAA\xA0 ", "\xA6\xA5\xA7\xAB ", "\xE1\xA2\xA8\xE1\xE2\xAE\xAA ", "\xA7\xA5\xAB\xEC\xA5 ", "\xE1\xA2\xA8\xE2\xAE\xAA ", "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0", "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0",
- "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0", "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0", "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0", "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0", "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0", "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0",
- "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0", "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0"
+ nullptr, "\xE1\xAA\xA8\xAF\xA5\xE2\xE0 ", "\xE1\xA0\xAC\xAE\xE6\xA2\xA5\xE2 ", "\xAA\xA0\xAC\xA5\xAD\xEC ", "\xE8\xAA\xA0\xE2\xE3\xAB\xAA\xA0 ", "\xE1\xE4\xA5\xE0\xA0 ", "\xE0\xAE\xA3 ", // nullptr, "ÑкипеÑÑ ", "ÑамоÑÐ²ÐµÑ ", "ÐºÐ°Ð¼ÐµÐ½Ñ ", "ÑкаÑÑлка ", "ÑÑеÑа ", "Ñог ",
+ "\xAC\xAE\xAD\xA5\xE2\xAA\xA0 ", "\xA6\xA5\xA7\xAB ", "\xE1\xA2\xA8\xE1\xE2\xAE\xAA ", "\xA7\xA5\xAB\xEC\xA5 ", "\xE1\xA2\xA8\xE2\xAE\xAA ", "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0", "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0", // "монеÑка ", "жезл ", "ÑвиÑÑок ", "зелÑе ", "ÑвиÑок ", "подделка", "подделка",
+ "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0", "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0", "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0", "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0", "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0", "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0", // "подделка", "подделка", "подделка", "подделка", "подделка", "подделка",
+ "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0", "\xAF\xAE\xA4\xA4\xA5\xAB\xAA\xA0" // "подделка", "подделка"
};
return _miscNames;
}
- /*
- nullptr, "ñâåòà", "ïðîáóæäåíèÿ", "âîëøåáíûõ ñòðåë", "ïåðâîé ïîìîùè",
- "êóëàêîâ", "ýíåðãåòè÷åñêîãî âçðûâà", "óñûïëåíèÿ", "ëå÷åíèÿ ñëàáîñòè",
- "ëå÷åíèÿ", "èñêð", "øðàïíåëè", "ðåïåëëåíòà", "ÿäîâèòûõ îáëàêîâ",
- "çàùèòû îò ñòèõèé", "áîëè", "ïðûæêîâ", "êîíòðîëÿ íàä ìîíñòðàìè",
- "ÿñíîâèäåíèÿ", "èçãíàíèÿ íåæèòè", "ëåâèòàöèè", "âîëøåáíîãî ãëàçà",
- "áëàãîñëîâåíèÿ", "îïîçíàíèÿ ìîíñòðîâ", "ìîëíèé", "ñâÿòûõ äàðîâ", "èñöåëåíèÿ",
- "ïðèðîäíîãî ëå÷åíèÿ", "ìàÿêîâ", "ùèòà", "ìóæåñòâà", "ãèïíîçà",
- "õîæäåíèÿ ïî âîäå", "îáæèãàþùåãî õîëîäà", "ïîèñêà ìîíñòðîâ",
- "îãíåííûõ øàðîâ", "ëó÷åé õîëîäà", "ïðîòèâîÿäèÿ", "ðàñïûëåíèÿ êèñëîòû",
- "âðåìåííîãî èñêàæåíèÿ", "óñûïëåíèÿ äðàêîíîâ", "âàêöèíàöèè", "òåëåïîðòàöèè",
- "ñìåðòè", "ñâîáîäíîãî äâèæåíèÿ", "îñòàíîâêè ãîëåìà", "ÿäîâèòûõ çàëïîâ",
- "ñìåðòåëüíîãî ðîÿ", "óáåæèùà", "äíÿ çàùèòû", "äíÿ ìàãèè", "ïèðà",
- "îãíåííîãî öåïà", "ïåðåçàðÿäêè", "ìîðîçà", "ãîðîäñêèõ ïîðòàëîâ",
- "ñíÿòèÿ îêàìåíåíèÿ", "îæèâëåíèÿ ì¸ðòâûõ", "äåìàòåðèàëèçàöèè",
- "òàíöóþùèõ êëèíêîâ", "ëóííûõ ëó÷åé", "èçìåíåíèÿ âåñà",
- "ïðèçìàòè÷åñêîãî ñâåòà", "÷àð", "èñïåïåëåíèÿ", "ñâÿòûõ ñëîâ", "âîñêðåøåíèÿ",
- "áóðü", "ìåãàâîëüò", "èíôåðíî", "ñîëíå÷íûõ ëó÷åé", "èìïëîçèé",
- "âçðûâà çâåçäû", "ÁÎÃÎÂ!"
- */
const char **SPECIAL_NAMES() {
delete[] _specialNames;
_specialNames = new const char *[74] {
- nullptr, "\xE1\xA2\xA5\xE2\xA0", "\xAF\xE0\xAE\xA1\xE3\xA6\xA4\xA5\xAD\xA8\xEF", "\xA2\xAE\xAB\xE8\xA5\xA1\xAD\xEB\xE5 \xE1\xE2\xE0\xA5\xAB", "\xAF\xA5\xE0\xA2\xAE\xA9 \xAF\xAE\xAC\xAE\xE9\xA8",
- "\xAA\xE3\xAB\xA0\xAA\xAE\xA2", "\xED\xAD\xA5\xE0\xA3\xA5\xE2\xA8\xE7\xA5\xE1\xAA\xAE\xA3\xAE \xA2\xA7\xE0\xEB\xA2\xA0", "\xE3\xE1\xEB\xAF\xAB\xA5\xAD\xA8\xEF", "\xAB\xA5\xE7\xA5\xAD\xA8\xEF \xE1\xAB\xA0\xA1\xAE\xE1\xE2\xA8",
- "\xAB\xA5\xE7\xA5\xAD\xA8\xEF", "\xA8\xE1\xAA\xE0", "\xE8\xE0\xA0\xAF\xAD\xA5\xAB\xA8", "\xE0\xA5\xAF\xA5\xAB\xAB\xA5\xAD\xE2\xA0", "\xEF\xA4\xAE\xA2\xA8\xE2\xEB\xE5 \xAE\xA1\xAB\xA0\xAA\xAE\xA2",
- "\xA7\xA0\xE9\xA8\xE2\xEB \xAE\xE2 \xE1\xE2\xA8\xE5\xA8\xA9", "\xA1\xAE\xAB\xA8", "\xAF\xE0\xEB\xA6\xAA\xAE\xA2", "\xAA\xAE\xAD\xE2\xE0\xAE\xAB\xEF \xAD\xA0\xA4 \xAC\xAE\xAD\xE1\xE2\xE0\xA0\xAC\xA8",
- "\xEF\xE1\xAD\xAE\xA2\xA8\xA4\xA5\xAD\xA8\xEF", "\xA8\xA7\xA3\xAD\xA0\xAD\xA8\xEF \xAD\xA5\xA6\xA8\xE2\xA8", "\xAB\xA5\xA2\xA8\xE2\xA0\xE6\xA8\xA8", "\xA2\xAE\xAB\xE8\xA5\xA1\xAD\xAE\xA3\xAE \xA3\xAB\xA0\xA7\xA0",
- "\xA1\xAB\xA0\xA3\xAE\xE1\xAB\xAE\xA2\xA5\xAD\xA8\xEF", "\xAE\xAF\xAE\xA7\xAD\xA0\xAD\xA8\xEF \xAC\xAE\xAD\xE1\xE2\xE0\xAE\xA2", "\xAC\xAE\xAB\xAD\xA8\xA9", "\xE1\xA2\xEF\xE2\xEB\xE5 \xA4\xA0\xE0\xAE\xA2", "\xA8\xE1\xE6\xA5\xAB\xA5\xAD\xA8\xEF",
- "\xAF\xE0\xA8\xE0\xAE\xA4\xAD\xAE\xA3\xAE \xAB\xA5\xE7\xA5\xAD\xA8\xEF", "\xAC\xA0\xEF\xAA\xAE\xA2", "\xE9\xA8\xE2\xA0", "\xAC\xE3\xA6\xA5\xE1\xE2\xA2\xA0", "\xA3\xA8\xAF\xAD\xAE\xA7\xA0",
- "\xE5\xAE\xA6\xA4\xA5\xAD\xA8\xEF \xAF\xAE \xA2\xAE\xA4\xA5", "\xAE\xA1\xA6\xA8\xA3\xA0\xEE\xE9\xA5\xA3\xAE \xE5\xAE\xAB\xAE\xA4\xA0", "\xAF\xAE\xA8\xE1\xAA\xA0 \xAC\xAE\xAD\xE1\xE2\xE0\xAE\xA2",
- "\xAE\xA3\xAD\xA5\xAD\xAD\xEB\xE5 \xE8\xA0\xE0\xAE\xA2", "\xAB\xE3\xE7\xA5\xA9 \xE5\xAE\xAB\xAE\xA4\xA0", "\xAF\xE0\xAE\xE2\xA8\xA2\xAE\xEF\xA4\xA8\xEF", "\xE0\xA0\xE1\xAF\xEB\xAB\xA5\xAD\xA8\xEF \xAA\xA8\xE1\xAB\xAE\xE2\xEB",
- "\xA2\xE0\xA5\xAC\xA5\xAD\xAD\xAE\xA3\xAE \xA8\xE1\xAA\xA0\xA6\xA5\xAD\xA8\xEF", "\xE3\xE1\xEB\xAF\xAB\xA5\xAD\xA8\xEF \xA4\xE0\xA0\xAA\xAE\xAD\xAE\xA2", "\xA2\xA0\xAA\xE6\xA8\xAD\xA0\xE6\xA8\xA8", "\xE2\xA5\xAB\xA5\xAF\xAE\xE0\xE2\xA0\xE6\xA8\xA8",
- "\xE1\xAC\xA5\xE0\xE2\xA8", "\xE1\xA2\xAE\xA1\xAE\xA4\xAD\xAE\xA3\xAE \xA4\xA2\xA8\xA6\xA5\xAD\xA8\xEF", "\xAE\xE1\xE2\xA0\xAD\xAE\xA2\xAA\xA8 \xA3\xAE\xAB\xA5\xAC\xA0", "\xEF\xA4\xAE\xA2\xA8\xE2\xEB\xE5 \xA7\xA0\xAB\xAF\xAE\xA2",
- "\xE1\xAC\xA5\xE0\xE2\xA5\xAB\xEC\xAD\xAE\xA3\xAE \xE0\xAE\xEF", "\xE3\xA1\xA5\xA6\xA8\xE9\xA0", "\xA4\xAD\xEF \xA7\xA0\xE9\xA8\xE2\xEB", "\xA4\xAD\xEF \xAC\xA0\xA3\xA8\xA8", "\xAF\xA8\xE0\xA0",
- "\xAE\xA3\xAD\xA5\xAD\xAD\xAE\xA3\xAE \xE6\xA5\xAF\xA0", "\xAF\xA5\xE0\xA5\xA7\xA0\xE0\xEF\xA4\xAA\xA8", "\xAC\xAE\xE0\xAE\xA7\xA0", "\xA3\xAE\xE0\xAE\xA4\xE1\xAA\xA8\xE5 \xAF\xAE\xE0\xE2\xA0\xAB\xAE\xA2",
- "\xE1\xAD\xEF\xE2\xA8\xEF \xAE\xAA\xA0\xAC\xA5\xAD\xA5\xAD\xA8\xEF", "\xAE\xA6\xA8\xA2\xAB\xA5\xAD\xA8\xEF \xAC\xF1\xE0\xE2\xA2\xEB\xE5", "\xA4\xA5\xAC\xA0\xE2\xA5\xE0\xA8\xA0\xAB\xA8\xA7\xA0\xE6\xA8\xA8",
- "\xE2\xA0\xAD\xE6\xE3\xEE\xE9\xA8\xE5 \xAA\xAB\xA8\xAD\xAA\xAE\xA2", "\xAB\xE3\xAD\xAD\xEB\xE5 \xAB\xE3\xE7\xA5\xA9", "\xA8\xA7\xAC\xA5\xAD\xA5\xAD\xA8\xEF \xA2\xA5\xE1\xA0",
- "\xAF\xE0\xA8\xA7\xAC\xA0\xE2\xA8\xE7\xA5\xE1\xAA\xAE\xA3\xAE \xE1\xA2\xA5\xE2\xA0", "\xE7\xA0\xE0", "\xA8\xE1\xAF\xA5\xAF\xA5\xAB\xA5\xAD\xA8\xEF", "\xE1\xA2\xEF\xE2\xEB\xE5 \xE1\xAB\xAE\xA2", "\xA2\xAE\xE1\xAA\xE0\xA5\xE8\xA5\xAD\xA8\xEF",
- "\xA1\xE3\xE0\xEC", "\xAC\xA5\xA3\xA0\xA2\xAE\xAB\xEC\xE2", "\xA8\xAD\xE4\xA5\xE0\xAD\xAE", "\xE1\xAE\xAB\xAD\xA5\xE7\xAD\xEB\xE5 \xAB\xE3\xE7\xA5\xA9", "\xA8\xAC\xAF\xAB\xAE\xA7\xA8\xA9",
- "\xA2\xA7\xE0\xEB\xA2\xA0 \xA7\xA2\xA5\xA7\xA4\xEB", "\x81\x8E\x83\x8E\x82!"
+ nullptr, "\xE1\xA2\xA5\xE2\xA0", "\xAF\xE0\xAE\xA1\xE3\xA6\xA4\xA5\xAD\xA8\xEF", "\xA2\xAE\xAB\xE8\xA5\xA1\xAD\xEB\xE5 \xE1\xE2\xE0\xA5\xAB", "\xAF\xA5\xE0\xA2\xAE\xA9 \xAF\xAE\xAC\xAE\xE9\xA8", // nullptr, "ÑвеÑа", "пÑобÑждениÑ", "волÑебнÑÑ
ÑÑÑел", "пеÑвой помоÑи",
+ "\xAA\xE3\xAB\xA0\xAA\xAE\xA2", "\xED\xAD\xA5\xE0\xA3\xA5\xE2\xA8\xE7\xA5\xE1\xAA\xAE\xA3\xAE \xA2\xA7\xE0\xEB\xA2\xA0", "\xE3\xE1\xEB\xAF\xAB\xA5\xAD\xA8\xEF", "\xAB\xA5\xE7\xA5\xAD\xA8\xEF \xE1\xAB\xA0\xA1\xAE\xE1\xE2\xA8", // "кÑлаков", "ÑнеÑгеÑиÑеÑкого взÑÑва", "ÑÑÑплениÑ", "леÑÐµÐ½Ð¸Ñ ÑлабоÑÑи",
+ "\xAB\xA5\xE7\xA5\xAD\xA8\xEF", "\xA8\xE1\xAA\xE0", "\xE8\xE0\xA0\xAF\xAD\xA5\xAB\xA8", "\xE0\xA5\xAF\xA5\xAB\xAB\xA5\xAD\xE2\xA0", "\xEF\xA4\xAE\xA2\xA8\xE2\xEB\xE5 \xAE\xA1\xAB\xA0\xAA\xAE\xA2", // "леÑениÑ", "иÑкÑ", "ÑÑапнели", "ÑепелленÑа", "ÑдовиÑÑÑ
облаков",
+ "\xA7\xA0\xE9\xA8\xE2\xEB \xAE\xE2 \xE1\xE2\xA8\xE5\xA8\xA9", "\xA1\xAE\xAB\xA8", "\xAF\xE0\xEB\xA6\xAA\xAE\xA2", "\xAA\xAE\xAD\xE2\xE0\xAE\xAB\xEF \xAD\xA0\xA4 \xAC\xAE\xAD\xE1\xE2\xE0\xA0\xAC\xA8", // "заÑиÑÑ Ð¾Ñ ÑÑиÑ
ий", "боли", "пÑÑжков", "конÑÑÐ¾Ð»Ñ Ð½Ð°Ð´ монÑÑÑами",
+ "\xEF\xE1\xAD\xAE\xA2\xA8\xA4\xA5\xAD\xA8\xEF", "\xA8\xA7\xA3\xAD\xA0\xAD\xA8\xEF \xAD\xA5\xA6\xA8\xE2\xA8", "\xAB\xA5\xA2\xA8\xE2\xA0\xE6\xA8\xA8", "\xA2\xAE\xAB\xE8\xA5\xA1\xAD\xAE\xA3\xAE \xA3\xAB\xA0\xA7\xA0", // "ÑÑновидениÑ", "Ð¸Ð·Ð³Ð½Ð°Ð½Ð¸Ñ Ð½ÐµÐ¶Ð¸Ñи", "левиÑаÑии", "волÑебного глаза",
+ "\xA1\xAB\xA0\xA3\xAE\xE1\xAB\xAE\xA2\xA5\xAD\xA8\xEF", "\xAE\xAF\xAE\xA7\xAD\xA0\xAD\xA8\xEF \xAC\xAE\xAD\xE1\xE2\xE0\xAE\xA2", "\xAC\xAE\xAB\xAD\xA8\xA9", "\xE1\xA2\xEF\xE2\xEB\xE5 \xA4\xA0\xE0\xAE\xA2", "\xA8\xE1\xE6\xA5\xAB\xA5\xAD\xA8\xEF", // "благоÑловениÑ", "Ð¾Ð¿Ð¾Ð·Ð½Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð½ÑÑÑов", "молний", "ÑвÑÑÑÑ
даÑов", "иÑÑелениÑ",
+ "\xAF\xE0\xA8\xE0\xAE\xA4\xAD\xAE\xA3\xAE \xAB\xA5\xE7\xA5\xAD\xA8\xEF", "\xAC\xA0\xEF\xAA\xAE\xA2", "\xE9\xA8\xE2\xA0", "\xAC\xE3\xA6\xA5\xE1\xE2\xA2\xA0", "\xA3\xA8\xAF\xAD\xAE\xA7\xA0", // "пÑиÑодного леÑениÑ", "маÑков", "ÑиÑа", "мÑжеÑÑва", "гипноза",
+ "\xE5\xAE\xA6\xA4\xA5\xAD\xA8\xEF \xAF\xAE \xA2\xAE\xA4\xA5", "\xAE\xA1\xA6\xA8\xA3\xA0\xEE\xE9\xA5\xA3\xAE \xE5\xAE\xAB\xAE\xA4\xA0", "\xAF\xAE\xA8\xE1\xAA\xA0 \xAC\xAE\xAD\xE1\xE2\xE0\xAE\xA2", // "Ñ
Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð¾ воде", "обжигаÑÑего Ñ
олода", "поиÑка монÑÑÑов",
+ "\xAE\xA3\xAD\xA5\xAD\xAD\xEB\xE5 \xE8\xA0\xE0\xAE\xA2", "\xAB\xE3\xE7\xA5\xA9 \xE5\xAE\xAB\xAE\xA4\xA0", "\xAF\xE0\xAE\xE2\xA8\xA2\xAE\xEF\xA4\xA8\xEF", "\xE0\xA0\xE1\xAF\xEB\xAB\xA5\xAD\xA8\xEF \xAA\xA8\xE1\xAB\xAE\xE2\xEB", // "огненнÑÑ
ÑаÑов", "лÑÑей Ñ
олода", "пÑоÑивоÑдиÑ", "ÑаÑпÑÐ»ÐµÐ½Ð¸Ñ ÐºÐ¸ÑлоÑÑ",
+ "\xA2\xE0\xA5\xAC\xA5\xAD\xAD\xAE\xA3\xAE \xA8\xE1\xAA\xA0\xA6\xA5\xAD\xA8\xEF", "\xE3\xE1\xEB\xAF\xAB\xA5\xAD\xA8\xEF \xA4\xE0\xA0\xAA\xAE\xAD\xAE\xA2", "\xA2\xA0\xAA\xE6\xA8\xAD\xA0\xE6\xA8\xA8", "\xE2\xA5\xAB\xA5\xAF\xAE\xE0\xE2\xA0\xE6\xA8\xA8", // "вÑеменного иÑкажениÑ", "ÑÑÑÐ¿Ð»ÐµÐ½Ð¸Ñ Ð´Ñаконов", "вакÑинаÑии", "ÑелепоÑÑаÑии",
+ "\xE1\xAC\xA5\xE0\xE2\xA8", "\xE1\xA2\xAE\xA1\xAE\xA4\xAD\xAE\xA3\xAE \xA4\xA2\xA8\xA6\xA5\xAD\xA8\xEF", "\xAE\xE1\xE2\xA0\xAD\xAE\xA2\xAA\xA8 \xA3\xAE\xAB\xA5\xAC\xA0", "\xEF\xA4\xAE\xA2\xA8\xE2\xEB\xE5 \xA7\xA0\xAB\xAF\xAE\xA2", // "ÑмеÑÑи", "Ñвободного движениÑ", "оÑÑановки голема", "ÑдовиÑÑÑ
залпов",
+ "\xE1\xAC\xA5\xE0\xE2\xA5\xAB\xEC\xAD\xAE\xA3\xAE \xE0\xAE\xEF", "\xE3\xA1\xA5\xA6\xA8\xE9\xA0", "\xA4\xAD\xEF \xA7\xA0\xE9\xA8\xE2\xEB", "\xA4\xAD\xEF \xAC\xA0\xA3\xA8\xA8", "\xAF\xA8\xE0\xA0", // "ÑмеÑÑелÑного ÑоÑ", "ÑбежиÑа", "Ð´Ð½Ñ Ð·Ð°ÑиÑÑ", "Ð´Ð½Ñ Ð¼Ð°Ð³Ð¸Ð¸", "пиÑа",
+ "\xAE\xA3\xAD\xA5\xAD\xAD\xAE\xA3\xAE \xE6\xA5\xAF\xA0", "\xAF\xA5\xE0\xA5\xA7\xA0\xE0\xEF\xA4\xAA\xA8", "\xAC\xAE\xE0\xAE\xA7\xA0", "\xA3\xAE\xE0\xAE\xA4\xE1\xAA\xA8\xE5 \xAF\xAE\xE0\xE2\xA0\xAB\xAE\xA2", // "огненного Ñепа", "пеÑезаÑÑдки", "моÑоза", "гоÑодÑкиÑ
поÑÑалов",
+ "\xE1\xAD\xEF\xE2\xA8\xEF \xAE\xAA\xA0\xAC\xA5\xAD\xA5\xAD\xA8\xEF", "\xAE\xA6\xA8\xA2\xAB\xA5\xAD\xA8\xEF \xAC\xF1\xE0\xE2\xA2\xEB\xE5", "\xA4\xA5\xAC\xA0\xE2\xA5\xE0\xA8\xA0\xAB\xA8\xA7\xA0\xE6\xA8\xA8", // "ÑнÑÑÐ¸Ñ Ð¾ÐºÐ°Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ", "Ð¾Ð¶Ð¸Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼ÑÑÑвÑÑ
", "демаÑеÑиализаÑии",
+ "\xE2\xA0\xAD\xE6\xE3\xEE\xE9\xA8\xE5 \xAA\xAB\xA8\xAD\xAA\xAE\xA2", "\xAB\xE3\xAD\xAD\xEB\xE5 \xAB\xE3\xE7\xA5\xA9", "\xA8\xA7\xAC\xA5\xAD\xA5\xAD\xA8\xEF \xA2\xA5\xE1\xA0", // "ÑанÑÑÑÑиÑ
клинков", "лÑннÑÑ
лÑÑей", "Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²ÐµÑа",
+ "\xAF\xE0\xA8\xA7\xAC\xA0\xE2\xA8\xE7\xA5\xE1\xAA\xAE\xA3\xAE \xE1\xA2\xA5\xE2\xA0", "\xE7\xA0\xE0", "\xA8\xE1\xAF\xA5\xAF\xA5\xAB\xA5\xAD\xA8\xEF", "\xE1\xA2\xEF\xE2\xEB\xE5 \xE1\xAB\xAE\xA2", "\xA2\xAE\xE1\xAA\xE0\xA5\xE8\xA5\xAD\xA8\xEF", // "пÑизмаÑиÑеÑкого ÑвеÑа", "ÑаÑ", "иÑпепелениÑ", "ÑвÑÑÑÑ
Ñлов", "воÑкÑеÑениÑ",
+ "\xA1\xE3\xE0\xEC", "\xAC\xA5\xA3\xA0\xA2\xAE\xAB\xEC\xE2", "\xA8\xAD\xE4\xA5\xE0\xAD\xAE", "\xE1\xAE\xAB\xAD\xA5\xE7\xAD\xEB\xE5 \xAB\xE3\xE7\xA5\xA9", "\xA8\xAC\xAF\xAB\xAE\xA7\xA8\xA9", // "бÑÑÑ", "мегаволÑÑ", "инÑеÑно", "ÑолнеÑнÑÑ
лÑÑей", "имплозий",
+ "\xA2\xA7\xE0\xEB\xA2\xA0 \xA7\xA2\xA5\xA7\xA4\xEB", "\x81\x8E\x83\x8E\x82!" // "взÑÑва звездÑ", "ÐÐÐÐÐ!"
};
return _specialNames;
}
- /*
- "Îãíÿ", "Ãðîìà", "Õîëîäà", "Êèñëîòû/ßäà", "Ýíåðãèè", "Ìàãèè"
- */
const char **ELEMENTAL_NAMES() {
delete[] _elementalNames;
_elementalNames = new const char *[6] {
- "\x8E\xA3\xAD\xEF", "\x83\xE0\xAE\xAC\xA0", "\x95\xAE\xAB\xAE\xA4\xA0", "\x8A\xA8\xE1\xAB\xAE\xE2\xEB/\x9F\xA4\xA0", "\x9D\xAD\xA5\xE0\xA3\xA8\xA8", "\x8C\xA0\xA3\xA8\xA8"
+ "\x8E\xA3\xAD\xEF", "\x83\xE0\xAE\xAC\xA0", "\x95\xAE\xAB\xAE\xA4\xA0", "\x8A\xA8\xE1\xAB\xAE\xE2\xEB/\x9F\xA4\xA0", "\x9D\xAD\xA5\xE0\xA3\xA8\xA8", "\x8C\xA0\xA3\xA8\xA8" // "ÐгнÑ", "ÐÑома", "Холода", "ÐиÑлоÑÑ/Яда", "ÐнеÑгии", "Ðагии"
};
return _elementalNames;
}
- /*
- "Ñèëà", "Èíòåëëåêò", "Ñèëà äóõà", "Ñêîðîñòü", "Ìåòêîñòü", "Óäà÷à",
- "Çäîðîâüå", "Î÷êè ìàãèè", "Êëàññ çàùèòû", "Âîðîâñòâî"
- */
const char **ATTRIBUTE_NAMES() {
delete[] _attributeNames;
_attributeNames = new const char *[10] {
- "\x91\xA8\xAB\xA0", "\x88\xAD\xE2\xA5\xAB\xAB\xA5\xAA\xE2", "\x91\xA8\xAB\xA0 \xA4\xE3\xE5\xA0", "\x91\xAA\xAE\xE0\xAE\xE1\xE2\xEC", "\x8C\xA5\xE2\xAA\xAE\xE1\xE2\xEC", "\x93\xA4\xA0\xE7\xA0",
- "\x87\xA4\xAE\xE0\xAE\xA2\xEC\xA5", "\x8E\xE7\xAA\xA8 \xAC\xA0\xA3\xA8\xA8", "\x8A\xAB\xA0\xE1\xE1 \xA7\xA0\xE9\xA8\xE2\xEB", "\x82\xAE\xE0\xAE\xA2\xE1\xE2\xA2\xAE"
+ "\x91\xA8\xAB\xA0", "\x88\xAD\xE2\xA5\xAB\xAB\xA5\xAA\xE2", "\x91\xA8\xAB\xA0 \xA4\xE3\xE5\xA0", "\x91\xAA\xAE\xE0\xAE\xE1\xE2\xEC", "\x8C\xA5\xE2\xAA\xAE\xE1\xE2\xEC", "\x93\xA4\xA0\xE7\xA0", // "Сила", "ÐнÑеллекÑ", "Сила дÑÑ
а", "СкоÑоÑÑÑ", "ÐеÑкоÑÑÑ", "УдаÑа",
+ "\x87\xA4\xAE\xE0\xAE\xA2\xEC\xA5", "\x8E\xE7\xAA\xA8 \xAC\xA0\xA3\xA8\xA8", "\x8A\xAB\xA0\xE1\xE1 \xA7\xA0\xE9\xA8\xE2\xEB", "\x82\xAE\xE0\xAE\xA2\xE1\xE2\xA2\xAE" // "ÐдоÑовÑе", "ÐÑки магии", "ÐлаÑÑ Ð·Ð°ÑиÑÑ", "ÐоÑовÑÑво"
};
return _attributeNames;
}
- /*
- nullptr, "Äðàêîíîâ", "̸ðòâûõ", "Ãîëåìîâ", "Íàñåêîìûõ", "Ìîíñòðîâ", "Çâåðåé"
- */
const char **EFFECTIVENESS_NAMES() {
delete[] _effectivenessNames;
_effectivenessNames = new const char *[7] {
- nullptr, "\x84\xE0\xA0\xAA\xAE\xAD\xAE\xA2", "\x8C\xF1\xE0\xE2\xA2\xEB\xE5", "\x83\xAE\xAB\xA5\xAC\xAE\xA2", "\x8D\xA0\xE1\xA5\xAA\xAE\xAC\xEB\xE5", "\x8C\xAE\xAD\xE1\xE2\xE0\xAE\xA2", "\x87\xA2\xA5\xE0\xA5\xA9"
+ nullptr, "\x84\xE0\xA0\xAA\xAE\xAD\xAE\xA2", "\x8C\xF1\xE0\xE2\xA2\xEB\xE5", "\x83\xAE\xAB\xA5\xAC\xAE\xA2", "\x8D\xA0\xE1\xA5\xAA\xAE\xAC\xEB\xE5", "\x8C\xAE\xAD\xE1\xE2\xE0\xAE\xA2", "\x87\xA2\xA5\xE0\xA5\xA9" // nullptr, "ÐÑаконов", "ÐÑÑÑвÑÑ
", "Ðолемов", "ÐаÑекомÑÑ
", "ÐонÑÑÑов", "ÐвеÑей"
};
return _effectivenessNames;
}
- /*
- "Ïðàâî âëàäåíèÿ Íüþêàñëîì",
- "Õðóñòàëüíûé êëþ÷ îò Âåäüìèíîé áàøíè",
- "Îòìû÷êà äëÿ áàøíè Äàðçîãà",
- "Êëþ÷ îò Áàøíè âûñøåé ìàãèè",
- "Äðàãîöåííûé àìóëåò Ñåâåðíîãî Ñôèíêñà",
- "Êàìåíü Òûñÿ÷è Óæàñîâ",
- "Îòïèðàþùèé êàìåíü ãîëåìîâ",
- "Îòïèðàþùèé êàìåíü ßêà",
- "Ñêèïåòð Âðåìåííîãî Èñêàæåíèÿ",
- "Ðîã Ôàëèñòû",
- "Ýëèêñèð Âîññòàíîâëåíèÿ",
- "Âîëøåáíûé æåçë ôåé",
- "Äèàäåìà ïðèíöåññû Ðîêñàíû",
- "Ñâÿùåííàÿ Êíèãà Ýëüôîâ",
- "Ñêàðàáåé Âîïëîùåíèÿ",
- "Êðèñòàëëû Ïüåçîýëåêòðè÷åñòâà",
- "Ñâèòîê Ìóäðîñòè",
- "Êîðåíü ôèðíû",
- "Êîñòÿíîé ñâèñòîê Îðîôèíà",
- "Âîëøåáíûé êóëîí Áàðîêà",
- "Ïðîïàâøèé ÷åðåï Ëèãîíî",
- "Ïîñëåäíèé öâåòîê ëåòà",
- "Ïîñëåäíÿÿ äîæäåâàÿ êàïåëüêà âåñíû",
- "Ïîñëåäíÿÿ ñíåæèíêà çèìû",
- "Ïîñëåäíèé ëèñò îñåíè",
- "Âå÷íî ãîðÿ÷èé êóñîê ïåìçû",
- "Ìåãàêðåäèò êîðîëÿ",
- "Ðàçðåøåíèå íà ðàñêîïêè",
- "Êóêîëêà",
- "Êóêëà Ñèëû",
- "Êóêëà Ñêîðîñòè",
- "Êóêëà Ñëîæåíèÿ",
- "Êóêëà Ìåòêîñòè",
- "Êóêëà Óäà÷è",
- "Óñòðîéñòâî",
- "Pass to Castleview",
- "Pass to Sandcaster",
- "Pass to Lakeside",
- "Pass to Necropolis",
- "Pass to Olympus",
- "Key to Great Western Tower",
- "Key to Great Southern Tower",
- "Key to Great Eastern Tower",
- "Key to Great Northern Tower",
- "Key to Ellinger's Tower",
- "Key to Dragon Tower",
- "Key to Darkstone Tower",
- "Key to Temple of Bark",
- "Key to Dungeon of Lost Souls",
- "Key to Ancient Pyramid",
- "Key to Dungeon of Death",
- "Amulet of the Southern Sphinx",
- "Dragon Pharoah's Orb",
- "Cube of Power",
- "Chime of Opening",
- "Gold ID Card",
- "Silver ID Card",
- "Vulture Repellant",
- "Bridle",
- "Enchanted Bridle",
- "Treasure Map (Goto E1 x1, y11)",
- "",
- "Fake Map",
- "Onyx Necklace",
- "Dragon Egg",
- "Tribble",
- "Golden Pegasus Statuette",
- "Golden Dragon Statuette",
- "Golden Griffin Statuette",
- "Chalice of Protection",
- "Jewel of Ages",
- "Songbird of Serenity",
- "Sandro's Heart",
- "Ector's Ring",
- "Vespar's Emerald Handle",
- "Queen Kalindra's Crown",
- "Caleb's Magnifying Glass",
- "Soul Box",
- "Soul Box with Corak inside",
- "Ruby Rock",
- "Emerald Rock",
- "Sapphire Rock",
- "Diamond Rock",
- "Monga Melon",
- "Energy Disk"
- */
const char **QUEST_ITEM_NAMES() {
delete[] _questItemNames;
_questItemNames = new const char *[85] {
- "\x8F\xE0\xA0\xA2\xAE \xA2\xAB\xA0\xA4\xA5\xAD\xA8\xEF \x8D\xEC\xEE\xAA\xA0\xE1\xAB\xAE\xAC",
- "\x95\xE0\xE3\xE1\xE2\xA0\xAB\xEC\xAD\xEB\xA9 \xAA\xAB\xEE\xE7 \xAE\xE2 \x82\xA5\xA4\xEC\xAC\xA8\xAD\xAE\xA9 \xA1\xA0\xE8\xAD\xA8",
- "\x8E\xE2\xAC\xEB\xE7\xAA\xA0 \xA4\xAB\xEF \xA1\xA0\xE8\xAD\xA8 \x84\xA0\xE0\xA7\xAE\xA3\xA0",
- "\x8A\xAB\xEE\xE7 \xAE\xE2 \x81\xA0\xE8\xAD\xA8 \xA2\xEB\xE1\xE8\xA5\xA9 \xAC\xA0\xA3\xA8\xA8",
- "\x84\xE0\xA0\xA3\xAE\xE6\xA5\xAD\xAD\xEB\xA9 \xA0\xAC\xE3\xAB\xA5\xE2 \x91\xA5\xA2\xA5\xE0\xAD\xAE\xA3\xAE \x91\xE4\xA8\xAD\xAA\xE1\xA0",
- "\x8A\xA0\xAC\xA5\xAD\xEC \x92\xEB\xE1\xEF\xE7\xA8 \x93\xA6\xA0\xE1\xAE\xA2",
- "\x8E\xE2\xAF\xA8\xE0\xA0\xEE\xE9\xA8\xA9 \xAA\xA0\xAC\xA5\xAD\xEC \xA3\xAE\xAB\xA5\xAC\xAE\xA2",
- "\x8E\xE2\xAF\xA8\xE0\xA0\xEE\xE9\xA8\xA9 \xAA\xA0\xAC\xA5\xAD\xEC \x9F\xAA\xA0",
- "\x91\xAA\xA8\xAF\xA5\xE2\xE0 \x82\xE0\xA5\xAC\xA5\xAD\xAD\xAE\xA3\xAE \x88\xE1\xAA\xA0\xA6\xA5\xAD\xA8\xEF",
- "\x90\xAE\xA3 \x94\xA0\xAB\xA8\xE1\xE2\xEB",
- "\x9D\xAB\xA8\xAA\xE1\xA8\xE0 \x82\xAE\xE1\xE1\xE2\xA0\xAD\xAE\xA2\xAB\xA5\xAD\xA8\xEF",
- "\x82\xAE\xAB\xE8\xA5\xA1\xAD\xEB\xA9 \xA6\xA5\xA7\xAB \xE4\xA5\xA9",
- "\x84\xA8\xA0\xA4\xA5\xAC\xA0 \xAF\xE0\xA8\xAD\xE6\xA5\xE1\xE1\xEB \x90\xAE\xAA\xE1\xA0\xAD\xEB",
- "\x91\xA2\xEF\xE9\xA5\xAD\xAD\xA0\xEF \x8A\xAD\xA8\xA3\xA0 \x9D\xAB\xEC\xE4\xAE\xA2",
- "\x91\xAA\xA0\xE0\xA0\xA1\xA5\xA9 \x82\xAE\xAF\xAB\xAE\xE9\xA5\xAD\xA8\xEF",
- "\x8A\xE0\xA8\xE1\xE2\xA0\xAB\xAB\xEB \x8F\xEC\xA5\xA7\xAE\xED\xAB\xA5\xAA\xE2\xE0\xA8\xE7\xA5\xE1\xE2\xA2\xA0",
- "\x91\xA2\xA8\xE2\xAE\xAA \x8C\xE3\xA4\xE0\xAE\xE1\xE2\xA8",
- "\x8A\xAE\xE0\xA5\xAD\xEC \xE4\xA8\xE0\xAD\xEB",
- "\x8A\xAE\xE1\xE2\xEF\xAD\xAE\xA9 \xE1\xA2\xA8\xE1\xE2\xAE\xAA \x8E\xE0\xAE\xE4\xA8\xAD\xA0",
- "\x82\xAE\xAB\xE8\xA5\xA1\xAD\xEB\xA9 \xAA\xE3\xAB\xAE\xAD \x81\xA0\xE0\xAE\xAA\xA0",
- "\x8F\xE0\xAE\xAF\xA0\xA2\xE8\xA8\xA9 \xE7\xA5\xE0\xA5\xAF \x8B\xA8\xA3\xAE\xAD\xAE",
- "\x8F\xAE\xE1\xAB\xA5\xA4\xAD\xA8\xA9 \xE6\xA2\xA5\xE2\xAE\xAA \xAB\xA5\xE2\xA0",
- "\x8F\xAE\xE1\xAB\xA5\xA4\xAD\xEF\xEF \xA4\xAE\xA6\xA4\xA5\xA2\xA0\xEF \xAA\xA0\xAF\xA5\xAB\xEC\xAA\xA0 \xA2\xA5\xE1\xAD\xEB",
- "\x8F\xAE\xE1\xAB\xA5\xA4\xAD\xEF\xEF \xE1\xAD\xA5\xA6\xA8\xAD\xAA\xA0 \xA7\xA8\xAC\xEB",
- "\x8F\xAE\xE1\xAB\xA5\xA4\xAD\xA8\xA9 \xAB\xA8\xE1\xE2 \xAE\xE1\xA5\xAD\xA8",
- "\x82\xA5\xE7\xAD\xAE \xA3\xAE\xE0\xEF\xE7\xA8\xA9 \xAA\xE3\xE1\xAE\xAA \xAF\xA5\xAC\xA7\xEB",
- "\x8C\xA5\xA3\xA0\xAA\xE0\xA5\xA4\xA8\xE2 \xAA\xAE\xE0\xAE\xAB\xEF",
- "\x90\xA0\xA7\xE0\xA5\xE8\xA5\xAD\xA8\xA5 \xAD\xA0 \xE0\xA0\xE1\xAA\xAE\xAF\xAA\xA8",
- "\x8A\xE3\xAA\xAE\xAB\xAA\xA0",
- "\x8A\xE3\xAA\xAB\xA0 \x91\xA8\xAB\xEB",
- "\x8A\xE3\xAA\xAB\xA0 \x91\xAA\xAE\xE0\xAE\xE1\xE2\xA8",
- "\x8A\xE3\xAA\xAB\xA0 \x91\xAB\xAE\xA6\xA5\xAD\xA8\xEF",
- "\x8A\xE3\xAA\xAB\xA0 \x8C\xA5\xE2\xAA\xAE\xE1\xE2\xA8",
- "\x8A\xE3\xAA\xAB\xA0 \x93\xA4\xA0\xE7\xA8",
- "\x93\xE1\xE2\xE0\xAE\xA9\xE1\xE2\xA2\xAE",
- "Pass to Castleview",
- "Pass to Sandcaster",
- "Pass to Lakeside",
- "Pass to Necropolis",
- "Pass to Olympus",
- "Key to Great Western Tower",
- "Key to Great Southern Tower",
- "Key to Great Eastern Tower",
- "Key to Great Northern Tower",
- "Key to Ellinger's Tower",
- "Key to Dragon Tower",
- "Key to Darkstone Tower",
- "Key to Temple of Bark",
- "Key to Dungeon of Lost Souls",
- "Key to Ancient Pyramid",
- "Key to Dungeon of Death",
- "Amulet of the Southern Sphinx",
- "Dragon Pharoah's Orb",
- "Cube of Power",
- "Chime of Opening",
- "Gold ID Card",
- "Silver ID Card",
- "Vulture Repellant",
- "Bridle",
- "Enchanted Bridle",
- "Treasure Map (Goto E1 x1, y11)",
- "",
- "Fake Map",
- "Onyx Necklace",
- "Dragon Egg",
- "Tribble",
- "Golden Pegasus Statuette",
- "Golden Dragon Statuette",
- "Golden Griffin Statuette",
- "Chalice of Protection",
- "Jewel of Ages",
- "Songbird of Serenity",
- "Sandro's Heart",
- "Ector's Ring",
- "Vespar's Emerald Handle",
- "Queen Kalindra's Crown",
- "Caleb's Magnifying Glass",
- "Soul Box",
- "Soul Box with Corak inside",
- "Ruby Rock",
- "Emerald Rock",
- "Sapphire Rock",
- "Diamond Rock",
- "Monga Melon",
- "Energy Disk"
+ "\x8F\xE0\xA0\xA2\xAE \xA2\xAB\xA0\xA4\xA5\xAD\xA8\xEF \x8D\xEC\xEE\xAA\xA0\xE1\xAB\xAE\xAC", // "ÐÑаво Ð²Ð»Ð°Ð´ÐµÐ½Ð¸Ñ ÐÑÑкаÑлом",
+ "\x95\xE0\xE3\xE1\xE2\xA0\xAB\xEC\xAD\xEB\xA9 \xAA\xAB\xEE\xE7 \xAE\xE2 \x82\xA5\xA4\xEC\xAC\xA8\xAD\xAE\xA9 \xA1\xA0\xE8\xAD\xA8", // "Ð¥ÑÑÑÑалÑнÑй клÑÑ Ð¾Ñ ÐедÑминой баÑни",
+ "\x8E\xE2\xAC\xEB\xE7\xAA\xA0 \xA4\xAB\xEF \xA1\xA0\xE8\xAD\xA8 \x84\xA0\xE0\xA7\xAE\xA3\xA0", // "ÐÑмÑÑка Ð´Ð»Ñ Ð±Ð°Ñни ÐаÑзога",
+ "\x8A\xAB\xEE\xE7 \xAE\xE2 \x81\xA0\xE8\xAD\xA8 \xA2\xEB\xE1\xE8\xA5\xA9 \xAC\xA0\xA3\xA8\xA8", // "ÐлÑÑ Ð¾Ñ ÐаÑни вÑÑÑей магии",
+ "\x84\xE0\xA0\xA3\xAE\xE6\xA5\xAD\xAD\xEB\xA9 \xA0\xAC\xE3\xAB\xA5\xE2 \x91\xA5\xA2\xA5\xE0\xAD\xAE\xA3\xAE \x91\xE4\xA8\xAD\xAA\xE1\xA0", // "ÐÑагоÑеннÑй амÑÐ»ÐµÑ Ð¡ÐµÐ²ÐµÑного СÑинкÑа",
+ "\x8A\xA0\xAC\xA5\xAD\xEC \x92\xEB\xE1\xEF\xE7\xA8 \x93\xA6\xA0\xE1\xAE\xA2", // "ÐÐ°Ð¼ÐµÐ½Ñ Ð¢ÑÑÑÑи УжаÑов",
+ "\x8E\xE2\xAF\xA8\xE0\xA0\xEE\xE9\xA8\xA9 \xAA\xA0\xAC\xA5\xAD\xEC \xA3\xAE\xAB\xA5\xAC\xAE\xA2", // "ÐÑпиÑаÑÑий ÐºÐ°Ð¼ÐµÐ½Ñ Ð³Ð¾Ð»ÐµÐ¼Ð¾Ð²",
+ "\x8E\xE2\xAF\xA8\xE0\xA0\xEE\xE9\xA8\xA9 \xAA\xA0\xAC\xA5\xAD\xEC \x9F\xAA\xA0", // "ÐÑпиÑаÑÑий ÐºÐ°Ð¼ÐµÐ½Ñ Ð¯ÐºÐ°",
+ "\x91\xAA\xA8\xAF\xA5\xE2\xE0 \x82\xE0\xA5\xAC\xA5\xAD\xAD\xAE\xA3\xAE \x88\xE1\xAA\xA0\xA6\xA5\xAD\xA8\xEF", // "СкипеÑÑ ÐÑеменного ÐÑкажениÑ",
+ "\x90\xAE\xA3 \x94\xA0\xAB\xA8\xE1\xE2\xEB", // "Рог ФалиÑÑÑ",
+ "\x9D\xAB\xA8\xAA\xE1\xA8\xE0 \x82\xAE\xE1\xE1\xE2\xA0\xAD\xAE\xA2\xAB\xA5\xAD\xA8\xEF", // "ÐликÑÐ¸Ñ ÐоÑÑÑановлениÑ",
+ "\x82\xAE\xAB\xE8\xA5\xA1\xAD\xEB\xA9 \xA6\xA5\xA7\xAB \xE4\xA5\xA9", // "ÐолÑебнÑй жезл Ñей",
+ "\x84\xA8\xA0\xA4\xA5\xAC\xA0 \xAF\xE0\xA8\xAD\xE6\xA5\xE1\xE1\xEB \x90\xAE\xAA\xE1\xA0\xAD\xEB", // "Ðиадема пÑинÑеÑÑÑ Ð Ð¾ÐºÑанÑ",
+ "\x91\xA2\xEF\xE9\xA5\xAD\xAD\xA0\xEF \x8A\xAD\xA8\xA3\xA0 \x9D\xAB\xEC\xE4\xAE\xA2", // "СвÑÑÐµÐ½Ð½Ð°Ñ Ðнига ÐлÑÑов",
+ "\x91\xAA\xA0\xE0\xA0\xA1\xA5\xA9 \x82\xAE\xAF\xAB\xAE\xE9\xA5\xAD\xA8\xEF", // "СкаÑабей ÐоплоÑениÑ",
+ "\x8A\xE0\xA8\xE1\xE2\xA0\xAB\xAB\xEB \x8F\xEC\xA5\xA7\xAE\xED\xAB\xA5\xAA\xE2\xE0\xA8\xE7\xA5\xE1\xE2\xA2\xA0", // "ÐÑиÑÑÐ°Ð»Ð»Ñ ÐÑезоÑлекÑÑиÑеÑÑва",
+ "\x91\xA2\xA8\xE2\xAE\xAA \x8C\xE3\xA4\xE0\xAE\xE1\xE2\xA8", // "СвиÑок ÐÑдÑоÑÑи",
+ "\x8A\xAE\xE0\xA5\xAD\xEC \xE4\xA8\xE0\xAD\xEB", // "ÐоÑÐµÐ½Ñ ÑиÑнÑ",
+ "\x8A\xAE\xE1\xE2\xEF\xAD\xAE\xA9 \xE1\xA2\xA8\xE1\xE2\xAE\xAA \x8E\xE0\xAE\xE4\xA8\xAD\xA0", // "ÐоÑÑÑной ÑвиÑÑок ÐÑоÑина",
+ "\x82\xAE\xAB\xE8\xA5\xA1\xAD\xEB\xA9 \xAA\xE3\xAB\xAE\xAD \x81\xA0\xE0\xAE\xAA\xA0", // "ÐолÑебнÑй кÑлон ÐаÑока",
+ "\x8F\xE0\xAE\xAF\xA0\xA2\xE8\xA8\xA9 \xE7\xA5\xE0\xA5\xAF \x8B\xA8\xA3\xAE\xAD\xAE", // "ÐÑопавÑий ÑеÑеп Ðигоно",
+ "\x8F\xAE\xE1\xAB\xA5\xA4\xAD\xA8\xA9 \xE6\xA2\xA5\xE2\xAE\xAA \xAB\xA5\xE2\xA0", // "ÐоÑледний ÑвеÑок леÑа",
+ "\x8F\xAE\xE1\xAB\xA5\xA4\xAD\xEF\xEF \xA4\xAE\xA6\xA4\xA5\xA2\xA0\xEF \xAA\xA0\xAF\xA5\xAB\xEC\xAA\xA0 \xA2\xA5\xE1\xAD\xEB", // "ÐоÑледнÑÑ Ð´Ð¾Ð¶Ð´ÐµÐ²Ð°Ñ ÐºÐ°Ð¿ÐµÐ»Ñка веÑнÑ",
+ "\x8F\xAE\xE1\xAB\xA5\xA4\xAD\xEF\xEF \xE1\xAD\xA5\xA6\xA8\xAD\xAA\xA0 \xA7\xA8\xAC\xEB", // "ÐоÑледнÑÑ Ñнежинка зимÑ",
+ "\x8F\xAE\xE1\xAB\xA5\xA4\xAD\xA8\xA9 \xAB\xA8\xE1\xE2 \xAE\xE1\xA5\xAD\xA8", // "ÐоÑледний лиÑÑ Ð¾Ñени",
+ "\x82\xA5\xE7\xAD\xAE \xA3\xAE\xE0\xEF\xE7\xA8\xA9 \xAA\xE3\xE1\xAE\xAA \xAF\xA5\xAC\xA7\xEB", // "ÐеÑно гоÑÑÑий кÑÑок пемзÑ",
+ "\x8C\xA5\xA3\xA0\xAA\xE0\xA5\xA4\xA8\xE2 \xAA\xAE\xE0\xAE\xAB\xEF", // "ÐегакÑÐµÐ´Ð¸Ñ ÐºÐ¾ÑолÑ",
+ "\x90\xA0\xA7\xE0\xA5\xE8\xA5\xAD\xA8\xA5 \xAD\xA0 \xE0\xA0\xE1\xAA\xAE\xAF\xAA\xA8", // "РазÑеÑение на ÑаÑкопки",
+ "\x8A\xE3\xAA\xAE\xAB\xAA\xA0", // "ÐÑколка",
+ "\x8A\xE3\xAA\xAB\xA0 \x91\xA8\xAB\xEB", // "ÐÑкла СилÑ",
+ "\x8A\xE3\xAA\xAB\xA0 \x91\xAA\xAE\xE0\xAE\xE1\xE2\xA8", // "ÐÑкла СкоÑоÑÑи",
+ "\x8A\xE3\xAA\xAB\xA0 \x91\xAB\xAE\xA6\xA5\xAD\xA8\xEF", // "ÐÑкла СложениÑ",
+ "\x8A\xE3\xAA\xAB\xA0 \x8C\xA5\xE2\xAA\xAE\xE1\xE2\xA8", // "ÐÑкла ÐеÑкоÑÑи",
+ "\x8A\xE3\xAA\xAB\xA0 \x93\xA4\xA0\xE7\xA8", // "ÐÑкла УдаÑи",
+ "\x93\xE1\xE2\xE0\xAE\xA9\xE1\xE2\xA2\xAE", // "УÑÑÑойÑÑво",
+ "Pass to Castleview", // "Pass to Castleview",
+ "Pass to Sandcaster", // "Pass to Sandcaster",
+ "Pass to Lakeside", // "Pass to Lakeside",
+ "Pass to Necropolis", // "Pass to Necropolis",
+ "Pass to Olympus", // "Pass to Olympus",
+ "Key to Great Western Tower", // "Key to Great Western Tower",
+ "Key to Great Southern Tower", // "Key to Great Southern Tower",
+ "Key to Great Eastern Tower", // "Key to Great Eastern Tower",
+ "Key to Great Northern Tower", // "Key to Great Northern Tower",
+ "Key to Ellinger's Tower", // "Key to Ellinger's Tower",
+ "Key to Dragon Tower", // "Key to Dragon Tower",
+ "Key to Darkstone Tower", // "Key to Darkstone Tower",
+ "Key to Temple of Bark", // "Key to Temple of Bark",
+ "Key to Dungeon of Lost Souls", // "Key to Dungeon of Lost Souls",
+ "Key to Ancient Pyramid", // "Key to Ancient Pyramid",
+ "Key to Dungeon of Death", // "Key to Dungeon of Death",
+ "Amulet of the Southern Sphinx", // "Amulet of the Southern Sphinx",
+ "Dragon Pharoah's Orb", // "Dragon Pharoah's Orb",
+ "Cube of Power", // "Cube of Power",
+ "Chime of Opening", // "Chime of Opening",
+ "Gold ID Card", // "Gold ID Card",
+ "Silver ID Card", // "Silver ID Card",
+ "Vulture Repellant", // "Vulture Repellant",
+ "Bridle", // "Bridle",
+ "Enchanted Bridle", // "Enchanted Bridle",
+ "Treasure Map (Goto E1 x1, y11)", // "Treasure Map (Goto E1 x1, y11)",
+ "", // "",
+ "Fake Map", // "Fake Map",
+ "Onyx Necklace", // "Onyx Necklace",
+ "Dragon Egg", // "Dragon Egg",
+ "Tribble", // "Tribble",
+ "Golden Pegasus Statuette", // "Golden Pegasus Statuette",
+ "Golden Dragon Statuette", // "Golden Dragon Statuette",
+ "Golden Griffin Statuette", // "Golden Griffin Statuette",
+ "Chalice of Protection", // "Chalice of Protection",
+ "Jewel of Ages", // "Jewel of Ages",
+ "Songbird of Serenity", // "Songbird of Serenity",
+ "Sandro's Heart", // "Sandro's Heart",
+ "Ector's Ring", // "Ector's Ring",
+ "Vespar's Emerald Handle", // "Vespar's Emerald Handle",
+ "Queen Kalindra's Crown", // "Queen Kalindra's Crown",
+ "Caleb's Magnifying Glass", // "Caleb's Magnifying Glass",
+ "Soul Box", // "Soul Box",
+ "Soul Box with Corak inside", // "Soul Box with Corak inside",
+ "Ruby Rock", // "Ruby Rock",
+ "Emerald Rock", // "Emerald Rock",
+ "Sapphire Rock", // "Sapphire Rock",
+ "Diamond Rock", // "Diamond Rock",
+ "Monga Melon", // "Monga Melon",
+ "Energy Disk" // "Energy Disk"
};
return _questItemNames;
}
@@ -2024,28 +1208,17 @@ public:
return _questItemNamesSwords;
}
- /*
- "\t000\v007\x3""c%s íå ìîæåò èñïîëüçîâàòü %s!"
- */
const char *NOT_PROFICIENT() {
- return "\t000\v007\x3"
- "c%s \xAD\xA5 \xAC\xAE\xA6\xA5\xE2 \xA8\xE1\xAF\xAE\xAB\xEC\xA7\xAE\xA2\xA0\xE2\xEC %s!";
+ return "\t000\v007\x3""c%s \xAD\xA5 \xAC\xAE\xA6\xA5\xE2 \xA8\xE1\xAF\xAE\xAB\xEC\xA7\xAE\xA2\xA0\xE2\xEC %s!"; // "\t000\v007\x3""c%s не Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑ %s!"
}
- /*
- "\x3""c\n\t000Íåò âåùåé."
- */
const char *NO_ITEMS_AVAILABLE() {
- return "\x3"
- "c\n\t000\x8D\xA5\xE2 \xA2\xA5\xE9\xA5\xA9.";
+ return "\x3""c\n\t000\x8D\xA5\xE2 \xA2\xA5\xE9\xA5\xA9."; // "\x3""c\n\t000ÐÐµÑ Ð²ÐµÑей."
}
- /*
- "Îðóæèå", "Áðîíÿ", "Óêðàøåíèÿ", "Ðàçíîå"
- */
const char **CATEGORY_NAMES() {
delete[] _categoryNames;
- _categoryNames = new const char *[4] { "\x8E\xE0\xE3\xA6\xA8\xA5", "\x81\xE0\xAE\xAD\xEF", "\x93\xAA\xE0\xA0\xE8\xA5\xAD\xA8\xEF", "\x90\xA0\xA7\xAD\xAE\xA5" };
+ _categoryNames = new const char *[4] { "\x8E\xE0\xE3\xA6\xA8\xA5", "\x81\xE0\xAE\xAD\xEF", "\x93\xAA\xE0\xA0\xE8\xA5\xAD\xA8\xEF", "\x90\xA0\xA7\xAD\xAE\xA5" }; // "ÐÑÑжие", "ÐÑонÑ", "УкÑаÑениÑ", "Разное"
return _categoryNames;
}
@@ -2061,358 +1234,196 @@ public:
"\x2%s%s%s%s%s%s%s%s%s\x1\fd";
}
- /*
- "\x1\fd\r\x3""l\v000\t000%s - %s\t150Çîëîòî - %lu%s\x3""l\v011"
- "\x2%s%s%s%s%s%s%s%s%s\x1\fd";
- */
const char *X_FOR_Y_GOLD() {
- return "\x1\fd\r\x3"
- "l\v000\t000%s - %s\t150\x87\xAE\xAB\xAE\xE2\xAE - %lu%s\x3"
- "l\v011"
- "\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+ return "\x1\fd\r\x3""l\v000\t000%s - %s\t150\x87\xAE\xAB\xAE\xE2\xAE - %lu%s\x3""l\v011" // "\x1\fd\r\x3""l\v000\t000%s - %s\t150ÐолоÑо - %lu%s\x3""l\v011"
+ "\x2%s%s%s%s%s%s%s%s%s\x1\fd"; // "\x2%s%s%s%s%s%s%s%s%s\x1\fd";
}
- /*
- "\x3""r\t000Çàðÿäîâ\x3""l"
- */
const char *FMT_CHARGES() {
- return "\x3"
- "r\t000\x87\xA0\xE0\xEF\xA4\xAE\xA2\x3"
- "l";
+ return "\x3""r\t000\x87\xA0\xE0\xEF\xA4\xAE\xA2\x3""l"; // "\x3""r\t000ÐаÑÑдов\x3""l"
}
- /*
- "\x1\fd\r\x3""l\v000\t000%s\t150Çîëîòî - %lu\x3""r\t000Öåíà"
- "\x3""l\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
- */
const char *AVAILABLE_GOLD_COST() {
- return "\x1\fd\r\x3"
- "l\v000\t000%s\t150\x87\xAE\xAB\xAE\xE2\xAE - %lu\x3"
- "r\t000\x96\xA5\xAD\xA0"
- "\x3"
- "l\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
+ return "\x1\fd\r\x3""l\v000\t000%s\t150\x87\xAE\xAB\xAE\xE2\xAE - %lu\x3""r\t000\x96\xA5\xAD\xA0" // "\x1\fd\r\x3""l\v000\t000%s\t150ÐолоÑо - %lu\x3""r\t000Цена"
+ "\x3""l\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd"; // "\x3""l\v011\x2%s%s%s%s%s%s%s%s%s\x1\fd";
}
- /*
- "Çàðÿäîâ"
- */
const char *CHARGES() {
- return "\x87\xA0\xE0\xEF\xA4\xAE\xA2";
+ return "\x87\xA0\xE0\xEF\xA4\xAE\xA2"; // "ÐаÑÑдов"
}
- /*
- "Öåíà"
- */
const char *COST() {
- return "\x96\xA5\xAD\xA0";
+ return "\x96\xA5\xAD\xA0"; // "Цена"
}
- /*
- "íàäåòü", "ñíÿòü", "èñïîëüçîâàòü", "âûêèíóòü", "çà÷àðîâàòü", "ïåðåçàðÿäèòü",
- "Ïðåâðàòèòü â çîëîòî"
- */
const char **ITEM_ACTIONS() {
delete[] _itemActions;
_itemActions = new const char *[7] {
- "\xAD\xA0\xA4\xA5\xE2\xEC", "\xE1\xAD\xEF\xE2\xEC", "\xA8\xE1\xAF\xAE\xAB\xEC\xA7\xAE\xA2\xA0\xE2\xEC", "\xA2\xEB\xAA\xA8\xAD\xE3\xE2\xEC", "\xA7\xA0\xE7\xA0\xE0\xAE\xA2\xA0\xE2\xEC", "\xAF\xA5\xE0\xA5\xA7\xA0\xE0\xEF\xA4\xA8\xE2\xEC",
- "\x8F\xE0\xA5\xA2\xE0\xA0\xE2\xA8\xE2\xEC \xA2 \xA7\xAE\xAB\xAE\xE2\xAE"
+ "\xAD\xA0\xA4\xA5\xE2\xEC", "\xE1\xAD\xEF\xE2\xEC", "\xA8\xE1\xAF\xAE\xAB\xEC\xA7\xAE\xA2\xA0\xE2\xEC", "\xA2\xEB\xAA\xA8\xAD\xE3\xE2\xEC", "\xA7\xA0\xE7\xA0\xE0\xAE\xA2\xA0\xE2\xEC", "\xAF\xA5\xE0\xA5\xA7\xA0\xE0\xEF\xA4\xA8\xE2\xEC", // "надеÑÑ", "ÑнÑÑÑ", "иÑполÑзоваÑÑ", "вÑкинÑÑÑ", "заÑаÑоваÑÑ", "пеÑезаÑÑдиÑÑ",
+ "\x8F\xE0\xA5\xA2\xE0\xA0\xE2\xA8\xE2\xEC \xA2 \xA7\xAE\xAB\xAE\xE2\xAE" // "ÐÑевÑаÑиÑÑ Ð² золоÑо"
};
return _itemActions;
}
- /*
- "\v000Êàêîé ïðåäìåò âû æåëàåòå %s?"
- */
const char *WHICH_ITEM() {
- return "\v000\x8A\xA0\xAA\xAE\xA9 \xAF\xE0\xA5\xA4\xAC\xA5\xE2 \xA2\xEB \xA6\xA5\xAB\xA0\xA5\xE2\xA5 %s?";
+ return "\v000\x8A\xA0\xAA\xAE\xA9 \xAF\xE0\xA5\xA4\xAC\xA5\xE2 \xA2\xEB \xA6\xA5\xAB\xA0\xA5\xE2\xA5 %s?"; // "\v000Ðакой пÑÐµÐ´Ð¼ÐµÑ Ð²Ñ Ð¶ÐµÐ»Ð°ÐµÑе %s?"
}
- /*
- "\v007×åãî òîðîïèøüñÿ?\n"
- "Ïîäîæäè, ïîêà íå âûáåðåøüñÿ îòñþäà!";
- */
const char *WHATS_YOUR_HURRY() {
- return "\v007\x97\xA5\xA3\xAE \xE2\xAE\xE0\xAE\xAF\xA8\xE8\xEC\xE1\xEF?\n"
- "\x8F\xAE\xA4\xAE\xA6\xA4\xA8, \xAF\xAE\xAA\xA0 \xAD\xA5 \xA2\xEB\xA1\xA5\xE0\xA5\xE8\xEC\xE1\xEF ®âáî¤ !";
+ return "\v007\x97\xA5\xA3\xAE \xE2\xAE\xE0\xAE\xAF\xA8\xE8\xEC\xE1\xEF?\n" // "\v007Чего ÑоÑопиÑÑÑÑ?\n"
+ "\x8F\xAE\xA4\xAE\xA6\xA4\xA8, \xAF\xAE\xAA\xA0 \xAD\xA5 \xA2\xEB\xA1\xA5\xE0\xA5\xE8\xEC\xE1\xEF \xA2\xE2\xE1\xEE\xA4\xA0!"; // "Ðодожди, пока не вÑбеÑеÑÑÑÑ Ð¾ÑÑÑда!";
}
- /*
- "\v007×òîáû èñïîëüçîâàòü ïðåäìåò â áèòâå, íàæìèòå íà êíîïêó 'Èñï' íà áîêîâîé ïàíåëè."
- */
const char *USE_ITEM_IN_COMBAT() {
- return "\v007\x97\xE2\xAE\xA1\xEB \xA8\xE1\xAF\xAE\xAB\xEC\xA7\xAE\xA2\xA0\xE2\xEC \xAF\xE0\xA5\xA4\xAC\xA5\xE2 \xA2 \xA1\xA8\xE2\xA2\xA5, \xAD\xA0\xA6\xAC\xA8\xE2\xA5 \xAD\xA0 \xAA\xAD\xAE\xAF\xAA\xE3 '\x88\xE1\xAF' \xAD\xA0 \xA1\xAE\xAA\xAE\xA2\xAE\xA9 \xAF\xA0\xAD\xA5\xAB\xA8.";
+ return "\v007\x97\xE2\xAE\xA1\xEB \xA8\xE1\xAF\xAE\xAB\xEC\xA7\xAE\xA2\xA0\xE2\xEC \xAF\xE0\xA5\xA4\xAC\xA5\xE2 \xA2 \xA1\xA8\xE2\xA2\xA5, \xAD\xA0\xA6\xAC\xA8\xE2\xA5 \xAD\xA0 \xAA\xAD\xAE\xAF\xAA\xE3 '\x88\xE1\xAF' \xAD\xA0 \xA1\xAE\xAA\xAE\xA2\xAE\xA9 \xAF\xA0\xAD\xA5\xAB\xA8."; // "\v007ЧÑÐ¾Ð±Ñ Ð¸ÑполÑзоваÑÑ Ð¿ÑÐµÐ´Ð¼ÐµÑ Ð² биÑве, нажмиÑе на ÐºÐ½Ð¾Ð¿ÐºÑ 'ÐÑп' на боковой панели."
}
- /*
- "\v005\x3""c%s\fdíå èìååò îñîáûõ ñâîéñòâ!"
- */
const char *NO_SPECIAL_ABILITIES() {
- return "\v005\x3"
- "c%s\fd\xAD\xA5 \xA8\xAC\xA5\xA5\xE2 \xAE\xE1\xAE\xA1\xEB\xE5 \xE1\xA2\xAE\xA9\xE1\xE2\xA2!";
+ return "\v005\x3""c%s\fd\xAD\xA5 \xA8\xAC\xA5\xA5\xE2 \xAE\xE1\xAE\xA1\xEB\xE5 \xE1\xA2\xAE\xA9\xE1\xE2\xA2!"; // "\v005\x3""c%s\fdне Ð¸Ð¼ÐµÐµÑ Ð¾ÑобÑÑ
ÑвойÑÑв!"
}
- /*
- "\x3""c\v007Çàêëèíàíèå %s íåëüçÿ èñïîëüçîâàòü â áèòâå!"
- */
const char *CANT_CAST_WHILE_ENGAGED() {
- return "\x3"
- "c\v007\x87\xA0\xAA\xAB\xA8\xAD\xA0\xAD\xA8\xA5 %s \xAD\xA5\xAB\xEC\xA7\xEF \xA8\xE1\xAF\xAE\xAB\xEC\xA7\xAE\xA2\xA0\xE2\xEC \xA2 \xA1\xA8\xE2\xA2\xA5!";
+ return "\x3""c\v007\x87\xA0\xAA\xAB\xA8\xAD\xA0\xAD\xA8\xA5 %s \xAD\xA5\xAB\xEC\xA7\xEF \xA8\xE1\xAF\xAE\xAB\xEC\xA7\xAE\xA2\xA0\xE2\xEC \xA2 \xA1\xA8\xE2\xA2\xA5!"; // "\x3""c\v007Ðаклинание %s нелÑÐ·Ñ Ð¸ÑполÑзоваÑÑ Ð² биÑве!"
}
- /*
- "\x3""c\v007Âû íå ìîæåòå íàäåòü áîëüøå äâóõ %s!"
- */
const char *EQUIPPED_ALL_YOU_CAN() {
- return "\x3"
- "c\v007\x82\xEB \xAD\xA5 \xAC\xAE\xA6\xA5\xE2\xA5 \xAD\xA0\xA4\xA5\xE2\xEC \xA1\xAE\xAB\xEC\xE8\xA5 \xA4\xA2\xE3\xE5 %s!";
+ return "\x3""c\v007\x82\xEB \xAD\xA5 \xAC\xAE\xA6\xA5\xE2\xA5 \xAD\xA0\xA4\xA5\xE2\xEC \xA1\xAE\xAB\xEC\xE8\xA5 \xA4\xA2\xE3\xE5 %s!"; // "\x3""c\v007ÐÑ Ð½Ðµ можеÑе надеÑÑ Ð±Ð¾Ð»ÑÑе двÑÑ
%s!"
}
- /*
- "\x3""c\v007Âàì íóæíî ñíÿòü %s÷òîáû íàäåòü %s\b!"
- */
const char *REMOVE_X_TO_EQUIP_Y() {
- return "\x3"
- "c\v007\x82\xA0\xAC \xAD\xE3\xA6\xAD\xAE \xE1\xAD\xEF\xE2\xEC %s\xE7\xE2\xAE\xA1\xEB \xAD\xA0\xA4\xA5\xE2\xEC %s\b!";
+ return "\x3""c\v007\x82\xA0\xAC \xAD\xE3\xA6\xAD\xAE \xE1\xAD\xEF\xE2\xEC %s\xE7\xE2\xAE\xA1\xEB \xAD\xA0\xA4\xA5\xE2\xEC %s\b!"; // "\x3""c\v007Ðам нÑжно ÑнÑÑÑ %sÑÑÐ¾Ð±Ñ Ð½Ð°Ð´ÐµÑÑ %s\b!"
}
- /*
- "êîëåö"
- */
const char *RING() {
- return "\xAA\xAE\xAB\xA5\xE6";
+ return "\xAA\xAE\xAB\xA5\xE6"; // "колеÑ"
}
- /*
- "ìåäàëåé"
- */
const char *MEDAL() {
- return "\xAC\xA5\xA4\xA0\xAB\xA5\xA9";
+ return "\xAC\xA5\xA4\xA0\xAB\xA5\xA9"; // "медалей"
}
- /*
- "\x3""cÂû íå ìîæåòå ñíÿòü ïðîêëÿòóþ âåùü!"
- */
const char *CANNOT_REMOVE_CURSED_ITEM() {
- return "\x3"
- "c\x82\xEB \xAD\xA5 \xAC\xAE\xA6\xA5\xE2\xA5 \xE1\xAD\xEF\xE2\xEC \xAF\xE0\xAE\xAA\xAB\xEF\xE2\xE3\xEE \xA2\xA5\xE9\xEC!";
+ return "\x3""c\x82\xEB \xAD\xA5 \xAC\xAE\xA6\xA5\xE2\xA5 \xE1\xAD\xEF\xE2\xEC \xAF\xE0\xAE\xAA\xAB\xEF\xE2\xE3\xEE \xA2\xA5\xE9\xEC!"; // "\x3""cÐÑ Ð½Ðµ можеÑе ÑнÑÑÑ Ð¿ÑоклÑÑÑÑ Ð²ÐµÑÑ!"
}
- /*
- "\x3""cÂû íå ìîæåòå âûêèíóòü ïðîêëÿòóþ âåùü!"
- */
const char *CANNOT_DISCARD_CURSED_ITEM() {
- return "\x3"
- "c\x82\xEB \xAD\xA5 \xAC\xAE\xA6\xA5\xE2\xA5 \xA2\xEB\xAA\xA8\xAD\xE3\xE2\xEC \xAF\xE0\xAE\xAA\xAB\xEF\xE2\xE3\xEE \xA2\xA5\xE9\xEC!";
+ return "\x3""c\x82\xEB \xAD\xA5 \xAC\xAE\xA6\xA5\xE2\xA5 \xA2\xEB\xAA\xA8\xAD\xE3\xE2\xEC \xAF\xE0\xAE\xAA\xAB\xEF\xE2\xE3\xEE \xA2\xA5\xE9\xEC!"; // "\x3""cÐÑ Ð½Ðµ можеÑе вÑкинÑÑÑ Ð¿ÑоклÑÑÑÑ Ð²ÐµÑÑ!"
}
- /*
- "\v000\t000\x3""lÂûêèíóòü íàâñåãäà? %s"
- */
const char *PERMANENTLY_DISCARD() {
- return "\v000\t000\x3"
- "l\x82\xEB\xAA\xA8\xAD\xE3\xE2\xEC \xAD\xA0\xA2\xE1\xA5\xA3\xA4\xA0? %s";
+ return "\v000\t000\x3""l\x82\xEB\xAA\xA8\xAD\xE3\xE2\xEC \xAD\xA0\xA2\xE1\xA5\xA3\xA4\xA0? %s"; // "\v000\t000\x3""lÐÑкинÑÑÑ Ð½Ð°Ð²Ñегда? %s"
}
- /*
- "\v005\x3""c\fd%s! Âàø ðþêçàê ïîëîí."
- */
const char *BACKPACK_IS_FULL() {
- return "\v005\x3"
- "c\fd%s! \x82\xA0\xE8 \xE0\xEE\xAA\xA7\xA0\xAA \xAF\xAE\xAB\xAE\xAD.";
+ return "\v005\x3""c\fd%s! \x82\xA0\xE8 \xE0\xEE\xAA\xA7\xA0\xAA \xAF\xAE\xAB\xAE\xAD."; // "\v005\x3""c\fd%s! ÐÐ°Ñ ÑÑкзак полон."
}
- /*
- "\v010\t000\x3""c%s! Âàø ðþêçàê ïîëîí.",
- "\v010\t000\x3""c%s! Âàø ðþêçàê ïîëîí.",
- "\v010\t000\x3""c%s! Âàø ðþêçàê ïîëîí.",
- "\v010\t000\x3""c%s! Âàø ðþêçàê ïîëîí."
- */
const char **CATEGORY_BACKPACK_IS_FULL() {
delete[] _categoryBackpackIsFull;
_categoryBackpackIsFull = new const char *[4] {
- "\v010\t000\x3"
- "c%s! \x82\xA0\xE8 \xE0\xEE\xAA\xA7\xA0\xAA \xAF\xAE\xAB\xAE\xAD.",
- "\v010\t000\x3"
- "c%s! \x82\xA0\xE8 \xE0\xEE\xAA\xA7\xA0\xAA \xAF\xAE\xAB\xAE\xAD.",
- "\v010\t000\x3"
- "c%s! \x82\xA0\xE8 \xE0\xEE\xAA\xA7\xA0\xAA \xAF\xAE\xAB\xAE\xAD.",
- "\v010\t000\x3"
- "c%s! \x82\xA0\xE8 \xE0\xEE\xAA\xA7\xA0\xAA \xAF\xAE\xAB\xAE\xAD."
+ "\v010\t000\x3""c%s! \x82\xA0\xE8 \xE0\xEE\xAA\xA7\xA0\xAA \xAF\xAE\xAB\xAE\xAD.", // "\v010\t000\x3""c%s! ÐÐ°Ñ ÑÑкзак полон.",
+ "\v010\t000\x3""c%s! \x82\xA0\xE8 \xE0\xEE\xAA\xA7\xA0\xAA \xAF\xAE\xAB\xAE\xAD.", // "\v010\t000\x3""c%s! ÐÐ°Ñ ÑÑкзак полон.",
+ "\v010\t000\x3""c%s! \x82\xA0\xE8 \xE0\xEE\xAA\xA7\xA0\xAA \xAF\xAE\xAB\xAE\xAD.", // "\v010\t000\x3""c%s! ÐÐ°Ñ ÑÑкзак полон.",
+ "\v010\t000\x3""c%s! \x82\xA0\xE8 \xE0\xEE\xAA\xA7\xA0\xAA \xAF\xAE\xAB\xAE\xAD." // "\v010\t000\x3""c%s! ÐÐ°Ñ ÑÑкзак полон."
};
return _categoryBackpackIsFull;
}
- /*
- "\x3""l\v000\t000\fdÊóïèòü %s\fd çà %lu çîëîò%s?"
- */
const char *BUY_X_FOR_Y_GOLD() {
- return "\x3"
- "l\v000\t000\fd\x8A\xE3\xAF\xA8\xE2\xEC %s\fd \xA7\xA0 %lu \xA7\xAE\xAB\xAE\xE2%s?";
+ return "\x3""l\v000\t000\fd\x8A\xE3\xAF\xA8\xE2\xEC %s\fd \xA7\xA0 %lu \xA7\xAE\xAB\xAE\xE2%s?"; // "\x3""l\v000\t000\fdÐÑпиÑÑ %s\fd за %lu золоÑ%s?"
}
- /*
- "\x3""l\v000\t000\fdÏðîäàòü %s\fd çà %lu çîëîò%s?"
- */
const char *SELL_X_FOR_Y_GOLD() {
- return "\x3"
- "l\v000\t000\fd\x8F\xE0\xAE\xA4\xA0\xE2\xEC %s\fd \xA7\xA0 %lu \xA7\xAE\xAB\xAE\xE2%s?";
+ return "\x3""l\v000\t000\fd\x8F\xE0\xAE\xA4\xA0\xE2\xEC %s\fd \xA7\xA0 %lu \xA7\xAE\xAB\xAE\xE2%s?"; // "\x3""l\v000\t000\fdÐÑодаÑÑ %s\fd за %lu золоÑ%s?"
}
- /*
- "îé", "ûõ"
- */
const char **SELL_X_FOR_Y_GOLD_ENDINGS() {
delete[] _sellXForYGoldEndings;
- _sellXForYGoldEndings = new const char *[2] { "\xAE\xA9", "\xEB\xE5" };
+ _sellXForYGoldEndings = new const char *[2] { "\xAE\xA9", "\xEB\xE5" }; // "ой", "ÑÑ
"
return _sellXForYGoldEndings;
}
- /*
- "\v005\x3""c\fdÍàñ íå èíòåðåñóåò %s\fd!"
- */
const char *NO_NEED_OF_THIS() {
- return "\v005\x3"
- "c\fd\x8D\xA0\xE1 \xAD\xA5 \xA8\xAD\xE2\xA5\xE0\xA5\xE1\xE3\xA5\xE2 %s\fd!";
+ return "\v005\x3""c\fd\x8D\xA0\xE1 \xAD\xA5 \xA8\xAD\xE2\xA5\xE0\xA5\xE1\xE3\xA5\xE2 %s\fd!"; // "\v005\x3""c\fdÐÐ°Ñ Ð½Ðµ инÑеÑеÑÑÐµÑ %s\fd!"
}
- /*
- "\v007\x3""c\fdÍåâîçìîæíî ïåðåçàðÿäèòü.\n%s"
- */
const char *NOT_RECHARGABLE() {
- return "\v007\x3"
- "c\fd\x8D\xA5\xA2\xAE\xA7\xAC\xAE\xA6\xAD\xAE \xAF\xA5\xE0\xA5\xA7\xA0\xE0\xEF\xA4\xA8\xE2\xEC.\n%s";
+ return "\v007\x3""c\fd\x8D\xA5\xA2\xAE\xA7\xAC\xAE\xA6\xAD\xAE \xAF\xA5\xE0\xA5\xA7\xA0\xE0\xEF\xA4\xA8\xE2\xEC.\n%s"; // "\v007\x3""c\fdÐевозможно пеÑезаÑÑдиÑÑ.\n%s"
}
- /*
- "\v007\t000\x3""cÍåâîçìîæíî çà÷àðîâàòü.\n%s"
- */
const char *NOT_ENCHANTABLE() {
- return "\v007\t000\x3"
- "c\x8D\xA5\xA2\xAE\xA7\xAC\xAE\xA6\xAD\xAE \xA7\xA0\xE7\xA0\xE0\xAE\xA2\xA0\xE2\xEC.\n%s";
+ return "\v007\t000\x3""c\x8D\xA5\xA2\xAE\xA7\xAC\xAE\xA6\xAD\xAE \xA7\xA0\xE7\xA0\xE0\xAE\xA2\xA0\xE2\xEC.\n%s"; // "\v007\t000\x3""cÐевозможно заÑаÑоваÑÑ.\n%s"
}
- /*
- "Çàêëèíàíèå íå ñðàáîòàëî!"
- */
const char *SPELL_FAILED() {
- return "\x87\xA0\xAA\xAB\xA8\xAD\xA0\xAD\xA8\xA5 \xAD\xA5 \xE1\xE0\xA0\xA1\xAE\xE2\xA0\xAB\xAE!";
+ return "\x87\xA0\xAA\xAB\xA8\xAD\xA0\xAD\xA8\xA5 \xAD\xA5 \xE1\xE0\xA0\xA1\xAE\xE2\xA0\xAB\xAE!"; // "Ðаклинание не ÑÑабоÑало!"
}
- /*
- "\fdÝòîò ïðåäìåò íå ñëîìàí!"
- */
const char *ITEM_NOT_BROKEN() {
- return "\fd\x9D\xE2\xAE\xE2 \xAF\xE0\xA5\xA4\xAC\xA5\xE2 \xAD\xA5 \xE1\xAB\xAE\xAC\xA0\xAD!";
+ return "\fd\x9D\xE2\xAE\xE2 \xAF\xE0\xA5\xA4\xAC\xA5\xE2 \xAD\xA5 \xE1\xAB\xAE\xAC\xA0\xAD!"; // "\fdÐÑÐ¾Ñ Ð¿ÑÐµÐ´Ð¼ÐµÑ Ð½Ðµ Ñломан!"
}
- /*
- "Ïî÷èíèòü", "Îïîçíàòü"
- */
const char **FIX_IDENTIFY() {
delete[] _fixIdentify;
- _fixIdentify = new const char *[2] { "\x8F\xAE\xE7\xA8\xAD\xA8\xE2\xEC", "\x8E\xAF\xAE\xA7\xAD\xA0\xE2\xEC" };
+ _fixIdentify = new const char *[2] { "\x8F\xAE\xE7\xA8\xAD\xA8\xE2\xEC", "\x8E\xAF\xAE\xA7\xAD\xA0\xE2\xEC" }; // "ÐоÑиниÑÑ", "ÐпознаÑÑ"
return _fixIdentify;
}
- /*
- "\x3""l\v000\t000%s %s\fd çà %lu çîëîò%s?"
- */
const char *FIX_IDENTIFY_GOLD() {
- return "\x3"
- "l\v000\t000%s %s\fd \xA7\xA0 %lu \xA7\xAE\xAB\xAE\xE2%s?";
+ return "\x3""l\v000\t000%s %s\fd \xA7\xA0 %lu \xA7\xAE\xAB\xAE\xE2%s?"; // "\x3""l\v000\t000%s %s\fd за %lu золоÑ%s?"
}
- /*
- "\fd\v000\t000\x3""cÎïîçíàòü ïðåäìåò\x3""l\n"
- "\n"
- "\v012%s\fd\n"
- "\n"
- "%s";
- */
const char *IDENTIFY_ITEM_MSG() {
- return "\fd\v000\t000\x3"
- "c\x8E\xAF\xAE\xA7\xAD\xA0\xE2\xEC \xAF\xE0\xA5\xA4\xAC\xA5\xE2\x3"
- "l\n"
- "\n"
- "\v012%s\fd\n"
- "\n"
- "%s";
- }
-
- /*
- "Èñïîëüçóþò êëàññû\t132:\t140%s\n"
- "Ìîäèôèêàòîð óðîíà\t132:\t140%s\n"
- "Ôèçè÷åñêèé óðîí\t132:\t140%s\n"
- "Óðîí îò Ñòèõèé\t132:\t140%s\n"
- "Çàùèòà îò Ñòèõèé\t132:\t140%s\n"
- "Êëàññ çàùèòû\t132:\t140%s\n"
- "Áîíóñ ñâîéñòâà\t132:\t140%s\n"
- "Îñîáîå ñâîéñòâî\t132:\t140%s";
- */
+ return "\fd\v000\t000\x3""c\x8E\xAF\xAE\xA7\xAD\xA0\xE2\xEC \xAF\xE0\xA5\xA4\xAC\xA5\xE2\x3""l\n" // "\fd\v000\t000\x3""cÐпознаÑÑ Ð¿ÑедмеÑ\x3""l\n"
+ "\n" // "\n"
+ "\v012%s\fd\n" // "\v012%s\fd\n"
+ "\n" // "\n"
+ "%s"; // "%s";
+ }
+
const char *ITEM_DETAILS() {
- return "\x88\xE1\xAF\xAE\xAB\xEC\xA7\xE3\xEE\xE2 \xAA\xAB\xA0\xE1\xE1\xEB\t132:\t140%s\n"
- "\x8C\xAE\xA4\xA8\xE4\xA8\xAA\xA0\xE2\xAE\xE0 \xE3\xE0\xAE\xAD\xA0\t132:\t140%s\n"
- "\x94\xA8\xA7\xA8\xE7\xA5\xE1\xAA\xA8\xA9 \xE3\xE0\xAE\xAD\t132:\t140%s\n"
- "\x93\xE0\xAE\xAD \xAE\xE2 \x91\xE2\xA8\xE5\xA8\xA9\t132:\t140%s\n"
- "\x87\xA0\xE9\xA8\xE2\xA0 \xAE\xE2 \x91\xE2\xA8\xE5\xA8\xA9\t132:\t140%s\n"
- "\x8A\xAB\xA0\xE1\xE1 \xA7\xA0\xE9\xA8\xE2\xEB\t132:\t140%s\n"
- "\x81\xAE\xAD\xE3\xE1 \xE1\xA2\xAE\xA9\xE1\xE2\xA2\xA0\t132:\t140%s\n"
- "\x8E\xE1\xAE\xA1\xAE\xA5 \xE1\xA2\xAE\xA9\xE1\xE2\xA2\xAE\t132:\t140%s";
- }
-
- /*
- "Âñå"
- */
+ return "\x88\xE1\xAF\xAE\xAB\xEC\xA7\xE3\xEE\xE2 \xAA\xAB\xA0\xE1\xE1\xEB\t132:\t140%s\n" // "ÐÑполÑзÑÑÑ ÐºÐ»Ð°ÑÑÑ\t132:\t140%s\n"
+ "\x8C\xAE\xA4\xA8\xE4\xA8\xAA\xA0\xE2\xAE\xE0 \xE3\xE0\xAE\xAD\xA0\t132:\t140%s\n" // "ÐодиÑикаÑÐ¾Ñ ÑÑона\t132:\t140%s\n"
+ "\x94\xA8\xA7\xA8\xE7\xA5\xE1\xAA\xA8\xA9 \xE3\xE0\xAE\xAD\t132:\t140%s\n" // "ФизиÑеÑкий ÑÑон\t132:\t140%s\n"
+ "\x93\xE0\xAE\xAD \xAE\xE2 \x91\xE2\xA8\xE5\xA8\xA9\t132:\t140%s\n" // "УÑон Ð¾Ñ Ð¡ÑиÑ
ий\t132:\t140%s\n"
+ "\x87\xA0\xE9\xA8\xE2\xA0 \xAE\xE2 \x91\xE2\xA8\xE5\xA8\xA9\t132:\t140%s\n" // "ÐаÑиÑа Ð¾Ñ Ð¡ÑиÑ
ий\t132:\t140%s\n"
+ "\x8A\xAB\xA0\xE1\xE1 \xA7\xA0\xE9\xA8\xE2\xEB\t132:\t140%s\n" // "ÐлаÑÑ Ð·Ð°ÑиÑÑ\t132:\t140%s\n"
+ "\x81\xAE\xAD\xE3\xE1 \xE1\xA2\xAE\xA9\xE1\xE2\xA2\xA0\t132:\t140%s\n" // "ÐонÑÑ ÑвойÑÑва\t132:\t140%s\n"
+ "\x8E\xE1\xAE\xA1\xAE\xA5 \xE1\xA2\xAE\xA9\xE1\xE2\xA2\xAE\t132:\t140%s"; // "ÐÑобое ÑвойÑÑво\t132:\t140%s";
+ }
+
const char *ALL() {
- return "\x82\xE1\xA5";
+ return "\x82\xE1\xA5"; // "ÐÑе"
}
- /*
- "Íåò"
- */
const char *FIELD_NONE() {
- return "\x8D\xA5\xE2";
+ return "\x8D\xA5\xE2"; // "ÐеÑ"
}
const char *DAMAGE_X_TO_Y() {
return "%d-%d";
}
- /*
- %+d óðîíà îò %s"
- */
const char *ELEMENTAL_XY_DAMAGE() {
- return "%+d \xE3\xE0\xAE\xAD\xA0 \xAE\xE2 %s";
+ return "%+d \xE3\xE0\xAE\xAD\xA0 \xAE\xE2 %s"; // %+d ÑÑона Ð¾Ñ %s"
}
const char *ATTR_XY_BONUS() {
return "%+d %s";
}
- /*
- "x3 ïðîòèâ %s"
- */
const char *EFFECTIVE_AGAINST() {
- return "x3 \xAF\xE0\xAE\xE2\xA8\xA2 %s";
+ return "x3 \xAF\xE0\xAE\xE2\xA8\xA2 %s"; // "x3 пÑоÑив %s"
}
- /*
- "\r\x2\x3""c\v021\t017\f37Â\fdåùè\t085\f37Ç\fdàäàíèÿ\t153"
- "Ç\f37à\fdìåòêè\t221Ââåðõ\t255Âíèç"
- "\t289Âûõîä";
- */
const char *QUESTS_DIALOG_TEXT() {
- return "\r\x2\x3"
- "c\v021\t017\f37\x82\fd\xA5\xE9\xA8\t085\f37\x87\fd\xA0\xA4\xA0\xAD\xA8\xEF\t153"
- "\x87\f37\xA0\fd\xAC\xA5\xE2\xAA\xA8\t221\x82\xA2\xA5\xE0\xE5\t255\x82\xAD\xA8\xA7"
- "\t289\x82\xEB\xE5\xAE\xA4";
+ return "\r\x2\x3""c\v021\t017\f37\x82\fd\xA5\xE9\xA8\t085\f37\x87\fd\xA0\xA4\xA0\xAD\xA8\xEF\t153" // "\r\x2\x3""c\v021\t017\f37Ð\fdеÑи\t085\f37Ð\fdаданиÑ\t153"
+ "\x87\f37\xA0\fd\xAC\xA5\xE2\xAA\xA8\t221\x82\xA2\xA5\xE0\xE5\t255\x82\xAD\xA8\xA7" // "Ð\f37а\fdмеÑки\t221ÐвеÑÑ
\t255Ðниз"
+ "\t289\x82\xEB\xE5\xAE\xA4"; // "\t289ÐÑÑ
од";
}
- /*
- "\b \b*-- \f04Îáëàêà Êñèíà\fd --"
- */
const char *CLOUDS_OF_XEEN_LINE() {
- return "\b \b*-- \f04\x8E\xA1\xAB\xA0\xAA\xA0 \x8A\xE1\xA8\xAD\xA0\fd --";
+ return "\b \b*-- \f04\x8E\xA1\xAB\xA0\xAA\xA0 \x8A\xE1\xA8\xAD\xA0\fd --"; // "\b \b*-- \f04Ðблака ÐÑина\fd --"
}
const char *DARKSIDE_OF_XEEN_LINE() {
@@ -2423,374 +1434,185 @@ public:
return "\b \b*-- \f04Swords of Xeen\fd --";
}
- /*
- "\r\x1\fd\x3""c\v000\t000Ïðåäìåòû çàäàíèé\x3""l\x2\n"
- "\n"
- "\x3""cÍåò ïðåäìåòîâ";
- */
const char *NO_QUEST_ITEMS() {
- return "\r\x1\fd\x3"
- "c\v000\t000\x8F\xE0\xA5\xA4\xAC\xA5\xE2\xEB \xA7\xA0\xA4\xA0\xAD\xA8\xA9\x3"
- "l\x2\n"
- "\n"
- "\x3"
- "c\x8D\xA5\xE2 \xAF\xE0\xA5\xA4\xAC\xA5\xE2\xAE\xA2";
+ return "\r\x1\fd\x3""c\v000\t000\x8F\xE0\xA5\xA4\xAC\xA5\xE2\xEB \xA7\xA0\xA4\xA0\xAD\xA8\xA9\x3""l\x2\n" // "\r\x1\fd\x3""c\v000\t000ÐÑедмеÑÑ Ð·Ð°Ð´Ð°Ð½Ð¸Ð¹\x3""l\x2\n"
+ "\n" // "\n"
+ "\x3""c\x8D\xA5\xE2 \xAF\xE0\xA5\xA4\xAC\xA5\xE2\xAE\xA2"; // "\x3""cÐÐµÑ Ð¿ÑедмеÑов";
}
- /*
- "\x3""c\v000\t000\n"
- "\n"
- "Íåò çàäàíèé";
- */
const char *NO_CURRENT_QUESTS() {
- return "\x3"
- "c\v000\t000\n"
- "\n"
- "\x8D\xA5\xE2 \xA7\xA0\xA4\xA0\xAD\xA8\xA9";
+ return "\x3""c\v000\t000\n" // "\x3""c\v000\t000\n"
+ "\n" // "\n"
+ "\x8D\xA5\xE2 \xA7\xA0\xA4\xA0\xAD\xA8\xA9"; // "ÐÐµÑ Ð·Ð°Ð´Ð°Ð½Ð¸Ð¹";
}
- /*
- "\x3""cÇàìåòîê íåò"
- */
const char *NO_AUTO_NOTES() {
- return "\x3"
- "c\x87\xA0\xAC\xA5\xE2\xAE\xAA \xAD\xA5\xE2";
- }
-
- /*
- "\r\x1\fd\x3""c\v000\t000Ïðåäìåòû çàäàíèé\x3""l\x2\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s";
- */
+ return "\x3""c\x87\xA0\xAC\xA5\xE2\xAE\xAA \xAD\xA5\xE2"; // "\x3""cÐамеÑок неÑ"
+ }
+
const char *QUEST_ITEMS_DATA() {
- return "\r\x1\fd\x3"
- "c\v000\t000\x8F\xE0\xA5\xA4\xAC\xA5\xE2\xEB \xA7\xA0\xA4\xA0\xAD\xA8\xA9\x3"
- "l\x2\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s\n"
- "\f04 * \fd%s";
- }
-
- /*
- "\r\x1\fd\x3""c\t000\v000Çàäàíèÿ\x3""l\x2\n"
- "%s\n"
- "\n"
- "%s\n"
- "\n"
- "%s";
- */
+ return "\r\x1\fd\x3""c\v000\t000\x8F\xE0\xA5\xA4\xAC\xA5\xE2\xEB \xA7\xA0\xA4\xA0\xAD\xA8\xA9\x3""l\x2\n" // "\r\x1\fd\x3""c\v000\t000ÐÑедмеÑÑ Ð·Ð°Ð´Ð°Ð½Ð¸Ð¹\x3""l\x2\n"
+ "\f04 * \fd%s\n" // "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n" // "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n" // "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n" // "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n" // "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n" // "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n" // "\f04 * \fd%s\n"
+ "\f04 * \fd%s\n" // "\f04 * \fd%s\n"
+ "\f04 * \fd%s"; // "\f04 * \fd%s";
+ }
+
const char *CURRENT_QUESTS_DATA() {
- return "\r\x1\fd\x3"
- "c\t000\v000\x87\xA0\xA4\xA0\xAD\xA8\xEF\x3"
- "l\x2\n"
- "%s\n"
- "\n"
- "%s\n"
- "\n"
- "%s";
- }
-
- /*
- "\r\x1\fd\x3""c\t000\v000Çàìåòêè\x3""l\x2\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l\n"
- "%s\x3""l";
- */
+ return "\r\x1\fd\x3""c\t000\v000\x87\xA0\xA4\xA0\xAD\xA8\xEF\x3""l\x2\n" // "\r\x1\fd\x3""c\t000\v000ÐаданиÑ\x3""l\x2\n"
+ "%s\n" // "%s\n"
+ "\n" // "\n"
+ "%s\n" // "%s\n"
+ "\n" // "\n"
+ "%s"; // "%s";
+ }
+
const char *AUTO_NOTES_DATA() {
- return "\r\x1\fd\x3"
- "c\t000\v000\x87\xA0\xAC\xA5\xE2\xAA\xA8\x3"
- "l\x2\n"
- "%s\x3"
- "l\n"
- "%s\x3"
- "l\n"
- "%s\x3"
- "l\n"
- "%s\x3"
- "l\n"
- "%s\x3"
- "l\n"
- "%s\x3"
- "l\n"
- "%s\x3"
- "l\n"
- "%s\x3"
- "l\n"
- "%s\x3"
- "l";
+ return "\r\x1\fd\x3""c\t000\v000\x87\xA0\xAC\xA5\xE2\xAA\xA8\x3""l\x2\n" // "\r\x1\fd\x3""c\t000\v000ÐамеÑки\x3""l\x2\n"
+ "%s\x3""l\n" // "%s\x3""l\n"
+ "%s\x3""l\n" // "%s\x3""l\n"
+ "%s\x3""l\n" // "%s\x3""l\n"
+ "%s\x3""l\n" // "%s\x3""l\n"
+ "%s\x3""l\n" // "%s\x3""l\n"
+ "%s\x3""l\n" // "%s\x3""l\n"
+ "%s\x3""l\n" // "%s\x3""l\n"
+ "%s\x3""l\n" // "%s\x3""l\n"
+ "%s\x3""l"; // "%s\x3""l";
}
- /*
- "\v000\t000Ïðîøëî 8 ÷àñîâ. Îòäûõ çàêîí÷åí\n"
- "%s\n"
- "Áûëî ñúåäåíî %d ïèùè.";
- */
const char *REST_COMPLETE() {
- return "\v000\t000\x8F\xE0\xAE\xE8\xAB\xAE 8 \xE7\xA0\xE1\xAE\xA2. \x8E\xE2\xA4\xEB\xE5 \xA7\xA0\xAA\xAE\xAD\xE7\xA5\xAD\n"
- "%s\n"
- "\x81\xEB\xAB\xAE \xE1\xEA\xA5\xA4\xA5\xAD\xAE %d \xAF\xA8\xE9\xA8.";
+ return "\v000\t000\x8F\xE0\xAE\xE8\xAB\xAE 8 \xE7\xA0\xE1\xAE\xA2. \x8E\xE2\xA4\xEB\xE5 \xA7\xA0\xAA\xAE\xAD\xE7\xA5\xAD\n" // "\v000\t000ÐÑоÑло 8 ÑаÑов. ÐÑдÑÑ
законÑен\n"
+ "%s\n" // "%s\n"
+ "\x81\xEB\xAB\xAE \xE1\xEA\xA5\xA4\xA5\xAD\xAE %d \xAF\xA8\xE9\xA8."; // "ÐÑло ÑÑедено %d пиÑи.";
}
- /*
- "\f07Îòðÿä ãîëîäàåò!\fd"
- */
const char *PARTY_IS_STARVING() {
- return "\f07\x8E\xE2\xE0\xEF\xA4 \xA3\xAE\xAB\xAE\xA4\xA0\xA5\xE2!\fd";
+ return "\f07\x8E\xE2\xE0\xEF\xA4 \xA3\xAE\xAB\xAE\xA4\xA0\xA5\xE2!\fd"; // "\f07ÐÑÑÑд голодаеÑ!\fd"
}
- /*
- "Çäîðîâüå è ìàíà âîññòàíîâëåíû"
- */
const char *HIT_SPELL_POINTS_RESTORED() {
- return "\x87\xA4\xAE\xE0\xAE\xA2\xEC\xA5 \xA8 \xAC\xA0\xAD\xA0 \xA2\xAE\xE1\xE1\xE2\xA0\xAD\xAE\xA2\xAB\xA5\xAD\xEB";
+ return "\x87\xA4\xAE\xE0\xAE\xA2\xEC\xA5 \xA8 \xAC\xA0\xAD\xA0 \xA2\xAE\xE1\xE1\xE2\xA0\xAD\xAE\xA2\xAB\xA5\xAD\xEB"; // "ÐдоÑовÑе и мана воÑÑÑановленÑ"
}
- /*
- "Çäåñü ñëèøêîì îïàñíî îòäûõàòü!"
- */
const char *TOO_DANGEROUS_TO_REST() {
- return "\x87\xA4\xA5\xE1\xEC \xE1\xAB\xA8\xE8\xAA\xAE\xAC \xAE\xAF\xA0\xE1\xAD\xAE \xAE\xE2\xA4\xEB\xE5\xA0\xE2\xEC!";
+ return "\x87\xA4\xA5\xE1\xEC \xE1\xAB\xA8\xE8\xAA\xAE\xAC \xAE\xAF\xA0\xE1\xAD\xAE \xAE\xE2\xA4\xEB\xE5\xA0\xE2\xEC!"; // "ÐдеÑÑ ÑлиÑком опаÑно оÑдÑÑ
аÑÑ!"
}
- /*
- "Êòî-òî èç îòðÿäà ìîæåò óìåðåòü. Âû âñ¸ ðàâíî æåëàåòå îòäîõíóòü?"
- */
const char *SOME_CHARS_MAY_DIE() {
- return "\x8A\xE2\xAE-\xE2\xAE \xA8\xA7 \xAE\xE2\xE0\xEF\xA4\xA0 \xAC\xAE\xA6\xA5\xE2 \xE3\xAC\xA5\xE0\xA5\xE2\xEC. \x82\xEB \xA2\xE1\xF1 \xE0\xA0\xA2\xAD\xAE \xA6\xA5\xAB\xA0\xA5\xE2\xA5 \xAE\xE2\xA4\xAE\xE5\xAD\xE3\xE2\xEC?";
+ return "\x8A\xE2\xAE-\xE2\xAE \xA8\xA7 \xAE\xE2\xE0\xEF\xA4\xA0 \xAC\xAE\xA6\xA5\xE2 \xE3\xAC\xA5\xE0\xA5\xE2\xEC. \x82\xEB \xA2\xE1\xF1 \xE0\xA0\xA2\xAD\xAE \xA6\xA5\xAB\xA0\xA5\xE2\xA5 \xAE\xE2\xA4\xAE\xE5\xAD\xE3\xE2\xEC?"; // "ÐÑо-Ñо из оÑÑÑда Ð¼Ð¾Ð¶ÐµÑ ÑмеÑеÑÑ. ÐÑ Ð²ÑÑ Ñавно желаеÑе оÑдоÑ
нÑÑÑ?"
}
- /*
- "\r\t010\v005Êîãî âûãíàòü?"
- */
const char *DISMISS_WHOM() {
- return "\r\t010\v005\x8A\xAE\xA3\xAE \xA2\xEB\xA3\xAD\xA0\xE2\xEC?";
+ return "\r\t010\v005\x8A\xAE\xA3\xAE \xA2\xEB\xA3\xAD\xA0\xE2\xEC?"; // "\r\t010\v005Ðого вÑгнаÑÑ?"
}
- /*
- "Âû íå ìîæåòå âûãíàòü ñâîåãî ïîñëåäíåãî ïåðñîíàæà!"
- */
const char *CANT_DISMISS_LAST_CHAR() {
- return "\x82\xEB \xAD\xA5 \xAC\xAE\xA6\xA5\xE2\xA5 \xA2\xEB\xA3\xAD\xA0\xE2\xEC \xE1\xA2\xAE\xA5\xA3\xAE \xAF\xAE\xE1\xAB\xA5\xA4\xAD\xA5\xA3\xAE \xAF\xA5\xE0\xE1\xAE\xAD\xA0\xA6\xA0!";
+ return "\x82\xEB \xAD\xA5 \xAC\xAE\xA6\xA5\xE2\xA5 \xA2\xEB\xA3\xAD\xA0\xE2\xEC \xE1\xA2\xAE\xA5\xA3\xAE \xAF\xAE\xE1\xAB\xA5\xA4\xAD\xA5\xA3\xAE \xAF\xA5\xE0\xE1\xAE\xAD\xA0\xA6\xA0!"; // "ÐÑ Ð½Ðµ можеÑе вÑгнаÑÑ Ñвоего поÑледнего пеÑÑонажа!"
}
const char *DELETE_CHAR_WITH_ELDER_WEAPON() {
return "\v000\t000This character has an Elder Weapon and cannot be deleted!";
}
- /*
- "Âûãíàòü", "óäàëèòü"
- */
const char **REMOVE_DELETE() {
delete[] _removeDelete;
- _removeDelete = new const char *[2] { "\x82\xEB\xA3\xAD\xA0\xE2\xEC", "\xE3\xA4\xA0\xAB\xA8\xE2\xEC" };
+ _removeDelete = new const char *[2] { "\x82\xEB\xA3\xAD\xA0\xE2\xEC", "\xE3\xA4\xA0\xAB\xA8\xE2\xEC" }; // "ÐÑгнаÑÑ", "ÑдалиÑÑ"
return _removeDelete;
}
- /*
- "\x3""l\t010\v005Êîãî %s?"
- */
const char *REMOVE_OR_DELETE_WHICH() {
- return "\x3"
- "l\t010\v005\x8A\xAE\xA3\xAE %s?";
+ return "\x3""l\t010\v005\x8A\xAE\xA3\xAE %s?"; // "\x3""l\t010\v005Ðого %s?"
}
- /*
- "\v007Âàø îòðÿä ïîëîí!"
- */
const char *YOUR_PARTY_IS_FULL() {
- return "\v007\x82\xA0\xE8 \xAE\xE2\xE0\xEF\xA4 \xAF\xAE\xAB\xAE\xAD!";
+ return "\v007\x82\xA0\xE8 \xAE\xE2\xE0\xEF\xA4 \xAF\xAE\xAB\xAE\xAD!"; // "\v007ÐÐ°Ñ Ð¾ÑÑÑд полон!"
}
- /*
- "\v000\t000Ýòîò ïåðñîíàæ íå ìîæåò áûòü óäàë¸í, òàê êàê ó íåãî Ìå÷-óáèéöà Êñèíà!"
- */
const char *HAS_SLAYER_SWORD() {
- return "\v000\t000\x9D\xE2\xAE\xE2 \xAF\xA5\xE0\xE1\xAE\xAD\xA0\xA6 \xAD\xA5 \xAC\xAE\xA6\xA5\xE2 \xA1\xEB\xE2\xEC \xE3\xA4\xA0\xAB\xF1\xAD, \xE2\xA0\xAA \xAA\xA0\xAA \xE3 \xAD\xA5\xA3\xAE \x8C\xA5\xE7-\xE3\xA1\xA8\xA9\xE6\xA0 \x8A\xE1\xA8\xAD\xA0!";
+ return "\v000\t000\x9D\xE2\xAE\xE2 \xAF\xA5\xE0\xE1\xAE\xAD\xA0\xA6 \xAD\xA5 \xAC\xAE\xA6\xA5\xE2 \xA1\xEB\xE2\xEC \xE3\xA4\xA0\xAB\xF1\xAD, \xE2\xA0\xAA \xAA\xA0\xAA \xE3 \xAD\xA5\xA3\xAE \x8C\xA5\xE7-\xE3\xA1\xA8\xA9\xE6\xA0 \x8A\xE1\xA8\xAD\xA0!"; // "\v000\t000ÐÑÐ¾Ñ Ð¿ÐµÑÑонаж не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑдалÑн, Ñак как Ñ Ð½ÐµÐ³Ð¾ ÐеÑ-ÑбийÑа ÐÑина!"
}
- /*
- "%s %s. Âû óâåðåíû, ÷òî õîòèòå óäàëèòü ýòîãî ãåðîÿ?"
- */
const char *SURE_TO_DELETE_CHAR() {
- return "%s %s. \x82\xEB \xE3\xA2\xA5\xE0\xA5\xAD\xEB, \xE7\xE2\xAE \xE5\xAE\xE2\xA8\xE2\xA5 \xE3\xA4\xA0\xAB\xA8\xE2\xEC \xED\xE2\xAE\xA3\xAE \xA3\xA5\xE0\xAE\xEF?";
+ return "%s %s. \x82\xEB \xE3\xA2\xA5\xE0\xA5\xAD\xEB, \xE7\xE2\xAE \xE5\xAE\xE2\xA8\xE2\xA5 \xE3\xA4\xA0\xAB\xA8\xE2\xEC \xED\xE2\xAE\xA3\xAE \xA3\xA5\xE0\xAE\xEF?"; // "%s %s. ÐÑ ÑвеÑенÑ, ÑÑо Ñ
оÑиÑе ÑдалиÑÑ ÑÑого геÑоÑ?"
}
- /*
- "\f04\x3""c\x2\t144\v119\f37Á\f04ðîñîê\t144\v149\f37Ñ\f04îçä"
- "\t144\v179\f37ESC\f04\x3""l\x1\t195\v021Ñè\f37ë\f04"
- "\t195\v045\f37È\f04íò\t195\v069\f37Ä\f04óõ\t195\v093Ñë\f37æ\f04"
- "\t195\v116Ñ\f37ê\f04ð\t195\v140\f37Ì\f04òê\t195\v164\f37Ó\f04ä÷%s";
- */
const char *CREATE_CHAR_DETAILS() {
- return "\f04\x3"
- "c\x2\t144\v119\f37\x81\f04\xE0\xAE\xE1\xAE\xAA\t144\v149\f37\x91\f04\xAE\xA7\xA4"
- "\t144\v179\f37ESC\f04\x3"
- "l\x1\t195\v021\x91\xA8\f37\xAB\f04"
- "\t195\v045\f37\x88\f04\xAD\xE2\t195\v069\f37\x84\f04\xE3\xE5\t195\v093\x91\xAB\f37\xA6\f04"
- "\t195\v116\x91\f37\xAA\f04\xE0\t195\v140\f37\x8C\f04\xE2\xAA\t195\v164\f37\x93\f04\xA4\xE7%s";
- }
-
- /*
- "\f04\x3""l\t017\v148Ðàñà\t055: %s\n"
- "\t017Ïîë\t055: %s\n"
- "\t017Êëàññ\t055:\n"
- "\x3""r\t215\v031%d\t215\v055%d\t215\v079%d\t215\v103%d\t215\v127%d"
- "\t215\v151%d\t215\v175%d\x3""l\t242\v020\f%2dÐûöàðü\t242\v031\f%2d"
- "Ïàëàäèí\t242\v042\f%2dËó÷íèê\t242\v053\f%2dÊëèðèê\t242\v064\f%2d"
- "Ìàã\t242\v075\f%2dÂîð\t242\v086\f%2dÍèíäçÿ\t242\v097\f%2d"
- "Âàðâàð\t242\v108\f%2dÄðóèä\t242\v119\f%2dÑëåäîïûò\f04\x3""c"
- "\t265\v142Íàâûêè\x2\x3""l\t223\v155%s\t223\v170%s%s\x1";
- */
+ return "\f04\x3""c\x2\t144\v119\f37\x81\f04\xE0\xAE\xE1\xAE\xAA\t144\v149\f37\x91\f04\xAE\xA7\xA4" // "\f04\x3""c\x2\t144\v119\f37Ð\f04ÑоÑок\t144\v149\f37С\f04озд"
+ "\t144\v179\f37ESC\f04\x3""l\x1\t195\v021\x91\xA8\f37\xAB\f04" // "\t144\v179\f37ESC\f04\x3""l\x1\t195\v021Си\f37л\f04"
+ "\t195\v045\f37\x88\f04\xAD\xE2\t195\v069\f37\x84\f04\xE3\xE5\t195\v093\x91\xAB\f37\xA6\f04" // "\t195\v045\f37Ð\f04нÑ\t195\v069\f37Ð\f04ÑÑ
\t195\v093Сл\f37ж\f04"
+ "\t195\v116\x91\f37\xAA\f04\xE0\t195\v140\f37\x8C\f04\xE2\xAA\t195\v164\f37\x93\f04\xA4\xE7%s"; // "\t195\v116С\f37к\f04Ñ\t195\v140\f37Ð\f04Ñк\t195\v164\f37У\f04дÑ%s";
+ }
+
const char *NEW_CHAR_STATS() {
- return "\f04\x3"
- "l\t017\v148\x90\xA0\xE1\xA0\t055: %s\n"
- "\t017\x8F\xAE\xAB\t055: %s\n"
- "\t017\x8A\xAB\xA0\xE1\xE1\t055:\n"
- "\x3"
- "r\t215\v031%d\t215\v055%d\t215\v079%d\t215\v103%d\t215\v127%d"
- "\t215\v151%d\t215\v175%d\x3"
- "l\t242\v020\f%2d\x90\xEB\xE6\xA0\xE0\xEC\t242\v031\f%2d"
- "\x8F\xA0\xAB\xA0\xA4\xA8\xAD\t242\v042\f%2d\x8B\xE3\xE7\xAD\xA8\xAA\t242\v053\f%2d\x8A\xAB\xA8\xE0\xA8\xAA\t242\v064\f%2d"
- "\x8C\xA0\xA3\t242\v075\f%2d\x82\xAE\xE0\t242\v086\f%2d\x8D\xA8\xAD\xA4\xA7\xEF\t242\v097\f%2d"
- "\x82\xA0\xE0\xA2\xA0\xE0\t242\v108\f%2d\x84\xE0\xE3\xA8\xA4\t242\v119\f%2d\x91\xAB\xA5\xA4\xAE\xAF\xEB\xE2\f04\x3"
- "c"
- "\t265\v142\x8D\xA0\xA2\xEB\xAA\xA8\x2\x3"
- "l\t223\v155%s\t223\v170%s%s\x1";
+ return "\f04\x3""l\t017\v148\x90\xA0\xE1\xA0\t055: %s\n" // "\f04\x3""l\t017\v148РаÑа\t055: %s\n"
+ "\t017\x8F\xAE\xAB\t055: %s\n" // "\t017Ðол\t055: %s\n"
+ "\t017\x8A\xAB\xA0\xE1\xE1\t055:\n" // "\t017ÐлаÑÑ\t055:\n"
+ "\x3""r\t215\v031%d\t215\v055%d\t215\v079%d\t215\v103%d\t215\v127%d" // "\x3""r\t215\v031%d\t215\v055%d\t215\v079%d\t215\v103%d\t215\v127%d"
+ "\t215\v151%d\t215\v175%d\x3""l\t242\v020\f%2d\x90\xEB\xE6\xA0\xE0\xEC\t242\v031\f%2d" // "\t215\v151%d\t215\v175%d\x3""l\t242\v020\f%2dÐ ÑÑаÑÑ\t242\v031\f%2d"
+ "\x8F\xA0\xAB\xA0\xA4\xA8\xAD\t242\v042\f%2d\x8B\xE3\xE7\xAD\xA8\xAA\t242\v053\f%2d\x8A\xAB\xA8\xE0\xA8\xAA\t242\v064\f%2d" // "Ðаладин\t242\v042\f%2dÐÑÑник\t242\v053\f%2dÐлиÑик\t242\v064\f%2d"
+ "\x8C\xA0\xA3\t242\v075\f%2d\x82\xAE\xE0\t242\v086\f%2d\x8D\xA8\xAD\xA4\xA7\xEF\t242\v097\f%2d" // "Ðаг\t242\v075\f%2dÐоÑ\t242\v086\f%2dÐиндзÑ\t242\v097\f%2d"
+ "\x82\xA0\xE0\xA2\xA0\xE0\t242\v108\f%2d\x84\xE0\xE3\xA8\xA4\t242\v119\f%2d\x91\xAB\xA5\xA4\xAE\xAF\xEB\xE2\f04\x3""c" // "ÐаÑваÑ\t242\v108\f%2dÐÑÑид\t242\v119\f%2dСледопÑÑ\f04\x3""c"
+ "\t265\v142\x8D\xA0\xA2\xEB\xAA\xA8\x2\x3""l\t223\v155%s\t223\v170%s%s\x1"; // "\t265\v142ÐавÑки\x2\x3""l\t223\v155%s\t223\v170%s%s\x1";
}
- /*
- "\x3""cÂâåäèòå èìÿ ïåðñîíàæà\n\n"
- */
const char *NAME_FOR_NEW_CHARACTER() {
- return "\x3"
- "c\x82\xA2\xA5\xA4\xA8\xE2\xA5 \xA8\xAC\xEF \xAF\xA5\xE0\xE1\xAE\xAD\xA0\xA6\xA0\n\n";
+ return "\x3""c\x82\xA2\xA5\xA4\xA8\xE2\xA5 \xA8\xAC\xEF \xAF\xA5\xE0\xE1\xAE\xAD\xA0\xA6\xA0\n\n"; // "\x3""cÐведиÑе Ð¸Ð¼Ñ Ð¿ÐµÑÑонажа\n\n"
}
- /*
- "\v003\x3""cÏåðåä ñîõðàíåíèåì âûáåðèòå êëàññ.\x3""l"
- */
const char *SELECT_CLASS_BEFORE_SAVING() {
- return "\v003\x3"
- "c\x8F\xA5\xE0\xA5\xA4 \xE1\xAE\xE5\xE0\xA0\xAD\xA5\xAD\xA8\xA5\xAC \xA2\xEB\xA1\xA5\xE0\xA8\xE2\xA5 \xAA\xAB\xA0\xE1\xE1.\x3"
- "l";
+ return "\v003\x3""c\x8F\xA5\xE0\xA5\xA4 \xE1\xAE\xE5\xE0\xA0\xAD\xA5\xAD\xA8\xA5\xAC \xA2\xEB\xA1\xA5\xE0\xA8\xE2\xA5 \xAA\xAB\xA0\xE1\xE1.\x3""l"; // "\v003\x3""cÐеÑед ÑоÑ
Ñанением вÑбеÑиÑе клаÑÑ.\x3""l"
}
- /*
- "Ïîìåíÿòü %s ñ..."
- */
const char *EXCHANGE_ATTR_WITH() {
- return "\x8F\xAE\xAC\xA5\xAD\xEF\xE2\xEC %s \xE1...";
+ return "\x8F\xAE\xAC\xA5\xAD\xEF\xE2\xEC %s \xE1..."; // "ÐоменÑÑÑ %s Ñ..."
}
- /*
- "\r\f00\x3""c\v000\t000\x2%s%s%s\x1"
- */
const char *COMBAT_DETAILS() {
- return "\r\f00\x3"
- "c\v000\t000\x2%s%s%s\x1";
+ return "\r\f00\x3""c\v000\t000\x2%s%s%s\x1"; // "\r\f00\x3""c\v000\t000\x2%s%s%s\x1"
}
- /*
- "\x3""c\v000Íåäîñòàòî÷íî %s, ÷òîáû çàêëèíàòü %s"
- */
const char *NOT_ENOUGH_TO_CAST() {
- return "\x3"
- "c\v000\x8D\xA5\xA4\xAE\xE1\xE2\xA0\xE2\xAE\xE7\xAD\xAE %s, \xE7\xE2\xAE\xA1\xEB \xA7\xA0\xAA\xAB\xA8\xAD\xA0\xE2\xEC %s";
+ return "\x3""c\v000\x8D\xA5\xA4\xAE\xE1\xE2\xA0\xE2\xAE\xE7\xAD\xAE %s, \xE7\xE2\xAE\xA1\xEB \xA7\xA0\xAA\xAB\xA8\xAD\xA0\xE2\xEC %s"; // "\x3""c\v000ÐедоÑÑаÑоÑно %s, ÑÑÐ¾Ð±Ñ Ð·Ð°ÐºÐ»Ð¸Ð½Ð°ÑÑ %s"
}
- /*
- "î÷êîâ ìàãèè", "àëìàçîâ"
- */
const char **SPELL_CAST_COMPONENTS() {
delete[] _spellCastComponents;
- _spellCastComponents = new const char *[2] { "\xAE\xE7\xAA\xAE\xA2 \xAC\xA0\xA3\xA8\xA8", "\xA0\xAB\xAC\xA0\xA7\xAE\xA2" };
+ _spellCastComponents = new const char *[2] { "\xAE\xE7\xAA\xAE\xA2 \xAC\xA0\xA3\xA8\xA8", "\xA0\xAB\xAC\xA0\xA7\xAE\xA2" }; // "оÑков магии", "алмазов"
return _spellCastComponents;
}
- /*
- "\r\x2\x3""c\v122\t013\f37Ç\fdàêë\t040\f37Í\fdîâ"
- "\t067ESC\x1\t000\v000\x3""cÇàêëèíàíèå\n"
- "\n"
- "%s\x3""c\n"
- "\n"
- " Ãîòîâîå:\x3""c\n"
- "\n"
- "\f09%s\fd\x2\x3""l\n"
- "\v082Öåíà\x3""r\t000%u/%u\x3""l\n"
- "Òåê ÎÌ\x3""r\t000%u\x1";
- */
const char *CAST_SPELL_DETAILS() {
- return "\r\x2\x3"
- "c\v122\t013\f37\x87\fd\xA0\xAA\xAB\t040\f37\x8D\fd\xAE\xA2"
- "\t067ESC\x1\t000\v000\x3"
- "c\x87\xA0\xAA\xAB\xA8\xAD\xA0\xAD\xA8\xA5\n"
- "\n"
- "%s\x3"
- "c\n"
- "\n"
- " \x83\xAE\xE2\xAE\xA2\xAE\xA5:\x3"
- "c\n"
- "\n"
- "\f09%s\fd\x2\x3"
- "l\n"
- "\v082\x96\xA5\xAD\xA0\x3"
- "r\t000%u/%u\x3"
- "l\n"
- "\x92\xA5\xAA \x8E\x8C\x3"
- "r\t000%u\x1";
+ return "\r\x2\x3""c\v122\t013\f37\x87\fd\xA0\xAA\xAB\t040\f37\x8D\fd\xAE\xA2" // "\r\x2\x3""c\v122\t013\f37Ð\fdакл\t040\f37Ð\fdов"
+ "\t067ESC\x1\t000\v000\x3""c\x87\xA0\xAA\xAB\xA8\xAD\xA0\xAD\xA8\xA5\n" // "\t067ESC\x1\t000\v000\x3""cÐаклинание\n"
+ "\n" // "\n"
+ "%s\x3""c\n" // "%s\x3""c\n"
+ "\n" // "\n"
+ " \x83\xAE\xE2\xAE\xA2\xAE\xA5:\x3""c\n" // " ÐоÑовое:\x3""c\n"
+ "\n" // "\n"
+ "\f09%s\fd\x2\x3""l\n" // "\f09%s\fd\x2\x3""l\n"
+ "\v082\x96\xA5\xAD\xA0\x3""r\t000%u/%u\x3""l\n" // "\v082Цена\x3""r\t000%u/%u\x3""l\n"
+ "\x92\xA5\xAA \x8E\x8C\x3""r\t000%u\x1"; // "Тек ÐÐ\x3""r\t000%u\x1";
}
- /*
- "\x3""cÍàéäåíî:\n"
- "\n"
- "\x3""r\t000%lu Çîë\n"
- "%lu Àëìç";
- */
const char *PARTY_FOUND() {
- return "\x3"
- "c\x8D\xA0\xA9\xA4\xA5\xAD\xAE:\n"
- "\n"
- "\x3"
- "r\t000%lu \x87\xAE\xAB\n"
- "%lu \x80\xAB\xAC\xA7";
+ return "\x3""c\x8D\xA0\xA9\xA4\xA5\xAD\xAE:\n" // "\x3""cÐайдено:\n"
+ "\n" // "\n"
+ "\x3""r\t000%lu \x87\xAE\xAB\n" // "\x3""r\t000%lu Ðол\n"
+ "%lu \x80\xAB\xAC\xA7"; // "%lu Ðлмз";
}
- /*
- "\v007\f12Âíèìàíèå! Ðþêçàêè ïåðåïîëíåíû!\fd\n"
- "Íàæìèòå êëàâèøó";
- */
const char *BACKPACKS_FULL_PRESS_KEY() {
- return "\v007\f12\x82\xAD\xA8\xAC\xA0\xAD\xA8\xA5! \x90\xEE\xAA\xA7\xA0\xAA\xA8 \xAF\xA5\xE0\xA5\xAF\xAE\xAB\xAD\xA5\xAD\xEB!\fd\n"
- "\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3";
+ return "\v007\f12\x82\xAD\xA8\xAC\xA0\xAD\xA8\xA5! \x90\xEE\xAA\xA7\xA0\xAA\xA8 \xAF\xA5\xE0\xA5\xAF\xAE\xAB\xAD\xA5\xAD\xEB!\fd\n" // "\v007\f12Ðнимание! Ð Ñкзаки пеÑеполненÑ!\fd\n"
+ "\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3"; // "ÐажмиÑе клавиÑÑ";
}
- /*
- "\x3""l\v120\t000\x4""077\x3""c\f37Í. êëàâèøó\fd"
- */
const char *HIT_A_KEY() {
- return "\x3"
- "l\v120\t000\x4"
- "077\x3"
- "c\f37\x8D. \xAA\xAB\xA0\xA2\xA8\xE8\xE3\fd";
+ return "\x3""l\v120\t000\x4""077\x3""c\f37\x8D. \xAA\xAB\xA0\xA2\xA8\xE8\xE3\fd"; // "\x3""l\v120\t000\x4""077\x3""c\f37Ð. клавиÑÑ\fd"
}
const char *GIVE_TREASURE_FORMATTING() {
@@ -2808,105 +1630,53 @@ public:
"077";
}
- /*
- "\v060\t000\x3""c%s íàø%s: %s"
- */
const char *X_FOUND_Y() {
- return "\v060\t000\x3"
- "c%s \xAD\xA0\xE8%s: %s";
+ return "\v060\t000\x3""c%s \xAD\xA0\xE8%s: %s"; // "\v060\t000\x3""c%s наÑ%s: %s"
}
- /*
- "\x3""c\v009Êîãî?"
- */
const char *ON_WHO() {
- return "\x3"
- "c\v009\x8A\xAE\xA3\xAE?";
+ return "\x3""c\v009\x8A\xAE\xA3\xAE?"; // "\x3""c\v009Ðого?"
}
- /*
- "\r\x3""c\x1Êàêàÿ Ñòèõèÿ?\x2\v034\t014\f15Î\fdãîíü\t044"
- "\f15Ã\fdðîì\t074\f15Õ\fdîëîä\t104\f15ß\fdä\x1";
- */
const char *WHICH_ELEMENT1() {
- return "\r\x3"
- "c\x1\x8A\xA0\xAA\xA0\xEF \x91\xE2\xA8\xE5\xA8\xEF?\x2\v034\t014\f15\x8E\fd\xA3\xAE\xAD\xEC\t044"
- "\f15\x83\fd\xE0\xAE\xAC\t074\f15\x95\fd\xAE\xAB\xAE\xA4\t104\f15\x9F\fd\xA4\x1";
+ return "\r\x3""c\x1\x8A\xA0\xAA\xA0\xEF \x91\xE2\xA8\xE5\xA8\xEF?\x2\v034\t014\f15\x8E\fd\xA3\xAE\xAD\xEC\t044" // "\r\x3""c\x1ÐÐ°ÐºÐ°Ñ Ð¡ÑиÑ
иÑ?\x2\v034\t014\f15Ð\fdгонÑ\t044"
+ "\f15\x83\fd\xE0\xAE\xAC\t074\f15\x95\fd\xAE\xAB\xAE\xA4\t104\f15\x9F\fd\xA4\x1"; // "\f15Ð\fdÑом\t074\f15Ð¥\fdолод\t104\f15Я\fdд\x1";
}
- /*
- "\r\x3""cÊàêàÿ Ñòèõèÿ?\x2\v034\t014\f15Î\fdãîíü\t044"
- "\f15Ã\fdðîì\t074\f15Õ\fdîëîä\t104\f15ß\fdä\x1";
- */
const char *WHICH_ELEMENT2() {
- return "\r\x3"
- "c\x8A\xA0\xAA\xA0\xEF \x91\xE2\xA8\xE5\xA8\xEF?\x2\v034\t014\f15\x8E\fd\xA3\xAE\xAD\xEC\t044"
- "\f15\x83\fd\xE0\xAE\xAC\t074\f15\x95\fd\xAE\xAB\xAE\xA4\t104\f15\x9F\fd\xA4\x1";
+ return "\r\x3""c\x8A\xA0\xAA\xA0\xEF \x91\xE2\xA8\xE5\xA8\xEF?\x2\v034\t014\f15\x8E\fd\xA3\xAE\xAD\xEC\t044" // "\r\x3""cÐÐ°ÐºÐ°Ñ Ð¡ÑиÑ
иÑ?\x2\v034\t014\f15Ð\fdгонÑ\t044"
+ "\f15\x83\fd\xE0\xAE\xAC\t074\f15\x95\fd\xAE\xAB\xAE\xA4\t104\f15\x9F\fd\xA4\x1"; // "\f15Ð\fdÑом\t074\f15Ð¥\fdолод\t104\f15Я\fdд\x1";
}
- /*
- "\x3""cÏîèñê ìîíñòðîâ"
- */
const char *DETECT_MONSTERS() {
- return "\x3"
- "c\x8F\xAE\xA8\xE1\xAA \xAC\xAE\xAD\xE1\xE2\xE0\xAE\xA2";
+ return "\x3""c\x8F\xAE\xA8\xE1\xAA \xAC\xAE\xAD\xE1\xE2\xE0\xAE\xA2"; // "\x3""cÐоиÑк монÑÑÑов"
}
- /*
- "\r\x3""c\v000\t000\x1Ìàÿê Ëëîéäà\n"
- "\n"
- "Ïîñëåäíåå ìåñòî\n"
- "\n"
- "%s\x3""l\n"
- "x = %d\x3""r\t000y = %d\x3""c\x2\v122\t021\f15Ó\fdñòàí\t060\f15Â\fdåðí\x1";
- */
const char *LLOYDS_BEACON() {
- return "\r\x3"
- "c\v000\t000\x1\x8C\xA0\xEF\xAA \x8B\xAB\xAE\xA9\xA4\xA0\n"
- "\n"
- "\x8F\xAE\xE1\xAB\xA5\xA4\xAD\xA5\xA5 \xAC\xA5\xE1\xE2\xAE\n"
- "\n"
- "%s\x3"
- "l\n"
- "x = %d\x3"
- "r\t000y = %d\x3"
- "c\x2\v122\t021\f15\x93\fd\xE1\xE2\xA0\xAD\t060\f15\x82\fd\xA5\xE0\xAD\x1";
+ return "\r\x3""c\v000\t000\x1\x8C\xA0\xEF\xAA \x8B\xAB\xAE\xA9\xA4\xA0\n" // "\r\x3""c\v000\t000\x1ÐаÑк Ðлойда\n"
+ "\n" // "\n"
+ "\x8F\xAE\xE1\xAB\xA5\xA4\xAD\xA5\xA5 \xAC\xA5\xE1\xE2\xAE\n" // "ÐоÑледнее меÑÑо\n"
+ "\n" // "\n"
+ "%s\x3""l\n" // "%s\x3""l\n"
+ "x = %d\x3""r\t000y = %d\x3""c\x2\v122\t021\f15\x93\fd\xE1\xE2\xA0\xAD\t060\f15\x82\fd\xA5\xE0\xAD\x1"; // "x = %d\x3""r\t000y = %d\x3""c\x2\v122\t021\f15У\fdÑÑан\t060\f15Ð\fdеÑн\x1";
}
- /*
- "\x3""cÒåëåïîðò\nÑêîëüêî êëåòîê íà %s (1-9)\n"
- */
const char *HOW_MANY_SQUARES() {
- return "\x3"
- "c\x92\xA5\xAB\xA5\xAF\xAE\xE0\xE2\n\x91\xAA\xAE\xAB\xEC\xAA\xAE \xAA\xAB\xA5\xE2\xAE\xAA \xAD\xA0 %s (1-9)\n";
- }
-
- /*
- "\x3""cÃîðîäñêîé ïîðòàë\x3""l\n"
- "\n"
- "\t0101. %s\n"
- "\t0102. %s\n"
- "\t0103. %s\n"
- "\t0104. %s\n"
- "\t0105. %s\x3""c\n"
- "\n"
- "Â êàêîé ãîðîä (1-5)\n"
- "\n";
- */
+ return "\x3""c\x92\xA5\xAB\xA5\xAF\xAE\xE0\xE2\n\x91\xAA\xAE\xAB\xEC\xAA\xAE \xAA\xAB\xA5\xE2\xAE\xAA \xAD\xA0 %s (1-9)\n"; // "\x3""cТелепоÑÑ\nСколÑко клеÑок на %s (1-9)\n"
+ }
+
const char *TOWN_PORTAL() {
- return "\x3"
- "c\x83\xAE\xE0\xAE\xA4\xE1\xAA\xAE\xA9 \xAF\xAE\xE0\xE2\xA0\xAB\x3"
- "l\n"
- "\n"
- "\t0101. %s\n"
- "\t0102. %s\n"
- "\t0103. %s\n"
- "\t0104. %s\n"
- "\t0105. %s\x3"
- "c\n"
- "\n"
- "\x82 \xAA\xA0\xAA\xAE\xA9 \xA3\xAE\xE0\xAE\xA4 (1-5)\n"
- "\n";
+ return "\x3""c\x83\xAE\xE0\xAE\xA4\xE1\xAA\xAE\xA9 \xAF\xAE\xE0\xE2\xA0\xAB\x3""l\n" // "\x3""cÐоÑодÑкой поÑÑал\x3""l\n"
+ "\n" // "\n"
+ "\t0101. %s\n" // "\t0101. %s\n"
+ "\t0102. %s\n" // "\t0102. %s\n"
+ "\t0103. %s\n" // "\t0103. %s\n"
+ "\t0104. %s\n" // "\t0104. %s\n"
+ "\t0105. %s\x3" // "\t0105. %s\x3""c\n"
+ "c\n" // "\n"
+ "\n" // "Ркакой гоÑод (1-5)\n"
+ "\x82 \xAA\xA0\xAA\xAE\xA9 \xA3\xAE\xE0\xAE\xA4 (1-5)\n" // "\n";
+ "\n"; //
}
const char *TOWN_PORTAL_SWORDS() {
@@ -2928,126 +1698,68 @@ public:
"c\t100%s\t140%u\t180%u\x3r\t000%s";
}
- /*
- "Íåò", "Ìàãèÿ", "Îãíÿ", "Ãðîìà", "Õîëîäà", "Îòðàâëåíèå", "Ýíåðãèè",
- "Áîëåçíü", "Áåçóìèå", "Ñîí", "ÏðêëÏðäì", "Âëþáë", "ÎñóøÇäîð", "Ïðîêëÿòèå",
- "Ïàðàëè÷", "Áåññîçí", "Ñìÿòåíèå", "ËîìÁðîí", "Ñëàáîñòü", "Óíè÷òîæ",
- "Âîçðàñò+5", "Ìåðòâ", "Êàìåíü"
- */
const char **MONSTER_SPECIAL_ATTACKS() {
delete[] _monsterSpecialAttacks;
_monsterSpecialAttacks = new const char *[23] {
- "\x8D\xA5\xE2", "\x8C\xA0\xA3\xA8\xEF", "\x8E\xA3\xAD\xEF", "\x83\xE0\xAE\xAC\xA0", "\x95\xAE\xAB\xAE\xA4\xA0", "\x8E\xE2\xE0\xA0\xA2\xAB\xA5\xAD\xA8\xA5", "\x9D\xAD\xA5\xE0\xA3\xA8\xA8",
- "\x81\xAE\xAB\xA5\xA7\xAD\xEC", "\x81\xA5\xA7\xE3\xAC\xA8\xA5", "\x91\xAE\xAD", "\x8F\xE0\xAA\xAB\x8F\xE0\xA4\xAC", "\x82\xAB\xEE\xA1\xAB", "\x8E\xE1\xE3\xE8\x87\xA4\xAE\xE0", "\x8F\xE0\xAE\xAA\xAB\xEF\xE2\xA8\xA5",
- "\x8F\xA0\xE0\xA0\xAB\xA8\xE7", "\x81\xA5\xE1\xE1\xAE\xA7\xAD", "\x91\xAC\xEF\xE2\xA5\xAD\xA8\xA5", "\x8B\xAE\xAC\x81\xE0\xAE\xAD", "\x91\xAB\xA0\xA1\xAE\xE1\xE2\xEC", "\x93\xAD\xA8\xE7\xE2\xAE\xA6",
- "\x82\xAE\xA7\xE0\xA0\xE1\xE2+5", "\x8C\xA5\xE0\xE2\xA2", "\x8A\xA0\xAC\xA5\xAD\xEC"
+ "\x8D\xA5\xE2", "\x8C\xA0\xA3\xA8\xEF", "\x8E\xA3\xAD\xEF", "\x83\xE0\xAE\xAC\xA0", "\x95\xAE\xAB\xAE\xA4\xA0", "\x8E\xE2\xE0\xA0\xA2\xAB\xA5\xAD\xA8\xA5", "\x9D\xAD\xA5\xE0\xA3\xA8\xA8", // "ÐеÑ", "ÐагиÑ", "ÐгнÑ", "ÐÑома", "Холода", "ÐÑÑавление", "ÐнеÑгии",
+ "\x81\xAE\xAB\xA5\xA7\xAD\xEC", "\x81\xA5\xA7\xE3\xAC\xA8\xA5", "\x91\xAE\xAD", "\x8F\xE0\xAA\xAB\x8F\xE0\xA4\xAC", "\x82\xAB\xEE\xA1\xAB", "\x8E\xE1\xE3\xE8\x87\xA4\xAE\xE0", "\x8F\xE0\xAE\xAA\xAB\xEF\xE2\xA8\xA5", // "ÐолезнÑ", "ÐезÑмие", "Сон", "ÐÑклÐÑдм", "ÐлÑбл", "ÐÑÑÑÐдоÑ", "ÐÑоклÑÑие",
+ "\x8F\xA0\xE0\xA0\xAB\xA8\xE7", "\x81\xA5\xE1\xE1\xAE\xA7\xAD", "\x91\xAC\xEF\xE2\xA5\xAD\xA8\xA5", "\x8B\xAE\xAC\x81\xE0\xAE\xAD", "\x91\xAB\xA0\xA1\xAE\xE1\xE2\xEC", "\x93\xAD\xA8\xE7\xE2\xAE\xA6", // "ÐаÑалиÑ", "ÐеÑÑозн", "СмÑÑение", "ÐомÐÑон", "СлабоÑÑÑ", "УниÑÑож",
+ "\x82\xAE\xA7\xE0\xA0\xE1\xE2+5", "\x8C\xA5\xE0\xE2\xA2", "\x8A\xA0\xAC\xA5\xAD\xEC" // "ÐозÑаÑÑ+5", "ÐеÑÑв", "ÐаменÑ"
};
return _monsterSpecialAttacks;
}
- /*
- "Ìîíñòð\x3""c\t155ÎÇ\t195ÊÇ\t233#Àòàê\x3""r\t000Îñîáîå%s%s%s"
- */
const char *IDENTIFY_MONSTERS() {
- return "\x8C\xAE\xAD\xE1\xE2\xE0\x3"
- "c\t155\x8E\x87\t195\x8A\x87\t233#\x80\xE2\xA0\xAA\x3"
- "r\t000\x8E\xE1\xAE\xA1\xAE\xA5%s%s%s";
+ return "\x8C\xAE\xAD\xE1\xE2\xE0\x3""c\t155\x8E\x87\t195\x8A\x87\t233#\x80\xE2\xA0\xAA\x3""r\t000\x8E\xE1\xAE\xA1\xAE\xA5%s%s%s"; // "ÐонÑÑÑ\x3""c\t155ÐÐ\t195ÐÐ\t233#ÐÑак\x3""r\t000ÐÑобое%s%s%s"
}
- /*
- "\x3""c\v012\t000Ïîêà ëóíû íå âñòàíóò â ðÿä, âû íå ñìîæåòå ïåðåéòè íà Ò¸ìíóþ ñòîðîíó Êñèíà"
- */
const char *MOONS_NOT_ALIGNED() {
- return "\x3"
- "c\v012\t000\x8F\xAE\xAA\xA0 \xAB\xE3\xAD\xEB \xAD\xA5 \xA2\xE1\xE2\xA0\xAD\xE3\xE2 \xA2 \xE0\xEF\xA4, \xA2\xEB \xAD\xA5 \xE1\xAC\xAE\xA6\xA5\xE2\xA5 \xAF\xA5\xE0\xA5\xA9\xE2\xA8 \xAD\xA0 \x92\xF1\xAC\xAD\xE3\xEE \xE1\xE2\xAE\xE0\xAE\xAD\xE3 \x8A\xE1\xA8\xAD\xA0";
+ return "\x3""c\v012\t000\x8F\xAE\xAA\xA0 \xAB\xE3\xAD\xEB \xAD\xA5 \xA2\xE1\xE2\xA0\xAD\xE3\xE2 \xA2 \xE0\xEF\xA4, \xA2\xEB \xAD\xA5 \xE1\xAC\xAE\xA6\xA5\xE2\xA5 \xAF\xA5\xE0\xA5\xA9\xE2\xA8 \xAD\xA0 \x92\xF1\xAC\xAD\xE3\xEE \xE1\xE2\xAE\xE0\xAE\xAD\xE3 \x8A\xE1\xA8\xAD\xA0"; // "\x3""c\v012\t000Ðока лÑÐ½Ñ Ð½Ðµ вÑÑанÑÑ Ð² ÑÑд, Ð²Ñ Ð½Ðµ ÑможеÑе пеÑейÑи на ТÑмнÑÑ ÑÑоÑÐ¾Ð½Ñ ÐÑина"
}
- /*
- "\r\x1\fd\x3""c\v000\t000%s %s: Íàãðàäû \x3""l\x2\n"
- "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\x1";
- */
const char *AWARDS_FOR() {
- return "\r\x1\fd\x3"
- "c\v000\t000%s %s: \x8D\xA0\xA3\xE0\xA0\xA4\xEB \x3"
- "l\x2\n"
- "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\x1";
+ return "\r\x1\fd\x3""c\v000\t000%s %s: \x8D\xA0\xA3\xE0\xA0\xA4\xEB \x3""l\x2\n" // "\r\x1\fd\x3""c\v000\t000%s %s: ÐагÑÐ°Ð´Ñ \x3""l\x2\n"
+ "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\x1"; // "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\x1";
}
- /*
- "\r\x2\x3""c\v021\t221Ââåðõ\t255Âíèç\t289Âûõîä"
- */
const char *AWARDS_TEXT() {
- return "\r\x2\x3"
- "c\v021\t221\x82\xA2\xA5\xE0\xE5\t255\x82\xAD\xA8\xA7\t289\x82\xEB\xE5\xAE\xA4";
+ return "\r\x2\x3""c\v021\t221\x82\xA2\xA5\xE0\xE5\t255\x82\xAD\xA8\xA7\t289\x82\xEB\xE5\xAE\xA4"; // "\r\x2\x3""c\v021\t221ÐвеÑÑ
\t255Ðниз\t289ÐÑÑ
од"
}
- /*
- "\x3""cÓ ïåðñîíàæà íåò íàãðàä"
- */
const char *NO_AWARDS() {
- return "\x3"
- "c\x93 \xAF\xA5\xE0\xE1\xAE\xAD\xA0\xA6\xA0 \xAD\xA5\xE2 \xAD\xA0\xA3\xE0\xA0\xA4";
+ return "\x3""c\x93 \xAF\xA5\xE0\xE1\xAE\xAD\xA0\xA6\xA0 \xAD\xA5\xE2 \xAD\xA0\xA3\xE0\xA0\xA4"; // "\x3""cУ пеÑÑонажа Ð½ÐµÑ Ð½Ð°Ð³Ñад"
}
- /*
- "Àðåíà\n\t125Ìàñòåð áèòâû"
- */
const char *WARZONE_BATTLE_MASTER() {
- return "\x80\xE0\xA5\xAD\xA0\n\t125\x8C\xA0\xE1\xE2\xA5\xE0 \xA1\xA8\xE2\xA2\xEB";
+ return "\x80\xE0\xA5\xAD\xA0\n\t125\x8C\xA0\xE1\xE2\xA5\xE0 \xA1\xA8\xE2\xA2\xEB"; // "ÐÑена\n\t125ÐаÑÑÐµÑ Ð±Ð¸ÑвÑ"
}
- /*
- "×òî! Îïÿòü âû? Íå ïðèñòàâàéòå ê òåì, êòî íå ìîæåò äàòü ñäà÷è!"
- */
const char *WARZONE_MAXED() {
- return "\x97\xE2\xAE! \x8E\xAF\xEF\xE2\xEC \xA2\xEB? \x8D\xA5 \xAF\xE0\xA8\xE1\xE2\xA0\xA2\xA0\xA9\xE2\xA5 \xAA \xE2\xA5\xAC, \xAA\xE2\xAE \xAD\xA5 \xAC\xAE\xA6\xA5\xE2 \xA4\xA0\xE2\xEC \xE1\xA4\xA0\xE7\xA8!";
+ return "\x97\xE2\xAE! \x8E\xAF\xEF\xE2\xEC \xA2\xEB? \x8D\xA5 \xAF\xE0\xA8\xE1\xE2\xA0\xA2\xA0\xA9\xE2\xA5 \xAA \xE2\xA5\xAC, \xAA\xE2\xAE \xAD\xA5 \xAC\xAE\xA6\xA5\xE2 \xA4\xA0\xE2\xEC \xE1\xA4\xA0\xE7\xA8!"; // "ЧÑо! ÐпÑÑÑ Ð²Ñ? Ðе пÑиÑÑавайÑе к Ñем, кÑо не Ð¼Ð¾Ð¶ÐµÑ Ð´Ð°ÑÑ ÑдаÑи!"
}
- /*
- "Êàêîé óðîâåíü ìîíñòðîâ? (1-10)\n"
- */
const char *WARZONE_LEVEL() {
- return "\x8A\xA0\xAA\xAE\xA9 \xE3\xE0\xAE\xA2\xA5\xAD\xEC \xAC\xAE\xAD\xE1\xE2\xE0\xAE\xA2? (1-10)\n";
+ return "\x8A\xA0\xAA\xAE\xA9 \xE3\xE0\xAE\xA2\xA5\xAD\xEC \xAC\xAE\xAD\xE1\xE2\xE0\xAE\xA2? (1-10)\n"; // "Ðакой ÑÑÐ¾Ð²ÐµÐ½Ñ Ð¼Ð¾Ð½ÑÑÑов? (1-10)\n"
}
- /*
- "Ñêîëüêî ìîíñòðîâ? (1-20)\n"
- */
const char *WARZONE_HOW_MANY() {
- return "\x91\xAA\xAE\xAB\xEC\xAA\xAE \xAC\xAE\xAD\xE1\xE2\xE0\xAE\xA2? (1-20)\n";
+ return "\x91\xAA\xAE\xAB\xEC\xAA\xAE \xAC\xAE\xAD\xE1\xE2\xE0\xAE\xA2? (1-20)\n"; // "СколÑко монÑÑÑов? (1-20)\n"
}
- /*
- "\x3""c\v010%s âçëîìàë%s çàìîê!\nÍàæìèòå êëàâèøó."
- */
const char *PICKS_THE_LOCK() {
- return "\x3"
- "c\v010%s \xA2\xA7\xAB\xAE\xAC\xA0\xAB%s \xA7\xA0\xAC\xAE\xAA!\n\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3.";
+ return "\x3""c\v010%s \xA2\xA7\xAB\xAE\xAC\xA0\xAB%s \xA7\xA0\xAC\xAE\xAA!\n\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3."; // "\x3""c\v010%s взломал%s замок!\nÐажмиÑе клавиÑÑ."
}
- /*
- "\x3""c\v010%s íå ñìîã%s âçëîìàòü çàìîê!\nÍàæìèòå êëàâèøó."
- */
const char *UNABLE_TO_PICK_LOCK() {
- return "\x3"
- "c\v010%s \xAD\xA5 \xE1\xAC\xAE\xA3%s \xA2\xA7\xAB\xAE\xAC\xA0\xE2\xEC \xA7\xA0\xAC\xAE\xAA!\n\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3.";
+ return "\x3""c\v010%s \xAD\xA5 \xE1\xAC\xAE\xA3%s \xA2\xA7\xAB\xAE\xAC\xA0\xE2\xEC \xA7\xA0\xAC\xAE\xAA!\n\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3."; // "\x3""c\v010%s не Ñмог%s взломаÑÑ Ð·Ð°Ð¼Ð¾Ðº!\nÐажмиÑе клавиÑÑ."
}
- /*
- "\x1\f00\x3""c\v000\t000Ïàíåëü óïðàâëåíèÿ\x3""r"
- "\v022\t045Çâ\f06ó\fdê:\t124\f06Ñ\fdîõð:"
- "\v041\t045\f06Ì\fdóç.:\t124Ñ\f06î\fdõð:\v060\t045\f06Ç\fdàãð:"
- "\t124\f06Â\fdûõîä"
- "\v080\t084\f06Ï\fdîìîùü %s\t137Ìàãà\t000\x1";
- */
const char *CONTROL_PANEL_TEXT() {
- return "\x1\f00\x3"
- "c\v000\t000\x8F\xA0\xAD\xA5\xAB\xEC \xE3\xAF\xE0\xA0\xA2\xAB\xA5\xAD\xA8\xEF\x3"
- "r"
- "\v022\t045\x87\xA2\f06\xE3\fd\xAA:\t124\f06\x91\fd\xAE\xE5\xE0:"
- "\v041\t045\f06\x8C\fd\xE3\xA7.:\t124\x91\f06\xAE\fd\xE5\xE0:\v060\t045\f06\x87\fd\xA0\xA3\xE0:"
- "\t124\f06\x82\fd\xEB\xE5\xAE\xA4"
- "\v080\t084\f06\x8F\fd\xAE\xAC\xAE\xE9\xEC %s\t137\x8C\xA0\xA3\xA0\t000\x1";
+ return "\x1\f00\x3""c\v000\t000\x8F\xA0\xAD\xA5\xAB\xEC \xE3\xAF\xE0\xA0\xA2\xAB\xA5\xAD\xA8\xEF\x3""r" // "\x1\f00\x3""c\v000\t000ÐÐ°Ð½ÐµÐ»Ñ ÑпÑавлениÑ\x3""r"
+ "\v022\t045\x87\xA2\f06\xE3\fd\xAA:\t124\f06\x91\fd\xAE\xE5\xE0:" // "\v022\t045Ðв\f06Ñ\fdк:\t124\f06С\fdоÑ
Ñ:"
+ "\v041\t045\f06\x8C\fd\xE3\xA7.:\t124\x91\f06\xAE\fd\xE5\xE0:\v060\t045\f06\x87\fd\xA0\xA3\xE0:" // "\v041\t045\f06Ð\fdÑз.:\t124С\f06о\fdÑ
Ñ:\v060\t045\f06Ð\fdагÑ:"
+ "\t124\f06\x82\fd\xEB\xE5\xAE\xA4" // "\t124\f06Ð\fdÑÑ
од"
+ "\v080\t084\f06\x8F\fd\xAE\xAC\xAE\xE9\xEC %s\t137\x8C\xA0\xA3\xA0\t000\x1"; // "\v080\t084\f06Ð\fdомоÑÑ %s\t137Ðага\t000\x1";
}
const char *CONTROL_PANEL_BUTTONS() {
@@ -3059,71 +1771,40 @@ public:
"\v079\t102Help\fd";
}
- /*
- "\f15âêë\f11"
- */
const char *ON() {
- return "\f15\xA2\xAA\xAB\f11";
+ return "\f15\xA2\xAA\xAB\f11"; // "\f15вкл\f11"
}
- /*
- "\f32âûê\f11"
- */
const char *OFF() {
- return "\f32\xA2\xEB\xAA\f11";
+ return "\f32\xA2\xEB\xAA\f11"; // "\f32вÑк\f11"
}
- /*
- "Âû óâåðåíû, ÷òî õîòèòå âûéòè?"
- */
const char *CONFIRM_QUIT() {
- return "\x82\xEB \xE3\xA2\xA5\xE0\xA5\xAD\xEB, \xE7\xE2\xAE \xE5\xAE\xE2\xA8\xE2\xA5 \xA2\xEB\xA9\xE2\xA8?";
+ return "\x82\xEB \xE3\xA2\xA5\xE0\xA5\xAD\xEB, \xE7\xE2\xAE \xE5\xAE\xE2\xA8\xE2\xA5 \xA2\xEB\xA9\xE2\xA8?"; // "ÐÑ ÑвеÑенÑ, ÑÑо Ñ
оÑиÑе вÑйÑи?"
}
- /*
- "Âû òî÷íî õîòèòå âîñïîëüçîâàòüñÿ ïîìîùüþ Ìð. Ìàãà?"
- */
const char *MR_WIZARD() {
- return "\x82\xEB \xE2\xAE\xE7\xAD\xAE \xE5\xAE\xE2\xA8\xE2\xA5 \xA2\xAE\xE1\xAF\xAE\xAB\xEC\xA7\xAE\xA2\xA0\xE2\xEC\xE1\xEF \xAF\xAE\xAC\xAE\xE9\xEC\xEE \x8C\xE0. \x8C\xA0\xA3\xA0?";
+ return "\x82\xEB \xE2\xAE\xE7\xAD\xAE \xE5\xAE\xE2\xA8\xE2\xA5 \xA2\xAE\xE1\xAF\xAE\xAB\xEC\xA7\xAE\xA2\xA0\xE2\xEC\xE1\xEF \xAF\xAE\xAC\xAE\xE9\xEC\xEE \x8C\xE0. \x8C\xA0\xA3\xA0?"; // "ÐÑ ÑоÑно Ñ
оÑиÑе воÑполÑзоваÑÑÑÑ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐÑ. Ðага?"
}
- /*
- "Íèêàêèõ çàãðóçîê âî âðåìÿ áèòâû!"
- */
const char *NO_LOADING_IN_COMBAT() {
- return "\x8D\xA8\xAA\xA0\xAA\xA8\xE5 \xA7\xA0\xA3\xE0\xE3\xA7\xAE\xAA \xA2\xAE \xA2\xE0\xA5\xAC\xEF \xA1\xA8\xE2\xA2\xEB!";
+ return "\x8D\xA8\xAA\xA0\xAA\xA8\xE5 \xA7\xA0\xA3\xE0\xE3\xA7\xAE\xAA \xA2\xAE \xA2\xE0\xA5\xAC\xEF \xA1\xA8\xE2\xA2\xEB!"; // "ÐикакиÑ
загÑÑзок во вÑÐµÐ¼Ñ Ð±Ð¸ÑвÑ!"
}
- /*
- "Íèêàêèõ ñîõðàíåíèé âî âðåìÿ áèòâû!"
- */
const char *NO_SAVING_IN_COMBAT() {
- return "\x8D\xA8\xAA\xA0\xAA\xA8\xE5 \xE1\xAE\xE5\xE0\xA0\xAD\xA5\xAD\xA8\xA9 \xA2\xAE \xA2\xE0\xA5\xAC\xEF \xA1\xA8\xE2\xA2\xEB!";
+ return "\x8D\xA8\xAA\xA0\xAA\xA8\xE5 \xE1\xAE\xE5\xE0\xA0\xAD\xA5\xAD\xA8\xA9 \xA2\xAE \xA2\xE0\xA5\xAC\xEF \xA1\xA8\xE2\xA2\xEB!"; // "ÐикакиÑ
ÑоÑ
Ñанений во вÑÐµÐ¼Ñ Ð±Ð¸ÑвÑ!"
}
- /*
- "\r\fd\x3""c\v000\t000Áûñòðîå äåéñòâèå\n\n"
- "%s\x3""l\n\n"
- "Òåêóùåå\x3""r\n"
- "\t000%s\x2\x3""c\v122\t019\f37Ñ\f04ëåä\t055Âûõîä\x1";
- */
const char *QUICK_FIGHT_TEXT() {
- return "\r\fd\x3"
- "c\v000\t000\x81\xEB\xE1\xE2\xE0\xAE\xA5 \xA4\xA5\xA9\xE1\xE2\xA2\xA8\xA5\n\n"
- "%s\x3"
- "l\n\n"
- "\x92\xA5\xAA\xE3\xE9\xA5\xA5\x3"
- "r\n"
- "\t000%s\x2\x3"
- "c\v122\t019\f37\x91\f04\xAB\xA5\xA4\t055\x82\xEB\xE5\xAE\xA4\x1";
+ return "\r\fd\x3""c\v000\t000\x81\xEB\xE1\xE2\xE0\xAE\xA5 \xA4\xA5\xA9\xE1\xE2\xA2\xA8\xA5\n\n" // "\r\fd\x3""c\v000\t000ÐÑÑÑÑое дейÑÑвие\n\n"
+ "%s\x3""l\n\n" // "%s\x3""l\n\n"
+ "\x92\xA5\xAA\xE3\xE9\xA5\xA5\x3""r\n" // "ТекÑÑее\x3""r\n"
+ "\t000%s\x2\x3""c\v122\t019\f37\x91\f04\xAB\xA5\xA4\t055\x82\xEB\xE5\xAE\xA4\x1"; // "\t000%s\x2\x3""c\v122\t019\f37С\f04лед\t055ÐÑÑ
од\x1";
}
- /*
- "Àòàêà", "Çàêëèíàíèå", "Áëîê", "Áåãñòâî"
- */
const char **QUICK_FIGHT_OPTIONS() {
delete[] _quickFightOptions;
- _quickFightOptions = new const char *[4] { "\x80\xE2\xA0\xAA\xA0", "\x87\xA0\xAA\xAB\xA8\xAD\xA0\xAD\xA8\xA5", "\x81\xAB\xAE\xAA", "\x81\xA5\xA3\xE1\xE2\xA2\xAE" };
+ _quickFightOptions = new const char *[4] { "\x80\xE2\xA0\xAA\xA0", "\x87\xA0\xAA\xAB\xA8\xAD\xA0\xAD\xA8\xA5", "\x81\xAB\xAE\xAA", "\x81\xA5\xA3\xE1\xE2\xA2\xAE" }; // "ÐÑака", "Ðаклинание", "Ðлок", "ÐегÑÑво"
return _quickFightOptions;
}
@@ -3195,22 +1876,13 @@ public:
return _goober;
}
- /*
- "\v000\t000\x3""cÂûáåðèòå èãðîâîé ðåæèì"
- */
const char *DIFFICULTY_TEXT() {
- return "\v000\t000\x3"
- "c\x82\xEB\xA1\xA5\xE0\xA8\xE2\xA5 \xA8\xA3\xE0\xAE\xA2\xAE\xA9 \xE0\xA5\xA6\xA8\xAC";
+ return "\v000\t000\x3""c\x82\xEB\xA1\xA5\xE0\xA8\xE2\xA5 \xA8\xA3\xE0\xAE\xA2\xAE\xA9 \xE0\xA5\xA6\xA8\xAC"; // "\v000\t000\x3""cÐÑбеÑиÑе игÑовой Ñежим"
}
- /*
- "\x3""c\v002\t000Áîãè Âîññòàíîâëåíèÿ Èãð ñ÷èòàþò ýòî ìåñòî çàïðåòíûì!\n"
- "Óâû, çäåñü íåëüçÿ ñîõðàíÿòüñÿ";
- */
const char *SAVE_OFF_LIMITS() {
- return "\x3"
- "c\v002\t000\x81\xAE\xA3\xA8 \x82\xAE\xE1\xE1\xE2\xA0\xAD\xAE\xA2\xAB\xA5\xAD\xA8\xEF \x88\xA3\xE0 \xE1\xE7\xA8\xE2\xA0\xEE\xE2 \xED\xE2\xAE \xAC\xA5\xE1\xE2\xAE \xA7\xA0\xAF\xE0\xA5\xE2\xAD\xEB\xAC!\n"
- "\x93\xA2\xEB, \xA7\xA4\xA5\xE1\xEC \xAD\xA5\xAB\xEC\xA7\xEF \xE1\xAE\xE5\xE0\xA0\xAD\xEF\xE2\xEC\xE1\xEF";
+ return "\x3""c\v002\t000\x81\xAE\xA3\xA8 \x82\xAE\xE1\xE1\xE2\xA0\xAD\xAE\xA2\xAB\xA5\xAD\xA8\xEF \x88\xA3\xE0 \xE1\xE7\xA8\xE2\xA0\xEE\xE2 \xED\xE2\xAE \xAC\xA5\xE1\xE2\xAE \xA7\xA0\xAF\xE0\xA5\xE2\xAD\xEB\xAC!\n" // "\x3""c\v002\t000Ðоги ÐоÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐÐ³Ñ ÑÑиÑаÑÑ ÑÑо меÑÑо запÑеÑнÑм!\n"
+ "\x93\xA2\xEB, \xA7\xA4\xA5\xE1\xEC \xAD\xA5\xAB\xEC\xA7\xEF \xE1\xAE\xE5\xE0\xA0\xAD\xEF\xE2\xEC\xE1\xEF"; // "УвÑ, здеÑÑ Ð½ÐµÐ»ÑÐ·Ñ ÑоÑ
ÑанÑÑÑÑÑ";
}
const char *CLOUDS_INTRO1() {
@@ -3261,5 +1933,3 @@ public:
"l\fd";
}
};
-
-
Commit: d3624575a703617be9d2d9b82113a8492f61afe9
https://github.com/scummvm/scummvm/commit/d3624575a703617be9d2d9b82113a8492f61afe9
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Working on gender and plural forms
Changed paths:
devtools/create_xeen/constants.cpp
devtools/create_xeen/constants.h
devtools/create_xeen/en_constants.h
devtools/create_xeen/ru_constants.h
dists/engine-data/xeen.ccs
engines/xeen/dialogs/dialogs_char_info.cpp
engines/xeen/dialogs/dialogs_items.cpp
engines/xeen/dialogs/dialogs_items.h
engines/xeen/dialogs/dialogs_quick_ref.cpp
engines/xeen/font.cpp
engines/xeen/font.h
engines/xeen/party.cpp
engines/xeen/party.h
engines/xeen/resources.cpp
engines/xeen/resources.h
diff --git a/devtools/create_xeen/constants.cpp b/devtools/create_xeen/constants.cpp
index 59b6af13af..0d1e80a768 100644
--- a/devtools/create_xeen/constants.cpp
+++ b/devtools/create_xeen/constants.cpp
@@ -88,9 +88,12 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
file.syncStrings(SKILL_NAMES(), 18);
delete[] _skillNames;
_skillNames = NULL;
- file.syncStrings(CONDITION_NAMES(), 17);
- delete[] _conditionNames;
- _conditionNames = NULL;
+ file.syncStrings(CONDITION_NAMES_M(), 17);
+ delete[] _conditionNamesM;
+ _conditionNamesM = NULL;
+ file.syncStrings(CONDITION_NAMES_F(), 17);
+ delete[] _conditionNamesF;
+ _conditionNamesF = NULL;
file.syncNumbers(CONDITION_COLORS, 17);
file.syncString(GOOD());
file.syncString(BLESSED());
@@ -176,7 +179,7 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
file.syncStrings(STAT_NAMES(), 16);
delete[] _statNames;
_statNames = NULL;
- file.syncStrings(CONSUMABLE_NAMES(), 4);
+ file.syncStrings(CONSUMABLE_NAMES(), 6);
delete[] _consumableNames;
_consumableNames = NULL;
file.syncStrings(WHERE_NAMES(), 2);
@@ -334,7 +337,7 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
file.syncStrings(CATEGORY_BACKPACK_IS_FULL(), 4);
file.syncString(BUY_X_FOR_Y_GOLD());
file.syncString(SELL_X_FOR_Y_GOLD());
- file.syncStrings(SELL_X_FOR_Y_GOLD_ENDINGS(), 2);
+ file.syncStrings(GOLDS(), 2);
delete[] _sellXForYGoldEndings;
_sellXForYGoldEndings = NULL;
file.syncString(NO_NEED_OF_THIS());
diff --git a/devtools/create_xeen/constants.h b/devtools/create_xeen/constants.h
index 2159b6c30f..7bfcc25195 100644
--- a/devtools/create_xeen/constants.h
+++ b/devtools/create_xeen/constants.h
@@ -118,7 +118,8 @@ protected:
const char **_alignmentNames = NULL;
const char **_skillNames = NULL;
const char **_classNames = NULL;
- const char **_conditionNames = NULL;
+ const char **_conditionNamesM = NULL;
+ const char **_conditionNamesF = NULL;
const char **_depositWithdrawl = NULL;
const char **_statNames = NULL;
const char **_whereNames = NULL;
@@ -412,7 +413,8 @@ public:
1500, 2000, 2000, 1500, 2000, 1000, 1500, 1500, 1500, 2000
};
- virtual const char **CONDITION_NAMES() = 0;
+ virtual const char **CONDITION_NAMES_M() = 0;
+ virtual const char **CONDITION_NAMES_F() = 0;
const int CONDITION_COLORS[17] = {
9, 9, 9, 9, 9, 9, 9, 9, 32, 32, 32, 32, 6, 6, 6, 6, 15
@@ -1075,7 +1077,7 @@ public:
virtual const char **CATEGORY_BACKPACK_IS_FULL() = 0;
virtual const char *BUY_X_FOR_Y_GOLD() = 0;
virtual const char *SELL_X_FOR_Y_GOLD() = 0;
- virtual const char **SELL_X_FOR_Y_GOLD_ENDINGS() = 0;
+ virtual const char **GOLDS() = 0;
virtual const char *NO_NEED_OF_THIS() = 0;
virtual const char *NOT_RECHARGABLE() = 0;
virtual const char *NOT_ENCHANTABLE() = 0;
diff --git a/devtools/create_xeen/en_constants.h b/devtools/create_xeen/en_constants.h
index 469d81b60e..e4ac9a7688 100644
--- a/devtools/create_xeen/en_constants.h
+++ b/devtools/create_xeen/en_constants.h
@@ -263,14 +263,24 @@ public:
return _classNames;
}
- const char **CONDITION_NAMES() {
- delete[] _conditionNames;
- _conditionNames = new const char *[17] {
+ const char **CONDITION_NAMES_M() {
+ delete[] _conditionNamesM;
+ _conditionNamesM = new const char *[17] {
"Cursed", "Heart Broken", "Weak", "Poisoned", "Diseased",
"Insane", "In Love", "Drunk", "Asleep", "Depressed", "Confused",
"Paralyzed", "Unconscious", "Dead", "Stone", "Eradicated", "Good"
};
- return _conditionNames;
+ return _conditionNamesM;
+ }
+
+ const char **CONDITION_NAMES_F() {
+ delete[] _conditionNamesF;
+ _conditionNamesF = new const char *[17] {
+ "Cursed", "Heart Broken", "Weak", "Poisoned", "Diseased",
+ "Insane", "In Love", "Drunk", "Asleep", "Depressed", "Confused",
+ "Paralyzed", "Unconscious", "Dead", "Stone", "Eradicated", "Good"
+ };
+ return _conditionNamesF;
}
const char *GOOD() {
@@ -551,7 +561,7 @@ public:
const char **CONSUMABLE_NAMES() {
delete[] _consumableNames;
- _consumableNames = new const char *[4] { "Gold", "Gems", "Food", "Condition" };
+ _consumableNames = new const char *[6] { "Gold", "Gems", "Food", "Condition", "", "" };
return _consumableNames;
}
@@ -1282,16 +1292,16 @@ public:
}
const char *BUY_X_FOR_Y_GOLD() {
- return "\x3l\v000\t000\fdBuy %s\fd for %u gold?";
+ return "\x3l\v000\t000\fdBuy %s\fd for %u %s?";
}
const char *SELL_X_FOR_Y_GOLD() {
- return "\x3l\v000\t000\fdSell %s\fd for %u gold?";
+ return "\x3l\v000\t000\fdSell %s\fd for %u %s?";
}
- const char **SELL_X_FOR_Y_GOLD_ENDINGS() {
+ const char **GOLDS() {
delete[] _sellXForYGoldEndings;
- _sellXForYGoldEndings = new const char *[2] { "", "" };
+ _sellXForYGoldEndings = new const char *[2] { "gold", "" };
return _sellXForYGoldEndings;
}
diff --git a/devtools/create_xeen/ru_constants.h b/devtools/create_xeen/ru_constants.h
index 8526c737ff..468b1e9c2f 100644
--- a/devtools/create_xeen/ru_constants.h
+++ b/devtools/create_xeen/ru_constants.h
@@ -333,16 +333,16 @@ public:
return _classNames;
}
- const char **CONDITION_NAMES() {
- delete[] _conditionNames;
- _conditionNames = new const char *[17] {
+ const char **CONDITION_NAMES_M() {
+ delete[] _conditionNamesM;
+ _conditionNamesM = new const char *[17] {
"\x8F\xE0\xAE\xAA\xAB\xEF\xE2\xA8\xA5", // "ÐÑоклÑÑие",
"Heart Broken", // "Heart Broken",
"\x91\xAB\xA0\xA1\xAE\xE1\xE2\xEC", // "СлабоÑÑÑ",
"\x8E\xE2\xE0\xA0\xA2\xAB\xA5\xAD\xA8\xA5", // "ÐÑÑавление",
"\x81\xAE\xAB\xA5\xA7\xAD\xEC", // "ÐолезнÑ",
"\x81\xA5\xA7\xE3\xAC\xA8\xA5", // "ÐезÑмие",
- "\x82\xAB\xEE\xA1\xAB\xF1\xAD(-\xA0)", // "ÐлÑблÑн(-а)",
+ "\x82\xAB\xEE\xA1\xAB\xF1\xAD", // "ÐлÑблÑн",
"\x8D\xA0\xA2\xA5\xE1\xA5\xAB\xA5", // "ÐавеÑеле",
"\x91\xAE\xAD", // "Сон",
"\x82 \xE3\xAD\xEB\xAD\xA8\xA8", // "Ð ÑнÑнии",
@@ -354,7 +354,31 @@ public:
"\x93\xAD\xA8\xE7\xE2\xAE\xA6\xA5\xAD", // "УниÑÑожен",
"\x95\xAE\xE0\xAE\xE8\xA5\xA5" // "ХоÑоÑее"
};
- return _conditionNames;
+ return _conditionNamesM;
+ }
+
+ const char **CONDITION_NAMES_F() {
+ delete[] _conditionNamesF;
+ _conditionNamesF = new const char *[17] {
+ "\x8F\xE0\xAE\xAA\xAB\xEF\xE2\xA8\xA5", // "ÐÑоклÑÑие",
+ "Heart Broken", // "Heart Broken",
+ "\x91\xAB\xA0\xA1\xAE\xE1\xE2\xEC", // "СлабоÑÑÑ",
+ "\x8E\xE2\xE0\xA0\xA2\xAB\xA5\xAD\xA8\xA5", // "ÐÑÑавление",
+ "\x81\xAE\xAB\xA5\xA7\xAD\xEC", // "ÐолезнÑ",
+ "\x81\xA5\xA7\xE3\xAC\xA8\xA5", // "ÐезÑмие",
+ "\x82\xAB\xEE\xA1\xAB\xF1\xAD\xA0", // "ÐлÑблÑна",
+ "\x8D\xA0\xA2\xA5\xE1\xA5\xAB\xA5", // "ÐавеÑеле",
+ "\x91\xAE\xAD", // "Сон",
+ "\x82 \xE3\xAD\xEB\xAD\xA8\xA8", // "Ð ÑнÑнии",
+ "\x82 \xE1\xAC\xEF\xE2\xA5\xAD\xA8\xA8", // "Ð ÑмÑÑении",
+ "\x8F\xA0\xE0\xA0\xAB\xA8\xE7", // "ÐаÑалиÑ",
+ "\x81.\xE1\xAE\xA7\xAD\xA0\xAD\xA8\xEF", // "Ð.ÑознаниÑ",
+ "\x8C\xA5\xE0\xE2\xA2\xA0", // "ÐеÑÑва",
+ "\x8A\xA0\xAC\xA5\xAD\xEC", // "ÐаменÑ",
+ "\x93\xAD\xA8\xE7\xE2\xAE\xA6\xA5\xAD\xA0", // "УниÑÑожена",
+ "\x95\xAE\xE0\xAE\xE8\xA5\xA5" // "ХоÑоÑее"
+ };
+ return _conditionNamesF;
}
const char *GOOD() {
@@ -604,7 +628,7 @@ public:
const char **CONSUMABLE_NAMES() {
delete[] _consumableNames;
- _consumableNames = new const char *[4] { "\x87\xAE\xAB\xAE\xE2\xAE", "\x80\xAB\xAC\xA0\xA7\xEB", "\x8F\xA8\xE9\xA0", "\x91\xAE\xE1\xE2\xAE\xEF\xAD\xA8\xA5" }; // "ÐолоÑо", "ÐлмазÑ", "ÐиÑа", "СоÑÑоÑние"
+ _consumableNames = new const char *[6] { "\x87\xAE\xAB\xAE\xE2\xAE", "\x80\xAB\xAC\xA0\xA7\xEB", "\x8F\xA8\xE9\xA0", "\x91\xAE\xE1\xE2\xAE\xEF\xAD\xA8\xA5", "\x87\xAE\xAB\xAE\xE2\xA0", "\x80\xAB\xAC\xA0\xA7\xAE\xA2" }; // "ÐолоÑо", "ÐлмазÑ", "ÐиÑа", "СоÑÑоÑние", "ÐолоÑа", "Ðлмазов"
return _consumableNames;
}
@@ -1330,16 +1354,16 @@ public:
}
const char *BUY_X_FOR_Y_GOLD() {
- return "\x3""l\v000\t000\fd\x8A\xE3\xAF\xA8\xE2\xEC %s\fd \xA7\xA0 %lu \xA7\xAE\xAB\xAE\xE2%s?"; // "\x3""l\v000\t000\fdÐÑпиÑÑ %s\fd за %lu золоÑ%s?"
+ return "\x3""l\v000\t000\fd\x8A\xE3\xAF\xA8\xE2\xEC %s\fd\n\xA7\xA0 %lu %s?"; // "\x3""l\v000\t000\fdÐÑпиÑÑ %s\fd\nза %lu %s?"
}
const char *SELL_X_FOR_Y_GOLD() {
- return "\x3""l\v000\t000\fd\x8F\xE0\xAE\xA4\xA0\xE2\xEC %s\fd \xA7\xA0 %lu \xA7\xAE\xAB\xAE\xE2%s?"; // "\x3""l\v000\t000\fdÐÑодаÑÑ %s\fd за %lu золоÑ%s?"
+ return "\x3""l\v000\t000\fd\x8F\xE0\xAE\xA4\xA0\xE2\xEC %s\fd\n\xA7\xA0 %lu %s?"; // "\x3""l\v000\t000\fdÐÑодаÑÑ %s\fd\nза %lu %s?"
}
- const char **SELL_X_FOR_Y_GOLD_ENDINGS() {
+ const char **GOLDS() {
delete[] _sellXForYGoldEndings;
- _sellXForYGoldEndings = new const char *[2] { "\xAE\xA9", "\xEB\xE5" }; // "ой", "ÑÑ
"
+ _sellXForYGoldEndings = new const char *[2] { "\xA7\xAE\xAB\xAE\xE2\xAE\xA9", "\xA7\xAE\xAB\xAE\xE2\xEB\xE5" }; // "золоÑой", "золоÑÑÑ
"
return _sellXForYGoldEndings;
}
@@ -1756,19 +1780,18 @@ public:
const char *CONTROL_PANEL_TEXT() {
return "\x1\f00\x3""c\v000\t000\x8F\xA0\xAD\xA5\xAB\xEC \xE3\xAF\xE0\xA0\xA2\xAB\xA5\xAD\xA8\xEF\x3""r" // "\x1\f00\x3""c\v000\t000ÐÐ°Ð½ÐµÐ»Ñ ÑпÑавлениÑ\x3""r"
- "\v022\t045\x87\xA2\f06\xE3\fd\xAA:\t124\f06\x91\fd\xAE\xE5\xE0:" // "\v022\t045Ðв\f06Ñ\fdк:\t124\f06С\fdоÑ
Ñ:"
- "\v041\t045\f06\x8C\fd\xE3\xA7.:\t124\x91\f06\xAE\fd\xE5\xE0:\v060\t045\f06\x87\fd\xA0\xA3\xE0:" // "\v041\t045\f06Ð\fdÑз.:\t124С\f06о\fdÑ
Ñ:\v060\t045\f06Ð\fdагÑ:"
- "\t124\f06\x82\fd\xEB\xE5\xAE\xA4" // "\t124\f06Ð\fdÑÑ
од"
+ "\v022\t045\f06\x87\fd\xA0\xA3\xE0:\t124\x87\xA2\f06\xE3\fd\xAA:" // "\v022\t045\f06Ð\fdагÑ:\t124Ðв\f06Ñ\fdк:"
+ "\v041\t045\f06\x91\fd\xAE\xE5\xE0:\t124\f06\x8C\fd\xE3\xA7.:" // "\v041\t045\f06С\fdоÑ
Ñ:\t124Ð\fdÑз.:
+ "\v060\t045\f06\x82\fd\xEB\xE5\xAE\xA4" // "\v060\t045\f06Ð\fdÑÑ
од"
"\v080\t084\f06\x8F\fd\xAE\xAC\xAE\xE9\xEC %s\t137\x8C\xA0\xA3\xA0\t000\x1"; // "\v080\t084\f06Ð\fdомоÑÑ %s\t137Ðага\t000\x1";
}
const char *CONTROL_PANEL_BUTTONS() {
- return "\x3"
- "c\f11"
- "\v022\t062load\t141%s"
- "\v041\t062save\t141%s"
- "\v060\t062exit"
- "\v079\t102Help\fd";
+ return "\x3""c\f11" // "\x3""c\f11"
+ "\v022\t062\xA8\xA3\xE0\xE3\t141%s" // "\v022\t062игÑÑ\t141%s"
+ "\v041\t062\xA8\xA3\xE0\xE3\t141%s" // "\v041\t062игÑÑ\t141%s"
+ "\v060\t062DOS" // "\v060\t062DOS"
+ "\v079\t102\x8C\xE0.\fd"; // "\v079\t102ÐÑ.\fd";
}
const char *ON() {
diff --git a/dists/engine-data/xeen.ccs b/dists/engine-data/xeen.ccs
index 7f7dc12d25..b72c8061ce 100644
Binary files a/dists/engine-data/xeen.ccs and b/dists/engine-data/xeen.ccs differ
diff --git a/engines/xeen/dialogs/dialogs_char_info.cpp b/engines/xeen/dialogs/dialogs_char_info.cpp
index 7d83106598..24fa595d39 100644
--- a/engines/xeen/dialogs/dialogs_char_info.cpp
+++ b/engines/xeen/dialogs/dialogs_char_info.cpp
@@ -309,6 +309,7 @@ Common::String CharacterInfo::loadCharacterDetails(const Character &c) {
c._poisonResistence._permanent + c.itemScan(14) + c._poisonResistence._temporary +
c._energyResistence._permanent + c.itemScan(15) + c._energyResistence._temporary +
c._magicResistence._permanent + c.itemScan(16) + c._magicResistence._temporary;
+ const char **_tmpConditions = c._sex == FEMALE ? (const char **)Res.CONDITION_NAMES_F : (const char **)Res.CONDITION_NAMES_M;
return Common::String::format(Res.CHARACTER_DETAILS,
Res.PARTY_GOLD, c._name.c_str(), Res.SEX_NAMES[c._sex],
@@ -333,7 +334,7 @@ Common::String CharacterInfo::loadCharacterDetails(const Character &c) {
c.statColor(c.getStat(SPEED), c.getStat(SPEED, true)), c.getStat(SPEED),
c.statColor(c.getArmorClass(), c.getArmorClass(true)), c.getArmorClass(),
c.getNumAwards(),
- Res.CONDITION_COLORS[condition], Res.CONDITION_NAMES[condition],
+ Res.CONDITION_COLORS[condition], _tmpConditions[condition],
condition == NO_CONDITION && party._blessed ? Res.PLUS_14 : "",
condition == NO_CONDITION && party._powerShield ? Res.PLUS_14 : "",
condition == NO_CONDITION && party._holyBonus ? Res.PLUS_14 : "",
@@ -526,15 +527,16 @@ bool CharacterInfo::expandStat(int attrib, const Character &c) {
case 19: {
// Conditions
Common::String lines[20];
+ const char **_tmpConditions = c._sex == FEMALE ? (const char **)Res.CONDITION_NAMES_F : (const char **)Res.CONDITION_NAMES_M;
int total = 0;
for (int condition = CURSED; condition <= ERADICATED; ++condition) {
if (c._conditions[condition]) {
if (condition >= UNCONSCIOUS) {
lines[condition] = Common::String::format("\n\t020%s",
- Res.CONDITION_NAMES[condition]);
+ _tmpConditions[condition]);
} else {
lines[condition] = Common::String::format("\n\t020%s\t095-%d",
- Res.CONDITION_NAMES[condition], c._conditions[condition]);
+ _tmpConditions[condition], c._conditions[condition]);
}
++total;
diff --git a/engines/xeen/dialogs/dialogs_items.cpp b/engines/xeen/dialogs/dialogs_items.cpp
index 454af251be..02cf8f311d 100644
--- a/engines/xeen/dialogs/dialogs_items.cpp
+++ b/engines/xeen/dialogs/dialogs_items.cpp
@@ -752,6 +752,12 @@ int ItemsDialog::calcItemCost(Character *c, int itemIndex, ItemsMode mode,
return (mode == ITEMMODE_CHAR_INFO) ? 0 : result;
}
+Common::String ItemsDialog::getGoldPlurals(int cost) {
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language")))
+ return Res.GOLDS[cost % 10 == 1 ? 0 : 1];
+ return Res.GOLDS[0];
+}
+
int ItemsDialog::doItemOptions(Character &c, int actionIndex, int itemIndex, ItemCategory category,
ItemsMode mode) {
Combat &combat = *_vm->_combat;
@@ -849,7 +855,7 @@ int ItemsDialog::doItemOptions(Character &c, int actionIndex, int itemIndex, Ite
int cost = calcItemCost(&c, itemIndex, mode, 0, category);
Common::String desc = c._items[category].getFullDescription(itemIndex);
if (Confirm::show(_vm, Common::String::format(Res.BUY_X_FOR_Y_GOLD,
- desc.c_str(), cost))) {
+ desc.c_str(), cost, getGoldPlurals(cost).c_str()))) {
if (party.subtract(CONS_GOLD, cost, WHERE_PARTY, WT_FREEZE_WAIT)) {
if (ccNum) {
sound.stopSound();
@@ -889,9 +895,7 @@ int ItemsDialog::doItemOptions(Character &c, int actionIndex, int itemIndex, Ite
int cost = calcItemCost(&c, itemIndex, mode, c._skills[MERCHANT], category);
Common::String desc = c._items[category].getFullDescription(itemIndex);
Common::String msg = Common::String::format(Res.SELL_X_FOR_Y_GOLD,
- desc.c_str(), cost);
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language")))
- msg += Res.RU_SELL_X_FOR_Y_GOLD_ENDINGS[cost % 10 == 1 ? 0 : 1];
+ desc.c_str(), cost, getGoldPlurals(cost).c_str());
if (Confirm::show(_vm, msg)) {
// Remove the sold item and add gold to the party's total
diff --git a/engines/xeen/dialogs/dialogs_items.h b/engines/xeen/dialogs/dialogs_items.h
index d3632dc8dc..ce9d258ad5 100644
--- a/engines/xeen/dialogs/dialogs_items.h
+++ b/engines/xeen/dialogs/dialogs_items.h
@@ -64,6 +64,11 @@ private:
int calcItemCost(Character *c, int itemIndex, ItemsMode mode, int skillLevel,
ItemCategory category);
+ /**
+ * Get plural gold form
+ */
+ Common::String getGoldPlurals(int val);
+
int doItemOptions(Character &c, int actionIndex, int itemIndex,
ItemCategory category, ItemsMode mode);
diff --git a/engines/xeen/dialogs/dialogs_quick_ref.cpp b/engines/xeen/dialogs/dialogs_quick_ref.cpp
index 7f453d9df8..329f74f3aa 100644
--- a/engines/xeen/dialogs/dialogs_quick_ref.cpp
+++ b/engines/xeen/dialogs/dialogs_quick_ref.cpp
@@ -40,11 +40,11 @@ void QuickReferenceDialog::execute() {
Common::String lines[8];
events.setCursor(0);
-
for (uint idx = 0; idx < (combat._globalCombat == 2 ? combat._combatParty.size() :
party._activeParty.size()); ++idx) {
Character &c = combat._globalCombat == 2 ? *combat._combatParty[idx] :
party._activeParty[idx];
+ const char **_tmpConditions = c._sex == FEMALE ? (const char **)Res.CONDITION_NAMES_F : (const char **)Res.CONDITION_NAMES_M;
Condition condition = c.worstCondition();
lines[idx] = Common::String::format(Res.QUICK_REF_LINE,
idx * 10 + 24, idx + 1, c._name.c_str(),
@@ -54,8 +54,8 @@ void QuickReferenceDialog::execute() {
c.statColor(c._currentSp, c.getMaxSP()), c._currentSp,
c.statColor(c.getArmorClass(), c.getArmorClass(true)), c.getArmorClass(),
Res.CONDITION_COLORS[condition],
- Res.CONDITION_NAMES[condition][0], Res.CONDITION_NAMES[condition][1],
- Res.CONDITION_NAMES[condition][2], Res.CONDITION_NAMES[condition][3]
+ _tmpConditions[condition][0], _tmpConditions[condition][1],
+ _tmpConditions[condition][2], _tmpConditions[condition][3]
);
}
diff --git a/engines/xeen/font.cpp b/engines/xeen/font.cpp
index 676904b2d5..b155322b8b 100644
--- a/engines/xeen/font.cpp
+++ b/engines/xeen/font.cpp
@@ -96,6 +96,12 @@ void FontSurface::writeSymbol(int symbolId) {
_writePos.x += 8;
}
+bool FontSurface::isSpace(char c) {
+ if (Common::RU_RUS == lang)
+ return c == ' ';
+ return (c & 0x7f) == ' ';
+}
+
const char *FontSurface::writeString(const Common::String &s, const Common::Rect &bounds) {
_displayString = s.c_str();
assert(_fontData);
@@ -123,7 +129,7 @@ const char *FontSurface::writeString(const Common::String &s, const Common::Rect
// First, move backwards to find the end of the previous word
// for a convenient point to break the line at
const char *endP = displayEnd;
- while (endP > _displayString && (*endP & 0x7f) != ' ')
+ while (endP > _displayString && !isSpace(*endP))
--endP;
if (endP == _displayString) {
@@ -138,7 +144,7 @@ const char *FontSurface::writeString(const Common::String &s, const Common::Rect
}
} else {
// Found word break, find end of previous word
- while (endP > _displayString && (*endP & 0x7f) == ' ')
+ while (endP > _displayString && !isSpace(*endP))
--endP;
displayEnd = endP;
@@ -328,7 +334,9 @@ bool FontSurface::getNextCharWidth(int &total) {
getNextChar();
return false;
} else if (Common::RU_RUS == lang && c < 0) {
- total += _fontData[(_fontReduced ? _fntNonEnReducedWOffset : _fntNonEnWOffset) + (int)(0x80 + c)];
+ int iii = (_fontReduced ? _fntNonEnReducedWOffset : _fntNonEnWOffset) + (char)(0x80 + c);
+ //int iii = _fontData[(_fontReduced ? _fntNonEnReducedWOffset : _fntNonEnWOffset) + (int)(0x80 + c)];
+ total += _fontData[(_fontReduced ? _fntNonEnReducedWOffset : _fntNonEnWOffset) + (char)(0x80 + c)];
return false;
} else {
--_displayString;
@@ -338,7 +346,7 @@ bool FontSurface::getNextCharWidth(int &total) {
bool FontSurface::newLine(const Common::Rect &bounds) {
// Move past any spaces currently being pointed to
- while ((*_displayString & 0x7f) == ' ')
+ while (isSpace(*_displayString))
++_displayString;
_msgWraps = false;
diff --git a/engines/xeen/font.h b/engines/xeen/font.h
index bc84e09c64..5315e84507 100644
--- a/engines/xeen/font.h
+++ b/engines/xeen/font.h
@@ -112,7 +112,7 @@ public:
* justification is set, the message will be written at _writePos
*/
const char *writeString(const Common::String &s, const Common::Rect &clipRect);
-
+ bool isSpace(char c);
/**
* Write a charcter to the window
* @param c Character
diff --git a/engines/xeen/party.cpp b/engines/xeen/party.cpp
index 69b0ed7745..645100a55a 100644
--- a/engines/xeen/party.cpp
+++ b/engines/xeen/party.cpp
@@ -661,10 +661,19 @@ int Party::subtract(ConsumableType consumableId, uint amount, PartyBank whereId,
return true;
}
+int Party::getConsumableForm(ConsumableType consumableId) {
+ switch (consumableId) {
+ case CONS_GOLD: return 4;
+ case CONS_GEMS: return 5;
+ }
+ return consumableId;
+}
+
void Party::notEnough(ConsumableType consumableId, PartyBank whereId, bool mode, MessageWaitType wait) {
+ int _tmpConsumableId = getConsumableForm(consumableId);
Common::String msg = Common::String::format(
mode ? Res.NO_X_IN_THE_Y : Res.NOT_ENOUGH_X_IN_THE_Y,
- Res.CONSUMABLE_NAMES[consumableId], Res.WHERE_NAMES[whereId]);
+ Res.CONSUMABLE_NAMES[_tmpConsumableId], Res.WHERE_NAMES[whereId]);
ErrorScroll::show(_vm, msg, wait);
}
diff --git a/engines/xeen/party.h b/engines/xeen/party.h
index 2cecd93c6c..c0a3be5ef7 100644
--- a/engines/xeen/party.h
+++ b/engines/xeen/party.h
@@ -269,6 +269,8 @@ public:
int subtract(ConsumableType consumableId, uint amount, PartyBank whereId, MessageWaitType wait = WT_FREEZE_WAIT);
+ int getConsumableForm(ConsumableType consumableId);
+
void notEnough(ConsumableType consumableId, PartyBank whereId, bool mode, MessageWaitType wait);
void checkPartyDead();
diff --git a/engines/xeen/resources.cpp b/engines/xeen/resources.cpp
index fc500ad1ce..03a308d454 100644
--- a/engines/xeen/resources.cpp
+++ b/engines/xeen/resources.cpp
@@ -94,7 +94,8 @@ void Resources::loadData() {
file.syncStrings(ALIGNMENT_NAMES, 3);
file.syncStrings(SEX_NAMES, 2);
file.syncStrings(SKILL_NAMES, 18);
- file.syncStrings(CONDITION_NAMES, 17);
+ file.syncStrings(CONDITION_NAMES_M, 17);
+ file.syncStrings(CONDITION_NAMES_F, 17);
file.syncNumbers(CONDITION_COLORS, 17);
file.syncString(GOOD);
file.syncString(BLESSED);
@@ -176,7 +177,7 @@ void Resources::loadData() {
file.syncString(NOT_ENOUGH_X_IN_THE_Y);
file.syncString(NO_X_IN_THE_Y);
file.syncStrings(STAT_NAMES, 16);
- file.syncStrings(CONSUMABLE_NAMES, 4);
+ file.syncStrings(CONSUMABLE_NAMES, 6);
file.syncStrings(WHERE_NAMES, 2);
file.syncString(AMOUNT);
file.syncString(FOOD_PACKS_FULL);
@@ -300,7 +301,7 @@ void Resources::loadData() {
file.syncStrings(CATEGORY_BACKPACK_IS_FULL, 4);
file.syncString(BUY_X_FOR_Y_GOLD);
file.syncString(SELL_X_FOR_Y_GOLD);
- file.syncStrings(RU_SELL_X_FOR_Y_GOLD_ENDINGS, 2);
+ file.syncStrings(GOLDS, 2);
file.syncString(NO_NEED_OF_THIS);
file.syncString(NOT_RECHARGABLE);
file.syncString(SPELL_FAILED);
diff --git a/engines/xeen/resources.h b/engines/xeen/resources.h
index 6d4beffbfb..02e5f2dd39 100644
--- a/engines/xeen/resources.h
+++ b/engines/xeen/resources.h
@@ -147,7 +147,8 @@ public:
const char *ALIGNMENT_NAMES[3];
const char *SEX_NAMES[2];
const char *SKILL_NAMES[18];
- const char *CONDITION_NAMES[17];
+ const char *CONDITION_NAMES_M[17];
+ const char *CONDITION_NAMES_F[17];
int CONDITION_COLORS[17];
const char *GOOD;
const char *BLESSED;
@@ -229,7 +230,7 @@ public:
const char *NOT_ENOUGH_X_IN_THE_Y;
const char *NO_X_IN_THE_Y;
const char *STAT_NAMES[16];
- const char *CONSUMABLE_NAMES[4];
+ const char *CONSUMABLE_NAMES[6];
const char *WHERE_NAMES[2];
const char *AMOUNT;
const char *FOOD_PACKS_FULL;
@@ -353,7 +354,7 @@ public:
const char *CATEGORY_BACKPACK_IS_FULL[4];
const char *BUY_X_FOR_Y_GOLD;
const char *SELL_X_FOR_Y_GOLD;
- const char *RU_SELL_X_FOR_Y_GOLD_ENDINGS[2];
+ const char *GOLDS[2];
const char *NO_NEED_OF_THIS;
const char *NOT_RECHARGABLE;
const char *SPELL_FAILED;
Commit: 325eb338fed89c3172579b3fdfdac42bdac00f26
https://github.com/scummvm/scummvm/commit/325eb338fed89c3172579b3fdfdac42bdac00f26
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Further sharpening
Added 'Born' gender form and plural form for food
Changed paths:
devtools/create_xeen/constants.cpp
devtools/create_xeen/constants.h
devtools/create_xeen/en_constants.h
devtools/create_xeen/ru_constants.h
dists/engine-data/xeen.ccs
engines/xeen/dialogs/dialogs_char_info.cpp
engines/xeen/dialogs/dialogs_char_info.h
engines/xeen/dialogs/dialogs_items.cpp
engines/xeen/dialogs/dialogs_items.h
engines/xeen/party.cpp
engines/xeen/party.h
engines/xeen/resources.cpp
engines/xeen/resources.h
diff --git a/devtools/create_xeen/constants.cpp b/devtools/create_xeen/constants.cpp
index 0d1e80a768..14cc5007eb 100644
--- a/devtools/create_xeen/constants.cpp
+++ b/devtools/create_xeen/constants.cpp
@@ -179,9 +179,15 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
file.syncStrings(STAT_NAMES(), 16);
delete[] _statNames;
_statNames = NULL;
- file.syncStrings(CONSUMABLE_NAMES(), 6);
+ file.syncStrings(CONSUMABLE_NAMES(), 4);
delete[] _consumableNames;
_consumableNames = NULL;
+ file.syncStrings(CONSUMABLE_GOLD_FORMS(), 1);
+ delete[] _consumableGoldForms;
+ _consumableGoldForms = NULL;
+ file.syncStrings(CONSUMABLE_GEM_FORMS(), 1);
+ delete[] _consumableGemForms;
+ _consumableGemForms = NULL;
file.syncStrings(WHERE_NAMES(), 2);
delete[] _whereNames;
_whereNames = NULL;
@@ -233,6 +239,9 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
file.syncStrings(RATING_TEXT(), 24);
delete[] _ratingText;
_ratingText = NULL;
+ file.syncStrings(BORN(), 2);
+ delete[] _born;
+ _born = NULL;
file.syncString(AGE_TEXT());
file.syncString(LEVEL_TEXT());
file.syncString(RESISTENCES_TEXT());
@@ -240,6 +249,9 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
file.syncString(EXPERIENCE_TEXT());
file.syncString(ELIGIBLE());
file.syncString(IN_PARTY_IN_BANK());
+ file.syncStrings(FOOD_ON_HAND(), 3);
+ delete[] _onHand;
+ _onHand = NULL;
file.syncString(FOOD_TEXT());
file.syncString(EXCHANGE_WITH_WHOM());
file.syncString(QUICK_REF_LINE());
@@ -408,6 +420,9 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
file.syncString(BACKPACKS_FULL_PRESS_KEY());
file.syncString(HIT_A_KEY());
file.syncString(GIVE_TREASURE_FORMATTING());
+ file.syncStrings(FOUND(), 2);
+ delete[] _found;
+ _found = NULL;
file.syncString(X_FOUND_Y());
file.syncString(ON_WHO());
file.syncString(WHICH_ELEMENT1());
@@ -433,7 +448,13 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
file.syncString(WARZONE_LEVEL());
file.syncString(WARZONE_HOW_MANY());
file.syncString(PICKS_THE_LOCK());
+ file.syncStrings(PICK_FORM(), 2);
+ delete[] _pickForm;
+ _pickForm = NULL;
file.syncString(UNABLE_TO_PICK_LOCK());
+ file.syncStrings(UNABLE_TO_PICK_FORM(), 2);
+ delete[] _unableToPickForm;
+ _unableToPickForm = NULL;
file.syncString(CONTROL_PANEL_TEXT());
file.syncString(CONTROL_PANEL_BUTTONS());
file.syncString(ON());
diff --git a/devtools/create_xeen/constants.h b/devtools/create_xeen/constants.h
index 7bfcc25195..8997555d1e 100644
--- a/devtools/create_xeen/constants.h
+++ b/devtools/create_xeen/constants.h
@@ -124,6 +124,8 @@ protected:
const char **_statNames = NULL;
const char **_whereNames = NULL;
const char **_consumableNames = NULL;
+ const char **_consumableGoldForms = NULL;
+ const char **_consumableGemForms = NULL;
const char **_weekDayStrings = NULL;
const char **_ratingText = NULL;
const char **_bonusNames = NULL;
@@ -144,11 +146,16 @@ protected:
const char **_removeDelete = NULL;
const char **_spellCastComponents = NULL;
const char **_monsterSpecialAttacks = NULL;
+ const char **_pickForm = NULL;
+ const char **_unableToPickForm = NULL;
const char **_quickFightOptions = NULL;
const char **_goober = NULL;
const char **_worldEndText = NULL;
const char **_days = NULL;
const char **_sellXForYGoldEndings = NULL;
+ const char **_found = NULL;
+ const char **_born = NULL;
+ const char **_onHand = NULL;
public:
virtual const char *CLOUDS_CREDITS() = 0;
@@ -840,6 +847,8 @@ public:
virtual const char *NO_X_IN_THE_Y() = 0;
virtual const char **STAT_NAMES() = 0;
virtual const char **CONSUMABLE_NAMES() = 0;
+ virtual const char **CONSUMABLE_GOLD_FORMS() = 0;
+ virtual const char **CONSUMABLE_GEM_FORMS() = 0;
virtual const char **WHERE_NAMES() = 0;
virtual const char *AMOUNT() = 0;
virtual const char *FOOD_PACKS_FULL() = 0;
@@ -965,6 +974,7 @@ public:
virtual const char *CURRENT_MAXIMUM_RATING_TEXT() = 0;
virtual const char *CURRENT_MAXIMUM_TEXT() = 0;
virtual const char **RATING_TEXT() = 0;
+ virtual const char **BORN() = 0;
virtual const char *AGE_TEXT() = 0;
virtual const char *LEVEL_TEXT() = 0;
virtual const char *RESISTENCES_TEXT() = 0;
@@ -972,6 +982,7 @@ public:
virtual const char *EXPERIENCE_TEXT() = 0;
virtual const char *ELIGIBLE() = 0;
virtual const char *IN_PARTY_IN_BANK() = 0;
+ virtual const char **FOOD_ON_HAND() = 0;
virtual const char *FOOD_TEXT() = 0;
virtual const char *EXCHANGE_WITH_WHOM() = 0;
virtual const char *QUICK_REF_LINE() = 0;
@@ -1154,6 +1165,7 @@ public:
virtual const char *BACKPACKS_FULL_PRESS_KEY() = 0;
virtual const char *HIT_A_KEY() = 0;
virtual const char *GIVE_TREASURE_FORMATTING() = 0;
+ virtual const char **FOUND() = 0;
virtual const char *X_FOUND_Y() = 0;
virtual const char *ON_WHO() = 0;
virtual const char *WHICH_ELEMENT1() = 0;
@@ -1185,7 +1197,9 @@ public:
virtual const char *WARZONE_LEVEL() = 0;
virtual const char *WARZONE_HOW_MANY() = 0;
virtual const char *PICKS_THE_LOCK() = 0;
+ virtual const char **PICK_FORM() = 0;
virtual const char *UNABLE_TO_PICK_LOCK() = 0;
+ virtual const char **UNABLE_TO_PICK_FORM() = 0;
virtual const char *CONTROL_PANEL_TEXT() = 0;
virtual const char *CONTROL_PANEL_BUTTONS() = 0;
virtual const char *ON() = 0;
diff --git a/devtools/create_xeen/en_constants.h b/devtools/create_xeen/en_constants.h
index e4ac9a7688..867d306aaa 100644
--- a/devtools/create_xeen/en_constants.h
+++ b/devtools/create_xeen/en_constants.h
@@ -561,10 +561,22 @@ public:
const char **CONSUMABLE_NAMES() {
delete[] _consumableNames;
- _consumableNames = new const char *[6] { "Gold", "Gems", "Food", "Condition", "", "" };
+ _consumableNames = new const char *[4] { "Gold", "Gems", "Food", "Condition" };
return _consumableNames;
}
+ const char **CONSUMABLE_GOLD_FORMS() {
+ delete[] _consumableGoldForms;
+ _consumableGoldForms = new const char *[1] { "" };
+ return _consumableGoldForms;
+ }
+
+ const char **CONSUMABLE_GEM_FORMS() {
+ delete[] _consumableGemForms;
+ _consumableGemForms = new const char *[1] { "" };
+ return _consumableGemForms;
+ }
+
const char **WHERE_NAMES() {
delete[] _whereNames;
_whereNames = new const char *[2] { "Party", "Bank" };
@@ -794,13 +806,19 @@ public:
return _ratingText;
}
+ const char **BORN() {
+ delete[] _born;
+ _born = new const char *[2] { "Born", "" };
+ return _born;
+ }
+
const char *AGE_TEXT() {
return "\x2\x3"
"c%s\n"
"Current / Natural\n"
"\x3r\t057%u\x3l\t061/ %u\n"
"\x3"
- "cBorn: %u / %u\x1";
+ "c%s: %u / %u\x1";
}
const char *LEVEL_TEXT() {
@@ -845,10 +863,16 @@ public:
"%u in bank\x1\x3l";
}
+ const char **FOOD_ON_HAND() {
+ delete[] _onHand;
+ _onHand = new const char *[3] { "on hand", "", "" };
+ return _onHand;
+ }
+
const char *FOOD_TEXT() {
return "\x2\x3"
"cParty %s\n"
- "%u on hand\n"
+ "%u %s\n"
"Enough for %u day%s\x3l";
}
@@ -1617,9 +1641,15 @@ public:
"077";
}
+ const char **FOUND() {
+ delete[] _found;
+ _found = new const char *[2] { "found", "" };
+ return _found;
+ }
+
const char *X_FOUND_Y() {
return "\v060\t000\x3"
- "c%s found: %s";
+ "c%s %s: %s";
}
const char *ON_WHO() {
@@ -1748,12 +1778,24 @@ public:
const char *PICKS_THE_LOCK() {
return "\x3"
- "c\v010%s picks the lock!\nPress any key.";
+ "c\v010%s %s the lock!\nPress any key.";
+ }
+
+ const char **PICK_FORM() {
+ delete[] _pickForm;
+ _pickForm = new const char *[2] { "picks", "" };
+ return _pickForm;
}
const char *UNABLE_TO_PICK_LOCK() {
return "\x3"
- "c\v010%s was unable to pick the lock!\nPress any key.";
+ "c\v010%s was %s the lock!\nPress any key.";
+ }
+
+ const char **UNABLE_TO_PICK_FORM() {
+ delete[] _unableToPickForm;
+ _unableToPickForm = new const char *[2] { "unable to pick", "" };
+ return _unableToPickForm;
}
const char *CONTROL_PANEL_TEXT() {
diff --git a/devtools/create_xeen/ru_constants.h b/devtools/create_xeen/ru_constants.h
index 468b1e9c2f..74cd49f4e0 100644
--- a/devtools/create_xeen/ru_constants.h
+++ b/devtools/create_xeen/ru_constants.h
@@ -628,10 +628,22 @@ public:
const char **CONSUMABLE_NAMES() {
delete[] _consumableNames;
- _consumableNames = new const char *[6] { "\x87\xAE\xAB\xAE\xE2\xAE", "\x80\xAB\xAC\xA0\xA7\xEB", "\x8F\xA8\xE9\xA0", "\x91\xAE\xE1\xE2\xAE\xEF\xAD\xA8\xA5", "\x87\xAE\xAB\xAE\xE2\xA0", "\x80\xAB\xAC\xA0\xA7\xAE\xA2" }; // "ÐолоÑо", "ÐлмазÑ", "ÐиÑа", "СоÑÑоÑние", "ÐолоÑа", "Ðлмазов"
+ _consumableNames = new const char *[4] { "\x87\xAE\xAB\xAE\xE2\xAE", "\x80\xAB\xAC\xA0\xA7\xEB", "\x8F\xA8\xE9\xA0", "\x91\xAE\xE1\xE2\xAE\xEF\xAD\xA8\xA5" }; // "ÐолоÑо", "ÐлмазÑ", "ÐиÑа", "СоÑÑоÑние"
return _consumableNames;
}
+ const char **CONSUMABLE_GOLD_FORMS() {
+ delete[] _consumableGoldForms;
+ _consumableGoldForms = new const char *[1] { "\x87\xAE\xAB\xAE\xE2\xA0" }; // "ÐолоÑа"
+ return _consumableGoldForms;
+ }
+
+ const char **CONSUMABLE_GEM_FORMS() {
+ delete[] _consumableGemForms;
+ _consumableGemForms = new const char *[1] { "\x80\xAB\xAC\xA0\xA7\xAE\xA2" }; // "Ðлмазов"
+ return _consumableGemForms;
+ }
+
const char **WHERE_NAMES() {
delete[] _whereNames;
_whereNames = new const char *[2] { "\xE3 \xAE\xE2\xE0\xEF\xA4\xA0", "\xA2 \xA1\xA0\xAD\xAA\xA5" }; // "Ñ Ð¾ÑÑÑда", "в банке"
@@ -869,11 +881,17 @@ public:
return _ratingText;
}
+ const char **BORN() {
+ delete[] _born;
+ _born = new const char *[2] { "\x90\xAE\xA4\xA8\xAB\xE1\xEF", "\x90\xAE\xA4\xA8\xAB\xA0\xE1\xEC" }; // "РодилÑÑ", "РодилаÑÑ"
+ return _born;
+ }
+
const char *AGE_TEXT() {
return "\x2\x3""c%s\n" // "\x2\x3""c%s\n"
"\x92\xA5\xAA\xE3\xE9\xA8\xA9 / \x8D\xA0\xE1\xE2\xAE\xEF\xE9\xA8\xA9\n" // "ТекÑÑий / ÐаÑÑоÑÑий\n"
"\x3""r\t057%u\x3""l\t061/ %u\n" // "\x3""r\t057%u\x3""l\t061/ %u\n"
- "\x3""c\x90\xAE\xA4\xA8\xAB%s: %u / %u\x1"; // "\x3""cРодил%s: %u / %u\x1";
+ "\x3""c%s: %u / %u\x1"; // "\x3""cРодил%s: %u / %u\x1";
}
const char *LEVEL_TEXT() {
@@ -913,9 +931,15 @@ public:
"%lu \xA2 \xA1\xA0\xAD\xAA\xA5\x1\x3""l"; // "%lu в банке\x1\x3""l";
}
+ const char **FOOD_ON_HAND() {
+ delete[] _onHand;
+ _onHand = new const char *[3] { "\xAF\xAE\xE0\xE6\xA8\xEF", "\xAF\xAE\xE0\xE6\xA8\xA8", "\xAF\xAE\xE0\xE6\xA8\xA9" }; // "поÑÑиÑ", "поÑÑии", "поÑÑий"
+ return _onHand;
+ }
+
const char *FOOD_TEXT() {
return "\x2\x3""c%s\n" // "\x2\x3""c%s\n"
- "%u \xAF\xAE\xE0\xE6\xA8%c\n" // "%u поÑÑи%c\n"
+ "%u %s\n" // "%u %s\n"
"\x95\xA2\xA0\xE2\xA8\xE2 \xAD\xA0 %u %s\x1\x3""l"; // "ХваÑÐ¸Ñ Ð½Ð° %u %s\x1\x3""l";
}
@@ -1654,8 +1678,14 @@ public:
"077";
}
+ const char **FOUND() {
+ delete[] _found;
+ _found = new const char *[2] { "\xAD\xA0\xE8\xF1\xAB", "\xAD\xA0\xE8\xAB\xA0" }; // "наÑÑл", "наÑла"
+ return _found;
+ }
+
const char *X_FOUND_Y() {
- return "\v060\t000\x3""c%s \xAD\xA0\xE8%s: %s"; // "\v060\t000\x3""c%s наÑ%s: %s"
+ return "\v060\t000\x3""c%s %s: %s"; // "\v060\t000\x3""c%s %s: %s"
}
const char *ON_WHO() {
@@ -1771,11 +1801,23 @@ public:
}
const char *PICKS_THE_LOCK() {
- return "\x3""c\v010%s \xA2\xA7\xAB\xAE\xAC\xA0\xAB%s \xA7\xA0\xAC\xAE\xAA!\n\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3."; // "\x3""c\v010%s взломал%s замок!\nÐажмиÑе клавиÑÑ."
+ return "\x3""c\v010%s %s \xA7\xA0\xAC\xAE\xAA!\n\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3."; // "\x3""c\v010%s %s замок!\nÐажмиÑе клавиÑÑ."
+ }
+
+ const char **PICK_FORM() {
+ delete[] _pickForm;
+ _pickForm = new const char *[2] { "\xA2\xA7\xAB\xAE\xAC\xA0\xAB", "\xA2\xA7\xAB\xAE\xAC\xA0\xAB\xA0" }; // "взломал", "взломала"
+ return _pickForm;
}
const char *UNABLE_TO_PICK_LOCK() {
- return "\x3""c\v010%s \xAD\xA5 \xE1\xAC\xAE\xA3%s \xA2\xA7\xAB\xAE\xAC\xA0\xE2\xEC \xA7\xA0\xAC\xAE\xAA!\n\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3."; // "\x3""c\v010%s не Ñмог%s взломаÑÑ Ð·Ð°Ð¼Ð¾Ðº!\nÐажмиÑе клавиÑÑ."
+ return "\x3""c\v010%s %s \xA2\xA7\xAB\xAE\xAC\xA0\xE2\xEC \xA7\xA0\xAC\xAE\xAA!\n\x8D\xA0\xA6\xAC\xA8\xE2\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xE3."; // "\x3""c\v010%s %s взломаÑÑ Ð·Ð°Ð¼Ð¾Ðº!\nÐажмиÑе клавиÑÑ."
+ }
+
+ const char **UNABLE_TO_PICK_FORM() {
+ delete[] _unableToPickForm;
+ _unableToPickForm = new const char *[2] { "\xAD\xA5 \xE1\xAC\xAE\xA3", "\xAD\xA5 \xE1\xAC\xAE\xA3\xAB\xA0" }; // "не Ñмог", "не Ñмогла"
+ return _unableToPickForm;
}
const char *CONTROL_PANEL_TEXT() {
diff --git a/dists/engine-data/xeen.ccs b/dists/engine-data/xeen.ccs
index b72c8061ce..495a65cc83 100644
Binary files a/dists/engine-data/xeen.ccs and b/dists/engine-data/xeen.ccs differ
diff --git a/engines/xeen/dialogs/dialogs_char_info.cpp b/engines/xeen/dialogs/dialogs_char_info.cpp
index 24fa595d39..ff631b5d60 100644
--- a/engines/xeen/dialogs/dialogs_char_info.cpp
+++ b/engines/xeen/dialogs/dialogs_char_info.cpp
@@ -278,7 +278,7 @@ void CharacterInfo::addButtons() {
addPartyButtons(_vm);
}
-Common::String CharacterInfo::getDaysPlurals(int val) {
+const char* CharacterInfo::getDaysPlurals(int val) {
if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
int i = val % 100;
if (i < 5 || i > 20)
@@ -294,7 +294,6 @@ Common::String CharacterInfo::getDaysPlurals(int val) {
} else {
return Res.DAYS[val == 1 ? 0 : 1];
}
-
}
Common::String CharacterInfo::loadCharacterDetails(const Character &c) {
@@ -330,7 +329,7 @@ Common::String CharacterInfo::loadCharacterDetails(const Character &c) {
c.statColor(c.getCurrentLevel(), c._level._permanent), c.getCurrentLevel(),
c.getNumSkills(),
foodVal,
- getDaysPlurals(foodVal).c_str(),
+ getDaysPlurals(foodVal),
c.statColor(c.getStat(SPEED), c.getStat(SPEED, true)), c.getStat(SPEED),
c.statColor(c.getArmorClass(), c.getArmorClass(true)), c.getArmorClass(),
c.getNumAwards(),
@@ -351,6 +350,35 @@ void CharacterInfo::showCursor(bool flag) {
}
}
+const char *CharacterInfo::getBornForm(const Character &c) {
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ switch (c._sex) {
+ case MALE:
+ return Res.BORN[0];
+ case FEMALE:
+ return Res.BORN[1];
+ }
+ }
+ return Res.BORN[0];
+}
+
+const char *CharacterInfo::getFoodOnHandPlurals(int food) {
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ int i = food % 100;
+ if (i < 5 || i > 20)
+ switch (food % 10) {
+ case 1:
+ return Res.FOOD_ON_HAND[0];
+ case 2:
+ case 3:
+ case 4:
+ return Res.FOOD_ON_HAND[1];
+ }
+ return Res.FOOD_ON_HAND[2];
+ }
+ return Res.FOOD_ON_HAND[0];
+}
+
bool CharacterInfo::expandStat(int attrib, const Character &c) {
const int STAT_POS[2][20] = {
{
@@ -394,7 +422,7 @@ bool CharacterInfo::expandStat(int attrib, const Character &c) {
stat1 = c.getAge(false);
stat2 = c.getAge(true);
msg = Common::String::format(Res.AGE_TEXT, Res.STAT_NAMES[attrib],
- stat1, stat2, c._birthDay, c._birthYear);
+ stat1, stat2, getBornForm(c), c._birthDay, c._birthYear);
break;
case 8: {
@@ -520,7 +548,7 @@ bool CharacterInfo::expandStat(int attrib, const Character &c) {
// Food
int food = (party._food / party._activeParty.size()) / 3;
msg = Common::String::format(Res.FOOD_TEXT, Res.CONSUMABLE_NAMES[2],
- party._food, food, food != 1 ? "s" : "");
+ party._food, getFoodOnHandPlurals(food), food, getDaysPlurals(food));
break;
}
diff --git a/engines/xeen/dialogs/dialogs_char_info.h b/engines/xeen/dialogs/dialogs_char_info.h
index d1b3580600..e34c803d2e 100644
--- a/engines/xeen/dialogs/dialogs_char_info.h
+++ b/engines/xeen/dialogs/dialogs_char_info.h
@@ -52,7 +52,7 @@ private:
/**
* Get plural day/days form
*/
- Common::String getDaysPlurals(int val);
+ const char* getDaysPlurals(int val);
/**
* Return a string containing the details of the character
@@ -64,6 +64,16 @@ private:
*/
void showCursor(bool flag);
+ /**
+ * Get gender form 'born'
+ */
+ const char *getBornForm(const Character &c);
+
+ /**
+ * Get plural form 'on hand' for food
+ */
+ const char *getFoodOnHandPlurals(int food);
+
bool expandStat(int attrib, const Character &c);
public:
static void show(XeenEngine *vm, int charIndex);
diff --git a/engines/xeen/dialogs/dialogs_items.cpp b/engines/xeen/dialogs/dialogs_items.cpp
index 02cf8f311d..8dacd25ed6 100644
--- a/engines/xeen/dialogs/dialogs_items.cpp
+++ b/engines/xeen/dialogs/dialogs_items.cpp
@@ -752,7 +752,7 @@ int ItemsDialog::calcItemCost(Character *c, int itemIndex, ItemsMode mode,
return (mode == ITEMMODE_CHAR_INFO) ? 0 : result;
}
-Common::String ItemsDialog::getGoldPlurals(int cost) {
+const char* ItemsDialog::getGoldPlurals(int cost) {
if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language")))
return Res.GOLDS[cost % 10 == 1 ? 0 : 1];
return Res.GOLDS[0];
@@ -855,7 +855,7 @@ int ItemsDialog::doItemOptions(Character &c, int actionIndex, int itemIndex, Ite
int cost = calcItemCost(&c, itemIndex, mode, 0, category);
Common::String desc = c._items[category].getFullDescription(itemIndex);
if (Confirm::show(_vm, Common::String::format(Res.BUY_X_FOR_Y_GOLD,
- desc.c_str(), cost, getGoldPlurals(cost).c_str()))) {
+ desc.c_str(), cost, getGoldPlurals(cost)))) {
if (party.subtract(CONS_GOLD, cost, WHERE_PARTY, WT_FREEZE_WAIT)) {
if (ccNum) {
sound.stopSound();
@@ -895,7 +895,7 @@ int ItemsDialog::doItemOptions(Character &c, int actionIndex, int itemIndex, Ite
int cost = calcItemCost(&c, itemIndex, mode, c._skills[MERCHANT], category);
Common::String desc = c._items[category].getFullDescription(itemIndex);
Common::String msg = Common::String::format(Res.SELL_X_FOR_Y_GOLD,
- desc.c_str(), cost, getGoldPlurals(cost).c_str());
+ desc.c_str(), cost, getGoldPlurals(cost));
if (Confirm::show(_vm, msg)) {
// Remove the sold item and add gold to the party's total
diff --git a/engines/xeen/dialogs/dialogs_items.h b/engines/xeen/dialogs/dialogs_items.h
index ce9d258ad5..3429d9fff8 100644
--- a/engines/xeen/dialogs/dialogs_items.h
+++ b/engines/xeen/dialogs/dialogs_items.h
@@ -67,7 +67,7 @@ private:
/**
* Get plural gold form
*/
- Common::String getGoldPlurals(int val);
+ const char* getGoldPlurals(int val);
int doItemOptions(Character &c, int actionIndex, int itemIndex,
ItemCategory category, ItemsMode mode);
diff --git a/engines/xeen/party.cpp b/engines/xeen/party.cpp
index 645100a55a..38e5b8a141 100644
--- a/engines/xeen/party.cpp
+++ b/engines/xeen/party.cpp
@@ -20,6 +20,7 @@
*
*/
+#include "common/config-manager.h"
#include "common/scummsys.h"
#include "common/algorithm.h"
#include "xeen/party.h"
@@ -661,19 +662,18 @@ int Party::subtract(ConsumableType consumableId, uint amount, PartyBank whereId,
return true;
}
-int Party::getConsumableForm(ConsumableType consumableId) {
+const char* Party::getConsumableForm(ConsumableType consumableId) {
switch (consumableId) {
- case CONS_GOLD: return 4;
- case CONS_GEMS: return 5;
+ case CONS_GOLD: return Res.CONSUMABLE_GOLD_FORMS[0];
+ case CONS_GEMS: return Res.CONSUMABLE_GEM_FORMS[0];
}
- return consumableId;
+ return Res.CONSUMABLE_NAMES[consumableId];
}
void Party::notEnough(ConsumableType consumableId, PartyBank whereId, bool mode, MessageWaitType wait) {
- int _tmpConsumableId = getConsumableForm(consumableId);
Common::String msg = Common::String::format(
mode ? Res.NO_X_IN_THE_Y : Res.NOT_ENOUGH_X_IN_THE_Y,
- Res.CONSUMABLE_NAMES[_tmpConsumableId], Res.WHERE_NAMES[whereId]);
+ getConsumableForm(consumableId), Res.WHERE_NAMES[whereId]);
ErrorScroll::show(_vm, msg, wait);
}
@@ -821,6 +821,18 @@ bool Party::arePacksFull() const {
return total == (_activeParty.size() * NUM_ITEM_CATEGORIES);
}
+const char* Party::getFoundForm(const Character& c) {
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ switch (c._sex) {
+ case MALE:
+ return Res.FOUND[0];
+ case FEMALE:
+ return Res.FOUND[1];
+ }
+ }
+ return Res.FOUND[0];
+}
+
void Party::giveTreasureToCharacter(Character &c, ItemCategory category, int itemIndex) {
EventsManager &events = *_vm->_events;
Sound &sound = *_vm->_sound;
@@ -844,9 +856,9 @@ void Party::giveTreasureToCharacter(Character &c, ItemCategory category, int ite
if (index >= (_vm->getGameID() == GType_Swords ? 88 : 82)) {
// Quest item, give an extra '*' prefix
Common::String format = Common::String::format("\f04 * \fd%s", itemName);
- w.writeString(Common::String::format(Res.X_FOUND_Y, c._name.c_str(), format.c_str()));
+ w.writeString(Common::String::format(Res.X_FOUND_Y, c._name.c_str(), getFoundForm(c), format.c_str()));
} else {
- w.writeString(Common::String::format(Res.X_FOUND_Y, c._name.c_str(), itemName));
+ w.writeString(Common::String::format(Res.X_FOUND_Y, c._name.c_str(), getFoundForm(c), itemName));
}
w.update();
@@ -1471,6 +1483,30 @@ bool Party::giveTake(int takeMode, uint takeVal, int giveMode, uint giveVal, int
return false;
}
+const char* Party::getPickLockForm(const Character &c) {
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ switch (c._sex) {
+ case MALE:
+ return Res.PICK_FORM[0];
+ case FEMALE:
+ return Res.PICK_FORM[1];
+ }
+ }
+ return Res.PICK_FORM[0];
+}
+
+const char* Party::getUnablePickLockForm(const Character &c) {
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ switch (c._sex) {
+ case MALE:
+ return Res.UNABLE_TO_PICK_FORM[0];
+ case FEMALE:
+ return Res.UNABLE_TO_PICK_FORM[1];
+ }
+ }
+ return Res.UNABLE_TO_PICK_FORM[0];
+}
+
bool Party::giveExt(int mode1, uint val1, int mode2, uint val2, int mode3, uint val3, int charId) {
Combat &combat = *g_vm->_combat;
FileManager &files = *g_vm->_files;
@@ -1509,14 +1545,14 @@ bool Party::giveExt(int mode1, uint val1, int mode2, uint val2, int mode3, uint
sound.playFX(10);
intf.draw3d(true, false);
- Common::String msg = Common::String::format(Res.PICKS_THE_LOCK, c._name.c_str());
+ Common::String msg = Common::String::format(Res.PICKS_THE_LOCK, c._name.c_str(), getPickLockForm(c));
ErrorScroll::show(g_vm, msg, WT_NONFREEZED_WAIT);
} else {
sound.playFX(21);
obj._frame = 0;
scripts._animCounter = 0;
- Common::String msg = Common::String::format(Res.UNABLE_TO_PICK_LOCK, c._name.c_str());
+ Common::String msg = Common::String::format(Res.UNABLE_TO_PICK_LOCK, c._name.c_str(), getUnablePickLockForm(c));
ErrorScroll::show(g_vm, msg, WT_NONFREEZED_WAIT);
scripts._animCounter = 255;
diff --git a/engines/xeen/party.h b/engines/xeen/party.h
index c0a3be5ef7..44753a76d6 100644
--- a/engines/xeen/party.h
+++ b/engines/xeen/party.h
@@ -157,6 +157,11 @@ private:
static XeenEngine *_vm;
Character _itemsCharacter;
+ /**
+ * Get gender form 'found'
+ */
+ const char* getFoundForm(const Character &c);
+
/**
* Give a treasure item to the given character's inventory
*/
@@ -269,7 +274,7 @@ public:
int subtract(ConsumableType consumableId, uint amount, PartyBank whereId, MessageWaitType wait = WT_FREEZE_WAIT);
- int getConsumableForm(ConsumableType consumableId);
+ const char* getConsumableForm(ConsumableType consumableId);
void notEnough(ConsumableType consumableId, PartyBank whereId, bool mode, MessageWaitType wait);
@@ -297,6 +302,16 @@ public:
*/
bool giveTake(int takeMode, uint takeVal, int giveMode, uint giveVal, int charIdx);
+ /*
+ * Get gender form 'picks'
+ */
+ const char* getPickLockForm(const Character &c);
+
+ /*
+ * Get gender form 'unable to pick'
+ */
+ const char* getUnablePickLockForm(const Character &c);
+
/**
* Gives up to three different item/amounts to various character and/or party properties
*/
diff --git a/engines/xeen/resources.cpp b/engines/xeen/resources.cpp
index 03a308d454..7a17d0180c 100644
--- a/engines/xeen/resources.cpp
+++ b/engines/xeen/resources.cpp
@@ -177,7 +177,9 @@ void Resources::loadData() {
file.syncString(NOT_ENOUGH_X_IN_THE_Y);
file.syncString(NO_X_IN_THE_Y);
file.syncStrings(STAT_NAMES, 16);
- file.syncStrings(CONSUMABLE_NAMES, 6);
+ file.syncStrings(CONSUMABLE_NAMES, 4);
+ file.syncStrings(CONSUMABLE_GOLD_FORMS, 1);
+ file.syncStrings(CONSUMABLE_GEM_FORMS, 1);
file.syncStrings(WHERE_NAMES, 2);
file.syncString(AMOUNT);
file.syncString(FOOD_PACKS_FULL);
@@ -223,6 +225,7 @@ void Resources::loadData() {
file.syncString(CURRENT_MAXIMUM_RATING_TEXT);
file.syncString(CURRENT_MAXIMUM_TEXT);
file.syncStrings(RATING_TEXT, 24);
+ file.syncStrings(BORN, 2);
file.syncString(AGE_TEXT);
file.syncString(LEVEL_TEXT);
file.syncString(RESISTENCES_TEXT);
@@ -230,6 +233,7 @@ void Resources::loadData() {
file.syncString(EXPERIENCE_TEXT);
file.syncString(ELIGIBLE);
file.syncString(IN_PARTY_IN_BANK);
+ file.syncStrings(FOOD_ON_HAND, 3);
file.syncString(FOOD_TEXT);
file.syncString(EXCHANGE_WITH_WHOM);
file.syncString(QUICK_REF_LINE);
@@ -364,6 +368,7 @@ void Resources::loadData() {
file.syncString(BACKPACKS_FULL_PRESS_KEY);
file.syncString(HIT_A_KEY);
file.syncString(GIVE_TREASURE_FORMATTING);
+ file.syncStrings(FOUND, 2);
file.syncString(X_FOUND_Y);
file.syncString(ON_WHO);
file.syncString(WHICH_ELEMENT1);
@@ -387,7 +392,9 @@ void Resources::loadData() {
file.syncString(WARZONE_LEVEL);
file.syncString(WARZONE_HOW_MANY);
file.syncString(PICKS_THE_LOCK);
+ file.syncStrings(PICK_FORM, 2);
file.syncString(UNABLE_TO_PICK_LOCK);
+ file.syncStrings(UNABLE_TO_PICK_FORM, 2);
file.syncString(CONTROL_PANEL_TEXT);
file.syncString(CONTROL_PANEL_BUTTONS);
file.syncString(ON);
diff --git a/engines/xeen/resources.h b/engines/xeen/resources.h
index 02e5f2dd39..378647c5a3 100644
--- a/engines/xeen/resources.h
+++ b/engines/xeen/resources.h
@@ -230,7 +230,9 @@ public:
const char *NOT_ENOUGH_X_IN_THE_Y;
const char *NO_X_IN_THE_Y;
const char *STAT_NAMES[16];
- const char *CONSUMABLE_NAMES[6];
+ const char *CONSUMABLE_NAMES[4];
+ const char *CONSUMABLE_GOLD_FORMS[1];
+ const char *CONSUMABLE_GEM_FORMS[1];
const char *WHERE_NAMES[2];
const char *AMOUNT;
const char *FOOD_PACKS_FULL;
@@ -276,6 +278,7 @@ public:
const char *CURRENT_MAXIMUM_RATING_TEXT;
const char *CURRENT_MAXIMUM_TEXT;
const char *RATING_TEXT[24];
+ const char *BORN[2];
const char *AGE_TEXT;
const char *LEVEL_TEXT;
const char *RESISTENCES_TEXT;
@@ -283,6 +286,7 @@ public:
const char *EXPERIENCE_TEXT;
const char *ELIGIBLE;
const char *IN_PARTY_IN_BANK;
+ const char *FOOD_ON_HAND[3];
const char *FOOD_TEXT;
const char *EXCHANGE_WITH_WHOM;
const char *QUICK_REF_LINE;
@@ -417,6 +421,7 @@ public:
const char *BACKPACKS_FULL_PRESS_KEY;
const char *HIT_A_KEY;
const char *GIVE_TREASURE_FORMATTING;
+ const char *FOUND[2];
const char *X_FOUND_Y;
const char *ON_WHO;
const char *WHICH_ELEMENT1;
@@ -440,7 +445,9 @@ public:
const char *WARZONE_LEVEL;
const char *WARZONE_HOW_MANY;
const char *PICKS_THE_LOCK;
+ const char *PICK_FORM[2];
const char *UNABLE_TO_PICK_LOCK;
+ const char *UNABLE_TO_PICK_FORM[2];
const char *CONTROL_PANEL_TEXT;
const char *CONTROL_PANEL_BUTTONS;
const char *ON;
Commit: 9f80f452e4fecfd985b8d3e25d6e97bda34ce4bf
https://github.com/scummvm/scummvm/commit/9f80f452e4fecfd985b8d3e25d6e97bda34ce4bf
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Translated all constants.h strings for Clouds. Ready for test.
Changed paths:
devtools/create_xeen/en_constants.h
devtools/create_xeen/ru_constants.h
dists/engine-data/xeen.ccs
engines/xeen/dialogs/dialogs_char_info.cpp
engines/xeen/dialogs/dialogs_char_info.h
engines/xeen/dialogs/dialogs_items.cpp
engines/xeen/dialogs/dialogs_items.h
engines/xeen/dialogs/dialogs_quick_ref.cpp
engines/xeen/dialogs/dialogs_quick_ref.h
engines/xeen/party.cpp
engines/xeen/party.h
diff --git a/devtools/create_xeen/en_constants.h b/devtools/create_xeen/en_constants.h
index 867d306aaa..2e01886ad2 100644
--- a/devtools/create_xeen/en_constants.h
+++ b/devtools/create_xeen/en_constants.h
@@ -1359,7 +1359,7 @@ public:
}
const char *FIX_IDENTIFY_GOLD() {
- return "\x3l\v000\t000%s %s\fd for %u gold?";
+ return "\x3l\v000\t000%s %s\fd for %u %s?";
}
const char *IDENTIFY_ITEM_MSG() {
diff --git a/devtools/create_xeen/ru_constants.h b/devtools/create_xeen/ru_constants.h
index 74cd49f4e0..e22dd56aca 100644
--- a/devtools/create_xeen/ru_constants.h
+++ b/devtools/create_xeen/ru_constants.h
@@ -804,28 +804,17 @@ public:
}
const char *CHARACTER_DETAILS() {
- return "\x3"
- "l\v041\t196%s\t000\v002%s : %s %s %s"
- "\x3"
- "r\t053\v028\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3"
- "l\t131\f%02u%d\fd\t196\f15%lu\fd\x3"
- "r"
+ return "\x3""l\v041\t196%s\t000\v002%s : %s %s %s"
+ "\x3""r\t053\v028\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3""l\t131\f%02u%d\fd\t196\f15%lu\fd\x3""r"
"\t053\v051\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3"
- "l\t131\f%02u%u\fd\t196\f15%lu\fd"
- "\x3"
- "r\t053\v074\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3"
- "l\t131\f15%u\fd\t196\f15%lu\fd"
- "\x3"
- "r\t053\v097\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3"
- "l\t131\f15%u\fd\t196\f15%u %s\fd"
- "\x3"
- "r\t053\v120\f%02u%u\fd\t103\f%02u%u\fd"
- "\x3"
- "l\t131\f15%u\fd\t196\f%02u%s\fd"
+ "\x3""l\t131\f%02u%u\fd\t196\f15%lu\fd"
+ "\x3""r\t053\v074\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3""l\t131\f15%u\fd\t196\f15%lu\fd"
+ "\x3""r\t053\v097\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3""l\t131\f15%u\fd\t196\f15%u %s\fd"
+ "\x3""r\t053\v120\f%02u%u\fd\t103\f%02u%u\fd"
+ "\x3""l\t131\f15%u\fd\t196\f%02u%s\fd"
"\t245%s%s%s%s\fd";
}
@@ -1418,7 +1407,7 @@ public:
}
const char *FIX_IDENTIFY_GOLD() {
- return "\x3""l\v000\t000%s %s\fd \xA7\xA0 %lu \xA7\xAE\xAB\xAE\xE2%s?"; // "\x3""l\v000\t000%s %s\fd за %lu золоÑ%s?"
+ return "\x3""l\v000\t000%s %s\fd \xA7\xA0 %lu %s?"; // "\x3""l\v000\t000%s %s\fd за %lu %s?"
}
const char *IDENTIFY_ITEM_MSG() {
diff --git a/dists/engine-data/xeen.ccs b/dists/engine-data/xeen.ccs
index 495a65cc83..56acb55a00 100644
Binary files a/dists/engine-data/xeen.ccs and b/dists/engine-data/xeen.ccs differ
diff --git a/engines/xeen/dialogs/dialogs_char_info.cpp b/engines/xeen/dialogs/dialogs_char_info.cpp
index ff631b5d60..c719962bd1 100644
--- a/engines/xeen/dialogs/dialogs_char_info.cpp
+++ b/engines/xeen/dialogs/dialogs_char_info.cpp
@@ -278,7 +278,7 @@ void CharacterInfo::addButtons() {
addPartyButtons(_vm);
}
-const char* CharacterInfo::getDaysPlurals(int val) {
+const char *CharacterInfo::getDaysPlurals(int val) {
if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
int i = val % 100;
if (i < 5 || i > 20)
diff --git a/engines/xeen/dialogs/dialogs_char_info.h b/engines/xeen/dialogs/dialogs_char_info.h
index e34c803d2e..cde9fadda6 100644
--- a/engines/xeen/dialogs/dialogs_char_info.h
+++ b/engines/xeen/dialogs/dialogs_char_info.h
@@ -52,7 +52,7 @@ private:
/**
* Get plural day/days form
*/
- const char* getDaysPlurals(int val);
+ const char *getDaysPlurals(int val);
/**
* Return a string containing the details of the character
diff --git a/engines/xeen/dialogs/dialogs_items.cpp b/engines/xeen/dialogs/dialogs_items.cpp
index 8dacd25ed6..39a694c25c 100644
--- a/engines/xeen/dialogs/dialogs_items.cpp
+++ b/engines/xeen/dialogs/dialogs_items.cpp
@@ -752,7 +752,7 @@ int ItemsDialog::calcItemCost(Character *c, int itemIndex, ItemsMode mode,
return (mode == ITEMMODE_CHAR_INFO) ? 0 : result;
}
-const char* ItemsDialog::getGoldPlurals(int cost) {
+const char *ItemsDialog::getGoldPlurals(int cost) {
if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language")))
return Res.GOLDS[cost % 10 == 1 ? 0 : 1];
return Res.GOLDS[0];
@@ -933,7 +933,7 @@ int ItemsDialog::doItemOptions(Character &c, int actionIndex, int itemIndex, Ite
Common::String msg = Common::String::format(Res.FIX_IDENTIFY_GOLD,
Res.FIX_IDENTIFY[0],
c._items[category].getFullDescription(itemIndex).c_str(),
- cost);
+ cost, getGoldPlurals(cost));
if (Confirm::show(_vm, msg) && party.subtract(CONS_GOLD, cost, WHERE_PARTY)) {
item._state._broken = false;
@@ -946,7 +946,7 @@ int ItemsDialog::doItemOptions(Character &c, int actionIndex, int itemIndex, Ite
Common::String msg = Common::String::format(Res.FIX_IDENTIFY_GOLD,
Res.FIX_IDENTIFY[1],
c._items[category].getFullDescription(itemIndex).c_str(),
- cost);
+ cost, getGoldPlurals(cost));
if (Confirm::show(_vm, msg) && party.subtract(CONS_GOLD, cost, WHERE_PARTY)) {
Common::String details = c._items[category].getIdentifiedDetails(itemIndex);
diff --git a/engines/xeen/dialogs/dialogs_items.h b/engines/xeen/dialogs/dialogs_items.h
index 3429d9fff8..64d9fccd5e 100644
--- a/engines/xeen/dialogs/dialogs_items.h
+++ b/engines/xeen/dialogs/dialogs_items.h
@@ -67,7 +67,7 @@ private:
/**
* Get plural gold form
*/
- const char* getGoldPlurals(int val);
+ const char *getGoldPlurals(int val);
int doItemOptions(Character &c, int actionIndex, int itemIndex,
ItemCategory category, ItemsMode mode);
diff --git a/engines/xeen/dialogs/dialogs_quick_ref.cpp b/engines/xeen/dialogs/dialogs_quick_ref.cpp
index 329f74f3aa..096be16fd2 100644
--- a/engines/xeen/dialogs/dialogs_quick_ref.cpp
+++ b/engines/xeen/dialogs/dialogs_quick_ref.cpp
@@ -20,6 +20,7 @@
*
*/
+#include "common/config-manager.h"
#include "xeen/dialogs/dialogs_quick_ref.h"
#include "xeen/resources.h"
#include "xeen/xeen.h"
@@ -32,6 +33,24 @@ void QuickReferenceDialog::show(XeenEngine *vm) {
delete dlg;
}
+const char *QuickReferenceDialog::getDaysPlurals(int val) {
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ int i = val % 100;
+ if (i < 5 || i > 20)
+ switch (val % 10) {
+ case 1:
+ return Res.DAYS[0];
+ case 2:
+ case 3:
+ case 4:
+ return Res.DAYS[1];
+ }
+ return Res.DAYS[2];
+ } else {
+ return Res.DAYS[val == 1 ? 0 : 1];
+ }
+}
+
void QuickReferenceDialog::execute() {
Combat &combat = *_vm->_combat;
EventsManager &events = *_vm->_events;
@@ -65,7 +84,7 @@ void QuickReferenceDialog::execute() {
lines[3].c_str(), lines[4].c_str(), lines[5].c_str(),
lines[6].c_str(), lines[7].c_str(),
party._gold, party._gems,
- food, food == 1 ? "" : "s"
+ food, getDaysPlurals(food)
);
Window &w = windows[24];
diff --git a/engines/xeen/dialogs/dialogs_quick_ref.h b/engines/xeen/dialogs/dialogs_quick_ref.h
index 4630043c3f..e320cc4ca7 100644
--- a/engines/xeen/dialogs/dialogs_quick_ref.h
+++ b/engines/xeen/dialogs/dialogs_quick_ref.h
@@ -31,6 +31,11 @@ class QuickReferenceDialog : public ButtonContainer {
private:
QuickReferenceDialog(XeenEngine *vm) : ButtonContainer(vm) {}
+ /**
+ * Get plural day/days form
+ */
+ const char *getDaysPlurals(int val);
+
void execute();
public:
static void show(XeenEngine *vm);
diff --git a/engines/xeen/party.cpp b/engines/xeen/party.cpp
index 38e5b8a141..a2c2982530 100644
--- a/engines/xeen/party.cpp
+++ b/engines/xeen/party.cpp
@@ -662,7 +662,7 @@ int Party::subtract(ConsumableType consumableId, uint amount, PartyBank whereId,
return true;
}
-const char* Party::getConsumableForm(ConsumableType consumableId) {
+const char *Party::getConsumableForm(ConsumableType consumableId) {
switch (consumableId) {
case CONS_GOLD: return Res.CONSUMABLE_GOLD_FORMS[0];
case CONS_GEMS: return Res.CONSUMABLE_GEM_FORMS[0];
@@ -821,7 +821,7 @@ bool Party::arePacksFull() const {
return total == (_activeParty.size() * NUM_ITEM_CATEGORIES);
}
-const char* Party::getFoundForm(const Character& c) {
+const char *Party::getFoundForm(const Character &c) {
if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
switch (c._sex) {
case MALE:
@@ -1483,7 +1483,7 @@ bool Party::giveTake(int takeMode, uint takeVal, int giveMode, uint giveVal, int
return false;
}
-const char* Party::getPickLockForm(const Character &c) {
+const char *Party::getPickLockForm(const Character &c) {
if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
switch (c._sex) {
case MALE:
@@ -1495,7 +1495,7 @@ const char* Party::getPickLockForm(const Character &c) {
return Res.PICK_FORM[0];
}
-const char* Party::getUnablePickLockForm(const Character &c) {
+const char *Party::getUnablePickLockForm(const Character &c) {
if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
switch (c._sex) {
case MALE:
diff --git a/engines/xeen/party.h b/engines/xeen/party.h
index 44753a76d6..ecd6aa247e 100644
--- a/engines/xeen/party.h
+++ b/engines/xeen/party.h
@@ -160,7 +160,7 @@ private:
/**
* Get gender form 'found'
*/
- const char* getFoundForm(const Character &c);
+ const char *getFoundForm(const Character &c);
/**
* Give a treasure item to the given character's inventory
@@ -274,7 +274,7 @@ public:
int subtract(ConsumableType consumableId, uint amount, PartyBank whereId, MessageWaitType wait = WT_FREEZE_WAIT);
- const char* getConsumableForm(ConsumableType consumableId);
+ const char *getConsumableForm(ConsumableType consumableId);
void notEnough(ConsumableType consumableId, PartyBank whereId, bool mode, MessageWaitType wait);
@@ -305,12 +305,12 @@ public:
/*
* Get gender form 'picks'
*/
- const char* getPickLockForm(const Character &c);
+ const char *getPickLockForm(const Character &c);
/*
* Get gender form 'unable to pick'
*/
- const char* getUnablePickLockForm(const Character &c);
+ const char *getUnablePickLockForm(const Character &c);
/**
* Gives up to three different item/amounts to various character and/or party properties
Commit: 15063fb74081175ea9f9dceaef47792d65d29119
https://github.com/scummvm/scummvm/commit/15063fb74081175ea9f9dceaef47792d65d29119
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU change hotkeys in dialogs_char_info, dialogs_control_panel
Changed paths:
engines/xeen/dialogs/dialogs_char_info.cpp
engines/xeen/dialogs/dialogs_control_panel.cpp
diff --git a/engines/xeen/dialogs/dialogs_char_info.cpp b/engines/xeen/dialogs/dialogs_char_info.cpp
index c719962bd1..d1daf0ced0 100644
--- a/engines/xeen/dialogs/dialogs_char_info.cpp
+++ b/engines/xeen/dialogs/dialogs_char_info.cpp
@@ -175,6 +175,10 @@ void CharacterInfo::execute(int charIndex) {
break;
}
+ case Common::KEYCODE_c:
+ if (Common::RU_RUS != Common::parseLanguage(ConfMan.get("language"))) {
+ break;
+ }
case Common::KEYCODE_e:
if (oldMode == MODE_COMBAT) {
ErrorScroll::show(_vm, Res.EXCHANGING_IN_COMBAT, WT_FREEZE_WAIT);
@@ -186,6 +190,10 @@ void CharacterInfo::execute(int charIndex) {
}
break;
+ case Common::KEYCODE_d:
+ if (Common::RU_RUS != Common::parseLanguage(ConfMan.get("language"))) {
+ break;
+ }
case Common::KEYCODE_i:
_vm->_mode = oldMode;
_vm->_combat->_itemFlag = _vm->_mode == MODE_COMBAT;
@@ -200,6 +208,10 @@ void CharacterInfo::execute(int charIndex) {
redrawFlag = true;
break;
+ case Common::KEYCODE_COMMA:
+ if (Common::RU_RUS != Common::parseLanguage(ConfMan.get("language"))) {
+ break;
+ }
case Common::KEYCODE_q:
QuickReferenceDialog::show(_vm);
redrawFlag = true;
@@ -271,9 +283,15 @@ void CharacterInfo::addButtons() {
addButton(Common::Rect(177, 70, 201, 90), 1018, &_iconSprites);
addButton(Common::Rect(177, 93, 201, 113), 1019, &_iconSprites);
addButton(Common::Rect(177, 116, 201, 136), 1020, &_iconSprites);
- addButton(Common::Rect(285, 11, 309, 31), Common::KEYCODE_i, &_iconSprites);
- addButton(Common::Rect(285, 43, 309, 63), Common::KEYCODE_q, &_iconSprites);
- addButton(Common::Rect(285, 75, 309, 95), Common::KEYCODE_e, &_iconSprites);
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ addButton(Common::Rect(285, 11, 309, 31), Common::KEYCODE_d, &_iconSprites); // russian key Â
+ addButton(Common::Rect(285, 43, 309, 63), Common::KEYCODE_COMMA, &_iconSprites); // russian key Á
+ addButton(Common::Rect(285, 75, 309, 95), Common::KEYCODE_c, &_iconSprites); // russian key Ñ
+ } else {
+ addButton(Common::Rect(285, 11, 309, 31), Common::KEYCODE_i, &_iconSprites);
+ addButton(Common::Rect(285, 43, 309, 63), Common::KEYCODE_q, &_iconSprites);
+ addButton(Common::Rect(285, 75, 309, 95), Common::KEYCODE_e, &_iconSprites);
+ }
addButton(Common::Rect(285, 107, 309, 127), Common::KEYCODE_ESCAPE, &_iconSprites);
addPartyButtons(_vm);
}
diff --git a/engines/xeen/dialogs/dialogs_control_panel.cpp b/engines/xeen/dialogs/dialogs_control_panel.cpp
index 80d1715ff7..610f53b857 100644
--- a/engines/xeen/dialogs/dialogs_control_panel.cpp
+++ b/engines/xeen/dialogs/dialogs_control_panel.cpp
@@ -20,6 +20,7 @@
*
*/
+#include "common/config-manager.h"
#include "xeen/dialogs/dialogs_control_panel.h"
#include "xeen/dialogs/dialogs_query.h"
#include "xeen/party.h"
@@ -84,6 +85,10 @@ int ControlPanel::execute() {
} while (!_buttonValue && events.timeElapsed() < 2);
switch (_buttonValue) {
+ case Common::KEYCODE_d:
+ if (Common::RU_RUS != Common::parseLanguage(ConfMan.get("language"))) {
+ break;
+ }
case Common::KEYCODE_q:
if (Confirm::show(g_vm, Res.CONFIRM_QUIT)) {
g_vm->_gameMode = GMODE_QUIT;
@@ -91,6 +96,12 @@ int ControlPanel::execute() {
}
break;
+ case Common::KEYCODE_g:
+ // Goober cheat sequence
+ debugCtr = 1;
+ if (Common::RU_RUS != Common::parseLanguage(ConfMan.get("language"))) {
+ break;
+ }
case Common::KEYCODE_w:
if (Confirm::show(g_vm, Res.MR_WIZARD)) {
w.close();
@@ -114,6 +125,10 @@ int ControlPanel::execute() {
}
break;
+ case Common::KEYCODE_p:
+ if (Common::RU_RUS != Common::parseLanguage(ConfMan.get("language"))) {
+ break;
+ }
case Common::KEYCODE_l:
if (_vm->_mode == MODE_COMBAT) {
ErrorScroll::show(_vm, Res.NO_LOADING_IN_COMBAT);
@@ -123,6 +138,10 @@ int ControlPanel::execute() {
}
break;
+ case Common::KEYCODE_c:
+ if (Common::RU_RUS != Common::parseLanguage(ConfMan.get("language"))) {
+ break;
+ }
case Common::KEYCODE_s:
if (_vm->_mode == MODE_COMBAT) {
ErrorScroll::show(_vm, Res.NO_SAVING_IN_COMBAT);
@@ -136,6 +155,10 @@ int ControlPanel::execute() {
sound.setFxOn(!sound._fxOn);
break;
+ case Common::KEYCODE_v:
+ if (Common::RU_RUS != Common::parseLanguage(ConfMan.get("language"))) {
+ break;
+ }
case Common::KEYCODE_m:
sound.setMusicOn(!sound._musicOn);
break;
@@ -145,9 +168,6 @@ int ControlPanel::execute() {
break;
// Goober cheat sequence
- case Common::KEYCODE_g:
- debugCtr = 1;
- break;
case Common::KEYCODE_o:
debugCtr = (debugCtr == 1 || debugCtr == 2) ? 2 : 0;
break;
@@ -181,18 +201,27 @@ int ControlPanel::execute() {
void ControlPanel::loadButtons() {
_iconSprites.load("cpanel.icn");
-
- addButton(Common::Rect(214, 56, 244, 69), Common::KEYCODE_e, 0, &_iconSprites);
- addButton(Common::Rect(214, 75, 244, 88), Common::KEYCODE_m, 0, &_iconSprites);
- addButton(Common::Rect(135, 56, 165, 69), Common::KEYCODE_l, 0, &_iconSprites);
- addButton(Common::Rect(135, 75, 165, 88), Common::KEYCODE_s, 0, &_iconSprites);
-
- // For ScummVM we've merged both Save and Save As into a single
- // save item, so we don't need this one
- addButton(Common::Rect(), 0);
-
- addButton(Common::Rect(135, 94, 165, 107), Common::KEYCODE_q, 0, &_iconSprites);
- addButton(Common::Rect(175, 113, 205, 126), Common::KEYCODE_w, 0, &_iconSprites);
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ addButton(Common::Rect(214, 56, 244, 69), Common::KEYCODE_e, 0, &_iconSprites); // russian key Ó
+ addButton(Common::Rect(214, 75, 244, 88), Common::KEYCODE_v, 0, &_iconSprites); // russian key Ì
+ addButton(Common::Rect(135, 56, 165, 69), Common::KEYCODE_p, 0, &_iconSprites); // russian key Ç
+ addButton(Common::Rect(135, 75, 165, 88), Common::KEYCODE_c, 0, &_iconSprites); // russian key Ñ
+ addButton(Common::Rect(135, 94, 165, 107), Common::KEYCODE_d, 0, &_iconSprites); // russian key Â
+ addButton(Common::Rect(175, 113, 205, 126), Common::KEYCODE_g, 0, &_iconSprites); // russian key Ï
+ } else {
+
+ addButton(Common::Rect(214, 56, 244, 69), Common::KEYCODE_e, 0, &_iconSprites);
+ addButton(Common::Rect(214, 75, 244, 88), Common::KEYCODE_m, 0, &_iconSprites);
+ addButton(Common::Rect(135, 56, 165, 69), Common::KEYCODE_l, 0, &_iconSprites);
+ addButton(Common::Rect(135, 75, 165, 88), Common::KEYCODE_s, 0, &_iconSprites);
+
+ // For ScummVM we've merged both Save and Save As into a single
+ // save item, so we don't need this one
+ addButton(Common::Rect(), 0);
+
+ addButton(Common::Rect(135, 94, 165, 107), Common::KEYCODE_q, 0, &_iconSprites);
+ addButton(Common::Rect(175, 113, 205, 126), Common::KEYCODE_w, 0, &_iconSprites);
+ }
}
Common::String ControlPanel::getButtonText() {
Commit: 587031a2e5e2721312c375ad8ea18735f601398c
https://github.com/scummvm/scummvm/commit/587031a2e5e2721312c375ad8ea18735f601398c
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Further sharpening
change hotkeys in dialogs_create_char, dialogs_difficulty
Changed paths:
devtools/create_xeen/constants.cpp
devtools/create_xeen/constants.h
devtools/create_xeen/en_constants.h
devtools/create_xeen/ru_constants.h
dists/engine-data/xeen.ccs
engines/xeen/dialogs/dialogs_char_info.cpp
engines/xeen/dialogs/dialogs_control_panel.cpp
engines/xeen/dialogs/dialogs_create_char.cpp
engines/xeen/dialogs/dialogs_difficulty.cpp
engines/xeen/font.cpp
diff --git a/devtools/create_xeen/constants.cpp b/devtools/create_xeen/constants.cpp
index 14cc5007eb..bff86704bc 100644
--- a/devtools/create_xeen/constants.cpp
+++ b/devtools/create_xeen/constants.cpp
@@ -400,7 +400,7 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
file.syncString(SELECT_CLASS_BEFORE_SAVING());
file.syncString(EXCHANGE_ATTR_WITH());
file.syncNumbers((const int *)NEW_CHAR_SKILLS, 10);
- file.syncNumbers((const int *)NEW_CHAR_SKILLS_OFFSET, 10);
+ file.syncNumbers((const int *)NEW_CHAR_SKILLS_OFFSET(), 10);
file.syncNumbers((const int *)NEW_CHAR_SKILLS_LEN, 10);
file.syncNumbers((const int *)NEW_CHAR_RACE_SKILLS, 10);
file.syncNumbers((const int *)RACE_MAGIC_RESISTENCES, 5);
diff --git a/devtools/create_xeen/constants.h b/devtools/create_xeen/constants.h
index 8997555d1e..c523210142 100644
--- a/devtools/create_xeen/constants.h
+++ b/devtools/create_xeen/constants.h
@@ -156,6 +156,7 @@ protected:
const char **_found = NULL;
const char **_born = NULL;
const char **_onHand = NULL;
+ const int *_newCharSkillsOffset = NULL;
public:
virtual const char *CLOUDS_CREDITS() = 0;
@@ -1134,7 +1135,7 @@ public:
virtual const char *EXCHANGE_ATTR_WITH() = 0;
const int NEW_CHAR_SKILLS[10] = { 1, 5, -1, -1, 4, 0, 0, -1, 6, 11 };
- const int NEW_CHAR_SKILLS_OFFSET[10] = { 0, 0, 0, 5, 0, 0, 0, 0, 0, 0 };
+ virtual const int *NEW_CHAR_SKILLS_OFFSET() = 0;
const int NEW_CHAR_SKILLS_LEN[10] = { 11, 8, 0, 0, 12, 8, 8, 0, 9, 11 };
const int NEW_CHAR_RACE_SKILLS[10] = { 14, -1, 17, 16, -1, 0, 0, 0, 0, 0 };
diff --git a/devtools/create_xeen/en_constants.h b/devtools/create_xeen/en_constants.h
index 2e01886ad2..e20c4fdb1c 100644
--- a/devtools/create_xeen/en_constants.h
+++ b/devtools/create_xeen/en_constants.h
@@ -1574,6 +1574,12 @@ public:
return "Exchange %s with...";
}
+ const int *NEW_CHAR_SKILLS_OFFSET() {
+ delete[] _newCharSkillsOffset;
+ _newCharSkillsOffset = new const int [10] { 0, 0, 0, 5, 0, 0, 0, 0, 0, 0 };
+ return _newCharSkillsOffset;
+ }
+
const char *COMBAT_DETAILS() {
return "\r\f00\x3"
"c\v000\t000\x2"
diff --git a/devtools/create_xeen/ru_constants.h b/devtools/create_xeen/ru_constants.h
index e22dd56aca..1dfdb6a218 100644
--- a/devtools/create_xeen/ru_constants.h
+++ b/devtools/create_xeen/ru_constants.h
@@ -293,13 +293,14 @@ public:
const char **SKILL_NAMES() {
delete[] _skillNames;
_skillNames = new const char *[18] {
- "\x82\xAE\xE0\xAE\xA2\xE1\xE2\xA2\xAE\t100", // "ÐоÑовÑÑво\t100",
+ "\x82\xAE\xE0\xAE\xA2\xE1\xE2\xA2\xAE\t100", // "ÐоÑовÑÑво\t100",
"\x8E\xE0\xE3\xA6\xA5\xA9\xAD\xA8\xAA", // "ÐÑÑжейник",
"\x80\xE1\xE2\xE0\xAE\xAB\xAE\xA3", // "ÐÑÑÑолог",
"\x80\xE2\xAB\xA5\xE2", // "ÐÑлеÑ",
"\x8A\xA0\xE0\xE2\xAE\xA3\xE0\xA0\xE4", // "ÐаÑÑогÑаÑ",
"\x8A\xE0\xA5\xE1\xE2\xAE\xAD\xAE\xE1\xA5\xE6", // "ÐÑеÑÑоноÑеÑ",
- "\x97\xE3\xA2\xE1\xE2\xA2\xAE \xAD\xA0\xAF\xE0\xA0\xA2\xAB\xA5\xAD\xA8\xEF", // "ЧÑвÑÑво напÑавлениÑ",
+ "\x97\xE3\xA2\xE1\xE2\xA2\xAE \xAD\xA0\xAF\xE0.", // "ЧÑвÑÑво напÑ.",
+ //"\x97\xE3\xA2\xE1\xE2\xA2\xAE \xAD\xA0\xAF\xE0\xA0\xA2\xAB\xA5\xAD\xA8\xEF", // "ЧÑвÑÑво напÑавлениÑ",
"\x9F\xA7\xEB\xAA\xAE\xA2\xA5\xA4", // "ЯзÑковед",
"\x8A\xE3\xAF\xA5\xE6", // "ÐÑпеÑ",
"\x91\xAA\xA0\xAB\xAE\xAB\xA0\xA7", // "Скалолаз",
@@ -310,7 +311,8 @@ public:
"\x8F\xAB\xAE\xA2\xA5\xE6", // "ÐловеÑ",
"\x8E\xE5\xAE\xE2\xAD\xA8\xAA", // "ÐÑ
оÑник",
"\x82\xAE\xE1\xAF\xE0\xA8\xEF\xE2\xA8\xA5", // "ÐоÑпÑиÑÑие",
- "\x97\xE3\xA2\xE1\xE2\xA2\xAE \xAE\xAF\xA0\xE1\xAD\xAE\xE1\xE2\xA8" // "ЧÑвÑÑво опаÑноÑÑи"
+ "\x97\xE3\xA2\xE1\xE2\xA2\xAE \xAE\xAF\xA0\xE1\xAD." // "ЧÑвÑÑво опаÑн."
+ //"\x97\xE3\xA2\xE1\xE2\xA2\xAE \xAE\xAF\xA0\xE1\xAD\xAE\xE1\xE2\xA8" // "ЧÑвÑÑво опаÑноÑÑи"
};
return _skillNames;
}
@@ -1609,6 +1611,12 @@ public:
return "\x8F\xAE\xAC\xA5\xAD\xEF\xE2\xEC %s \xE1..."; // "ÐоменÑÑÑ %s Ñ..."
}
+ const int *NEW_CHAR_SKILLS_OFFSET() {
+ delete[] _newCharSkillsOffset;
+ _newCharSkillsOffset = new const int[10]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+ return _newCharSkillsOffset;
+ }
+
const char *COMBAT_DETAILS() {
return "\r\f00\x3""c\v000\t000\x2%s%s%s\x1"; // "\r\f00\x3""c\v000\t000\x2%s%s%s\x1"
}
diff --git a/dists/engine-data/xeen.ccs b/dists/engine-data/xeen.ccs
index 56acb55a00..a42f8af76e 100644
Binary files a/dists/engine-data/xeen.ccs and b/dists/engine-data/xeen.ccs differ
diff --git a/engines/xeen/dialogs/dialogs_char_info.cpp b/engines/xeen/dialogs/dialogs_char_info.cpp
index d1daf0ced0..c17d9c4470 100644
--- a/engines/xeen/dialogs/dialogs_char_info.cpp
+++ b/engines/xeen/dialogs/dialogs_char_info.cpp
@@ -81,147 +81,271 @@ void CharacterInfo::execute(int charIndex) {
}
events.clearEvents();
- switch (_buttonValue) {
- case Common::KEYCODE_F1:
- case Common::KEYCODE_F2:
- case Common::KEYCODE_F3:
- case Common::KEYCODE_F4:
- case Common::KEYCODE_F5:
- case Common::KEYCODE_F6:
- _buttonValue -= Common::KEYCODE_F1;
- if (_buttonValue < (int)(oldMode == MODE_COMBAT ? combat._combatParty.size() : party._activeParty.size())) {
- charIndex = _buttonValue;
- c = (oldMode != MODE_COMBAT) ? &party._activeParty[charIndex] : combat._combatParty[charIndex];
-
- intf.highlightChar(_buttonValue);
- redrawFlag = true;
- } else {
- _vm->_mode = MODE_CHARACTER_INFO;
- }
- break;
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ switch (_buttonValue) {
+ case Common::KEYCODE_F1:
+ case Common::KEYCODE_F2:
+ case Common::KEYCODE_F3:
+ case Common::KEYCODE_F4:
+ case Common::KEYCODE_F5:
+ case Common::KEYCODE_F6:
+ _buttonValue -= Common::KEYCODE_F1;
+ if (_buttonValue < (int)(oldMode == MODE_COMBAT ? combat._combatParty.size() : party._activeParty.size())) {
+ charIndex = _buttonValue;
+ c = (oldMode != MODE_COMBAT) ? &party._activeParty[charIndex] : combat._combatParty[charIndex];
+
+ intf.highlightChar(_buttonValue);
+ redrawFlag = true;
+ } else {
+ _vm->_mode = MODE_CHARACTER_INFO;
+ }
+ break;
- case Common::KEYCODE_UP:
- case Common::KEYCODE_KP8:
- if (_cursorCell > 0) {
- showCursor(false);
- --_cursorCell;
- showCursor(true);
- }
- w.update();
- break;
+ case Common::KEYCODE_UP:
+ case Common::KEYCODE_KP8:
+ if (_cursorCell > 0) {
+ showCursor(false);
+ --_cursorCell;
+ showCursor(true);
+ }
+ w.update();
+ break;
- case Common::KEYCODE_DOWN:
- case Common::KEYCODE_KP2:
- if (_cursorCell < 20) {
- showCursor(false);
- ++_cursorCell;
- showCursor(true);
- }
- w.update();
- break;
+ case Common::KEYCODE_DOWN:
+ case Common::KEYCODE_KP2:
+ if (_cursorCell < 20) {
+ showCursor(false);
+ ++_cursorCell;
+ showCursor(true);
+ }
+ w.update();
+ break;
- case Common::KEYCODE_LEFT:
- case Common::KEYCODE_KP4:
- if (_cursorCell >= 5) {
- showCursor(false);
- _cursorCell -= 5;
- showCursor(true);
- }
- w.update();
- break;
+ case Common::KEYCODE_LEFT:
+ case Common::KEYCODE_KP4:
+ if (_cursorCell >= 5) {
+ showCursor(false);
+ _cursorCell -= 5;
+ showCursor(true);
+ }
+ w.update();
+ break;
+
+ case Common::KEYCODE_RIGHT:
+ case Common::KEYCODE_KP6:
+ if (_cursorCell <= 15) {
+ showCursor(false);
+ _cursorCell += 5;
+ showCursor(true);
+ }
+ w.update();
+ break;
- case Common::KEYCODE_RIGHT:
- case Common::KEYCODE_KP6:
- if (_cursorCell <= 15) {
+ case 1001:
+ case 1002:
+ case 1003:
+ case 1004:
+ case 1005:
+ case 1006:
+ case 1007:
+ case 1008:
+ case 1009:
+ case 1010:
+ case 1011:
+ case 1012:
+ case 1013:
+ case 1014:
+ case 1015:
+ case 1016:
+ case 1017:
+ case 1018:
+ case 1019:
+ case 1020:
showCursor(false);
- _cursorCell += 5;
+ _cursorCell = _buttonValue - 1001;
showCursor(true);
+ w.update();
+ // fall through
+
+ case Common::KEYCODE_RETURN:
+ case Common::KEYCODE_KP_ENTER: {
+ bool result = expandStat(_cursorCell, *c);
+ _vm->_mode = MODE_COMBAT;
+ if (result)
+ redrawFlag = true;
+ break;
}
- w.update();
- break;
-
- case 1001:
- case 1002:
- case 1003:
- case 1004:
- case 1005:
- case 1006:
- case 1007:
- case 1008:
- case 1009:
- case 1010:
- case 1011:
- case 1012:
- case 1013:
- case 1014:
- case 1015:
- case 1016:
- case 1017:
- case 1018:
- case 1019:
- case 1020:
- showCursor(false);
- _cursorCell = _buttonValue - 1001;
- showCursor(true);
- w.update();
- // fall through
-
- case Common::KEYCODE_RETURN:
- case Common::KEYCODE_KP_ENTER: {
- bool result = expandStat(_cursorCell, *c);
- _vm->_mode = MODE_COMBAT;
- if (result)
- redrawFlag = true;
- break;
- }
- case Common::KEYCODE_c:
- if (Common::RU_RUS != Common::parseLanguage(ConfMan.get("language"))) {
+ // Ñ ({Ñ}ìåí)
+ case Common::KEYCODE_c: // russian key Ñ
+ if (oldMode == MODE_COMBAT) {
+ ErrorScroll::show(_vm, Res.EXCHANGING_IN_COMBAT, WT_FREEZE_WAIT);
+ } else {
+ _vm->_mode = oldMode;
+ ExchangeDialog::show(_vm, c, charIndex);
+ _vm->_mode = MODE_CHARACTER_INFO;
+ redrawFlag = true;
+ }
break;
- }
- case Common::KEYCODE_e:
- if (oldMode == MODE_COMBAT) {
- ErrorScroll::show(_vm, Res.EXCHANGING_IN_COMBAT, WT_FREEZE_WAIT);
- } else {
+
+ // Â ({Â}åùè)
+ case Common::KEYCODE_d: // russian key Â
_vm->_mode = oldMode;
- ExchangeDialog::show(_vm, c, charIndex);
+ _vm->_combat->_itemFlag = _vm->_mode == MODE_COMBAT;
+ c = ItemsDialog::show(_vm, c, ITEMMODE_CHAR_INFO);
+
+ if (!c) {
+ party._stepped = true;
+ goto exit;
+ }
+
_vm->_mode = MODE_CHARACTER_INFO;
redrawFlag = true;
- }
- break;
+ break;
- case Common::KEYCODE_d:
- if (Common::RU_RUS != Common::parseLanguage(ConfMan.get("language"))) {
+ // Á ({Á}ñòð)
+ case Common::KEYCODE_COMMA: // russian key Á
+ QuickReferenceDialog::show(_vm);
+ redrawFlag = true;
break;
- }
- case Common::KEYCODE_i:
- _vm->_mode = oldMode;
- _vm->_combat->_itemFlag = _vm->_mode == MODE_COMBAT;
- c = ItemsDialog::show(_vm, c, ITEMMODE_CHAR_INFO);
- if (!c) {
- party._stepped = true;
+ case Common::KEYCODE_ESCAPE:
goto exit;
+
+ default:
+ break;
}
+ } else {
+ switch (_buttonValue) {
+ case Common::KEYCODE_F1:
+ case Common::KEYCODE_F2:
+ case Common::KEYCODE_F3:
+ case Common::KEYCODE_F4:
+ case Common::KEYCODE_F5:
+ case Common::KEYCODE_F6:
+ _buttonValue -= Common::KEYCODE_F1;
+ if (_buttonValue < (int)(oldMode == MODE_COMBAT ? combat._combatParty.size() : party._activeParty.size())) {
+ charIndex = _buttonValue;
+ c = (oldMode != MODE_COMBAT) ? &party._activeParty[charIndex] : combat._combatParty[charIndex];
+
+ intf.highlightChar(_buttonValue);
+ redrawFlag = true;
+ } else {
+ _vm->_mode = MODE_CHARACTER_INFO;
+ }
+ break;
+
+ case Common::KEYCODE_UP:
+ case Common::KEYCODE_KP8:
+ if (_cursorCell > 0) {
+ showCursor(false);
+ --_cursorCell;
+ showCursor(true);
+ }
+ w.update();
+ break;
+
+ case Common::KEYCODE_DOWN:
+ case Common::KEYCODE_KP2:
+ if (_cursorCell < 20) {
+ showCursor(false);
+ ++_cursorCell;
+ showCursor(true);
+ }
+ w.update();
+ break;
- _vm->_mode = MODE_CHARACTER_INFO;
- redrawFlag = true;
- break;
+ case Common::KEYCODE_LEFT:
+ case Common::KEYCODE_KP4:
+ if (_cursorCell >= 5) {
+ showCursor(false);
+ _cursorCell -= 5;
+ showCursor(true);
+ }
+ w.update();
+ break;
+
+ case Common::KEYCODE_RIGHT:
+ case Common::KEYCODE_KP6:
+ if (_cursorCell <= 15) {
+ showCursor(false);
+ _cursorCell += 5;
+ showCursor(true);
+ }
+ w.update();
+ break;
- case Common::KEYCODE_COMMA:
- if (Common::RU_RUS != Common::parseLanguage(ConfMan.get("language"))) {
+ case 1001:
+ case 1002:
+ case 1003:
+ case 1004:
+ case 1005:
+ case 1006:
+ case 1007:
+ case 1008:
+ case 1009:
+ case 1010:
+ case 1011:
+ case 1012:
+ case 1013:
+ case 1014:
+ case 1015:
+ case 1016:
+ case 1017:
+ case 1018:
+ case 1019:
+ case 1020:
+ showCursor(false);
+ _cursorCell = _buttonValue - 1001;
+ showCursor(true);
+ w.update();
+ // fall through
+
+ case Common::KEYCODE_RETURN:
+ case Common::KEYCODE_KP_ENTER: {
+ bool result = expandStat(_cursorCell, *c);
+ _vm->_mode = MODE_COMBAT;
+ if (result)
+ redrawFlag = true;
break;
}
- case Common::KEYCODE_q:
- QuickReferenceDialog::show(_vm);
- redrawFlag = true;
- break;
- case Common::KEYCODE_ESCAPE:
- goto exit;
+ case Common::KEYCODE_e:
+ if (oldMode == MODE_COMBAT) {
+ ErrorScroll::show(_vm, Res.EXCHANGING_IN_COMBAT, WT_FREEZE_WAIT);
+ } else {
+ _vm->_mode = oldMode;
+ ExchangeDialog::show(_vm, c, charIndex);
+ _vm->_mode = MODE_CHARACTER_INFO;
+ redrawFlag = true;
+ }
+ break;
+
+ case Common::KEYCODE_i:
+ _vm->_mode = oldMode;
+ _vm->_combat->_itemFlag = _vm->_mode == MODE_COMBAT;
+ c = ItemsDialog::show(_vm, c, ITEMMODE_CHAR_INFO);
+
+ if (!c) {
+ party._stepped = true;
+ goto exit;
+ }
+
+ _vm->_mode = MODE_CHARACTER_INFO;
+ redrawFlag = true;
+ break;
+
+ case Common::KEYCODE_q:
+ QuickReferenceDialog::show(_vm);
+ redrawFlag = true;
+ break;
+
+ case Common::KEYCODE_ESCAPE:
+ goto exit;
- default:
- break;
+ default:
+ break;
+ }
}
} while (!_vm->shouldExit());
exit:
diff --git a/engines/xeen/dialogs/dialogs_control_panel.cpp b/engines/xeen/dialogs/dialogs_control_panel.cpp
index 610f53b857..84dce62c97 100644
--- a/engines/xeen/dialogs/dialogs_control_panel.cpp
+++ b/engines/xeen/dialogs/dialogs_control_panel.cpp
@@ -84,105 +84,175 @@ int ControlPanel::execute() {
return 0;
} while (!_buttonValue && events.timeElapsed() < 2);
- switch (_buttonValue) {
- case Common::KEYCODE_d:
- if (Common::RU_RUS != Common::parseLanguage(ConfMan.get("language"))) {
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ switch (_buttonValue) {
+ // Â ({Â}ûõîä)
+ case Common::KEYCODE_d: // russian key Â
+ if (Confirm::show(g_vm, Res.CONFIRM_QUIT)) {
+ g_vm->_gameMode = GMODE_QUIT;
+ result = 1;
+ }
break;
- }
- case Common::KEYCODE_q:
- if (Confirm::show(g_vm, Res.CONFIRM_QUIT)) {
- g_vm->_gameMode = GMODE_QUIT;
+
+ // Ï ({Ï}îìîùü)
+ case Common::KEYCODE_g: // russian key Ï
+ debugCtr = 1; // Goober cheat sequence
+
+ if (Confirm::show(g_vm, Res.MR_WIZARD)) {
+ w.close();
+ if (!windows[2]._enabled) {
+ sound.playFX(51);
+
+ if (g_vm->getGameID() == GType_WorldOfXeen) {
+ map._loadCcNum = 0;
+ map.load(28);
+ party._mazeDirection = DIR_EAST;
+ } else {
+ map._loadCcNum = 1;
+ map.load(29);
+ party._mazeDirection = DIR_SOUTH;
+ }
+ party.moveToRunLocation();
+ }
+
+ party._gems = 0;
+ result = 2;
+ }
+ break;
+
+ // Ç ({Ç}àãðóçèòü)
+ case Common::KEYCODE_p: // russian key Ç
+ if (_vm->_mode == MODE_COMBAT) {
+ ErrorScroll::show(_vm, Res.NO_LOADING_IN_COMBAT);
+ } else {
+ // Close dialog and show loading dialog
+ result = 3;
+ }
+ break;
+
+ // Ñ ({Ñ}îõðàíèòü)
+ case Common::KEYCODE_c: // russian key Ñ
+ if (_vm->_mode == MODE_COMBAT) {
+ ErrorScroll::show(_vm, Res.NO_SAVING_IN_COMBAT);
+ } else {
+ // Close dialog and show saving dialog
+ result = 4;
+ }
+ break;
+
+ // Ó (Çâ{ó}ê)
+ case Common::KEYCODE_e: // russian key Ó
+ sound.setFxOn(!sound._fxOn);
+ break;
+
+ // Ì ({Ì}óçûêà)
+ case Common::KEYCODE_v: // russian key Ì
+ sound.setMusicOn(!sound._musicOn);
+ break;
+
+ case Common::KEYCODE_ESCAPE:
result = 1;
- }
- break;
+ break;
- case Common::KEYCODE_g:
// Goober cheat sequence
- debugCtr = 1;
- if (Common::RU_RUS != Common::parseLanguage(ConfMan.get("language"))) {
+ case Common::KEYCODE_o:
+ debugCtr = (debugCtr == 1 || debugCtr == 2) ? 2 : 0;
+ break;
+ case Common::KEYCODE_b:
+ debugCtr = (debugCtr == 2) ? 3 : 0;
+ break;
+ case Common::KEYCODE_r:
+ if (debugCtr == 3)
+ _debugFlag = true;
+ else
+ debugCtr = 0;
+ break;
+
+ default:
break;
}
- case Common::KEYCODE_w:
- if (Confirm::show(g_vm, Res.MR_WIZARD)) {
- w.close();
- if (!windows[2]._enabled) {
- sound.playFX(51);
-
- if (g_vm->getGameID() == GType_WorldOfXeen) {
- map._loadCcNum = 0;
- map.load(28);
- party._mazeDirection = DIR_EAST;
- } else {
- map._loadCcNum = 1;
- map.load(29);
- party._mazeDirection = DIR_SOUTH;
+ } else {
+ switch (_buttonValue) {
+ case Common::KEYCODE_q:
+ if (Confirm::show(g_vm, Res.CONFIRM_QUIT)) {
+ g_vm->_gameMode = GMODE_QUIT;
+ result = 1;
+ }
+ break;
+
+ case Common::KEYCODE_w:
+ if (Confirm::show(g_vm, Res.MR_WIZARD)) {
+ w.close();
+ if (!windows[2]._enabled) {
+ sound.playFX(51);
+
+ if (g_vm->getGameID() == GType_WorldOfXeen) {
+ map._loadCcNum = 0;
+ map.load(28);
+ party._mazeDirection = DIR_EAST;
+ } else {
+ map._loadCcNum = 1;
+ map.load(29);
+ party._mazeDirection = DIR_SOUTH;
+ }
+ party.moveToRunLocation();
}
- party.moveToRunLocation();
+
+ party._gems = 0;
+ result = 2;
}
+ break;
- party._gems = 0;
- result = 2;
- }
- break;
+ case Common::KEYCODE_l:
+ if (_vm->_mode == MODE_COMBAT) {
+ ErrorScroll::show(_vm, Res.NO_LOADING_IN_COMBAT);
+ } else {
+ // Close dialog and show loading dialog
+ result = 3;
+ }
+ break;
- case Common::KEYCODE_p:
- if (Common::RU_RUS != Common::parseLanguage(ConfMan.get("language"))) {
+ case Common::KEYCODE_s:
+ if (_vm->_mode == MODE_COMBAT) {
+ ErrorScroll::show(_vm, Res.NO_SAVING_IN_COMBAT);
+ } else {
+ // Close dialog and show saving dialog
+ result = 4;
+ }
break;
- }
- case Common::KEYCODE_l:
- if (_vm->_mode == MODE_COMBAT) {
- ErrorScroll::show(_vm, Res.NO_LOADING_IN_COMBAT);
- } else {
- // Close dialog and show loading dialog
- result = 3;
- }
- break;
- case Common::KEYCODE_c:
- if (Common::RU_RUS != Common::parseLanguage(ConfMan.get("language"))) {
+ case Common::KEYCODE_e:
+ sound.setFxOn(!sound._fxOn);
+ break;
+
+ case Common::KEYCODE_m:
+ sound.setMusicOn(!sound._musicOn);
+ break;
+
+ case Common::KEYCODE_ESCAPE:
+ result = 1;
break;
- }
- case Common::KEYCODE_s:
- if (_vm->_mode == MODE_COMBAT) {
- ErrorScroll::show(_vm, Res.NO_SAVING_IN_COMBAT);
- } else {
- // Close dialog and show saving dialog
- result = 4;
- }
- break;
- case Common::KEYCODE_e:
- sound.setFxOn(!sound._fxOn);
- break;
+ // Goober cheat sequence
+ case Common::KEYCODE_g:
+ debugCtr = 1;
+ break;
+ case Common::KEYCODE_o:
+ debugCtr = (debugCtr == 1 || debugCtr == 2) ? 2 : 0;
+ break;
+ case Common::KEYCODE_b:
+ debugCtr = (debugCtr == 2) ? 3 : 0;
+ break;
+ case Common::KEYCODE_r:
+ if (debugCtr == 3)
+ _debugFlag = true;
+ else
+ debugCtr = 0;
+ break;
- case Common::KEYCODE_v:
- if (Common::RU_RUS != Common::parseLanguage(ConfMan.get("language"))) {
+ default:
break;
}
- case Common::KEYCODE_m:
- sound.setMusicOn(!sound._musicOn);
- break;
-
- case Common::KEYCODE_ESCAPE:
- result = 1;
- break;
-
- // Goober cheat sequence
- case Common::KEYCODE_o:
- debugCtr = (debugCtr == 1 || debugCtr == 2) ? 2 : 0;
- break;
- case Common::KEYCODE_b:
- debugCtr = (debugCtr == 2) ? 3 : 0;
- break;
- case Common::KEYCODE_r:
- if (debugCtr == 3)
- _debugFlag = true;
- else
- debugCtr = 0;
- break;
-
- default:
- break;
}
} while (!result);
diff --git a/engines/xeen/dialogs/dialogs_create_char.cpp b/engines/xeen/dialogs/dialogs_create_char.cpp
index ab86c4939a..a13cf31c58 100644
--- a/engines/xeen/dialogs/dialogs_create_char.cpp
+++ b/engines/xeen/dialogs/dialogs_create_char.cpp
@@ -20,6 +20,7 @@
*
*/
+#include "common/config-manager.h"
#include "xeen/dialogs/dialogs_create_char.h"
#include "xeen/dialogs/dialogs_input.h"
#include "xeen/xeen.h"
@@ -130,96 +131,198 @@ void CreateCharacterDialog::execute() {
// Handling for different actions
if (_buttonValue == Common::KEYCODE_ESCAPE)
break;
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ switch (_buttonValue) {
+ case Common::KEYCODE_UP:
+ if (charIndex == 0)
+ continue;
- switch (_buttonValue) {
- case Common::KEYCODE_UP:
- if (charIndex == 0)
+ --charIndex;
+ race = (Race)((freeCharList[charIndex] / 4) % 5);
+ sex = (Sex)(freeCharList[charIndex] & 1);
+ break;
+
+ case Common::KEYCODE_DOWN:
+ if (++charIndex == (int)freeCharList.size()) {
+ --charIndex;
+ continue;
+ } else {
+ race = (Race)((freeCharList[charIndex] / 4) % 5);
+ sex = (Sex)(freeCharList[charIndex] & 1);
+ }
+ break;
+
+ case Common::KEYCODE_PAGEUP:
+ for (int tempClass = selectedClass - 1; tempClass >= 0; --tempClass) {
+ if (_allowedClasses[tempClass]) {
+ selectedClass = tempClass;
+ break;
+ }
+ }
+
+ printSelectionArrow(selectedClass);
continue;
- --charIndex;
- race = (Race)((freeCharList[charIndex] / 4) % 5);
- sex = (Sex)(freeCharList[charIndex] & 1);
- break;
+ case Common::KEYCODE_PAGEDOWN:
+ break;
- case Common::KEYCODE_DOWN:
- if (++charIndex == (int)freeCharList.size()) {
- --charIndex;
+ // Ë (Ñè{ë})
+ case Common::KEYCODE_k: // russian key Ë
+ // È ({È}íò)
+ case Common::KEYCODE_b: // russian key È
+ // Ä ({Ä}óõ)
+ case Common::KEYCODE_l: // russian key Ä
+ // Æ (Ñë{æ})
+ case Common::KEYCODE_SEMICOLON: // russian key Æ
+ // Ê (Ñ{ê}ð)
+ case Common::KEYCODE_r: // russian key Ê
+ // Ì ({Ì}òê)
+ case Common::KEYCODE_v: // russian key Ì
+ // Ó ({Ó}ä÷)
+ case Common::KEYCODE_e: // russian key Ó
+ if (swapAttributes(_buttonValue)) {
+ checkClass();
+ classId = -1;
+ selectedClass = newCharDetails(race, sex, classId, selectedClass, msg);
+ }
+ break;
+
+ case 1000:
+ case 1001:
+ case 1002:
+ case 1003:
+ case 1004:
+ case 1005:
+ case 1006:
+ case 1007:
+ case 1008:
+ case 1009:
+ if (_allowedClasses[_buttonValue - 1000]) {
+ selectedClass = classId = _buttonValue - 1000;
+ }
+ break;
+
+ // Ñ ({Ñ}îçä)
+ case Common::KEYCODE_c: // russian key Ñ
+ {
+ _vm->_mode = MODE_FF;
+ bool result = saveCharacter(party._roster[freeCharList[charIndex]],
+ classId, race, sex);
+ _vm->_mode = MODE_4;
+
+ if (result)
+ restartFlag = true;
continue;
- } else {
+ }
+
+ case Common::KEYCODE_RETURN:
+ classId = selectedClass;
+ break;
+
+ // Á ({Á}ðîñîê)
+ case Common::KEYCODE_COMMA: // russian key Á
+ case Common::KEYCODE_SPACE:
+ // Re-roll the attributes
+ rollAttributes();
+ classId = -1;
+ break;
+
+ default:
+ // For all other keypresses, skip the code below the switch
+ // statement, and go to wait for the next key
+ continue;
+ }
+ } else {
+ switch (_buttonValue) {
+ case Common::KEYCODE_UP:
+ if (charIndex == 0)
+ continue;
+
+ --charIndex;
race = (Race)((freeCharList[charIndex] / 4) % 5);
sex = (Sex)(freeCharList[charIndex] & 1);
- }
- break;
+ break;
- case Common::KEYCODE_PAGEUP:
- for (int tempClass = selectedClass - 1; tempClass >= 0; --tempClass) {
- if (_allowedClasses[tempClass]) {
- selectedClass = tempClass;
- break;
+ case Common::KEYCODE_DOWN:
+ if (++charIndex == (int)freeCharList.size()) {
+ --charIndex;
+ continue;
+ } else {
+ race = (Race)((freeCharList[charIndex] / 4) % 5);
+ sex = (Sex)(freeCharList[charIndex] & 1);
}
- }
+ break;
- printSelectionArrow(selectedClass);
- continue;
+ case Common::KEYCODE_PAGEUP:
+ for (int tempClass = selectedClass - 1; tempClass >= 0; --tempClass) {
+ if (_allowedClasses[tempClass]) {
+ selectedClass = tempClass;
+ break;
+ }
+ }
- case Common::KEYCODE_PAGEDOWN:
- break;
+ printSelectionArrow(selectedClass);
+ continue;
- case Common::KEYCODE_m:
- case Common::KEYCODE_i:
- case Common::KEYCODE_p:
- case Common::KEYCODE_e:
- case Common::KEYCODE_s:
- case Common::KEYCODE_a:
- case Common::KEYCODE_l:
- if (swapAttributes(_buttonValue)) {
- checkClass();
- classId = -1;
- selectedClass = newCharDetails(race, sex, classId, selectedClass, msg);
- }
- break;
+ case Common::KEYCODE_PAGEDOWN:
+ break;
- case 1000:
- case 1001:
- case 1002:
- case 1003:
- case 1004:
- case 1005:
- case 1006:
- case 1007:
- case 1008:
- case 1009:
- if (_allowedClasses[_buttonValue - 1000]) {
- selectedClass = classId = _buttonValue - 1000;
- }
- break;
+ case Common::KEYCODE_m:
+ case Common::KEYCODE_i:
+ case Common::KEYCODE_p:
+ case Common::KEYCODE_e:
+ case Common::KEYCODE_s:
+ case Common::KEYCODE_a:
+ case Common::KEYCODE_l:
+ if (swapAttributes(_buttonValue)) {
+ checkClass();
+ classId = -1;
+ selectedClass = newCharDetails(race, sex, classId, selectedClass, msg);
+ }
+ break;
- case Common::KEYCODE_c: {
- _vm->_mode = MODE_FF;
- bool result = saveCharacter(party._roster[freeCharList[charIndex]],
- classId, race, sex);
- _vm->_mode = MODE_4;
+ case 1000:
+ case 1001:
+ case 1002:
+ case 1003:
+ case 1004:
+ case 1005:
+ case 1006:
+ case 1007:
+ case 1008:
+ case 1009:
+ if (_allowedClasses[_buttonValue - 1000]) {
+ selectedClass = classId = _buttonValue - 1000;
+ }
+ break;
- if (result)
- restartFlag = true;
- continue;
- }
+ case Common::KEYCODE_c: {
+ _vm->_mode = MODE_FF;
+ bool result = saveCharacter(party._roster[freeCharList[charIndex]],
+ classId, race, sex);
+ _vm->_mode = MODE_4;
- case Common::KEYCODE_RETURN:
- classId = selectedClass;
- break;
+ if (result)
+ restartFlag = true;
+ continue;
+ }
- case Common::KEYCODE_SPACE:
- case Common::KEYCODE_r:
- // Re-roll the attributes
- rollAttributes();
- classId = -1;
- break;
+ case Common::KEYCODE_RETURN:
+ classId = selectedClass;
+ break;
- default:
- // For all other keypresses, skip the code below the switch
- // statement, and go to wait for the next key
- continue;
+ case Common::KEYCODE_SPACE:
+ case Common::KEYCODE_r:
+ // Re-roll the attributes
+ rollAttributes();
+ classId = -1;
+ break;
+
+ default:
+ // For all other keypresses, skip the code below the switch
+ // statement, and go to wait for the next key
+ continue;
+ }
}
if (_buttonValue != Common::KEYCODE_PAGEDOWN) {
@@ -257,18 +360,30 @@ void CreateCharacterDialog::loadButtons() {
_icons.load("create.icn");
// Add buttons
- addButton(Common::Rect(132, 98, 156, 118), Common::KEYCODE_r, &_icons);
- addButton(Common::Rect(132, 128, 156, 148), Common::KEYCODE_c, &_icons);
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ addButton(Common::Rect(132, 98, 156, 118), Common::KEYCODE_COMMA, &_icons); // russian key Á
+ addButton(Common::Rect(132, 128, 156, 148), Common::KEYCODE_c, &_icons); // russian key Ñ
+ addButton(Common::Rect(168, 19, 192, 39), Common::KEYCODE_k, nullptr); // russian key Ë
+ addButton(Common::Rect(168, 43, 192, 63), Common::KEYCODE_b, nullptr); // russian key È
+ addButton(Common::Rect(168, 67, 192, 87), Common::KEYCODE_l, nullptr); // russian key Ä
+ addButton(Common::Rect(168, 91, 192, 111), Common::KEYCODE_SEMICOLON, nullptr); // russian key Æ
+ addButton(Common::Rect(168, 115, 192, 135), Common::KEYCODE_r, nullptr); // russian key Ê
+ addButton(Common::Rect(168, 139, 192, 159), Common::KEYCODE_v, nullptr); // russian key Ì
+ addButton(Common::Rect(168, 163, 192, 183), Common::KEYCODE_e, nullptr); // russian key Ó
+ } else {
+ addButton(Common::Rect(132, 98, 156, 118), Common::KEYCODE_r, &_icons);
+ addButton(Common::Rect(132, 128, 156, 148), Common::KEYCODE_c, &_icons);
+ addButton(Common::Rect(168, 19, 192, 39), Common::KEYCODE_n, nullptr);
+ addButton(Common::Rect(168, 43, 192, 63), Common::KEYCODE_i, nullptr);
+ addButton(Common::Rect(168, 67, 192, 87), Common::KEYCODE_p, nullptr);
+ addButton(Common::Rect(168, 91, 192, 111), Common::KEYCODE_e, nullptr);
+ addButton(Common::Rect(168, 115, 192, 135), Common::KEYCODE_s, nullptr);
+ addButton(Common::Rect(168, 139, 192, 159), Common::KEYCODE_a, nullptr);
+ addButton(Common::Rect(168, 163, 192, 183), Common::KEYCODE_l, nullptr);
+ }
addButton(Common::Rect(132, 158, 156, 178), Common::KEYCODE_ESCAPE, &_icons);
addButton(Common::Rect(86, 98, 110, 118), Common::KEYCODE_UP, &_icons);
addButton(Common::Rect(86, 120, 110, 140), Common::KEYCODE_DOWN, &_icons);
- addButton(Common::Rect(168, 19, 192, 39), Common::KEYCODE_n, nullptr);
- addButton(Common::Rect(168, 43, 192, 63), Common::KEYCODE_i, nullptr);
- addButton(Common::Rect(168, 67, 192, 87), Common::KEYCODE_p, nullptr);
- addButton(Common::Rect(168, 91, 192, 111), Common::KEYCODE_e, nullptr);
- addButton(Common::Rect(168, 115, 192, 135), Common::KEYCODE_s, nullptr);
- addButton(Common::Rect(168, 139, 192, 159), Common::KEYCODE_a, nullptr);
- addButton(Common::Rect(168, 163, 192, 183), Common::KEYCODE_l, nullptr);
addButton(Common::Rect(227, 19, 239, 29), 1000, nullptr);
addButton(Common::Rect(227, 30, 239, 40), 1001, nullptr);
addButton(Common::Rect(227, 41, 239, 51), 1002, nullptr);
@@ -322,8 +437,8 @@ void CreateCharacterDialog::drawIcons2() {
_icons.draw(0, 58, Common::Point(62, 158));
_icons.draw(0, 59, Common::Point(62, 168));
_icons.draw(0, 61, Common::Point(220, 19));
- _icons.draw(0, 64, Common::Point(220, 155));
- _icons.draw(0, 65, Common::Point(220, 170));
+ _icons.draw(0, 64, Common::Point(220, 155));
+ _icons.draw(0, 65, Common::Point(220, 170));
_icons.draw(0, 0, Common::Point(132, 98));
_icons.draw(0, 2, Common::Point(132, 128));
@@ -470,23 +585,51 @@ void CreateCharacterDialog::drawDice() {
}
int CreateCharacterDialog::getAttribFromKeycode(int keycode) const {
- switch (keycode) {
- case Common::KEYCODE_m:
- return MIGHT;
- case Common::KEYCODE_i:
- return INTELLECT;
- case Common::KEYCODE_p:
- return PERSONALITY;
- case Common::KEYCODE_e:
- return ENDURANCE;
- case Common::KEYCODE_s:
- return SPEED;
- case Common::KEYCODE_a:
- return ACCURACY;
- case Common::KEYCODE_l:
- return LUCK;
- default:
- return -1;
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ switch (keycode) {
+ // ë (Ñè{ë})
+ case Common::KEYCODE_k: // russian key Ë
+ return MIGHT;
+ // è ({È}íò)
+ case Common::KEYCODE_b: // russian key È
+ return INTELLECT;
+ // ä({Ä}óõ)
+ case Common::KEYCODE_l: // russian key Ä
+ return PERSONALITY;
+ // æ(Ñë{æ})
+ case Common::KEYCODE_SEMICOLON: // russian key Æ
+ return ENDURANCE;
+ // ê(Ñ{ê}ð)
+ case Common::KEYCODE_r: // russian key Ê
+ return SPEED;
+ // ì({Ì}òê)
+ case Common::KEYCODE_v: // russian key Ì
+ return ACCURACY;
+ // ó({Ó}ä÷)
+ case Common::KEYCODE_e: // russian key Ó
+ return LUCK;
+ default:
+ return -1;
+ }
+ } else {
+ switch (keycode) {
+ case Common::KEYCODE_m:
+ return MIGHT;
+ case Common::KEYCODE_i:
+ return INTELLECT;
+ case Common::KEYCODE_p:
+ return PERSONALITY;
+ case Common::KEYCODE_e:
+ return ENDURANCE;
+ case Common::KEYCODE_s:
+ return SPEED;
+ case Common::KEYCODE_a:
+ return ACCURACY;
+ case Common::KEYCODE_l:
+ return LUCK;
+ default:
+ return -1;
+ }
}
}
@@ -528,15 +671,25 @@ int CreateCharacterDialog::exchangeAttribute(int srcAttr) {
icons.load("create2.icn");
saveButtons();
- addButton(Common::Rect(118, 58, 142, 78), Common::KEYCODE_ESCAPE, &_icons);
- addButton(Common::Rect(168, 19, 192, 39), Common::KEYCODE_m);
- addButton(Common::Rect(168, 43, 192, 63), Common::KEYCODE_i);
- addButton(Common::Rect(168, 67, 192, 87), Common::KEYCODE_p);
- addButton(Common::Rect(168, 91, 192, 111), Common::KEYCODE_e);
- addButton(Common::Rect(168, 115, 192, 135), Common::KEYCODE_s);
- addButton(Common::Rect(168, 139, 192, 159), Common::KEYCODE_a);
- addButton(Common::Rect(168, 163, 192, 183), Common::KEYCODE_l);
-
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ addButton(Common::Rect(118, 58, 142, 78), Common::KEYCODE_ESCAPE, &_icons);
+ addButton(Common::Rect(168, 19, 192, 39), Common::KEYCODE_k); // russian key Ë
+ addButton(Common::Rect(168, 43, 192, 63), Common::KEYCODE_b); // russian key È
+ addButton(Common::Rect(168, 67, 192, 87), Common::KEYCODE_l); // russian key Ä
+ addButton(Common::Rect(168, 91, 192, 111), Common::KEYCODE_SEMICOLON); // russian key Æ
+ addButton(Common::Rect(168, 115, 192, 135), Common::KEYCODE_r); // russian key Ê
+ addButton(Common::Rect(168, 139, 192, 159), Common::KEYCODE_v); // russian key Ì
+ addButton(Common::Rect(168, 163, 192, 183), Common::KEYCODE_e); // russian key Ó
+ } else {
+ addButton(Common::Rect(118, 58, 142, 78), Common::KEYCODE_ESCAPE, &_icons);
+ addButton(Common::Rect(168, 19, 192, 39), Common::KEYCODE_m);
+ addButton(Common::Rect(168, 43, 192, 63), Common::KEYCODE_i);
+ addButton(Common::Rect(168, 67, 192, 87), Common::KEYCODE_p);
+ addButton(Common::Rect(168, 91, 192, 111), Common::KEYCODE_e);
+ addButton(Common::Rect(168, 115, 192, 135), Common::KEYCODE_s);
+ addButton(Common::Rect(168, 139, 192, 159), Common::KEYCODE_a);
+ addButton(Common::Rect(168, 163, 192, 183), Common::KEYCODE_l);
+ }
Window &w = windows[26];
w.open();
w.writeString(Common::String::format(Res.EXCHANGE_ATTR_WITH, Res.STAT_NAMES[srcAttr]));
diff --git a/engines/xeen/dialogs/dialogs_difficulty.cpp b/engines/xeen/dialogs/dialogs_difficulty.cpp
index 0b024e1857..df80941311 100644
--- a/engines/xeen/dialogs/dialogs_difficulty.cpp
+++ b/engines/xeen/dialogs/dialogs_difficulty.cpp
@@ -20,6 +20,7 @@
*
*/
+#include "common/config-manager.h"
#include "xeen/dialogs/dialogs_difficulty.h"
#include "xeen/resources.h"
#include "xeen/xeen.h"
@@ -51,14 +52,23 @@ int DifficultyDialog::execute() {
while (!_vm->shouldExit()) {
events.pollEventsAndWait();
checkEvents(_vm);
-
- if (_buttonValue == Common::KEYCODE_a)
- result = ADVENTURER;
- else if (_buttonValue == Common::KEYCODE_w)
- result = WARRIOR;
- else if (_buttonValue != Common::KEYCODE_ESCAPE)
- continue;
-
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ // à ({à}âàíòþðèñò)
+ if (_buttonValue == Common::KEYCODE_f) // russian key À
+ result = ADVENTURER;
+ // â ({â}îèí)
+ else if (_buttonValue == Common::KEYCODE_d) // russian key Â
+ result = WARRIOR;
+ else if (_buttonValue != Common::KEYCODE_ESCAPE)
+ continue;
+ } else {
+ if (_buttonValue == Common::KEYCODE_a)
+ result = ADVENTURER;
+ else if (_buttonValue == Common::KEYCODE_w)
+ result = WARRIOR;
+ else if (_buttonValue != Common::KEYCODE_ESCAPE)
+ continue;
+ }
break;
}
@@ -68,8 +78,13 @@ int DifficultyDialog::execute() {
void DifficultyDialog::loadButtons() {
_sprites.load("choice.icn");
- addButton(Common::Rect(68, 167, 158, 187), Common::KEYCODE_a, &_sprites);
- addButton(Common::Rect(166, 167, 256, 187), Common::KEYCODE_w, &_sprites);
+ if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ addButton(Common::Rect(68, 167, 158, 187), Common::KEYCODE_f, &_sprites); // russian key À
+ addButton(Common::Rect(166, 167, 256, 187), Common::KEYCODE_d, &_sprites); // russian key Â
+ } else {
+ addButton(Common::Rect(68, 167, 158, 187), Common::KEYCODE_a, &_sprites);
+ addButton(Common::Rect(166, 167, 256, 187), Common::KEYCODE_w, &_sprites);
+ }
}
} // End of namespace Xeen
diff --git a/engines/xeen/font.cpp b/engines/xeen/font.cpp
index b155322b8b..b4f44fb780 100644
--- a/engines/xeen/font.cpp
+++ b/engines/xeen/font.cpp
@@ -334,8 +334,6 @@ bool FontSurface::getNextCharWidth(int &total) {
getNextChar();
return false;
} else if (Common::RU_RUS == lang && c < 0) {
- int iii = (_fontReduced ? _fntNonEnReducedWOffset : _fntNonEnWOffset) + (char)(0x80 + c);
- //int iii = _fontData[(_fontReduced ? _fntNonEnReducedWOffset : _fntNonEnWOffset) + (int)(0x80 + c)];
total += _fontData[(_fontReduced ? _fntNonEnReducedWOffset : _fntNonEnWOffset) + (char)(0x80 + c)];
return false;
} else {
Commit: b16ab4382e0f80ae5c5f7f86968a623ea701e7fe
https://github.com/scummvm/scummvm/commit/b16ab4382e0f80ae5c5f7f86968a623ea701e7fe
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Moving translated hotkeys to resources.
Hotkeys changed in char_info, control_panel, create_char, difficulty dialogs.
Changed paths:
devtools/create_xeen/constants.cpp
devtools/create_xeen/constants.h
devtools/create_xeen/en_constants.h
devtools/create_xeen/ru_constants.h
dists/engine-data/xeen.ccs
engines/xeen/dialogs/dialogs_char_info.cpp
engines/xeen/dialogs/dialogs_control_panel.cpp
engines/xeen/dialogs/dialogs_create_char.cpp
engines/xeen/dialogs/dialogs_difficulty.cpp
engines/xeen/font.cpp
engines/xeen/party.cpp
engines/xeen/resources.cpp
engines/xeen/resources.h
diff --git a/devtools/create_xeen/constants.cpp b/devtools/create_xeen/constants.cpp
index bff86704bc..938010520d 100644
--- a/devtools/create_xeen/constants.cpp
+++ b/devtools/create_xeen/constants.cpp
@@ -488,6 +488,30 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
file.syncString(PHAROAH_ENDING_TEXT2());
cc.add("CONSTANTS" + num, file);
+
+ Common::MemFile keys;
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CHAR_INFO()->KEY_ITEM());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CHAR_INFO()->KEY_QUICK());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CHAR_INFO()->KEY_EXCHANGE());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_FXON());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_MUSICON());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_LOAD());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_SAVE());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_QUIT());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_MRWIZARD());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_ROLL());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_CREATE());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_MGT());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_INT());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_PER());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_END());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_SPD());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_ACY());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_LCK());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_DIFFICULTY()->KEY_ADVENTURER());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_DIFFICULTY()->KEY_WARRIOR());
+
+ cc.add("CONSTKEYS" + num, keys);
}
void writeConstants(CCArchive &cc) {
diff --git a/devtools/create_xeen/constants.h b/devtools/create_xeen/constants.h
index c523210142..78b6752654 100644
--- a/devtools/create_xeen/constants.h
+++ b/devtools/create_xeen/constants.h
@@ -1245,6 +1245,50 @@ public:
virtual const char *PHAROAH_ENDING_TEXT2() = 0;
void writeConstants(Common::String num, CCArchive &cc);
+
+ class KeyConstants {
+ public:
+ class DialogsCharInfo {
+ public:
+ virtual const int KEY_ITEM() = 0;
+ virtual const int KEY_QUICK() = 0;
+ virtual const int KEY_EXCHANGE() = 0;
+ };
+ virtual DialogsCharInfo *DIALOGS_CHAR_INFO() = 0;
+
+ class DialogsControlPanel {
+ public:
+ virtual const int KEY_FXON() = 0;
+ virtual const int KEY_MUSICON() = 0;
+ virtual const int KEY_LOAD() = 0;
+ virtual const int KEY_SAVE() = 0;
+ virtual const int KEY_QUIT() = 0;
+ virtual const int KEY_MRWIZARD() = 0;
+ };
+ virtual DialogsControlPanel *DIALOGS_CONTROL_PANEL() = 0;
+
+ class DialogsCreateChar {
+ public:
+ virtual const int KEY_ROLL() = 0;
+ virtual const int KEY_CREATE() = 0;
+ virtual const int KEY_MGT() = 0;
+ virtual const int KEY_INT() = 0;
+ virtual const int KEY_PER() = 0;
+ virtual const int KEY_END() = 0;
+ virtual const int KEY_SPD() = 0;
+ virtual const int KEY_ACY() = 0;
+ virtual const int KEY_LCK() = 0;
+ };
+ virtual DialogsCreateChar *DIALOGS_CREATE_CHAR() = 0;
+
+ class DialogsDifficulty {
+ public:
+ virtual const int KEY_ADVENTURER() = 0;
+ virtual const int KEY_WARRIOR() = 0;
+ };
+ virtual DialogsDifficulty *DIALOGS_DIFFICULTY() = 0;
+ };
+ virtual KeyConstants *KEY_CONSTANTS() = 0;
};
extern void writeConstants(CCArchive &cc);
diff --git a/devtools/create_xeen/en_constants.h b/devtools/create_xeen/en_constants.h
index e20c4fdb1c..2984ab8b58 100644
--- a/devtools/create_xeen/en_constants.h
+++ b/devtools/create_xeen/en_constants.h
@@ -23,6 +23,7 @@
#pragma once
#include "constants.h"
+#include "../scummvm/common/keyboard.h"
class EN : public LangConstants {
public:
@@ -1987,4 +1988,76 @@ public:
"c\t000\v180Press a Key!\x3"
"l\fd";
}
+
+ class EN_KeyConstants : public KeyConstants {
+ public:
+ class EN_DialogsCharInfo : public DialogsCharInfo {
+ public:
+ const int KEY_ITEM() { return Common::KEYCODE_i; }
+ const int KEY_QUICK() { return Common::KEYCODE_q; }
+ const int KEY_EXCHANGE() { return Common::KEYCODE_e; }
+ };
+ EN_DialogsCharInfo *DIALOGS_CHAR_INFO() {
+ if (!_dci)_dci = new EN_DialogsCharInfo();
+ return _dci;
+ }
+
+ class EN_DialogsControlPanel : public DialogsControlPanel {
+ public:
+ const int KEY_FXON() { return Common::KEYCODE_e; }
+ const int KEY_MUSICON() { return Common::KEYCODE_m; }
+ const int KEY_LOAD() { return Common::KEYCODE_l; }
+ const int KEY_SAVE() { return Common::KEYCODE_s; }
+ const int KEY_QUIT() { return Common::KEYCODE_q; }
+ const int KEY_MRWIZARD() { return Common::KEYCODE_w; }
+ };
+ EN_DialogsControlPanel *DIALOGS_CONTROL_PANEL() {
+ if (!_dcp) _dcp = new EN_DialogsControlPanel();
+ return _dcp;
+ }
+
+ class EN_DialogsCreateChar : public DialogsCreateChar {
+ public:
+ const int KEY_ROLL() { return Common::KEYCODE_r; }
+ const int KEY_CREATE() { return Common::KEYCODE_c; }
+ const int KEY_MGT() { return Common::KEYCODE_m; }
+ const int KEY_INT() { return Common::KEYCODE_i; }
+ const int KEY_PER() { return Common::KEYCODE_p; }
+ const int KEY_END() { return Common::KEYCODE_e; }
+ const int KEY_SPD() { return Common::KEYCODE_s; }
+ const int KEY_ACY() { return Common::KEYCODE_a; }
+ const int KEY_LCK() { return Common::KEYCODE_l; }
+ };
+ EN_DialogsCreateChar *DIALOGS_CREATE_CHAR() {
+ if (!_dcc) _dcc = new EN_DialogsCreateChar();
+ return _dcc;
+ }
+
+ class EN_DialogsDifficulty : public DialogsDifficulty {
+ public:
+ const int KEY_ADVENTURER() { return Common::KEYCODE_a; }
+ const int KEY_WARRIOR() { return Common::KEYCODE_w; }
+ };
+ EN_DialogsDifficulty *DIALOGS_DIFFICULTY() {
+ if (!_dd)
+ _dd = new EN_DialogsDifficulty();
+ return _dd;
+ }
+
+ private:
+ EN_DialogsCharInfo *_dci = NULL;
+ EN_DialogsControlPanel *_dcp = NULL;
+ EN_DialogsCreateChar *_dcc = NULL;
+ EN_DialogsDifficulty *_dd = NULL;
+ };
+
+ EN_KeyConstants *KEY_CONSTANTS() {
+ if (!_kc)_kc = new EN_KeyConstants();
+ return _kc;
+ }
+
+private:
+ EN_KeyConstants *_kc = NULL;
};
+
+
diff --git a/devtools/create_xeen/ru_constants.h b/devtools/create_xeen/ru_constants.h
index 1dfdb6a218..50d3c57f30 100644
--- a/devtools/create_xeen/ru_constants.h
+++ b/devtools/create_xeen/ru_constants.h
@@ -1994,4 +1994,74 @@ public:
"c\t000\v180Press a Key!\x3"
"l\fd";
}
+
+ class RU_KeyConstants : public KeyConstants {
+ public:
+ class RU_DialogsCharInfo : public DialogsCharInfo {
+ public:
+ const int KEY_ITEM() { return Common::KEYCODE_d; }
+ const int KEY_QUICK() { return Common::KEYCODE_COMMA; }
+ const int KEY_EXCHANGE() { return Common::KEYCODE_c; }
+ };
+ RU_DialogsCharInfo *DIALOGS_CHAR_INFO() {
+ if (!_dci) _dci = new RU_DialogsCharInfo();
+ return _dci;
+ }
+
+ class RU_DialogsControlPanel : public DialogsControlPanel {
+ public:
+ const int KEY_FXON() { return Common::KEYCODE_e; }
+ const int KEY_MUSICON() { return Common::KEYCODE_v; }
+ const int KEY_LOAD() { return Common::KEYCODE_p; }
+ const int KEY_SAVE() { return Common::KEYCODE_c; }
+ const int KEY_QUIT() { return Common::KEYCODE_d; }
+ const int KEY_MRWIZARD() { return Common::KEYCODE_g; }
+ };
+ RU_DialogsControlPanel *DIALOGS_CONTROL_PANEL() {
+ if (!_dcp) _dcp = new RU_DialogsControlPanel();
+ return _dcp;
+ }
+
+ class RU_DialogsCreateChar : public DialogsCreateChar {
+ public:
+ const int KEY_ROLL() { return Common::KEYCODE_COMMA; }
+ const int KEY_CREATE() { return Common::KEYCODE_c; }
+ const int KEY_MGT() { return Common::KEYCODE_k; }
+ const int KEY_INT() { return Common::KEYCODE_b; }
+ const int KEY_PER() { return Common::KEYCODE_l; }
+ const int KEY_END() { return Common::KEYCODE_SEMICOLON; }
+ const int KEY_SPD() { return Common::KEYCODE_r; }
+ const int KEY_ACY() { return Common::KEYCODE_v; }
+ const int KEY_LCK() { return Common::KEYCODE_e; }
+ };
+ RU_DialogsCreateChar *DIALOGS_CREATE_CHAR() {
+ if (!_dcc) _dcc = new RU_DialogsCreateChar();
+ return _dcc;
+ }
+
+ class RU_DialogsDifficulty : public DialogsDifficulty {
+ public:
+ const int KEY_ADVENTURER() { return Common::KEYCODE_f; }
+ const int KEY_WARRIOR() { return Common::KEYCODE_d; }
+ };
+ RU_DialogsDifficulty *DIALOGS_DIFFICULTY() {
+ if (!_dd) _dd = new RU_DialogsDifficulty();
+ return _dd;
+ }
+
+ private:
+ RU_DialogsCharInfo *_dci = NULL;
+ RU_DialogsControlPanel *_dcp = NULL;
+ RU_DialogsCreateChar *_dcc = NULL;
+ RU_DialogsDifficulty *_dd = NULL;
+
+ };
+
+ RU_KeyConstants *KEY_CONSTANTS() {
+ if (!_kc) _kc = new RU_KeyConstants();
+ return _kc;
+ }
+
+private:
+ RU_KeyConstants *_kc = NULL;
};
diff --git a/dists/engine-data/xeen.ccs b/dists/engine-data/xeen.ccs
index a42f8af76e..68bef8d9f0 100644
Binary files a/dists/engine-data/xeen.ccs and b/dists/engine-data/xeen.ccs differ
diff --git a/engines/xeen/dialogs/dialogs_char_info.cpp b/engines/xeen/dialogs/dialogs_char_info.cpp
index c17d9c4470..d0f964a6c5 100644
--- a/engines/xeen/dialogs/dialogs_char_info.cpp
+++ b/engines/xeen/dialogs/dialogs_char_info.cpp
@@ -20,7 +20,6 @@
*
*/
-#include "common/config-manager.h"
#include "xeen/dialogs/dialogs_awards.h"
#include "xeen/dialogs/dialogs_char_info.h"
#include "xeen/dialogs/dialogs_exchange.h"
@@ -81,272 +80,126 @@ void CharacterInfo::execute(int charIndex) {
}
events.clearEvents();
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
- switch (_buttonValue) {
- case Common::KEYCODE_F1:
- case Common::KEYCODE_F2:
- case Common::KEYCODE_F3:
- case Common::KEYCODE_F4:
- case Common::KEYCODE_F5:
- case Common::KEYCODE_F6:
- _buttonValue -= Common::KEYCODE_F1;
- if (_buttonValue < (int)(oldMode == MODE_COMBAT ? combat._combatParty.size() : party._activeParty.size())) {
- charIndex = _buttonValue;
- c = (oldMode != MODE_COMBAT) ? &party._activeParty[charIndex] : combat._combatParty[charIndex];
-
- intf.highlightChar(_buttonValue);
- redrawFlag = true;
- } else {
- _vm->_mode = MODE_CHARACTER_INFO;
- }
- break;
-
- case Common::KEYCODE_UP:
- case Common::KEYCODE_KP8:
- if (_cursorCell > 0) {
- showCursor(false);
- --_cursorCell;
- showCursor(true);
- }
- w.update();
- break;
-
- case Common::KEYCODE_DOWN:
- case Common::KEYCODE_KP2:
- if (_cursorCell < 20) {
- showCursor(false);
- ++_cursorCell;
- showCursor(true);
- }
- w.update();
- break;
-
- case Common::KEYCODE_LEFT:
- case Common::KEYCODE_KP4:
- if (_cursorCell >= 5) {
- showCursor(false);
- _cursorCell -= 5;
- showCursor(true);
- }
- w.update();
- break;
-
- case Common::KEYCODE_RIGHT:
- case Common::KEYCODE_KP6:
- if (_cursorCell <= 15) {
- showCursor(false);
- _cursorCell += 5;
- showCursor(true);
- }
- w.update();
- break;
+ if (Common::KEYCODE_F1 == _buttonValue ||
+ Common::KEYCODE_F2 == _buttonValue ||
+ Common::KEYCODE_F3 == _buttonValue ||
+ Common::KEYCODE_F4 == _buttonValue ||
+ Common::KEYCODE_F5 == _buttonValue ||
+ Common::KEYCODE_F6 == _buttonValue) {
+ _buttonValue -= Common::KEYCODE_F1;
+ if (_buttonValue < (int)(oldMode == MODE_COMBAT ? combat._combatParty.size() : party._activeParty.size())) {
+ charIndex = _buttonValue;
+ c = (oldMode != MODE_COMBAT) ? &party._activeParty[charIndex] : combat._combatParty[charIndex];
+
+ intf.highlightChar(_buttonValue);
+ redrawFlag = true;
+ } else {
+ _vm->_mode = MODE_CHARACTER_INFO;
+ }
- case 1001:
- case 1002:
- case 1003:
- case 1004:
- case 1005:
- case 1006:
- case 1007:
- case 1008:
- case 1009:
- case 1010:
- case 1011:
- case 1012:
- case 1013:
- case 1014:
- case 1015:
- case 1016:
- case 1017:
- case 1018:
- case 1019:
- case 1020:
+ } else if (Common::KEYCODE_UP == _buttonValue ||
+ Common::KEYCODE_KP8 == _buttonValue) {
+ if (_cursorCell > 0) {
showCursor(false);
- _cursorCell = _buttonValue - 1001;
+ --_cursorCell;
showCursor(true);
- w.update();
- // fall through
-
- case Common::KEYCODE_RETURN:
- case Common::KEYCODE_KP_ENTER: {
- bool result = expandStat(_cursorCell, *c);
- _vm->_mode = MODE_COMBAT;
- if (result)
- redrawFlag = true;
- break;
}
+ w.update();
- // Ñ ({Ñ}ìåí)
- case Common::KEYCODE_c: // russian key Ñ
- if (oldMode == MODE_COMBAT) {
- ErrorScroll::show(_vm, Res.EXCHANGING_IN_COMBAT, WT_FREEZE_WAIT);
- } else {
- _vm->_mode = oldMode;
- ExchangeDialog::show(_vm, c, charIndex);
- _vm->_mode = MODE_CHARACTER_INFO;
- redrawFlag = true;
- }
- break;
-
- // Â ({Â}åùè)
- case Common::KEYCODE_d: // russian key Â
- _vm->_mode = oldMode;
- _vm->_combat->_itemFlag = _vm->_mode == MODE_COMBAT;
- c = ItemsDialog::show(_vm, c, ITEMMODE_CHAR_INFO);
-
- if (!c) {
- party._stepped = true;
- goto exit;
- }
-
- _vm->_mode = MODE_CHARACTER_INFO;
- redrawFlag = true;
- break;
-
- // Á ({Á}ñòð)
- case Common::KEYCODE_COMMA: // russian key Á
- QuickReferenceDialog::show(_vm);
- redrawFlag = true;
- break;
-
- case Common::KEYCODE_ESCAPE:
- goto exit;
-
- default:
- break;
+ } else if (Common::KEYCODE_DOWN == _buttonValue ||
+ Common::KEYCODE_KP2 == _buttonValue) {
+ if (_cursorCell < 20) {
+ showCursor(false);
+ ++_cursorCell;
+ showCursor(true);
}
- } else {
- switch (_buttonValue) {
- case Common::KEYCODE_F1:
- case Common::KEYCODE_F2:
- case Common::KEYCODE_F3:
- case Common::KEYCODE_F4:
- case Common::KEYCODE_F5:
- case Common::KEYCODE_F6:
- _buttonValue -= Common::KEYCODE_F1;
- if (_buttonValue < (int)(oldMode == MODE_COMBAT ? combat._combatParty.size() : party._activeParty.size())) {
- charIndex = _buttonValue;
- c = (oldMode != MODE_COMBAT) ? &party._activeParty[charIndex] : combat._combatParty[charIndex];
-
- intf.highlightChar(_buttonValue);
- redrawFlag = true;
- } else {
- _vm->_mode = MODE_CHARACTER_INFO;
- }
- break;
-
- case Common::KEYCODE_UP:
- case Common::KEYCODE_KP8:
- if (_cursorCell > 0) {
- showCursor(false);
- --_cursorCell;
- showCursor(true);
- }
- w.update();
- break;
-
- case Common::KEYCODE_DOWN:
- case Common::KEYCODE_KP2:
- if (_cursorCell < 20) {
- showCursor(false);
- ++_cursorCell;
- showCursor(true);
- }
- w.update();
- break;
-
- case Common::KEYCODE_LEFT:
- case Common::KEYCODE_KP4:
- if (_cursorCell >= 5) {
- showCursor(false);
- _cursorCell -= 5;
- showCursor(true);
- }
- w.update();
- break;
-
- case Common::KEYCODE_RIGHT:
- case Common::KEYCODE_KP6:
- if (_cursorCell <= 15) {
- showCursor(false);
- _cursorCell += 5;
- showCursor(true);
- }
- w.update();
- break;
+ w.update();
- case 1001:
- case 1002:
- case 1003:
- case 1004:
- case 1005:
- case 1006:
- case 1007:
- case 1008:
- case 1009:
- case 1010:
- case 1011:
- case 1012:
- case 1013:
- case 1014:
- case 1015:
- case 1016:
- case 1017:
- case 1018:
- case 1019:
- case 1020:
+ } else if (Common::KEYCODE_LEFT == _buttonValue ||
+ Common::KEYCODE_KP4 == _buttonValue) {
+ if (_cursorCell >= 5) {
showCursor(false);
- _cursorCell = _buttonValue - 1001;
+ _cursorCell -= 5;
showCursor(true);
- w.update();
- // fall through
-
- case Common::KEYCODE_RETURN:
- case Common::KEYCODE_KP_ENTER: {
- bool result = expandStat(_cursorCell, *c);
- _vm->_mode = MODE_COMBAT;
- if (result)
- redrawFlag = true;
- break;
}
+ w.update();
- case Common::KEYCODE_e:
- if (oldMode == MODE_COMBAT) {
- ErrorScroll::show(_vm, Res.EXCHANGING_IN_COMBAT, WT_FREEZE_WAIT);
- } else {
- _vm->_mode = oldMode;
- ExchangeDialog::show(_vm, c, charIndex);
- _vm->_mode = MODE_CHARACTER_INFO;
- redrawFlag = true;
- }
- break;
+ } else if (Common::KEYCODE_RIGHT == _buttonValue ||
+ Common::KEYCODE_KP6 == _buttonValue) {
+ if (_cursorCell <= 15) {
+ showCursor(false);
+ _cursorCell += 5;
+ showCursor(true);
+ }
+ w.update();
- case Common::KEYCODE_i:
- _vm->_mode = oldMode;
- _vm->_combat->_itemFlag = _vm->_mode == MODE_COMBAT;
- c = ItemsDialog::show(_vm, c, ITEMMODE_CHAR_INFO);
+ } else if (1001 == _buttonValue ||
+ 1002 == _buttonValue ||
+ 1003 == _buttonValue ||
+ 1004 == _buttonValue ||
+ 1005 == _buttonValue ||
+ 1006 == _buttonValue ||
+ 1007 == _buttonValue ||
+ 1008 == _buttonValue ||
+ 1009 == _buttonValue ||
+ 1010 == _buttonValue ||
+ 1011 == _buttonValue ||
+ 1012 == _buttonValue ||
+ 1013 == _buttonValue ||
+ 1014 == _buttonValue ||
+ 1015 == _buttonValue ||
+ 1016 == _buttonValue ||
+ 1017 == _buttonValue ||
+ 1018 == _buttonValue ||
+ 1019 == _buttonValue ||
+ 1020 == _buttonValue) {
+ showCursor(false);
+ _cursorCell = _buttonValue - 1001;
+ showCursor(true);
+ w.update();
+ bool result = expandStat(_cursorCell, *c);
+ _vm->_mode = MODE_COMBAT;
+ if (result)
+ redrawFlag = true;
- if (!c) {
- party._stepped = true;
- goto exit;
- }
+ } else if (Common::KEYCODE_RETURN == _buttonValue ||
+ Common::KEYCODE_KP_ENTER == _buttonValue) {
+ bool result = expandStat(_cursorCell, *c);
+ _vm->_mode = MODE_COMBAT;
+ if (result)
+ redrawFlag = true;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_EXCHANGE == _buttonValue) {
+ if (oldMode == MODE_COMBAT) {
+ ErrorScroll::show(_vm, Res.EXCHANGING_IN_COMBAT, WT_FREEZE_WAIT);
+ } else {
+ _vm->_mode = oldMode;
+ ExchangeDialog::show(_vm, c, charIndex);
_vm->_mode = MODE_CHARACTER_INFO;
redrawFlag = true;
- break;
+ }
- case Common::KEYCODE_q:
- QuickReferenceDialog::show(_vm);
- redrawFlag = true;
- break;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_ITEM == _buttonValue) {
+ _vm->_mode = oldMode;
+ _vm->_combat->_itemFlag = _vm->_mode == MODE_COMBAT;
+ c = ItemsDialog::show(_vm, c, ITEMMODE_CHAR_INFO);
- case Common::KEYCODE_ESCAPE:
+ if (!c) {
+ party._stepped = true;
goto exit;
-
- default:
- break;
}
+
+ _vm->_mode = MODE_CHARACTER_INFO;
+ redrawFlag = true;
+
+ } else if (Res.KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_QUICK == _buttonValue) {
+ QuickReferenceDialog::show(_vm);
+ redrawFlag = true;
+
+ } else if (Common::KEYCODE_ESCAPE == _buttonValue) {
+ goto exit;
}
+
} while (!_vm->shouldExit());
exit:
w.close();
@@ -407,21 +260,17 @@ void CharacterInfo::addButtons() {
addButton(Common::Rect(177, 70, 201, 90), 1018, &_iconSprites);
addButton(Common::Rect(177, 93, 201, 113), 1019, &_iconSprites);
addButton(Common::Rect(177, 116, 201, 136), 1020, &_iconSprites);
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
- addButton(Common::Rect(285, 11, 309, 31), Common::KEYCODE_d, &_iconSprites); // russian key Â
- addButton(Common::Rect(285, 43, 309, 63), Common::KEYCODE_COMMA, &_iconSprites); // russian key Á
- addButton(Common::Rect(285, 75, 309, 95), Common::KEYCODE_c, &_iconSprites); // russian key Ñ
- } else {
- addButton(Common::Rect(285, 11, 309, 31), Common::KEYCODE_i, &_iconSprites);
- addButton(Common::Rect(285, 43, 309, 63), Common::KEYCODE_q, &_iconSprites);
- addButton(Common::Rect(285, 75, 309, 95), Common::KEYCODE_e, &_iconSprites);
- }
+
+ addButton(Common::Rect(285, 11, 309, 31), Res.KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_ITEM, &_iconSprites);
+ addButton(Common::Rect(285, 43, 309, 63), Res.KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_QUICK, &_iconSprites);
+ addButton(Common::Rect(285, 75, 309, 95), Res.KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_EXCHANGE, &_iconSprites);
+
addButton(Common::Rect(285, 107, 309, 127), Common::KEYCODE_ESCAPE, &_iconSprites);
addPartyButtons(_vm);
}
const char *CharacterInfo::getDaysPlurals(int val) {
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ if (Common::RU_RUS == g_vm->getLanguage()) {
int i = val % 100;
if (i < 5 || i > 20)
switch (val % 10) {
@@ -493,7 +342,7 @@ void CharacterInfo::showCursor(bool flag) {
}
const char *CharacterInfo::getBornForm(const Character &c) {
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ if (Common::RU_RUS == g_vm->getLanguage()) {
switch (c._sex) {
case MALE:
return Res.BORN[0];
@@ -505,7 +354,7 @@ const char *CharacterInfo::getBornForm(const Character &c) {
}
const char *CharacterInfo::getFoodOnHandPlurals(int food) {
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ if (Common::RU_RUS == g_vm->getLanguage()) {
int i = food % 100;
if (i < 5 || i > 20)
switch (food % 10) {
diff --git a/engines/xeen/dialogs/dialogs_control_panel.cpp b/engines/xeen/dialogs/dialogs_control_panel.cpp
index 84dce62c97..3ed9cfd88c 100644
--- a/engines/xeen/dialogs/dialogs_control_panel.cpp
+++ b/engines/xeen/dialogs/dialogs_control_panel.cpp
@@ -20,7 +20,6 @@
*
*/
-#include "common/config-manager.h"
#include "xeen/dialogs/dialogs_control_panel.h"
#include "xeen/dialogs/dialogs_query.h"
#include "xeen/party.h"
@@ -84,176 +83,72 @@ int ControlPanel::execute() {
return 0;
} while (!_buttonValue && events.timeElapsed() < 2);
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
- switch (_buttonValue) {
- // Â ({Â}ûõîä)
- case Common::KEYCODE_d: // russian key Â
- if (Confirm::show(g_vm, Res.CONFIRM_QUIT)) {
- g_vm->_gameMode = GMODE_QUIT;
- result = 1;
- }
- break;
-
- // Ï ({Ï}îìîùü)
- case Common::KEYCODE_g: // russian key Ï
- debugCtr = 1; // Goober cheat sequence
-
- if (Confirm::show(g_vm, Res.MR_WIZARD)) {
- w.close();
- if (!windows[2]._enabled) {
- sound.playFX(51);
-
- if (g_vm->getGameID() == GType_WorldOfXeen) {
- map._loadCcNum = 0;
- map.load(28);
- party._mazeDirection = DIR_EAST;
- } else {
- map._loadCcNum = 1;
- map.load(29);
- party._mazeDirection = DIR_SOUTH;
- }
- party.moveToRunLocation();
- }
-
- party._gems = 0;
- result = 2;
- }
- break;
-
- // Ç ({Ç}àãðóçèòü)
- case Common::KEYCODE_p: // russian key Ç
- if (_vm->_mode == MODE_COMBAT) {
- ErrorScroll::show(_vm, Res.NO_LOADING_IN_COMBAT);
- } else {
- // Close dialog and show loading dialog
- result = 3;
- }
- break;
-
- // Ñ ({Ñ}îõðàíèòü)
- case Common::KEYCODE_c: // russian key Ñ
- if (_vm->_mode == MODE_COMBAT) {
- ErrorScroll::show(_vm, Res.NO_SAVING_IN_COMBAT);
- } else {
- // Close dialog and show saving dialog
- result = 4;
- }
- break;
-
- // Ó (Çâ{ó}ê)
- case Common::KEYCODE_e: // russian key Ó
- sound.setFxOn(!sound._fxOn);
- break;
-
- // Ì ({Ì}óçûêà)
- case Common::KEYCODE_v: // russian key Ì
- sound.setMusicOn(!sound._musicOn);
- break;
-
- case Common::KEYCODE_ESCAPE:
+ if (Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_QUIT == _buttonValue) {
+ if (Confirm::show(g_vm, Res.CONFIRM_QUIT)) {
+ g_vm->_gameMode = GMODE_QUIT;
result = 1;
- break;
-
- // Goober cheat sequence
- case Common::KEYCODE_o:
- debugCtr = (debugCtr == 1 || debugCtr == 2) ? 2 : 0;
- break;
- case Common::KEYCODE_b:
- debugCtr = (debugCtr == 2) ? 3 : 0;
- break;
- case Common::KEYCODE_r:
- if (debugCtr == 3)
- _debugFlag = true;
- else
- debugCtr = 0;
- break;
-
- default:
- break;
}
- } else {
- switch (_buttonValue) {
- case Common::KEYCODE_q:
- if (Confirm::show(g_vm, Res.CONFIRM_QUIT)) {
- g_vm->_gameMode = GMODE_QUIT;
- result = 1;
- }
- break;
-
- case Common::KEYCODE_w:
- if (Confirm::show(g_vm, Res.MR_WIZARD)) {
- w.close();
- if (!windows[2]._enabled) {
- sound.playFX(51);
-
- if (g_vm->getGameID() == GType_WorldOfXeen) {
- map._loadCcNum = 0;
- map.load(28);
- party._mazeDirection = DIR_EAST;
- } else {
- map._loadCcNum = 1;
- map.load(29);
- party._mazeDirection = DIR_SOUTH;
- }
- party.moveToRunLocation();
- }
- party._gems = 0;
- result = 2;
- }
- break;
-
- case Common::KEYCODE_l:
- if (_vm->_mode == MODE_COMBAT) {
- ErrorScroll::show(_vm, Res.NO_LOADING_IN_COMBAT);
- } else {
- // Close dialog and show loading dialog
- result = 3;
- }
- break;
-
- case Common::KEYCODE_s:
- if (_vm->_mode == MODE_COMBAT) {
- ErrorScroll::show(_vm, Res.NO_SAVING_IN_COMBAT);
- } else {
- // Close dialog and show saving dialog
- result = 4;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_MRWIZARD == _buttonValue) {
+ if (Confirm::show(g_vm, Res.MR_WIZARD)) {
+ w.close();
+ if (!windows[2]._enabled) {
+ sound.playFX(51);
+
+ if (g_vm->getGameID() == GType_WorldOfXeen) {
+ map._loadCcNum = 0;
+ map.load(28);
+ party._mazeDirection = DIR_EAST;
+ } else {
+ map._loadCcNum = 1;
+ map.load(29);
+ party._mazeDirection = DIR_SOUTH;
+ }
+ party.moveToRunLocation();
}
- break;
- case Common::KEYCODE_e:
- sound.setFxOn(!sound._fxOn);
- break;
+ party._gems = 0;
+ result = 2;
+ }
- case Common::KEYCODE_m:
- sound.setMusicOn(!sound._musicOn);
- break;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_LOAD == _buttonValue) {
+ if (_vm->_mode == MODE_COMBAT) {
+ ErrorScroll::show(_vm, Res.NO_LOADING_IN_COMBAT);
+ } else {
+ // Close dialog and show loading dialog
+ result = 3;
+ }
- case Common::KEYCODE_ESCAPE:
- result = 1;
- break;
-
- // Goober cheat sequence
- case Common::KEYCODE_g:
- debugCtr = 1;
- break;
- case Common::KEYCODE_o:
- debugCtr = (debugCtr == 1 || debugCtr == 2) ? 2 : 0;
- break;
- case Common::KEYCODE_b:
- debugCtr = (debugCtr == 2) ? 3 : 0;
- break;
- case Common::KEYCODE_r:
- if (debugCtr == 3)
- _debugFlag = true;
- else
- debugCtr = 0;
- break;
-
- default:
- break;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_SAVE == _buttonValue) {
+ if (_vm->_mode == MODE_COMBAT) {
+ ErrorScroll::show(_vm, Res.NO_SAVING_IN_COMBAT);
+ } else {
+ // Close dialog and show saving dialog
+ result = 4;
}
+
+ } else if (Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_FXON == _buttonValue) {
+ sound.setFxOn(!sound._fxOn);
+
+ } else if (Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_MUSICON == _buttonValue) {
+ sound.setMusicOn(!sound._musicOn);
+
+ } else if (Common::KEYCODE_ESCAPE == _buttonValue) {
+ result = 1;
+
+ } else if (Common::KEYCODE_g == _buttonValue) { // Goober cheat sequence
+ debugCtr = 1;
+ } else if (Common::KEYCODE_o == _buttonValue) {
+ debugCtr = (debugCtr == 1 || debugCtr == 2) ? 2 : 0;
+ } else if (Common::KEYCODE_b == _buttonValue) {
+ debugCtr = (debugCtr == 2) ? 3 : 0;
+ } else if (Common::KEYCODE_r == _buttonValue) {
+ if (debugCtr == 3)
+ _debugFlag = true;
+ else
+ debugCtr = 0;
}
+
} while (!result);
w.close();
@@ -271,27 +166,17 @@ int ControlPanel::execute() {
void ControlPanel::loadButtons() {
_iconSprites.load("cpanel.icn");
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
- addButton(Common::Rect(214, 56, 244, 69), Common::KEYCODE_e, 0, &_iconSprites); // russian key Ó
- addButton(Common::Rect(214, 75, 244, 88), Common::KEYCODE_v, 0, &_iconSprites); // russian key Ì
- addButton(Common::Rect(135, 56, 165, 69), Common::KEYCODE_p, 0, &_iconSprites); // russian key Ç
- addButton(Common::Rect(135, 75, 165, 88), Common::KEYCODE_c, 0, &_iconSprites); // russian key Ñ
- addButton(Common::Rect(135, 94, 165, 107), Common::KEYCODE_d, 0, &_iconSprites); // russian key Â
- addButton(Common::Rect(175, 113, 205, 126), Common::KEYCODE_g, 0, &_iconSprites); // russian key Ï
- } else {
-
- addButton(Common::Rect(214, 56, 244, 69), Common::KEYCODE_e, 0, &_iconSprites);
- addButton(Common::Rect(214, 75, 244, 88), Common::KEYCODE_m, 0, &_iconSprites);
- addButton(Common::Rect(135, 56, 165, 69), Common::KEYCODE_l, 0, &_iconSprites);
- addButton(Common::Rect(135, 75, 165, 88), Common::KEYCODE_s, 0, &_iconSprites);
-
- // For ScummVM we've merged both Save and Save As into a single
- // save item, so we don't need this one
- addButton(Common::Rect(), 0);
-
- addButton(Common::Rect(135, 94, 165, 107), Common::KEYCODE_q, 0, &_iconSprites);
- addButton(Common::Rect(175, 113, 205, 126), Common::KEYCODE_w, 0, &_iconSprites);
- }
+ addButton(Common::Rect(214, 56, 244, 69), Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_FXON, 0, &_iconSprites);
+ addButton(Common::Rect(214, 75, 244, 88), Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_MUSICON, 0, &_iconSprites);
+ addButton(Common::Rect(135, 56, 165, 69), Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_LOAD, 0, &_iconSprites);
+ addButton(Common::Rect(135, 75, 165, 88), Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_SAVE, 0, &_iconSprites);
+
+ // For ScummVM we've merged both Save and Save As into a single
+ // save item, so we don't need this one
+ addButton(Common::Rect(), 0);
+
+ addButton(Common::Rect(135, 94, 165, 107), Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_QUIT, 0, &_iconSprites);
+ addButton(Common::Rect(175, 113, 205, 126), Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_MRWIZARD, 0, &_iconSprites);
}
Common::String ControlPanel::getButtonText() {
diff --git a/engines/xeen/dialogs/dialogs_create_char.cpp b/engines/xeen/dialogs/dialogs_create_char.cpp
index a13cf31c58..8c0a835572 100644
--- a/engines/xeen/dialogs/dialogs_create_char.cpp
+++ b/engines/xeen/dialogs/dialogs_create_char.cpp
@@ -20,7 +20,6 @@
*
*/
-#include "common/config-manager.h"
#include "xeen/dialogs/dialogs_create_char.h"
#include "xeen/dialogs/dialogs_input.h"
#include "xeen/xeen.h"
@@ -131,198 +130,88 @@ void CreateCharacterDialog::execute() {
// Handling for different actions
if (_buttonValue == Common::KEYCODE_ESCAPE)
break;
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
- switch (_buttonValue) {
- case Common::KEYCODE_UP:
- if (charIndex == 0)
- continue;
- --charIndex;
- race = (Race)((freeCharList[charIndex] / 4) % 5);
- sex = (Sex)(freeCharList[charIndex] & 1);
- break;
-
- case Common::KEYCODE_DOWN:
- if (++charIndex == (int)freeCharList.size()) {
- --charIndex;
- continue;
- } else {
- race = (Race)((freeCharList[charIndex] / 4) % 5);
- sex = (Sex)(freeCharList[charIndex] & 1);
- }
- break;
-
- case Common::KEYCODE_PAGEUP:
- for (int tempClass = selectedClass - 1; tempClass >= 0; --tempClass) {
- if (_allowedClasses[tempClass]) {
- selectedClass = tempClass;
- break;
- }
- }
-
- printSelectionArrow(selectedClass);
+
+ if (Common::KEYCODE_UP == _buttonValue) {
+ if (charIndex == 0)
continue;
- case Common::KEYCODE_PAGEDOWN:
- break;
-
- // Ë (Ñè{ë})
- case Common::KEYCODE_k: // russian key Ë
- // È ({È}íò)
- case Common::KEYCODE_b: // russian key È
- // Ä ({Ä}óõ)
- case Common::KEYCODE_l: // russian key Ä
- // Æ (Ñë{æ})
- case Common::KEYCODE_SEMICOLON: // russian key Æ
- // Ê (Ñ{ê}ð)
- case Common::KEYCODE_r: // russian key Ê
- // Ì ({Ì}òê)
- case Common::KEYCODE_v: // russian key Ì
- // Ó ({Ó}ä÷)
- case Common::KEYCODE_e: // russian key Ó
- if (swapAttributes(_buttonValue)) {
- checkClass();
- classId = -1;
- selectedClass = newCharDetails(race, sex, classId, selectedClass, msg);
- }
- break;
-
- case 1000:
- case 1001:
- case 1002:
- case 1003:
- case 1004:
- case 1005:
- case 1006:
- case 1007:
- case 1008:
- case 1009:
- if (_allowedClasses[_buttonValue - 1000]) {
- selectedClass = classId = _buttonValue - 1000;
- }
- break;
-
- // Ñ ({Ñ}îçä)
- case Common::KEYCODE_c: // russian key Ñ
- {
- _vm->_mode = MODE_FF;
- bool result = saveCharacter(party._roster[freeCharList[charIndex]],
- classId, race, sex);
- _vm->_mode = MODE_4;
-
- if (result)
- restartFlag = true;
- continue;
- }
-
- case Common::KEYCODE_RETURN:
- classId = selectedClass;
- break;
-
- // Á ({Á}ðîñîê)
- case Common::KEYCODE_COMMA: // russian key Á
- case Common::KEYCODE_SPACE:
- // Re-roll the attributes
- rollAttributes();
- classId = -1;
- break;
-
- default:
- // For all other keypresses, skip the code below the switch
- // statement, and go to wait for the next key
- continue;
- }
- } else {
- switch (_buttonValue) {
- case Common::KEYCODE_UP:
- if (charIndex == 0)
- continue;
+ --charIndex;
+ race = (Race)((freeCharList[charIndex] / 4) % 5);
+ sex = (Sex)(freeCharList[charIndex] & 1);
+ } else if (Common::KEYCODE_DOWN == _buttonValue) {
+ if (++charIndex == (int)freeCharList.size()) {
--charIndex;
+ continue;
+ } else {
race = (Race)((freeCharList[charIndex] / 4) % 5);
sex = (Sex)(freeCharList[charIndex] & 1);
- break;
+ }
- case Common::KEYCODE_DOWN:
- if (++charIndex == (int)freeCharList.size()) {
- --charIndex;
- continue;
- } else {
- race = (Race)((freeCharList[charIndex] / 4) % 5);
- sex = (Sex)(freeCharList[charIndex] & 1);
+ } else if (Common::KEYCODE_PAGEUP == _buttonValue) {
+ for (int tempClass = selectedClass - 1; tempClass >= 0; --tempClass) {
+ if (_allowedClasses[tempClass]) {
+ selectedClass = tempClass;
+ break;
}
- break;
+ }
- case Common::KEYCODE_PAGEUP:
- for (int tempClass = selectedClass - 1; tempClass >= 0; --tempClass) {
- if (_allowedClasses[tempClass]) {
- selectedClass = tempClass;
- break;
- }
- }
+ printSelectionArrow(selectedClass);
+ continue;
- printSelectionArrow(selectedClass);
- continue;
-
- case Common::KEYCODE_PAGEDOWN:
- break;
+ } else if (Common::KEYCODE_PAGEDOWN == _buttonValue) {
- case Common::KEYCODE_m:
- case Common::KEYCODE_i:
- case Common::KEYCODE_p:
- case Common::KEYCODE_e:
- case Common::KEYCODE_s:
- case Common::KEYCODE_a:
- case Common::KEYCODE_l:
- if (swapAttributes(_buttonValue)) {
- checkClass();
- classId = -1;
- selectedClass = newCharDetails(race, sex, classId, selectedClass, msg);
- }
- break;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_MGT == _buttonValue ||
+ Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_INT == _buttonValue ||
+ Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_PER == _buttonValue ||
+ Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_END == _buttonValue ||
+ Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_SPD == _buttonValue ||
+ Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_ACY == _buttonValue ||
+ Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_LCK == _buttonValue) {
+ if (swapAttributes(_buttonValue)) {
+ checkClass();
+ classId = -1;
+ selectedClass = newCharDetails(race, sex, classId, selectedClass, msg);
+ }
- case 1000:
- case 1001:
- case 1002:
- case 1003:
- case 1004:
- case 1005:
- case 1006:
- case 1007:
- case 1008:
- case 1009:
- if (_allowedClasses[_buttonValue - 1000]) {
- selectedClass = classId = _buttonValue - 1000;
- }
- break;
+ } else if (1000 == _buttonValue ||
+ 1001 == _buttonValue ||
+ 1002 == _buttonValue ||
+ 1003 == _buttonValue ||
+ 1004 == _buttonValue ||
+ 1005 == _buttonValue ||
+ 1006 == _buttonValue ||
+ 1007 == _buttonValue ||
+ 1008 == _buttonValue ||
+ 1009 == _buttonValue) {
+ if (_allowedClasses[_buttonValue - 1000]) {
+ selectedClass = classId = _buttonValue - 1000;
+ }
- case Common::KEYCODE_c: {
- _vm->_mode = MODE_FF;
- bool result = saveCharacter(party._roster[freeCharList[charIndex]],
- classId, race, sex);
- _vm->_mode = MODE_4;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_CREATE == _buttonValue) {
+ _vm->_mode = MODE_FF;
+ bool result = saveCharacter(party._roster[freeCharList[charIndex]],
+ classId, race, sex);
+ _vm->_mode = MODE_4;
- if (result)
- restartFlag = true;
- continue;
- }
+ if (result)
+ restartFlag = true;
+ continue;
- case Common::KEYCODE_RETURN:
- classId = selectedClass;
- break;
+ } else if (Common::KEYCODE_RETURN == _buttonValue) {
+ classId = selectedClass;
- case Common::KEYCODE_SPACE:
- case Common::KEYCODE_r:
- // Re-roll the attributes
- rollAttributes();
- classId = -1;
- break;
+ } else if (Common::KEYCODE_SPACE == _buttonValue ||
+ Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_ROLL == _buttonValue) {
+ // Re-roll the attributes
+ rollAttributes();
+ classId = -1;
- default:
- // For all other keypresses, skip the code below the switch
- // statement, and go to wait for the next key
- continue;
- }
+ } else {
+ // For all other keypresses, skip the code below the switch
+ // statement, and go to wait for the next key
+ continue;
}
if (_buttonValue != Common::KEYCODE_PAGEDOWN) {
@@ -360,27 +249,16 @@ void CreateCharacterDialog::loadButtons() {
_icons.load("create.icn");
// Add buttons
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
- addButton(Common::Rect(132, 98, 156, 118), Common::KEYCODE_COMMA, &_icons); // russian key Á
- addButton(Common::Rect(132, 128, 156, 148), Common::KEYCODE_c, &_icons); // russian key Ñ
- addButton(Common::Rect(168, 19, 192, 39), Common::KEYCODE_k, nullptr); // russian key Ë
- addButton(Common::Rect(168, 43, 192, 63), Common::KEYCODE_b, nullptr); // russian key È
- addButton(Common::Rect(168, 67, 192, 87), Common::KEYCODE_l, nullptr); // russian key Ä
- addButton(Common::Rect(168, 91, 192, 111), Common::KEYCODE_SEMICOLON, nullptr); // russian key Æ
- addButton(Common::Rect(168, 115, 192, 135), Common::KEYCODE_r, nullptr); // russian key Ê
- addButton(Common::Rect(168, 139, 192, 159), Common::KEYCODE_v, nullptr); // russian key Ì
- addButton(Common::Rect(168, 163, 192, 183), Common::KEYCODE_e, nullptr); // russian key Ó
- } else {
- addButton(Common::Rect(132, 98, 156, 118), Common::KEYCODE_r, &_icons);
- addButton(Common::Rect(132, 128, 156, 148), Common::KEYCODE_c, &_icons);
- addButton(Common::Rect(168, 19, 192, 39), Common::KEYCODE_n, nullptr);
- addButton(Common::Rect(168, 43, 192, 63), Common::KEYCODE_i, nullptr);
- addButton(Common::Rect(168, 67, 192, 87), Common::KEYCODE_p, nullptr);
- addButton(Common::Rect(168, 91, 192, 111), Common::KEYCODE_e, nullptr);
- addButton(Common::Rect(168, 115, 192, 135), Common::KEYCODE_s, nullptr);
- addButton(Common::Rect(168, 139, 192, 159), Common::KEYCODE_a, nullptr);
- addButton(Common::Rect(168, 163, 192, 183), Common::KEYCODE_l, nullptr);
- }
+ addButton(Common::Rect(132, 98, 156, 118), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_ROLL, &_icons);
+ addButton(Common::Rect(132, 128, 156, 148), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_CREATE, &_icons);
+ addButton(Common::Rect(168, 19, 192, 39), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_MGT, nullptr);
+ addButton(Common::Rect(168, 43, 192, 63), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_INT, nullptr);
+ addButton(Common::Rect(168, 67, 192, 87), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_PER, nullptr);
+ addButton(Common::Rect(168, 91, 192, 111), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_END, nullptr);
+ addButton(Common::Rect(168, 115, 192, 135), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_SPD, nullptr);
+ addButton(Common::Rect(168, 139, 192, 159), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_ACY, nullptr);
+ addButton(Common::Rect(168, 163, 192, 183), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_LCK, nullptr);
+
addButton(Common::Rect(132, 158, 156, 178), Common::KEYCODE_ESCAPE, &_icons);
addButton(Common::Rect(86, 98, 110, 118), Common::KEYCODE_UP, &_icons);
addButton(Common::Rect(86, 120, 110, 140), Common::KEYCODE_DOWN, &_icons);
@@ -585,52 +463,22 @@ void CreateCharacterDialog::drawDice() {
}
int CreateCharacterDialog::getAttribFromKeycode(int keycode) const {
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
- switch (keycode) {
- // ë (Ñè{ë})
- case Common::KEYCODE_k: // russian key Ë
- return MIGHT;
- // è ({È}íò)
- case Common::KEYCODE_b: // russian key È
- return INTELLECT;
- // ä({Ä}óõ)
- case Common::KEYCODE_l: // russian key Ä
- return PERSONALITY;
- // æ(Ñë{æ})
- case Common::KEYCODE_SEMICOLON: // russian key Æ
- return ENDURANCE;
- // ê(Ñ{ê}ð)
- case Common::KEYCODE_r: // russian key Ê
- return SPEED;
- // ì({Ì}òê)
- case Common::KEYCODE_v: // russian key Ì
- return ACCURACY;
- // ó({Ó}ä÷)
- case Common::KEYCODE_e: // russian key Ó
- return LUCK;
- default:
- return -1;
- }
- } else {
- switch (keycode) {
- case Common::KEYCODE_m:
- return MIGHT;
- case Common::KEYCODE_i:
- return INTELLECT;
- case Common::KEYCODE_p:
- return PERSONALITY;
- case Common::KEYCODE_e:
- return ENDURANCE;
- case Common::KEYCODE_s:
- return SPEED;
- case Common::KEYCODE_a:
- return ACCURACY;
- case Common::KEYCODE_l:
- return LUCK;
- default:
- return -1;
- }
- }
+ if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_MGT == keycode)
+ return MIGHT;
+ else if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_INT == keycode)
+ return INTELLECT;
+ else if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_PER == keycode)
+ return PERSONALITY;
+ else if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_END == keycode)
+ return ENDURANCE;
+ else if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_SPD == keycode)
+ return SPEED;
+ else if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_ACY == keycode)
+ return ACCURACY;
+ else if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_LCK == keycode)
+ return LUCK;
+ else
+ return -1;
}
bool CreateCharacterDialog::swapAttributes(int keycode) {
@@ -671,25 +519,16 @@ int CreateCharacterDialog::exchangeAttribute(int srcAttr) {
icons.load("create2.icn");
saveButtons();
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
- addButton(Common::Rect(118, 58, 142, 78), Common::KEYCODE_ESCAPE, &_icons);
- addButton(Common::Rect(168, 19, 192, 39), Common::KEYCODE_k); // russian key Ë
- addButton(Common::Rect(168, 43, 192, 63), Common::KEYCODE_b); // russian key È
- addButton(Common::Rect(168, 67, 192, 87), Common::KEYCODE_l); // russian key Ä
- addButton(Common::Rect(168, 91, 192, 111), Common::KEYCODE_SEMICOLON); // russian key Æ
- addButton(Common::Rect(168, 115, 192, 135), Common::KEYCODE_r); // russian key Ê
- addButton(Common::Rect(168, 139, 192, 159), Common::KEYCODE_v); // russian key Ì
- addButton(Common::Rect(168, 163, 192, 183), Common::KEYCODE_e); // russian key Ó
- } else {
- addButton(Common::Rect(118, 58, 142, 78), Common::KEYCODE_ESCAPE, &_icons);
- addButton(Common::Rect(168, 19, 192, 39), Common::KEYCODE_m);
- addButton(Common::Rect(168, 43, 192, 63), Common::KEYCODE_i);
- addButton(Common::Rect(168, 67, 192, 87), Common::KEYCODE_p);
- addButton(Common::Rect(168, 91, 192, 111), Common::KEYCODE_e);
- addButton(Common::Rect(168, 115, 192, 135), Common::KEYCODE_s);
- addButton(Common::Rect(168, 139, 192, 159), Common::KEYCODE_a);
- addButton(Common::Rect(168, 163, 192, 183), Common::KEYCODE_l);
- }
+
+ addButton(Common::Rect(118, 58, 142, 78), Common::KEYCODE_ESCAPE, &_icons);
+ addButton(Common::Rect(168, 19, 192, 39), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_MGT);
+ addButton(Common::Rect(168, 43, 192, 63), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_INT);
+ addButton(Common::Rect(168, 67, 192, 87), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_PER);
+ addButton(Common::Rect(168, 91, 192, 111), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_END);
+ addButton(Common::Rect(168, 115, 192, 135), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_SPD);
+ addButton(Common::Rect(168, 139, 192, 159), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_ACY);
+ addButton(Common::Rect(168, 163, 192, 183), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_LCK);
+
Window &w = windows[26];
w.open();
w.writeString(Common::String::format(Res.EXCHANGE_ATTR_WITH, Res.STAT_NAMES[srcAttr]));
diff --git a/engines/xeen/dialogs/dialogs_difficulty.cpp b/engines/xeen/dialogs/dialogs_difficulty.cpp
index df80941311..566f9b2631 100644
--- a/engines/xeen/dialogs/dialogs_difficulty.cpp
+++ b/engines/xeen/dialogs/dialogs_difficulty.cpp
@@ -20,7 +20,6 @@
*
*/
-#include "common/config-manager.h"
#include "xeen/dialogs/dialogs_difficulty.h"
#include "xeen/resources.h"
#include "xeen/xeen.h"
@@ -52,23 +51,14 @@ int DifficultyDialog::execute() {
while (!_vm->shouldExit()) {
events.pollEventsAndWait();
checkEvents(_vm);
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
- // à ({à}âàíòþðèñò)
- if (_buttonValue == Common::KEYCODE_f) // russian key À
- result = ADVENTURER;
- // â ({â}îèí)
- else if (_buttonValue == Common::KEYCODE_d) // russian key Â
- result = WARRIOR;
- else if (_buttonValue != Common::KEYCODE_ESCAPE)
- continue;
- } else {
- if (_buttonValue == Common::KEYCODE_a)
- result = ADVENTURER;
- else if (_buttonValue == Common::KEYCODE_w)
- result = WARRIOR;
- else if (_buttonValue != Common::KEYCODE_ESCAPE)
- continue;
- }
+
+ if (Res.KEY_CONSTANTS.DIALOGS_DIFFICULTY.KEY_ADVENTURER == _buttonValue)
+ result = ADVENTURER;
+ else if (Res.KEY_CONSTANTS.DIALOGS_DIFFICULTY.KEY_WARRIOR == _buttonValue)
+ result = WARRIOR;
+ else if (Common::KEYCODE_ESCAPE != _buttonValue)
+ continue;
+
break;
}
@@ -78,13 +68,9 @@ int DifficultyDialog::execute() {
void DifficultyDialog::loadButtons() {
_sprites.load("choice.icn");
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
- addButton(Common::Rect(68, 167, 158, 187), Common::KEYCODE_f, &_sprites); // russian key À
- addButton(Common::Rect(166, 167, 256, 187), Common::KEYCODE_d, &_sprites); // russian key Â
- } else {
- addButton(Common::Rect(68, 167, 158, 187), Common::KEYCODE_a, &_sprites);
- addButton(Common::Rect(166, 167, 256, 187), Common::KEYCODE_w, &_sprites);
- }
+
+ addButton(Common::Rect(68, 167, 158, 187), Res.KEY_CONSTANTS.DIALOGS_DIFFICULTY.KEY_ADVENTURER, &_sprites);
+ addButton(Common::Rect(166, 167, 256, 187), Res.KEY_CONSTANTS.DIALOGS_DIFFICULTY.KEY_WARRIOR, &_sprites);
}
} // End of namespace Xeen
diff --git a/engines/xeen/font.cpp b/engines/xeen/font.cpp
index b4f44fb780..bdf15af130 100644
--- a/engines/xeen/font.cpp
+++ b/engines/xeen/font.cpp
@@ -20,7 +20,6 @@
*
*/
-#include "common/config-manager.h"
#include "common/endian.h"
#include "xeen/font.h"
#include "xeen/resources.h"
@@ -39,7 +38,7 @@ FontSurface::FontSurface() : XSurface(), _msgWraps(false), _displayString(nullpt
_writePos(*FontData::_fontWritePos) {
setTextColor(0);
- lang = Common::parseLanguage(ConfMan.get("language"));
+ lang = g_vm->getLanguage();
if (Common::RU_RUS == lang) {
_fntEnOffset = 0x0000;
_fntNonEnOffset = 0x0800;
@@ -62,7 +61,7 @@ FontSurface::FontSurface(int wv, int hv) : XSurface(wv, hv),
create(w, h);
setTextColor(0);
- lang = Common::parseLanguage(ConfMan.get("language"));
+ lang = g_vm->getLanguage();
if (Common::RU_RUS == lang) {
_fntEnOffset = 0x0000;
_fntNonEnOffset = 0x0800;
diff --git a/engines/xeen/party.cpp b/engines/xeen/party.cpp
index a2c2982530..55d13af5a8 100644
--- a/engines/xeen/party.cpp
+++ b/engines/xeen/party.cpp
@@ -20,7 +20,6 @@
*
*/
-#include "common/config-manager.h"
#include "common/scummsys.h"
#include "common/algorithm.h"
#include "xeen/party.h"
@@ -822,7 +821,7 @@ bool Party::arePacksFull() const {
}
const char *Party::getFoundForm(const Character &c) {
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ if (Common::RU_RUS == g_vm->getLanguage()) {
switch (c._sex) {
case MALE:
return Res.FOUND[0];
@@ -1484,7 +1483,7 @@ bool Party::giveTake(int takeMode, uint takeVal, int giveMode, uint giveVal, int
}
const char *Party::getPickLockForm(const Character &c) {
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ if (Common::RU_RUS == g_vm->getLanguage()) {
switch (c._sex) {
case MALE:
return Res.PICK_FORM[0];
@@ -1496,7 +1495,7 @@ const char *Party::getPickLockForm(const Character &c) {
}
const char *Party::getUnablePickLockForm(const Character &c) {
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language"))) {
+ if (Common::RU_RUS == g_vm->getLanguage()) {
switch (c._sex) {
case MALE:
return Res.UNABLE_TO_PICK_FORM[0];
diff --git a/engines/xeen/resources.cpp b/engines/xeen/resources.cpp
index 7a17d0180c..3bc06388d3 100644
--- a/engines/xeen/resources.cpp
+++ b/engines/xeen/resources.cpp
@@ -20,7 +20,6 @@
*
*/
-#include "common/config-manager.h"
#include "common/scummsys.h"
#include "xeen/resources.h"
#include "xeen/files.h"
@@ -61,8 +60,8 @@ Resources::Resources() {
}
void Resources::loadData() {
- Common::Language lang = Common::parseLanguage(ConfMan.get("language"));
- ResFile file(_buffer, lang);
+ Common::Language lang = g_vm->getLanguage();
+ ResFile file("CONSTANTS_", _buffer, lang);
file.syncString(CLOUDS_CREDITS);
file.syncString(DARK_SIDE_CREDITS);
file.syncString(SWORDS_CREDITS1);
@@ -420,6 +419,32 @@ void Resources::loadData() {
file.syncString(DARKSIDE_ENDING2);
file.syncString(PHAROAH_ENDING_TEXT1);
file.syncString(PHAROAH_ENDING_TEXT2);
+
+ ResFile keys("CONSTKEYS_", _buffer, lang);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_ITEM);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_QUICK);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_EXCHANGE);
+
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_FXON);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_MUSICON);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_LOAD);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_SAVE);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_QUIT);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_MRWIZARD);
+
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_ROLL);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_CREATE);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_MGT);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_INT);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_PER);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_END);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_SPD);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_ACY);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_LCK);
+
+
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_DIFFICULTY.KEY_ADVENTURER);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_DIFFICULTY.KEY_WARRIOR);
}
} // End of namespace Xeen
diff --git a/engines/xeen/resources.h b/engines/xeen/resources.h
index 378647c5a3..818ee669fb 100644
--- a/engines/xeen/resources.h
+++ b/engines/xeen/resources.h
@@ -48,7 +48,7 @@ class Resources {
char *_buffer;
char *_buffStart;
public:
- ResFile(char *buffer, int num) : File("CONSTANTS_" + Common::String::format("%i", num)), _buffer(buffer), _buffStart(buffer) {}
+ ResFile(const char* type, char *buffer, int num) : File(type + Common::String::format("%i", num)), _buffer(buffer), _buffStart(buffer) {}
void syncString(const char *&str) {
str = _buffer;
@@ -473,6 +473,45 @@ public:
const char *DARKSIDE_ENDING2;
const char *PHAROAH_ENDING_TEXT1;
const char *PHAROAH_ENDING_TEXT2;
+
+ struct {
+
+ struct {
+ int KEY_ITEM;
+ int KEY_QUICK;
+ int KEY_EXCHANGE;
+ int KEY_ESCAPE;
+ } DIALOGS_CHAR_INFO;
+
+ struct {
+ int KEY_FXON;
+ int KEY_MUSICON;
+ int KEY_LOAD;
+ int KEY_SAVE;
+ int KEY_QUIT;
+ int KEY_MRWIZARD;
+ } DIALOGS_CONTROL_PANEL;
+
+ struct {
+ int KEY_ROLL;
+ int KEY_CREATE;
+ int KEY_MGT;
+ int KEY_INT;
+ int KEY_PER;
+ int KEY_END;
+ int KEY_SPD;
+ int KEY_ACY;
+ int KEY_LCK;
+ } DIALOGS_CREATE_CHAR;
+
+ struct {
+ int KEY_ADVENTURER;
+ int KEY_WARRIOR;
+ } DIALOGS_DIFFICULTY;
+
+ } KEY_CONSTANTS;
+
+
public:
/**
* Constructor
Commit: 3bba21845dca4699bd9b8ab17d068c22cfc3319b
https://github.com/scummvm/scummvm/commit/3bba21845dca4699bd9b8ab17d068c22cfc3319b
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Moving translated hotkeys to resources.
Hotkeys changed in items dialogs.
Changed paths:
devtools/create_xeen/constants.cpp
devtools/create_xeen/constants.h
devtools/create_xeen/en_constants.h
devtools/create_xeen/ru_constants.h
dists/engine-data/xeen.ccs
engines/xeen/dialogs/dialogs_items.cpp
engines/xeen/resources.cpp
engines/xeen/resources.h
diff --git a/devtools/create_xeen/constants.cpp b/devtools/create_xeen/constants.cpp
index 938010520d..61f4dd27ed 100644
--- a/devtools/create_xeen/constants.cpp
+++ b/devtools/create_xeen/constants.cpp
@@ -493,12 +493,14 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CHAR_INFO()->KEY_ITEM());
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CHAR_INFO()->KEY_QUICK());
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CHAR_INFO()->KEY_EXCHANGE());
+
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_FXON());
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_MUSICON());
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_LOAD());
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_SAVE());
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_QUIT());
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_MRWIZARD());
+
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_ROLL());
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_CREATE());
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_MGT());
@@ -508,9 +510,27 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_SPD());
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_ACY());
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_LCK());
+
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_DIFFICULTY()->KEY_ADVENTURER());
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_DIFFICULTY()->KEY_WARRIOR());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_WEAPONS());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_ARMOR());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_ACCESSORY());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_MISC());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_ENCHANT());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_USE());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_BUY());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_SELL());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_IDENTIFY());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_FIX());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_EQUIP());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_REM());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_DISC());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_QUEST());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_RECHRG());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_GOLD());
+
cc.add("CONSTKEYS" + num, keys);
}
diff --git a/devtools/create_xeen/constants.h b/devtools/create_xeen/constants.h
index 78b6752654..eb0a70d9e1 100644
--- a/devtools/create_xeen/constants.h
+++ b/devtools/create_xeen/constants.h
@@ -1287,6 +1287,27 @@ public:
virtual const int KEY_WARRIOR() = 0;
};
virtual DialogsDifficulty *DIALOGS_DIFFICULTY() = 0;
+
+ class DialogsItems {
+ public:
+ virtual const int KEY_WEAPONS() = 0;
+ virtual const int KEY_ARMOR() = 0;
+ virtual const int KEY_ACCESSORY() = 0;
+ virtual const int KEY_MISC() = 0;
+ virtual const int KEY_ENCHANT() = 0;
+ virtual const int KEY_USE() = 0;
+ virtual const int KEY_BUY() = 0;
+ virtual const int KEY_SELL() = 0;
+ virtual const int KEY_IDENTIFY() = 0;
+ virtual const int KEY_FIX() = 0;
+ virtual const int KEY_EQUIP() = 0;
+ virtual const int KEY_REM() = 0;
+ virtual const int KEY_DISC() = 0;
+ virtual const int KEY_QUEST() = 0;
+ virtual const int KEY_RECHRG() = 0;
+ virtual const int KEY_GOLD() = 0;
+ };
+ virtual DialogsItems *DIALOGS_ITEMS() = 0;
};
virtual KeyConstants *KEY_CONSTANTS() = 0;
};
diff --git a/devtools/create_xeen/en_constants.h b/devtools/create_xeen/en_constants.h
index 2984ab8b58..741d1870ef 100644
--- a/devtools/create_xeen/en_constants.h
+++ b/devtools/create_xeen/en_constants.h
@@ -2039,16 +2039,40 @@ public:
const int KEY_WARRIOR() { return Common::KEYCODE_w; }
};
EN_DialogsDifficulty *DIALOGS_DIFFICULTY() {
- if (!_dd)
- _dd = new EN_DialogsDifficulty();
+ if (!_dd) _dd = new EN_DialogsDifficulty();
return _dd;
}
+ class EN_DialogsItems : public DialogsItems {
+ public:
+ const int KEY_WEAPONS() { return Common::KEYCODE_w; }
+ const int KEY_ARMOR() { return Common::KEYCODE_a; }
+ const int KEY_ACCESSORY() { return Common::KEYCODE_c; }
+ const int KEY_MISC() { return Common::KEYCODE_m; }
+ const int KEY_ENCHANT() { return Common::KEYCODE_e; }
+ const int KEY_USE() { return Common::KEYCODE_u; }
+ const int KEY_BUY() { return Common::KEYCODE_b; }
+ const int KEY_SELL() { return Common::KEYCODE_s; }
+ const int KEY_IDENTIFY() { return Common::KEYCODE_i; }
+ const int KEY_FIX() { return Common::KEYCODE_f; }
+ const int KEY_EQUIP() { return Common::KEYCODE_e; }
+ const int KEY_REM() { return Common::KEYCODE_r; }
+ const int KEY_DISC() { return Common::KEYCODE_d; }
+ const int KEY_QUEST() { return Common::KEYCODE_q; }
+ const int KEY_RECHRG() { return Common::KEYCODE_r; }
+ const int KEY_GOLD() { return Common::KEYCODE_g; }
+ };
+ EN_DialogsItems *DIALOGS_ITEMS() {
+ if (!_di) _di = new EN_DialogsItems();
+ return _di;
+ }
+
private:
EN_DialogsCharInfo *_dci = NULL;
EN_DialogsControlPanel *_dcp = NULL;
EN_DialogsCreateChar *_dcc = NULL;
EN_DialogsDifficulty *_dd = NULL;
+ EN_DialogsItems *_di = NULL;
};
EN_KeyConstants *KEY_CONSTANTS() {
diff --git a/devtools/create_xeen/ru_constants.h b/devtools/create_xeen/ru_constants.h
index 50d3c57f30..1205c1cc0f 100644
--- a/devtools/create_xeen/ru_constants.h
+++ b/devtools/create_xeen/ru_constants.h
@@ -2049,12 +2049,36 @@ public:
return _dd;
}
+ class RU_DialogsItems : public DialogsItems {
+ public:
+ const int KEY_WEAPONS() { return Common::KEYCODE_SEMICOLON; }
+ const int KEY_ARMOR() { return Common::KEYCODE_COMMA; }
+ const int KEY_ACCESSORY() { return Common::KEYCODE_e; }
+ const int KEY_MISC() { return Common::KEYCODE_h; }
+ const int KEY_ENCHANT() { return Common::KEYCODE_p; }
+ const int KEY_USE() { return Common::KEYCODE_b; }
+ const int KEY_BUY() { return Common::KEYCODE_r; }
+ const int KEY_SELL() { return Common::KEYCODE_g; }
+ const int KEY_IDENTIFY() { return Common::KEYCODE_j; }
+ const int KEY_FIX() { return Common::KEYCODE_x; }
+ const int KEY_EQUIP() { return Common::KEYCODE_y; }
+ const int KEY_REM() { return Common::KEYCODE_c; }
+ const int KEY_DISC() { return Common::KEYCODE_d; }
+ const int KEY_QUEST() { return Common::KEYCODE_p; }
+ const int KEY_RECHRG() { return Common::KEYCODE_g; }
+ const int KEY_GOLD() { return Common::KEYCODE_p; }
+ };
+ RU_DialogsItems *DIALOGS_ITEMS() {
+ if (!_di) _di = new RU_DialogsItems();
+ return _di;
+ }
+
private:
RU_DialogsCharInfo *_dci = NULL;
RU_DialogsControlPanel *_dcp = NULL;
RU_DialogsCreateChar *_dcc = NULL;
- RU_DialogsDifficulty *_dd = NULL;
-
+ RU_DialogsDifficulty *_dd = NULL;
+ RU_DialogsItems *_di = NULL;
};
RU_KeyConstants *KEY_CONSTANTS() {
diff --git a/dists/engine-data/xeen.ccs b/dists/engine-data/xeen.ccs
index 68bef8d9f0..55dc601ece 100644
Binary files a/dists/engine-data/xeen.ccs and b/dists/engine-data/xeen.ccs differ
diff --git a/engines/xeen/dialogs/dialogs_items.cpp b/engines/xeen/dialogs/dialogs_items.cpp
index 39a694c25c..ba67618b65 100644
--- a/engines/xeen/dialogs/dialogs_items.cpp
+++ b/engines/xeen/dialogs/dialogs_items.cpp
@@ -20,7 +20,6 @@
*
*/
-#include "common/config-manager.h"
#include "xeen/dialogs/dialogs_items.h"
#include "xeen/dialogs/dialogs_query.h"
#include "xeen/dialogs/dialogs_quests.h"
@@ -296,24 +295,19 @@ Character *ItemsDialog::execute(Character *c, ItemsMode mode) {
}
// Handle other selections
- switch (_buttonValue) {
- case Common::KEYCODE_F1:
- case Common::KEYCODE_F2:
- case Common::KEYCODE_F3:
- case Common::KEYCODE_F4:
- case Common::KEYCODE_F5:
- case Common::KEYCODE_F6:
- if (!varA && mode != ITEMMODE_3 && mode != ITEMMODE_ENCHANT
- && mode != ITEMMODE_RECHARGE && mode != ITEMMODE_TO_GOLD
- && party._mazeId != 0) {
+ if (Common::KEYCODE_F1 == _buttonValue ||
+ Common::KEYCODE_F2 == _buttonValue ||
+ Common::KEYCODE_F3 == _buttonValue ||
+ Common::KEYCODE_F4 == _buttonValue ||
+ Common::KEYCODE_F5 == _buttonValue ||
+ Common::KEYCODE_F6 == _buttonValue) {
+ if (!varA && mode != ITEMMODE_3 && mode != ITEMMODE_ENCHANT && mode != ITEMMODE_RECHARGE && mode != ITEMMODE_TO_GOLD && party._mazeId != 0) {
_buttonValue -= Common::KEYCODE_F1;
- if (_buttonValue < (int)(_vm->_mode == MODE_COMBAT ?
- combat._combatParty.size() : party._activeParty.size())) {
+ if (_buttonValue < (int)(_vm->_mode == MODE_COMBAT ? combat._combatParty.size() : party._activeParty.size())) {
// Character number is valid
redrawFlag = REDRAW_FULL;
- Character *newChar = _vm->_mode == MODE_COMBAT ?
- combat._combatParty[_buttonValue] : &party._activeParty[_buttonValue];
+ Character *newChar = _vm->_mode == MODE_COMBAT ? combat._combatParty[_buttonValue] : &party._activeParty[_buttonValue];
if (mode == ITEMMODE_BUY) {
_oldCharacter = newChar;
@@ -333,7 +327,7 @@ Character *ItemsDialog::execute(Character *c, ItemsMode mode) {
ErrorScroll::show(_vm, Res.CANNOT_REMOVE_CURSED_ITEM);
else if (destItems.isFull())
ErrorScroll::show(_vm, Common::String::format(
- Res.CATEGORY_BACKPACK_IS_FULL[category], c->_name.c_str()));
+ Res.CATEGORY_BACKPACK_IS_FULL[category], c->_name.c_str()));
else {
XeenItem &destItem = destItems[INV_ITEMS_TOTAL - 1];
destItem = srcItem;
@@ -353,139 +347,112 @@ Character *ItemsDialog::execute(Character *c, ItemsMode mode) {
continue;
}
}
- break;
- case Common::KEYCODE_1:
- case Common::KEYCODE_2:
- case Common::KEYCODE_3:
- case Common::KEYCODE_4:
- case Common::KEYCODE_5:
- case Common::KEYCODE_6:
- case Common::KEYCODE_7:
- case Common::KEYCODE_8:
- case Common::KEYCODE_9:
+ } else if (Common::KEYCODE_1 == _buttonValue ||
+ Common::KEYCODE_2 == _buttonValue ||
+ Common::KEYCODE_3 == _buttonValue ||
+ Common::KEYCODE_4 == _buttonValue ||
+ Common::KEYCODE_5 == _buttonValue ||
+ Common::KEYCODE_6 == _buttonValue ||
+ Common::KEYCODE_7 == _buttonValue ||
+ Common::KEYCODE_8 == _buttonValue ||
+ Common::KEYCODE_9 == _buttonValue) {
// Select an item
- if (mode == ITEMMODE_3)
- break;
-
- _buttonValue -= Common::KEYCODE_1;
- if (_buttonValue != itemIndex) {
- // Check whether the new selection has an associated item
- if (!c->_items[category][_buttonValue].empty()) {
- itemIndex = _buttonValue;
+ if (mode != ITEMMODE_3) {
+ _buttonValue -= Common::KEYCODE_1;
+ if (_buttonValue != itemIndex) {
+ // Check whether the new selection has an associated item
+ if (!c->_items[category][_buttonValue].empty()) {
+ itemIndex = _buttonValue;
+ Common::fill(&arr[0], &arr[40], 0);
+ arr[itemIndex] = 15;
+ }
+ } else {
Common::fill(&arr[0], &arr[40], 0);
- arr[itemIndex] = 15;
+ itemIndex = -1;
}
- } else {
- Common::fill(&arr[0], &arr[40], 0);
- itemIndex = -1;
+
+ redrawFlag = REDRAW_TEXT;
}
- redrawFlag = REDRAW_TEXT;
- break;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_WEAPONS == _buttonValue) {
+ // Weapons category
+ category = CATEGORY_WEAPON;
+ redrawFlag = REDRAW_FULL;
- case Common::KEYCODE_a:
+ } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ARMOR == _buttonValue) {
// Armor category
category = CATEGORY_ARMOR;
redrawFlag = REDRAW_FULL;
- break;
-
- case Common::KEYCODE_b:
- // Buy
- if (mode != ITEMMODE_CHAR_INFO && mode != ITEMMODE_RECHARGE &&
- mode != ITEMMODE_ENCHANT && mode != ITEMMODE_TO_GOLD) {
- mode = ITEMMODE_BUY;
- c = &_itemsCharacter;
- redrawFlag = REDRAW_FULL;
- }
- break;
- case Common::KEYCODE_c:
+ } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ACCESSORY == _buttonValue) {
// Accessories category
category = CATEGORY_ACCESSORY;
redrawFlag = REDRAW_FULL;
- break;
- case Common::KEYCODE_d:
- if (mode == ITEMMODE_CHAR_INFO)
- actionIndex = 3;
- break;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_MISC == _buttonValue) {
+ // Misc
+ category = CATEGORY_MISC;
+ redrawFlag = REDRAW_FULL;
- case Common::KEYCODE_e:
- if (mode == ITEMMODE_CHAR_INFO || mode == ITEMMODE_ENCHANT ||
- mode == ITEMMODE_TO_GOLD) {
- if (category != CATEGORY_MISC) {
- actionIndex = mode == ITEMMODE_ENCHANT ? 4 : 0;
- }
+ } else if (mode == ITEMMODE_ENCHANT ||
+ mode == ITEMMODE_RECHARGE ||
+ mode == ITEMMODE_TO_GOLD) {
+ if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_USE == _buttonValue) {
+
+ } else if (mode == ITEMMODE_ENCHANT &&
+ Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ENCHANT == _buttonValue) {
+ actionIndex = 4;
+ } else if (mode == ITEMMODE_RECHARGE &&
+ Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_RECHRG == _buttonValue) {
+ actionIndex = 5;
+ } else if (mode == ITEMMODE_TO_GOLD &&
+ Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_GOLD == _buttonValue) {
+ actionIndex = 6;
+ } else if (mode == ITEMMODE_TO_GOLD &&
+ Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_EQUIP == _buttonValue) {
+ if (category != CATEGORY_MISC)
+ actionIndex = 0;
}
- break;
- case Common::KEYCODE_f:
- if (mode != ITEMMODE_CHAR_INFO && mode != ITEMMODE_RECHARGE &&
- mode != ITEMMODE_ENCHANT && mode != ITEMMODE_TO_GOLD) {
- mode = ITEMMODE_REPAIR;
+ } else if (ITEMMODE_BUY == mode ||
+ ITEMMODE_SELL == mode ||
+ ITEMMODE_IDENTIFY == mode ||
+ ITEMMODE_REPAIR == mode) {
+ if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_BUY == _buttonValue) {
+ mode = ITEMMODE_BUY;
+ c = &_itemsCharacter;
+ redrawFlag = REDRAW_FULL;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_SELL == _buttonValue) {
+ mode = ITEMMODE_SELL;
c = startingChar;
redrawFlag = REDRAW_TEXT;
- }
- break;
-
- case Common::KEYCODE_g:
- if (mode == ITEMMODE_TO_GOLD)
- actionIndex = 6;
- break;
-
- case Common::KEYCODE_i:
- if (mode != ITEMMODE_CHAR_INFO && mode != ITEMMODE_RECHARGE &&
- mode != ITEMMODE_ENCHANT && mode != ITEMMODE_TO_GOLD) {
+ } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_IDENTIFY == _buttonValue) {
mode = ITEMMODE_IDENTIFY;
c = startingChar;
redrawFlag = REDRAW_TEXT;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_FIX == _buttonValue) {
+ mode = ITEMMODE_REPAIR;
+ c = startingChar;
+ redrawFlag = REDRAW_TEXT;
}
- break;
-
- case Common::KEYCODE_m:
- // Misc
- category = CATEGORY_MISC;
- redrawFlag = REDRAW_FULL;
- break;
-
- case Common::KEYCODE_q:
- // Quests
- if (mode == ITEMMODE_CHAR_INFO) {
+ } else if (ITEMMODE_CHAR_INFO == mode) {
+ if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_EQUIP == _buttonValue) {
+ if (category != CATEGORY_MISC)
+ actionIndex = 0;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_USE == _buttonValue) {
+ if (category == CATEGORY_MISC)
+ actionIndex = 2;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_REM == _buttonValue) {
+ actionIndex = 1;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_DISC == _buttonValue) {
+ actionIndex = 3;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_QUEST == _buttonValue) {
+ // Quests
Quests::show(_vm);
redrawFlag = REDRAW_FULL;
}
- break;
- case Common::KEYCODE_r:
- if (mode == ITEMMODE_CHAR_INFO)
- actionIndex = 1;
- else if (mode == ITEMMODE_RECHARGE)
- actionIndex = 5;
- break;
-
- case Common::KEYCODE_s:
- if (mode != ITEMMODE_CHAR_INFO && mode != ITEMMODE_RECHARGE &&
- mode != ITEMMODE_ENCHANT && mode != ITEMMODE_TO_GOLD) {
- mode = ITEMMODE_SELL;
- c = startingChar;
- redrawFlag = REDRAW_TEXT;
- }
- break;
-
- case Common::KEYCODE_u:
- if (mode == ITEMMODE_CHAR_INFO && category == CATEGORY_MISC)
- actionIndex = 2;
- break;
-
- case Common::KEYCODE_w:
- // Weapons category
- category = CATEGORY_WEAPON;
- redrawFlag = REDRAW_FULL;
- break;
-
- default:
- break;
}
}
@@ -508,13 +475,13 @@ void ItemsDialog::loadButtons(ItemsMode mode, Character *&c, ItemCategory catego
clearButtons();
if (mode == ITEMMODE_ENCHANT || mode == ITEMMODE_RECHARGE || mode == ITEMMODE_TO_GOLD) {
// Enchant button list
- addButton(Common::Rect(12, 109, 36, 129), Common::KEYCODE_w, &_iconSprites);
- addButton(Common::Rect(46, 109, 70, 129), Common::KEYCODE_a, &_iconSprites);
- addButton(Common::Rect(80, 109, 104, 129), Common::KEYCODE_c, &_iconSprites);
- addButton(Common::Rect(114, 109, 138, 129), Common::KEYCODE_m, &_iconSprites);
- addButton(Common::Rect(148, 109, 172, 129), Common::KEYCODE_e, &_iconSprites);
+ addButton(Common::Rect(12, 109, 36, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_WEAPONS, &_iconSprites);
+ addButton(Common::Rect(46, 109, 70, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ARMOR, &_iconSprites);
+ addButton(Common::Rect(80, 109, 104, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ACCESSORY, &_iconSprites);
+ addButton(Common::Rect(114, 109, 138, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_MISC, &_iconSprites);
+ addButton(Common::Rect(148, 109, 172, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ENCHANT, &_iconSprites);
addButton(Common::Rect(284, 109, 308, 129), Common::KEYCODE_ESCAPE, &_iconSprites);
- addButton(Common::Rect(148, 109, 172, 129), Common::KEYCODE_u, &_iconSprites);
+ addButton(Common::Rect(148, 109, 172, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_USE, &_iconSprites);
addButton(Common::Rect(8, 20, 263, 28), Common::KEYCODE_1);
addButton(Common::Rect(8, 29, 263, 37), Common::KEYCODE_2);
addButton(Common::Rect(8, 38, 263, 46), Common::KEYCODE_3);
@@ -527,14 +494,14 @@ void ItemsDialog::loadButtons(ItemsMode mode, Character *&c, ItemCategory catego
} else {
bool flag = mode == ITEMMODE_BUY || mode == ITEMMODE_SELL || mode == ITEMMODE_IDENTIFY
|| mode == ITEMMODE_REPAIR;
- addButton(Common::Rect(12, 109, 36, 129), Common::KEYCODE_w, &_iconSprites);
- addButton(Common::Rect(46, 109, 70, 129), Common::KEYCODE_a, &_iconSprites);
- addButton(Common::Rect(80, 109, 104, 129), Common::KEYCODE_c, &_iconSprites);
- addButton(Common::Rect(114, 109, 138, 129), Common::KEYCODE_m, &_iconSprites);
- addButton(Common::Rect(148, 109, 172, 129), flag ? Common::KEYCODE_b : Common::KEYCODE_e, &_iconSprites);
- addButton(Common::Rect(182, 109, 206, 129), flag ? Common::KEYCODE_s : Common::KEYCODE_r, &_iconSprites);
- addButton(Common::Rect(216, 109, 240, 129), flag ? Common::KEYCODE_i : Common::KEYCODE_d, &_iconSprites);
- addButton(Common::Rect(250, 109, 274, 129), flag ? Common::KEYCODE_f : Common::KEYCODE_q, &_iconSprites);
+ addButton(Common::Rect(12, 109, 36, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_WEAPONS, &_iconSprites);
+ addButton(Common::Rect(46, 109, 70, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ARMOR, &_iconSprites);
+ addButton(Common::Rect(80, 109, 104, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ACCESSORY, &_iconSprites);
+ addButton(Common::Rect(114, 109, 138, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_MISC, &_iconSprites);
+ addButton(Common::Rect(148, 109, 172, 129), flag ? Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_BUY : Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_EQUIP, &_iconSprites);
+ addButton(Common::Rect(182, 109, 206, 129), flag ? Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_SELL : Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_REM, &_iconSprites);
+ addButton(Common::Rect(216, 109, 240, 129), flag ? Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_IDENTIFY : Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_DISC, &_iconSprites);
+ addButton(Common::Rect(250, 109, 274, 129), flag ? Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_FIX : Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_QUEST, &_iconSprites);
addButton(Common::Rect(284, 109, 308, 129), Common::KEYCODE_ESCAPE, &_iconSprites);
addButton(Common::Rect(8, 20, 263, 28), Common::KEYCODE_1);
addButton(Common::Rect(8, 29, 263, 37), Common::KEYCODE_2);
@@ -550,7 +517,7 @@ void ItemsDialog::loadButtons(ItemsMode mode, Character *&c, ItemCategory catego
if (mode == ITEMMODE_CHAR_INFO && category == CATEGORY_MISC) {
_buttons[4].setFrame(18);
- _buttons[4]._value = Common::KEYCODE_u;
+ _buttons[4]._value = Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_USE;
}
if (mode != ITEMMODE_ENCHANT && mode != ITEMMODE_RECHARGE && mode != ITEMMODE_TO_GOLD) {
_buttons[5].setFrame(10);
@@ -581,11 +548,11 @@ void ItemsDialog::loadButtons(ItemsMode mode, Character *&c, ItemCategory catego
_buttons[4]._bounds.moveTo(148, _buttons[4]._bounds.top);
_buttons[9]._draw = false;
} else if (mode == ITEMMODE_RECHARGE) {
- _buttons[4]._value = Common::KEYCODE_r;
+ _buttons[4]._value = Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_RECHRG;
} else if (mode == ITEMMODE_ENCHANT) {
- _buttons[4]._value = Common::KEYCODE_e;
+ _buttons[4]._value = Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ENCHANT;
} else if (mode == ITEMMODE_TO_GOLD) {
- _buttons[4]._value = Common::KEYCODE_g;
+ _buttons[4]._value = Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_GOLD;
}
}
@@ -753,7 +720,7 @@ int ItemsDialog::calcItemCost(Character *c, int itemIndex, ItemsMode mode,
}
const char *ItemsDialog::getGoldPlurals(int cost) {
- if (Common::RU_RUS == Common::parseLanguage(ConfMan.get("language")))
+ if (Common::RU_RUS == g_vm->getLanguage())
return Res.GOLDS[cost % 10 == 1 ? 0 : 1];
return Res.GOLDS[0];
}
diff --git a/engines/xeen/resources.cpp b/engines/xeen/resources.cpp
index 3bc06388d3..210812e358 100644
--- a/engines/xeen/resources.cpp
+++ b/engines/xeen/resources.cpp
@@ -445,6 +445,23 @@ void Resources::loadData() {
keys.syncNumber(KEY_CONSTANTS.DIALOGS_DIFFICULTY.KEY_ADVENTURER);
keys.syncNumber(KEY_CONSTANTS.DIALOGS_DIFFICULTY.KEY_WARRIOR);
+
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_WEAPONS);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ARMOR);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ACCESSORY);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_MISC);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ENCHANT);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_USE);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_BUY);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_SELL);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_IDENTIFY);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_FIX);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_EQUIP);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_REM);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_DISC);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_QUEST);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_RECHRG);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_GOLD);
}
} // End of namespace Xeen
diff --git a/engines/xeen/resources.h b/engines/xeen/resources.h
index 818ee669fb..b4e959283a 100644
--- a/engines/xeen/resources.h
+++ b/engines/xeen/resources.h
@@ -509,6 +509,24 @@ public:
int KEY_WARRIOR;
} DIALOGS_DIFFICULTY;
+ struct {
+ int KEY_WEAPONS;
+ int KEY_ARMOR;
+ int KEY_ACCESSORY;
+ int KEY_MISC;
+ int KEY_ENCHANT;
+ int KEY_USE;
+ int KEY_BUY;
+ int KEY_SELL;
+ int KEY_IDENTIFY;
+ int KEY_FIX;
+ int KEY_EQUIP;
+ int KEY_REM;
+ int KEY_DISC;
+ int KEY_QUEST;
+ int KEY_RECHRG;
+ int KEY_GOLD;
+ } DIALOGS_ITEMS;
} KEY_CONSTANTS;
Commit: 2da836da6c494a65daf73b32dba99ab2d6fa1845
https://github.com/scummvm/scummvm/commit/2da836da6c494a65daf73b32dba99ab2d6fa1845
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Moving translated hotkeys to resources.
Hotkeys changed in party, quests, quick_fight, spells dialogs and bank location.
Changed paths:
devtools/create_xeen/constants.cpp
devtools/create_xeen/constants.h
devtools/create_xeen/en_constants.h
devtools/create_xeen/ru_constants.h
dists/engine-data/xeen.ccs
engines/xeen/dialogs/dialogs_party.cpp
engines/xeen/dialogs/dialogs_quests.cpp
engines/xeen/dialogs/dialogs_quick_fight.cpp
engines/xeen/dialogs/dialogs_spells.cpp
engines/xeen/locations.cpp
engines/xeen/resources.cpp
engines/xeen/resources.h
engines/xeen/spells.cpp
diff --git a/devtools/create_xeen/constants.cpp b/devtools/create_xeen/constants.cpp
index 61f4dd27ed..bb8a773958 100644
--- a/devtools/create_xeen/constants.cpp
+++ b/devtools/create_xeen/constants.cpp
@@ -531,6 +531,31 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_RECHRG());
keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_GOLD());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_PARTY()->KEY_DELETE());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_PARTY()->KEY_REMOVE());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_PARTY()->KEY_CREATE());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_PARTY()->KEY_EXIT());
+
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_QUESTS()->KEY_QUEST_ITEMS());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_QUESTS()->KEY_CURRENT_QUESTS());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_QUESTS()->KEY_QUEST_ITEMS());
+
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_QUICK_FIGHT()->KEY_NEXT());
+
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_SPELLS()->KEY_CAST());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_SPELLS()->KEY_NEW());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_SPELLS()->KEY_FIRE());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_SPELLS()->KEY_ELEC());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_SPELLS()->KEY_COLD());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_SPELLS()->KEY_ACID());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_SPELLS()->KEY_SET());
+ keys.syncNumber(KEY_CONSTANTS()->DIALOGS_SPELLS()->KEY_RETURN());
+
+ keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_DEP());
+ keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_WITH());
+ keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_GOLD());
+ keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_GEMS());
+
cc.add("CONSTKEYS" + num, keys);
}
diff --git a/devtools/create_xeen/constants.h b/devtools/create_xeen/constants.h
index eb0a70d9e1..aff8fa5a86 100644
--- a/devtools/create_xeen/constants.h
+++ b/devtools/create_xeen/constants.h
@@ -1308,6 +1308,51 @@ public:
virtual const int KEY_GOLD() = 0;
};
virtual DialogsItems *DIALOGS_ITEMS() = 0;
+
+ class DialogsParty {
+ public:
+ virtual const int KEY_DELETE() = 0;
+ virtual const int KEY_REMOVE() = 0;
+ virtual const int KEY_CREATE() = 0;
+ virtual const int KEY_EXIT() = 0;
+ };
+ virtual DialogsParty *DIALOGS_PARTY() = 0;
+
+ class DialogsQuests {
+ public:
+ virtual const int KEY_QUEST_ITEMS() = 0;
+ virtual const int KEY_CURRENT_QUESTS() = 0;
+ virtual const int KEY_AUTO_NOTES() = 0;
+ };
+ virtual DialogsQuests *DIALOGS_QUESTS() = 0;
+
+ class DialogsQuickFight {
+ public:
+ virtual const int KEY_NEXT() = 0;
+ };
+ virtual DialogsQuickFight *DIALOGS_QUICK_FIGHT() = 0;
+
+ class DialogsSpells {
+ public:
+ virtual const int KEY_CAST() = 0;
+ virtual const int KEY_NEW() = 0;
+ virtual const int KEY_FIRE() = 0;
+ virtual const int KEY_ELEC() = 0;
+ virtual const int KEY_COLD() = 0;
+ virtual const int KEY_ACID() = 0;
+ virtual const int KEY_SET() = 0;
+ virtual const int KEY_RETURN() = 0;
+ };
+ virtual DialogsSpells *DIALOGS_SPELLS() = 0;
+
+ class Locations {
+ public:
+ virtual const int KEY_DEP() = 0;
+ virtual const int KEY_WITH() = 0;
+ virtual const int KEY_GOLD() = 0;
+ virtual const int KEY_GEMS() = 0;
+ };
+ virtual Locations *LOCATIONS() = 0;
};
virtual KeyConstants *KEY_CONSTANTS() = 0;
};
diff --git a/devtools/create_xeen/en_constants.h b/devtools/create_xeen/en_constants.h
index 741d1870ef..15d1b9dabf 100644
--- a/devtools/create_xeen/en_constants.h
+++ b/devtools/create_xeen/en_constants.h
@@ -2067,12 +2067,77 @@ public:
return _di;
}
+ class EN_DialogsParty : public DialogsParty {
+ public:
+ const int KEY_DELETE() { return Common::KEYCODE_d; }
+ const int KEY_REMOVE() { return Common::KEYCODE_r; }
+ const int KEY_CREATE() { return Common::KEYCODE_c; }
+ const int KEY_EXIT() { return Common::KEYCODE_x; }
+ };
+ EN_DialogsParty *DIALOGS_PARTY() {
+ if (!_dp) _dp = new EN_DialogsParty();
+ return _dp;
+ }
+
+ class EN_DialogsQuests : public DialogsQuests {
+ public:
+ const int KEY_QUEST_ITEMS() { return Common::KEYCODE_i; }
+ const int KEY_CURRENT_QUESTS() { return Common::KEYCODE_q; }
+ const int KEY_AUTO_NOTES() { return Common::KEYCODE_a; }
+ };
+ EN_DialogsQuests *DIALOGS_QUESTS() {
+ if (!_dq) _dq = new EN_DialogsQuests();
+ return _dq;
+ }
+
+ class EN_DialogsQuickFight : public DialogsQuickFight {
+ public:
+ const int KEY_NEXT() { return Common::KEYCODE_t; }
+ };
+ EN_DialogsQuickFight *DIALOGS_QUICK_FIGHT() {
+ if (!_dqf) _dqf = new EN_DialogsQuickFight();
+ return _dqf;
+ }
+
+ class EN_DialogsSpells : public DialogsSpells {
+ public:
+ const int KEY_CAST() { return Common::KEYCODE_c; }
+ const int KEY_NEW() { return Common::KEYCODE_n; }
+ const int KEY_FIRE() { return Common::KEYCODE_f; }
+ const int KEY_ELEC() { return Common::KEYCODE_e; }
+ const int KEY_COLD() { return Common::KEYCODE_c; }
+ const int KEY_ACID() { return Common::KEYCODE_a; }
+ const int KEY_SET() { return Common::KEYCODE_t; }
+ const int KEY_RETURN() { return Common::KEYCODE_r; }
+ };
+ EN_DialogsSpells *DIALOGS_SPELLS() {
+ if (!_ds) _ds = new EN_DialogsSpells();
+ return _ds;
+ }
+
+ class EN_Locations : public Locations {
+ public:
+ const int KEY_DEP() { return Common::KEYCODE_d; }
+ const int KEY_WITH() { return Common::KEYCODE_w; }
+ const int KEY_GOLD() { return Common::KEYCODE_o; }
+ const int KEY_GEMS() { return Common::KEYCODE_e; }
+ };
+ EN_Locations *LOCATIONS() {
+ if (!_l) _l = new EN_Locations();
+ return _l;
+ }
+
private:
EN_DialogsCharInfo *_dci = NULL;
EN_DialogsControlPanel *_dcp = NULL;
EN_DialogsCreateChar *_dcc = NULL;
EN_DialogsDifficulty *_dd = NULL;
EN_DialogsItems *_di = NULL;
+ EN_DialogsParty *_dp = NULL;
+ EN_DialogsQuests *_dq = NULL;
+ EN_DialogsQuickFight *_dqf = NULL;
+ EN_DialogsSpells *_ds = NULL;
+ EN_Locations *_l = NULL;
};
EN_KeyConstants *KEY_CONSTANTS() {
diff --git a/devtools/create_xeen/ru_constants.h b/devtools/create_xeen/ru_constants.h
index 1205c1cc0f..4843b32207 100644
--- a/devtools/create_xeen/ru_constants.h
+++ b/devtools/create_xeen/ru_constants.h
@@ -593,7 +593,7 @@ public:
return "\x3""c\v000\t000%s\x3""l\n" // "\x3""c\v000\t000%s\x3""l\n"
"\n" // "\n"
"\x87\xAE\xAB\x3""r\t000%s\x3""l\n" // "Ðол\x3""r\t000%s\x3""l\n"
- "\x80\xAB\xAC\xA7\x3""r\t000%s\x2\x3""c\v096\t007\f37\x80\fd\xAB\xAC\xA7\t035\f37\x87\fd\xAE\xAB\t067ESC\x1"; // "Ðлмз\x3""r\t000%s\x2\x3""c\v096\t007\f37Ð\fdлмз\t035\f37Ð\fdол\t067ESC\x1";
+ "\x80\xAB\xAC\xA7\x3""r\t000%s\x2\x3""c\v096\t013\f37\x80\fd\xAB\xAC\xA7\t035\f37\x87\fd\xAE\xAB\t067ESC\x1"; // "Ðлмз\x3""r\t000%s\x2\x3""c\v096\t013\f37Ð\fdлмз\t035\f37Ð\fdол\t067ESC\x1";
}
const char *GOLD_GEMS_2() {
@@ -2073,12 +2073,77 @@ public:
return _di;
}
+ class RU_DialogsParty : public DialogsParty {
+ public:
+ const int KEY_DELETE() { return Common::KEYCODE_e; }
+ const int KEY_REMOVE() { return Common::KEYCODE_d; }
+ const int KEY_CREATE() { return Common::KEYCODE_c; }
+ const int KEY_EXIT() { return Common::KEYCODE_s; }
+ };
+ RU_DialogsParty *DIALOGS_PARTY() {
+ if (!_dp) _dp = new RU_DialogsParty();
+ return _dp;
+ }
+
+ class RU_DialogsQuests : public DialogsQuests {
+ public:
+ const int KEY_QUEST_ITEMS() { return Common::KEYCODE_d; }
+ const int KEY_CURRENT_QUESTS() { return Common::KEYCODE_p; }
+ const int KEY_AUTO_NOTES() { return Common::KEYCODE_f; }
+ };
+ RU_DialogsQuests *DIALOGS_QUESTS() {
+ if (!_dq) _dq = new RU_DialogsQuests();
+ return _dq;
+ }
+
+ class RU_DialogsQuickFight : public DialogsQuickFight {
+ public:
+ const int KEY_NEXT() { return Common::KEYCODE_c; }
+ };
+ RU_DialogsQuickFight *DIALOGS_QUICK_FIGHT() {
+ if (!_dqf) _dqf = new RU_DialogsQuickFight();
+ return _dqf;
+ }
+
+ class RU_DialogsSpells : public DialogsSpells {
+ public:
+ const int KEY_CAST() { return Common::KEYCODE_p; }
+ const int KEY_NEW() { return Common::KEYCODE_y; }
+ const int KEY_FIRE() { return Common::KEYCODE_j; }
+ const int KEY_ELEC() { return Common::KEYCODE_u; }
+ const int KEY_COLD() { return Common::KEYCODE_LEFTBRACKET; }
+ const int KEY_ACID() { return Common::KEYCODE_z; }
+ const int KEY_SET() { return Common::KEYCODE_e; }
+ const int KEY_RETURN() { return Common::KEYCODE_d; }
+ };
+ RU_DialogsSpells *DIALOGS_SPELLS() {
+ if (!_ds) _ds = new RU_DialogsSpells();
+ return _ds;
+ }
+
+ class RU_Locations : public Locations {
+ public:
+ const int KEY_DEP() { return Common::KEYCODE_d; }
+ const int KEY_WITH() { return Common::KEYCODE_c; }
+ const int KEY_GOLD() { return Common::KEYCODE_p; }
+ const int KEY_GEMS() { return Common::KEYCODE_f; }
+ };
+ RU_Locations *LOCATIONS() {
+ if (!_l) _l = new RU_Locations();
+ return _l;
+ }
+
private:
RU_DialogsCharInfo *_dci = NULL;
RU_DialogsControlPanel *_dcp = NULL;
RU_DialogsCreateChar *_dcc = NULL;
RU_DialogsDifficulty *_dd = NULL;
RU_DialogsItems *_di = NULL;
+ RU_DialogsParty *_dp = NULL;
+ RU_DialogsQuests *_dq = NULL;
+ RU_DialogsQuickFight *_dqf = NULL;
+ RU_DialogsSpells *_ds = NULL;
+ RU_Locations *_l = NULL;
};
RU_KeyConstants *KEY_CONSTANTS() {
diff --git a/dists/engine-data/xeen.ccs b/dists/engine-data/xeen.ccs
index 55dc601ece..98f1e3528d 100644
Binary files a/dists/engine-data/xeen.ccs and b/dists/engine-data/xeen.ccs differ
diff --git a/engines/xeen/dialogs/dialogs_party.cpp b/engines/xeen/dialogs/dialogs_party.cpp
index 384edc2ee4..0267dcdd23 100644
--- a/engines/xeen/dialogs/dialogs_party.cpp
+++ b/engines/xeen/dialogs/dialogs_party.cpp
@@ -106,51 +106,20 @@ void PartyDialog::execute() {
events.pollEventsAndWait();
checkEvents(_vm);
} while (!_vm->shouldExit() && !_buttonValue);
-
- switch (_buttonValue) {
- case Common::KEYCODE_ESCAPE:
- case Common::KEYCODE_SPACE:
- case Common::KEYCODE_e:
- case Common::KEYCODE_x:
- if (party._activeParty.size() == 0) {
- ErrorScroll::show(_vm, Res.NO_ONE_TO_ADVENTURE_WITH);
- } else {
- if (_vm->_mode != MODE_STARTUP) {
- for (int idx = OBSCURITY_NONE; idx >= OBSCURITY_BLACK; --idx) {
- events.updateGameCounter();
- intf.obscureScene((Obscurity)idx);
- w.update();
-
- while (events.timeElapsed() < 1)
- events.pollEventsAndWait();
- }
- }
-
- w.close();
- party._mazeId = party._priorMazeId;
-
- party.copyPartyToRoster();
- //_vm->_saves->writeCharFile();
- return;
- }
- break;
-
- case Common::KEYCODE_F1:
- case Common::KEYCODE_F2:
- case Common::KEYCODE_F3:
- case Common::KEYCODE_F4:
- case Common::KEYCODE_F5:
- case Common::KEYCODE_F6:
+ if (Common::KEYCODE_F1 == _buttonValue ||
+ Common::KEYCODE_F2 == _buttonValue ||
+ Common::KEYCODE_F3 == _buttonValue ||
+ Common::KEYCODE_F4 == _buttonValue ||
+ Common::KEYCODE_F5 == _buttonValue ||
+ Common::KEYCODE_F6 == _buttonValue) {
// Show character info
_buttonValue -= Common::KEYCODE_F1;
if (_buttonValue < (int)party._activeParty.size())
CharacterInfo::show(_vm, _buttonValue);
- break;
-
- case Common::KEYCODE_1:
- case Common::KEYCODE_2:
- case Common::KEYCODE_3:
- case Common::KEYCODE_4:
+ } else if (Common::KEYCODE_1 == _buttonValue ||
+ Common::KEYCODE_2 == _buttonValue ||
+ Common::KEYCODE_3 == _buttonValue ||
+ Common::KEYCODE_4 == _buttonValue) {
_buttonValue -= Common::KEYCODE_1 - 7;
if ((_buttonValue - 7 + startingChar) < (int)_charList.size()) {
// Check if the selected character is already in the party
@@ -168,33 +137,54 @@ void PartyDialog::execute() {
ErrorScroll::show(_vm, Res.YOUR_PARTY_IS_FULL);
} else {
// Add the character to the active party
- party._activeParty.push_back(party._roster[
- _charList[_buttonValue - 7 + startingChar]]);
- startingCharChanged(startingChar);
+ party._activeParty.push_back(party._roster[_charList[_buttonValue - 7 + startingChar]]);
+ startingCharChanged(startingChar);
}
}
}
- break;
- case Common::KEYCODE_UP:
- case Common::KEYCODE_KP8:
+ } else if (Common::KEYCODE_UP == _buttonValue ||
+ Common::KEYCODE_KP8 == _buttonValue) {
// Up arrow
if (startingChar > 0) {
startingChar -= 4;
startingCharChanged(startingChar);
}
- break;
- case Common::KEYCODE_DOWN:
- case Common::KEYCODE_KP2:
+ } else if (Common::KEYCODE_DOWN == _buttonValue ||
+ Common::KEYCODE_KP2 == _buttonValue) {
// Down arrow
if (startingChar < ((int)_charList.size() - 4)) {
startingChar += 4;
startingCharChanged(startingChar);
}
- break;
- case Common::KEYCODE_c:
+ } else if (Res.KEY_CONSTANTS.DIALOGS_PARTY.KEY_EXIT == _buttonValue ||
+ Common::KEYCODE_ESCAPE == _buttonValue ||
+ Common::KEYCODE_SPACE == _buttonValue) {
+ if (party._activeParty.size() == 0) {
+ ErrorScroll::show(_vm, Res.NO_ONE_TO_ADVENTURE_WITH);
+ } else {
+ if (_vm->_mode != MODE_STARTUP) {
+ for (int idx = OBSCURITY_NONE; idx >= OBSCURITY_BLACK; --idx) {
+ events.updateGameCounter();
+ intf.obscureScene((Obscurity)idx);
+ w.update();
+
+ while (events.timeElapsed() < 1)
+ events.pollEventsAndWait();
+ }
+ }
+
+ w.close();
+ party._mazeId = party._priorMazeId;
+
+ party.copyPartyToRoster();
+ //_vm->_saves->writeCharFile();
+ return;
+ }
+
+ } else if (Res.KEY_CONSTANTS.DIALOGS_PARTY.KEY_CREATE == _buttonValue) {
// Create
if (_charList.size() == XEEN_TOTAL_CHARACTERS) {
ErrorScroll::show(_vm, Res.YOUR_ROSTER_IS_FULL);
@@ -220,9 +210,8 @@ void PartyDialog::execute() {
modeFlag = true;
breakFlag = true;
}
- break;
- case Common::KEYCODE_d:
+ } else if (Res.KEY_CONSTANTS.DIALOGS_PARTY.KEY_DELETE == _buttonValue) {
// Delete character
if (_charList.size() > 0) {
int charButtonValue = selectCharacter(true, startingChar);
@@ -233,7 +222,7 @@ void PartyDialog::execute() {
ErrorScroll::show(_vm, Res.HAS_SLAYER_SWORD);
} else {
Common::String msg = Common::String::format(Res.SURE_TO_DELETE_CHAR,
- c._name.c_str(), Res.CLASS_NAMES[c._class]);
+ c._name.c_str(), Res.CLASS_NAMES[c._class]);
if (Confirm::show(_vm, msg)) {
// If the character is in the party, remove it
for (uint idx = 0; idx < party._activeParty.size(); ++idx) {
@@ -253,9 +242,8 @@ void PartyDialog::execute() {
}
}
}
- break;
- case Common::KEYCODE_r:
+ } else if (Res.KEY_CONSTANTS.DIALOGS_PARTY.KEY_REMOVE == _buttonValue) {
// Remove character
if (party._activeParty.size() > 0) {
int charButtonValue = selectCharacter(false, startingChar);
@@ -265,10 +253,6 @@ void PartyDialog::execute() {
}
startingCharChanged(startingChar);
}
- break;
-
- default:
- break;
}
}
}
@@ -292,10 +276,12 @@ void PartyDialog::loadButtons() {
_uiSprites.load("inn.icn");
addButton(Common::Rect(16, 100, 40, 120), Common::KEYCODE_UP, &_uiSprites);
addButton(Common::Rect(52, 100, 76, 120), Common::KEYCODE_DOWN, &_uiSprites);
- addButton(Common::Rect(87, 100, 111, 120), Common::KEYCODE_d, &_uiSprites);
- addButton(Common::Rect(122, 100, 146, 120), Common::KEYCODE_r, &_uiSprites);
- addButton(Common::Rect(157, 100, 181, 120), Common::KEYCODE_c, &_uiSprites);
- addButton(Common::Rect(192, 100, 216, 120), Common::KEYCODE_x, &_uiSprites);
+
+ addButton(Common::Rect(87, 100, 111, 120), Res.KEY_CONSTANTS.DIALOGS_PARTY.KEY_DELETE, &_uiSprites);
+ addButton(Common::Rect(122, 100, 146, 120), Res.KEY_CONSTANTS.DIALOGS_PARTY.KEY_REMOVE, &_uiSprites);
+ addButton(Common::Rect(157, 100, 181, 120), Res.KEY_CONSTANTS.DIALOGS_PARTY.KEY_CREATE, &_uiSprites);
+ addButton(Common::Rect(192, 100, 216, 120), Res.KEY_CONSTANTS.DIALOGS_PARTY.KEY_EXIT, &_uiSprites);
+
addButton(Common::Rect(0, 0, 0, 0), Common::KEYCODE_ESCAPE);
}
diff --git a/engines/xeen/dialogs/dialogs_quests.cpp b/engines/xeen/dialogs/dialogs_quests.cpp
index 08fd793391..e77c7fa0d3 100644
--- a/engines/xeen/dialogs/dialogs_quests.cpp
+++ b/engines/xeen/dialogs/dialogs_quests.cpp
@@ -222,43 +222,31 @@ void Quests::execute() {
if (_buttonValue == Common::KEYCODE_ESCAPE)
break;
- switch (_buttonValue) {
- case Common::KEYCODE_a:
- mode = AUTO_NOTES;
- topRow = 0;
- break;
- case Common::KEYCODE_i:
- mode = QUEST_ITEMS;
- topRow = 0;
- break;
- case Common::KEYCODE_q:
- mode = CURRENT_QUESTS;
- topRow = 0;
- break;
- case Common::KEYCODE_HOME:
+ if (Common::KEYCODE_HOME == _buttonValue) {
topRow = 0;
- break;
- case Common::KEYCODE_END:
+ } else if (Common::KEYCODE_END == _buttonValue) {
topRow = MAX(count - 1, 0);
- break;
- case Common::KEYCODE_PAGEUP:
+ } else if (Common::KEYCODE_PAGEUP == _buttonValue) {
topRow = MAX(topRow - 3, 0);
- break;
- case Common::KEYCODE_PAGEDOWN:
+ } else if (Common::KEYCODE_PAGEDOWN == _buttonValue) {
topRow = CLIP(topRow + 3, 0, MAX(count - 1, 0));
- break;
- case Common::KEYCODE_UP:
- case Common::KEYCODE_KP8:
- case Common::KEYCODE_u:
+ } else if (Common::KEYCODE_UP == _buttonValue ||
+ Common::KEYCODE_KP8 == _buttonValue ||
+ Common::KEYCODE_u == _buttonValue) {
topRow = MAX(topRow - 1, 0);
- break;
- case Common::KEYCODE_DOWN:
- case Common::KEYCODE_KP2:
- case Common::KEYCODE_d:
+ } else if (Common::KEYCODE_DOWN == _buttonValue ||
+ Common::KEYCODE_KP2 == _buttonValue ||
+ Common::KEYCODE_d == _buttonValue) {
topRow = CLIP(topRow + 1, 0, MAX(count - 1, 0));
- break;
- default:
- break;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_AUTO_NOTES) {
+ mode = AUTO_NOTES;
+ topRow = 0;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_QUEST_ITEMS) {
+ mode = QUEST_ITEMS;
+ topRow = 0;
+ } else if (Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_AUTO_NOTES) {
+ mode = CURRENT_QUESTS;
+ topRow = 0;
}
}
@@ -272,10 +260,10 @@ void Quests::execute() {
void Quests::addButtons() {
_iconSprites.load("quest.icn");
+ addButton(Common::Rect(12, 109, 36, 129), Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_QUEST_ITEMS, &_iconSprites);
+ addButton(Common::Rect(80, 109, 104, 129), Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_CURRENT_QUESTS, &_iconSprites);
+ addButton(Common::Rect(148, 109, 172, 129), Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_AUTO_NOTES, &_iconSprites);
- addButton(Common::Rect(12, 109, 36, 129), Common::KEYCODE_i, &_iconSprites);
- addButton(Common::Rect(80, 109, 104, 129), Common::KEYCODE_q, &_iconSprites);
- addButton(Common::Rect(148, 109, 172, 129), Common::KEYCODE_a, &_iconSprites);
addButton(Common::Rect(216, 109, 240, 129), Common::KEYCODE_UP, &_iconSprites);
addButton(Common::Rect(250, 109, 274, 129), Common::KEYCODE_DOWN, &_iconSprites);
addButton(Common::Rect(284, 109, 308, 129), Common::KEYCODE_ESCAPE, &_iconSprites);
diff --git a/engines/xeen/dialogs/dialogs_quick_fight.cpp b/engines/xeen/dialogs/dialogs_quick_fight.cpp
index 63acf55655..1fec1621b9 100644
--- a/engines/xeen/dialogs/dialogs_quick_fight.cpp
+++ b/engines/xeen/dialogs/dialogs_quick_fight.cpp
@@ -66,29 +66,21 @@ void QuickFight::execute() {
return;
} while (!_buttonValue && !events.timeElapsed());
- switch (_buttonValue) {
- case Common::KEYCODE_n:
- case Common::KEYCODE_t:
- _currentChar->_quickOption = (QuickAction)(((int)_currentChar->_quickOption + 1) % 4);
- break;
-
- case Common::KEYCODE_F1:
- case Common::KEYCODE_F2:
- case Common::KEYCODE_F3:
- case Common::KEYCODE_F4:
- case Common::KEYCODE_F5:
- case Common::KEYCODE_F6: {
+ if (Common::KEYCODE_F1 == _buttonValue ||
+ Common::KEYCODE_F2 == _buttonValue ||
+ Common::KEYCODE_F3 == _buttonValue ||
+ Common::KEYCODE_F4 == _buttonValue ||
+ Common::KEYCODE_F5 == _buttonValue ||
+ Common::KEYCODE_F6 == _buttonValue) {
int charIdx = _buttonValue - Common::KEYCODE_F1;
if (charIdx < (int)combat._combatParty.size()) {
// Highlight new character
_currentChar = &party._activeParty[charIdx];
intf.highlightChar(charIdx);
}
- break;
- }
-
- default:
- break;
+ } else if (Common::KEYCODE_n == _buttonValue ||
+ Res.KEY_CONSTANTS.DIALOGS_QUICK_FIGHT.KEY_NEXT == _buttonValue) {
+ _currentChar->_quickOption = (QuickAction)(((int)_currentChar->_quickOption + 1) % 4);
}
} while (_buttonValue != Common::KEYCODE_RETURN && _buttonValue != Common::KEYCODE_ESCAPE);
@@ -99,7 +91,8 @@ void QuickFight::execute() {
void QuickFight::loadButtons() {
_icons.load("train.icn");
addButton(Common::Rect(281, 108, 305, 128), Common::KEYCODE_ESCAPE, &_icons);
- addButton(Common::Rect(242, 108, 266, 128), Common::KEYCODE_t, &_icons);
+
+ addButton(Common::Rect(242, 108, 266, 128), Res.KEY_CONSTANTS.DIALOGS_QUICK_FIGHT.KEY_NEXT, &_icons);
}
} // End of namespace Xeen
diff --git a/engines/xeen/dialogs/dialogs_spells.cpp b/engines/xeen/dialogs/dialogs_spells.cpp
index 2c92203622..3da87d428e 100644
--- a/engines/xeen/dialogs/dialogs_spells.cpp
+++ b/engines/xeen/dialogs/dialogs_spells.cpp
@@ -383,6 +383,10 @@ const char *SpellsDialog::setSpellText(Character *c, int mode) {
if (c->getMaxSP() == 0) {
return Res.NOT_A_SPELL_CASTER;
} else {
+ // Debug cheat "open all spells"
+ //for (int spellIndex = 0; spellIndex < SPELLS_PER_CLASS; ++spellIndex){
+ // c->_spells[spellIndex] = true;
+ //}
for (int spellIndex = 0; spellIndex < SPELLS_PER_CLASS; ++spellIndex) {
if (c->_spells[spellIndex]) {
int spellId = Res.SPELLS_ALLOWED[category][spellIndex];
@@ -501,13 +505,12 @@ int CastSpell::execute(Character *&c) {
checkEvents(_vm);
} while (!_vm->shouldExit() && events.timeElapsed() < 1 && !_buttonValue);
- switch (_buttonValue) {
- case Common::KEYCODE_F1:
- case Common::KEYCODE_F2:
- case Common::KEYCODE_F3:
- case Common::KEYCODE_F4:
- case Common::KEYCODE_F5:
- case Common::KEYCODE_F6:
+ if (Common::KEYCODE_F1 == _buttonValue ||
+ Common::KEYCODE_F2 == _buttonValue ||
+ Common::KEYCODE_F3 == _buttonValue ||
+ Common::KEYCODE_F4 == _buttonValue ||
+ Common::KEYCODE_F5 == _buttonValue ||
+ Common::KEYCODE_F6 == _buttonValue) {
// Only allow changing character if the party is not in combat
if (_oldMode != MODE_COMBAT) {
_vm->_mode = (Mode)_oldMode;
@@ -521,27 +524,19 @@ int CastSpell::execute(Character *&c) {
break;
}
}
- break;
- case Common::KEYCODE_ESCAPE:
+ } else if (Common::KEYCODE_ESCAPE == _buttonValue) {
spellId = -1;
- break;
- case Common::KEYCODE_c:
+ } else if (Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_CAST == _buttonValue) {
// Cast spell - return the selected spell Id to be cast
if (c->_currentSpell != -1 && !c->noActions())
_buttonValue = Common::KEYCODE_ESCAPE;
- break;
-
- case Common::KEYCODE_n:
+ } else if (Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_NEW == _buttonValue) {
// Select new spell
_vm->_mode = (Mode)_oldMode;
c = SpellsDialog::show(_vm, this, c, SPELLS_DIALOG_SELECT);
redrawFlag = true;
- break;
-
- default:
- break;
}
} while (!_vm->shouldExit() && _buttonValue != Common::KEYCODE_ESCAPE);
@@ -552,8 +547,10 @@ int CastSpell::execute(Character *&c) {
void CastSpell::loadButtons() {
_iconSprites.load("cast.icn");
- addButton(Common::Rect(234, 108, 259, 128), Common::KEYCODE_c, &_iconSprites);
- addButton(Common::Rect(261, 108, 285, 128), Common::KEYCODE_n, &_iconSprites);
+
+ addButton(Common::Rect(234, 108, 259, 128), Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_CAST, &_iconSprites);
+ addButton(Common::Rect(261, 108, 285, 128), Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_NEW, &_iconSprites);
+
addButton(Common::Rect(288, 108, 312, 128), Common::KEYCODE_ESCAPE, &_iconSprites);
addPartyButtons(_vm);
}
@@ -680,26 +677,17 @@ int SelectElement::execute(int spellId) {
} while (!_buttonValue && events.timeElapsed() < 1);
} while (!_buttonValue);
- switch (_buttonValue) {
- case Common::KEYCODE_ESCAPE:
+ if (Common::KEYCODE_ESCAPE == _buttonValue) {
result = -1;
spells.addSpellCost(*combat._oldCharacter, spellId);
- break;
-
- case Common::KEYCODE_a:
+ } else if (Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_ACID == _buttonValue) {
result = DT_POISON;
- break;
- case Common::KEYCODE_c:
+ } else if (Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_COLD == _buttonValue) {
result = DT_COLD;
- break;
- case Common::KEYCODE_e:
+ } else if (Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_ELEC == _buttonValue) {
result = DT_ELECTRICAL;
- break;
- case Common::KEYCODE_f:
+ } else if (Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_FIRE == _buttonValue) {
result = DT_FIRE;
- break;
- default:
- break;
}
}
@@ -710,10 +698,11 @@ int SelectElement::execute(int spellId) {
void SelectElement::loadButtons() {
_iconSprites.load("element.icn");
- addButton(Common::Rect(60, 92, 84, 112), Common::KEYCODE_f, &_iconSprites);
- addButton(Common::Rect(90, 92, 114, 112), Common::KEYCODE_e, &_iconSprites);
- addButton(Common::Rect(120, 92, 144, 112), Common::KEYCODE_c, &_iconSprites);
- addButton(Common::Rect(150, 92, 174, 112), Common::KEYCODE_a, &_iconSprites);
+
+ addButton(Common::Rect(60, 92, 84, 112), Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_FIRE, &_iconSprites);
+ addButton(Common::Rect(90, 92, 114, 112), Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_ELEC, &_iconSprites);
+ addButton(Common::Rect(120, 92, 144, 112), Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_COLD, &_iconSprites);
+ addButton(Common::Rect(150, 92, 174, 112), Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_ACID, &_iconSprites);
}
/*------------------------------------------------------------------------*/
@@ -807,8 +796,7 @@ bool LloydsBeacon::execute() {
} while (!_buttonValue && events.timeElapsed() < 1);
} while (!_buttonValue);
- switch (_buttonValue) {
- case Common::KEYCODE_r:
+ if (Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_RETURN == _buttonValue) {
if (!ccNum && c._lloydMap >= XEEN_CASTLE1 && c._lloydMap <= XEEN_CASTLE4 && party._cloudsCompleted) {
// Xeen's Castle has already been destroyed
result = false;
@@ -823,21 +811,16 @@ bool LloydsBeacon::execute() {
}
_buttonValue = Common::KEYCODE_ESCAPE;
- break;
-
- case Common::KEYCODE_s:
- case Common::KEYCODE_t:
+ } else if (Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_SET == _buttonValue ||
+ Common::KEYCODE_s == _buttonValue) {
sound.playFX(20);
c._lloydMap = party._mazeId;
c._lloydPosition = party._mazePosition;
c._lloydSide = ccNum;
_buttonValue = Common::KEYCODE_ESCAPE;
- break;
-
- default:
- break;
}
+
} while (_buttonValue != Common::KEYCODE_ESCAPE);
w.close();
@@ -847,8 +830,8 @@ bool LloydsBeacon::execute() {
void LloydsBeacon::loadButtons() {
_iconSprites.load("lloyds.icn");
- addButton(Common::Rect(281, 108, 305, 128), Common::KEYCODE_r, &_iconSprites);
- addButton(Common::Rect(242, 108, 266, 128), Common::KEYCODE_t, &_iconSprites);
+ addButton(Common::Rect(281, 108, 305, 128), Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_RETURN, &_iconSprites);
+ addButton(Common::Rect(242, 108, 266, 128), Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_SET, &_iconSprites);
}
/*------------------------------------------------------------------------*/
diff --git a/engines/xeen/locations.cpp b/engines/xeen/locations.cpp
index 71aec14737..89e14cab64 100644
--- a/engines/xeen/locations.cpp
+++ b/engines/xeen/locations.cpp
@@ -303,8 +303,8 @@ int BaseLocation::wait() {
BankLocation::BankLocation() : BaseLocation(BANK) {
_icons1.load("bank.icn");
_icons2.load("bank2.icn");
- addButton(Common::Rect(234, 108, 259, 128), Common::KEYCODE_d, &_icons1);
- addButton(Common::Rect(261, 108, 285, 128), Common::KEYCODE_w, &_icons1);
+ addButton(Common::Rect(234, 108, 259, 128), Res.KEY_CONSTANTS.LOCATIONS.KEY_DEP, &_icons1);
+ addButton(Common::Rect(261, 108, 285, 128), Res.KEY_CONSTANTS.LOCATIONS.KEY_WITH, &_icons1);
addButton(Common::Rect(288, 108, 312, 128), Common::KEYCODE_ESCAPE, &_icons1);
_animFrame = 1;
@@ -328,9 +328,9 @@ void BankLocation::drawBackground() {
}
Character *BankLocation::doOptions(Character *c) {
- if (_buttonValue == Common::KEYCODE_d)
+ if (_buttonValue == Res.KEY_CONSTANTS.LOCATIONS.KEY_DEP)
_buttonValue = (int)WHERE_PARTY;
- else if (_buttonValue == Common::KEYCODE_w)
+ else if (_buttonValue == Res.KEY_CONSTANTS.LOCATIONS.KEY_WITH)
_buttonValue = (int)WHERE_BANK;
else
return c;
@@ -353,11 +353,17 @@ void BankLocation::depositWithdrawl(PartyBank whereId) {
gold = party._gold;
gems = party._gems;
}
-
for (uint idx = 0; idx < _buttons.size(); ++idx)
_buttons[idx]._sprites = &_icons2;
- _buttons[0]._value = Common::KEYCODE_o;
- _buttons[1]._value = Common::KEYCODE_e;
+
+ if (g_vm->getLanguage() == Common::RU_RUS) {
+ // In RU version sprites in wrong order
+ _buttons[1]._value = Res.KEY_CONSTANTS.LOCATIONS.KEY_GOLD;
+ _buttons[0]._value = Res.KEY_CONSTANTS.LOCATIONS.KEY_GEMS;
+ } else {
+ _buttons[0]._value = Res.KEY_CONSTANTS.LOCATIONS.KEY_GOLD;
+ _buttons[1]._value = Res.KEY_CONSTANTS.LOCATIONS.KEY_GEMS;
+ }
_buttons[2]._value = Common::KEYCODE_ESCAPE;
Common::String msg = Common::String::format(Res.GOLD_GEMS,
@@ -376,9 +382,9 @@ void BankLocation::depositWithdrawl(PartyBank whereId) {
do {
wait();
- if (_buttonValue == Common::KEYCODE_o) {
+ if (_buttonValue == Res.KEY_CONSTANTS.LOCATIONS.KEY_GOLD) {
consType = CONS_GOLD;
- } else if (_buttonValue == Common::KEYCODE_e) {
+ } else if (_buttonValue == Res.KEY_CONSTANTS.LOCATIONS.KEY_GEMS) {
consType = CONS_GEMS;
} else if (_buttonValue == Common::KEYCODE_ESCAPE) {
break;
@@ -433,8 +439,8 @@ void BankLocation::depositWithdrawl(PartyBank whereId) {
for (uint idx = 0; idx < _buttons.size(); ++idx)
_buttons[idx]._sprites = &_icons1;
- _buttons[0]._value = Common::KEYCODE_d;
- _buttons[1]._value = Common::KEYCODE_w;
+ _buttons[0]._value = Res.KEY_CONSTANTS.LOCATIONS.KEY_DEP;
+ _buttons[1]._value = Res.KEY_CONSTANTS.LOCATIONS.KEY_WITH;
_buttons[2]._value = Common::KEYCODE_ESCAPE;
w.close();
diff --git a/engines/xeen/resources.cpp b/engines/xeen/resources.cpp
index 210812e358..89a76ede3c 100644
--- a/engines/xeen/resources.cpp
+++ b/engines/xeen/resources.cpp
@@ -462,6 +462,31 @@ void Resources::loadData() {
keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_QUEST);
keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_RECHRG);
keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_GOLD);
+
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_PARTY.KEY_DELETE);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_PARTY.KEY_REMOVE);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_PARTY.KEY_CREATE);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_PARTY.KEY_EXIT);
+
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_QUESTS.KEY_QUEST_ITEMS);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_QUESTS.KEY_CURRENT_QUESTS);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_QUESTS.KEY_AUTO_NOTES);
+
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_QUICK_FIGHT.KEY_NEXT);
+
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_SPELLS.KEY_CAST);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_SPELLS.KEY_NEW);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_SPELLS.KEY_FIRE);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_SPELLS.KEY_ELEC);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_SPELLS.KEY_COLD);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_SPELLS.KEY_ACID);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_SPELLS.KEY_SET);
+ keys.syncNumber(KEY_CONSTANTS.DIALOGS_SPELLS.KEY_RETURN);
+
+ keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_DEP);
+ keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_WITH);
+ keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_GOLD);
+ keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_GEMS);
}
} // End of namespace Xeen
diff --git a/engines/xeen/resources.h b/engines/xeen/resources.h
index b4e959283a..f831270d4a 100644
--- a/engines/xeen/resources.h
+++ b/engines/xeen/resources.h
@@ -527,6 +527,41 @@ public:
int KEY_RECHRG;
int KEY_GOLD;
} DIALOGS_ITEMS;
+
+ struct {
+ int KEY_DELETE;
+ int KEY_REMOVE;
+ int KEY_CREATE;
+ int KEY_EXIT;
+ } DIALOGS_PARTY;
+
+ struct {
+ int KEY_QUEST_ITEMS;
+ int KEY_CURRENT_QUESTS;
+ int KEY_AUTO_NOTES;
+ } DIALOGS_QUESTS;
+
+ struct {
+ int KEY_NEXT;
+ } DIALOGS_QUICK_FIGHT;
+
+ struct {
+ int KEY_CAST;
+ int KEY_NEW;
+ int KEY_FIRE;
+ int KEY_ELEC;
+ int KEY_COLD;
+ int KEY_ACID;
+ int KEY_SET;
+ int KEY_RETURN;
+ } DIALOGS_SPELLS;
+
+ struct {
+ int KEY_DEP;
+ int KEY_WITH;
+ int KEY_GOLD;
+ int KEY_GEMS;
+ } LOCATIONS;
} KEY_CONSTANTS;
diff --git a/engines/xeen/spells.cpp b/engines/xeen/spells.cpp
index 04d77e1f66..b5cdceaf43 100644
--- a/engines/xeen/spells.cpp
+++ b/engines/xeen/spells.cpp
@@ -85,7 +85,8 @@ void Spells::executeSpell(MagicSpell spellId) {
&Spells::wizardEye
};
- (this->*SPELL_LIST[spellId])();
+ if (spellId < 76)
+ (this->*SPELL_LIST[spellId])();
}
void Spells::spellFailed() {
Commit: b655cfc03eb8e490d2ffc131ee488df3391898cf
https://github.com/scummvm/scummvm/commit/b655cfc03eb8e490d2ffc131ee488df3391898cf
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Moving translated hotkeys to resources.
Hotkeys changed in locations, CoX Menu.
Margin fix
Changed paths:
devtools/create_xeen/constants.cpp
devtools/create_xeen/constants.h
devtools/create_xeen/en_constants.h
devtools/create_xeen/ru_constants.h
dists/engine-data/xeen.ccs
engines/xeen/locations.cpp
engines/xeen/resources.cpp
engines/xeen/resources.h
engines/xeen/worldofxeen/worldofxeen_menu.cpp
diff --git a/devtools/create_xeen/constants.cpp b/devtools/create_xeen/constants.cpp
index bb8a773958..d60de566f2 100644
--- a/devtools/create_xeen/constants.cpp
+++ b/devtools/create_xeen/constants.cpp
@@ -555,6 +555,23 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_WITH());
keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_GOLD());
keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_GEMS());
+ keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_BROWSE());
+ keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_BUY_SPELLS());
+ keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_SPELL_INFO());
+ keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_SIGN_IN());
+ keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_DRINK());
+ keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_FOOD());
+ keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_TIP());
+ keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_RUMORS());
+ keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_HEAL());
+ keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_DONATION());
+ keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_UNCURSE());
+ keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_TRAIN());
+
+ keys.syncNumber(KEY_CONSTANTS()->CLOUDSOFXEENMENU()->KEY_START_NEW_GAME());
+ keys.syncNumber(KEY_CONSTANTS()->CLOUDSOFXEENMENU()->KEY_LOAD_GAME());
+ keys.syncNumber(KEY_CONSTANTS()->CLOUDSOFXEENMENU()->KEY_SHOW_CREDITS());
+ keys.syncNumber(KEY_CONSTANTS()->CLOUDSOFXEENMENU()->KEY_VIEW_ENDGAME());
cc.add("CONSTKEYS" + num, keys);
}
diff --git a/devtools/create_xeen/constants.h b/devtools/create_xeen/constants.h
index aff8fa5a86..1faaaca205 100644
--- a/devtools/create_xeen/constants.h
+++ b/devtools/create_xeen/constants.h
@@ -1351,8 +1351,29 @@ public:
virtual const int KEY_WITH() = 0;
virtual const int KEY_GOLD() = 0;
virtual const int KEY_GEMS() = 0;
+ virtual const int KEY_BROWSE() = 0;
+ virtual const int KEY_BUY_SPELLS() = 0;
+ virtual const int KEY_SPELL_INFO() = 0;
+ virtual const int KEY_SIGN_IN() = 0;
+ virtual const int KEY_DRINK() = 0;
+ virtual const int KEY_FOOD() = 0;
+ virtual const int KEY_TIP() = 0;
+ virtual const int KEY_RUMORS() = 0;
+ virtual const int KEY_HEAL() = 0;
+ virtual const int KEY_DONATION() = 0;
+ virtual const int KEY_UNCURSE() = 0;
+ virtual const int KEY_TRAIN() = 0;
};
virtual Locations *LOCATIONS() = 0;
+
+ class CloudsOfXeenMenu {
+ public:
+ virtual const int KEY_START_NEW_GAME() = 0;
+ virtual const int KEY_LOAD_GAME() = 0;
+ virtual const int KEY_SHOW_CREDITS() = 0;
+ virtual const int KEY_VIEW_ENDGAME() = 0;
+ };
+ virtual CloudsOfXeenMenu *CLOUDSOFXEENMENU() = 0;
};
virtual KeyConstants *KEY_CONSTANTS() = 0;
};
diff --git a/devtools/create_xeen/en_constants.h b/devtools/create_xeen/en_constants.h
index 15d1b9dabf..ee3f3ce235 100644
--- a/devtools/create_xeen/en_constants.h
+++ b/devtools/create_xeen/en_constants.h
@@ -2117,16 +2117,41 @@ public:
class EN_Locations : public Locations {
public:
- const int KEY_DEP() { return Common::KEYCODE_d; }
- const int KEY_WITH() { return Common::KEYCODE_w; }
- const int KEY_GOLD() { return Common::KEYCODE_o; }
- const int KEY_GEMS() { return Common::KEYCODE_e; }
+ const int KEY_DEP() { return Common::KEYCODE_d; }
+ const int KEY_WITH() { return Common::KEYCODE_w; }
+ const int KEY_GOLD() { return Common::KEYCODE_o; }
+ const int KEY_GEMS() { return Common::KEYCODE_e; }
+ const int KEY_BROWSE() { return Common::KEYCODE_b; }
+ const int KEY_BUY_SPELLS() { return Common::KEYCODE_b; }
+ const int KEY_SPELL_INFO() { return Common::KEYCODE_s; }
+ const int KEY_SIGN_IN() { return Common::KEYCODE_s; }
+ const int KEY_DRINK() { return Common::KEYCODE_d; }
+ const int KEY_FOOD() { return Common::KEYCODE_f; }
+ const int KEY_TIP() { return Common::KEYCODE_t; }
+ const int KEY_RUMORS() { return Common::KEYCODE_r; }
+ const int KEY_HEAL() { return Common::KEYCODE_h; }
+ const int KEY_DONATION() { return Common::KEYCODE_d; }
+ const int KEY_UNCURSE() { return Common::KEYCODE_u; }
+ const int KEY_TRAIN() { return Common::KEYCODE_t; }
};
EN_Locations *LOCATIONS() {
if (!_l) _l = new EN_Locations();
return _l;
}
+ class EN_CloudsOfXeenMenu : public CloudsOfXeenMenu {
+ public:
+ const int KEY_START_NEW_GAME() { return Common::KEYCODE_s; }
+ const int KEY_LOAD_GAME() { return Common::KEYCODE_l; }
+ const int KEY_SHOW_CREDITS() { return Common::KEYCODE_c; }
+ const int KEY_VIEW_ENDGAME() { return Common::KEYCODE_e; }
+ };
+ EN_CloudsOfXeenMenu *CLOUDSOFXEENMENU() {
+ if (!_soxm)
+ _soxm = new EN_CloudsOfXeenMenu();
+ return _soxm;
+ }
+
private:
EN_DialogsCharInfo *_dci = NULL;
EN_DialogsControlPanel *_dcp = NULL;
@@ -2138,6 +2163,7 @@ public:
EN_DialogsQuickFight *_dqf = NULL;
EN_DialogsSpells *_ds = NULL;
EN_Locations *_l = NULL;
+ EN_CloudsOfXeenMenu *_soxm = NULL;
};
EN_KeyConstants *KEY_CONSTANTS() {
diff --git a/devtools/create_xeen/ru_constants.h b/devtools/create_xeen/ru_constants.h
index 4843b32207..3e57d5d87e 100644
--- a/devtools/create_xeen/ru_constants.h
+++ b/devtools/create_xeen/ru_constants.h
@@ -585,7 +585,7 @@ public:
const char *TRAINING_TEXT() {
return "\r\x3""c\x8E\xA1\xE3\xE7\xA5\xAD\xA8\xA5\n" // "\r\x3""cÐбÑÑение\n"
"\n" // "\n"
- "%s\x3""l\v090\t000\x87\xAE\xAB\x3""r\t000%s\x2\x3""c\v122\t021" // "%s\x3""l\v090\t000Ðол\x3""r\t000%s\x2\x3""c\v122\t021"
+ "%s\x3""l\v090\t000\x87\xAE\xAB\x3""r\t000%s\x2\x3""c\v122\t025" // "%s\x3""l\v090\t000Ðол\x3""r\t000%s\x2\x3""c\v122\t025"
"\f37\x8E\fd\xA1\xE3\xE7\xA5\xAD\xA8\xA5\t060ESC\x1"; // "\f37Ð\fdбÑÑение\t060ESC\x1";
}
@@ -2123,16 +2123,40 @@ public:
class RU_Locations : public Locations {
public:
- const int KEY_DEP() { return Common::KEYCODE_d; }
- const int KEY_WITH() { return Common::KEYCODE_c; }
- const int KEY_GOLD() { return Common::KEYCODE_p; }
- const int KEY_GEMS() { return Common::KEYCODE_f; }
+ const int KEY_DEP() { return Common::KEYCODE_d; }
+ const int KEY_WITH() { return Common::KEYCODE_c; }
+ const int KEY_GOLD() { return Common::KEYCODE_p; }
+ const int KEY_GEMS() { return Common::KEYCODE_f; }
+ const int KEY_BROWSE() { return Common::KEYCODE_c; }
+ const int KEY_BUY_SPELLS() { return Common::KEYCODE_r; }
+ const int KEY_SPELL_INFO() { return Common::KEYCODE_j; }
+ const int KEY_SIGN_IN() { return Common::KEYCODE_j; }
+ const int KEY_DRINK() { return Common::KEYCODE_d; }
+ const int KEY_FOOD() { return Common::KEYCODE_t; }
+ const int KEY_TIP() { return Common::KEYCODE_x; }
+ const int KEY_RUMORS() { return Common::KEYCODE_c; }
+ const int KEY_HEAL() { return Common::KEYCODE_k; }
+ const int KEY_DONATION() { return Common::KEYCODE_l; }
+ const int KEY_UNCURSE() { return Common::KEYCODE_c; }
+ const int KEY_TRAIN() { return Common::KEYCODE_j; }
};
RU_Locations *LOCATIONS() {
if (!_l) _l = new RU_Locations();
return _l;
}
+ class RU_CloudsOfXeenMenu : public CloudsOfXeenMenu {
+ public:
+ const int KEY_START_NEW_GAME() { return Common::KEYCODE_y; }
+ const int KEY_LOAD_GAME() { return Common::KEYCODE_p; }
+ const int KEY_SHOW_CREDITS() { return Common::KEYCODE_c; }
+ const int KEY_VIEW_ENDGAME() { return Common::KEYCODE_a; }
+ };
+ RU_CloudsOfXeenMenu *CLOUDSOFXEENMENU() {
+ if (!_soxm)
+ _soxm = new RU_CloudsOfXeenMenu();
+ return _soxm;
+ }
private:
RU_DialogsCharInfo *_dci = NULL;
RU_DialogsControlPanel *_dcp = NULL;
@@ -2144,6 +2168,7 @@ public:
RU_DialogsQuickFight *_dqf = NULL;
RU_DialogsSpells *_ds = NULL;
RU_Locations *_l = NULL;
+ RU_CloudsOfXeenMenu *_soxm = NULL;
};
RU_KeyConstants *KEY_CONSTANTS() {
diff --git a/dists/engine-data/xeen.ccs b/dists/engine-data/xeen.ccs
index 98f1e3528d..9737dcf0e2 100644
Binary files a/dists/engine-data/xeen.ccs and b/dists/engine-data/xeen.ccs differ
diff --git a/engines/xeen/locations.cpp b/engines/xeen/locations.cpp
index 89e14cab64..35d5c94473 100644
--- a/engines/xeen/locations.cpp
+++ b/engines/xeen/locations.cpp
@@ -453,7 +453,7 @@ BlacksmithLocation::BlacksmithLocation() : BaseLocation(BLACKSMITH) {
_icons1.load("esc.icn");
addButton(Common::Rect(261, 108, 285, 128), Common::KEYCODE_ESCAPE, &_icons1);
addButton(Common::Rect(234, 54, 308, 62), 0);
- addButton(Common::Rect(234, 64, 308, 72), Common::KEYCODE_b);
+ addButton(Common::Rect(234, 64, 308, 72), Res.KEY_CONSTANTS.LOCATIONS.KEY_BROWSE);
addButton(Common::Rect(234, 74, 308, 82), 0);
addButton(Common::Rect(234, 84, 308, 92), 0);
@@ -477,7 +477,7 @@ Character *BlacksmithLocation::doOptions(Character *c) {
c = &party._activeParty[_buttonValue];
intf.highlightChar(_buttonValue);
}
- } else if (_buttonValue == Common::KEYCODE_b) {
+ } else if (_buttonValue == Res.KEY_CONSTANTS.LOCATIONS.KEY_BROWSE) {
c = ItemsDialog::show(_vm, c, ITEMMODE_BUY);
_buttonValue = 0;
}
@@ -501,8 +501,8 @@ GuildLocation::GuildLocation() : BaseLocation(GUILD) {
_icons1.load("esc.icn");
addButton(Common::Rect(261, 108, 285, 128), Common::KEYCODE_ESCAPE, &_icons1);
addButton(Common::Rect(234, 54, 308, 62), 0);
- addButton(Common::Rect(234, 64, 308, 72), Common::KEYCODE_b);
- addButton(Common::Rect(234, 74, 308, 82), Common::KEYCODE_s);
+ addButton(Common::Rect(234, 64, 308, 72), Res.KEY_CONSTANTS.LOCATIONS.KEY_BUY_SPELLS);
+ addButton(Common::Rect(234, 74, 308, 82), Res.KEY_CONSTANTS.LOCATIONS.KEY_SPELL_INFO);
addButton(Common::Rect(234, 84, 308, 92), 0);
g_vm->_mode = MODE_INTERACTIVE7;
@@ -536,11 +536,11 @@ Character *GuildLocation::doOptions(Character *c) {
sound.playSound(_ccNum ? "skull1.voc" : "guild11.voc", 1);
}
}
- } else if (_buttonValue == Common::KEYCODE_s) {
+ } else if (_buttonValue == Res.KEY_CONSTANTS.LOCATIONS.KEY_SPELL_INFO) {
if (c->guildMember())
c = SpellsDialog::show(_vm, this, c, SPELLS_DIALOG_INFO);
_buttonValue = 0;
- } else if (_buttonValue == Common::KEYCODE_b) {
+ } else if (_buttonValue == Res.KEY_CONSTANTS.LOCATIONS.KEY_BUY_SPELLS) {
if (!c->noActions()) {
if (c->guildMember())
c = SpellsDialog::show(_vm, this, c, SPELLS_DIALOG_BUY);
@@ -562,11 +562,11 @@ TavernLocation::TavernLocation() : BaseLocation(TAVERN) {
loadStrings("tavern.bin");
_icons1.load("tavern.icn");
addButton(Common::Rect(281, 108, 305, 128), Common::KEYCODE_ESCAPE, &_icons1);
- addButton(Common::Rect(242, 108, 266, 128), Common::KEYCODE_s, &_icons1);
- addButton(Common::Rect(234, 54, 308, 62), Common::KEYCODE_d);
- addButton(Common::Rect(234, 64, 308, 72), Common::KEYCODE_f);
- addButton(Common::Rect(234, 74, 308, 82), Common::KEYCODE_t);
- addButton(Common::Rect(234, 84, 308, 92), Common::KEYCODE_r);
+ addButton(Common::Rect(242, 108, 266, 128), Res.KEY_CONSTANTS.LOCATIONS.KEY_SIGN_IN, &_icons1);
+ addButton(Common::Rect(234, 54, 308, 62), Res.KEY_CONSTANTS.LOCATIONS.KEY_DRINK);
+ addButton(Common::Rect(234, 64, 308, 72), Res.KEY_CONSTANTS.LOCATIONS.KEY_FOOD);
+ addButton(Common::Rect(234, 74, 308, 82), Res.KEY_CONSTANTS.LOCATIONS.KEY_TIP);
+ addButton(Common::Rect(234, 84, 308, 92), Res.KEY_CONSTANTS.LOCATIONS.KEY_RUMORS);
g_vm->_mode = MODE_INTERACTIVE7;
_vocName = _ccNum ? "hello1.voc" : "hello.voc";
@@ -587,13 +587,13 @@ Character *TavernLocation::doOptions(Character *c) {
Windows &windows = *g_vm->_windows;
int idx = 0;
- switch (_buttonValue) {
- case Common::KEYCODE_F1:
- case Common::KEYCODE_F2:
- case Common::KEYCODE_F3:
- case Common::KEYCODE_F4:
- case Common::KEYCODE_F5:
- case Common::KEYCODE_F6:
+ if (
+ Common::KEYCODE_F1 == _buttonValue ||
+ Common::KEYCODE_F2 == _buttonValue ||
+ Common::KEYCODE_F3 == _buttonValue ||
+ Common::KEYCODE_F4 == _buttonValue ||
+ Common::KEYCODE_F5 == _buttonValue ||
+ Common::KEYCODE_F6 == _buttonValue) {
// Switch character
_buttonValue -= Common::KEYCODE_F1;
if (_buttonValue < (int)party._activeParty.size()) {
@@ -601,9 +601,7 @@ Character *TavernLocation::doOptions(Character *c) {
intf.highlightChar(_buttonValue);
_v21 = 0;
}
- break;
-
- case Common::KEYCODE_d:
+ } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_DRINK == _buttonValue) {
// Drink
if (!c->noActions()) {
if (party.subtract(CONS_GOLD, 1, WHERE_PARTY, WT_LOC_WAIT)) {
@@ -626,9 +624,7 @@ Character *TavernLocation::doOptions(Character *c) {
wait();
}
}
- break;
-
- case Common::KEYCODE_f: {
+ } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_FOOD == _buttonValue) {
// Food
if (party._mazeId == (_ccNum ? 29 : 28)) {
_v22 = party._activeParty.size() * 15;
@@ -675,10 +671,7 @@ Character *TavernLocation::doOptions(Character *c) {
windows[12].close();
windows[10].open();
_buttonValue = 0;
- break;
- }
-
- case Common::KEYCODE_r: {
+ } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_RUMORS == _buttonValue) {
// Rumors
if (party._mazeId == (_ccNum ? 29 : 28)) {
idx = 0;
@@ -697,10 +690,7 @@ Character *TavernLocation::doOptions(Character *c) {
wait();
w.close();
- break;
- }
-
- case Common::KEYCODE_s: {
+ } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_SIGN_IN == _buttonValue) {
// Sign In
// Set location and position for afterwards
if (g_vm->getGameID() == GType_Swords) {
@@ -763,10 +753,7 @@ Character *TavernLocation::doOptions(Character *c) {
if (party._mazeId != 0)
map.load(party._mazeId);
_exitToUi = true;
- break;
- }
-
- case Common::KEYCODE_t:
+ } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_TIP == _buttonValue) {
if (!c->noActions()) {
if (!_v21) {
windows[10].writeString(Common::String::format(Res.TAVERN_TEXT,
@@ -813,10 +800,6 @@ Character *TavernLocation::doOptions(Character *c) {
}
}
}
- break;
-
- default:
- break;
}
return c;
@@ -849,9 +832,9 @@ TempleLocation::TempleLocation() : BaseLocation(TEMPLE) {
_icons1.load("esc.icn");
addButton(Common::Rect(261, 108, 285, 128), Common::KEYCODE_ESCAPE, &_icons1);
- addButton(Common::Rect(234, 54, 308, 62), Common::KEYCODE_h);
- addButton(Common::Rect(234, 64, 308, 72), Common::KEYCODE_d);
- addButton(Common::Rect(234, 74, 308, 82), Common::KEYCODE_u);
+ addButton(Common::Rect(234, 54, 308, 62), Res.KEY_CONSTANTS.LOCATIONS.KEY_HEAL);
+ addButton(Common::Rect(234, 64, 308, 72), Res.KEY_CONSTANTS.LOCATIONS.KEY_DONATION);
+ addButton(Common::Rect(234, 74, 308, 82), Res.KEY_CONSTANTS.LOCATIONS.KEY_UNCURSE);
addButton(Common::Rect(234, 84, 308, 92), 0);
_vocName = _ccNum ? "help2.voc" : "maywe2.voc";
@@ -925,13 +908,12 @@ Character *TempleLocation::doOptions(Character *c) {
Party &party = *g_vm->_party;
Sound &sound = *g_vm->_sound;
- switch (_buttonValue) {
- case Common::KEYCODE_F1:
- case Common::KEYCODE_F2:
- case Common::KEYCODE_F3:
- case Common::KEYCODE_F4:
- case Common::KEYCODE_F5:
- case Common::KEYCODE_F6:
+ if (Common::KEYCODE_F1 == _buttonValue ||
+ Common::KEYCODE_F2 == _buttonValue ||
+ Common::KEYCODE_F3 == _buttonValue ||
+ Common::KEYCODE_F4 == _buttonValue ||
+ Common::KEYCODE_F5 == _buttonValue ||
+ Common::KEYCODE_F6 == _buttonValue) {
// Switch character
_buttonValue -= Common::KEYCODE_F1;
if (_buttonValue < (int)party._activeParty.size()) {
@@ -939,9 +921,7 @@ Character *TempleLocation::doOptions(Character *c) {
intf.highlightChar(_buttonValue);
_dayOfWeek = 0;
}
- break;
-
- case Common::KEYCODE_d:
+ } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_DONATION == _buttonValue) {
if (_donation && party.subtract(CONS_GOLD, _donation, WHERE_PARTY, WT_LOC_WAIT)) {
sound.stopSound();
sound.playSound("coina.voc", 1);
@@ -964,9 +944,7 @@ Character *TempleLocation::doOptions(Character *c) {
_donation = 0;
}
}
- break;
-
- case Common::KEYCODE_h:
+ } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_HEAL == _buttonValue) {
if (_healCost && party.subtract(CONS_GOLD, _healCost, WHERE_PARTY, WT_LOC_WAIT)) {
c->_magicResistence._temporary = 0;
c->_energyResistence._temporary = 0;
@@ -991,9 +969,7 @@ Character *TempleLocation::doOptions(Character *c) {
sound.stopSound();
sound.playSound("ahh.voc", 1);
}
- break;
-
- case Common::KEYCODE_u:
+ } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_UNCURSE == _buttonValue) {
if (_uncurseCost && party.subtract(CONS_GOLD, _uncurseCost, WHERE_PARTY, WT_LOC_WAIT)) {
c->_items.curseUncurse(false);
c->_conditions[CURSED] = 0;
@@ -1002,10 +978,6 @@ Character *TempleLocation::doOptions(Character *c) {
sound.stopSound();
sound.playSound("ahh.voc", 1);
}
- break;
-
- default:
- break;
}
return c;
@@ -1020,7 +992,7 @@ TrainingLocation::TrainingLocation() : BaseLocation(TRAINING) {
_icons1.load("train.icn");
addButton(Common::Rect(281, 108, 305, 128), Common::KEYCODE_ESCAPE, &_icons1);
- addButton(Common::Rect(242, 108, 266, 128), Common::KEYCODE_t, &_icons1);
+ addButton(Common::Rect(242, 108, 266, 128), Res.KEY_CONSTANTS.LOCATIONS.KEY_TRAIN, &_icons1);
_vocName = _ccNum ? "youtrn1.voc" : "training.voc";
}
@@ -1088,13 +1060,12 @@ Character *TrainingLocation::doOptions(Character *c) {
Party &party = *g_vm->_party;
Sound &sound = *g_vm->_sound;
- switch (_buttonValue) {
- case Common::KEYCODE_F1:
- case Common::KEYCODE_F2:
- case Common::KEYCODE_F3:
- case Common::KEYCODE_F4:
- case Common::KEYCODE_F5:
- case Common::KEYCODE_F6:
+ if (Common::KEYCODE_F1 == _buttonValue ||
+ Common::KEYCODE_F2 == _buttonValue ||
+ Common::KEYCODE_F3 == _buttonValue ||
+ Common::KEYCODE_F4 == _buttonValue ||
+ Common::KEYCODE_F5 == _buttonValue ||
+ Common::KEYCODE_F6 == _buttonValue) {
// Switch character
_buttonValue -= Common::KEYCODE_F1;
if (_buttonValue < (int)party._activeParty.size()) {
@@ -1102,9 +1073,7 @@ Character *TrainingLocation::doOptions(Character *c) {
c = &party._activeParty[_buttonValue];
intf.highlightChar(_buttonValue);
}
- break;
-
- case Common::KEYCODE_t:
+ } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_TRAIN == _buttonValue) {
if (_experienceToNextLevel) {
sound.stopSound();
_drawFrameIndex = 0;
@@ -1139,10 +1108,6 @@ Character *TrainingLocation::doOptions(Character *c) {
intf.drawParty(true);
}
}
- break;
-
- default:
- break;
}
return c;
diff --git a/engines/xeen/resources.cpp b/engines/xeen/resources.cpp
index 89a76ede3c..9fbdbb51f5 100644
--- a/engines/xeen/resources.cpp
+++ b/engines/xeen/resources.cpp
@@ -487,6 +487,23 @@ void Resources::loadData() {
keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_WITH);
keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_GOLD);
keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_GEMS);
+ keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_BROWSE);
+ keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_BUY_SPELLS);
+ keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_SPELL_INFO);
+ keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_SIGN_IN);
+ keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_DRINK);
+ keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_FOOD);
+ keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_TIP);
+ keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_RUMORS);
+ keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_HEAL);
+ keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_DONATION);
+ keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_UNCURSE);
+ keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_TRAIN);
+
+ keys.syncNumber(KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_START_NEW_GAME);
+ keys.syncNumber(KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_LOAD_GAME);
+ keys.syncNumber(KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_SHOW_CREDITS);
+ keys.syncNumber(KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_VIEW_ENDGAME);
}
} // End of namespace Xeen
diff --git a/engines/xeen/resources.h b/engines/xeen/resources.h
index f831270d4a..cac2e33b12 100644
--- a/engines/xeen/resources.h
+++ b/engines/xeen/resources.h
@@ -561,7 +561,26 @@ public:
int KEY_WITH;
int KEY_GOLD;
int KEY_GEMS;
+ int KEY_BROWSE;
+ int KEY_BUY_SPELLS;
+ int KEY_SPELL_INFO;
+ int KEY_SIGN_IN;
+ int KEY_DRINK;
+ int KEY_FOOD;
+ int KEY_TIP;
+ int KEY_RUMORS;
+ int KEY_HEAL;
+ int KEY_DONATION;
+ int KEY_UNCURSE;
+ int KEY_TRAIN;
} LOCATIONS;
+
+ struct {
+ int KEY_START_NEW_GAME;
+ int KEY_LOAD_GAME;
+ int KEY_SHOW_CREDITS;
+ int KEY_VIEW_ENDGAME;
+ } CLOUDSOFXEENMENU;
} KEY_CONSTANTS;
diff --git a/engines/xeen/worldofxeen/worldofxeen_menu.cpp b/engines/xeen/worldofxeen/worldofxeen_menu.cpp
index 7b4e540d10..7c025b4fbd 100644
--- a/engines/xeen/worldofxeen/worldofxeen_menu.cpp
+++ b/engines/xeen/worldofxeen/worldofxeen_menu.cpp
@@ -262,8 +262,7 @@ bool MainMenuDialog::handleEvents() {
checkEvents(g_vm);
int difficulty;
- switch (_buttonValue) {
- case Common::KEYCODE_s:
+ if (Res.KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_START_NEW_GAME == _buttonValue) {
// Start new game
difficulty = DifficultyDialog::show(g_vm);
if (difficulty == -1)
@@ -273,9 +272,7 @@ bool MainMenuDialog::handleEvents() {
g_vm->_saves->newGame();
g_vm->_party->_difficulty = (Difficulty)difficulty;
g_vm->_gameMode = GMODE_PLAY_GAME;
- break;
-
- case Common::KEYCODE_l: {
+ } else if (Res.KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_LOAD_GAME == _buttonValue) {
// Load existing game
int ccNum = files._ccNum;
g_vm->_saves->newGame();
@@ -285,20 +282,12 @@ bool MainMenuDialog::handleEvents() {
}
g_vm->_gameMode = GMODE_PLAY_GAME;
- break;
- }
-
- case Common::KEYCODE_c:
- case Common::KEYCODE_v:
+ } else if (Res.KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_SHOW_CREDITS == _buttonValue) {
// Show credits
CreditsScreen::show(g_vm);
- break;
-
- case Common::KEYCODE_ESCAPE:
+ } else if (Common::KEYCODE_ESCAPE == _buttonValue) {
// Exit dialog (returning to just the animated background)
- break;
-
- default:
+ } else {
return false;
}
@@ -327,11 +316,11 @@ CloudsMenuDialog::~CloudsMenuDialog() {
void CloudsMenuDialog::loadButtons() {
_buttonSprites.load("start.icn");
- addButton(Common::Rect(93, 53, 227, 73), Common::KEYCODE_s, &_buttonSprites);
- addButton(Common::Rect(93, 78, 227, 98), Common::KEYCODE_l, &_buttonSprites);
- addButton(Common::Rect(93, 103, 227, 123), Common::KEYCODE_c, &_buttonSprites);
+ addButton(Common::Rect(93, 53, 227, 73), Res.KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_START_NEW_GAME, &_buttonSprites);
+ addButton(Common::Rect(93, 78, 227, 98), Res.KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_LOAD_GAME, &_buttonSprites);
+ addButton(Common::Rect(93, 103, 227, 123), Res.KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_SHOW_CREDITS, &_buttonSprites);
if (g_vm->_gameWon[0])
- addButton(Common::Rect(93, 128, 227, 148), Common::KEYCODE_e, &_buttonSprites);
+ addButton(Common::Rect(93, 128, 227, 148), Res.KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_VIEW_ENDGAME, &_buttonSprites);
}
void CloudsMenuDialog::draw() {
@@ -347,8 +336,7 @@ bool CloudsMenuDialog::handleEvents() {
if (MainMenuDialog::handleEvents())
return true;
- switch (_buttonValue) {
- case Common::KEYCODE_e:
+ if (Res.KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_VIEW_ENDGAME == _buttonValue) {
if (g_vm->_gameWon[0]) {
// Close the window
delete this;
@@ -358,10 +346,6 @@ bool CloudsMenuDialog::handleEvents() {
WOX_VM.showCloudsEnding(g_vm->_finalScore);
return true;
}
- break;
-
- default:
- break;
}
return false;
Commit: 33fb7a9284f68707f3cfea0abda73e6e9cc787c2
https://github.com/scummvm/scummvm/commit/33fb7a9284f68707f3cfea0abda73e6e9cc787c2
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Fix some errors
Changed paths:
engines/xeen/dialogs/dialogs_quests.cpp
diff --git a/engines/xeen/dialogs/dialogs_quests.cpp b/engines/xeen/dialogs/dialogs_quests.cpp
index e77c7fa0d3..aaf35a7926 100644
--- a/engines/xeen/dialogs/dialogs_quests.cpp
+++ b/engines/xeen/dialogs/dialogs_quests.cpp
@@ -238,13 +238,13 @@ void Quests::execute() {
Common::KEYCODE_KP2 == _buttonValue ||
Common::KEYCODE_d == _buttonValue) {
topRow = CLIP(topRow + 1, 0, MAX(count - 1, 0));
- } else if (Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_AUTO_NOTES) {
+ } else if (Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_AUTO_NOTES == _buttonValue) {
mode = AUTO_NOTES;
topRow = 0;
- } else if (Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_QUEST_ITEMS) {
+ } else if (Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_QUEST_ITEMS == _buttonValue) {
mode = QUEST_ITEMS;
topRow = 0;
- } else if (Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_AUTO_NOTES) {
+ } else if (Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_AUTO_NOTES == _buttonValue) {
mode = CURRENT_QUESTS;
topRow = 0;
}
Commit: 6fd4f3ba2efbc1d50171a76efda4ca82f79335ed
https://github.com/scummvm/scummvm/commit/6fd4f3ba2efbc1d50171a76efda4ca82f79335ed
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Fix some errors
Changed paths:
engines/xeen/dialogs/dialogs_quests.cpp
diff --git a/engines/xeen/dialogs/dialogs_quests.cpp b/engines/xeen/dialogs/dialogs_quests.cpp
index aaf35a7926..459e9868b7 100644
--- a/engines/xeen/dialogs/dialogs_quests.cpp
+++ b/engines/xeen/dialogs/dialogs_quests.cpp
@@ -244,7 +244,7 @@ void Quests::execute() {
} else if (Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_QUEST_ITEMS == _buttonValue) {
mode = QUEST_ITEMS;
topRow = 0;
- } else if (Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_AUTO_NOTES == _buttonValue) {
+ } else if (Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_CURRENT_QUESTS == _buttonValue) {
mode = CURRENT_QUESTS;
topRow = 0;
}
Commit: 21c727b2c7bd12b80415532c508c402b8ea1eabc
https://github.com/scummvm/scummvm/commit/21c727b2c7bd12b80415532c508c402b8ea1eabc
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Fixed names according to conventions
Changed paths:
devtools/create_xeen/constants.cpp
devtools/create_xeen/constants.h
devtools/create_xeen/en_constants.h
devtools/create_xeen/ru_constants.h
engines/xeen/dialogs/dialogs_char_info.cpp
engines/xeen/dialogs/dialogs_control_panel.cpp
engines/xeen/dialogs/dialogs_create_char.cpp
engines/xeen/dialogs/dialogs_difficulty.cpp
engines/xeen/dialogs/dialogs_items.cpp
engines/xeen/dialogs/dialogs_party.cpp
engines/xeen/dialogs/dialogs_quests.cpp
engines/xeen/dialogs/dialogs_quick_fight.cpp
engines/xeen/dialogs/dialogs_quick_ref.cpp
engines/xeen/dialogs/dialogs_spells.cpp
engines/xeen/locations.cpp
engines/xeen/party.cpp
engines/xeen/resources.cpp
engines/xeen/resources.h
engines/xeen/worldofxeen/worldofxeen_menu.cpp
diff --git a/devtools/create_xeen/constants.cpp b/devtools/create_xeen/constants.cpp
index d60de566f2..fbd690df40 100644
--- a/devtools/create_xeen/constants.cpp
+++ b/devtools/create_xeen/constants.cpp
@@ -490,88 +490,88 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
cc.add("CONSTANTS" + num, file);
Common::MemFile keys;
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CHAR_INFO()->KEY_ITEM());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CHAR_INFO()->KEY_QUICK());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CHAR_INFO()->KEY_EXCHANGE());
+ keys.syncNumber(keyConstants()->dialogsCharInfo()->KEY_ITEM());
+ keys.syncNumber(keyConstants()->dialogsCharInfo()->KEY_QUICK());
+ keys.syncNumber(keyConstants()->dialogsCharInfo()->KEY_EXCHANGE());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_FXON());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_MUSICON());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_LOAD());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_SAVE());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_QUIT());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CONTROL_PANEL()->KEY_MRWIZARD());
+ keys.syncNumber(keyConstants()->dialogsControlPanel()->KEY_FXON());
+ keys.syncNumber(keyConstants()->dialogsControlPanel()->KEY_MUSICON());
+ keys.syncNumber(keyConstants()->dialogsControlPanel()->KEY_LOAD());
+ keys.syncNumber(keyConstants()->dialogsControlPanel()->KEY_SAVE());
+ keys.syncNumber(keyConstants()->dialogsControlPanel()->KEY_QUIT());
+ keys.syncNumber(keyConstants()->dialogsControlPanel()->KEY_MRWIZARD());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_ROLL());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_CREATE());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_MGT());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_INT());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_PER());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_END());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_SPD());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_ACY());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_CREATE_CHAR()->KEY_LCK());
+ keys.syncNumber(keyConstants()->dialogsCreateChar()->KEY_ROLL());
+ keys.syncNumber(keyConstants()->dialogsCreateChar()->KEY_CREATE());
+ keys.syncNumber(keyConstants()->dialogsCreateChar()->KEY_MGT());
+ keys.syncNumber(keyConstants()->dialogsCreateChar()->KEY_INT());
+ keys.syncNumber(keyConstants()->dialogsCreateChar()->KEY_PER());
+ keys.syncNumber(keyConstants()->dialogsCreateChar()->KEY_END());
+ keys.syncNumber(keyConstants()->dialogsCreateChar()->KEY_SPD());
+ keys.syncNumber(keyConstants()->dialogsCreateChar()->KEY_ACY());
+ keys.syncNumber(keyConstants()->dialogsCreateChar()->KEY_LCK());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_DIFFICULTY()->KEY_ADVENTURER());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_DIFFICULTY()->KEY_WARRIOR());
+ keys.syncNumber(keyConstants()->dialogsDifficulty()->KEY_ADVENTURER());
+ keys.syncNumber(keyConstants()->dialogsDifficulty()->KEY_WARRIOR());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_WEAPONS());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_ARMOR());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_ACCESSORY());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_MISC());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_ENCHANT());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_USE());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_BUY());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_SELL());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_IDENTIFY());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_FIX());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_EQUIP());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_REM());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_DISC());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_QUEST());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_RECHRG());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_ITEMS()->KEY_GOLD());
+ keys.syncNumber(keyConstants()->dialogsItems()->KEY_WEAPONS());
+ keys.syncNumber(keyConstants()->dialogsItems()->KEY_ARMOR());
+ keys.syncNumber(keyConstants()->dialogsItems()->KEY_ACCESSORY());
+ keys.syncNumber(keyConstants()->dialogsItems()->KEY_MISC());
+ keys.syncNumber(keyConstants()->dialogsItems()->KEY_ENCHANT());
+ keys.syncNumber(keyConstants()->dialogsItems()->KEY_USE());
+ keys.syncNumber(keyConstants()->dialogsItems()->KEY_BUY());
+ keys.syncNumber(keyConstants()->dialogsItems()->KEY_SELL());
+ keys.syncNumber(keyConstants()->dialogsItems()->KEY_IDENTIFY());
+ keys.syncNumber(keyConstants()->dialogsItems()->KEY_FIX());
+ keys.syncNumber(keyConstants()->dialogsItems()->KEY_EQUIP());
+ keys.syncNumber(keyConstants()->dialogsItems()->KEY_REM());
+ keys.syncNumber(keyConstants()->dialogsItems()->KEY_DISC());
+ keys.syncNumber(keyConstants()->dialogsItems()->KEY_QUEST());
+ keys.syncNumber(keyConstants()->dialogsItems()->KEY_RECHRG());
+ keys.syncNumber(keyConstants()->dialogsItems()->KEY_GOLD());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_PARTY()->KEY_DELETE());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_PARTY()->KEY_REMOVE());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_PARTY()->KEY_CREATE());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_PARTY()->KEY_EXIT());
+ keys.syncNumber(keyConstants()->dialogsParty()->KEY_DELETE());
+ keys.syncNumber(keyConstants()->dialogsParty()->KEY_REMOVE());
+ keys.syncNumber(keyConstants()->dialogsParty()->KEY_CREATE());
+ keys.syncNumber(keyConstants()->dialogsParty()->KEY_EXIT());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_QUESTS()->KEY_QUEST_ITEMS());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_QUESTS()->KEY_CURRENT_QUESTS());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_QUESTS()->KEY_QUEST_ITEMS());
+ keys.syncNumber(keyConstants()->dialogsQuests()->KEY_QUEST_ITEMS());
+ keys.syncNumber(keyConstants()->dialogsQuests()->KEY_CURRENT_QUESTS());
+ keys.syncNumber(keyConstants()->dialogsQuests()->KEY_QUEST_ITEMS());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_QUICK_FIGHT()->KEY_NEXT());
+ keys.syncNumber(keyConstants()->dialogsQuickFight()->KEY_NEXT());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_SPELLS()->KEY_CAST());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_SPELLS()->KEY_NEW());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_SPELLS()->KEY_FIRE());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_SPELLS()->KEY_ELEC());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_SPELLS()->KEY_COLD());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_SPELLS()->KEY_ACID());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_SPELLS()->KEY_SET());
- keys.syncNumber(KEY_CONSTANTS()->DIALOGS_SPELLS()->KEY_RETURN());
+ keys.syncNumber(keyConstants()->dialogsSpells()->KEY_CAST());
+ keys.syncNumber(keyConstants()->dialogsSpells()->KEY_NEW());
+ keys.syncNumber(keyConstants()->dialogsSpells()->KEY_FIRE());
+ keys.syncNumber(keyConstants()->dialogsSpells()->KEY_ELEC());
+ keys.syncNumber(keyConstants()->dialogsSpells()->KEY_COLD());
+ keys.syncNumber(keyConstants()->dialogsSpells()->KEY_ACID());
+ keys.syncNumber(keyConstants()->dialogsSpells()->KEY_SET());
+ keys.syncNumber(keyConstants()->dialogsSpells()->KEY_RETURN());
- keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_DEP());
- keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_WITH());
- keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_GOLD());
- keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_GEMS());
- keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_BROWSE());
- keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_BUY_SPELLS());
- keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_SPELL_INFO());
- keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_SIGN_IN());
- keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_DRINK());
- keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_FOOD());
- keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_TIP());
- keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_RUMORS());
- keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_HEAL());
- keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_DONATION());
- keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_UNCURSE());
- keys.syncNumber(KEY_CONSTANTS()->LOCATIONS()->KEY_TRAIN());
+ keys.syncNumber(keyConstants()->locations()->KEY_DEP());
+ keys.syncNumber(keyConstants()->locations()->KEY_WITH());
+ keys.syncNumber(keyConstants()->locations()->KEY_GOLD());
+ keys.syncNumber(keyConstants()->locations()->KEY_GEMS());
+ keys.syncNumber(keyConstants()->locations()->KEY_BROWSE());
+ keys.syncNumber(keyConstants()->locations()->KEY_BUY_SPELLS());
+ keys.syncNumber(keyConstants()->locations()->KEY_SPELL_INFO());
+ keys.syncNumber(keyConstants()->locations()->KEY_SIGN_IN());
+ keys.syncNumber(keyConstants()->locations()->KEY_DRINK());
+ keys.syncNumber(keyConstants()->locations()->KEY_FOOD());
+ keys.syncNumber(keyConstants()->locations()->KEY_TIP());
+ keys.syncNumber(keyConstants()->locations()->KEY_RUMORS());
+ keys.syncNumber(keyConstants()->locations()->KEY_HEAL());
+ keys.syncNumber(keyConstants()->locations()->KEY_DONATION());
+ keys.syncNumber(keyConstants()->locations()->KEY_UNCURSE());
+ keys.syncNumber(keyConstants()->locations()->KEY_TRAIN());
- keys.syncNumber(KEY_CONSTANTS()->CLOUDSOFXEENMENU()->KEY_START_NEW_GAME());
- keys.syncNumber(KEY_CONSTANTS()->CLOUDSOFXEENMENU()->KEY_LOAD_GAME());
- keys.syncNumber(KEY_CONSTANTS()->CLOUDSOFXEENMENU()->KEY_SHOW_CREDITS());
- keys.syncNumber(KEY_CONSTANTS()->CLOUDSOFXEENMENU()->KEY_VIEW_ENDGAME());
+ keys.syncNumber(keyConstants()->cloudsOfXeenMenu()->KEY_START_NEW_GAME());
+ keys.syncNumber(keyConstants()->cloudsOfXeenMenu()->KEY_LOAD_GAME());
+ keys.syncNumber(keyConstants()->cloudsOfXeenMenu()->KEY_SHOW_CREDITS());
+ keys.syncNumber(keyConstants()->cloudsOfXeenMenu()->KEY_VIEW_ENDGAME());
cc.add("CONSTKEYS" + num, keys);
}
diff --git a/devtools/create_xeen/constants.h b/devtools/create_xeen/constants.h
index 1faaaca205..81752fb17b 100644
--- a/devtools/create_xeen/constants.h
+++ b/devtools/create_xeen/constants.h
@@ -1254,7 +1254,7 @@ public:
virtual const int KEY_QUICK() = 0;
virtual const int KEY_EXCHANGE() = 0;
};
- virtual DialogsCharInfo *DIALOGS_CHAR_INFO() = 0;
+ virtual DialogsCharInfo *dialogsCharInfo() = 0;
class DialogsControlPanel {
public:
@@ -1265,7 +1265,7 @@ public:
virtual const int KEY_QUIT() = 0;
virtual const int KEY_MRWIZARD() = 0;
};
- virtual DialogsControlPanel *DIALOGS_CONTROL_PANEL() = 0;
+ virtual DialogsControlPanel *dialogsControlPanel() = 0;
class DialogsCreateChar {
public:
@@ -1279,14 +1279,14 @@ public:
virtual const int KEY_ACY() = 0;
virtual const int KEY_LCK() = 0;
};
- virtual DialogsCreateChar *DIALOGS_CREATE_CHAR() = 0;
+ virtual DialogsCreateChar *dialogsCreateChar() = 0;
class DialogsDifficulty {
public:
virtual const int KEY_ADVENTURER() = 0;
virtual const int KEY_WARRIOR() = 0;
};
- virtual DialogsDifficulty *DIALOGS_DIFFICULTY() = 0;
+ virtual DialogsDifficulty *dialogsDifficulty() = 0;
class DialogsItems {
public:
@@ -1307,7 +1307,7 @@ public:
virtual const int KEY_RECHRG() = 0;
virtual const int KEY_GOLD() = 0;
};
- virtual DialogsItems *DIALOGS_ITEMS() = 0;
+ virtual DialogsItems *dialogsItems() = 0;
class DialogsParty {
public:
@@ -1316,7 +1316,7 @@ public:
virtual const int KEY_CREATE() = 0;
virtual const int KEY_EXIT() = 0;
};
- virtual DialogsParty *DIALOGS_PARTY() = 0;
+ virtual DialogsParty *dialogsParty() = 0;
class DialogsQuests {
public:
@@ -1324,13 +1324,13 @@ public:
virtual const int KEY_CURRENT_QUESTS() = 0;
virtual const int KEY_AUTO_NOTES() = 0;
};
- virtual DialogsQuests *DIALOGS_QUESTS() = 0;
+ virtual DialogsQuests *dialogsQuests() = 0;
class DialogsQuickFight {
public:
virtual const int KEY_NEXT() = 0;
};
- virtual DialogsQuickFight *DIALOGS_QUICK_FIGHT() = 0;
+ virtual DialogsQuickFight *dialogsQuickFight() = 0;
class DialogsSpells {
public:
@@ -1343,7 +1343,7 @@ public:
virtual const int KEY_SET() = 0;
virtual const int KEY_RETURN() = 0;
};
- virtual DialogsSpells *DIALOGS_SPELLS() = 0;
+ virtual DialogsSpells *dialogsSpells() = 0;
class Locations {
public:
@@ -1364,7 +1364,7 @@ public:
virtual const int KEY_UNCURSE() = 0;
virtual const int KEY_TRAIN() = 0;
};
- virtual Locations *LOCATIONS() = 0;
+ virtual Locations *locations() = 0;
class CloudsOfXeenMenu {
public:
@@ -1373,9 +1373,9 @@ public:
virtual const int KEY_SHOW_CREDITS() = 0;
virtual const int KEY_VIEW_ENDGAME() = 0;
};
- virtual CloudsOfXeenMenu *CLOUDSOFXEENMENU() = 0;
+ virtual CloudsOfXeenMenu *cloudsOfXeenMenu() = 0;
};
- virtual KeyConstants *KEY_CONSTANTS() = 0;
+ virtual KeyConstants *keyConstants() = 0;
};
extern void writeConstants(CCArchive &cc);
diff --git a/devtools/create_xeen/en_constants.h b/devtools/create_xeen/en_constants.h
index ee3f3ce235..722d73a817 100644
--- a/devtools/create_xeen/en_constants.h
+++ b/devtools/create_xeen/en_constants.h
@@ -1997,7 +1997,7 @@ public:
const int KEY_QUICK() { return Common::KEYCODE_q; }
const int KEY_EXCHANGE() { return Common::KEYCODE_e; }
};
- EN_DialogsCharInfo *DIALOGS_CHAR_INFO() {
+ EN_DialogsCharInfo *dialogsCharInfo() {
if (!_dci)_dci = new EN_DialogsCharInfo();
return _dci;
}
@@ -2011,7 +2011,7 @@ public:
const int KEY_QUIT() { return Common::KEYCODE_q; }
const int KEY_MRWIZARD() { return Common::KEYCODE_w; }
};
- EN_DialogsControlPanel *DIALOGS_CONTROL_PANEL() {
+ EN_DialogsControlPanel *dialogsControlPanel() {
if (!_dcp) _dcp = new EN_DialogsControlPanel();
return _dcp;
}
@@ -2028,7 +2028,7 @@ public:
const int KEY_ACY() { return Common::KEYCODE_a; }
const int KEY_LCK() { return Common::KEYCODE_l; }
};
- EN_DialogsCreateChar *DIALOGS_CREATE_CHAR() {
+ EN_DialogsCreateChar *dialogsCreateChar() {
if (!_dcc) _dcc = new EN_DialogsCreateChar();
return _dcc;
}
@@ -2038,7 +2038,7 @@ public:
const int KEY_ADVENTURER() { return Common::KEYCODE_a; }
const int KEY_WARRIOR() { return Common::KEYCODE_w; }
};
- EN_DialogsDifficulty *DIALOGS_DIFFICULTY() {
+ EN_DialogsDifficulty *dialogsDifficulty() {
if (!_dd) _dd = new EN_DialogsDifficulty();
return _dd;
}
@@ -2062,7 +2062,7 @@ public:
const int KEY_RECHRG() { return Common::KEYCODE_r; }
const int KEY_GOLD() { return Common::KEYCODE_g; }
};
- EN_DialogsItems *DIALOGS_ITEMS() {
+ EN_DialogsItems *dialogsItems() {
if (!_di) _di = new EN_DialogsItems();
return _di;
}
@@ -2074,7 +2074,7 @@ public:
const int KEY_CREATE() { return Common::KEYCODE_c; }
const int KEY_EXIT() { return Common::KEYCODE_x; }
};
- EN_DialogsParty *DIALOGS_PARTY() {
+ EN_DialogsParty *dialogsParty() {
if (!_dp) _dp = new EN_DialogsParty();
return _dp;
}
@@ -2085,7 +2085,7 @@ public:
const int KEY_CURRENT_QUESTS() { return Common::KEYCODE_q; }
const int KEY_AUTO_NOTES() { return Common::KEYCODE_a; }
};
- EN_DialogsQuests *DIALOGS_QUESTS() {
+ EN_DialogsQuests *dialogsQuests() {
if (!_dq) _dq = new EN_DialogsQuests();
return _dq;
}
@@ -2094,7 +2094,7 @@ public:
public:
const int KEY_NEXT() { return Common::KEYCODE_t; }
};
- EN_DialogsQuickFight *DIALOGS_QUICK_FIGHT() {
+ EN_DialogsQuickFight *dialogsQuickFight() {
if (!_dqf) _dqf = new EN_DialogsQuickFight();
return _dqf;
}
@@ -2110,7 +2110,7 @@ public:
const int KEY_SET() { return Common::KEYCODE_t; }
const int KEY_RETURN() { return Common::KEYCODE_r; }
};
- EN_DialogsSpells *DIALOGS_SPELLS() {
+ EN_DialogsSpells *dialogsSpells() {
if (!_ds) _ds = new EN_DialogsSpells();
return _ds;
}
@@ -2134,7 +2134,7 @@ public:
const int KEY_UNCURSE() { return Common::KEYCODE_u; }
const int KEY_TRAIN() { return Common::KEYCODE_t; }
};
- EN_Locations *LOCATIONS() {
+ EN_Locations *locations() {
if (!_l) _l = new EN_Locations();
return _l;
}
@@ -2146,7 +2146,7 @@ public:
const int KEY_SHOW_CREDITS() { return Common::KEYCODE_c; }
const int KEY_VIEW_ENDGAME() { return Common::KEYCODE_e; }
};
- EN_CloudsOfXeenMenu *CLOUDSOFXEENMENU() {
+ EN_CloudsOfXeenMenu *cloudsOfXeenMenu() {
if (!_soxm)
_soxm = new EN_CloudsOfXeenMenu();
return _soxm;
@@ -2166,7 +2166,7 @@ public:
EN_CloudsOfXeenMenu *_soxm = NULL;
};
- EN_KeyConstants *KEY_CONSTANTS() {
+ EN_KeyConstants *keyConstants() {
if (!_kc)_kc = new EN_KeyConstants();
return _kc;
}
diff --git a/devtools/create_xeen/ru_constants.h b/devtools/create_xeen/ru_constants.h
index 3e57d5d87e..f5916882c5 100644
--- a/devtools/create_xeen/ru_constants.h
+++ b/devtools/create_xeen/ru_constants.h
@@ -2003,7 +2003,7 @@ public:
const int KEY_QUICK() { return Common::KEYCODE_COMMA; }
const int KEY_EXCHANGE() { return Common::KEYCODE_c; }
};
- RU_DialogsCharInfo *DIALOGS_CHAR_INFO() {
+ RU_DialogsCharInfo *dialogsCharInfo() {
if (!_dci) _dci = new RU_DialogsCharInfo();
return _dci;
}
@@ -2017,7 +2017,7 @@ public:
const int KEY_QUIT() { return Common::KEYCODE_d; }
const int KEY_MRWIZARD() { return Common::KEYCODE_g; }
};
- RU_DialogsControlPanel *DIALOGS_CONTROL_PANEL() {
+ RU_DialogsControlPanel *dialogsControlPanel() {
if (!_dcp) _dcp = new RU_DialogsControlPanel();
return _dcp;
}
@@ -2034,7 +2034,7 @@ public:
const int KEY_ACY() { return Common::KEYCODE_v; }
const int KEY_LCK() { return Common::KEYCODE_e; }
};
- RU_DialogsCreateChar *DIALOGS_CREATE_CHAR() {
+ RU_DialogsCreateChar *dialogsCreateChar() {
if (!_dcc) _dcc = new RU_DialogsCreateChar();
return _dcc;
}
@@ -2044,7 +2044,7 @@ public:
const int KEY_ADVENTURER() { return Common::KEYCODE_f; }
const int KEY_WARRIOR() { return Common::KEYCODE_d; }
};
- RU_DialogsDifficulty *DIALOGS_DIFFICULTY() {
+ RU_DialogsDifficulty *dialogsDifficulty() {
if (!_dd) _dd = new RU_DialogsDifficulty();
return _dd;
}
@@ -2068,7 +2068,7 @@ public:
const int KEY_RECHRG() { return Common::KEYCODE_g; }
const int KEY_GOLD() { return Common::KEYCODE_p; }
};
- RU_DialogsItems *DIALOGS_ITEMS() {
+ RU_DialogsItems *dialogsItems() {
if (!_di) _di = new RU_DialogsItems();
return _di;
}
@@ -2080,7 +2080,7 @@ public:
const int KEY_CREATE() { return Common::KEYCODE_c; }
const int KEY_EXIT() { return Common::KEYCODE_s; }
};
- RU_DialogsParty *DIALOGS_PARTY() {
+ RU_DialogsParty *dialogsParty() {
if (!_dp) _dp = new RU_DialogsParty();
return _dp;
}
@@ -2091,7 +2091,7 @@ public:
const int KEY_CURRENT_QUESTS() { return Common::KEYCODE_p; }
const int KEY_AUTO_NOTES() { return Common::KEYCODE_f; }
};
- RU_DialogsQuests *DIALOGS_QUESTS() {
+ RU_DialogsQuests *dialogsQuests() {
if (!_dq) _dq = new RU_DialogsQuests();
return _dq;
}
@@ -2100,7 +2100,7 @@ public:
public:
const int KEY_NEXT() { return Common::KEYCODE_c; }
};
- RU_DialogsQuickFight *DIALOGS_QUICK_FIGHT() {
+ RU_DialogsQuickFight *dialogsQuickFight() {
if (!_dqf) _dqf = new RU_DialogsQuickFight();
return _dqf;
}
@@ -2116,7 +2116,7 @@ public:
const int KEY_SET() { return Common::KEYCODE_e; }
const int KEY_RETURN() { return Common::KEYCODE_d; }
};
- RU_DialogsSpells *DIALOGS_SPELLS() {
+ RU_DialogsSpells *dialogsSpells() {
if (!_ds) _ds = new RU_DialogsSpells();
return _ds;
}
@@ -2140,7 +2140,7 @@ public:
const int KEY_UNCURSE() { return Common::KEYCODE_c; }
const int KEY_TRAIN() { return Common::KEYCODE_j; }
};
- RU_Locations *LOCATIONS() {
+ RU_Locations *locations() {
if (!_l) _l = new RU_Locations();
return _l;
}
@@ -2152,7 +2152,7 @@ public:
const int KEY_SHOW_CREDITS() { return Common::KEYCODE_c; }
const int KEY_VIEW_ENDGAME() { return Common::KEYCODE_a; }
};
- RU_CloudsOfXeenMenu *CLOUDSOFXEENMENU() {
+ RU_CloudsOfXeenMenu *cloudsOfXeenMenu() {
if (!_soxm)
_soxm = new RU_CloudsOfXeenMenu();
return _soxm;
@@ -2171,7 +2171,7 @@ public:
RU_CloudsOfXeenMenu *_soxm = NULL;
};
- RU_KeyConstants *KEY_CONSTANTS() {
+ RU_KeyConstants *keyConstants() {
if (!_kc) _kc = new RU_KeyConstants();
return _kc;
}
diff --git a/engines/xeen/dialogs/dialogs_char_info.cpp b/engines/xeen/dialogs/dialogs_char_info.cpp
index d0f964a6c5..ed04b185c6 100644
--- a/engines/xeen/dialogs/dialogs_char_info.cpp
+++ b/engines/xeen/dialogs/dialogs_char_info.cpp
@@ -169,7 +169,7 @@ void CharacterInfo::execute(int charIndex) {
if (result)
redrawFlag = true;
- } else if (Res.KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_EXCHANGE == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsCharInfo.KEY_EXCHANGE == _buttonValue) {
if (oldMode == MODE_COMBAT) {
ErrorScroll::show(_vm, Res.EXCHANGING_IN_COMBAT, WT_FREEZE_WAIT);
} else {
@@ -179,7 +179,7 @@ void CharacterInfo::execute(int charIndex) {
redrawFlag = true;
}
- } else if (Res.KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_ITEM == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsCharInfo.KEY_ITEM == _buttonValue) {
_vm->_mode = oldMode;
_vm->_combat->_itemFlag = _vm->_mode == MODE_COMBAT;
c = ItemsDialog::show(_vm, c, ITEMMODE_CHAR_INFO);
@@ -192,7 +192,7 @@ void CharacterInfo::execute(int charIndex) {
_vm->_mode = MODE_CHARACTER_INFO;
redrawFlag = true;
- } else if (Res.KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_QUICK == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsCharInfo.KEY_QUICK == _buttonValue) {
QuickReferenceDialog::show(_vm);
redrawFlag = true;
@@ -261,9 +261,9 @@ void CharacterInfo::addButtons() {
addButton(Common::Rect(177, 93, 201, 113), 1019, &_iconSprites);
addButton(Common::Rect(177, 116, 201, 136), 1020, &_iconSprites);
- addButton(Common::Rect(285, 11, 309, 31), Res.KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_ITEM, &_iconSprites);
- addButton(Common::Rect(285, 43, 309, 63), Res.KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_QUICK, &_iconSprites);
- addButton(Common::Rect(285, 75, 309, 95), Res.KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_EXCHANGE, &_iconSprites);
+ addButton(Common::Rect(285, 11, 309, 31), Res.KeyConstants.DialogsCharInfo.KEY_ITEM, &_iconSprites);
+ addButton(Common::Rect(285, 43, 309, 63), Res.KeyConstants.DialogsCharInfo.KEY_QUICK, &_iconSprites);
+ addButton(Common::Rect(285, 75, 309, 95), Res.KeyConstants.DialogsCharInfo.KEY_EXCHANGE, &_iconSprites);
addButton(Common::Rect(285, 107, 309, 127), Common::KEYCODE_ESCAPE, &_iconSprites);
addPartyButtons(_vm);
diff --git a/engines/xeen/dialogs/dialogs_control_panel.cpp b/engines/xeen/dialogs/dialogs_control_panel.cpp
index 3ed9cfd88c..13aa3a8adf 100644
--- a/engines/xeen/dialogs/dialogs_control_panel.cpp
+++ b/engines/xeen/dialogs/dialogs_control_panel.cpp
@@ -83,13 +83,13 @@ int ControlPanel::execute() {
return 0;
} while (!_buttonValue && events.timeElapsed() < 2);
- if (Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_QUIT == _buttonValue) {
+ if (Res.KeyConstants.DialogsControlPanel.KEY_QUIT == _buttonValue) {
if (Confirm::show(g_vm, Res.CONFIRM_QUIT)) {
g_vm->_gameMode = GMODE_QUIT;
result = 1;
}
- } else if (Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_MRWIZARD == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsControlPanel.KEY_MRWIZARD == _buttonValue) {
if (Confirm::show(g_vm, Res.MR_WIZARD)) {
w.close();
if (!windows[2]._enabled) {
@@ -111,7 +111,7 @@ int ControlPanel::execute() {
result = 2;
}
- } else if (Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_LOAD == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsControlPanel.KEY_LOAD == _buttonValue) {
if (_vm->_mode == MODE_COMBAT) {
ErrorScroll::show(_vm, Res.NO_LOADING_IN_COMBAT);
} else {
@@ -119,7 +119,7 @@ int ControlPanel::execute() {
result = 3;
}
- } else if (Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_SAVE == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsControlPanel.KEY_SAVE == _buttonValue) {
if (_vm->_mode == MODE_COMBAT) {
ErrorScroll::show(_vm, Res.NO_SAVING_IN_COMBAT);
} else {
@@ -127,10 +127,10 @@ int ControlPanel::execute() {
result = 4;
}
- } else if (Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_FXON == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsControlPanel.KEY_FXON == _buttonValue) {
sound.setFxOn(!sound._fxOn);
- } else if (Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_MUSICON == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsControlPanel.KEY_MUSICON == _buttonValue) {
sound.setMusicOn(!sound._musicOn);
} else if (Common::KEYCODE_ESCAPE == _buttonValue) {
@@ -166,17 +166,17 @@ int ControlPanel::execute() {
void ControlPanel::loadButtons() {
_iconSprites.load("cpanel.icn");
- addButton(Common::Rect(214, 56, 244, 69), Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_FXON, 0, &_iconSprites);
- addButton(Common::Rect(214, 75, 244, 88), Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_MUSICON, 0, &_iconSprites);
- addButton(Common::Rect(135, 56, 165, 69), Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_LOAD, 0, &_iconSprites);
- addButton(Common::Rect(135, 75, 165, 88), Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_SAVE, 0, &_iconSprites);
+ addButton(Common::Rect(214, 56, 244, 69), Res.KeyConstants.DialogsControlPanel.KEY_FXON, 0, &_iconSprites);
+ addButton(Common::Rect(214, 75, 244, 88), Res.KeyConstants.DialogsControlPanel.KEY_MUSICON, 0, &_iconSprites);
+ addButton(Common::Rect(135, 56, 165, 69), Res.KeyConstants.DialogsControlPanel.KEY_LOAD, 0, &_iconSprites);
+ addButton(Common::Rect(135, 75, 165, 88), Res.KeyConstants.DialogsControlPanel.KEY_SAVE, 0, &_iconSprites);
// For ScummVM we've merged both Save and Save As into a single
// save item, so we don't need this one
addButton(Common::Rect(), 0);
- addButton(Common::Rect(135, 94, 165, 107), Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_QUIT, 0, &_iconSprites);
- addButton(Common::Rect(175, 113, 205, 126), Res.KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_MRWIZARD, 0, &_iconSprites);
+ addButton(Common::Rect(135, 94, 165, 107), Res.KeyConstants.DialogsControlPanel.KEY_QUIT, 0, &_iconSprites);
+ addButton(Common::Rect(175, 113, 205, 126), Res.KeyConstants.DialogsControlPanel.KEY_MRWIZARD, 0, &_iconSprites);
}
Common::String ControlPanel::getButtonText() {
diff --git a/engines/xeen/dialogs/dialogs_create_char.cpp b/engines/xeen/dialogs/dialogs_create_char.cpp
index 8c0a835572..ae97d4bcf3 100644
--- a/engines/xeen/dialogs/dialogs_create_char.cpp
+++ b/engines/xeen/dialogs/dialogs_create_char.cpp
@@ -162,13 +162,13 @@ void CreateCharacterDialog::execute() {
} else if (Common::KEYCODE_PAGEDOWN == _buttonValue) {
- } else if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_MGT == _buttonValue ||
- Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_INT == _buttonValue ||
- Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_PER == _buttonValue ||
- Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_END == _buttonValue ||
- Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_SPD == _buttonValue ||
- Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_ACY == _buttonValue ||
- Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_LCK == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsCreateChar.KEY_MGT == _buttonValue ||
+ Res.KeyConstants.DialogsCreateChar.KEY_INT == _buttonValue ||
+ Res.KeyConstants.DialogsCreateChar.KEY_PER == _buttonValue ||
+ Res.KeyConstants.DialogsCreateChar.KEY_END == _buttonValue ||
+ Res.KeyConstants.DialogsCreateChar.KEY_SPD == _buttonValue ||
+ Res.KeyConstants.DialogsCreateChar.KEY_ACY == _buttonValue ||
+ Res.KeyConstants.DialogsCreateChar.KEY_LCK == _buttonValue) {
if (swapAttributes(_buttonValue)) {
checkClass();
classId = -1;
@@ -189,7 +189,7 @@ void CreateCharacterDialog::execute() {
selectedClass = classId = _buttonValue - 1000;
}
- } else if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_CREATE == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsCreateChar.KEY_CREATE == _buttonValue) {
_vm->_mode = MODE_FF;
bool result = saveCharacter(party._roster[freeCharList[charIndex]],
classId, race, sex);
@@ -203,7 +203,7 @@ void CreateCharacterDialog::execute() {
classId = selectedClass;
} else if (Common::KEYCODE_SPACE == _buttonValue ||
- Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_ROLL == _buttonValue) {
+ Res.KeyConstants.DialogsCreateChar.KEY_ROLL == _buttonValue) {
// Re-roll the attributes
rollAttributes();
classId = -1;
@@ -249,15 +249,15 @@ void CreateCharacterDialog::loadButtons() {
_icons.load("create.icn");
// Add buttons
- addButton(Common::Rect(132, 98, 156, 118), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_ROLL, &_icons);
- addButton(Common::Rect(132, 128, 156, 148), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_CREATE, &_icons);
- addButton(Common::Rect(168, 19, 192, 39), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_MGT, nullptr);
- addButton(Common::Rect(168, 43, 192, 63), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_INT, nullptr);
- addButton(Common::Rect(168, 67, 192, 87), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_PER, nullptr);
- addButton(Common::Rect(168, 91, 192, 111), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_END, nullptr);
- addButton(Common::Rect(168, 115, 192, 135), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_SPD, nullptr);
- addButton(Common::Rect(168, 139, 192, 159), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_ACY, nullptr);
- addButton(Common::Rect(168, 163, 192, 183), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_LCK, nullptr);
+ addButton(Common::Rect(132, 98, 156, 118), Res.KeyConstants.DialogsCreateChar.KEY_ROLL, &_icons);
+ addButton(Common::Rect(132, 128, 156, 148), Res.KeyConstants.DialogsCreateChar.KEY_CREATE, &_icons);
+ addButton(Common::Rect(168, 19, 192, 39), Res.KeyConstants.DialogsCreateChar.KEY_MGT, nullptr);
+ addButton(Common::Rect(168, 43, 192, 63), Res.KeyConstants.DialogsCreateChar.KEY_INT, nullptr);
+ addButton(Common::Rect(168, 67, 192, 87), Res.KeyConstants.DialogsCreateChar.KEY_PER, nullptr);
+ addButton(Common::Rect(168, 91, 192, 111), Res.KeyConstants.DialogsCreateChar.KEY_END, nullptr);
+ addButton(Common::Rect(168, 115, 192, 135), Res.KeyConstants.DialogsCreateChar.KEY_SPD, nullptr);
+ addButton(Common::Rect(168, 139, 192, 159), Res.KeyConstants.DialogsCreateChar.KEY_ACY, nullptr);
+ addButton(Common::Rect(168, 163, 192, 183), Res.KeyConstants.DialogsCreateChar.KEY_LCK, nullptr);
addButton(Common::Rect(132, 158, 156, 178), Common::KEYCODE_ESCAPE, &_icons);
addButton(Common::Rect(86, 98, 110, 118), Common::KEYCODE_UP, &_icons);
@@ -463,19 +463,19 @@ void CreateCharacterDialog::drawDice() {
}
int CreateCharacterDialog::getAttribFromKeycode(int keycode) const {
- if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_MGT == keycode)
+ if (Res.KeyConstants.DialogsCreateChar.KEY_MGT == keycode)
return MIGHT;
- else if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_INT == keycode)
+ else if (Res.KeyConstants.DialogsCreateChar.KEY_INT == keycode)
return INTELLECT;
- else if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_PER == keycode)
+ else if (Res.KeyConstants.DialogsCreateChar.KEY_PER == keycode)
return PERSONALITY;
- else if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_END == keycode)
+ else if (Res.KeyConstants.DialogsCreateChar.KEY_END == keycode)
return ENDURANCE;
- else if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_SPD == keycode)
+ else if (Res.KeyConstants.DialogsCreateChar.KEY_SPD == keycode)
return SPEED;
- else if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_ACY == keycode)
+ else if (Res.KeyConstants.DialogsCreateChar.KEY_ACY == keycode)
return ACCURACY;
- else if (Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_LCK == keycode)
+ else if (Res.KeyConstants.DialogsCreateChar.KEY_LCK == keycode)
return LUCK;
else
return -1;
@@ -521,13 +521,13 @@ int CreateCharacterDialog::exchangeAttribute(int srcAttr) {
saveButtons();
addButton(Common::Rect(118, 58, 142, 78), Common::KEYCODE_ESCAPE, &_icons);
- addButton(Common::Rect(168, 19, 192, 39), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_MGT);
- addButton(Common::Rect(168, 43, 192, 63), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_INT);
- addButton(Common::Rect(168, 67, 192, 87), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_PER);
- addButton(Common::Rect(168, 91, 192, 111), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_END);
- addButton(Common::Rect(168, 115, 192, 135), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_SPD);
- addButton(Common::Rect(168, 139, 192, 159), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_ACY);
- addButton(Common::Rect(168, 163, 192, 183), Res.KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_LCK);
+ addButton(Common::Rect(168, 19, 192, 39), Res.KeyConstants.DialogsCreateChar.KEY_MGT);
+ addButton(Common::Rect(168, 43, 192, 63), Res.KeyConstants.DialogsCreateChar.KEY_INT);
+ addButton(Common::Rect(168, 67, 192, 87), Res.KeyConstants.DialogsCreateChar.KEY_PER);
+ addButton(Common::Rect(168, 91, 192, 111), Res.KeyConstants.DialogsCreateChar.KEY_END);
+ addButton(Common::Rect(168, 115, 192, 135), Res.KeyConstants.DialogsCreateChar.KEY_SPD);
+ addButton(Common::Rect(168, 139, 192, 159), Res.KeyConstants.DialogsCreateChar.KEY_ACY);
+ addButton(Common::Rect(168, 163, 192, 183), Res.KeyConstants.DialogsCreateChar.KEY_LCK);
Window &w = windows[26];
w.open();
diff --git a/engines/xeen/dialogs/dialogs_difficulty.cpp b/engines/xeen/dialogs/dialogs_difficulty.cpp
index 566f9b2631..f6fe3d771f 100644
--- a/engines/xeen/dialogs/dialogs_difficulty.cpp
+++ b/engines/xeen/dialogs/dialogs_difficulty.cpp
@@ -52,9 +52,9 @@ int DifficultyDialog::execute() {
events.pollEventsAndWait();
checkEvents(_vm);
- if (Res.KEY_CONSTANTS.DIALOGS_DIFFICULTY.KEY_ADVENTURER == _buttonValue)
+ if (Res.KeyConstants.DialogsDifficulty.KEY_ADVENTURER == _buttonValue)
result = ADVENTURER;
- else if (Res.KEY_CONSTANTS.DIALOGS_DIFFICULTY.KEY_WARRIOR == _buttonValue)
+ else if (Res.KeyConstants.DialogsDifficulty.KEY_WARRIOR == _buttonValue)
result = WARRIOR;
else if (Common::KEYCODE_ESCAPE != _buttonValue)
continue;
@@ -69,8 +69,8 @@ int DifficultyDialog::execute() {
void DifficultyDialog::loadButtons() {
_sprites.load("choice.icn");
- addButton(Common::Rect(68, 167, 158, 187), Res.KEY_CONSTANTS.DIALOGS_DIFFICULTY.KEY_ADVENTURER, &_sprites);
- addButton(Common::Rect(166, 167, 256, 187), Res.KEY_CONSTANTS.DIALOGS_DIFFICULTY.KEY_WARRIOR, &_sprites);
+ addButton(Common::Rect(68, 167, 158, 187), Res.KeyConstants.DialogsDifficulty.KEY_ADVENTURER, &_sprites);
+ addButton(Common::Rect(166, 167, 256, 187), Res.KeyConstants.DialogsDifficulty.KEY_WARRIOR, &_sprites);
}
} // End of namespace Xeen
diff --git a/engines/xeen/dialogs/dialogs_items.cpp b/engines/xeen/dialogs/dialogs_items.cpp
index ba67618b65..95aaf14a6b 100644
--- a/engines/xeen/dialogs/dialogs_items.cpp
+++ b/engines/xeen/dialogs/dialogs_items.cpp
@@ -375,22 +375,22 @@ Character *ItemsDialog::execute(Character *c, ItemsMode mode) {
redrawFlag = REDRAW_TEXT;
}
- } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_WEAPONS == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsItems.KEY_WEAPONS == _buttonValue) {
// Weapons category
category = CATEGORY_WEAPON;
redrawFlag = REDRAW_FULL;
- } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ARMOR == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsItems.KEY_ARMOR == _buttonValue) {
// Armor category
category = CATEGORY_ARMOR;
redrawFlag = REDRAW_FULL;
- } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ACCESSORY == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsItems.KEY_ACCESSORY == _buttonValue) {
// Accessories category
category = CATEGORY_ACCESSORY;
redrawFlag = REDRAW_FULL;
- } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_MISC == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsItems.KEY_MISC == _buttonValue) {
// Misc
category = CATEGORY_MISC;
redrawFlag = REDRAW_FULL;
@@ -398,19 +398,19 @@ Character *ItemsDialog::execute(Character *c, ItemsMode mode) {
} else if (mode == ITEMMODE_ENCHANT ||
mode == ITEMMODE_RECHARGE ||
mode == ITEMMODE_TO_GOLD) {
- if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_USE == _buttonValue) {
+ if (Res.KeyConstants.DialogsItems.KEY_USE == _buttonValue) {
} else if (mode == ITEMMODE_ENCHANT &&
- Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ENCHANT == _buttonValue) {
+ Res.KeyConstants.DialogsItems.KEY_ENCHANT == _buttonValue) {
actionIndex = 4;
} else if (mode == ITEMMODE_RECHARGE &&
- Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_RECHRG == _buttonValue) {
+ Res.KeyConstants.DialogsItems.KEY_RECHRG == _buttonValue) {
actionIndex = 5;
} else if (mode == ITEMMODE_TO_GOLD &&
- Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_GOLD == _buttonValue) {
+ Res.KeyConstants.DialogsItems.KEY_GOLD == _buttonValue) {
actionIndex = 6;
} else if (mode == ITEMMODE_TO_GOLD &&
- Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_EQUIP == _buttonValue) {
+ Res.KeyConstants.DialogsItems.KEY_EQUIP == _buttonValue) {
if (category != CATEGORY_MISC)
actionIndex = 0;
}
@@ -419,35 +419,35 @@ Character *ItemsDialog::execute(Character *c, ItemsMode mode) {
ITEMMODE_SELL == mode ||
ITEMMODE_IDENTIFY == mode ||
ITEMMODE_REPAIR == mode) {
- if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_BUY == _buttonValue) {
+ if (Res.KeyConstants.DialogsItems.KEY_BUY == _buttonValue) {
mode = ITEMMODE_BUY;
c = &_itemsCharacter;
redrawFlag = REDRAW_FULL;
- } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_SELL == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsItems.KEY_SELL == _buttonValue) {
mode = ITEMMODE_SELL;
c = startingChar;
redrawFlag = REDRAW_TEXT;
- } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_IDENTIFY == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsItems.KEY_IDENTIFY == _buttonValue) {
mode = ITEMMODE_IDENTIFY;
c = startingChar;
redrawFlag = REDRAW_TEXT;
- } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_FIX == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsItems.KEY_FIX == _buttonValue) {
mode = ITEMMODE_REPAIR;
c = startingChar;
redrawFlag = REDRAW_TEXT;
}
} else if (ITEMMODE_CHAR_INFO == mode) {
- if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_EQUIP == _buttonValue) {
+ if (Res.KeyConstants.DialogsItems.KEY_EQUIP == _buttonValue) {
if (category != CATEGORY_MISC)
actionIndex = 0;
- } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_USE == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsItems.KEY_USE == _buttonValue) {
if (category == CATEGORY_MISC)
actionIndex = 2;
- } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_REM == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsItems.KEY_REM == _buttonValue) {
actionIndex = 1;
- } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_DISC == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsItems.KEY_DISC == _buttonValue) {
actionIndex = 3;
- } else if (Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_QUEST == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsItems.KEY_QUEST == _buttonValue) {
// Quests
Quests::show(_vm);
redrawFlag = REDRAW_FULL;
@@ -475,13 +475,13 @@ void ItemsDialog::loadButtons(ItemsMode mode, Character *&c, ItemCategory catego
clearButtons();
if (mode == ITEMMODE_ENCHANT || mode == ITEMMODE_RECHARGE || mode == ITEMMODE_TO_GOLD) {
// Enchant button list
- addButton(Common::Rect(12, 109, 36, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_WEAPONS, &_iconSprites);
- addButton(Common::Rect(46, 109, 70, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ARMOR, &_iconSprites);
- addButton(Common::Rect(80, 109, 104, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ACCESSORY, &_iconSprites);
- addButton(Common::Rect(114, 109, 138, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_MISC, &_iconSprites);
- addButton(Common::Rect(148, 109, 172, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ENCHANT, &_iconSprites);
+ addButton(Common::Rect(12, 109, 36, 129), Res.KeyConstants.DialogsItems.KEY_WEAPONS, &_iconSprites);
+ addButton(Common::Rect(46, 109, 70, 129), Res.KeyConstants.DialogsItems.KEY_ARMOR, &_iconSprites);
+ addButton(Common::Rect(80, 109, 104, 129), Res.KeyConstants.DialogsItems.KEY_ACCESSORY, &_iconSprites);
+ addButton(Common::Rect(114, 109, 138, 129), Res.KeyConstants.DialogsItems.KEY_MISC, &_iconSprites);
+ addButton(Common::Rect(148, 109, 172, 129), Res.KeyConstants.DialogsItems.KEY_ENCHANT, &_iconSprites);
addButton(Common::Rect(284, 109, 308, 129), Common::KEYCODE_ESCAPE, &_iconSprites);
- addButton(Common::Rect(148, 109, 172, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_USE, &_iconSprites);
+ addButton(Common::Rect(148, 109, 172, 129), Res.KeyConstants.DialogsItems.KEY_USE, &_iconSprites);
addButton(Common::Rect(8, 20, 263, 28), Common::KEYCODE_1);
addButton(Common::Rect(8, 29, 263, 37), Common::KEYCODE_2);
addButton(Common::Rect(8, 38, 263, 46), Common::KEYCODE_3);
@@ -494,14 +494,14 @@ void ItemsDialog::loadButtons(ItemsMode mode, Character *&c, ItemCategory catego
} else {
bool flag = mode == ITEMMODE_BUY || mode == ITEMMODE_SELL || mode == ITEMMODE_IDENTIFY
|| mode == ITEMMODE_REPAIR;
- addButton(Common::Rect(12, 109, 36, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_WEAPONS, &_iconSprites);
- addButton(Common::Rect(46, 109, 70, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ARMOR, &_iconSprites);
- addButton(Common::Rect(80, 109, 104, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ACCESSORY, &_iconSprites);
- addButton(Common::Rect(114, 109, 138, 129), Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_MISC, &_iconSprites);
- addButton(Common::Rect(148, 109, 172, 129), flag ? Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_BUY : Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_EQUIP, &_iconSprites);
- addButton(Common::Rect(182, 109, 206, 129), flag ? Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_SELL : Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_REM, &_iconSprites);
- addButton(Common::Rect(216, 109, 240, 129), flag ? Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_IDENTIFY : Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_DISC, &_iconSprites);
- addButton(Common::Rect(250, 109, 274, 129), flag ? Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_FIX : Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_QUEST, &_iconSprites);
+ addButton(Common::Rect(12, 109, 36, 129), Res.KeyConstants.DialogsItems.KEY_WEAPONS, &_iconSprites);
+ addButton(Common::Rect(46, 109, 70, 129), Res.KeyConstants.DialogsItems.KEY_ARMOR, &_iconSprites);
+ addButton(Common::Rect(80, 109, 104, 129), Res.KeyConstants.DialogsItems.KEY_ACCESSORY, &_iconSprites);
+ addButton(Common::Rect(114, 109, 138, 129), Res.KeyConstants.DialogsItems.KEY_MISC, &_iconSprites);
+ addButton(Common::Rect(148, 109, 172, 129), flag ? Res.KeyConstants.DialogsItems.KEY_BUY : Res.KeyConstants.DialogsItems.KEY_EQUIP, &_iconSprites);
+ addButton(Common::Rect(182, 109, 206, 129), flag ? Res.KeyConstants.DialogsItems.KEY_SELL : Res.KeyConstants.DialogsItems.KEY_REM, &_iconSprites);
+ addButton(Common::Rect(216, 109, 240, 129), flag ? Res.KeyConstants.DialogsItems.KEY_IDENTIFY : Res.KeyConstants.DialogsItems.KEY_DISC, &_iconSprites);
+ addButton(Common::Rect(250, 109, 274, 129), flag ? Res.KeyConstants.DialogsItems.KEY_FIX : Res.KeyConstants.DialogsItems.KEY_QUEST, &_iconSprites);
addButton(Common::Rect(284, 109, 308, 129), Common::KEYCODE_ESCAPE, &_iconSprites);
addButton(Common::Rect(8, 20, 263, 28), Common::KEYCODE_1);
addButton(Common::Rect(8, 29, 263, 37), Common::KEYCODE_2);
@@ -517,7 +517,7 @@ void ItemsDialog::loadButtons(ItemsMode mode, Character *&c, ItemCategory catego
if (mode == ITEMMODE_CHAR_INFO && category == CATEGORY_MISC) {
_buttons[4].setFrame(18);
- _buttons[4]._value = Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_USE;
+ _buttons[4]._value = Res.KeyConstants.DialogsItems.KEY_USE;
}
if (mode != ITEMMODE_ENCHANT && mode != ITEMMODE_RECHARGE && mode != ITEMMODE_TO_GOLD) {
_buttons[5].setFrame(10);
@@ -548,11 +548,11 @@ void ItemsDialog::loadButtons(ItemsMode mode, Character *&c, ItemCategory catego
_buttons[4]._bounds.moveTo(148, _buttons[4]._bounds.top);
_buttons[9]._draw = false;
} else if (mode == ITEMMODE_RECHARGE) {
- _buttons[4]._value = Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_RECHRG;
+ _buttons[4]._value = Res.KeyConstants.DialogsItems.KEY_RECHRG;
} else if (mode == ITEMMODE_ENCHANT) {
- _buttons[4]._value = Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ENCHANT;
+ _buttons[4]._value = Res.KeyConstants.DialogsItems.KEY_ENCHANT;
} else if (mode == ITEMMODE_TO_GOLD) {
- _buttons[4]._value = Res.KEY_CONSTANTS.DIALOGS_ITEMS.KEY_GOLD;
+ _buttons[4]._value = Res.KeyConstants.DialogsItems.KEY_GOLD;
}
}
diff --git a/engines/xeen/dialogs/dialogs_party.cpp b/engines/xeen/dialogs/dialogs_party.cpp
index 0267dcdd23..6b76ef236a 100644
--- a/engines/xeen/dialogs/dialogs_party.cpp
+++ b/engines/xeen/dialogs/dialogs_party.cpp
@@ -159,7 +159,7 @@ void PartyDialog::execute() {
startingCharChanged(startingChar);
}
- } else if (Res.KEY_CONSTANTS.DIALOGS_PARTY.KEY_EXIT == _buttonValue ||
+ } else if (Res.KeyConstants.DialogsParty.KEY_EXIT == _buttonValue ||
Common::KEYCODE_ESCAPE == _buttonValue ||
Common::KEYCODE_SPACE == _buttonValue) {
if (party._activeParty.size() == 0) {
@@ -184,7 +184,7 @@ void PartyDialog::execute() {
return;
}
- } else if (Res.KEY_CONSTANTS.DIALOGS_PARTY.KEY_CREATE == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsParty.KEY_CREATE == _buttonValue) {
// Create
if (_charList.size() == XEEN_TOTAL_CHARACTERS) {
ErrorScroll::show(_vm, Res.YOUR_ROSTER_IS_FULL);
@@ -211,7 +211,7 @@ void PartyDialog::execute() {
breakFlag = true;
}
- } else if (Res.KEY_CONSTANTS.DIALOGS_PARTY.KEY_DELETE == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsParty.KEY_DELETE == _buttonValue) {
// Delete character
if (_charList.size() > 0) {
int charButtonValue = selectCharacter(true, startingChar);
@@ -243,7 +243,7 @@ void PartyDialog::execute() {
}
}
- } else if (Res.KEY_CONSTANTS.DIALOGS_PARTY.KEY_REMOVE == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsParty.KEY_REMOVE == _buttonValue) {
// Remove character
if (party._activeParty.size() > 0) {
int charButtonValue = selectCharacter(false, startingChar);
@@ -277,10 +277,10 @@ void PartyDialog::loadButtons() {
addButton(Common::Rect(16, 100, 40, 120), Common::KEYCODE_UP, &_uiSprites);
addButton(Common::Rect(52, 100, 76, 120), Common::KEYCODE_DOWN, &_uiSprites);
- addButton(Common::Rect(87, 100, 111, 120), Res.KEY_CONSTANTS.DIALOGS_PARTY.KEY_DELETE, &_uiSprites);
- addButton(Common::Rect(122, 100, 146, 120), Res.KEY_CONSTANTS.DIALOGS_PARTY.KEY_REMOVE, &_uiSprites);
- addButton(Common::Rect(157, 100, 181, 120), Res.KEY_CONSTANTS.DIALOGS_PARTY.KEY_CREATE, &_uiSprites);
- addButton(Common::Rect(192, 100, 216, 120), Res.KEY_CONSTANTS.DIALOGS_PARTY.KEY_EXIT, &_uiSprites);
+ addButton(Common::Rect(87, 100, 111, 120), Res.KeyConstants.DialogsParty.KEY_DELETE, &_uiSprites);
+ addButton(Common::Rect(122, 100, 146, 120), Res.KeyConstants.DialogsParty.KEY_REMOVE, &_uiSprites);
+ addButton(Common::Rect(157, 100, 181, 120), Res.KeyConstants.DialogsParty.KEY_CREATE, &_uiSprites);
+ addButton(Common::Rect(192, 100, 216, 120), Res.KeyConstants.DialogsParty.KEY_EXIT, &_uiSprites);
addButton(Common::Rect(0, 0, 0, 0), Common::KEYCODE_ESCAPE);
}
diff --git a/engines/xeen/dialogs/dialogs_quests.cpp b/engines/xeen/dialogs/dialogs_quests.cpp
index 459e9868b7..7c6feb6e90 100644
--- a/engines/xeen/dialogs/dialogs_quests.cpp
+++ b/engines/xeen/dialogs/dialogs_quests.cpp
@@ -238,13 +238,13 @@ void Quests::execute() {
Common::KEYCODE_KP2 == _buttonValue ||
Common::KEYCODE_d == _buttonValue) {
topRow = CLIP(topRow + 1, 0, MAX(count - 1, 0));
- } else if (Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_AUTO_NOTES == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsQuests.KEY_AUTO_NOTES == _buttonValue) {
mode = AUTO_NOTES;
topRow = 0;
- } else if (Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_QUEST_ITEMS == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsQuests.KEY_QUEST_ITEMS == _buttonValue) {
mode = QUEST_ITEMS;
topRow = 0;
- } else if (Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_CURRENT_QUESTS == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsQuests.KEY_CURRENT_QUESTS == _buttonValue) {
mode = CURRENT_QUESTS;
topRow = 0;
}
@@ -260,9 +260,9 @@ void Quests::execute() {
void Quests::addButtons() {
_iconSprites.load("quest.icn");
- addButton(Common::Rect(12, 109, 36, 129), Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_QUEST_ITEMS, &_iconSprites);
- addButton(Common::Rect(80, 109, 104, 129), Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_CURRENT_QUESTS, &_iconSprites);
- addButton(Common::Rect(148, 109, 172, 129), Res.KEY_CONSTANTS.DIALOGS_QUESTS.KEY_AUTO_NOTES, &_iconSprites);
+ addButton(Common::Rect(12, 109, 36, 129), Res.KeyConstants.DialogsQuests.KEY_QUEST_ITEMS, &_iconSprites);
+ addButton(Common::Rect(80, 109, 104, 129), Res.KeyConstants.DialogsQuests.KEY_CURRENT_QUESTS, &_iconSprites);
+ addButton(Common::Rect(148, 109, 172, 129), Res.KeyConstants.DialogsQuests.KEY_AUTO_NOTES, &_iconSprites);
addButton(Common::Rect(216, 109, 240, 129), Common::KEYCODE_UP, &_iconSprites);
addButton(Common::Rect(250, 109, 274, 129), Common::KEYCODE_DOWN, &_iconSprites);
diff --git a/engines/xeen/dialogs/dialogs_quick_fight.cpp b/engines/xeen/dialogs/dialogs_quick_fight.cpp
index 1fec1621b9..ba9dc4956e 100644
--- a/engines/xeen/dialogs/dialogs_quick_fight.cpp
+++ b/engines/xeen/dialogs/dialogs_quick_fight.cpp
@@ -79,7 +79,7 @@ void QuickFight::execute() {
intf.highlightChar(charIdx);
}
} else if (Common::KEYCODE_n == _buttonValue ||
- Res.KEY_CONSTANTS.DIALOGS_QUICK_FIGHT.KEY_NEXT == _buttonValue) {
+ Res.KeyConstants.DialogsQuickFight.KEY_NEXT == _buttonValue) {
_currentChar->_quickOption = (QuickAction)(((int)_currentChar->_quickOption + 1) % 4);
}
} while (_buttonValue != Common::KEYCODE_RETURN && _buttonValue != Common::KEYCODE_ESCAPE);
@@ -92,7 +92,7 @@ void QuickFight::loadButtons() {
_icons.load("train.icn");
addButton(Common::Rect(281, 108, 305, 128), Common::KEYCODE_ESCAPE, &_icons);
- addButton(Common::Rect(242, 108, 266, 128), Res.KEY_CONSTANTS.DIALOGS_QUICK_FIGHT.KEY_NEXT, &_icons);
+ addButton(Common::Rect(242, 108, 266, 128), Res.KeyConstants.DialogsQuickFight.KEY_NEXT, &_icons);
}
} // End of namespace Xeen
diff --git a/engines/xeen/dialogs/dialogs_quick_ref.cpp b/engines/xeen/dialogs/dialogs_quick_ref.cpp
index 096be16fd2..54e0315520 100644
--- a/engines/xeen/dialogs/dialogs_quick_ref.cpp
+++ b/engines/xeen/dialogs/dialogs_quick_ref.cpp
@@ -63,7 +63,7 @@ void QuickReferenceDialog::execute() {
party._activeParty.size()); ++idx) {
Character &c = combat._globalCombat == 2 ? *combat._combatParty[idx] :
party._activeParty[idx];
- const char **_tmpConditions = c._sex == FEMALE ? (const char **)Res.CONDITION_NAMES_F : (const char **)Res.CONDITION_NAMES_M;
+ const char **tmpConditions = c._sex == FEMALE ? (const char **)Res.CONDITION_NAMES_F : (const char **)Res.CONDITION_NAMES_M;
Condition condition = c.worstCondition();
lines[idx] = Common::String::format(Res.QUICK_REF_LINE,
idx * 10 + 24, idx + 1, c._name.c_str(),
@@ -73,8 +73,8 @@ void QuickReferenceDialog::execute() {
c.statColor(c._currentSp, c.getMaxSP()), c._currentSp,
c.statColor(c.getArmorClass(), c.getArmorClass(true)), c.getArmorClass(),
Res.CONDITION_COLORS[condition],
- _tmpConditions[condition][0], _tmpConditions[condition][1],
- _tmpConditions[condition][2], _tmpConditions[condition][3]
+ tmpConditions[condition][0], tmpConditions[condition][1],
+ tmpConditions[condition][2], tmpConditions[condition][3]
);
}
diff --git a/engines/xeen/dialogs/dialogs_spells.cpp b/engines/xeen/dialogs/dialogs_spells.cpp
index 3da87d428e..4f6819e724 100644
--- a/engines/xeen/dialogs/dialogs_spells.cpp
+++ b/engines/xeen/dialogs/dialogs_spells.cpp
@@ -528,11 +528,11 @@ int CastSpell::execute(Character *&c) {
} else if (Common::KEYCODE_ESCAPE == _buttonValue) {
spellId = -1;
- } else if (Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_CAST == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsSpells.KEY_CAST == _buttonValue) {
// Cast spell - return the selected spell Id to be cast
if (c->_currentSpell != -1 && !c->noActions())
_buttonValue = Common::KEYCODE_ESCAPE;
- } else if (Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_NEW == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsSpells.KEY_NEW == _buttonValue) {
// Select new spell
_vm->_mode = (Mode)_oldMode;
c = SpellsDialog::show(_vm, this, c, SPELLS_DIALOG_SELECT);
@@ -548,8 +548,8 @@ int CastSpell::execute(Character *&c) {
void CastSpell::loadButtons() {
_iconSprites.load("cast.icn");
- addButton(Common::Rect(234, 108, 259, 128), Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_CAST, &_iconSprites);
- addButton(Common::Rect(261, 108, 285, 128), Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_NEW, &_iconSprites);
+ addButton(Common::Rect(234, 108, 259, 128), Res.KeyConstants.DialogsSpells.KEY_CAST, &_iconSprites);
+ addButton(Common::Rect(261, 108, 285, 128), Res.KeyConstants.DialogsSpells.KEY_NEW, &_iconSprites);
addButton(Common::Rect(288, 108, 312, 128), Common::KEYCODE_ESCAPE, &_iconSprites);
addPartyButtons(_vm);
@@ -680,13 +680,13 @@ int SelectElement::execute(int spellId) {
if (Common::KEYCODE_ESCAPE == _buttonValue) {
result = -1;
spells.addSpellCost(*combat._oldCharacter, spellId);
- } else if (Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_ACID == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsSpells.KEY_ACID == _buttonValue) {
result = DT_POISON;
- } else if (Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_COLD == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsSpells.KEY_COLD == _buttonValue) {
result = DT_COLD;
- } else if (Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_ELEC == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsSpells.KEY_ELEC == _buttonValue) {
result = DT_ELECTRICAL;
- } else if (Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_FIRE == _buttonValue) {
+ } else if (Res.KeyConstants.DialogsSpells.KEY_FIRE == _buttonValue) {
result = DT_FIRE;
}
}
@@ -699,10 +699,10 @@ int SelectElement::execute(int spellId) {
void SelectElement::loadButtons() {
_iconSprites.load("element.icn");
- addButton(Common::Rect(60, 92, 84, 112), Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_FIRE, &_iconSprites);
- addButton(Common::Rect(90, 92, 114, 112), Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_ELEC, &_iconSprites);
- addButton(Common::Rect(120, 92, 144, 112), Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_COLD, &_iconSprites);
- addButton(Common::Rect(150, 92, 174, 112), Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_ACID, &_iconSprites);
+ addButton(Common::Rect(60, 92, 84, 112), Res.KeyConstants.DialogsSpells.KEY_FIRE, &_iconSprites);
+ addButton(Common::Rect(90, 92, 114, 112), Res.KeyConstants.DialogsSpells.KEY_ELEC, &_iconSprites);
+ addButton(Common::Rect(120, 92, 144, 112), Res.KeyConstants.DialogsSpells.KEY_COLD, &_iconSprites);
+ addButton(Common::Rect(150, 92, 174, 112), Res.KeyConstants.DialogsSpells.KEY_ACID, &_iconSprites);
}
/*------------------------------------------------------------------------*/
@@ -796,7 +796,7 @@ bool LloydsBeacon::execute() {
} while (!_buttonValue && events.timeElapsed() < 1);
} while (!_buttonValue);
- if (Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_RETURN == _buttonValue) {
+ if (Res.KeyConstants.DialogsSpells.KEY_RETURN == _buttonValue) {
if (!ccNum && c._lloydMap >= XEEN_CASTLE1 && c._lloydMap <= XEEN_CASTLE4 && party._cloudsCompleted) {
// Xeen's Castle has already been destroyed
result = false;
@@ -811,7 +811,7 @@ bool LloydsBeacon::execute() {
}
_buttonValue = Common::KEYCODE_ESCAPE;
- } else if (Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_SET == _buttonValue ||
+ } else if (Res.KeyConstants.DialogsSpells.KEY_SET == _buttonValue ||
Common::KEYCODE_s == _buttonValue) {
sound.playFX(20);
c._lloydMap = party._mazeId;
@@ -830,8 +830,8 @@ bool LloydsBeacon::execute() {
void LloydsBeacon::loadButtons() {
_iconSprites.load("lloyds.icn");
- addButton(Common::Rect(281, 108, 305, 128), Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_RETURN, &_iconSprites);
- addButton(Common::Rect(242, 108, 266, 128), Res.KEY_CONSTANTS.DIALOGS_SPELLS.KEY_SET, &_iconSprites);
+ addButton(Common::Rect(281, 108, 305, 128), Res.KeyConstants.DialogsSpells.KEY_RETURN, &_iconSprites);
+ addButton(Common::Rect(242, 108, 266, 128), Res.KeyConstants.DialogsSpells.KEY_SET, &_iconSprites);
}
/*------------------------------------------------------------------------*/
diff --git a/engines/xeen/locations.cpp b/engines/xeen/locations.cpp
index 35d5c94473..d565eedaec 100644
--- a/engines/xeen/locations.cpp
+++ b/engines/xeen/locations.cpp
@@ -303,8 +303,8 @@ int BaseLocation::wait() {
BankLocation::BankLocation() : BaseLocation(BANK) {
_icons1.load("bank.icn");
_icons2.load("bank2.icn");
- addButton(Common::Rect(234, 108, 259, 128), Res.KEY_CONSTANTS.LOCATIONS.KEY_DEP, &_icons1);
- addButton(Common::Rect(261, 108, 285, 128), Res.KEY_CONSTANTS.LOCATIONS.KEY_WITH, &_icons1);
+ addButton(Common::Rect(234, 108, 259, 128), Res.KeyConstants.Locations.KEY_DEP, &_icons1);
+ addButton(Common::Rect(261, 108, 285, 128), Res.KeyConstants.Locations.KEY_WITH, &_icons1);
addButton(Common::Rect(288, 108, 312, 128), Common::KEYCODE_ESCAPE, &_icons1);
_animFrame = 1;
@@ -328,9 +328,9 @@ void BankLocation::drawBackground() {
}
Character *BankLocation::doOptions(Character *c) {
- if (_buttonValue == Res.KEY_CONSTANTS.LOCATIONS.KEY_DEP)
+ if (_buttonValue == Res.KeyConstants.Locations.KEY_DEP)
_buttonValue = (int)WHERE_PARTY;
- else if (_buttonValue == Res.KEY_CONSTANTS.LOCATIONS.KEY_WITH)
+ else if (_buttonValue == Res.KeyConstants.Locations.KEY_WITH)
_buttonValue = (int)WHERE_BANK;
else
return c;
@@ -358,11 +358,11 @@ void BankLocation::depositWithdrawl(PartyBank whereId) {
if (g_vm->getLanguage() == Common::RU_RUS) {
// In RU version sprites in wrong order
- _buttons[1]._value = Res.KEY_CONSTANTS.LOCATIONS.KEY_GOLD;
- _buttons[0]._value = Res.KEY_CONSTANTS.LOCATIONS.KEY_GEMS;
+ _buttons[1]._value = Res.KeyConstants.Locations.KEY_GOLD;
+ _buttons[0]._value = Res.KeyConstants.Locations.KEY_GEMS;
} else {
- _buttons[0]._value = Res.KEY_CONSTANTS.LOCATIONS.KEY_GOLD;
- _buttons[1]._value = Res.KEY_CONSTANTS.LOCATIONS.KEY_GEMS;
+ _buttons[0]._value = Res.KeyConstants.Locations.KEY_GOLD;
+ _buttons[1]._value = Res.KeyConstants.Locations.KEY_GEMS;
}
_buttons[2]._value = Common::KEYCODE_ESCAPE;
@@ -382,9 +382,9 @@ void BankLocation::depositWithdrawl(PartyBank whereId) {
do {
wait();
- if (_buttonValue == Res.KEY_CONSTANTS.LOCATIONS.KEY_GOLD) {
+ if (_buttonValue == Res.KeyConstants.Locations.KEY_GOLD) {
consType = CONS_GOLD;
- } else if (_buttonValue == Res.KEY_CONSTANTS.LOCATIONS.KEY_GEMS) {
+ } else if (_buttonValue == Res.KeyConstants.Locations.KEY_GEMS) {
consType = CONS_GEMS;
} else if (_buttonValue == Common::KEYCODE_ESCAPE) {
break;
@@ -439,8 +439,8 @@ void BankLocation::depositWithdrawl(PartyBank whereId) {
for (uint idx = 0; idx < _buttons.size(); ++idx)
_buttons[idx]._sprites = &_icons1;
- _buttons[0]._value = Res.KEY_CONSTANTS.LOCATIONS.KEY_DEP;
- _buttons[1]._value = Res.KEY_CONSTANTS.LOCATIONS.KEY_WITH;
+ _buttons[0]._value = Res.KeyConstants.Locations.KEY_DEP;
+ _buttons[1]._value = Res.KeyConstants.Locations.KEY_WITH;
_buttons[2]._value = Common::KEYCODE_ESCAPE;
w.close();
@@ -453,7 +453,7 @@ BlacksmithLocation::BlacksmithLocation() : BaseLocation(BLACKSMITH) {
_icons1.load("esc.icn");
addButton(Common::Rect(261, 108, 285, 128), Common::KEYCODE_ESCAPE, &_icons1);
addButton(Common::Rect(234, 54, 308, 62), 0);
- addButton(Common::Rect(234, 64, 308, 72), Res.KEY_CONSTANTS.LOCATIONS.KEY_BROWSE);
+ addButton(Common::Rect(234, 64, 308, 72), Res.KeyConstants.Locations.KEY_BROWSE);
addButton(Common::Rect(234, 74, 308, 82), 0);
addButton(Common::Rect(234, 84, 308, 92), 0);
@@ -477,7 +477,7 @@ Character *BlacksmithLocation::doOptions(Character *c) {
c = &party._activeParty[_buttonValue];
intf.highlightChar(_buttonValue);
}
- } else if (_buttonValue == Res.KEY_CONSTANTS.LOCATIONS.KEY_BROWSE) {
+ } else if (_buttonValue == Res.KeyConstants.Locations.KEY_BROWSE) {
c = ItemsDialog::show(_vm, c, ITEMMODE_BUY);
_buttonValue = 0;
}
@@ -501,8 +501,8 @@ GuildLocation::GuildLocation() : BaseLocation(GUILD) {
_icons1.load("esc.icn");
addButton(Common::Rect(261, 108, 285, 128), Common::KEYCODE_ESCAPE, &_icons1);
addButton(Common::Rect(234, 54, 308, 62), 0);
- addButton(Common::Rect(234, 64, 308, 72), Res.KEY_CONSTANTS.LOCATIONS.KEY_BUY_SPELLS);
- addButton(Common::Rect(234, 74, 308, 82), Res.KEY_CONSTANTS.LOCATIONS.KEY_SPELL_INFO);
+ addButton(Common::Rect(234, 64, 308, 72), Res.KeyConstants.Locations.KEY_BUY_SPELLS);
+ addButton(Common::Rect(234, 74, 308, 82), Res.KeyConstants.Locations.KEY_SPELL_INFO);
addButton(Common::Rect(234, 84, 308, 92), 0);
g_vm->_mode = MODE_INTERACTIVE7;
@@ -536,11 +536,11 @@ Character *GuildLocation::doOptions(Character *c) {
sound.playSound(_ccNum ? "skull1.voc" : "guild11.voc", 1);
}
}
- } else if (_buttonValue == Res.KEY_CONSTANTS.LOCATIONS.KEY_SPELL_INFO) {
+ } else if (_buttonValue == Res.KeyConstants.Locations.KEY_SPELL_INFO) {
if (c->guildMember())
c = SpellsDialog::show(_vm, this, c, SPELLS_DIALOG_INFO);
_buttonValue = 0;
- } else if (_buttonValue == Res.KEY_CONSTANTS.LOCATIONS.KEY_BUY_SPELLS) {
+ } else if (_buttonValue == Res.KeyConstants.Locations.KEY_BUY_SPELLS) {
if (!c->noActions()) {
if (c->guildMember())
c = SpellsDialog::show(_vm, this, c, SPELLS_DIALOG_BUY);
@@ -562,11 +562,11 @@ TavernLocation::TavernLocation() : BaseLocation(TAVERN) {
loadStrings("tavern.bin");
_icons1.load("tavern.icn");
addButton(Common::Rect(281, 108, 305, 128), Common::KEYCODE_ESCAPE, &_icons1);
- addButton(Common::Rect(242, 108, 266, 128), Res.KEY_CONSTANTS.LOCATIONS.KEY_SIGN_IN, &_icons1);
- addButton(Common::Rect(234, 54, 308, 62), Res.KEY_CONSTANTS.LOCATIONS.KEY_DRINK);
- addButton(Common::Rect(234, 64, 308, 72), Res.KEY_CONSTANTS.LOCATIONS.KEY_FOOD);
- addButton(Common::Rect(234, 74, 308, 82), Res.KEY_CONSTANTS.LOCATIONS.KEY_TIP);
- addButton(Common::Rect(234, 84, 308, 92), Res.KEY_CONSTANTS.LOCATIONS.KEY_RUMORS);
+ addButton(Common::Rect(242, 108, 266, 128), Res.KeyConstants.Locations.KEY_SIGN_IN, &_icons1);
+ addButton(Common::Rect(234, 54, 308, 62), Res.KeyConstants.Locations.KEY_DRINK);
+ addButton(Common::Rect(234, 64, 308, 72), Res.KeyConstants.Locations.KEY_FOOD);
+ addButton(Common::Rect(234, 74, 308, 82), Res.KeyConstants.Locations.KEY_TIP);
+ addButton(Common::Rect(234, 84, 308, 92), Res.KeyConstants.Locations.KEY_RUMORS);
g_vm->_mode = MODE_INTERACTIVE7;
_vocName = _ccNum ? "hello1.voc" : "hello.voc";
@@ -601,7 +601,7 @@ Character *TavernLocation::doOptions(Character *c) {
intf.highlightChar(_buttonValue);
_v21 = 0;
}
- } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_DRINK == _buttonValue) {
+ } else if (Res.KeyConstants.Locations.KEY_DRINK == _buttonValue) {
// Drink
if (!c->noActions()) {
if (party.subtract(CONS_GOLD, 1, WHERE_PARTY, WT_LOC_WAIT)) {
@@ -624,7 +624,7 @@ Character *TavernLocation::doOptions(Character *c) {
wait();
}
}
- } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_FOOD == _buttonValue) {
+ } else if (Res.KeyConstants.Locations.KEY_FOOD == _buttonValue) {
// Food
if (party._mazeId == (_ccNum ? 29 : 28)) {
_v22 = party._activeParty.size() * 15;
@@ -671,7 +671,7 @@ Character *TavernLocation::doOptions(Character *c) {
windows[12].close();
windows[10].open();
_buttonValue = 0;
- } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_RUMORS == _buttonValue) {
+ } else if (Res.KeyConstants.Locations.KEY_RUMORS == _buttonValue) {
// Rumors
if (party._mazeId == (_ccNum ? 29 : 28)) {
idx = 0;
@@ -690,7 +690,7 @@ Character *TavernLocation::doOptions(Character *c) {
wait();
w.close();
- } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_SIGN_IN == _buttonValue) {
+ } else if (Res.KeyConstants.Locations.KEY_SIGN_IN == _buttonValue) {
// Sign In
// Set location and position for afterwards
if (g_vm->getGameID() == GType_Swords) {
@@ -753,7 +753,7 @@ Character *TavernLocation::doOptions(Character *c) {
if (party._mazeId != 0)
map.load(party._mazeId);
_exitToUi = true;
- } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_TIP == _buttonValue) {
+ } else if (Res.KeyConstants.Locations.KEY_TIP == _buttonValue) {
if (!c->noActions()) {
if (!_v21) {
windows[10].writeString(Common::String::format(Res.TAVERN_TEXT,
@@ -832,9 +832,9 @@ TempleLocation::TempleLocation() : BaseLocation(TEMPLE) {
_icons1.load("esc.icn");
addButton(Common::Rect(261, 108, 285, 128), Common::KEYCODE_ESCAPE, &_icons1);
- addButton(Common::Rect(234, 54, 308, 62), Res.KEY_CONSTANTS.LOCATIONS.KEY_HEAL);
- addButton(Common::Rect(234, 64, 308, 72), Res.KEY_CONSTANTS.LOCATIONS.KEY_DONATION);
- addButton(Common::Rect(234, 74, 308, 82), Res.KEY_CONSTANTS.LOCATIONS.KEY_UNCURSE);
+ addButton(Common::Rect(234, 54, 308, 62), Res.KeyConstants.Locations.KEY_HEAL);
+ addButton(Common::Rect(234, 64, 308, 72), Res.KeyConstants.Locations.KEY_DONATION);
+ addButton(Common::Rect(234, 74, 308, 82), Res.KeyConstants.Locations.KEY_UNCURSE);
addButton(Common::Rect(234, 84, 308, 92), 0);
_vocName = _ccNum ? "help2.voc" : "maywe2.voc";
@@ -921,7 +921,7 @@ Character *TempleLocation::doOptions(Character *c) {
intf.highlightChar(_buttonValue);
_dayOfWeek = 0;
}
- } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_DONATION == _buttonValue) {
+ } else if (Res.KeyConstants.Locations.KEY_DONATION == _buttonValue) {
if (_donation && party.subtract(CONS_GOLD, _donation, WHERE_PARTY, WT_LOC_WAIT)) {
sound.stopSound();
sound.playSound("coina.voc", 1);
@@ -944,7 +944,7 @@ Character *TempleLocation::doOptions(Character *c) {
_donation = 0;
}
}
- } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_HEAL == _buttonValue) {
+ } else if (Res.KeyConstants.Locations.KEY_HEAL == _buttonValue) {
if (_healCost && party.subtract(CONS_GOLD, _healCost, WHERE_PARTY, WT_LOC_WAIT)) {
c->_magicResistence._temporary = 0;
c->_energyResistence._temporary = 0;
@@ -969,7 +969,7 @@ Character *TempleLocation::doOptions(Character *c) {
sound.stopSound();
sound.playSound("ahh.voc", 1);
}
- } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_UNCURSE == _buttonValue) {
+ } else if (Res.KeyConstants.Locations.KEY_UNCURSE == _buttonValue) {
if (_uncurseCost && party.subtract(CONS_GOLD, _uncurseCost, WHERE_PARTY, WT_LOC_WAIT)) {
c->_items.curseUncurse(false);
c->_conditions[CURSED] = 0;
@@ -992,7 +992,7 @@ TrainingLocation::TrainingLocation() : BaseLocation(TRAINING) {
_icons1.load("train.icn");
addButton(Common::Rect(281, 108, 305, 128), Common::KEYCODE_ESCAPE, &_icons1);
- addButton(Common::Rect(242, 108, 266, 128), Res.KEY_CONSTANTS.LOCATIONS.KEY_TRAIN, &_icons1);
+ addButton(Common::Rect(242, 108, 266, 128), Res.KeyConstants.Locations.KEY_TRAIN, &_icons1);
_vocName = _ccNum ? "youtrn1.voc" : "training.voc";
}
@@ -1073,7 +1073,7 @@ Character *TrainingLocation::doOptions(Character *c) {
c = &party._activeParty[_buttonValue];
intf.highlightChar(_buttonValue);
}
- } else if (Res.KEY_CONSTANTS.LOCATIONS.KEY_TRAIN == _buttonValue) {
+ } else if (Res.KeyConstants.Locations.KEY_TRAIN == _buttonValue) {
if (_experienceToNextLevel) {
sound.stopSound();
_drawFrameIndex = 0;
diff --git a/engines/xeen/party.cpp b/engines/xeen/party.cpp
index 55d13af5a8..e3184d9b7b 100644
--- a/engines/xeen/party.cpp
+++ b/engines/xeen/party.cpp
@@ -665,8 +665,8 @@ const char *Party::getConsumableForm(ConsumableType consumableId) {
switch (consumableId) {
case CONS_GOLD: return Res.CONSUMABLE_GOLD_FORMS[0];
case CONS_GEMS: return Res.CONSUMABLE_GEM_FORMS[0];
+ default: return Res.CONSUMABLE_NAMES[consumableId];
}
- return Res.CONSUMABLE_NAMES[consumableId];
}
void Party::notEnough(ConsumableType consumableId, PartyBank whereId, bool mode, MessageWaitType wait) {
@@ -821,15 +821,10 @@ bool Party::arePacksFull() const {
}
const char *Party::getFoundForm(const Character &c) {
- if (Common::RU_RUS == g_vm->getLanguage()) {
- switch (c._sex) {
- case MALE:
- return Res.FOUND[0];
- case FEMALE:
- return Res.FOUND[1];
- }
- }
- return Res.FOUND[0];
+ if (Common::RU_RUS == g_vm->getLanguage())
+ return Res.FOUND[FEMALE == c._sex ? 1 : 0];
+ else
+ return Res.FOUND[0];
}
void Party::giveTreasureToCharacter(Character &c, ItemCategory category, int itemIndex) {
@@ -1483,27 +1478,17 @@ bool Party::giveTake(int takeMode, uint takeVal, int giveMode, uint giveVal, int
}
const char *Party::getPickLockForm(const Character &c) {
- if (Common::RU_RUS == g_vm->getLanguage()) {
- switch (c._sex) {
- case MALE:
- return Res.PICK_FORM[0];
- case FEMALE:
- return Res.PICK_FORM[1];
- }
- }
- return Res.PICK_FORM[0];
+ if (Common::RU_RUS == g_vm->getLanguage())
+ return Res.PICK_FORM[FEMALE == c._sex ? 1 : 0];
+ else
+ return Res.PICK_FORM[0];
}
const char *Party::getUnablePickLockForm(const Character &c) {
- if (Common::RU_RUS == g_vm->getLanguage()) {
- switch (c._sex) {
- case MALE:
- return Res.UNABLE_TO_PICK_FORM[0];
- case FEMALE:
- return Res.UNABLE_TO_PICK_FORM[1];
- }
- }
- return Res.UNABLE_TO_PICK_FORM[0];
+ if (Common::RU_RUS == g_vm->getLanguage())
+ return Res.UNABLE_TO_PICK_FORM[FEMALE == c._sex ? 1 : 0];
+ else
+ return Res.UNABLE_TO_PICK_FORM[0];
}
bool Party::giveExt(int mode1, uint val1, int mode2, uint val2, int mode3, uint val3, int charId) {
diff --git a/engines/xeen/resources.cpp b/engines/xeen/resources.cpp
index 9fbdbb51f5..53d90e2e24 100644
--- a/engines/xeen/resources.cpp
+++ b/engines/xeen/resources.cpp
@@ -421,89 +421,89 @@ void Resources::loadData() {
file.syncString(PHAROAH_ENDING_TEXT2);
ResFile keys("CONSTKEYS_", _buffer, lang);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_ITEM);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_QUICK);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CHAR_INFO.KEY_EXCHANGE);
+ keys.syncNumber(KeyConstants.DialogsCharInfo.KEY_ITEM);
+ keys.syncNumber(KeyConstants.DialogsCharInfo.KEY_QUICK);
+ keys.syncNumber(KeyConstants.DialogsCharInfo.KEY_EXCHANGE);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_FXON);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_MUSICON);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_LOAD);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_SAVE);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_QUIT);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CONTROL_PANEL.KEY_MRWIZARD);
+ keys.syncNumber(KeyConstants.DialogsControlPanel.KEY_FXON);
+ keys.syncNumber(KeyConstants.DialogsControlPanel.KEY_MUSICON);
+ keys.syncNumber(KeyConstants.DialogsControlPanel.KEY_LOAD);
+ keys.syncNumber(KeyConstants.DialogsControlPanel.KEY_SAVE);
+ keys.syncNumber(KeyConstants.DialogsControlPanel.KEY_QUIT);
+ keys.syncNumber(KeyConstants.DialogsControlPanel.KEY_MRWIZARD);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_ROLL);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_CREATE);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_MGT);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_INT);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_PER);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_END);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_SPD);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_ACY);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_CREATE_CHAR.KEY_LCK);
+ keys.syncNumber(KeyConstants.DialogsCreateChar.KEY_ROLL);
+ keys.syncNumber(KeyConstants.DialogsCreateChar.KEY_CREATE);
+ keys.syncNumber(KeyConstants.DialogsCreateChar.KEY_MGT);
+ keys.syncNumber(KeyConstants.DialogsCreateChar.KEY_INT);
+ keys.syncNumber(KeyConstants.DialogsCreateChar.KEY_PER);
+ keys.syncNumber(KeyConstants.DialogsCreateChar.KEY_END);
+ keys.syncNumber(KeyConstants.DialogsCreateChar.KEY_SPD);
+ keys.syncNumber(KeyConstants.DialogsCreateChar.KEY_ACY);
+ keys.syncNumber(KeyConstants.DialogsCreateChar.KEY_LCK);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_DIFFICULTY.KEY_ADVENTURER);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_DIFFICULTY.KEY_WARRIOR);
+ keys.syncNumber(KeyConstants.DialogsDifficulty.KEY_ADVENTURER);
+ keys.syncNumber(KeyConstants.DialogsDifficulty.KEY_WARRIOR);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_WEAPONS);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ARMOR);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ACCESSORY);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_MISC);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_ENCHANT);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_USE);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_BUY);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_SELL);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_IDENTIFY);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_FIX);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_EQUIP);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_REM);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_DISC);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_QUEST);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_RECHRG);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_ITEMS.KEY_GOLD);
+ keys.syncNumber(KeyConstants.DialogsItems.KEY_WEAPONS);
+ keys.syncNumber(KeyConstants.DialogsItems.KEY_ARMOR);
+ keys.syncNumber(KeyConstants.DialogsItems.KEY_ACCESSORY);
+ keys.syncNumber(KeyConstants.DialogsItems.KEY_MISC);
+ keys.syncNumber(KeyConstants.DialogsItems.KEY_ENCHANT);
+ keys.syncNumber(KeyConstants.DialogsItems.KEY_USE);
+ keys.syncNumber(KeyConstants.DialogsItems.KEY_BUY);
+ keys.syncNumber(KeyConstants.DialogsItems.KEY_SELL);
+ keys.syncNumber(KeyConstants.DialogsItems.KEY_IDENTIFY);
+ keys.syncNumber(KeyConstants.DialogsItems.KEY_FIX);
+ keys.syncNumber(KeyConstants.DialogsItems.KEY_EQUIP);
+ keys.syncNumber(KeyConstants.DialogsItems.KEY_REM);
+ keys.syncNumber(KeyConstants.DialogsItems.KEY_DISC);
+ keys.syncNumber(KeyConstants.DialogsItems.KEY_QUEST);
+ keys.syncNumber(KeyConstants.DialogsItems.KEY_RECHRG);
+ keys.syncNumber(KeyConstants.DialogsItems.KEY_GOLD);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_PARTY.KEY_DELETE);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_PARTY.KEY_REMOVE);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_PARTY.KEY_CREATE);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_PARTY.KEY_EXIT);
+ keys.syncNumber(KeyConstants.DialogsParty.KEY_DELETE);
+ keys.syncNumber(KeyConstants.DialogsParty.KEY_REMOVE);
+ keys.syncNumber(KeyConstants.DialogsParty.KEY_CREATE);
+ keys.syncNumber(KeyConstants.DialogsParty.KEY_EXIT);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_QUESTS.KEY_QUEST_ITEMS);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_QUESTS.KEY_CURRENT_QUESTS);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_QUESTS.KEY_AUTO_NOTES);
+ keys.syncNumber(KeyConstants.DialogsQuests.KEY_QUEST_ITEMS);
+ keys.syncNumber(KeyConstants.DialogsQuests.KEY_CURRENT_QUESTS);
+ keys.syncNumber(KeyConstants.DialogsQuests.KEY_AUTO_NOTES);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_QUICK_FIGHT.KEY_NEXT);
+ keys.syncNumber(KeyConstants.DialogsQuickFight.KEY_NEXT);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_SPELLS.KEY_CAST);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_SPELLS.KEY_NEW);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_SPELLS.KEY_FIRE);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_SPELLS.KEY_ELEC);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_SPELLS.KEY_COLD);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_SPELLS.KEY_ACID);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_SPELLS.KEY_SET);
- keys.syncNumber(KEY_CONSTANTS.DIALOGS_SPELLS.KEY_RETURN);
+ keys.syncNumber(KeyConstants.DialogsSpells.KEY_CAST);
+ keys.syncNumber(KeyConstants.DialogsSpells.KEY_NEW);
+ keys.syncNumber(KeyConstants.DialogsSpells.KEY_FIRE);
+ keys.syncNumber(KeyConstants.DialogsSpells.KEY_ELEC);
+ keys.syncNumber(KeyConstants.DialogsSpells.KEY_COLD);
+ keys.syncNumber(KeyConstants.DialogsSpells.KEY_ACID);
+ keys.syncNumber(KeyConstants.DialogsSpells.KEY_SET);
+ keys.syncNumber(KeyConstants.DialogsSpells.KEY_RETURN);
- keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_DEP);
- keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_WITH);
- keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_GOLD);
- keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_GEMS);
- keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_BROWSE);
- keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_BUY_SPELLS);
- keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_SPELL_INFO);
- keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_SIGN_IN);
- keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_DRINK);
- keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_FOOD);
- keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_TIP);
- keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_RUMORS);
- keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_HEAL);
- keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_DONATION);
- keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_UNCURSE);
- keys.syncNumber(KEY_CONSTANTS.LOCATIONS.KEY_TRAIN);
+ keys.syncNumber(KeyConstants.Locations.KEY_DEP);
+ keys.syncNumber(KeyConstants.Locations.KEY_WITH);
+ keys.syncNumber(KeyConstants.Locations.KEY_GOLD);
+ keys.syncNumber(KeyConstants.Locations.KEY_GEMS);
+ keys.syncNumber(KeyConstants.Locations.KEY_BROWSE);
+ keys.syncNumber(KeyConstants.Locations.KEY_BUY_SPELLS);
+ keys.syncNumber(KeyConstants.Locations.KEY_SPELL_INFO);
+ keys.syncNumber(KeyConstants.Locations.KEY_SIGN_IN);
+ keys.syncNumber(KeyConstants.Locations.KEY_DRINK);
+ keys.syncNumber(KeyConstants.Locations.KEY_FOOD);
+ keys.syncNumber(KeyConstants.Locations.KEY_TIP);
+ keys.syncNumber(KeyConstants.Locations.KEY_RUMORS);
+ keys.syncNumber(KeyConstants.Locations.KEY_HEAL);
+ keys.syncNumber(KeyConstants.Locations.KEY_DONATION);
+ keys.syncNumber(KeyConstants.Locations.KEY_UNCURSE);
+ keys.syncNumber(KeyConstants.Locations.KEY_TRAIN);
- keys.syncNumber(KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_START_NEW_GAME);
- keys.syncNumber(KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_LOAD_GAME);
- keys.syncNumber(KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_SHOW_CREDITS);
- keys.syncNumber(KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_VIEW_ENDGAME);
+ keys.syncNumber(KeyConstants.CloudsOfXeenMenu.KEY_START_NEW_GAME);
+ keys.syncNumber(KeyConstants.CloudsOfXeenMenu.KEY_LOAD_GAME);
+ keys.syncNumber(KeyConstants.CloudsOfXeenMenu.KEY_SHOW_CREDITS);
+ keys.syncNumber(KeyConstants.CloudsOfXeenMenu.KEY_VIEW_ENDGAME);
}
} // End of namespace Xeen
diff --git a/engines/xeen/resources.h b/engines/xeen/resources.h
index cac2e33b12..a73b98e26b 100644
--- a/engines/xeen/resources.h
+++ b/engines/xeen/resources.h
@@ -481,7 +481,7 @@ public:
int KEY_QUICK;
int KEY_EXCHANGE;
int KEY_ESCAPE;
- } DIALOGS_CHAR_INFO;
+ } DialogsCharInfo;
struct {
int KEY_FXON;
@@ -490,7 +490,7 @@ public:
int KEY_SAVE;
int KEY_QUIT;
int KEY_MRWIZARD;
- } DIALOGS_CONTROL_PANEL;
+ } DialogsControlPanel;
struct {
int KEY_ROLL;
@@ -502,12 +502,12 @@ public:
int KEY_SPD;
int KEY_ACY;
int KEY_LCK;
- } DIALOGS_CREATE_CHAR;
+ } DialogsCreateChar;
struct {
int KEY_ADVENTURER;
int KEY_WARRIOR;
- } DIALOGS_DIFFICULTY;
+ } DialogsDifficulty;
struct {
int KEY_WEAPONS;
@@ -526,24 +526,24 @@ public:
int KEY_QUEST;
int KEY_RECHRG;
int KEY_GOLD;
- } DIALOGS_ITEMS;
+ } DialogsItems;
struct {
int KEY_DELETE;
int KEY_REMOVE;
int KEY_CREATE;
int KEY_EXIT;
- } DIALOGS_PARTY;
+ } DialogsParty;
struct {
int KEY_QUEST_ITEMS;
int KEY_CURRENT_QUESTS;
int KEY_AUTO_NOTES;
- } DIALOGS_QUESTS;
+ } DialogsQuests;
struct {
int KEY_NEXT;
- } DIALOGS_QUICK_FIGHT;
+ } DialogsQuickFight;
struct {
int KEY_CAST;
@@ -554,7 +554,7 @@ public:
int KEY_ACID;
int KEY_SET;
int KEY_RETURN;
- } DIALOGS_SPELLS;
+ } DialogsSpells;
struct {
int KEY_DEP;
@@ -573,15 +573,15 @@ public:
int KEY_DONATION;
int KEY_UNCURSE;
int KEY_TRAIN;
- } LOCATIONS;
+ } Locations;
struct {
int KEY_START_NEW_GAME;
int KEY_LOAD_GAME;
int KEY_SHOW_CREDITS;
int KEY_VIEW_ENDGAME;
- } CLOUDSOFXEENMENU;
- } KEY_CONSTANTS;
+ } CloudsOfXeenMenu;
+ } KeyConstants;
public:
diff --git a/engines/xeen/worldofxeen/worldofxeen_menu.cpp b/engines/xeen/worldofxeen/worldofxeen_menu.cpp
index 7c025b4fbd..bdf86f7f96 100644
--- a/engines/xeen/worldofxeen/worldofxeen_menu.cpp
+++ b/engines/xeen/worldofxeen/worldofxeen_menu.cpp
@@ -262,7 +262,7 @@ bool MainMenuDialog::handleEvents() {
checkEvents(g_vm);
int difficulty;
- if (Res.KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_START_NEW_GAME == _buttonValue) {
+ if (Res.KeyConstants.CloudsOfXeenMenu.KEY_START_NEW_GAME == _buttonValue) {
// Start new game
difficulty = DifficultyDialog::show(g_vm);
if (difficulty == -1)
@@ -272,7 +272,7 @@ bool MainMenuDialog::handleEvents() {
g_vm->_saves->newGame();
g_vm->_party->_difficulty = (Difficulty)difficulty;
g_vm->_gameMode = GMODE_PLAY_GAME;
- } else if (Res.KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_LOAD_GAME == _buttonValue) {
+ } else if (Res.KeyConstants.CloudsOfXeenMenu.KEY_LOAD_GAME == _buttonValue) {
// Load existing game
int ccNum = files._ccNum;
g_vm->_saves->newGame();
@@ -282,7 +282,7 @@ bool MainMenuDialog::handleEvents() {
}
g_vm->_gameMode = GMODE_PLAY_GAME;
- } else if (Res.KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_SHOW_CREDITS == _buttonValue) {
+ } else if (Res.KeyConstants.CloudsOfXeenMenu.KEY_SHOW_CREDITS == _buttonValue) {
// Show credits
CreditsScreen::show(g_vm);
} else if (Common::KEYCODE_ESCAPE == _buttonValue) {
@@ -316,11 +316,11 @@ CloudsMenuDialog::~CloudsMenuDialog() {
void CloudsMenuDialog::loadButtons() {
_buttonSprites.load("start.icn");
- addButton(Common::Rect(93, 53, 227, 73), Res.KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_START_NEW_GAME, &_buttonSprites);
- addButton(Common::Rect(93, 78, 227, 98), Res.KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_LOAD_GAME, &_buttonSprites);
- addButton(Common::Rect(93, 103, 227, 123), Res.KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_SHOW_CREDITS, &_buttonSprites);
+ addButton(Common::Rect(93, 53, 227, 73), Res.KeyConstants.CloudsOfXeenMenu.KEY_START_NEW_GAME, &_buttonSprites);
+ addButton(Common::Rect(93, 78, 227, 98), Res.KeyConstants.CloudsOfXeenMenu.KEY_LOAD_GAME, &_buttonSprites);
+ addButton(Common::Rect(93, 103, 227, 123), Res.KeyConstants.CloudsOfXeenMenu.KEY_SHOW_CREDITS, &_buttonSprites);
if (g_vm->_gameWon[0])
- addButton(Common::Rect(93, 128, 227, 148), Res.KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_VIEW_ENDGAME, &_buttonSprites);
+ addButton(Common::Rect(93, 128, 227, 148), Res.KeyConstants.CloudsOfXeenMenu.KEY_VIEW_ENDGAME, &_buttonSprites);
}
void CloudsMenuDialog::draw() {
@@ -336,7 +336,7 @@ bool CloudsMenuDialog::handleEvents() {
if (MainMenuDialog::handleEvents())
return true;
- if (Res.KEY_CONSTANTS.CLOUDSOFXEENMENU.KEY_VIEW_ENDGAME == _buttonValue) {
+ if (Res.KeyConstants.CloudsOfXeenMenu.KEY_VIEW_ENDGAME == _buttonValue) {
if (g_vm->_gameWon[0]) {
// Close the window
delete this;
Commit: 805f55f1cdb1c54740bdac7d607c5bae578d36df
https://github.com/scummvm/scummvm/commit/805f55f1cdb1c54740bdac7d607c5bae578d36df
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Fixed some localized strings. Fixed intro subtitles.
Fixed optimizer issues
Changed paths:
devtools/create_xeen/ru_constants.h
dists/engine-data/xeen.ccs
engines/xeen/font.cpp
engines/xeen/subtitles.cpp
diff --git a/devtools/create_xeen/ru_constants.h b/devtools/create_xeen/ru_constants.h
index f5916882c5..28e94ad274 100644
--- a/devtools/create_xeen/ru_constants.h
+++ b/devtools/create_xeen/ru_constants.h
@@ -622,8 +622,9 @@ public:
delete[] _statNames;
_statNames = new const char *[16] {
"\x91\xA8\xAB\xA0", "\x88\xAD\xE2\xA5\xAB\xAB\xA5\xAA\xE2", "\x91\xA8\xAB\xA0 \xA4\xE3\xE5\xA0", "\x91\xAB\xAE\xA6\xA5\xAD\xA8\xA5", "\x91\xAA\xAE\xE0\xAE\xE1\xE2\xEC", // "Сила", "ÐнÑеллекÑ", "Сила дÑÑ
а", "Сложение", "СкоÑоÑÑÑ",
- "\x8C\xA5\xE2\xAA\xAE\xE1\xE2\xEC", "\x93\xA4\xA0\xE7\xA0", "\x82\xAE\xA7\xE0\xA0\xE1\xE2", "\x93\xE0\xAE\xA2\xA5\xAD\xEC", "\x8A\xAB\xA0\xE1\xE1 \xA7\xA0\xE9\xA8\xE2\xEB", // "ÐеÑкоÑÑÑ", "УдаÑа", "ÐозÑаÑÑ", "УÑовенÑ", "ÐлаÑÑ Ð·Ð°ÑиÑÑ", "ÐдоÑовÑе", "\x87\xA4\xAE\xE0\xAE\xA2\xEC\xA5",
- "\x8E\xE7\xAA\xA8 \xAC\xA0\xA3\xA8\xA8", "\x93\xE1\xE2\xAE\xA9\xE7\xA8\xA2\xAE\xE1\xE2\xA8", "\x8D\xA0\xA2\xEB\xAA\xA8", "\x8D\xA0\xA3\xE0\xA0\xA4\xEB", "\x8E\xAF\xEB\xE2" // "ÐÑки магии", "УÑÑойÑивоÑÑи", "ÐавÑки", "ÐагÑадÑ", "ÐпÑÑ"
+ "\x8C\xA5\xE2\xAA\xAE\xE1\xE2\xEC", "\x93\xA4\xA0\xE7\xA0", "\x82\xAE\xA7\xE0\xA0\xE1\xE2", "\x93\xE0\xAE\xA2\xA5\xAD\xEC", "\x8A\xAB\xA0\xE1\xE1 \xA7\xA0\xE9\xA8\xE2\xEB", // "ÐеÑкоÑÑÑ", "УдаÑа", "ÐозÑаÑÑ", "УÑовенÑ", "ÐлаÑÑ Ð·Ð°ÑиÑÑ",
+ "\x87\xA4\xAE\xE0\xAE\xA2\xEC\xA5", "\x8E\xE7\xAA\xA8 \xAC\xA0\xA3\xA8\xA8", "\x93\xE1\xE2\xAE\xA9\xE7\xA8\xA2\xAE\xE1\xE2\xA8", "\x8D\xA0\xA2\xEB\xAA\xA8", // "ÐдоÑовÑе", "ÐÑки магии", "УÑÑойÑивоÑÑи", "ÐавÑки",
+ "\x8D\xA0\xA3\xE0\xA0\xA4\xEB", "\x8E\xAF\xEB\xE2" // "ÐагÑадÑ", "ÐпÑÑ"
};
return _statNames;
}
@@ -1948,9 +1949,9 @@ public:
}
const char *CLOUDS_INTRO1() {
- return "\f00\v082\t040\x3"
- "cKing Burlock\v190\t040Peasants\v082\t247"
- "Lord Xeen\v190\t258Xeen's Pet\v179\t150Crodo";
+ return "\f00\v082\t047\x3" // "\f00\v082\t040\x3"
+ "c\x8A\xAE\xE0\xAE\xAB\xEC \x81\xA0\xE0\xAB\xAE\xAA\v190\t040\x8A\xE0\xA5\xE1\xE2\xEC\xEF\xAD\xA5\v082\t247" // "cÐоÑÐ¾Ð»Ñ ÐаÑлок\v190\t040ÐÑеÑÑÑÑне\v082\t247"
+ "\x8B\xAE\xE0\xA4 \x8A\xE1\xA8\xAD\v190\t258\x87\xA2\xA5\xE0\xE3\xE8\xAA\xA0 \x8A\xE1\xA8\xAD\xA0\v179\t150\x8A\xE0\xAE\xA4\xAE"; // "ÐоÑд ÐÑин\v190\t258ÐвеÑÑÑка ÐÑина\v179\t150ÐÑодо"
}
const char *DARKSIDE_ENDING1() {
diff --git a/dists/engine-data/xeen.ccs b/dists/engine-data/xeen.ccs
index 9737dcf0e2..fa36599e49 100644
Binary files a/dists/engine-data/xeen.ccs and b/dists/engine-data/xeen.ccs differ
diff --git a/engines/xeen/font.cpp b/engines/xeen/font.cpp
index bdf15af130..d69d089fec 100644
--- a/engines/xeen/font.cpp
+++ b/engines/xeen/font.cpp
@@ -234,7 +234,7 @@ const char *FontSurface::writeString(const Common::String &s, const Common::Rect
if (c == 6)
c = ' ';
int offset_charW = c < 0 ?
- (_fontReduced ? _fntNonEnReducedWOffset : _fntNonEnWOffset) + (int)(0x80 + c) :
+ (_fontReduced ? _fntNonEnReducedWOffset : _fntNonEnWOffset) + (int)(c & 0x7F) :
(_fontReduced ? _fntEnReducedWOffset : _fntEnWOffset) + (int)c;
byte charSize = _fontData[offset_charW];
@@ -305,8 +305,10 @@ void FontSurface::writeCharacter(char c, const Common::Rect &clipRect) {
}
char FontSurface::getNextChar() {
- if (Common::RU_RUS == lang) return *_displayString++;
- return *_displayString++ & 0x7f;
+ if (Common::RU_RUS == lang)
+ return *_displayString++;
+ else
+ return *_displayString++ & 0x7f;
}
bool FontSurface::getNextCharWidth(int &total) {
@@ -333,7 +335,7 @@ bool FontSurface::getNextCharWidth(int &total) {
getNextChar();
return false;
} else if (Common::RU_RUS == lang && c < 0) {
- total += _fontData[(_fontReduced ? _fntNonEnReducedWOffset : _fntNonEnWOffset) + (char)(0x80 + c)];
+ total += _fontData[(_fontReduced ? _fntNonEnReducedWOffset : _fntNonEnWOffset) + (int)(c & 0x7F)];
return false;
} else {
--_displayString;
@@ -388,8 +390,8 @@ void FontSurface::writeChar(char c, const Common::Rect &clipRect) {
int offset_charData;
int offset_charW;
if (Common::RU_RUS == lang && c < 0) {
- offset_charData = (_fontReduced ? _fntNonEnReducedOffset : _fntNonEnOffset) + (int)(0x80 + c) * 16;
- offset_charW = (_fontReduced ? _fntNonEnReducedWOffset : _fntNonEnWOffset) + (int)(0x80 + c);
+ offset_charData = (_fontReduced ? _fntNonEnReducedOffset : _fntNonEnOffset) + (int)(c & 0x7F) * 16;
+ offset_charW = (_fontReduced ? _fntNonEnReducedWOffset : _fntNonEnWOffset) + (int)(c & 0x7F);
} else {
offset_charData = (_fontReduced ? _fntEnReducedOffset : _fntEnOffset) + (int)c * 16;
offset_charW = (_fontReduced ? _fntEnReducedWOffset : _fntEnWOffset) + (int)c;
diff --git a/engines/xeen/subtitles.cpp b/engines/xeen/subtitles.cpp
index 168ed1d4ea..3cfa475be0 100644
--- a/engines/xeen/subtitles.cpp
+++ b/engines/xeen/subtitles.cpp
@@ -46,12 +46,19 @@ void Subtitles::loadSubtitles() {
// first subtitle into separate lines to allow them to better interleave with the voice
Common::String line = f.readString();
for (;;) {
- const char *lineSep = strstr(line.c_str(), " ");
- if (!lineSep)
- break;
-
- _lines.push_back(Common::String(line.c_str(), lineSep));
- line = Common::String(lineSep + 3);
+ const char *lineSep;
+
+ if (Common::RU_RUS == g_vm->getLanguage()) {
+ lineSep = strstr(line.c_str(), ".");
+ if (!lineSep) break;
+ _lines.push_back(Common::String(line.c_str(), lineSep + 1) + " ");
+ line = Common::String(lineSep + 1);
+ } else {
+ lineSep = strstr(line.c_str(), " ");
+ if (!lineSep) break;
+ _lines.push_back(Common::String(line.c_str(), lineSep));
+ line = Common::String(lineSep + 3);
+ }
while (line.hasPrefix(" "))
line.deleteChar(0);
}
@@ -129,7 +136,11 @@ void Subtitles::show() {
} else {
if (timeElapsed()) {
_lineEnd = (_lineEnd + 1) % _lineSize;
- int count = MAX(_lineEnd - 40, 0);
+ int count;
+ if (Common::RU_RUS == g_vm->getLanguage())
+ count = MAX(_lineEnd - 36, 0);
+ else
+ count = MAX(_lineEnd - 40, 0);
// Get the portion of the line to display
char buffer[1000];
Commit: 4ea20488ccd48b68f5ef1384544090a0c7b3f315
https://github.com/scummvm/scummvm/commit/4ea20488ccd48b68f5ef1384544090a0c7b3f315
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU create_xeen removed const in int return
Changed paths:
devtools/create_xeen/constants.h
devtools/create_xeen/en_constants.h
devtools/create_xeen/ru_constants.h
diff --git a/devtools/create_xeen/constants.h b/devtools/create_xeen/constants.h
index 81752fb17b..2fb1a0dd0a 100644
--- a/devtools/create_xeen/constants.h
+++ b/devtools/create_xeen/constants.h
@@ -1250,128 +1250,128 @@ public:
public:
class DialogsCharInfo {
public:
- virtual const int KEY_ITEM() = 0;
- virtual const int KEY_QUICK() = 0;
- virtual const int KEY_EXCHANGE() = 0;
+ virtual int KEY_ITEM() = 0;
+ virtual int KEY_QUICK() = 0;
+ virtual int KEY_EXCHANGE() = 0;
};
virtual DialogsCharInfo *dialogsCharInfo() = 0;
class DialogsControlPanel {
public:
- virtual const int KEY_FXON() = 0;
- virtual const int KEY_MUSICON() = 0;
- virtual const int KEY_LOAD() = 0;
- virtual const int KEY_SAVE() = 0;
- virtual const int KEY_QUIT() = 0;
- virtual const int KEY_MRWIZARD() = 0;
+ virtual int KEY_FXON() = 0;
+ virtual int KEY_MUSICON() = 0;
+ virtual int KEY_LOAD() = 0;
+ virtual int KEY_SAVE() = 0;
+ virtual int KEY_QUIT() = 0;
+ virtual int KEY_MRWIZARD() = 0;
};
virtual DialogsControlPanel *dialogsControlPanel() = 0;
class DialogsCreateChar {
public:
- virtual const int KEY_ROLL() = 0;
- virtual const int KEY_CREATE() = 0;
- virtual const int KEY_MGT() = 0;
- virtual const int KEY_INT() = 0;
- virtual const int KEY_PER() = 0;
- virtual const int KEY_END() = 0;
- virtual const int KEY_SPD() = 0;
- virtual const int KEY_ACY() = 0;
- virtual const int KEY_LCK() = 0;
+ virtual int KEY_ROLL() = 0;
+ virtual int KEY_CREATE() = 0;
+ virtual int KEY_MGT() = 0;
+ virtual int KEY_INT() = 0;
+ virtual int KEY_PER() = 0;
+ virtual int KEY_END() = 0;
+ virtual int KEY_SPD() = 0;
+ virtual int KEY_ACY() = 0;
+ virtual int KEY_LCK() = 0;
};
virtual DialogsCreateChar *dialogsCreateChar() = 0;
class DialogsDifficulty {
public:
- virtual const int KEY_ADVENTURER() = 0;
- virtual const int KEY_WARRIOR() = 0;
+ virtual int KEY_ADVENTURER() = 0;
+ virtual int KEY_WARRIOR() = 0;
};
virtual DialogsDifficulty *dialogsDifficulty() = 0;
class DialogsItems {
public:
- virtual const int KEY_WEAPONS() = 0;
- virtual const int KEY_ARMOR() = 0;
- virtual const int KEY_ACCESSORY() = 0;
- virtual const int KEY_MISC() = 0;
- virtual const int KEY_ENCHANT() = 0;
- virtual const int KEY_USE() = 0;
- virtual const int KEY_BUY() = 0;
- virtual const int KEY_SELL() = 0;
- virtual const int KEY_IDENTIFY() = 0;
- virtual const int KEY_FIX() = 0;
- virtual const int KEY_EQUIP() = 0;
- virtual const int KEY_REM() = 0;
- virtual const int KEY_DISC() = 0;
- virtual const int KEY_QUEST() = 0;
- virtual const int KEY_RECHRG() = 0;
- virtual const int KEY_GOLD() = 0;
+ virtual int KEY_WEAPONS() = 0;
+ virtual int KEY_ARMOR() = 0;
+ virtual int KEY_ACCESSORY() = 0;
+ virtual int KEY_MISC() = 0;
+ virtual int KEY_ENCHANT() = 0;
+ virtual int KEY_USE() = 0;
+ virtual int KEY_BUY() = 0;
+ virtual int KEY_SELL() = 0;
+ virtual int KEY_IDENTIFY() = 0;
+ virtual int KEY_FIX() = 0;
+ virtual int KEY_EQUIP() = 0;
+ virtual int KEY_REM() = 0;
+ virtual int KEY_DISC() = 0;
+ virtual int KEY_QUEST() = 0;
+ virtual int KEY_RECHRG() = 0;
+ virtual int KEY_GOLD() = 0;
};
virtual DialogsItems *dialogsItems() = 0;
class DialogsParty {
public:
- virtual const int KEY_DELETE() = 0;
- virtual const int KEY_REMOVE() = 0;
- virtual const int KEY_CREATE() = 0;
- virtual const int KEY_EXIT() = 0;
+ virtual int KEY_DELETE() = 0;
+ virtual int KEY_REMOVE() = 0;
+ virtual int KEY_CREATE() = 0;
+ virtual int KEY_EXIT() = 0;
};
virtual DialogsParty *dialogsParty() = 0;
class DialogsQuests {
public:
- virtual const int KEY_QUEST_ITEMS() = 0;
- virtual const int KEY_CURRENT_QUESTS() = 0;
- virtual const int KEY_AUTO_NOTES() = 0;
+ virtual int KEY_QUEST_ITEMS() = 0;
+ virtual int KEY_CURRENT_QUESTS() = 0;
+ virtual int KEY_AUTO_NOTES() = 0;
};
virtual DialogsQuests *dialogsQuests() = 0;
class DialogsQuickFight {
public:
- virtual const int KEY_NEXT() = 0;
+ virtual int KEY_NEXT() = 0;
};
virtual DialogsQuickFight *dialogsQuickFight() = 0;
class DialogsSpells {
public:
- virtual const int KEY_CAST() = 0;
- virtual const int KEY_NEW() = 0;
- virtual const int KEY_FIRE() = 0;
- virtual const int KEY_ELEC() = 0;
- virtual const int KEY_COLD() = 0;
- virtual const int KEY_ACID() = 0;
- virtual const int KEY_SET() = 0;
- virtual const int KEY_RETURN() = 0;
+ virtual int KEY_CAST() = 0;
+ virtual int KEY_NEW() = 0;
+ virtual int KEY_FIRE() = 0;
+ virtual int KEY_ELEC() = 0;
+ virtual int KEY_COLD() = 0;
+ virtual int KEY_ACID() = 0;
+ virtual int KEY_SET() = 0;
+ virtual int KEY_RETURN() = 0;
};
virtual DialogsSpells *dialogsSpells() = 0;
class Locations {
public:
- virtual const int KEY_DEP() = 0;
- virtual const int KEY_WITH() = 0;
- virtual const int KEY_GOLD() = 0;
- virtual const int KEY_GEMS() = 0;
- virtual const int KEY_BROWSE() = 0;
- virtual const int KEY_BUY_SPELLS() = 0;
- virtual const int KEY_SPELL_INFO() = 0;
- virtual const int KEY_SIGN_IN() = 0;
- virtual const int KEY_DRINK() = 0;
- virtual const int KEY_FOOD() = 0;
- virtual const int KEY_TIP() = 0;
- virtual const int KEY_RUMORS() = 0;
- virtual const int KEY_HEAL() = 0;
- virtual const int KEY_DONATION() = 0;
- virtual const int KEY_UNCURSE() = 0;
- virtual const int KEY_TRAIN() = 0;
+ virtual int KEY_DEP() = 0;
+ virtual int KEY_WITH() = 0;
+ virtual int KEY_GOLD() = 0;
+ virtual int KEY_GEMS() = 0;
+ virtual int KEY_BROWSE() = 0;
+ virtual int KEY_BUY_SPELLS() = 0;
+ virtual int KEY_SPELL_INFO() = 0;
+ virtual int KEY_SIGN_IN() = 0;
+ virtual int KEY_DRINK() = 0;
+ virtual int KEY_FOOD() = 0;
+ virtual int KEY_TIP() = 0;
+ virtual int KEY_RUMORS() = 0;
+ virtual int KEY_HEAL() = 0;
+ virtual int KEY_DONATION() = 0;
+ virtual int KEY_UNCURSE() = 0;
+ virtual int KEY_TRAIN() = 0;
};
virtual Locations *locations() = 0;
class CloudsOfXeenMenu {
public:
- virtual const int KEY_START_NEW_GAME() = 0;
- virtual const int KEY_LOAD_GAME() = 0;
- virtual const int KEY_SHOW_CREDITS() = 0;
- virtual const int KEY_VIEW_ENDGAME() = 0;
+ virtual int KEY_START_NEW_GAME() = 0;
+ virtual int KEY_LOAD_GAME() = 0;
+ virtual int KEY_SHOW_CREDITS() = 0;
+ virtual int KEY_VIEW_ENDGAME() = 0;
};
virtual CloudsOfXeenMenu *cloudsOfXeenMenu() = 0;
};
diff --git a/devtools/create_xeen/en_constants.h b/devtools/create_xeen/en_constants.h
index 722d73a817..61b339d0a5 100644
--- a/devtools/create_xeen/en_constants.h
+++ b/devtools/create_xeen/en_constants.h
@@ -1993,9 +1993,9 @@ public:
public:
class EN_DialogsCharInfo : public DialogsCharInfo {
public:
- const int KEY_ITEM() { return Common::KEYCODE_i; }
- const int KEY_QUICK() { return Common::KEYCODE_q; }
- const int KEY_EXCHANGE() { return Common::KEYCODE_e; }
+ int KEY_ITEM() { return Common::KEYCODE_i; }
+ int KEY_QUICK() { return Common::KEYCODE_q; }
+ int KEY_EXCHANGE() { return Common::KEYCODE_e; }
};
EN_DialogsCharInfo *dialogsCharInfo() {
if (!_dci)_dci = new EN_DialogsCharInfo();
@@ -2004,12 +2004,12 @@ public:
class EN_DialogsControlPanel : public DialogsControlPanel {
public:
- const int KEY_FXON() { return Common::KEYCODE_e; }
- const int KEY_MUSICON() { return Common::KEYCODE_m; }
- const int KEY_LOAD() { return Common::KEYCODE_l; }
- const int KEY_SAVE() { return Common::KEYCODE_s; }
- const int KEY_QUIT() { return Common::KEYCODE_q; }
- const int KEY_MRWIZARD() { return Common::KEYCODE_w; }
+ int KEY_FXON() { return Common::KEYCODE_e; }
+ int KEY_MUSICON() { return Common::KEYCODE_m; }
+ int KEY_LOAD() { return Common::KEYCODE_l; }
+ int KEY_SAVE() { return Common::KEYCODE_s; }
+ int KEY_QUIT() { return Common::KEYCODE_q; }
+ int KEY_MRWIZARD() { return Common::KEYCODE_w; }
};
EN_DialogsControlPanel *dialogsControlPanel() {
if (!_dcp) _dcp = new EN_DialogsControlPanel();
@@ -2018,15 +2018,15 @@ public:
class EN_DialogsCreateChar : public DialogsCreateChar {
public:
- const int KEY_ROLL() { return Common::KEYCODE_r; }
- const int KEY_CREATE() { return Common::KEYCODE_c; }
- const int KEY_MGT() { return Common::KEYCODE_m; }
- const int KEY_INT() { return Common::KEYCODE_i; }
- const int KEY_PER() { return Common::KEYCODE_p; }
- const int KEY_END() { return Common::KEYCODE_e; }
- const int KEY_SPD() { return Common::KEYCODE_s; }
- const int KEY_ACY() { return Common::KEYCODE_a; }
- const int KEY_LCK() { return Common::KEYCODE_l; }
+ int KEY_ROLL() { return Common::KEYCODE_r; }
+ int KEY_CREATE() { return Common::KEYCODE_c; }
+ int KEY_MGT() { return Common::KEYCODE_m; }
+ int KEY_INT() { return Common::KEYCODE_i; }
+ int KEY_PER() { return Common::KEYCODE_p; }
+ int KEY_END() { return Common::KEYCODE_e; }
+ int KEY_SPD() { return Common::KEYCODE_s; }
+ int KEY_ACY() { return Common::KEYCODE_a; }
+ int KEY_LCK() { return Common::KEYCODE_l; }
};
EN_DialogsCreateChar *dialogsCreateChar() {
if (!_dcc) _dcc = new EN_DialogsCreateChar();
@@ -2035,8 +2035,8 @@ public:
class EN_DialogsDifficulty : public DialogsDifficulty {
public:
- const int KEY_ADVENTURER() { return Common::KEYCODE_a; }
- const int KEY_WARRIOR() { return Common::KEYCODE_w; }
+ int KEY_ADVENTURER() { return Common::KEYCODE_a; }
+ int KEY_WARRIOR() { return Common::KEYCODE_w; }
};
EN_DialogsDifficulty *dialogsDifficulty() {
if (!_dd) _dd = new EN_DialogsDifficulty();
@@ -2045,22 +2045,22 @@ public:
class EN_DialogsItems : public DialogsItems {
public:
- const int KEY_WEAPONS() { return Common::KEYCODE_w; }
- const int KEY_ARMOR() { return Common::KEYCODE_a; }
- const int KEY_ACCESSORY() { return Common::KEYCODE_c; }
- const int KEY_MISC() { return Common::KEYCODE_m; }
- const int KEY_ENCHANT() { return Common::KEYCODE_e; }
- const int KEY_USE() { return Common::KEYCODE_u; }
- const int KEY_BUY() { return Common::KEYCODE_b; }
- const int KEY_SELL() { return Common::KEYCODE_s; }
- const int KEY_IDENTIFY() { return Common::KEYCODE_i; }
- const int KEY_FIX() { return Common::KEYCODE_f; }
- const int KEY_EQUIP() { return Common::KEYCODE_e; }
- const int KEY_REM() { return Common::KEYCODE_r; }
- const int KEY_DISC() { return Common::KEYCODE_d; }
- const int KEY_QUEST() { return Common::KEYCODE_q; }
- const int KEY_RECHRG() { return Common::KEYCODE_r; }
- const int KEY_GOLD() { return Common::KEYCODE_g; }
+ int KEY_WEAPONS() { return Common::KEYCODE_w; }
+ int KEY_ARMOR() { return Common::KEYCODE_a; }
+ int KEY_ACCESSORY() { return Common::KEYCODE_c; }
+ int KEY_MISC() { return Common::KEYCODE_m; }
+ int KEY_ENCHANT() { return Common::KEYCODE_e; }
+ int KEY_USE() { return Common::KEYCODE_u; }
+ int KEY_BUY() { return Common::KEYCODE_b; }
+ int KEY_SELL() { return Common::KEYCODE_s; }
+ int KEY_IDENTIFY() { return Common::KEYCODE_i; }
+ int KEY_FIX() { return Common::KEYCODE_f; }
+ int KEY_EQUIP() { return Common::KEYCODE_e; }
+ int KEY_REM() { return Common::KEYCODE_r; }
+ int KEY_DISC() { return Common::KEYCODE_d; }
+ int KEY_QUEST() { return Common::KEYCODE_q; }
+ int KEY_RECHRG() { return Common::KEYCODE_r; }
+ int KEY_GOLD() { return Common::KEYCODE_g; }
};
EN_DialogsItems *dialogsItems() {
if (!_di) _di = new EN_DialogsItems();
@@ -2069,10 +2069,10 @@ public:
class EN_DialogsParty : public DialogsParty {
public:
- const int KEY_DELETE() { return Common::KEYCODE_d; }
- const int KEY_REMOVE() { return Common::KEYCODE_r; }
- const int KEY_CREATE() { return Common::KEYCODE_c; }
- const int KEY_EXIT() { return Common::KEYCODE_x; }
+ int KEY_DELETE() { return Common::KEYCODE_d; }
+ int KEY_REMOVE() { return Common::KEYCODE_r; }
+ int KEY_CREATE() { return Common::KEYCODE_c; }
+ int KEY_EXIT() { return Common::KEYCODE_x; }
};
EN_DialogsParty *dialogsParty() {
if (!_dp) _dp = new EN_DialogsParty();
@@ -2081,9 +2081,9 @@ public:
class EN_DialogsQuests : public DialogsQuests {
public:
- const int KEY_QUEST_ITEMS() { return Common::KEYCODE_i; }
- const int KEY_CURRENT_QUESTS() { return Common::KEYCODE_q; }
- const int KEY_AUTO_NOTES() { return Common::KEYCODE_a; }
+ int KEY_QUEST_ITEMS() { return Common::KEYCODE_i; }
+ int KEY_CURRENT_QUESTS() { return Common::KEYCODE_q; }
+ int KEY_AUTO_NOTES() { return Common::KEYCODE_a; }
};
EN_DialogsQuests *dialogsQuests() {
if (!_dq) _dq = new EN_DialogsQuests();
@@ -2092,7 +2092,7 @@ public:
class EN_DialogsQuickFight : public DialogsQuickFight {
public:
- const int KEY_NEXT() { return Common::KEYCODE_t; }
+ int KEY_NEXT() { return Common::KEYCODE_t; }
};
EN_DialogsQuickFight *dialogsQuickFight() {
if (!_dqf) _dqf = new EN_DialogsQuickFight();
@@ -2101,14 +2101,14 @@ public:
class EN_DialogsSpells : public DialogsSpells {
public:
- const int KEY_CAST() { return Common::KEYCODE_c; }
- const int KEY_NEW() { return Common::KEYCODE_n; }
- const int KEY_FIRE() { return Common::KEYCODE_f; }
- const int KEY_ELEC() { return Common::KEYCODE_e; }
- const int KEY_COLD() { return Common::KEYCODE_c; }
- const int KEY_ACID() { return Common::KEYCODE_a; }
- const int KEY_SET() { return Common::KEYCODE_t; }
- const int KEY_RETURN() { return Common::KEYCODE_r; }
+ int KEY_CAST() { return Common::KEYCODE_c; }
+ int KEY_NEW() { return Common::KEYCODE_n; }
+ int KEY_FIRE() { return Common::KEYCODE_f; }
+ int KEY_ELEC() { return Common::KEYCODE_e; }
+ int KEY_COLD() { return Common::KEYCODE_c; }
+ int KEY_ACID() { return Common::KEYCODE_a; }
+ int KEY_SET() { return Common::KEYCODE_t; }
+ int KEY_RETURN() { return Common::KEYCODE_r; }
};
EN_DialogsSpells *dialogsSpells() {
if (!_ds) _ds = new EN_DialogsSpells();
@@ -2117,22 +2117,22 @@ public:
class EN_Locations : public Locations {
public:
- const int KEY_DEP() { return Common::KEYCODE_d; }
- const int KEY_WITH() { return Common::KEYCODE_w; }
- const int KEY_GOLD() { return Common::KEYCODE_o; }
- const int KEY_GEMS() { return Common::KEYCODE_e; }
- const int KEY_BROWSE() { return Common::KEYCODE_b; }
- const int KEY_BUY_SPELLS() { return Common::KEYCODE_b; }
- const int KEY_SPELL_INFO() { return Common::KEYCODE_s; }
- const int KEY_SIGN_IN() { return Common::KEYCODE_s; }
- const int KEY_DRINK() { return Common::KEYCODE_d; }
- const int KEY_FOOD() { return Common::KEYCODE_f; }
- const int KEY_TIP() { return Common::KEYCODE_t; }
- const int KEY_RUMORS() { return Common::KEYCODE_r; }
- const int KEY_HEAL() { return Common::KEYCODE_h; }
- const int KEY_DONATION() { return Common::KEYCODE_d; }
- const int KEY_UNCURSE() { return Common::KEYCODE_u; }
- const int KEY_TRAIN() { return Common::KEYCODE_t; }
+ int KEY_DEP() { return Common::KEYCODE_d; }
+ int KEY_WITH() { return Common::KEYCODE_w; }
+ int KEY_GOLD() { return Common::KEYCODE_o; }
+ int KEY_GEMS() { return Common::KEYCODE_e; }
+ int KEY_BROWSE() { return Common::KEYCODE_b; }
+ int KEY_BUY_SPELLS() { return Common::KEYCODE_b; }
+ int KEY_SPELL_INFO() { return Common::KEYCODE_s; }
+ int KEY_SIGN_IN() { return Common::KEYCODE_s; }
+ int KEY_DRINK() { return Common::KEYCODE_d; }
+ int KEY_FOOD() { return Common::KEYCODE_f; }
+ int KEY_TIP() { return Common::KEYCODE_t; }
+ int KEY_RUMORS() { return Common::KEYCODE_r; }
+ int KEY_HEAL() { return Common::KEYCODE_h; }
+ int KEY_DONATION() { return Common::KEYCODE_d; }
+ int KEY_UNCURSE() { return Common::KEYCODE_u; }
+ int KEY_TRAIN() { return Common::KEYCODE_t; }
};
EN_Locations *locations() {
if (!_l) _l = new EN_Locations();
@@ -2141,10 +2141,10 @@ public:
class EN_CloudsOfXeenMenu : public CloudsOfXeenMenu {
public:
- const int KEY_START_NEW_GAME() { return Common::KEYCODE_s; }
- const int KEY_LOAD_GAME() { return Common::KEYCODE_l; }
- const int KEY_SHOW_CREDITS() { return Common::KEYCODE_c; }
- const int KEY_VIEW_ENDGAME() { return Common::KEYCODE_e; }
+ int KEY_START_NEW_GAME() { return Common::KEYCODE_s; }
+ int KEY_LOAD_GAME() { return Common::KEYCODE_l; }
+ int KEY_SHOW_CREDITS() { return Common::KEYCODE_c; }
+ int KEY_VIEW_ENDGAME() { return Common::KEYCODE_e; }
};
EN_CloudsOfXeenMenu *cloudsOfXeenMenu() {
if (!_soxm)
diff --git a/devtools/create_xeen/ru_constants.h b/devtools/create_xeen/ru_constants.h
index 28e94ad274..776529dcfe 100644
--- a/devtools/create_xeen/ru_constants.h
+++ b/devtools/create_xeen/ru_constants.h
@@ -2000,9 +2000,9 @@ public:
public:
class RU_DialogsCharInfo : public DialogsCharInfo {
public:
- const int KEY_ITEM() { return Common::KEYCODE_d; }
- const int KEY_QUICK() { return Common::KEYCODE_COMMA; }
- const int KEY_EXCHANGE() { return Common::KEYCODE_c; }
+ int KEY_ITEM() { return Common::KEYCODE_d; }
+ int KEY_QUICK() { return Common::KEYCODE_COMMA; }
+ int KEY_EXCHANGE() { return Common::KEYCODE_c; }
};
RU_DialogsCharInfo *dialogsCharInfo() {
if (!_dci) _dci = new RU_DialogsCharInfo();
@@ -2011,12 +2011,12 @@ public:
class RU_DialogsControlPanel : public DialogsControlPanel {
public:
- const int KEY_FXON() { return Common::KEYCODE_e; }
- const int KEY_MUSICON() { return Common::KEYCODE_v; }
- const int KEY_LOAD() { return Common::KEYCODE_p; }
- const int KEY_SAVE() { return Common::KEYCODE_c; }
- const int KEY_QUIT() { return Common::KEYCODE_d; }
- const int KEY_MRWIZARD() { return Common::KEYCODE_g; }
+ int KEY_FXON() { return Common::KEYCODE_e; }
+ int KEY_MUSICON() { return Common::KEYCODE_v; }
+ int KEY_LOAD() { return Common::KEYCODE_p; }
+ int KEY_SAVE() { return Common::KEYCODE_c; }
+ int KEY_QUIT() { return Common::KEYCODE_d; }
+ int KEY_MRWIZARD() { return Common::KEYCODE_g; }
};
RU_DialogsControlPanel *dialogsControlPanel() {
if (!_dcp) _dcp = new RU_DialogsControlPanel();
@@ -2025,15 +2025,15 @@ public:
class RU_DialogsCreateChar : public DialogsCreateChar {
public:
- const int KEY_ROLL() { return Common::KEYCODE_COMMA; }
- const int KEY_CREATE() { return Common::KEYCODE_c; }
- const int KEY_MGT() { return Common::KEYCODE_k; }
- const int KEY_INT() { return Common::KEYCODE_b; }
- const int KEY_PER() { return Common::KEYCODE_l; }
- const int KEY_END() { return Common::KEYCODE_SEMICOLON; }
- const int KEY_SPD() { return Common::KEYCODE_r; }
- const int KEY_ACY() { return Common::KEYCODE_v; }
- const int KEY_LCK() { return Common::KEYCODE_e; }
+ int KEY_ROLL() { return Common::KEYCODE_COMMA; }
+ int KEY_CREATE() { return Common::KEYCODE_c; }
+ int KEY_MGT() { return Common::KEYCODE_k; }
+ int KEY_INT() { return Common::KEYCODE_b; }
+ int KEY_PER() { return Common::KEYCODE_l; }
+ int KEY_END() { return Common::KEYCODE_SEMICOLON; }
+ int KEY_SPD() { return Common::KEYCODE_r; }
+ int KEY_ACY() { return Common::KEYCODE_v; }
+ int KEY_LCK() { return Common::KEYCODE_e; }
};
RU_DialogsCreateChar *dialogsCreateChar() {
if (!_dcc) _dcc = new RU_DialogsCreateChar();
@@ -2042,8 +2042,8 @@ public:
class RU_DialogsDifficulty : public DialogsDifficulty {
public:
- const int KEY_ADVENTURER() { return Common::KEYCODE_f; }
- const int KEY_WARRIOR() { return Common::KEYCODE_d; }
+ int KEY_ADVENTURER() { return Common::KEYCODE_f; }
+ int KEY_WARRIOR() { return Common::KEYCODE_d; }
};
RU_DialogsDifficulty *dialogsDifficulty() {
if (!_dd) _dd = new RU_DialogsDifficulty();
@@ -2052,22 +2052,22 @@ public:
class RU_DialogsItems : public DialogsItems {
public:
- const int KEY_WEAPONS() { return Common::KEYCODE_SEMICOLON; }
- const int KEY_ARMOR() { return Common::KEYCODE_COMMA; }
- const int KEY_ACCESSORY() { return Common::KEYCODE_e; }
- const int KEY_MISC() { return Common::KEYCODE_h; }
- const int KEY_ENCHANT() { return Common::KEYCODE_p; }
- const int KEY_USE() { return Common::KEYCODE_b; }
- const int KEY_BUY() { return Common::KEYCODE_r; }
- const int KEY_SELL() { return Common::KEYCODE_g; }
- const int KEY_IDENTIFY() { return Common::KEYCODE_j; }
- const int KEY_FIX() { return Common::KEYCODE_x; }
- const int KEY_EQUIP() { return Common::KEYCODE_y; }
- const int KEY_REM() { return Common::KEYCODE_c; }
- const int KEY_DISC() { return Common::KEYCODE_d; }
- const int KEY_QUEST() { return Common::KEYCODE_p; }
- const int KEY_RECHRG() { return Common::KEYCODE_g; }
- const int KEY_GOLD() { return Common::KEYCODE_p; }
+ int KEY_WEAPONS() { return Common::KEYCODE_SEMICOLON; }
+ int KEY_ARMOR() { return Common::KEYCODE_COMMA; }
+ int KEY_ACCESSORY() { return Common::KEYCODE_e; }
+ int KEY_MISC() { return Common::KEYCODE_h; }
+ int KEY_ENCHANT() { return Common::KEYCODE_p; }
+ int KEY_USE() { return Common::KEYCODE_b; }
+ int KEY_BUY() { return Common::KEYCODE_r; }
+ int KEY_SELL() { return Common::KEYCODE_g; }
+ int KEY_IDENTIFY() { return Common::KEYCODE_j; }
+ int KEY_FIX() { return Common::KEYCODE_x; }
+ int KEY_EQUIP() { return Common::KEYCODE_y; }
+ int KEY_REM() { return Common::KEYCODE_c; }
+ int KEY_DISC() { return Common::KEYCODE_d; }
+ int KEY_QUEST() { return Common::KEYCODE_p; }
+ int KEY_RECHRG() { return Common::KEYCODE_g; }
+ int KEY_GOLD() { return Common::KEYCODE_p; }
};
RU_DialogsItems *dialogsItems() {
if (!_di) _di = new RU_DialogsItems();
@@ -2076,10 +2076,10 @@ public:
class RU_DialogsParty : public DialogsParty {
public:
- const int KEY_DELETE() { return Common::KEYCODE_e; }
- const int KEY_REMOVE() { return Common::KEYCODE_d; }
- const int KEY_CREATE() { return Common::KEYCODE_c; }
- const int KEY_EXIT() { return Common::KEYCODE_s; }
+ int KEY_DELETE() { return Common::KEYCODE_e; }
+ int KEY_REMOVE() { return Common::KEYCODE_d; }
+ int KEY_CREATE() { return Common::KEYCODE_c; }
+ int KEY_EXIT() { return Common::KEYCODE_s; }
};
RU_DialogsParty *dialogsParty() {
if (!_dp) _dp = new RU_DialogsParty();
@@ -2088,9 +2088,9 @@ public:
class RU_DialogsQuests : public DialogsQuests {
public:
- const int KEY_QUEST_ITEMS() { return Common::KEYCODE_d; }
- const int KEY_CURRENT_QUESTS() { return Common::KEYCODE_p; }
- const int KEY_AUTO_NOTES() { return Common::KEYCODE_f; }
+ int KEY_QUEST_ITEMS() { return Common::KEYCODE_d; }
+ int KEY_CURRENT_QUESTS() { return Common::KEYCODE_p; }
+ int KEY_AUTO_NOTES() { return Common::KEYCODE_f; }
};
RU_DialogsQuests *dialogsQuests() {
if (!_dq) _dq = new RU_DialogsQuests();
@@ -2099,7 +2099,7 @@ public:
class RU_DialogsQuickFight : public DialogsQuickFight {
public:
- const int KEY_NEXT() { return Common::KEYCODE_c; }
+ int KEY_NEXT() { return Common::KEYCODE_c; }
};
RU_DialogsQuickFight *dialogsQuickFight() {
if (!_dqf) _dqf = new RU_DialogsQuickFight();
@@ -2108,14 +2108,14 @@ public:
class RU_DialogsSpells : public DialogsSpells {
public:
- const int KEY_CAST() { return Common::KEYCODE_p; }
- const int KEY_NEW() { return Common::KEYCODE_y; }
- const int KEY_FIRE() { return Common::KEYCODE_j; }
- const int KEY_ELEC() { return Common::KEYCODE_u; }
- const int KEY_COLD() { return Common::KEYCODE_LEFTBRACKET; }
- const int KEY_ACID() { return Common::KEYCODE_z; }
- const int KEY_SET() { return Common::KEYCODE_e; }
- const int KEY_RETURN() { return Common::KEYCODE_d; }
+ int KEY_CAST() { return Common::KEYCODE_p; }
+ int KEY_NEW() { return Common::KEYCODE_y; }
+ int KEY_FIRE() { return Common::KEYCODE_j; }
+ int KEY_ELEC() { return Common::KEYCODE_u; }
+ int KEY_COLD() { return Common::KEYCODE_LEFTBRACKET; }
+ int KEY_ACID() { return Common::KEYCODE_z; }
+ int KEY_SET() { return Common::KEYCODE_e; }
+ int KEY_RETURN() { return Common::KEYCODE_d; }
};
RU_DialogsSpells *dialogsSpells() {
if (!_ds) _ds = new RU_DialogsSpells();
@@ -2124,22 +2124,22 @@ public:
class RU_Locations : public Locations {
public:
- const int KEY_DEP() { return Common::KEYCODE_d; }
- const int KEY_WITH() { return Common::KEYCODE_c; }
- const int KEY_GOLD() { return Common::KEYCODE_p; }
- const int KEY_GEMS() { return Common::KEYCODE_f; }
- const int KEY_BROWSE() { return Common::KEYCODE_c; }
- const int KEY_BUY_SPELLS() { return Common::KEYCODE_r; }
- const int KEY_SPELL_INFO() { return Common::KEYCODE_j; }
- const int KEY_SIGN_IN() { return Common::KEYCODE_j; }
- const int KEY_DRINK() { return Common::KEYCODE_d; }
- const int KEY_FOOD() { return Common::KEYCODE_t; }
- const int KEY_TIP() { return Common::KEYCODE_x; }
- const int KEY_RUMORS() { return Common::KEYCODE_c; }
- const int KEY_HEAL() { return Common::KEYCODE_k; }
- const int KEY_DONATION() { return Common::KEYCODE_l; }
- const int KEY_UNCURSE() { return Common::KEYCODE_c; }
- const int KEY_TRAIN() { return Common::KEYCODE_j; }
+ int KEY_DEP() { return Common::KEYCODE_d; }
+ int KEY_WITH() { return Common::KEYCODE_c; }
+ int KEY_GOLD() { return Common::KEYCODE_p; }
+ int KEY_GEMS() { return Common::KEYCODE_f; }
+ int KEY_BROWSE() { return Common::KEYCODE_c; }
+ int KEY_BUY_SPELLS() { return Common::KEYCODE_r; }
+ int KEY_SPELL_INFO() { return Common::KEYCODE_j; }
+ int KEY_SIGN_IN() { return Common::KEYCODE_j; }
+ int KEY_DRINK() { return Common::KEYCODE_d; }
+ int KEY_FOOD() { return Common::KEYCODE_t; }
+ int KEY_TIP() { return Common::KEYCODE_x; }
+ int KEY_RUMORS() { return Common::KEYCODE_c; }
+ int KEY_HEAL() { return Common::KEYCODE_k; }
+ int KEY_DONATION() { return Common::KEYCODE_l; }
+ int KEY_UNCURSE() { return Common::KEYCODE_c; }
+ int KEY_TRAIN() { return Common::KEYCODE_j; }
};
RU_Locations *locations() {
if (!_l) _l = new RU_Locations();
@@ -2148,10 +2148,10 @@ public:
class RU_CloudsOfXeenMenu : public CloudsOfXeenMenu {
public:
- const int KEY_START_NEW_GAME() { return Common::KEYCODE_y; }
- const int KEY_LOAD_GAME() { return Common::KEYCODE_p; }
- const int KEY_SHOW_CREDITS() { return Common::KEYCODE_c; }
- const int KEY_VIEW_ENDGAME() { return Common::KEYCODE_a; }
+ int KEY_START_NEW_GAME() { return Common::KEYCODE_y; }
+ int KEY_LOAD_GAME() { return Common::KEYCODE_p; }
+ int KEY_SHOW_CREDITS() { return Common::KEYCODE_c; }
+ int KEY_VIEW_ENDGAME() { return Common::KEYCODE_a; }
};
RU_CloudsOfXeenMenu *cloudsOfXeenMenu() {
if (!_soxm)
Commit: 0b038463ffc9d7222ca8f9e2b45adc79254d4c37
https://github.com/scummvm/scummvm/commit/0b038463ffc9d7222ca8f9e2b45adc79254d4c37
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-02T17:35:18+02:00
Commit Message:
XEEN: RU Fixed item materials
Changed paths:
devtools/create_xeen/constants.cpp
devtools/create_xeen/constants.h
devtools/create_xeen/en_constants.h
devtools/create_xeen/ru_constants.h
dists/engine-data/xeen.ccs
engines/xeen/item.cpp
engines/xeen/item.h
engines/xeen/resources.cpp
engines/xeen/resources.h
diff --git a/devtools/create_xeen/constants.cpp b/devtools/create_xeen/constants.cpp
index fbd690df40..5db1a62674 100644
--- a/devtools/create_xeen/constants.cpp
+++ b/devtools/create_xeen/constants.cpp
@@ -486,6 +486,9 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
file.syncString(DARKSIDE_ENDING2());
file.syncString(PHAROAH_ENDING_TEXT1());
file.syncString(PHAROAH_ENDING_TEXT2());
+ file.syncStrings(MAE_NAMES(), 131);
+ delete[] _maeNames;
+ _maeNames = NULL;
cc.add("CONSTANTS" + num, file);
diff --git a/devtools/create_xeen/constants.h b/devtools/create_xeen/constants.h
index 2fb1a0dd0a..f6c4cfa2dd 100644
--- a/devtools/create_xeen/constants.h
+++ b/devtools/create_xeen/constants.h
@@ -156,6 +156,7 @@ protected:
const char **_found = NULL;
const char **_born = NULL;
const char **_onHand = NULL;
+ const char **_maeNames = NULL;
const int *_newCharSkillsOffset = NULL;
public:
@@ -1236,13 +1237,14 @@ public:
{ "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m", "sf05.m" }
};
- virtual const char *DIFFICULTY_TEXT() = 0;
- virtual const char *SAVE_OFF_LIMITS() = 0;
- virtual const char *CLOUDS_INTRO1() = 0;
- virtual const char *DARKSIDE_ENDING1() = 0;
- virtual const char *DARKSIDE_ENDING2() = 0;
- virtual const char *PHAROAH_ENDING_TEXT1() = 0;
- virtual const char *PHAROAH_ENDING_TEXT2() = 0;
+ virtual const char *DIFFICULTY_TEXT() = 0;
+ virtual const char *SAVE_OFF_LIMITS() = 0;
+ virtual const char *CLOUDS_INTRO1() = 0;
+ virtual const char *DARKSIDE_ENDING1() = 0;
+ virtual const char *DARKSIDE_ENDING2() = 0;
+ virtual const char *PHAROAH_ENDING_TEXT1() = 0;
+ virtual const char *PHAROAH_ENDING_TEXT2() = 0;
+ virtual const char **MAE_NAMES() = 0;
void writeConstants(Common::String num, CCArchive &cc);
diff --git a/devtools/create_xeen/en_constants.h b/devtools/create_xeen/en_constants.h
index 61b339d0a5..93245c4f0c 100644
--- a/devtools/create_xeen/en_constants.h
+++ b/devtools/create_xeen/en_constants.h
@@ -1989,6 +1989,15 @@ public:
"l\fd";
}
+
+ const char **MAE_NAMES() {
+ delete[] _maeNames;
+ _maeNames = new const char *[131] {
+ "",
+ };
+ return _maeNames;
+ }
+
class EN_KeyConstants : public KeyConstants {
public:
class EN_DialogsCharInfo : public DialogsCharInfo {
diff --git a/devtools/create_xeen/ru_constants.h b/devtools/create_xeen/ru_constants.h
index 776529dcfe..f515966f70 100644
--- a/devtools/create_xeen/ru_constants.h
+++ b/devtools/create_xeen/ru_constants.h
@@ -1996,6 +1996,144 @@ public:
"l\fd";
}
+ const char **MAE_NAMES() {
+ delete[] _maeNames;
+ _maeNames = new const char *[131] {
+ "",
+ "\xA6\xA0\xE0\xA0", //жаÑа
+ "\xAE\xA3\xAD\xA5\xA9", //огней
+ "\xAE\xA3\xAD\xEF", //огнÑ
+ "\xA4\xEB\xAC\xA0", //дÑма
+ "\xAF\xAB\xA0\xAC\xA5\xAD\xA8", //пламени
+ "\xAA\xA8\xAF\xA5\xAD\xA8\xEF", //кипениÑ
+ "\xA2\xE1\xAF\xEB\xE8\xAA\xA8", //вÑпÑÑки
+ "\xA0\xA4\xA0", //ада
+ "\xAC\xA5\xE0\xE6\xA0\xAD\xA8\xEF", //меÑÑаниÑ
+ "\xA8\xE1\xAA\xE0", //иÑкÑ
+ "\xE1\xE2\xA0\xE2\xA8\xAA\xA8", //ÑÑаÑики
+ "\xA3\xE0\xAE\xAC\xA0", //гÑома
+ "\xE8\xAE\xAA\xA0", //Ñока
+ "\xED\xAB\xA5\xAA\xE2\xE0\xA8\xE7\xA5\xE1\xE2\xA2\xA0", //ÑлекÑÑиÑеÑÑва
+ "\xAC\xAE\xAB\xAD\xA8\xA8", //молнии
+ "\xAB\xEC\xA4\xA0", //лÑда
+ "\xAC\xAE\xE0\xAE\xA7\xA0", //моÑоза
+ "\xE1\xE2\xE3\xA6\xA8", //ÑÑÑжи
+ "\xE5\xAE\xAB\xAE\xA4\xA0", //Ñ
олода
+ "\xAA\xE0\xA8\xAE", //кÑио
+ "\xAA\xA8\xE1\xAB\xAE\xE2\xEB", //киÑлоÑÑ
+ "\xA7\xA5\xAB\xEC\xEF", //зелÑÑ
+ "\xEF\xA4\xA0", //Ñда
+ "\xE2\xAE\xAA\xE1\xA8\xAD\xA0", //ÑокÑина
+ "\xAE\xE2\xE0\xA0\xA2\xEB", //оÑÑавÑ
+ "\xE1\xA2\xA5\xE2\xA0", //ÑвеÑа
+ "\xAD\xA0\xAA\xA0\xAB\xA0", //накала
+ "\xAF\xAB\xAE\xE2\xAD\xAE\xE1\xE2\xA8", //плоÑноÑÑи
+ "\xA7\xA2\xE3\xAA\xA0", //звÑка
+ "\xED\xAD\xA5\xE0\xA3\xA8\xA8", //ÑнеÑгии
+ "\xE2\xA5\xAF\xAB\xA0", //Ñепла
+ "\xE1\xA8\xEF\xAD\xA8\xEF", //ÑиÑниÑ
+ "\xAA\xA8\xAD\xA5\xE2\xA8\xAA\xA8", //кинеÑики
+ "\xAC\xA8\xE1\xE2\xA8\xAA\xA8", //миÑÑики
+ "\xAC\xA0\xA3\xA8\xA8", //магии
+ "\xED\xAA\xE2\xAE\xAF\xAB\xA0\xA7\xAC\xEB", //ÑкÑоплазмÑ
+ "\xA8\xA7 \xA4\xA5\xE0\xA5\xA2\xA0", //из деÑева
+ "\xA8\xA7 \xAA\xAE\xA6\xA8", //из кожи
+ "\xA8\xA7 \xAC\xA5\xA4\xA8", //из меди
+ "\xA8\xA7 \xA1\xE0\xAE\xAD\xA7\xEB", //из бÑонзÑ
+ "\xA8\xA7 \xA6\xA5\xAB\xA5\xA7\xA0", //из железа
+ "\xA8\xA7 \xE1\xA5\xE0\xA5\xA1\xE0\xA0", //из ÑеÑебÑа
+ "\xA8\xA7 \xE1\xE2\xA0\xAB\xA8", //из ÑÑали
+ "\xA8\xA7 \xA7\xAE\xAB\xAE\xE2\xA0", //из золоÑа
+ "\xA8\xA7 \xAF\xAB\xA0\xE2\xA8\xAD\xEB", //из плаÑинÑ
+ "\xA8\xA7 \xE1\xE2\xA5\xAA\xAB\xA0", //из ÑÑекла
+ "\xA8\xA7 \xAA\xAE\xE0\xA0\xAB\xAB\xAE\xA2", //из коÑаллов
+ "\xA8\xA7 \xE5\xE0\xE3\xE1\xE2\xA0\xAB\xEF", //из Ñ
ÑÑÑÑалÑ
+ "\xA8\xA7 \xAB\xA0\xA7\xE3\xE0\xA8\xE2\xA0", //из лазÑÑиÑа
+ "\xA8\xA7 \xAF\xA5\xE0\xAB\xA0\xAC\xE3\xE2\xE0\xA0", //из пеÑламÑÑÑа
+ "\xA8\xA7 \xEF\xAD\xE2\xA0\xE0\xEF", //из ÑнÑаÑÑ
+ "\xA8\xA7 \xED\xA1\xA5\xAD\xA0", //из Ñбена
+ "\xA8\xA7 \xAA\xA2\xA0\xE0\xE6\xA0", //из кваÑÑа
+ "\xA8\xA7 \xE0\xE3\xA1\xA8\xAD\xA0", //из ÑÑбина
+ "\xA8\xA7 \xA8\xA7\xE3\xAC\xE0\xE3\xA4\xA0", //из изÑмÑÑда
+ "\xA8\xA7 \xE1\xA0\xAF\xE4\xA8\xE0\xA0", //из ÑапÑиÑа
+ "\xA8\xA7 \xA0\xAB\xAC\xA0\xA7\xA0", //из алмаза
+ "\xA8\xA7 \xAE\xA1\xE1\xA8\xA4\xA8\xA0\xAD\xA0", //из обÑидиана
+ "\xE1\xA8\xAB\xEB", //ÑилÑ
+ "\xAA\xE0\xA5\xAF\xAE\xE1\xE2\xA8", //кÑепоÑÑи
+ "\xA2\xAE\xA8\xAD\xA0", //воина
+ "\xAE\xA3\xE0\xA0", //огÑа
+ "\xA3\xA8\xA3\xA0\xAD\xE2\xA0", //гиганÑа
+ "\xA3\xE0\xAE\xAC\xA0", //гÑома
+ "\xAC\xAE\xE9\xA8", //моÑи
+ "\xA4\xE0\xA0\xAA\xAE\xAD\xA0", //дÑакона
+ "\xE4\xAE\xE2\xAE\xAD\xA0", //ÑоÑона
+ "\xE3\xAC\xA0", //Ñма
+ "\xE0\xA0\xA7\xE3\xAC\xA0", //ÑазÑма
+ "\xA2\xAE\xAB\xE5\xA2\xA0", //волÑ
ва
+ "\xAC\xEB\xE1\xAB\xA8", //мÑÑли
+ "\xA7\xAD\xA0\xAD\xA8\xEF", //знаниÑ
+ "\xA8\xAD\xE2\xA5\xAB\xAB\xA5\xAA\xE2\xA0", //инÑеллекÑа
+ "\xAC\xE3\xA4\xE0\xAE\xE1\xE2\xA8", //мÑдÑоÑÑи
+ "\xA3\xA5\xAD\xA8\xEF", //гениÑ
+ "\xE1\xA8\xAC\xAF\xA0\xE2\xA8\xA8", //ÑимпаÑии
+ "\xA4\xE0\xE3\xA6\xA1\xEB", //дÑÑжбÑ
+ "\xAE\xA1\xA0\xEF\xAD\xA8\xEF", //обаÑниÑ
+ "\xE2\xA0\xAB\xA8\xE1\xAC\xA0\xAD", //ÑалиÑман
+ "\xE1\xA8\xAB\xEB \xA4\xE3\xE5\xA0", //ÑÐ¸Ð»Ñ Ð´ÑÑ
а
+ "\xE5\xA0\xE0\xA8\xA7\xAC\xEB", //Ñ
аÑизмÑ
+ "\xAB\xA8\xA4\xA5\xE0\xE1\xE2\xA2\xA0", //лидеÑÑÑва
+ "\xED\xA3\xAE", //Ñго
+ "\xE1\xA2\xEF\xE2\xAE\xE1\xE2\xA8", //ÑвÑÑоÑÑи
+ "\xAF\xE0\xEB\xE2\xAA\xAE\xE1\xE2\xA8", //пÑÑÑкоÑÑи
+ "\xE0\xA5\xA7\xA2\xAE\xE1\xE2\xA8", //ÑезвоÑÑи
+ "\xA1\xEB\xE1\xE2\xE0\xAE\xE2\xEB", //бÑÑÑÑоÑÑ
+ "\xE1\xE2\xE0\xA5\xAC\xA8\xE2\xA5\xAB\xEC\xAD\xAE\xE1\xE2\xA8", //ÑÑÑемиÑелÑноÑÑи
+ "\xE1\xAA\xAE\xE0\xAE\xE1\xE2\xA8", //ÑкоÑоÑÑи
+ "\xA2\xA5\xE2\xE0\xA0", //веÑÑа
+ "\xE3\xE1\xAA\xAE\xE0\xA5\xAD\xA8\xEF", //ÑÑкоÑениÑ
+ "\xE3\xE0\xA0\xA3\xA0\xAD\xA0", //ÑÑагана
+ "\xE2\xAE\xE7\xAD\xAE\xE1\xE2\xA8", //ÑоÑноÑÑи
+ "\xAC\xA5\xE2\xAA\xAE\xE1\xE2\xA8", //меÑкоÑÑи
+ "\xE1\xE2\xE0\xA5\xAB\xAA\xA0", //ÑÑÑелка
+ "\xAF\xE0\xA8\xE6\xA5\xAB\xEC\xAD\xAE\xE1\xE2\xA8", //пÑиÑелÑноÑÑи
+ "\xAD\xA0\xE6\xA5\xAB\xA5\xAD\xAD\xAE\xE1\xE2\xA8", //наÑеленноÑÑи
+ "\xEF\xE1\xE2\xE0\xA5\xA1\xA0", //ÑÑÑÑеба
+ "\xAA\xAB\xA5\xA2\xA5\xE0\xA0", //клевеÑа
+ "\xE8\xA0\xAD\xE1\xA0", //ÑанÑа
+ "\xAF\xAE\xA1\xA5\xA4\xA8\xE2\xA5\xAB\xEF", //победиÑелÑ
+ "\xE3\xA4\xA0\xE7\xA8", //ÑдаÑи
+ "\xA8\xA3\xE0\xAE\xAA\xA0", //игÑока
+ "\xAB\xA5\xAF\xE0\xA5\xAA\xAE\xAD\xA0", //лепÑекона
+ "\xA1\xAE\xA4\xE0\xAE\xE1\xE2\xA8", //бодÑоÑÑи
+ "\xA7\xA4\xAE\xE0\xAE\xA2\xEC\xEF", //здоÑовÑÑ
+ "\xA6\xA8\xA7\xAD\xA8", //жизни
+ "\xE2\xE0\xAE\xAB\xAB\xEF", //ÑÑоллÑ
+ "\xA2\xA0\xAC\xAF\xA8\xE0\xA0", //вампиÑа
+ "\xE7\xA0\xE0", //ÑаÑ
+ "\xA7\xA0\xAA\xAB\xA8\xAD\xA0\xE2\xA5\xAB\xEF", //заклинаÑелÑ
+ "\xA2\xA5\xA4\xEC\xAC\xEB", //ведÑмÑ
+ "\xAC\xA0\xA3\xA0", //мага
+ "\xA0\xE0\xE5\xA8\xAC\xA0\xA3\xA0", //аÑÑ
имага
+ "\xE2\xA0\xA9\xAD\xEB\xE5 \xA7\xAD\xA0\xAD\xA8\xA9", //ÑайнÑÑ
знаний
+ "\xA7\xA0\xE9\xA8\xE2\xEB", //заÑиÑÑ
+ "\xA1\xE0\xAE\xAD\xA8", //бÑони
+ "\xA7\xA0\xE9\xA8\xE2\xAD\xA8\xAA\xA0", //заÑиÑника
+ "\xAB\xAE\xA2\xAA\xAE\xE1\xE2\xA8", //ловкоÑÑи
+ "\xAF\xE0\xA5\xA4\xE1\xAA\xA0\xA7\xA0\xE2\xA5\xAB\xEF", //пÑедÑказаÑелÑ
+ "\xAC\xAE\xE8\xA5\xAD\xAD\xA8\xAA\xA0", //моÑенника
+ "\xA2\xA7\xAB\xAE\xAC\xE9\xA8\xAA\xA0", //взломÑика
+ "\xAC\xA0\xE0\xAE\xA4\xF1\xE0\xA0", //маÑодÑÑа
+ "\xA1\xA0\xAD\xA4\xA8\xE2\xA0", //бандиÑа
+ "\xAA\xA0\xE0\xAC\xA0\xAD\xAD\xA8\xAA\xA0", //каÑманника
+ "\xA2\xAE\xE0\xA0", //воÑа
+ "\xE0\xA0\xA7\xA1\xAE\xA9\xAD\xA8\xAA\xA0", //Ñазбойника
+ "\xA3\xE0\xA0\xA1\xA8\xE2\xA5\xAB\xEF", //гÑабиÑелÑ
+ "\xAF\xE0\xA5\xE1\xE2\xE3\xAF\xAD\xA8\xAA\xA0", //пÑеÑÑÑпника
+ "\xAF\xA8\xE0\xA0\xE2\xA0" //пиÑаÑа
+ };
+ return _maeNames;
+ }
+
class RU_KeyConstants : public KeyConstants {
public:
class RU_DialogsCharInfo : public DialogsCharInfo {
diff --git a/dists/engine-data/xeen.ccs b/dists/engine-data/xeen.ccs
index fa36599e49..4eddc3c5a6 100644
Binary files a/dists/engine-data/xeen.ccs and b/dists/engine-data/xeen.ccs differ
diff --git a/engines/xeen/item.cpp b/engines/xeen/item.cpp
index bd08dcd494..dd81a7133c 100644
--- a/engines/xeen/item.cpp
+++ b/engines/xeen/item.cpp
@@ -288,6 +288,15 @@ void InventoryItems::capitalizeItem(Common::String &name) {
name.setChar(toupper(name[3]), 3);
}
+const char *InventoryItems::getMaeName(int material) {
+ if (Common::RU_RUS == g_vm->getLanguage()) {
+ return Res.MAE_NAMES[material];
+ } else {
+ Resources &res = *getVm()->_resources;
+ return res._maeNames[material].c_str();
+ }
+}
+
/*------------------------------------------------------------------------*/
void WeaponItems::equipItem(int itemIndex) {
@@ -342,17 +351,27 @@ void WeaponItems::equipItem(int itemIndex) {
Common::String WeaponItems::getFullDescription(int itemIndex, int displayNum) {
XeenItem &i = operator[](itemIndex);
- Resources &res = *getVm()->_resources;
-
- Common::String desc = Common::String::format("\f%02u%s%s%s\f%02u%s%s%s", displayNum,
- i._state._cursed || i._state._broken ? "" : res._maeNames[i._material].c_str(),
- i._state._broken ? Res.ITEM_BROKEN : "",
- i._state._cursed ? Res.ITEM_CURSED : "",
- displayNum,
- Res.WEAPON_NAMES[i._id],
- !i._state._counter ? "" : Res.BONUS_NAMES[i._state._counter],
- (i._state._cursed || i._state._broken) || !i._id ? "\b " : ""
- );
+ Common::String desc;
+ if (Common::RU_RUS == g_vm->getLanguage())
+ desc = Common::String::format("\f%02u%s%s\f%02u%s%s%s%s", displayNum,
+ i._state._broken ? Res.ITEM_BROKEN : "",
+ i._state._cursed ? Res.ITEM_CURSED : "",
+ displayNum,
+ Res.WEAPON_NAMES[i._id],
+ i._state._cursed || i._state._broken ? "" : getMaeName(i._material),
+ !i._state._counter ? "" : Res.BONUS_NAMES[i._state._counter],
+ (i._state._cursed || i._state._broken) || !i._id ? "\b " : ""
+ );
+ else
+ desc = Common::String::format("\f%02u%s%s%s\f%02u%s%s%s", displayNum,
+ i._state._cursed || i._state._broken ? "" : getMaeName(i._material),
+ i._state._broken ? Res.ITEM_BROKEN : "",
+ i._state._cursed ? Res.ITEM_CURSED : "",
+ displayNum,
+ Res.WEAPON_NAMES[i._id],
+ !i._state._counter ? "" : Res.BONUS_NAMES[i._state._counter],
+ (i._state._cursed || i._state._broken) || !i._id ? "\b " : ""
+ );
capitalizeItem(desc);
return desc;
}
@@ -515,16 +534,26 @@ void ArmorItems::equipItem(int itemIndex) {
Common::String ArmorItems::getFullDescription(int itemIndex, int displayNum) {
XeenItem &i = operator[](itemIndex);
- Resources &res = *getVm()->_resources;
-
- Common::String desc = Common::String::format("\f%02u%s%s%s\f%02u%s%s", displayNum,
- i._state._cursed || i._state._broken ? "" : res._maeNames[i._material].c_str(),
- i._state._broken ? Res.ITEM_BROKEN : "",
- i._state._cursed ? Res.ITEM_CURSED : "",
- displayNum,
- Res.ARMOR_NAMES[i._id],
- (i._state._cursed || i._state._broken) || !i._id ? "\b " : ""
- );
+ Common::String desc;
+
+ if (Common::RU_RUS == g_vm->getLanguage())
+ desc = Common::String::format("\f%02u%s%s\f%02u%s%s%s", displayNum,
+ i._state._broken ? Res.ITEM_BROKEN : "",
+ i._state._cursed ? Res.ITEM_CURSED : "",
+ displayNum,
+ Res.ARMOR_NAMES[i._id],
+ i._state._cursed || i._state._broken ? "" : getMaeName(i._material),
+ (i._state._cursed || i._state._broken) || !i._id ? "\b " : ""
+ );
+ else
+ desc = Common::String::format("\f%02u%s%s%s\f%02u%s%s", displayNum,
+ i._state._cursed || i._state._broken ? "" : getMaeName(i._material),
+ i._state._broken ? Res.ITEM_BROKEN : "",
+ i._state._cursed ? Res.ITEM_CURSED : "",
+ displayNum,
+ Res.ARMOR_NAMES[i._id],
+ (i._state._cursed || i._state._broken) || !i._id ? "\b " : ""
+ );
capitalizeItem(desc);
return desc;
}
@@ -635,16 +664,26 @@ void AccessoryItems::equipItem(int itemIndex) {
Common::String AccessoryItems::getFullDescription(int itemIndex, int displayNum) {
XeenItem &i = operator[](itemIndex);
- Resources &res = *getVm()->_resources;
-
- Common::String desc = Common::String::format("\f%02u%s%s%s\f%02u%s%s", displayNum,
- i._state._cursed || i._state._broken ? "" : res._maeNames[i._material].c_str(),
- i._state._broken ? Res.ITEM_BROKEN : "",
- i._state._cursed ? Res.ITEM_CURSED : "",
- displayNum,
- Res.ACCESSORY_NAMES[i._id],
- (i._state._cursed || i._state._broken) || !i._id ? "\b " : ""
- );
+ Common::String desc;
+
+ if (Common::RU_RUS == g_vm->getLanguage())
+ desc = Common::String::format("\f%02u%s%s\f%02u%s%s%s", displayNum,
+ i._state._broken ? Res.ITEM_BROKEN : "",
+ i._state._cursed ? Res.ITEM_CURSED : "",
+ displayNum,
+ Res.ACCESSORY_NAMES[i._id],
+ i._state._cursed || i._state._broken ? "" : getMaeName(i._material),
+ (i._state._cursed || i._state._broken) || !i._id ? "\b " : ""
+ );
+ else
+ desc = Common::String::format("\f%02u%s%s%s\f%02u%s%s", displayNum,
+ i._state._cursed || i._state._broken ? "" : getMaeName(i._material),
+ i._state._broken ? Res.ITEM_BROKEN : "",
+ i._state._cursed ? Res.ITEM_CURSED : "",
+ displayNum,
+ Res.ACCESSORY_NAMES[i._id],
+ (i._state._cursed || i._state._broken) || !i._id ? "\b " : ""
+ );
capitalizeItem(desc);
return desc;
}
diff --git a/engines/xeen/item.h b/engines/xeen/item.h
index 87ae29acce..859ec75c8e 100644
--- a/engines/xeen/item.h
+++ b/engines/xeen/item.h
@@ -172,6 +172,12 @@ protected:
* Capitalizes a passed description string that includes embedded formatting for the Items dialog
*/
void capitalizeItem(Common::String &name);
+
+ /**
+ * Get Material Name
+ */
+ const char *getMaeName(int material);
+
public:
InventoryItems(Character *character, ItemCategory category);
virtual ~InventoryItems() {}
diff --git a/engines/xeen/resources.cpp b/engines/xeen/resources.cpp
index 53d90e2e24..e1c73921ca 100644
--- a/engines/xeen/resources.cpp
+++ b/engines/xeen/resources.cpp
@@ -419,6 +419,7 @@ void Resources::loadData() {
file.syncString(DARKSIDE_ENDING2);
file.syncString(PHAROAH_ENDING_TEXT1);
file.syncString(PHAROAH_ENDING_TEXT2);
+ file.syncStrings(MAE_NAMES, 131);
ResFile keys("CONSTKEYS_", _buffer, lang);
keys.syncNumber(KeyConstants.DialogsCharInfo.KEY_ITEM);
diff --git a/engines/xeen/resources.h b/engines/xeen/resources.h
index a73b98e26b..d44ae843ad 100644
--- a/engines/xeen/resources.h
+++ b/engines/xeen/resources.h
@@ -473,6 +473,7 @@ public:
const char *DARKSIDE_ENDING2;
const char *PHAROAH_ENDING_TEXT1;
const char *PHAROAH_ENDING_TEXT2;
+ const char *MAE_NAMES[131];
struct {
More information about the Scummvm-git-logs
mailing list