896 lines
23 KiB
C++
896 lines
23 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/RULES.H 1 3/03/97 10:25a 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 : RULES.H *
|
||
|
* *
|
||
|
* Programmer : Joe L. Bostic *
|
||
|
* *
|
||
|
* Start Date : 05/12/96 *
|
||
|
* *
|
||
|
* Last Update : May 12, 1996 [JLB] *
|
||
|
* *
|
||
|
*---------------------------------------------------------------------------------------------*
|
||
|
* Functions: *
|
||
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
||
|
|
||
|
|
||
|
#ifndef RULES_H
|
||
|
#define RULES_H
|
||
|
|
||
|
#include "ccini.h"
|
||
|
|
||
|
class DifficultyClass
|
||
|
{
|
||
|
public:
|
||
|
fixed FirepowerBias;
|
||
|
fixed GroundspeedBias;
|
||
|
fixed AirspeedBias;
|
||
|
fixed ArmorBias;
|
||
|
fixed ROFBias;
|
||
|
fixed CostBias;
|
||
|
fixed BuildSpeedBias;
|
||
|
|
||
|
fixed RepairDelay;
|
||
|
fixed BuildDelay;
|
||
|
|
||
|
unsigned IsBuildSlowdown:1;
|
||
|
unsigned IsWallDestroyer:1;
|
||
|
unsigned IsContentScan:1;
|
||
|
};
|
||
|
|
||
|
class RulesClass {
|
||
|
public:
|
||
|
|
||
|
RulesClass(void);
|
||
|
|
||
|
bool Process(CCINIClass & file);
|
||
|
bool General(CCINIClass & ini);
|
||
|
bool MPlayer(CCINIClass & ini);
|
||
|
bool Recharge(CCINIClass & ini);
|
||
|
bool Heap_Maximums(CCINIClass & ini);
|
||
|
bool AI(CCINIClass & ini);
|
||
|
bool Powerups(CCINIClass & ini);
|
||
|
bool Land_Types(CCINIClass & ini);
|
||
|
bool Themes(CCINIClass & ini);
|
||
|
bool IQ(CCINIClass & ini);
|
||
|
bool Objects(CCINIClass & ini);
|
||
|
bool Difficulty(CCINIClass & ini);
|
||
|
|
||
|
/*
|
||
|
** This specifies the turbo boost speed for missiles when they are fired upon
|
||
|
** aircraft and the weapon is specified as having a turbo boost bonus.
|
||
|
*/
|
||
|
fixed TurboBoost;
|
||
|
|
||
|
/*
|
||
|
** This specifies the average number of minutes between each computer attack.
|
||
|
*/
|
||
|
fixed AttackInterval;
|
||
|
|
||
|
/*
|
||
|
** This specifies the average minutes delay before the computer will begin
|
||
|
** its first attack upon the player. The duration is also modified by the
|
||
|
** difficulty level.
|
||
|
*/
|
||
|
fixed AttackDelay;
|
||
|
|
||
|
/*
|
||
|
** If the power ratio falls below this percentage, then a power emergency is
|
||
|
** in effect. At such times, the computer might decide to sell off some
|
||
|
** power hungry buildings in order to alleviate the situation.
|
||
|
*/
|
||
|
fixed PowerEmergencyFraction;
|
||
|
|
||
|
/*
|
||
|
** The number of badgers that arrive when the parabomb option is used.
|
||
|
*/
|
||
|
int BadgerBombCount;
|
||
|
|
||
|
/*
|
||
|
** This specifies the percentage of the base (by building quantity) that should
|
||
|
** be composed of airstrips.
|
||
|
*/
|
||
|
fixed AirstripRatio;
|
||
|
|
||
|
/*
|
||
|
** Limit the number of airstrips to this amount.
|
||
|
*/
|
||
|
int AirstripLimit;
|
||
|
|
||
|
/*
|
||
|
** This specifies the percentage of the base (by building quantity) that should
|
||
|
** be composed of helipads.
|
||
|
*/
|
||
|
fixed HelipadRatio;
|
||
|
|
||
|
/*
|
||
|
** Limit the number of helipads to this amount.
|
||
|
*/
|
||
|
int HelipadLimit;
|
||
|
|
||
|
/*
|
||
|
** This specifies the percentage of the base (by building quantity) that should
|
||
|
** be composed of Tesla Coils.
|
||
|
*/
|
||
|
fixed TeslaRatio;
|
||
|
|
||
|
/*
|
||
|
** Limit tesla coil production to this maximum.
|
||
|
*/
|
||
|
int TeslaLimit;
|
||
|
|
||
|
/*
|
||
|
** This specifies the percentage of the base (by building quantity) that should
|
||
|
** be composed of anti-aircraft defense.
|
||
|
*/
|
||
|
fixed AARatio;
|
||
|
|
||
|
/*
|
||
|
** Limit anti-aircraft building quantity to this amount.
|
||
|
*/
|
||
|
int AALimit;
|
||
|
|
||
|
/*
|
||
|
** This specifies the percentage of the base (by building quantity) that should
|
||
|
** be composed of defensive structures.
|
||
|
*/
|
||
|
fixed DefenseRatio;
|
||
|
|
||
|
/*
|
||
|
** This is the limit to the number of defensive building that can be built.
|
||
|
*/
|
||
|
int DefenseLimit;
|
||
|
|
||
|
/*
|
||
|
** This specifies the percentage of the base (by building quantity) that should
|
||
|
** be composed of war factories.
|
||
|
*/
|
||
|
fixed WarRatio;
|
||
|
|
||
|
/*
|
||
|
** War factories are limited to this quantity for the computer controlled player.
|
||
|
*/
|
||
|
int WarLimit;
|
||
|
|
||
|
/*
|
||
|
** This specifies the percentage of the base (by building quantity) that should
|
||
|
** be composed of infantry producing structures.
|
||
|
*/
|
||
|
fixed BarracksRatio;
|
||
|
|
||
|
/*
|
||
|
** No more than this many barracks can be built.
|
||
|
*/
|
||
|
int BarracksLimit;
|
||
|
|
||
|
/*
|
||
|
** Refinery building is limited to this many refineries.
|
||
|
*/
|
||
|
int RefineryLimit;
|
||
|
|
||
|
/*
|
||
|
** This specifies the percentage of the base (by building quantity) that should
|
||
|
** be composed of refineries.
|
||
|
*/
|
||
|
fixed RefineryRatio;
|
||
|
|
||
|
/*
|
||
|
** The computer is limited in the size of the base it can build. It is limited to the
|
||
|
** size of the largest human opponent base plus this surplus count.
|
||
|
*/
|
||
|
int BaseSizeAdd;
|
||
|
|
||
|
/*
|
||
|
** If the power surplus is less than this amount, then the computer will
|
||
|
** build power plants.
|
||
|
*/
|
||
|
int PowerSurplus;
|
||
|
|
||
|
/*
|
||
|
** The computer will build infantry if their cash reserve is greater than this amount.
|
||
|
*/
|
||
|
int InfantryReserve;
|
||
|
|
||
|
/*
|
||
|
** This factor is multiplied by the number of buildings in the computer's base and infantry
|
||
|
** are always built until it matches that number.
|
||
|
*/
|
||
|
int InfantryBaseMult;
|
||
|
|
||
|
/*
|
||
|
** This specifies the duration that a unit will remain chronoshifted before it
|
||
|
** will be returned to its starting location.
|
||
|
*/
|
||
|
fixed ChronoDuration;
|
||
|
|
||
|
/*
|
||
|
** Percent chance that a water crate will be generated instead of a land
|
||
|
** crate when crates are on and in a multiplay game.
|
||
|
*/
|
||
|
fixed WaterCrateChance;
|
||
|
|
||
|
/*
|
||
|
** Solo play has money crate amount fixed according to this rule value.
|
||
|
*/
|
||
|
int SoloCrateMoney;
|
||
|
|
||
|
/*
|
||
|
** GPS tech level control.
|
||
|
*/
|
||
|
int GPSTechLevel;
|
||
|
|
||
|
/*
|
||
|
** If a unit type is specified here, then the unit crate will generate
|
||
|
** a unit of this type (always).
|
||
|
*/
|
||
|
UnitType UnitCrateType;
|
||
|
|
||
|
/*
|
||
|
** This is the time to delay between patrol-to-waypoint target scanning.
|
||
|
*/
|
||
|
fixed PatrolTime;
|
||
|
|
||
|
/*
|
||
|
** This is the time interval that checking to create teams will span. The
|
||
|
** smaller this number, the more often checking for team creation will occur.
|
||
|
*/
|
||
|
fixed TeamDelay;
|
||
|
|
||
|
/*
|
||
|
** This is the arbitrary delay to make all cloaking objects remain uncloaked
|
||
|
** before having it recloak.
|
||
|
*/
|
||
|
fixed CloakDelay;
|
||
|
|
||
|
/*
|
||
|
** This is an overall game apparent speed bias to use for object
|
||
|
** movement purposes.
|
||
|
*/
|
||
|
fixed GameSpeedBias;
|
||
|
|
||
|
/*
|
||
|
** If a potential target is close to the base then increase
|
||
|
** the likelyhood of attacking it by this bias factor.
|
||
|
*/
|
||
|
fixed NervousBias;
|
||
|
|
||
|
/*
|
||
|
** Controls the Chronal vortex characteristics.
|
||
|
*/
|
||
|
LEPTON VortexRange;
|
||
|
MPHType VortexSpeed;
|
||
|
int VortexDamage;
|
||
|
fixed VortexChance;
|
||
|
|
||
|
/*
|
||
|
** When an explosive object explodes, the damage will spread out
|
||
|
** by this factor. The value represents the number of cells radius
|
||
|
** that the damage will spread for every 100 points of raw damage at
|
||
|
** the explosion center point.
|
||
|
*/
|
||
|
fixed ExplosionSpread;
|
||
|
|
||
|
/*
|
||
|
** For weapons specially marked to check for nearby friendly buildings
|
||
|
** when scanning for good targets, this indicates the scan radius. Such
|
||
|
** weapons will supress firing on enemies if they are in close proximity
|
||
|
** to allied buildings.
|
||
|
*/
|
||
|
LEPTON SupressRadius;
|
||
|
|
||
|
/*
|
||
|
** This is the tech level that para infantry are granted free to the owner
|
||
|
** of an airstrip.
|
||
|
*/
|
||
|
int ParaInfantryTechLevel;
|
||
|
|
||
|
/*
|
||
|
** This is the tech level that spy planes are granted free to the owner of
|
||
|
** an airstrip.
|
||
|
*/
|
||
|
int SpyPlaneTechLevel;
|
||
|
|
||
|
/*
|
||
|
** This is the tech level that the parabombs are granted free to the owner
|
||
|
** of an airstrip.
|
||
|
*/
|
||
|
int ParaBombTechLevel;
|
||
|
|
||
|
/*
|
||
|
** This is the maximum number of IQ settings available. The human player is
|
||
|
** presumed to be at IQ level zero.
|
||
|
*/
|
||
|
int MaxIQ;
|
||
|
|
||
|
/*
|
||
|
** The IQ level at which super weapons will be automatically fired by the computer.
|
||
|
*/
|
||
|
int IQSuperWeapons;
|
||
|
|
||
|
/*
|
||
|
** The IQ level at which production is automatically controlled by the computer.
|
||
|
*/
|
||
|
int IQProduction;
|
||
|
|
||
|
/*
|
||
|
** The IQ level at which newly produced units start out in guard area mode instead
|
||
|
** of normal guard mode.
|
||
|
*/
|
||
|
int IQGuardArea;
|
||
|
|
||
|
/*
|
||
|
** The IQ level at which the computer will be able to decide what gets repaired
|
||
|
** or sold.
|
||
|
*/
|
||
|
int IQRepairSell;
|
||
|
|
||
|
/*
|
||
|
** At this IQ level or higher, a unit is allowed to automatically try to crush
|
||
|
** an atagonist if possible.
|
||
|
*/
|
||
|
int IQCrush;
|
||
|
|
||
|
/*
|
||
|
** The unit/infantry will try to scatter if an incoming threat
|
||
|
** is detected.
|
||
|
*/
|
||
|
int IQScatter;
|
||
|
|
||
|
/*
|
||
|
** Tech level at which the computer will scan the contents of a transport
|
||
|
** in order to pick the best target to fire upon.
|
||
|
*/
|
||
|
int IQContentScan;
|
||
|
|
||
|
/*
|
||
|
** Aircraft replacement production occurs at this IQ level or higher.
|
||
|
*/
|
||
|
int IQAircraft;
|
||
|
|
||
|
/*
|
||
|
** Checks for and replaces lost harvesters.
|
||
|
*/
|
||
|
int IQHarvester;
|
||
|
|
||
|
/*
|
||
|
** Is allowed to sell a structure being damaged.
|
||
|
*/
|
||
|
int IQSellBack;
|
||
|
|
||
|
/*
|
||
|
** The silver and wood crates in solo play will have these powerups.
|
||
|
*/
|
||
|
CrateType SilverCrate;
|
||
|
CrateType WoodCrate;
|
||
|
CrateType WaterCrate;
|
||
|
|
||
|
/*
|
||
|
** This specifies the minimum number of crates to place on the map in spite
|
||
|
** of the number of actual human players.
|
||
|
*/
|
||
|
int CrateMinimum;
|
||
|
|
||
|
/*
|
||
|
** This specifies the crate maximum quantity to use.
|
||
|
*/
|
||
|
int CrateMaximum;
|
||
|
|
||
|
/*
|
||
|
** Landing zone maximum alternate zone scan radius.
|
||
|
*/
|
||
|
LEPTON LZScanRadius;
|
||
|
|
||
|
/*
|
||
|
** Multiplayer default settings.
|
||
|
*/
|
||
|
int MPDefaultMoney;
|
||
|
int MPMaxMoney;
|
||
|
unsigned IsMPShadowGrow:1;
|
||
|
unsigned IsMPBasesOn:1;
|
||
|
unsigned IsMPTiberiumGrow:1;
|
||
|
unsigned IsMPCrates:1;
|
||
|
unsigned IsMPAIPlayers:1;
|
||
|
unsigned IsMPCaptureTheFlag:1;
|
||
|
|
||
|
/*
|
||
|
** Drop zone reveal radius.
|
||
|
*/
|
||
|
LEPTON DropZoneRadius;
|
||
|
|
||
|
/*
|
||
|
** This is the delay that multiplayer messages will remain on the screen.
|
||
|
*/
|
||
|
fixed MessageDelay;
|
||
|
|
||
|
/*
|
||
|
** Savour delay between when scenario detects end and the actual
|
||
|
** end of the play.
|
||
|
*/
|
||
|
fixed SavourDelay;
|
||
|
|
||
|
/*
|
||
|
** This specifies the damage to inflict for two differnt styles of
|
||
|
** land mine.
|
||
|
*/
|
||
|
int AVMineDamage;
|
||
|
int APMineDamage;
|
||
|
|
||
|
/*
|
||
|
** This is the maximum number of multiplayers allowed.
|
||
|
*/
|
||
|
int MaxPlayers;
|
||
|
|
||
|
/*
|
||
|
** This is the delay between 'panic attacks' when the computer's base is under
|
||
|
** attack. This delay gives the previously assigned units a chance to affect the
|
||
|
** attacker before the computer sends more.
|
||
|
*/
|
||
|
fixed BaseDefenseDelay;
|
||
|
|
||
|
/*
|
||
|
** These values control the team suspension logic for dealing with immedate base threats.
|
||
|
** When the base is attacked, all teams with less than the specified priority will be
|
||
|
** temporarily put on hold for the number of minutes specified.
|
||
|
*/
|
||
|
int SuspendPriority;
|
||
|
fixed SuspendDelay;
|
||
|
|
||
|
/*
|
||
|
** This serves as the fraction of a building's original cost that is converted
|
||
|
** into survivors (of some fashion). There are rounding and other marginal
|
||
|
** fudge effects, but this value is the greatest control over the survivor rate.
|
||
|
*/
|
||
|
fixed SurvivorFraction;
|
||
|
|
||
|
/*
|
||
|
** This is the aircraft reload rate expressed in minutes per ammo load.
|
||
|
*/
|
||
|
fixed ReloadRate;
|
||
|
|
||
|
/*
|
||
|
** The average time (in minutes) between the computer autocreating a team
|
||
|
** from the team's autocreate list.
|
||
|
*/
|
||
|
fixed AutocreateTime;
|
||
|
|
||
|
/*
|
||
|
** Build up time for buildings (minutes).
|
||
|
*/
|
||
|
fixed BuildupTime;
|
||
|
|
||
|
/*
|
||
|
** Ore truck speed for dumping.
|
||
|
*/
|
||
|
int OreDumpRate;
|
||
|
|
||
|
/*
|
||
|
** This is the amount of damage done by the atom bomb in solo missions. The
|
||
|
** damage done during multiplay will be 1/5th this value.
|
||
|
*/
|
||
|
int AtomDamage;
|
||
|
|
||
|
/*
|
||
|
** This array controls the difficulty affects on the game. There is one
|
||
|
** difficulty class object for each difficulty level.
|
||
|
*/
|
||
|
DifficultyClass Diff[DIFF_COUNT];
|
||
|
|
||
|
/*
|
||
|
** Is the computer paranoid? If so, then it will band together with other computer
|
||
|
** paranoid players when the situation looks rough.
|
||
|
*/
|
||
|
bool IsComputerParanoid:1;
|
||
|
|
||
|
/*
|
||
|
** Should helicopters shuffle their position between firing on their
|
||
|
** target?
|
||
|
*/
|
||
|
bool IsCurleyShuffle:1;
|
||
|
|
||
|
/*
|
||
|
** Flash the power bar when the power goes below 100%.
|
||
|
*/
|
||
|
bool IsFlashLowPower:1;
|
||
|
|
||
|
/*
|
||
|
** If the computer players will go to easy mode if there is more
|
||
|
** than one human player, this flag will be true.
|
||
|
*/
|
||
|
bool IsCompEasyBonus:1;
|
||
|
|
||
|
/*
|
||
|
** If fine control of difficulty settings is desired, then set this value to true.
|
||
|
** Fine control allows 5 settings. The coarse control only allows three settings.
|
||
|
*/
|
||
|
bool IsFineDifficulty:1;
|
||
|
|
||
|
/*
|
||
|
** If the harvester is to explode more violently than normal
|
||
|
** if it is carrying cargo, then this flag will be true.
|
||
|
*/
|
||
|
unsigned IsExplosiveHarvester:1;
|
||
|
|
||
|
/*
|
||
|
** If this flag is true, then the construction yard can undeploy back into an MCV.
|
||
|
*/
|
||
|
unsigned IsMCVDeploy:1;
|
||
|
|
||
|
/*
|
||
|
** If the base is to be revealed to a new ally, then this
|
||
|
** flag will be true.
|
||
|
*/
|
||
|
unsigned IsAllyReveal:1;
|
||
|
|
||
|
/*
|
||
|
** Can the helipad (and airfield) be purchased separately from the associated
|
||
|
** aircraft.
|
||
|
*/
|
||
|
unsigned IsSeparate:1;
|
||
|
|
||
|
/*
|
||
|
** Give target cursor for trees? Doing this will make targetting of trees easier.
|
||
|
*/
|
||
|
unsigned IsTreeTarget:1;
|
||
|
|
||
|
/*
|
||
|
** Are friendly units automatically aware of mines so that they can avoid them?
|
||
|
*/
|
||
|
unsigned IsMineAware:1;
|
||
|
|
||
|
/*
|
||
|
** If Tiberium is allowed to grow, then this flag will be true.
|
||
|
*/
|
||
|
unsigned IsTGrowth:1;
|
||
|
|
||
|
/*
|
||
|
** If Tiberium is allowed to spread, then this flag will be true.
|
||
|
*/
|
||
|
unsigned IsTSpread:1;
|
||
|
|
||
|
/*
|
||
|
** Should civilan buildings and civilians display their true name rather than
|
||
|
** the generic "Civilian Building" and "Civilain"?
|
||
|
*/
|
||
|
unsigned IsNamed:1;
|
||
|
|
||
|
/*
|
||
|
** Should player controlled vehicles automatically try to crush nearby infantry
|
||
|
** instead of required the player to manually direct them to crush.
|
||
|
*/
|
||
|
unsigned IsAutoCrush:1;
|
||
|
|
||
|
/*
|
||
|
** Should the player controlled buildings and units automatically return fire when
|
||
|
** fired upon?
|
||
|
*/
|
||
|
unsigned IsSmartDefense:1;
|
||
|
|
||
|
/*
|
||
|
** Should player controlled units try to scatter more easily in order to
|
||
|
** avoid damage or threats?
|
||
|
*/
|
||
|
unsigned IsScatter:1;
|
||
|
|
||
|
/*
|
||
|
** If the chronoshift effect should kill all cargo, then this flag will
|
||
|
** be set to true.
|
||
|
*/
|
||
|
unsigned IsChronoKill:1;
|
||
|
|
||
|
/*
|
||
|
** When infantry are prone or when civilians are running around like crazy,
|
||
|
** they are less prone to damage. This specifies the multiplier to the damage
|
||
|
** (as a fixed point number).
|
||
|
*/
|
||
|
fixed ProneDamageBias;
|
||
|
|
||
|
/*
|
||
|
** The time quake will do this percentage of damage to all units and buildings
|
||
|
** in the game. The number is expressed as a fixed point percentage.
|
||
|
*/
|
||
|
fixed QuakeDamagePercent;
|
||
|
|
||
|
/*
|
||
|
** Percentage chance that a time quake will occur with each chronoshift use.
|
||
|
*/
|
||
|
fixed QuakeChance;
|
||
|
|
||
|
/*
|
||
|
** Ore (Tiberium) growth rate. The value is the number of minutes between
|
||
|
** growth steps.
|
||
|
*/
|
||
|
fixed GrowthRate;
|
||
|
|
||
|
/*
|
||
|
** This specifies the number of minutes between each shroud regrowth process.
|
||
|
*/
|
||
|
fixed ShroudRate;
|
||
|
|
||
|
/*
|
||
|
** This is the average minutes between each generation of a random crate
|
||
|
** to be placed on the map if generating of random crates is indicated.
|
||
|
*/
|
||
|
fixed CrateTime;
|
||
|
|
||
|
/*
|
||
|
** This specifies the number of minutes remaining before that if the mission timer
|
||
|
** gets to this level or below, it will be displayed in red.
|
||
|
*/
|
||
|
fixed TimerWarning;
|
||
|
|
||
|
/*
|
||
|
** This specifies the minutes of delay between recharges for these
|
||
|
** special weapon types.
|
||
|
*/
|
||
|
fixed SonarTime;
|
||
|
fixed ChronoTime;
|
||
|
fixed ParaBombTime;
|
||
|
fixed ParaInfantryTime;
|
||
|
fixed ParaSaboteurTime;
|
||
|
fixed SpyTime;
|
||
|
fixed IronCurtainTime;
|
||
|
fixed GPSTime;
|
||
|
fixed NukeTime;
|
||
|
|
||
|
/*
|
||
|
** Other miscellaneous delay times.
|
||
|
*/
|
||
|
fixed SpeakDelay;
|
||
|
fixed DamageDelay;
|
||
|
|
||
|
/*
|
||
|
** This is the gravity constant used to control the arcing and descent of ballistic
|
||
|
** object such as grenades and artillery.
|
||
|
*/
|
||
|
int Gravity;
|
||
|
|
||
|
/*
|
||
|
** Gap generators have a shroud radius of this many cells.
|
||
|
*/
|
||
|
int GapShroudRadius;
|
||
|
|
||
|
/*
|
||
|
** This is the minute interval between the gap generators refreshing
|
||
|
** their zones of gapping.
|
||
|
*/
|
||
|
fixed GapRegenInterval;
|
||
|
|
||
|
/*
|
||
|
** Mobile radar jammer radius of effect.
|
||
|
*/
|
||
|
LEPTON RadarJamRadius;
|
||
|
|
||
|
/*
|
||
|
** The speed at which a projectile that travels at or slower will cause
|
||
|
** objects in the target location to scatter. This simulates the ability
|
||
|
** of targets to run for cover if the projectile gives them enough time
|
||
|
** to react.
|
||
|
*/
|
||
|
MPHType Incoming;
|
||
|
|
||
|
/*
|
||
|
** Minimum and maximum damage allowed per shot.
|
||
|
*/
|
||
|
int MinDamage;
|
||
|
int MaxDamage;
|
||
|
|
||
|
/*
|
||
|
** This is the rate of repair for units and buildings. The rate is the
|
||
|
** number of strength points repaired per repair clock tick. The cost of
|
||
|
** repair is the (fixed point) fractional cost to repair the object based
|
||
|
** on the full price of the object. Example; a value of 50% means that to
|
||
|
** repair the object from 1 damage point to full strength would cost 50% of
|
||
|
** the cost to build it from scratch.
|
||
|
*/
|
||
|
int RepairStep;
|
||
|
fixed RepairPercent;
|
||
|
int URepairStep;
|
||
|
fixed URepairPercent;
|
||
|
|
||
|
/*
|
||
|
** This is the rate that objects with self healing will heal. They will repair a bit
|
||
|
** every 'this' number of minutes.
|
||
|
*/
|
||
|
fixed RepairRate;
|
||
|
|
||
|
/*
|
||
|
** These fixed point values are used to determine the status (health bar
|
||
|
** color) of the game objects. Objects in the 'yellow' are in a cautionary
|
||
|
** state. Object in the 'red' are in a danger state.
|
||
|
*/
|
||
|
fixed ConditionGreen;
|
||
|
fixed ConditionYellow;
|
||
|
fixed ConditionRed;
|
||
|
|
||
|
/*
|
||
|
** Average number of minutes between infantry random idle animations.
|
||
|
*/
|
||
|
fixed RandomAnimateTime;
|
||
|
|
||
|
/*
|
||
|
** These control the capacity and value of the ore types that a harvester
|
||
|
** may carry. The harvester carries a maximum discrete number of 'bails'.
|
||
|
** The value of each bail depends on the ore it is composed of.
|
||
|
*/
|
||
|
int BailCount; // was STEP_COUNT
|
||
|
int GoldValue; // was GOLD_WORTH
|
||
|
int GemValue; // was GEM_WORTH
|
||
|
|
||
|
/*
|
||
|
** This specifies the heap maximum for the various game objects.
|
||
|
*/
|
||
|
int AircraftMax;
|
||
|
int AnimMax;
|
||
|
int BuildingMax;
|
||
|
int BulletMax;
|
||
|
int FactoryMax;
|
||
|
int InfantryMax;
|
||
|
int OverlayMax;
|
||
|
int SmudgeMax;
|
||
|
int TeamMax;
|
||
|
int TeamTypeMax;
|
||
|
int TemplateMax;
|
||
|
int TerrainMax;
|
||
|
int TriggerMax;
|
||
|
int UnitMax;
|
||
|
int VesselMax;
|
||
|
int ProjectileMax;
|
||
|
int WeaponMax;
|
||
|
int WarheadMax;
|
||
|
int TrigTypeMax;
|
||
|
|
||
|
/*
|
||
|
** Close enough distance that is used to determine if the object should
|
||
|
** stop movement when blocked. If the distance to the desired destination
|
||
|
** is equal to this distance or less, but the path is blocked, then consider
|
||
|
** the object to have gotten "close enough" to the destination to stop.
|
||
|
*/
|
||
|
LEPTON CloseEnoughDistance;
|
||
|
|
||
|
/*
|
||
|
** Stray distance to group team members within. The larger the distance,
|
||
|
** the looser the teams will move.
|
||
|
*/
|
||
|
LEPTON StrayDistance;
|
||
|
|
||
|
/*
|
||
|
** If a vehicle is closer than this range to a target that it can crush
|
||
|
** by driving over it, then it will try to drive over it instead of firing
|
||
|
** upon it. The larger the value, the greater the 'bigfoot crush syndrome' is
|
||
|
** has.
|
||
|
*/
|
||
|
LEPTON CrushDistance;
|
||
|
|
||
|
/*
|
||
|
** For area effect crate bonus items will affect all objects within this radius.
|
||
|
*/
|
||
|
LEPTON CrateRadius;
|
||
|
|
||
|
/*
|
||
|
** Maximum scatter distances for homing and non-homing projectiles.
|
||
|
*/
|
||
|
LEPTON HomingScatter;
|
||
|
LEPTON BallisticScatter;
|
||
|
|
||
|
/*
|
||
|
** This is the refund percentage when selling off buildings and units
|
||
|
** on the repair pad (service depot).
|
||
|
*/
|
||
|
fixed RefundPercent;
|
||
|
|
||
|
/*
|
||
|
** The Iron Curtain invulnerability effect lasts for this many minutes.
|
||
|
*/
|
||
|
fixed IronCurtainDuration;
|
||
|
|
||
|
/*
|
||
|
** The strength of bridges is held here. By corollary, the strength of the
|
||
|
** demolition charge carried by Tanya is equal to this value as well.
|
||
|
*/
|
||
|
int BridgeStrength;
|
||
|
|
||
|
/*
|
||
|
** This is the overall build speed bias. Multiply this value by the normal build
|
||
|
** delay to get the effective build delay.
|
||
|
*/
|
||
|
fixed BuildSpeedBias;
|
||
|
|
||
|
/*
|
||
|
** Weapon type array pointer should go here. Dynamic type.
|
||
|
*/
|
||
|
|
||
|
|
||
|
/*
|
||
|
** Warhead type class array pointer should go here. Dynamic type.
|
||
|
*/
|
||
|
|
||
|
|
||
|
/*
|
||
|
** Ground type and speed affect data should go here.
|
||
|
*/
|
||
|
|
||
|
|
||
|
/*
|
||
|
** This is the delay between the time a C4 bomb is planted and the time it will
|
||
|
** explode. The longer the delay, the greater safety margin for a demolitioner
|
||
|
** type. The short the delay, the less time the victim has to sell the building
|
||
|
** off.
|
||
|
*/
|
||
|
fixed C4Delay;
|
||
|
|
||
|
/*
|
||
|
** The computer will only repair a structure if it has spare money greater than this
|
||
|
** amount. The thinking is that this will prevent the computer from frittering away
|
||
|
** all it's cash on repairing and thus leaving nothing for production of defenses.
|
||
|
*/
|
||
|
int RepairThreshhold;
|
||
|
|
||
|
/*
|
||
|
** This is the delay (in minutes) between retries of a failed path. The longer the
|
||
|
** delay the faster the system, but the longer the units take to react to a blocked
|
||
|
** terrain event.
|
||
|
*/
|
||
|
fixed PathDelay;
|
||
|
|
||
|
/*
|
||
|
** This is the special (debug version only) movie recorder timeout value. Each second
|
||
|
** results in about 2-3 megabytes.
|
||
|
*/
|
||
|
fixed MovieTime;
|
||
|
|
||
|
/*
|
||
|
** This is the level at or above which the chronosphere facility can
|
||
|
** actually produce the chronosphere effect. Below this tech level,
|
||
|
** the facility is merely a showpiece and has no effect.
|
||
|
*/
|
||
|
int ChronoTechLevel;
|
||
|
|
||
|
/*
|
||
|
** These are the Tiberium scan distances. The short range scan is used to determine if the
|
||
|
** current field has been exhausted. The long range scan is used when finding a Tiberium
|
||
|
** field to harvest. Keep these ranges as small as possible.
|
||
|
*/
|
||
|
LEPTON TiberiumShortScan;
|
||
|
LEPTON TiberiumLongScan;
|
||
|
|
||
|
/*
|
||
|
** Health bar display mode
|
||
|
*/
|
||
|
enum eHealthBarDisplayMode
|
||
|
{
|
||
|
HB_DAMAGED = 0,
|
||
|
HB_ALWAYS,
|
||
|
HB_SELECTED
|
||
|
} HealthBarDisplayMode;
|
||
|
|
||
|
/*
|
||
|
** Resource bar display mode
|
||
|
*/
|
||
|
enum eResourceBarDisplayMode
|
||
|
{
|
||
|
RB_SELECTED = 0,
|
||
|
RB_ALWAYS,
|
||
|
} ResourceBarDisplayMode;
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif
|