CONST.CPP (28620B)
1 // 2 // Copyright 2020 Electronic Arts Inc. 3 // 4 // TiberianDawn.DLL and RedAlert.dll and corresponding source code is free 5 // software: you can redistribute it and/or modify it under the terms of 6 // the GNU General Public License as published by the Free Software Foundation, 7 // either version 3 of the License, or (at your option) any later version. 8 9 // TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed 10 // in the hope that it will be useful, but with permitted additional restrictions 11 // under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT 12 // distributed with this program. You should have received a copy of the 13 // GNU General Public License along with permitted additional restrictions 14 // with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection 15 16 /* $Header: /CounterStrike/CONST.CPP 1 3/03/97 10:24a Joe_bostic $ */ 17 /*********************************************************************************************** 18 *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S *** 19 *********************************************************************************************** 20 * * 21 * Project Name : Command & Conquer * 22 * * 23 * File Name : CONST.CPP * 24 * * 25 * Programmer : Joe L. Bostic * 26 * * 27 * Start Date : September 20, 1993 * 28 * * 29 * Last Update : September 20, 1993 [JLB] * 30 * * 31 *---------------------------------------------------------------------------------------------* 32 * Functions: * 33 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 34 35 #include "function.h" 36 37 38 /*************************************************************************** 39 ** These are the access passwords used to activate cheat mode, editor mode, 40 ** and special game options. 41 */ 42 unsigned long const PlayCodes[] = { 43 0xE0792D6D, // Dwight Okahara 44 0x90046ECF, // Paul S. Mudra 45 0xC3EE9A26, // Frank Klepaki 46 0xED382178, // Ed Del Castillo 47 0L 48 }; 49 50 unsigned long const CheatCodes[] = { 51 0xA0E2AB53, // Joseph Hewitt 52 0x00532693, // Mike Lightner 53 0x7DDFF824, // Joe Bostic 54 0x2CB5CF01, // Phil Gorrow 55 0xB5B63531, // Bill Randolph 56 0xDFABC23A, // Adam Isgreen 57 0x52B19A22, // Erik Yeo 58 0xBE79088C, // David Dettmer 59 0xB216AE7E, // Barry Green 60 0x0E07B213, // Steve Tall 61 0L 62 }; 63 64 65 unsigned long const EditorCodes[] = { 66 0xA2C09326, // Erik Yeo 67 0x1F944BB3, // Mike Lightner 68 0xDE07154D, // Adam Isgreen 69 0x0E07B213, // Steve Tall 70 0x16B170B1, // Joe Bostic 71 0L 72 }; 73 74 75 /*********************************************************************************************** 76 ** Unit order names. These names correspond to the player selectable orders 77 ** a unit can have. The system initiated orders have no use for the ASCII name 78 ** associated, but they are listed here for completeness sake. 79 */ 80 char const * Missions[MISSION_COUNT] = { 81 "Sleep", 82 "Attack", 83 "Move", 84 "QMove", 85 "Retreat", 86 "Guard", 87 "Sticky", 88 "Enter", 89 "Capture", 90 "Harvest", 91 "Area Guard", 92 "Return", 93 "Stop", 94 "Ambush", 95 "Hunt", 96 "Unload", 97 "Sabotage", 98 "Construction", 99 "Selling", 100 "Repair", 101 "Rescue", 102 "Missile", 103 "Harmless" 104 }; 105 106 107 /*************************************************************************** 108 ** Special weapon names. 109 */ 110 #ifdef SCENARIO_EDITOR 111 char const * const SpecialWeaponName[SPC_COUNT] = { 112 "Sonar Pulse", 113 "Nuclear Missile", 114 "Chronosphere", 115 "Parachute Bomb", 116 "Paratroopers", 117 "Recon Plane", 118 "Iron Curtain", 119 "GPS Satellite" 120 }; 121 #endif 122 int const SpecialWeaponHelp[SPC_COUNT] = { 123 TXT_SONAR_PULSE, 124 TXT_NUCLEAR_BOMB, 125 TXT_CHRONOSHIFT, 126 TXT_PARA_BOMB, 127 TXT_PARA_INFANTRY, 128 TXT_SPY_MISSION, 129 TXT_INVUL, 130 TXT_GPS_SATELLITE 131 }; 132 char const * const SpecialWeaponFile[SPC_COUNT] = { 133 "SONR", 134 "ATOM", 135 "WARP", 136 "PBMB", 137 "PINF", 138 "CAM", 139 "INFX", 140 "GPSS" 141 }; 142 143 144 /*************************************************************************** 145 ** Type of quarry to search out and attack. These values are used for team 146 ** attack missions. 147 */ 148 char const * const QuarryName[QUARRY_COUNT] = { 149 "N/A", 150 "Anything", 151 "Buildings - any", 152 "Harvesters", 153 "Infantry", 154 "Vehicles - any", 155 "Ships - any", 156 "Factories", 157 "Base Defenses", 158 "Base Threats", 159 "Power Facilities", 160 "Fake Buildings" 161 }; 162 163 164 /*************************************************************************** 165 ** These are the text names for the formation types. 166 */ 167 char const * const FormationName[FORMATION_COUNT] = { 168 "None", 169 170 "Tight", 171 "Loose", 172 "Wedge North", 173 "Wedge East", 174 "Wedge South", 175 "Wedge West", 176 "Line N/S", 177 "Line E/W" 178 }; 179 180 181 /*************************************************************************** 182 ** These are the ASCII names for the reinforcement sources. 183 */ 184 char const * const SourceName[SOURCE_COUNT] = 185 { 186 "North", 187 "East", 188 "South", 189 "West", 190 "Air" 191 }; 192 193 194 /*************************************************************************** 195 ** These are the text names for the various armor types a unit may possess. 196 */ 197 char const * const ArmorName[ARMOR_COUNT] = { 198 "none", 199 "wood", 200 "light", 201 "heavy", 202 "concrete" 203 }; 204 205 206 // HACK ALERT! This unused text string is here to stop Watcom from crashing. There is some 207 // magic text heap length that causes a crash before the code executes. This dummy string 208 // changes the text heap length enough to stop the crash. Who knows why, but it works. 209 char * __test__ = "alskdfjlasdfjkajsdfkja;sldjfklasj9awutreqjfnfdkvnldzlknvadsjgflkasdjfkajsdfas"; 210 211 212 /*************************************************************************** 213 ** The list of VQ filenames. 214 */ 215 char const * const VQName[VQ_COUNT] = { 216 "AAGUN", 217 "MIG", 218 "SFROZEN", 219 "AIRFIELD", 220 "BATTLE", 221 "BMAP", 222 "BOMBRUN", 223 "DPTHCHRG", 224 "GRVESTNE", 225 "MONTPASS", 226 "MTNKFACT", 227 "CRONTEST", 228 "OILDRUM", 229 "ALLIEND", 230 "RADRRAID", 231 "SHIPYARD", // MISSING 232 "SHORBOMB", 233 "SITDUCK", 234 "SLNTSRVC", 235 "SNOWBASE", 236 "EXECUTE", 237 "REDINTRO", // low res. 238 "NUKESTOK", 239 "V2ROCKET", 240 "SEARCH", 241 "BINOC", 242 "ELEVATOR", 243 "FROZEN", 244 "MCV", 245 "SHIPSINK", 246 "SOVMCV", 247 "TRINITY", 248 "ALLYMORF", 249 "APCESCPE", 250 "BRDGTILT", 251 "CRONFAIL", 252 "STRAFE", 253 "DESTROYR", 254 "DOUBLE", 255 "FLARE", 256 "SNSTRAFE", 257 "LANDING", 258 "ONTHPRWL", 259 "OVERRUN", 260 "SNOWBOMB", 261 "SOVCEMET", 262 "TAKE_OFF", 263 "TESLA", 264 "SOVIET8", 265 "SPOTTER", 266 "ALLY1", 267 "ALLY2", 268 "ALLY4", 269 "SOVFINAL", 270 "ASSESS", 271 "SOVIET10", 272 "DUD", 273 "MCV_LAND", 274 "MCVBRDGE", 275 "PERISCOP", 276 "SHORBOM1", 277 "SHORBOM2", 278 "SOVBATL", 279 "SOVTSTAR", 280 "AFTRMATH", 281 "SOVIET11", 282 "MASASSLT", 283 "ENGLISH", // High res. Intro 284 "SOVIET1", 285 "SOVIET2", 286 "SOVIET3", 287 "SOVIET4", 288 "SOVIET5", 289 "SOVIET6", 290 "SOVIET7", 291 "PROLOG", 292 "AVERTED", 293 "COUNTDWN", 294 "MOVINGIN", 295 "ALLY10", 296 "ALLY12", 297 "ALLY5", 298 "ALLY6", 299 "ALLY8", 300 "TANYA1", 301 "TANYA2", 302 "ALLY10B", 303 "ALLY11", 304 "ALLY14", 305 "ALLY9", 306 "SPY", 307 "TOOFAR", 308 "SOVIET12", 309 "SOVIET13", 310 "SOVIET9", 311 "BEACHEAD", 312 "SOVIET14", 313 "SIZZLE", //MISSING 314 "SIZZLE2", //MISSING 315 "ANTEND", 316 "ANTINTRO", 317 318 319 //2019/11/12 JAS - Added for Retaliation movies 320 321 "RETALIATION_ALLIED1", 322 "RETALIATION_ALLIED2", 323 "RETALIATION_ALLIED3", 324 "RETALIATION_ALLIED4", 325 "RETALIATION_ALLIED5", 326 "RETALIATION_ALLIED6", 327 "RETALIATION_ALLIED7", 328 "RETALIATION_ALLIED8", 329 "RETALIATION_ALLIED9", 330 "RETALIATION_ALLIED10", 331 332 "RETALIATION_SOVIET1", 333 "RETALIATION_SOVIET2", 334 "RETALIATION_SOVIET3", 335 "RETALIATION_SOVIET4", 336 "RETALIATION_SOVIET5", 337 "RETALIATION_SOVIET6", 338 "RETALIATION_SOVIET7", 339 "RETALIATION_SOVIET8", 340 "RETALIATION_SOVIET9", 341 "RETALIATION_SOVIET10", 342 "RETALIATION_WINA", 343 "RETALIATION_WINS", 344 "RETALIATION_ANTS" 345 }; 346 347 348 /*************************************************************************** 349 ** Relative coordinate offsets from the center of a cell for each 350 ** of the legal positions that an object in a cell may stop at. Only infantry 351 ** are allowed to stop at other than the center of the cell. 352 */ 353 COORDINATE const StoppingCoordAbs[5] = { 354 0x00800080L, // center 355 0x00400040L, // upper left 356 0x004000C0L, // upper right 357 0x00C00040L, // lower left 358 0x00C000C0L // lower right 359 }; 360 361 362 /*************************************************************************** 363 ** Converts pixel values (cell relative) into the appropriate lepton (sub cell) 364 ** value. This is used to convert pixel (screen) coordinates into the underlying 365 ** coordinate system. 366 */ 367 unsigned char const Pixel2Lepton[24] = { 368 0x00,0x0B,0x15,0x20,0x2B,0x35,0x40,0x4B, 369 0x55,0x60,0x6B,0x75,0x80,0x8B,0x95,0xA0, 370 0xAB,0xB5,0xC0,0xCB,0xD5,0xE0,0xEB,0xF5 371 }; 372 373 374 /*************************************************************************** 375 ** This array is used to index a facing in order to retrieve a cell 376 ** offset that, when added to another cell, will achieve the adjacent cell 377 ** in the indexed direction. 378 */ 379 CELL const AdjacentCell[FACING_COUNT] = { 380 -(MAP_CELL_W), // North 381 -(MAP_CELL_W-1), // North East 382 1, // East 383 MAP_CELL_W+1, // South East 384 MAP_CELL_W, // South 385 MAP_CELL_W-1, // South West 386 -1, // West 387 -(MAP_CELL_W+1) // North West 388 }; 389 390 COORDINATE const AdjacentCoord[FACING_COUNT] = { 391 0xFF000000L, 392 0xFF000100L, 393 0x00000100L, 394 0x01000100L, 395 0x01000000L, 396 0x0100FF00L, 397 0x0000FF00L, 398 0xFF00FF00L 399 }; 400 401 402 /*************************************************************************** 403 ** This specifies the odds of receiving the various random crate power 404 ** ups. The odds are expressed as "shares" of 100 percent. 405 */ 406 int CrateShares[CRATE_COUNT] = { 407 50, // CRATE_MONEY 408 20, // CRATE_UNIT 409 3, // CRATE_PARA_BOMB 410 1, // CRATE_HEAL_BASE 411 3, // CRATE_CLOAK 412 5, // CRATE_EXPLOSION 413 5, // CRATE_NAPALM 414 20, // CRATE_SQUAD 415 1, // CRATE_DARKNESS 416 1, // CRATE_REVEAL 417 3, // CRATE_SONAR 418 10, // CRATE_ARMOR 419 10, // CRATE_SPEED 420 10, // CRATE_FIREPOWER 421 1, // CRATE_ICBM 422 1, // CRATE_TIMEQUAKE 423 3, // CRATE_INVULN 424 5 // CRATE_VORTEX 425 }; 426 427 AnimType CrateAnims[CRATE_COUNT] = { 428 ANIM_NONE, // CRATE_MONEY 429 ANIM_NONE, // CRATE_UNIT 430 ANIM_NONE, // CRATE_PARA_BOMB 431 ANIM_NONE, // CRATE_HEAL_BASE 432 ANIM_NONE, // CRATE_CLOAK 433 ANIM_NONE, // CRATE_EXPLOSION 434 ANIM_NONE, // CRATE_NAPALM 435 ANIM_NONE, // CRATE_SQUAD 436 ANIM_NONE, // CRATE_DARKNESS 437 ANIM_NONE, // CRATE_REVEAL 438 ANIM_NONE, // CRATE_SONAR 439 ANIM_NONE, // CRATE_ARMOR 440 ANIM_NONE, // CRATE_SPEED 441 ANIM_NONE, // CRATE_FIREPOWER 442 ANIM_NONE, // CRATE_ICBM 443 ANIM_NONE, // CRATE_TIMEQUAKE 444 ANIM_NONE, // CRATE_INVULN 445 ANIM_NONE // CRATE_VORTEX 446 }; 447 448 int CrateData[CRATE_COUNT] = { 449 0, // CRATE_MONEY 450 0, // CRATE_UNIT 451 0, // CRATE_PARA_BOMB 452 0, // CRATE_HEAL_BASE 453 0, // CRATE_CLOAK 454 0, // CRATE_EXPLOSION 455 0, // CRATE_NAPALM 456 0, // CRATE_SQUAD 457 0, // CRATE_DARKNESS 458 0, // CRATE_REVEAL 459 0, // CRATE_SONAR 460 0, // CRATE_ARMOR 461 0, // CRATE_SPEED 462 0, // CRATE_FIREPOWER 463 0, // CRATE_ICBM 464 0, // CRATE_TIMEQUAKE 465 0, // CRATE_INVULN 466 0 // CRATE_VORTEX 467 }; 468 469 char const * const CrateNames[CRATE_COUNT] = { 470 "Money", 471 "Unit", 472 "ParaBomb", 473 "HealBase", 474 "Cloak", 475 "Explosion", 476 "Napalm", 477 "Squad", 478 "Darkness", 479 "Reveal", 480 "Sonar", 481 "Armor", 482 "Speed", 483 "Firepower", 484 "ICBM", 485 "TimeQuake", 486 "Invulnerability", 487 "ChronalVortex" 488 }; 489 490 491 /*************************************************************************** 492 ** This converts 0..255 facing values into either 8, 16, or 32 facing values. 493 ** Note: a simple shift won't suffice because 0..255 facing values should 494 ** be converted to the CLOSEST appropriate facing, NOT rounded down to the 495 ** nearest facing. 496 */ 497 unsigned char const Facing8[256] = { 498 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 499 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 500 2,2,2,2,2,2,2,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, 501 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,4,4,4,4,4,4, 502 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 503 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 504 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 505 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 506 }; 507 508 509 unsigned char const Facing16[256] = { 510 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2, 511 2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4, 512 4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6, 513 6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8, 514 8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10, 515 10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12, 516 12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14, 517 14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0 518 }; 519 520 521 signed char const Rotation16[256] = { 522 0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1, 523 0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1, 524 0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1, 525 0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1, 526 0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1, 527 0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1, 528 0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1, 529 0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,-8,-7,-6,-5,-4,-3,-2,-1 530 }; 531 532 533 /* 534 ** This table incorporates a compensating factor for the distortion caused 535 ** by 3D-Studio when it tries to render 45% angles. 536 */ 537 unsigned char const Facing32[256] = { 538 0,0,0,0,0,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3, 539 3,4,4,4,4,4,4,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,7,7,7,7,7,8,8,8,8, 540 8,8,8,9,9,9,9,9,9,9,10,10,10,10,10,10,10,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12, 541 13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,16,16,16,16,16,16, 542 16,16,16,16,16,17,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19, 543 19,20,20,20,20,20,20,21,21,21,21,21,21,21,22,22,22,22,22,22,22,23,23,23,23,23,23,23,24,24,24,24, 544 24,24,24,25,25,25,25,25,25,25,26,26,26,26,26,26,26,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28, 545 29,29,29,29,29,29,29,29,30,30,30,30,30,30,30,30,30,31,31,31,31,31,31,31,31,31,0,0,0,0,0,0 546 }; 547 548 549 #ifdef OBSOLETE 550 unsigned char const Facing32[256] = { 551 0,0,0,0, 552 1,1,1,1,1,1,1,1, 553 2,2,2,2,2,2,2,2, 554 3,3,3,3,3,3,3,3, 555 4,4,4,4,4,4,4,4, 556 5,5,5,5,5,5,5,5, 557 6,6,6,6,6,6,6,6, 558 7,7,7,7,7,7,7,7, 559 8,8,8,8,8,8,8,8, 560 9,9,9,9,9,9,9,9, 561 10,10,10,10,10,10,10,10, 562 11,11,11,11,11,11,11,11, 563 12,12,12,12,12,12,12,12, 564 13,13,13,13,13,13,13,13, 565 14,14,14,14,14,14,14,14, 566 15,15,15,15,15,15,15,15, 567 16,16,16,16,16,16,16,16, 568 17,17,17,17,17,17,17,17, 569 18,18,18,18,18,18,18,18, 570 19,19,19,19,19,19,19,19, 571 20,20,20,20,20,20,20,20, 572 21,21,21,21,21,21,21,21, 573 22,22,22,22,22,22,22,22, 574 23,23,23,23,23,23,23,23, 575 24,24,24,24,24,24,24,24, 576 25,25,25,25,25,25,25,25, 577 26,26,26,26,26,26,26,26, 578 27,27,27,27,27,27,27,27, 579 28,28,28,28,28,28,28,28, 580 29,29,29,29,29,29,29,29, 581 30,30,30,30,30,30,30,30, 582 31,31,31,31,31,31,31,31, 583 0,0,0,0 584 }; 585 #endif 586 587 588 /*************************************************************************** 589 ** These are the movement costs (in ticks at fastest speed) to enter each 590 ** of the given terrain cells. 591 */ 592 593 int const GroundColor[LAND_COUNT] = { 594 141, // "Clear" terrain. 595 141, // Road terrain. 596 172, // Water. 597 21, // Impassable rock. 598 21, // Wall (blocks movement). 599 158, // Tiberium field. 600 141, // Beach terrain. 601 141, // Rocky terrain. 602 174 // Rocky riverbed. 603 }; 604 605 int const SnowColor[LAND_COUNT] = { 606 141, // "Clear" terrain. 607 141, // Road terrain. 608 172, // Water. 609 21, // Impassable rock. 610 21, // Wall (blocks movement). 611 158, // Tiberium field. 612 141, // Beach terrain. 613 141, // Rocky terrain. 614 174 // Rocky riverbed. 615 }; 616 617 #ifdef NEVER 618 int const GroundColor[LAND_COUNT] = { 619 46, // "Clear" terrain. 620 44, // Road terrain. 621 BLUE, // Water. 622 DKGREY, // Impassable rock. 623 DKGREY, // Wall (blocks movement). 624 158, // Tiberium field. 625 64, // Beach terrain. 626 DKGREY, // Rocky terrain. 627 DKGREY // Rocky riverbed. 628 }; 629 630 int const SnowColor[LAND_COUNT] = { 631 WHITE, // "Clear" terrain. 632 LTGRAY, // Road terrain. 633 BLUE, // Water. 634 DKGREY, // Impassable rock. 635 DKGREY, // Wall (blocks movement). 636 158, // Tiberium field. 637 LTGRAY, // Beach terrain. 638 DKGREY, // Rocky terrain. 639 DKGREY // Rocky riverbed. 640 }; 641 #endif 642 643 GroundType Ground[LAND_COUNT]; 644 645 646 /*************************************************************************** 647 ** These are the names of the theaters. 648 */ 649 TheaterDataType const Theaters[THEATER_COUNT] = { 650 {"TEMPERATE","TEMPERAT","TEM"}, 651 {"SNOW","SNOW","SNO"}, 652 {"INTERIOR","INTERIOR","INT"}, 653 }; 654 655 656 unsigned char const RemapCiv2[256] = { 657 0,1,2,3,4,5,6,209,8,9,10,11,12,13,12,15, // 0..15 658 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31 659 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47 660 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63 661 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79 662 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95 663 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111 664 112,113,114,115,116,117,187,188,120,121,122,123,124,125,126,127, // 112..127 665 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143 666 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,209, // 144..159 667 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175 668 176,177,178,179,180,181,182,183,184,185,186,167, 13,189,190,191, // 176..191 669 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // 192..207 670 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223 671 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239 672 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255 673 }; 674 675 unsigned char const RemapCiv4[256] = { 676 0,1,2,3,4,5,6,187,8,9,10,11,12,13,14,15, // 0..15 677 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31 678 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47 679 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63 680 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79 681 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95 682 96,97,98,99,100,101,102,103,104,105,106,107,108,118,110,119, // 96..111 683 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, // 112..127 684 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143 685 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, // 144..159 686 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175 687 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, // 176..191 688 192,193,194,195,196,197,198,199,200,201,202,203,204,205,188,207, // 192..207 689 208,209,182,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223 690 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239 691 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255 692 }; 693 694 unsigned char const RemapCiv5[256] = { 695 0,1,2,3,4,5,6,109,8,9,10,11,131,13,14,15, // 0..15 696 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31 697 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47 698 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63 699 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79 700 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95 701 96,97,98,99,100,101,102,103,104,105,106,107,108,177,110,178, // 96..111 702 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, // 112..127 703 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143 704 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, // 144..159 705 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175 706 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, // 176..191 707 192,193,194,195,196,197,198,199,111,201,202,203,204,205,111,207, // 192..207 708 208,209,182,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223 709 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239 710 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255 711 }; 712 713 unsigned char const RemapCiv6[256] = { 714 0,1,2,3,4,5,6,120,8,9,10,11,12,13,238,15, // 0..15 715 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31 716 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47 717 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63 718 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79 719 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95 720 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111 721 112,113,114,115,116,117,236,206,120,121,122,123,124,125,126,127, // 112..127 722 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143 723 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,111, // 144..159 724 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175 725 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, // 176..191 726 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // 192..207 727 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223 728 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239 729 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255 730 }; 731 732 unsigned char const RemapCiv7[256] = { 733 0,1,2,3,4,5,6,7,8,9,10,11,12,13,131,15, // 0..15 734 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31 735 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47 736 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63 737 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79 738 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95 739 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111 740 112,113,114,115,116,117,157,212,120,121,122,123,124,125,126,127, // 112..127 741 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143 742 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,7, // 144..159 743 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175 744 176,177,178,179,180,181,182,183,184,185,186,118,119,189,190,191, // 176..191 745 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // 192..207 746 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223 747 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239 748 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255 749 }; 750 751 unsigned char const RemapCiv8[256] = { 752 0,1,2,3,4,5,6,182,8,9,10,11,12,13,131,15, // 0..15 753 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31 754 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47 755 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63 756 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79 757 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95 758 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111 759 112,113,114,115,116,117,215,7,120,121,122,123,124,125,126,127, // 112..127 760 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143 761 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,182, // 144..159 762 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175 763 176,177,178,179,180,181,182,183,184,185,186,198,199,189,190,191, // 176..191 764 192,193,194,195,196,197,198,199,111,201,202,203,204,205,206,207, // 192..207 765 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223 766 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239 767 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255 768 }; 769 770 unsigned char const RemapCiv9[256] = { 771 0,1,2,3,4,5,6,7,8,9,10,11,12,13,7,15, // 0..15 772 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31 773 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47 774 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63 775 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79 776 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95 777 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111 778 112,113,114,115,116,117,163,165,120,121,122,123,124,125,126,127, // 112..127 779 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143 780 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,200, // 144..159 781 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175 782 176,177,178,179,180,181,182,183,184,185,186,111,13,189,190,191, // 176..191 783 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // 192..207 784 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223 785 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239 786 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255 787 }; 788 789 unsigned char const RemapCiv10[256] = { 790 0,1,2,3,4,5,6,137,8,9,10,11,12,13,15,15, // 0..15 791 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31 792 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47 793 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63 794 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79 795 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95 796 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111 797 112,113,114,115,116,117,129,131,120,121,122,123,124,125,126,127, // 112..127 798 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143 799 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,137, // 144..159 800 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175 801 176,177,178,179,180,181,182,183,184,185,186,163,165,189,190,191, // 176..191 802 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // 192..207 803 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223 804 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239 805 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255 806 }; 807 808 unsigned char const RemapEmber[256] = { 809 #define CEC CC_EMBER_COLOR 810 0,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,BLACK,CEC,CEC,CEC, 811 CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, 812 CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, 813 CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, 814 CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, 815 CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, 816 CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, 817 CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, 818 CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, 819 CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, 820 CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, 821 CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, 822 CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, 823 CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, 824 CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC, 825 CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC 826 }; 827 828 829 //char const Keys[] = 830 // "[PublicKey]\n" 831 // "1=AgkCbXo9sKMHOBk=\n" 832 //#ifdef CHEAT_KEYS 833 // "[PrivateKey]\n" 834 // "1=AggxFU55vc7LYQ==\n" 835 //#endif 836 // "\n"; 837 838 char const Keys[] = 839 "[PublicKey]\n" 840 "1=AihRvNoIbTn85FZRYNZRcT+i6KpU+maCsEqr3Q5q+LDB5tH7Tz2qQ38V\n" 841 #ifdef CHEAT_KEYS 842 "[PrivateKey]\n" 843 "1=AigKVje8mROcR8QixnxUEF5b29Curkq01DNDWCdOG99XBqH79OaCiTCB\n" 844 #endif 845 "\n";