1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20  *
21  */
22 
23 #ifndef CONSTANTS_H
24 #define CONSTANTS_H
25 
26 #include "common/scummsys.h"
27 #include "cc.h"
28 
29 enum MagicSpell {
30 	MS_AcidSpray = 0,
31 	MS_Awaken = 1,
32 	MS_BeastMaster = 2,
33 	MS_Bless = 3,
34 	MS_Clairvoyance = 4,
35 	MS_ColdRay = 5,
36 	MS_CreateFood = 6,
37 	MS_CureDisease = 7,
38 	MS_CureParalysis = 8,
39 	MS_CurePoison = 9,
40 	MS_CureWounds = 10,
41 	MS_DancingSword = 11,
42 	MS_DayOfProtection = 12,
43 	MS_DayOfSorcery = 13,
44 	MS_DeadlySwarm = 14,
45 	MS_DetectMonster = 15,
46 	MS_DivineIntervention = 16,
47 	MS_DragonSleep = 17,
48 	MS_ElementalStorm = 18,
49 	MS_EnchantItem = 19,
50 	MS_EnergyBlast = 20,
51 	MS_Etheralize = 21,
52 	MS_FantasticFreeze = 22,
53 	MS_FieryFlail = 23,
54 	MS_FingerOfDeath = 24,
55 	MS_Fireball = 25,
56 	MS_FirstAid = 26,
57 	MS_FlyingFist = 27,
58 	MS_FrostBite = 28,
59 	MS_GolemStopper = 29,
60 	MS_Heroism = 30,
61 	MS_HolyBonus = 31,
62 	MS_HolyWord = 32,
63 	MS_Hynotize = 33,
64 	MS_IdentifyMonster = 34,
65 	MS_Implosion = 35,
66 	MS_Incinerate = 36,
67 	MS_Inferno = 37,
68 	MS_InsectSpray = 38,
69 	MS_ItemToGold = 39,
70 	MS_Jump = 40,
71 	MS_Levitate = 41,
72 	MS_Light = 42,
73 	MS_LightningBolt = 43,
74 	MS_LloydsBeacon = 44,
75 	MS_MagicArrow = 45,
76 	MS_MassDistortion = 46,
77 	MS_MegaVolts = 47,
78 	MS_MoonRay = 48,
79 	MS_NaturesCure = 49,
80 	MS_Pain = 50,
81 	MS_PoisonVolley = 51,
82 	MS_PowerCure = 52,
83 	MS_PowerShield = 53,
84 	MS_PrismaticLight = 54,
85 	MS_ProtFromElements = 55,
86 	MS_RaiseDead = 56,
87 	MS_RechargeItem = 57,
88 	MS_Resurrection = 58,
89 	MS_Revitalize = 59,
90 	MS_Shrapmetal = 60,
91 	MS_Sleep = 61,
92 	MS_Sparks = 62,
93 	MS_StarBurst = 63,
94 	MS_StoneToFlesh = 64,
95 	MS_SunRay = 65,
96 	MS_SuperShelter = 66,
97 	MS_SuppressDisease = 67,
98 	MS_SuppressPoison = 68,
99 	MS_Teleport = 69,
100 	MS_TimeDistortion = 70,
101 	MS_TownPortal = 71,
102 	MS_ToxicCloud = 72,
103 	MS_TurnUndead = 73,
104 	MS_WalkOnWater = 74,
105 	MS_WizardEye = 75,
106 	NO_SPELL = 76
107 };
108 
109 class LangConstants {
110 public:
111 	static const char *const TERRAIN_TYPES[6];
112 	static const char *const OUTDOORS_WALL_TYPES[16];
113 	static const char *const SURFACE_NAMES[16];
114 	static const byte SYMBOLS[20][64];
115 	static const byte TEXT_COLORS[40][4];
116 	static const byte TEXT_COLORS_STARTUP[40][4];
117 	static const int RACE_HP_BONUSES[5];
118 	static const int RACE_SP_BONUSES[5][2];
119 	static const int CLASS_EXP_LEVELS[10];
120 	static const int CONDITION_COLORS[17];
121 	static const int FACE_CONDITION_FRAMES[17];
122 	static const int CHAR_FACES_X[6];
123 	static const int HP_BARS_X[6];
124 	static const byte DARKNESS_XLAT[3][256];
125 	static const int SCREEN_POSITIONING_X[4][48];
126 	static const int SCREEN_POSITIONING_Y[4][48];
127 	static const int MONSTER_GRID_BITMASK[12];
128 	static const int INDOOR_OBJECT_X[2][12];
129 	static const int MAP_OBJECT_Y[2][12];
130 	static const int INDOOR_MONSTERS_Y[4];
131 	static const int OUTDOOR_OBJECT_X[2][12];
132 	static const int OUTDOOR_MONSTER_INDEXES[26];
133 	static const int OUTDOOR_MONSTERS_Y[26];
134 	static const int DIRECTION_ANIM_POSITIONS[4][4];
135 	static const byte WALL_SHIFTS[4][48];
136 	static const int DRAW_NUMBERS[25];
137 	static const int DRAW_FRAMES[25][2];
138 	static const int COMBAT_FLOAT_X[8];
139 	static const int COMBAT_FLOAT_Y[8];
140 	static const int MONSTER_EFFECT_FLAGS[15][8];
141 	static const int SPELLS_ALLOWED[3][40];
142 	static const int BASE_HP_BY_CLASS[10];
143 	static const int AGE_RANGES[10];
144 	static const int AGE_RANGES_ADJUST[2][10];
145 	static const int STAT_VALUES[24];
146 	static const int STAT_BONUSES[24];
147 	static const int ELEMENTAL_CATEGORIES[6];
148 	static const int ATTRIBUTE_CATEGORIES[10];
149 	static const int ATTRIBUTE_BONUSES[72];
150 	static const int ELEMENTAL_RESISTENCES[37];
151 	static const int ELEMENTAL_DAMAGE[37];
152 	static const int WEAPON_DAMAGE_BASE[35];
153 	static const int WEAPON_DAMAGE_MULTIPLIER[35];
154 	static const int METAL_DAMAGE[22];
155 	static const int METAL_DAMAGE_PERCENT[22];
156 	static const int METAL_LAC[22];
157 	static const int ARMOR_STRENGTHS[14];
158 	static const int MAKE_ITEM_ARR1[6];
159 	static const int MAKE_ITEM_ARR2[6][7][2];
160 	static const int MAKE_ITEM_ARR3[10][7][2];
161 	static const int MAKE_ITEM_ARR4[2][7][2];
162 	static const int MAKE_ITEM_ARR5[8][2];
163 	static const int OUTDOOR_DRAWSTRUCT_INDEXES[44];
164 	static const int TOWN_MAXES[2][11];
165 	static const char *const TOWN_ACTION_MUSIC[2][7];
166 	static const char *const TOWN_ACTION_SHAPES[7];
167 	static const int TOWN_ACTION_FILES[2][7];
168 	static const int TAVERN_EXIT_LIST[2][6][5][2];
169 	static const int MISC_SPELL_INDEX[74];
170 	static const int SPELL_COSTS[77];
171 	static const int DARK_SPELL_RANGES[12][2];
172 	static const int SWORDS_SPELL_RANGES[12][2];
173 	static const int CLOUDS_GUILD_SPELLS[5][20];
174 	static const int DARK_SPELL_OFFSETS[3][39];
175 	static const int SPELL_GEM_COST[77];
176 	static const int BLACKSMITH_MAP_IDS[2][4];
177 	static const int WEAPON_BASE_COSTS[35];
178 	static const int ARMOR_BASE_COSTS[14];
179 	static const int ACCESSORY_BASE_COSTS[11];
180 	static const int MISC_MATERIAL_COSTS[22];
181 	static const int MISC_BASE_COSTS[76];
182 	static const int METAL_BASE_MULTIPLIERS[22];
183 	static const int ITEM_SKILL_DIVISORS[4];
184 	static const int RESTRICTION_OFFSETS[4];
185 	static const int ITEM_RESTRICTIONS[86];
186 	static const int NEW_CHAR_SKILLS[10];
187 	static const int NEW_CHAR_SKILLS_LEN[10];
188 	static const int NEW_CHAR_RACE_SKILLS[10];
189 	static const int RACE_MAGIC_RESISTENCES[5];
190 	static const int RACE_FIRE_RESISTENCES[5];
191 	static const int RACE_ELECTRIC_RESISTENCES[5];
192 	static const int RACE_COLD_RESISTENCES[5];
193 	static const int RACE_ENERGY_RESISTENCES[5];
194 	static const int RACE_POISON_RESISTENCES[5];
195 	static const int NEW_CHARACTER_SPELLS[10][4];
196 	static const int TOWN_MAP_NUMBERS[3][5];
197 	static const char *const EVENT_SAMPLES[6];
198 	static const char *const MUSIC_FILES1[5];
199 	static const char *const MUSIC_FILES2[6][7];
200 
~LangConstants()201 	virtual ~LangConstants() {}
202 	virtual const char  *CLOUDS_CREDITS() = 0;
203 	virtual const char  *DARK_SIDE_CREDITS() = 0;
204 	virtual const char  *SWORDS_CREDITS1() = 0;
205 	virtual const char  *SWORDS_CREDITS2() = 0;
206 	virtual const char  *OPTIONS_MENU() = 0;
207 	virtual const char **GAME_NAMES() = 0;
208 	virtual const char  *THE_PARTY_NEEDS_REST() = 0;
209 	virtual const char  *WHO_WILL() = 0;
210 	virtual const char  *HOW_MUCH() = 0;
211 	virtual const char  *WHATS_THE_PASSWORD() = 0;
212 	virtual const char  *PASSWORD_INCORRECT() = 0;
213 	virtual const char  *IN_NO_CONDITION() = 0;
214 	virtual const char  *NOTHING_HERE() = 0;
215 	virtual const char **WHO_ACTIONS() = 0;
216 	virtual const char **WHO_WILL_ACTIONS() = 0;
217 	virtual const char **DIRECTION_TEXT_UPPER() = 0;
218 	virtual const char **DIRECTION_TEXT() = 0;
219 	virtual const char **RACE_NAMES() = 0;
220 	virtual const char **ALIGNMENT_NAMES() = 0;
221 	virtual const char **SEX_NAMES() = 0;
222 	virtual const char **SKILL_NAMES() = 0;
223 	virtual const char **CLASS_NAMES() = 0;
224 	virtual const char **CONDITION_NAMES_M() = 0;
225 	virtual const char **CONDITION_NAMES_F() = 0;
226 	virtual const char *GOOD() = 0;
227 	virtual const char *BLESSED() = 0;
228 	virtual const char *POWER_SHIELD() = 0;
229 	virtual const char *HOLY_BONUS() = 0;
230 	virtual const char *HEROISM() = 0;
231 	virtual const char *IN_PARTY() = 0;
232 	virtual const char *PARTY_DETAILS() = 0;
233 	virtual const char *PARTY_DIALOG_TEXT() = 0;
234 	virtual const char *NO_ONE_TO_ADVENTURE_WITH() = 0;
235 	virtual const char *YOUR_ROSTER_IS_FULL() = 0;
236 	virtual const char *PLEASE_WAIT() = 0;
237 	virtual const char *OOPS() = 0;
238 	virtual const char *BANK_TEXT() = 0;
239 	virtual const char *BLACKSMITH_TEXT() = 0;
240 	virtual const char *GUILD_NOT_MEMBER_TEXT() = 0;
241 	virtual const char *GUILD_TEXT() = 0;
242 	virtual const char *TAVERN_TEXT() = 0;
243 	virtual const char *FOOD_AND_DRINK() = 0;
244 	virtual const char *GOOD_STUFF() = 0;
245 	virtual const char *HAVE_A_DRINK() = 0;
246 	virtual const char *YOURE_DRUNK() = 0;
247 	virtual const char  *TEMPLE_TEXT() = 0;
248 	virtual const char  *EXPERIENCE_FOR_LEVEL() = 0;
249 	virtual const char  *TRAINING_LEARNED_ALL() = 0;
250 	virtual const char  *ELIGIBLE_FOR_LEVEL() = 0;
251 	virtual const char  *TRAINING_TEXT() = 0;
252 	virtual const char  *GOLD_GEMS() = 0;
253 	virtual const char  *GOLD_GEMS_2() = 0;
254 	virtual const char **DEPOSIT_WITHDRAWL() = 0;
255 	virtual const char  *NOT_ENOUGH_X_IN_THE_Y() = 0;
256 	virtual const char  *NO_X_IN_THE_Y() = 0;
257 	virtual const char **STAT_NAMES() = 0;
258 	virtual const char **CONSUMABLE_NAMES() = 0;
259 	virtual const char **CONSUMABLE_GOLD_FORMS() = 0;
260 	virtual const char **CONSUMABLE_GEM_FORMS() = 0;
261 	virtual const char **WHERE_NAMES() = 0;
262 	virtual const char  *AMOUNT() = 0;
263 	virtual const char  *FOOD_PACKS_FULL() = 0;
264 	virtual const char  *BUY_SPELLS() = 0;
265 	virtual const char  *GUILD_OPTIONS() = 0;
266 	virtual const char  *NOT_A_SPELL_CASTER() = 0;
267 	virtual const char  *SPELLS_LEARNED_ALL() = 0;
268 	virtual const char  *SPELLS_FOR() = 0;
269 	virtual const char  *SPELL_LINES_0_TO_9() = 0;
270 	virtual const char  *SPELLS_DIALOG_SPELLS() = 0;
271 	virtual const char  *SPELL_PTS() = 0;
272 	virtual const char  *GOLD() = 0;
273 	virtual const char  *SPELL_INFO() = 0;
274 	virtual const char  *SPELL_PURCHASE() = 0;
275 	virtual const char  *MAP_TEXT() = 0;
276 	virtual const char  *LIGHT_COUNT_TEXT() = 0;
277 	virtual const char  *FIRE_RESISTENCE_TEXT() = 0;
278 	virtual const char  *ELECRICITY_RESISTENCE_TEXT() = 0;
279 	virtual const char  *COLD_RESISTENCE_TEXT() = 0;
280 	virtual const char  *POISON_RESISTENCE_TEXT() = 0;
281 	virtual const char  *CLAIRVOYANCE_TEXT() = 0;
282 	virtual const char  *LEVITATE_TEXT() = 0;
283 	virtual const char  *WALK_ON_WATER_TEXT() = 0;
284 	virtual const char  *GAME_INFORMATION() = 0;
285 	virtual const char  *WORLD_GAME_TEXT() = 0;
286 	virtual const char  *DARKSIDE_GAME_TEXT() = 0;
287 	virtual const char  *CLOUDS_GAME_TEXT() = 0;
288 	virtual const char  *SWORDS_GAME_TEXT() = 0;
289 	virtual const char **WEEK_DAY_STRINGS() = 0;
290 	virtual const char  *CHARACTER_DETAILS() = 0;
291 	virtual const char **DAYS() = 0;
292 	virtual const char  *PARTY_GOLD() = 0;
293 	virtual const char  *PLUS_14() = 0;
294 	virtual const char  *CHARACTER_TEMPLATE() = 0;
295 	virtual const char  *EXCHANGING_IN_COMBAT() = 0;
296 	virtual const char  *CURRENT_MAXIMUM_RATING_TEXT() = 0;
297 	virtual const char  *CURRENT_MAXIMUM_TEXT() = 0;
298 	virtual const char **RATING_TEXT() = 0;
299 	virtual const char **BORN() = 0;
300 	virtual const char  *AGE_TEXT() = 0;
301 	virtual const char  *LEVEL_TEXT() = 0;
302 	virtual const char  *RESISTENCES_TEXT() = 0;
303 	virtual const char  *NONE() = 0;
304 	virtual const char  *EXPERIENCE_TEXT() = 0;
305 	virtual const char  *ELIGIBLE() = 0;
306 	virtual const char  *IN_PARTY_IN_BANK() = 0;
307 	virtual const char **FOOD_ON_HAND() = 0;
308 	virtual const char  *FOOD_TEXT() = 0;
309 	virtual const char  *EXCHANGE_WITH_WHOM() = 0;
310 	virtual const char  *QUICK_REF_LINE() = 0;
311 	virtual const char  *QUICK_REFERENCE() = 0;
312 	virtual const char  *ITEMS_DIALOG_TEXT1() = 0;
313 	virtual const char  *ITEMS_DIALOG_TEXT2() = 0;
314 	virtual const char  *ITEMS_DIALOG_LINE1() = 0;
315 	virtual const char  *ITEMS_DIALOG_LINE2() = 0;
316 	virtual const char  *BTN_BUY() = 0;
317 	virtual const char  *BTN_SELL() = 0;
318 	virtual const char  *BTN_IDENTIFY() = 0;
319 	virtual const char  *BTN_FIX() = 0;
320 	virtual const char  *BTN_USE() = 0;
321 	virtual const char  *BTN_EQUIP() = 0;
322 	virtual const char  *BTN_REMOVE() = 0;
323 	virtual const char  *BTN_DISCARD() = 0;
324 	virtual const char  *BTN_QUEST() = 0;
325 	virtual const char  *BTN_ENCHANT() = 0;
326 	virtual const char  *BTN_RECHARGE() = 0;
327 	virtual const char  *BTN_GOLD() = 0;
328 	virtual const char  *ITEM_BROKEN() = 0;
329 	virtual const char  *ITEM_CURSED() = 0;
330 	virtual const char  *ITEM_OF() = 0;
331 	virtual const char **BONUS_NAMES() = 0;
332 	virtual const char **WEAPON_NAMES() = 0;
333 	virtual const char **ARMOR_NAMES() = 0;
334 	virtual const char **ACCESSORY_NAMES() = 0;
335 	virtual const char **MISC_NAMES() = 0;
336 	virtual const char **SPECIAL_NAMES() = 0;
337 	virtual const char **ELEMENTAL_NAMES() = 0;
338 	virtual const char **ATTRIBUTE_NAMES() = 0;
339 	virtual const char **EFFECTIVENESS_NAMES() = 0;
340 	virtual const char **QUEST_ITEM_NAMES() = 0;
341 	virtual const char **QUEST_ITEM_NAMES_SWORDS() = 0;
342 	virtual const char  *NOT_PROFICIENT() = 0;
343 	virtual const char  *NO_ITEMS_AVAILABLE() = 0;
344 	virtual const char **CATEGORY_NAMES() = 0;
345 	virtual const char  *X_FOR_THE_Y() = 0;
346 	virtual const char  *X_FOR_Y() = 0;
347 	virtual const char  *X_FOR_Y_GOLD() = 0;
348 	virtual const char  *FMT_CHARGES() = 0;
349 	virtual const char  *AVAILABLE_GOLD_COST() = 0;
350 	virtual const char  *CHARGES() = 0;
351 	virtual const char  *COST() = 0;
352 	virtual const char **ITEM_ACTIONS() = 0;
353 	virtual const char  *WHICH_ITEM() = 0;
354 	virtual const char  *WHATS_YOUR_HURRY() = 0;
355 	virtual const char  *USE_ITEM_IN_COMBAT() = 0;
356 	virtual const char  *NO_SPECIAL_ABILITIES() = 0;
357 	virtual const char  *CANT_CAST_WHILE_ENGAGED() = 0;
358 	virtual const char  *EQUIPPED_ALL_YOU_CAN() = 0;
359 	virtual const char  *REMOVE_X_TO_EQUIP_Y() = 0;
360 	virtual const char  *RING() = 0;
361 	virtual const char  *MEDAL() = 0;
362 	virtual const char  *CANNOT_REMOVE_CURSED_ITEM() = 0;
363 	virtual const char  *CANNOT_DISCARD_CURSED_ITEM() = 0;
364 	virtual const char  *PERMANENTLY_DISCARD() = 0;
365 	virtual const char  *BACKPACK_IS_FULL() = 0;
366 	virtual const char **CATEGORY_BACKPACK_IS_FULL() = 0;
367 	virtual const char  *BUY_X_FOR_Y_GOLD() = 0;
368 	virtual const char  *SELL_X_FOR_Y_GOLD() = 0;
369 	virtual const char **GOLDS() = 0;
370 	virtual const char  *NO_NEED_OF_THIS() = 0;
371 	virtual const char  *NOT_RECHARGABLE() = 0;
372 	virtual const char  *NOT_ENCHANTABLE() = 0;
373 	virtual const char  *SPELL_FAILED() = 0;
374 	virtual const char  *ITEM_NOT_BROKEN() = 0;
375 	virtual const char **FIX_IDENTIFY() = 0;
376 	virtual const char  *FIX_IDENTIFY_GOLD() = 0;
377 	virtual const char  *IDENTIFY_ITEM_MSG() = 0;
378 	virtual const char  *ITEM_DETAILS() = 0;
379 	virtual const char  *ALL() = 0;
380 	virtual const char  *FIELD_NONE() = 0;
381 	virtual const char  *DAMAGE_X_TO_Y() = 0;
382 	virtual const char  *ELEMENTAL_XY_DAMAGE() = 0;
383 	virtual const char  *ATTR_XY_BONUS() = 0;
384 	virtual const char  *EFFECTIVE_AGAINST() = 0;
385 	virtual const char  *QUESTS_DIALOG_TEXT() = 0;
386 	virtual const char  *CLOUDS_OF_XEEN_LINE() = 0;
387 	virtual const char  *DARKSIDE_OF_XEEN_LINE() = 0;
388 	virtual const char  *SWORDS_OF_XEEN_LINE() = 0;
389 	virtual const char  *NO_QUEST_ITEMS() = 0;
390 	virtual const char  *NO_CURRENT_QUESTS() = 0;
391 	virtual const char  *NO_AUTO_NOTES() = 0;
392 	virtual const char  *QUEST_ITEMS_DATA() = 0;
393 	virtual const char  *CURRENT_QUESTS_DATA() = 0;
394 	virtual const char  *AUTO_NOTES_DATA() = 0;
395 	virtual const char  *REST_COMPLETE() = 0;
396 	virtual const char  *PARTY_IS_STARVING() = 0;
397 	virtual const char  *HIT_SPELL_POINTS_RESTORED() = 0;
398 	virtual const char  *TOO_DANGEROUS_TO_REST() = 0;
399 	virtual const char  *SOME_CHARS_MAY_DIE() = 0;
400 	virtual const char  *DISMISS_WHOM() = 0;
401 	virtual const char  *CANT_DISMISS_LAST_CHAR() = 0;
402 	virtual const char  *DELETE_CHAR_WITH_ELDER_WEAPON() = 0;
403 	virtual const char **REMOVE_DELETE() = 0;
404 	virtual const char  *REMOVE_OR_DELETE_WHICH() = 0;
405 	virtual const char  *YOUR_PARTY_IS_FULL() = 0;
406 	virtual const char  *HAS_SLAYER_SWORD() = 0;
407 	virtual const char  *SURE_TO_DELETE_CHAR() = 0;
408 	virtual const char  *CREATE_CHAR_DETAILS() = 0;
409 	virtual const char  *NEW_CHAR_STATS() = 0;
410 	virtual const char  *NAME_FOR_NEW_CHARACTER() = 0;
411 	virtual const char  *SELECT_CLASS_BEFORE_SAVING() = 0;
412 	virtual const char  *EXCHANGE_ATTR_WITH() = 0;
413 	virtual const int *NEW_CHAR_SKILLS_OFFSET() = 0;
414 	virtual const char  *COMBAT_DETAILS() = 0;
415 	virtual const char  *NOT_ENOUGH_TO_CAST() = 0;
416 	virtual const char **SPELL_CAST_COMPONENTS() = 0;
417 	virtual const char  *CAST_SPELL_DETAILS() = 0;
418 	virtual const char  *PARTY_FOUND() = 0;
419 	virtual const char  *BACKPACKS_FULL_PRESS_KEY() = 0;
420 	virtual const char  *HIT_A_KEY() = 0;
421 	virtual const char  *GIVE_TREASURE_FORMATTING() = 0;
422 	virtual const char **FOUND() = 0;
423 	virtual const char  *X_FOUND_Y() = 0;
424 	virtual const char  *ON_WHO() = 0;
425 	virtual const char  *WHICH_ELEMENT1() = 0;
426 	virtual const char  *WHICH_ELEMENT2() = 0;
427 	virtual const char  *DETECT_MONSTERS() = 0;
428 	virtual const char  *LLOYDS_BEACON() = 0;
429 	virtual const char  *HOW_MANY_SQUARES() = 0;
430 	virtual const char  *TOWN_PORTAL() = 0;
431 	virtual const char  *TOWN_PORTAL_SWORDS() = 0;
432 	virtual const char  *MONSTER_DETAILS() = 0;
433 	virtual const char **MONSTER_SPECIAL_ATTACKS() = 0;
434 	virtual const char  *IDENTIFY_MONSTERS() = 0;
435 	virtual const char  *MOONS_NOT_ALIGNED() = 0;
436 	virtual const char  *AWARDS_FOR() = 0;
437 	virtual const char  *AWARDS_TEXT() = 0;
438 	virtual const char  *NO_AWARDS() = 0;
439 	virtual const char  *WARZONE_BATTLE_MASTER() = 0;
440 	virtual const char  *WARZONE_MAXED() = 0;
441 	virtual const char  *WARZONE_LEVEL() = 0;
442 	virtual const char  *WARZONE_HOW_MANY() = 0;
443 	virtual const char  *PICKS_THE_LOCK() = 0;
444 	virtual const char **PICK_FORM() = 0;
445 	virtual const char  *UNABLE_TO_PICK_LOCK() = 0;
446 	virtual const char **UNABLE_TO_PICK_FORM() = 0;
447 	virtual const char  *CONTROL_PANEL_TEXT() = 0;
448 	virtual const char  *CONTROL_PANEL_BUTTONS() = 0;
449 	virtual const char  *ON() = 0;
450 	virtual const char  *OFF() = 0;
451 	virtual const char  *CONFIRM_QUIT() = 0;
452 	virtual const char  *MR_WIZARD() = 0;
453 	virtual const char  *NO_LOADING_IN_COMBAT() = 0;
454 	virtual const char  *NO_SAVING_IN_COMBAT() = 0;
455 	virtual const char  *QUICK_FIGHT_TEXT() = 0;
456 	virtual const char **QUICK_FIGHT_OPTIONS() = 0;
457 	virtual const char **WORLD_END_TEXT() = 0;
458 	virtual const char  *WORLD_CONGRATULATIONS() = 0;
459 	virtual const char  *WORLD_CONGRATULATIONS2() = 0;
460 	virtual const char  *CLOUDS_CONGRATULATIONS1() = 0;
461 	virtual const char  *CLOUDS_CONGRATULATIONS2() = 0;
462 	virtual const char **GOOBER() = 0;
463 	virtual const char  *DIFFICULTY_TEXT() = 0;
464 	virtual const char  *SAVE_OFF_LIMITS() = 0;
465 	virtual const char  *CLOUDS_INTRO1() = 0;
466 	virtual const char  *DARKSIDE_ENDING1() = 0;
467 	virtual const char  *DARKSIDE_ENDING2() = 0;
468 	virtual const char  *PHAROAH_ENDING_TEXT1() = 0;
469 	virtual const char  *PHAROAH_ENDING_TEXT2() = 0;
470 	virtual const char **CLOUDS_MAE_NAMES() = 0;
471 	virtual const char **CLOUDS_MIRROR_LOCATIONS() = 0;
472 	virtual const char **CLOUDS_MAP_NAMES() = 0;
473 	virtual const char **CLOUDS_MONSTERS() = 0;
474 	virtual const char **CLOUDS_SPELLS() = 0;
475 
476 	void writeConstants(Common::String num, CCArchive &cc);
477 
478 	class KeyConstants {
479 	public:
480 		class DialogsCharInfo {
481 		public:
482 			virtual int KEY_ITEM() = 0;
483 			virtual int KEY_QUICK() = 0;
484 			virtual int KEY_EXCHANGE() = 0;
~DialogsCharInfo()485 			virtual ~DialogsCharInfo() {}
486 		};
487 		virtual DialogsCharInfo *dialogsCharInfo() = 0;
488 
489 		class DialogsControlPanel {
490 		public:
491 			virtual int KEY_FXON() = 0;
492 			virtual int KEY_MUSICON() = 0;
493 			virtual int KEY_LOAD() = 0;
494 			virtual int KEY_SAVE() = 0;
495 			virtual int KEY_QUIT() = 0;
496 			virtual int KEY_MRWIZARD() = 0;
~DialogsControlPanel()497 			virtual ~DialogsControlPanel() {}
498 		};
499 		virtual DialogsControlPanel *dialogsControlPanel() = 0;
500 
501 		class DialogsCreateChar {
502 		public:
503 			virtual int KEY_ROLL() = 0;
504 			virtual int KEY_CREATE() = 0;
505 			virtual int KEY_MGT() = 0;
506 			virtual int KEY_INT() = 0;
507 			virtual int KEY_PER() = 0;
508 			virtual int KEY_END() = 0;
509 			virtual int KEY_SPD() = 0;
510 			virtual int KEY_ACY() = 0;
511 			virtual int KEY_LCK() = 0;
~DialogsCreateChar()512 			virtual ~DialogsCreateChar() {}
513 		};
514 		virtual DialogsCreateChar *dialogsCreateChar() = 0;
515 
516 		class DialogsDifficulty {
517 		public:
518 			virtual int KEY_ADVENTURER() = 0;
519 			virtual int KEY_WARRIOR() = 0;
~DialogsDifficulty()520 			virtual ~DialogsDifficulty() {}
521 		};
522 		virtual DialogsDifficulty *dialogsDifficulty() = 0;
523 
524 		class DialogsItems {
525 		public:
526 			virtual int KEY_WEAPONS() = 0;
527 			virtual int KEY_ARMOR() = 0;
528 			virtual int KEY_ACCESSORY() = 0;
529 			virtual int KEY_MISC() = 0;
530 			virtual int KEY_ENCHANT() = 0;
531 			virtual int KEY_USE() = 0;
532 			virtual int KEY_BUY() = 0;
533 			virtual int KEY_SELL() = 0;
534 			virtual int KEY_IDENTIFY() = 0;
535 			virtual int KEY_FIX() = 0;
536 			virtual int KEY_EQUIP() = 0;
537 			virtual int KEY_REM() = 0;
538 			virtual int KEY_DISC() = 0;
539 			virtual int KEY_QUEST() = 0;
540 			virtual int KEY_RECHRG() = 0;
541 			virtual int KEY_GOLD() = 0;
~DialogsItems()542 			virtual ~DialogsItems() {}
543 		};
544 		virtual DialogsItems *dialogsItems() = 0;
545 
546 		class DialogsParty {
547 		public:
548 			virtual int KEY_DELETE() = 0;
549 			virtual int KEY_REMOVE() = 0;
550 			virtual int KEY_CREATE() = 0;
551 			virtual int KEY_EXIT() = 0;
~DialogsParty()552 			virtual ~DialogsParty() {}
553 		};
554 		virtual DialogsParty *dialogsParty() = 0;
555 
556 		class DialogsQuests {
557 		public:
558 			virtual int KEY_QUEST_ITEMS() = 0;
559 			virtual int KEY_CURRENT_QUESTS() = 0;
560 			virtual int KEY_AUTO_NOTES() = 0;
~DialogsQuests()561 			virtual ~DialogsQuests() {}
562 		};
563 		virtual DialogsQuests *dialogsQuests() = 0;
564 
565 		class DialogsQuickFight {
566 		public:
567 			virtual int KEY_NEXT() = 0;
~DialogsQuickFight()568 			virtual ~DialogsQuickFight() {}
569 		};
570 		virtual DialogsQuickFight *dialogsQuickFight() = 0;
571 
572 		class DialogsSpells {
573 		public:
574 			virtual int KEY_CAST() = 0;
575 			virtual int KEY_NEW() = 0;
576 			virtual int KEY_FIRE() = 0;
577 			virtual int KEY_ELEC() = 0;
578 			virtual int KEY_COLD() = 0;
579 			virtual int KEY_ACID() = 0;
580 			virtual int KEY_SET() = 0;
581 			virtual int KEY_RETURN() = 0;
~DialogsSpells()582 			virtual ~DialogsSpells() {}
583 		};
584 		virtual DialogsSpells *dialogsSpells() = 0;
585 
586 		class Locations {
587 		public:
588 			virtual int KEY_DEP() = 0;
589 			virtual int KEY_WITH() = 0;
590 			virtual int KEY_GOLD() = 0;
591 			virtual int KEY_GEMS() = 0;
592 			virtual int KEY_BROWSE() = 0;
593 			virtual int KEY_BUY_SPELLS() = 0;
594 			virtual int KEY_SPELL_INFO() = 0;
595 			virtual int KEY_SIGN_IN() = 0;
596 			virtual int KEY_DRINK() = 0;
597 			virtual int KEY_FOOD() = 0;
598 			virtual int KEY_TIP() = 0;
599 			virtual int KEY_RUMORS() = 0;
600 			virtual int KEY_HEAL() = 0;
601 			virtual int KEY_DONATION() = 0;
602 			virtual int KEY_UNCURSE() = 0;
603 			virtual int KEY_TRAIN() = 0;
~Locations()604 			virtual ~Locations() {}
605 		};
606 		virtual Locations *locations() = 0;
607 
608 		class CloudsOfXeenMenu {
609 		public:
610 			virtual int KEY_START_NEW_GAME() = 0;
611 			virtual int KEY_LOAD_GAME() = 0;
612 			virtual int KEY_SHOW_CREDITS() = 0;
613 			virtual int KEY_VIEW_ENDGAME() = 0;
~CloudsOfXeenMenu()614 			virtual ~CloudsOfXeenMenu() {}
615 		};
616 		virtual CloudsOfXeenMenu *cloudsOfXeenMenu() = 0;
~KeyConstants()617 		virtual ~KeyConstants() {}
618 	};
619 	virtual KeyConstants *keyConstants() = 0;
620 };
621 
622 extern void writeConstants(CCArchive &cc);
623 
624 #endif
625