846 lines
28 KiB
C++
846 lines
28 KiB
C++
//
|
|
// Copyright 2020 Electronic Arts Inc.
|
|
//
|
|
// TiberianDawn.DLL and RedAlert.dll and corresponding source code 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 3 of the License, or (at your option) any later version.
|
|
|
|
// TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed
|
|
// in the hope that it will be useful, but with permitted additional restrictions
|
|
// under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT
|
|
// distributed with this program. You should have received a copy of the
|
|
// GNU General Public License along with permitted additional restrictions
|
|
// with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection
|
|
|
|
/* $Header: /CounterStrike/CONST.CPP 1 3/03/97 10:24a Joe_bostic $ */
|
|
/***********************************************************************************************
|
|
*** 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 ***
|
|
***********************************************************************************************
|
|
* *
|
|
* Project Name : Command & Conquer *
|
|
* *
|
|
* File Name : CONST.CPP *
|
|
* *
|
|
* Programmer : Joe L. Bostic *
|
|
* *
|
|
* Start Date : September 20, 1993 *
|
|
* *
|
|
* Last Update : September 20, 1993 [JLB] *
|
|
* *
|
|
*---------------------------------------------------------------------------------------------*
|
|
* Functions: *
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
|
|
|
#include "function.h"
|
|
|
|
|
|
/***************************************************************************
|
|
** These are the access passwords used to activate cheat mode, editor mode,
|
|
** and special game options.
|
|
*/
|
|
unsigned long const PlayCodes[] = {
|
|
0xE0792D6D, // Dwight Okahara
|
|
0x90046ECF, // Paul S. Mudra
|
|
0xC3EE9A26, // Frank Klepaki
|
|
0xED382178, // Ed Del Castillo
|
|
0L
|
|
};
|
|
|
|
unsigned long const CheatCodes[] = {
|
|
0xA0E2AB53, // Joseph Hewitt
|
|
0x00532693, // Mike Lightner
|
|
0x7DDFF824, // Joe Bostic
|
|
0x2CB5CF01, // Phil Gorrow
|
|
0xB5B63531, // Bill Randolph
|
|
0xDFABC23A, // Adam Isgreen
|
|
0x52B19A22, // Erik Yeo
|
|
0xBE79088C, // David Dettmer
|
|
0xB216AE7E, // Barry Green
|
|
0x0E07B213, // Steve Tall
|
|
0L
|
|
};
|
|
|
|
|
|
unsigned long const EditorCodes[] = {
|
|
0xA2C09326, // Erik Yeo
|
|
0x1F944BB3, // Mike Lightner
|
|
0xDE07154D, // Adam Isgreen
|
|
0x0E07B213, // Steve Tall
|
|
0x16B170B1, // Joe Bostic
|
|
0L
|
|
};
|
|
|
|
|
|
/***********************************************************************************************
|
|
** Unit order names. These names correspond to the player selectable orders
|
|
** a unit can have. The system initiated orders have no use for the ASCII name
|
|
** associated, but they are listed here for completeness sake.
|
|
*/
|
|
char const * Missions[MISSION_COUNT] = {
|
|
"Sleep",
|
|
"Attack",
|
|
"Move",
|
|
"QMove",
|
|
"Retreat",
|
|
"Guard",
|
|
"Sticky",
|
|
"Enter",
|
|
"Capture",
|
|
"Harvest",
|
|
"Area Guard",
|
|
"Return",
|
|
"Stop",
|
|
"Ambush",
|
|
"Hunt",
|
|
"Unload",
|
|
"Sabotage",
|
|
"Construction",
|
|
"Selling",
|
|
"Repair",
|
|
"Rescue",
|
|
"Missile",
|
|
"Harmless"
|
|
};
|
|
|
|
|
|
/***************************************************************************
|
|
** Special weapon names.
|
|
*/
|
|
#ifdef SCENARIO_EDITOR
|
|
char const * const SpecialWeaponName[SPC_COUNT] = {
|
|
"Sonar Pulse",
|
|
"Nuclear Missile",
|
|
"Chronosphere",
|
|
"Parachute Bomb",
|
|
"Paratroopers",
|
|
"Recon Plane",
|
|
"Iron Curtain",
|
|
"GPS Satellite"
|
|
};
|
|
#endif
|
|
int const SpecialWeaponHelp[SPC_COUNT] = {
|
|
TXT_SONAR_PULSE,
|
|
TXT_NUCLEAR_BOMB,
|
|
TXT_CHRONOSHIFT,
|
|
TXT_PARA_BOMB,
|
|
TXT_PARA_INFANTRY,
|
|
TXT_SPY_MISSION,
|
|
TXT_INVUL,
|
|
TXT_GPS_SATELLITE
|
|
};
|
|
char const * const SpecialWeaponFile[SPC_COUNT] = {
|
|
"SONR",
|
|
"ATOM",
|
|
"WARP",
|
|
"PBMB",
|
|
"PINF",
|
|
"CAM",
|
|
"INFX",
|
|
"GPSS"
|
|
};
|
|
|
|
|
|
/***************************************************************************
|
|
** Type of quarry to search out and attack. These values are used for team
|
|
** attack missions.
|
|
*/
|
|
char const * const QuarryName[QUARRY_COUNT] = {
|
|
"N/A",
|
|
"Anything",
|
|
"Buildings - any",
|
|
"Harvesters",
|
|
"Infantry",
|
|
"Vehicles - any",
|
|
"Ships - any",
|
|
"Factories",
|
|
"Base Defenses",
|
|
"Base Threats",
|
|
"Power Facilities",
|
|
"Fake Buildings"
|
|
};
|
|
|
|
|
|
/***************************************************************************
|
|
** These are the text names for the formation types.
|
|
*/
|
|
char const * const FormationName[FORMATION_COUNT] = {
|
|
"None",
|
|
|
|
"Tight",
|
|
"Loose",
|
|
"Wedge North",
|
|
"Wedge East",
|
|
"Wedge South",
|
|
"Wedge West",
|
|
"Line N/S",
|
|
"Line E/W"
|
|
};
|
|
|
|
|
|
/***************************************************************************
|
|
** These are the ASCII names for the reinforcement sources.
|
|
*/
|
|
char const * const SourceName[SOURCE_COUNT] =
|
|
{
|
|
"North",
|
|
"East",
|
|
"South",
|
|
"West",
|
|
"Air"
|
|
};
|
|
|
|
|
|
/***************************************************************************
|
|
** These are the text names for the various armor types a unit may possess.
|
|
*/
|
|
char const * const ArmorName[ARMOR_COUNT] = {
|
|
"none",
|
|
"wood",
|
|
"light",
|
|
"heavy",
|
|
"concrete"
|
|
};
|
|
|
|
|
|
// HACK ALERT! This unused text string is here to stop Watcom from crashing. There is some
|
|
// magic text heap length that causes a crash before the code executes. This dummy string
|
|
// changes the text heap length enough to stop the crash. Who knows why, but it works.
|
|
char * __test__ = "alskdfjlasdfjkajsdfkja;sldjfklasj9awutreqjfnfdkvnldzlknvadsjgflkasdjfkajsdfas";
|
|
|
|
|
|
/***************************************************************************
|
|
** The list of VQ filenames.
|
|
*/
|
|
char const * const VQName[VQ_COUNT] = {
|
|
"AAGUN",
|
|
"MIG",
|
|
"SFROZEN",
|
|
"AIRFIELD",
|
|
"BATTLE",
|
|
"BMAP",
|
|
"BOMBRUN",
|
|
"DPTHCHRG",
|
|
"GRVESTNE",
|
|
"MONTPASS",
|
|
"MTNKFACT",
|
|
"CRONTEST",
|
|
"OILDRUM",
|
|
"ALLIEND",
|
|
"RADRRAID",
|
|
"SHIPYARD", // MISSING
|
|
"SHORBOMB",
|
|
"SITDUCK",
|
|
"SLNTSRVC",
|
|
"SNOWBASE",
|
|
"EXECUTE",
|
|
"REDINTRO", // low res.
|
|
"NUKESTOK",
|
|
"V2ROCKET",
|
|
"SEARCH",
|
|
"BINOC",
|
|
"ELEVATOR",
|
|
"FROZEN",
|
|
"MCV",
|
|
"SHIPSINK",
|
|
"SOVMCV",
|
|
"TRINITY",
|
|
"ALLYMORF",
|
|
"APCESCPE",
|
|
"BRDGTILT",
|
|
"CRONFAIL",
|
|
"STRAFE",
|
|
"DESTROYR",
|
|
"DOUBLE",
|
|
"FLARE",
|
|
"SNSTRAFE",
|
|
"LANDING",
|
|
"ONTHPRWL",
|
|
"OVERRUN",
|
|
"SNOWBOMB",
|
|
"SOVCEMET",
|
|
"TAKE_OFF",
|
|
"TESLA",
|
|
"SOVIET8",
|
|
"SPOTTER",
|
|
"ALLY1",
|
|
"ALLY2",
|
|
"ALLY4",
|
|
"SOVFINAL",
|
|
"ASSESS",
|
|
"SOVIET10",
|
|
"DUD",
|
|
"MCV_LAND",
|
|
"MCVBRDGE",
|
|
"PERISCOP",
|
|
"SHORBOM1",
|
|
"SHORBOM2",
|
|
"SOVBATL",
|
|
"SOVTSTAR",
|
|
"AFTRMATH",
|
|
"SOVIET11",
|
|
"MASASSLT",
|
|
"ENGLISH", // High res. Intro
|
|
"SOVIET1",
|
|
"SOVIET2",
|
|
"SOVIET3",
|
|
"SOVIET4",
|
|
"SOVIET5",
|
|
"SOVIET6",
|
|
"SOVIET7",
|
|
"PROLOG",
|
|
"AVERTED",
|
|
"COUNTDWN",
|
|
"MOVINGIN",
|
|
"ALLY10",
|
|
"ALLY12",
|
|
"ALLY5",
|
|
"ALLY6",
|
|
"ALLY8",
|
|
"TANYA1",
|
|
"TANYA2",
|
|
"ALLY10B",
|
|
"ALLY11",
|
|
"ALLY14",
|
|
"ALLY9",
|
|
"SPY",
|
|
"TOOFAR",
|
|
"SOVIET12",
|
|
"SOVIET13",
|
|
"SOVIET9",
|
|
"BEACHEAD",
|
|
"SOVIET14",
|
|
"SIZZLE", //MISSING
|
|
"SIZZLE2", //MISSING
|
|
"ANTEND",
|
|
"ANTINTRO",
|
|
|
|
|
|
//2019/11/12 JAS - Added for Retaliation movies
|
|
|
|
"RETALIATION_ALLIED1",
|
|
"RETALIATION_ALLIED2",
|
|
"RETALIATION_ALLIED3",
|
|
"RETALIATION_ALLIED4",
|
|
"RETALIATION_ALLIED5",
|
|
"RETALIATION_ALLIED6",
|
|
"RETALIATION_ALLIED7",
|
|
"RETALIATION_ALLIED8",
|
|
"RETALIATION_ALLIED9",
|
|
"RETALIATION_ALLIED10",
|
|
|
|
"RETALIATION_SOVIET1",
|
|
"RETALIATION_SOVIET2",
|
|
"RETALIATION_SOVIET3",
|
|
"RETALIATION_SOVIET4",
|
|
"RETALIATION_SOVIET5",
|
|
"RETALIATION_SOVIET6",
|
|
"RETALIATION_SOVIET7",
|
|
"RETALIATION_SOVIET8",
|
|
"RETALIATION_SOVIET9",
|
|
"RETALIATION_SOVIET10",
|
|
"RETALIATION_WINA",
|
|
"RETALIATION_WINS",
|
|
"RETALIATION_ANTS"
|
|
};
|
|
|
|
|
|
/***************************************************************************
|
|
** Relative coordinate offsets from the center of a cell for each
|
|
** of the legal positions that an object in a cell may stop at. Only infantry
|
|
** are allowed to stop at other than the center of the cell.
|
|
*/
|
|
COORDINATE const StoppingCoordAbs[5] = {
|
|
0x00800080L, // center
|
|
0x00400040L, // upper left
|
|
0x004000C0L, // upper right
|
|
0x00C00040L, // lower left
|
|
0x00C000C0L // lower right
|
|
};
|
|
|
|
|
|
/***************************************************************************
|
|
** Converts pixel values (cell relative) into the appropriate lepton (sub cell)
|
|
** value. This is used to convert pixel (screen) coordinates into the underlying
|
|
** coordinate system.
|
|
*/
|
|
unsigned char const Pixel2Lepton[24] = {
|
|
0x00,0x0B,0x15,0x20,0x2B,0x35,0x40,0x4B,
|
|
0x55,0x60,0x6B,0x75,0x80,0x8B,0x95,0xA0,
|
|
0xAB,0xB5,0xC0,0xCB,0xD5,0xE0,0xEB,0xF5
|
|
};
|
|
|
|
|
|
/***************************************************************************
|
|
** This array is used to index a facing in order to retrieve a cell
|
|
** offset that, when added to another cell, will achieve the adjacent cell
|
|
** in the indexed direction.
|
|
*/
|
|
CELL const AdjacentCell[FACING_COUNT] = {
|
|
-(MAP_CELL_W), // North
|
|
-(MAP_CELL_W-1), // North East
|
|
1, // East
|
|
MAP_CELL_W+1, // South East
|
|
MAP_CELL_W, // South
|
|
MAP_CELL_W-1, // South West
|
|
-1, // West
|
|
-(MAP_CELL_W+1) // North West
|
|
};
|
|
|
|
COORDINATE const AdjacentCoord[FACING_COUNT] = {
|
|
0xFF000000L,
|
|
0xFF000100L,
|
|
0x00000100L,
|
|
0x01000100L,
|
|
0x01000000L,
|
|
0x0100FF00L,
|
|
0x0000FF00L,
|
|
0xFF00FF00L
|
|
};
|
|
|
|
|
|
/***************************************************************************
|
|
** This specifies the odds of receiving the various random crate power
|
|
** ups. The odds are expressed as "shares" of 100 percent.
|
|
*/
|
|
int CrateShares[CRATE_COUNT] = {
|
|
50, // CRATE_MONEY
|
|
20, // CRATE_UNIT
|
|
3, // CRATE_PARA_BOMB
|
|
1, // CRATE_HEAL_BASE
|
|
3, // CRATE_CLOAK
|
|
5, // CRATE_EXPLOSION
|
|
5, // CRATE_NAPALM
|
|
20, // CRATE_SQUAD
|
|
1, // CRATE_DARKNESS
|
|
1, // CRATE_REVEAL
|
|
3, // CRATE_SONAR
|
|
10, // CRATE_ARMOR
|
|
10, // CRATE_SPEED
|
|
10, // CRATE_FIREPOWER
|
|
1, // CRATE_ICBM
|
|
1, // CRATE_TIMEQUAKE
|
|
3, // CRATE_INVULN
|
|
5 // CRATE_VORTEX
|
|
};
|
|
|
|
AnimType CrateAnims[CRATE_COUNT] = {
|
|
ANIM_NONE, // CRATE_MONEY
|
|
ANIM_NONE, // CRATE_UNIT
|
|
ANIM_NONE, // CRATE_PARA_BOMB
|
|
ANIM_NONE, // CRATE_HEAL_BASE
|
|
ANIM_NONE, // CRATE_CLOAK
|
|
ANIM_NONE, // CRATE_EXPLOSION
|
|
ANIM_NONE, // CRATE_NAPALM
|
|
ANIM_NONE, // CRATE_SQUAD
|
|
ANIM_NONE, // CRATE_DARKNESS
|
|
ANIM_NONE, // CRATE_REVEAL
|
|
ANIM_NONE, // CRATE_SONAR
|
|
ANIM_NONE, // CRATE_ARMOR
|
|
ANIM_NONE, // CRATE_SPEED
|
|
ANIM_NONE, // CRATE_FIREPOWER
|
|
ANIM_NONE, // CRATE_ICBM
|
|
ANIM_NONE, // CRATE_TIMEQUAKE
|
|
ANIM_NONE, // CRATE_INVULN
|
|
ANIM_NONE // CRATE_VORTEX
|
|
};
|
|
|
|
int CrateData[CRATE_COUNT] = {
|
|
0, // CRATE_MONEY
|
|
0, // CRATE_UNIT
|
|
0, // CRATE_PARA_BOMB
|
|
0, // CRATE_HEAL_BASE
|
|
0, // CRATE_CLOAK
|
|
0, // CRATE_EXPLOSION
|
|
0, // CRATE_NAPALM
|
|
0, // CRATE_SQUAD
|
|
0, // CRATE_DARKNESS
|
|
0, // CRATE_REVEAL
|
|
0, // CRATE_SONAR
|
|
0, // CRATE_ARMOR
|
|
0, // CRATE_SPEED
|
|
0, // CRATE_FIREPOWER
|
|
0, // CRATE_ICBM
|
|
0, // CRATE_TIMEQUAKE
|
|
0, // CRATE_INVULN
|
|
0 // CRATE_VORTEX
|
|
};
|
|
|
|
char const * const CrateNames[CRATE_COUNT] = {
|
|
"Money",
|
|
"Unit",
|
|
"ParaBomb",
|
|
"HealBase",
|
|
"Cloak",
|
|
"Explosion",
|
|
"Napalm",
|
|
"Squad",
|
|
"Darkness",
|
|
"Reveal",
|
|
"Sonar",
|
|
"Armor",
|
|
"Speed",
|
|
"Firepower",
|
|
"ICBM",
|
|
"TimeQuake",
|
|
"Invulnerability",
|
|
"ChronalVortex"
|
|
};
|
|
|
|
|
|
/***************************************************************************
|
|
** This converts 0..255 facing values into either 8, 16, or 32 facing values.
|
|
** Note: a simple shift won't suffice because 0..255 facing values should
|
|
** be converted to the CLOSEST appropriate facing, NOT rounded down to the
|
|
** nearest facing.
|
|
*/
|
|
unsigned char const Facing8[256] = {
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
};
|
|
|
|
|
|
unsigned char const Facing16[256] = {
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
};
|
|
|
|
|
|
signed char const Rotation16[256] = {
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
};
|
|
|
|
|
|
/*
|
|
** This table incorporates a compensating factor for the distortion caused
|
|
** by 3D-Studio when it tries to render 45% angles.
|
|
*/
|
|
unsigned char const Facing32[256] = {
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
};
|
|
|
|
|
|
#ifdef OBSOLETE
|
|
unsigned char const Facing32[256] = {
|
|
0,0,0,0,
|
|
1,1,1,1,1,1,1,1,
|
|
2,2,2,2,2,2,2,2,
|
|
3,3,3,3,3,3,3,3,
|
|
4,4,4,4,4,4,4,4,
|
|
5,5,5,5,5,5,5,5,
|
|
6,6,6,6,6,6,6,6,
|
|
7,7,7,7,7,7,7,7,
|
|
8,8,8,8,8,8,8,8,
|
|
9,9,9,9,9,9,9,9,
|
|
10,10,10,10,10,10,10,10,
|
|
11,11,11,11,11,11,11,11,
|
|
12,12,12,12,12,12,12,12,
|
|
13,13,13,13,13,13,13,13,
|
|
14,14,14,14,14,14,14,14,
|
|
15,15,15,15,15,15,15,15,
|
|
16,16,16,16,16,16,16,16,
|
|
17,17,17,17,17,17,17,17,
|
|
18,18,18,18,18,18,18,18,
|
|
19,19,19,19,19,19,19,19,
|
|
20,20,20,20,20,20,20,20,
|
|
21,21,21,21,21,21,21,21,
|
|
22,22,22,22,22,22,22,22,
|
|
23,23,23,23,23,23,23,23,
|
|
24,24,24,24,24,24,24,24,
|
|
25,25,25,25,25,25,25,25,
|
|
26,26,26,26,26,26,26,26,
|
|
27,27,27,27,27,27,27,27,
|
|
28,28,28,28,28,28,28,28,
|
|
29,29,29,29,29,29,29,29,
|
|
30,30,30,30,30,30,30,30,
|
|
31,31,31,31,31,31,31,31,
|
|
0,0,0,0
|
|
};
|
|
#endif
|
|
|
|
|
|
/***************************************************************************
|
|
** These are the movement costs (in ticks at fastest speed) to enter each
|
|
** of the given terrain cells.
|
|
*/
|
|
|
|
int const GroundColor[LAND_COUNT] = {
|
|
141, // "Clear" terrain.
|
|
141, // Road terrain.
|
|
172, // Water.
|
|
21, // Impassable rock.
|
|
21, // Wall (blocks movement).
|
|
158, // Tiberium field.
|
|
141, // Beach terrain.
|
|
141, // Rocky terrain.
|
|
174 // Rocky riverbed.
|
|
};
|
|
|
|
int const SnowColor[LAND_COUNT] = {
|
|
141, // "Clear" terrain.
|
|
141, // Road terrain.
|
|
172, // Water.
|
|
21, // Impassable rock.
|
|
21, // Wall (blocks movement).
|
|
158, // Tiberium field.
|
|
141, // Beach terrain.
|
|
141, // Rocky terrain.
|
|
174 // Rocky riverbed.
|
|
};
|
|
|
|
#ifdef NEVER
|
|
int const GroundColor[LAND_COUNT] = {
|
|
46, // "Clear" terrain.
|
|
44, // Road terrain.
|
|
BLUE, // Water.
|
|
DKGREY, // Impassable rock.
|
|
DKGREY, // Wall (blocks movement).
|
|
158, // Tiberium field.
|
|
64, // Beach terrain.
|
|
DKGREY, // Rocky terrain.
|
|
DKGREY // Rocky riverbed.
|
|
};
|
|
|
|
int const SnowColor[LAND_COUNT] = {
|
|
WHITE, // "Clear" terrain.
|
|
LTGRAY, // Road terrain.
|
|
BLUE, // Water.
|
|
DKGREY, // Impassable rock.
|
|
DKGREY, // Wall (blocks movement).
|
|
158, // Tiberium field.
|
|
LTGRAY, // Beach terrain.
|
|
DKGREY, // Rocky terrain.
|
|
DKGREY // Rocky riverbed.
|
|
};
|
|
#endif
|
|
|
|
GroundType Ground[LAND_COUNT];
|
|
|
|
|
|
/***************************************************************************
|
|
** These are the names of the theaters.
|
|
*/
|
|
TheaterDataType const Theaters[THEATER_COUNT] = {
|
|
{"TEMPERATE","TEMPERAT","TEM"},
|
|
{"SNOW","SNOW","SNO"},
|
|
{"INTERIOR","INTERIOR","INT"},
|
|
};
|
|
|
|
|
|
unsigned char const RemapCiv2[256] = {
|
|
0,1,2,3,4,5,6,209,8,9,10,11,12,13,12,15, // 0..15
|
|
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31
|
|
32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47
|
|
48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63
|
|
64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79
|
|
80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95
|
|
96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111
|
|
112,113,114,115,116,117,187,188,120,121,122,123,124,125,126,127, // 112..127
|
|
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143
|
|
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,209, // 144..159
|
|
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175
|
|
176,177,178,179,180,181,182,183,184,185,186,167, 13,189,190,191, // 176..191
|
|
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // 192..207
|
|
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223
|
|
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239
|
|
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255
|
|
};
|
|
|
|
unsigned char const RemapCiv4[256] = {
|
|
0,1,2,3,4,5,6,187,8,9,10,11,12,13,14,15, // 0..15
|
|
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31
|
|
32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47
|
|
48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63
|
|
64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79
|
|
80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95
|
|
96,97,98,99,100,101,102,103,104,105,106,107,108,118,110,119, // 96..111
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, // 112..127
|
|
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143
|
|
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, // 144..159
|
|
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175
|
|
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, // 176..191
|
|
192,193,194,195,196,197,198,199,200,201,202,203,204,205,188,207, // 192..207
|
|
208,209,182,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223
|
|
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239
|
|
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255
|
|
};
|
|
|
|
unsigned char const RemapCiv5[256] = {
|
|
0,1,2,3,4,5,6,109,8,9,10,11,131,13,14,15, // 0..15
|
|
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31
|
|
32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47
|
|
48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63
|
|
64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79
|
|
80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95
|
|
96,97,98,99,100,101,102,103,104,105,106,107,108,177,110,178, // 96..111
|
|
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, // 112..127
|
|
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143
|
|
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, // 144..159
|
|
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175
|
|
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, // 176..191
|
|
192,193,194,195,196,197,198,199,111,201,202,203,204,205,111,207, // 192..207
|
|
208,209,182,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223
|
|
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239
|
|
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255
|
|
};
|
|
|
|
unsigned char const RemapCiv6[256] = {
|
|
0,1,2,3,4,5,6,120,8,9,10,11,12,13,238,15, // 0..15
|
|
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31
|
|
32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47
|
|
48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63
|
|
64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79
|
|
80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95
|
|
96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111
|
|
112,113,114,115,116,117,236,206,120,121,122,123,124,125,126,127, // 112..127
|
|
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143
|
|
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,111, // 144..159
|
|
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175
|
|
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, // 176..191
|
|
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // 192..207
|
|
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223
|
|
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239
|
|
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255
|
|
};
|
|
|
|
unsigned char const RemapCiv7[256] = {
|
|
0,1,2,3,4,5,6,7,8,9,10,11,12,13,131,15, // 0..15
|
|
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31
|
|
32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47
|
|
48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63
|
|
64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79
|
|
80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95
|
|
96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111
|
|
112,113,114,115,116,117,157,212,120,121,122,123,124,125,126,127, // 112..127
|
|
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143
|
|
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,7, // 144..159
|
|
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175
|
|
176,177,178,179,180,181,182,183,184,185,186,118,119,189,190,191, // 176..191
|
|
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // 192..207
|
|
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223
|
|
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239
|
|
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255
|
|
};
|
|
|
|
unsigned char const RemapCiv8[256] = {
|
|
0,1,2,3,4,5,6,182,8,9,10,11,12,13,131,15, // 0..15
|
|
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31
|
|
32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47
|
|
48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63
|
|
64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79
|
|
80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95
|
|
96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111
|
|
112,113,114,115,116,117,215,7,120,121,122,123,124,125,126,127, // 112..127
|
|
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143
|
|
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,182, // 144..159
|
|
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175
|
|
176,177,178,179,180,181,182,183,184,185,186,198,199,189,190,191, // 176..191
|
|
192,193,194,195,196,197,198,199,111,201,202,203,204,205,206,207, // 192..207
|
|
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223
|
|
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239
|
|
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255
|
|
};
|
|
|
|
unsigned char const RemapCiv9[256] = {
|
|
0,1,2,3,4,5,6,7,8,9,10,11,12,13,7,15, // 0..15
|
|
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31
|
|
32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47
|
|
48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63
|
|
64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79
|
|
80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95
|
|
96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111
|
|
112,113,114,115,116,117,163,165,120,121,122,123,124,125,126,127, // 112..127
|
|
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143
|
|
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,200, // 144..159
|
|
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175
|
|
176,177,178,179,180,181,182,183,184,185,186,111,13,189,190,191, // 176..191
|
|
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // 192..207
|
|
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223
|
|
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239
|
|
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255
|
|
};
|
|
|
|
unsigned char const RemapCiv10[256] = {
|
|
0,1,2,3,4,5,6,137,8,9,10,11,12,13,15,15, // 0..15
|
|
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, // 16..31
|
|
32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, // 32..47
|
|
48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, // 48..63
|
|
64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, // 64..79
|
|
80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, // 80..95
|
|
96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, // 96..111
|
|
112,113,114,115,116,117,129,131,120,121,122,123,124,125,126,127, // 112..127
|
|
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 128..143
|
|
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,137, // 144..159
|
|
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // 160..175
|
|
176,177,178,179,180,181,182,183,184,185,186,163,165,189,190,191, // 176..191
|
|
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // 192..207
|
|
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // 208..223
|
|
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // 224..239
|
|
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // 240..255
|
|
};
|
|
|
|
unsigned char const RemapEmber[256] = {
|
|
#define CEC CC_EMBER_COLOR
|
|
0,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,BLACK,CEC,CEC,CEC,
|
|
CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,
|
|
CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,
|
|
CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,
|
|
CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,
|
|
CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,
|
|
CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,
|
|
CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,
|
|
CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,
|
|
CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,
|
|
CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,
|
|
CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,
|
|
CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,
|
|
CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,
|
|
CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,
|
|
CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC,CEC
|
|
};
|
|
|
|
|
|
//char const Keys[] =
|
|
// "[PublicKey]\n"
|
|
// "1=AgkCbXo9sKMHOBk=\n"
|
|
//#ifdef CHEAT_KEYS
|
|
// "[PrivateKey]\n"
|
|
// "1=AggxFU55vc7LYQ==\n"
|
|
//#endif
|
|
// "\n";
|
|
|
|
char const Keys[] =
|
|
"[PublicKey]\n"
|
|
"1=AihRvNoIbTn85FZRYNZRcT+i6KpU+maCsEqr3Q5q+LDB5tH7Tz2qQ38V\n"
|
|
#ifdef CHEAT_KEYS
|
|
"[PrivateKey]\n"
|
|
"1=AigKVje8mROcR8QixnxUEF5b29Curkq01DNDWCdOG99XBqH79OaCiTCB\n"
|
|
#endif
|
|
"\n";
|