CnC_Remastered_Collection

Command and Conquer: Red Alert
Log | Files | Refs | README | LICENSE

RULES.H (23734B)


      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/RULES.H 1     3/03/97 10:25a 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 : RULES.H                                                      *
     24  *                                                                                             *
     25  *                   Programmer : Joe L. Bostic                                                *
     26  *                                                                                             *
     27  *                   Start Date : 05/12/96                                                     *
     28  *                                                                                             *
     29  *                  Last Update : May 12, 1996 [JLB]                                           *
     30  *                                                                                             *
     31  *---------------------------------------------------------------------------------------------*
     32  * Functions:                                                                                  *
     33  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
     34 
     35 
     36 #ifndef RULES_H
     37 #define RULES_H
     38 
     39 #include	"ccini.h"
     40 
     41 class DifficultyClass
     42 {
     43 	public:
     44 		fixed FirepowerBias;
     45 		fixed GroundspeedBias;
     46 		fixed AirspeedBias;
     47 		fixed ArmorBias;
     48 		fixed ROFBias;
     49 		fixed CostBias;
     50 		fixed BuildSpeedBias;
     51 
     52 		fixed RepairDelay;
     53 		fixed BuildDelay;
     54 
     55 		unsigned IsBuildSlowdown:1;
     56 		unsigned IsWallDestroyer:1;
     57 		unsigned IsContentScan:1;
     58 };
     59 
     60 class RulesClass {
     61 	public:
     62 
     63 		RulesClass(void);
     64 
     65 		bool Process(CCINIClass & file);
     66 		bool General(CCINIClass & ini);
     67 		bool MPlayer(CCINIClass & ini);
     68 		bool Recharge(CCINIClass & ini);
     69 		bool Heap_Maximums(CCINIClass & ini);
     70 		bool AI(CCINIClass & ini);
     71 		bool Powerups(CCINIClass & ini);
     72 		bool Land_Types(CCINIClass & ini);
     73 		bool Themes(CCINIClass & ini);
     74 		bool IQ(CCINIClass & ini);
     75 		bool Objects(CCINIClass & ini);
     76 		bool Difficulty(CCINIClass & ini);
     77 
     78 		/*
     79 		**	This specifies the turbo boost speed for missiles when they are fired upon
     80 		**	aircraft and the weapon is specified as having a turbo boost bonus.
     81 		*/
     82 		fixed TurboBoost;
     83 
     84 		/*
     85 		**	This specifies the average number of minutes between each computer attack.
     86 		*/
     87 		fixed AttackInterval;
     88 
     89 		/*
     90 		**	This specifies the average minutes delay before the computer will begin
     91 		**	its first attack upon the player. The duration is also modified by the
     92 		**	difficulty level.
     93 		*/
     94 		fixed AttackDelay;
     95 
     96 		/*
     97 		**	If the power ratio falls below this percentage, then a power emergency is
     98 		**	in effect. At such times, the computer might decide to sell off some
     99 		**	power hungry buildings in order to alleviate the situation.
    100 		*/
    101 		fixed PowerEmergencyFraction;
    102 
    103 		/*
    104 		**	The number of badgers that arrive when the parabomb option is used.
    105 		*/
    106 		int BadgerBombCount;
    107 
    108 		/*
    109 		**	This specifies the percentage of the base (by building quantity) that should
    110 		**	be composed of airstrips.
    111 		*/
    112 		fixed AirstripRatio;
    113 
    114 		/*
    115 		**	Limit the number of airstrips to this amount.
    116 		*/
    117 		int AirstripLimit;
    118 
    119 		/*
    120 		**	This specifies the percentage of the base (by building quantity) that should
    121 		**	be composed of helipads.
    122 		*/
    123 		fixed HelipadRatio;
    124 
    125 		/*
    126 		**	Limit the number of helipads to this amount.
    127 		*/
    128 		int HelipadLimit;
    129 
    130 		/*
    131 		**	This specifies the percentage of the base (by building quantity) that should
    132 		**	be composed of Tesla Coils.
    133 		*/
    134 		fixed TeslaRatio;
    135 
    136 		/*
    137 		**	Limit tesla coil production to this maximum.
    138 		*/
    139 		int TeslaLimit;
    140 
    141 		/*
    142 		**	This specifies the percentage of the base (by building quantity) that should
    143 		**	be composed of anti-aircraft defense.
    144 		*/
    145 		fixed AARatio;
    146 
    147 		/*
    148 		**	Limit anti-aircraft building quantity to this amount.
    149 		*/
    150 		int AALimit;
    151 
    152 		/*
    153 		**	This specifies the percentage of the base (by building quantity) that should
    154 		**	be composed of defensive structures.
    155 		*/
    156 		fixed DefenseRatio;
    157 
    158 		/*
    159 		**	This is the limit to the number of defensive building that can be built.
    160 		*/
    161 		int DefenseLimit;
    162 
    163 		/*
    164 		**	This specifies the percentage of the base (by building quantity) that should
    165 		**	be composed of war factories.
    166 		*/
    167 		fixed WarRatio;
    168 
    169 		/*
    170 		**	War factories are limited to this quantity for the computer controlled player.
    171 		*/
    172 		int WarLimit;
    173 
    174 		/*
    175 		**	This specifies the percentage of the base (by building quantity) that should
    176 		**	be composed of infantry producing structures.
    177 		*/
    178 		fixed BarracksRatio;
    179 
    180 		/*
    181 		**	No more than this many barracks can be built.
    182 		*/
    183 		int BarracksLimit;
    184 
    185 		/*
    186 		**	Refinery building is limited to this many refineries.
    187 		*/
    188 		int RefineryLimit;
    189 
    190 		/*
    191 		**	This specifies the percentage of the base (by building quantity) that should
    192 		**	be composed of refineries.
    193 		*/
    194 		fixed RefineryRatio;
    195 
    196 		/*
    197 		**	The computer is limited in the size of the base it can build. It is limited to the
    198 		**	size of the largest human opponent base plus this surplus count.
    199 		*/
    200 		int BaseSizeAdd;
    201 
    202 		/*
    203 		**	If the power surplus is less than this amount, then the computer will
    204 		**	build power plants.
    205 		*/
    206 		int PowerSurplus;
    207 
    208 		/*
    209 		**	The computer will build infantry if their cash reserve is greater than this amount.
    210 		*/
    211 		int InfantryReserve;
    212 
    213 		/*
    214 		**	This factor is multiplied by the number of buildings in the computer's base and infantry
    215 		**	are always built until it matches that number.
    216 		*/
    217 		int InfantryBaseMult;
    218 
    219 		/*
    220 		**	This specifies the duration that a unit will remain chronoshifted before it
    221 		**	will be returned to its starting location.
    222 		*/
    223 		fixed ChronoDuration;
    224 
    225 		/*
    226 		**	Percent chance that a water crate will be generated instead of a land
    227 		**	crate when crates are on and in a multiplay game.
    228 		*/
    229 		fixed WaterCrateChance;
    230 
    231 		/*
    232 		**	Solo play has money crate amount fixed according to this rule value.
    233 		*/
    234 		int SoloCrateMoney;
    235 
    236 		/*
    237 		**	GPS tech level control.
    238 		*/
    239 		int GPSTechLevel;
    240 
    241 		/*
    242 		**	If a unit type is specified here, then the unit crate will generate
    243 		**	a unit of this type (always).
    244 		*/
    245 		UnitType UnitCrateType;
    246 
    247 		/*
    248 		**	This is the time to delay between patrol-to-waypoint target scanning.
    249 		*/
    250 		fixed PatrolTime;
    251 
    252 		/*
    253 		**	This is the time interval that checking to create teams will span. The
    254 		**	smaller this number, the more often checking for team creation will occur.
    255 		*/
    256 		fixed TeamDelay;
    257 
    258 		/*
    259 		**	This is the arbitrary delay to make all cloaking objects remain uncloaked
    260 		**	before having it recloak.
    261 		*/
    262 		fixed CloakDelay;
    263 
    264 		/*
    265 		**	This is an overall game apparent speed bias to use for object
    266 		**	movement purposes.
    267 		*/
    268 		fixed GameSpeedBias;
    269 
    270 		/*
    271 		**	If a potential target is close to the base then increase
    272 		**	the likelyhood of attacking it by this bias factor.
    273 		*/
    274 		fixed NervousBias;
    275 
    276 		/*
    277 		**	Controls the Chronal vortex characteristics.
    278 		*/
    279 		LEPTON VortexRange;
    280 		MPHType VortexSpeed;
    281 		int VortexDamage;
    282 		fixed VortexChance;
    283 
    284 		/*
    285 		**	When an explosive object explodes, the damage will spread out
    286 		**	by this factor. The value represents the number of cells radius
    287 		**	that the damage will spread for every 100 points of raw damage at
    288 		**	the explosion center point.
    289 		*/
    290 		fixed ExplosionSpread;
    291 
    292 		/*
    293 		**	For weapons specially marked to check for nearby friendly buildings
    294 		**	when scanning for good targets, this indicates the scan radius. Such
    295 		**	weapons will supress firing on enemies if they are in close proximity
    296 		**	to allied buildings.
    297 		*/
    298 		LEPTON SupressRadius;
    299 
    300 		/*
    301 		**	This is the tech level that para infantry are granted free to the owner
    302 		**	of an airstrip.
    303 		*/
    304 		int ParaInfantryTechLevel;
    305 
    306 		/*
    307 		**	This is the tech level that spy planes are granted free to the owner of
    308 		**	an airstrip.
    309 		*/
    310 		int SpyPlaneTechLevel;
    311 
    312 		/*
    313 		**	This is the tech level that the parabombs are granted free to the owner
    314 		**	of an airstrip.
    315 		*/
    316 		int ParaBombTechLevel;
    317 
    318 		/*
    319 		**	This is the maximum number of IQ settings available. The human player is
    320 		**	presumed to be at IQ level zero.
    321 		*/
    322 		int MaxIQ;
    323 
    324 		/*
    325 		**	The IQ level at which super weapons will be automatically fired by the computer.
    326 		*/
    327 		int IQSuperWeapons;
    328 
    329 		/*
    330 		**	The IQ level at which production is automatically controlled by the computer.
    331 		*/
    332 		int IQProduction;
    333 
    334 		/*
    335 		**	The IQ level at which newly produced units start out in guard area mode instead
    336 		**	of normal guard mode.
    337 		*/
    338 		int IQGuardArea;
    339 
    340 		/*
    341 		**	The IQ level at which the computer will be able to decide what gets repaired
    342 		**	or sold.
    343 		*/
    344 		int IQRepairSell;
    345 
    346 		/*
    347 		**	At this IQ level or higher, a unit is allowed to automatically try to crush
    348 		**	an atagonist if possible.
    349 		*/
    350 		int IQCrush;
    351 
    352 		/*
    353 		**	The unit/infantry will try to scatter if an incoming threat
    354 		**	is detected.
    355 		*/
    356 		int IQScatter;
    357 
    358 		/*
    359 		**	Tech level at which the computer will scan the contents of a transport
    360 		**	in order to pick the best target to fire upon.
    361 		*/
    362 		int IQContentScan;
    363 
    364 		/*
    365 		**	Aircraft replacement production occurs at this IQ level or higher.
    366 		*/
    367 		int IQAircraft;
    368 
    369 		/*
    370 		**	Checks for and replaces lost harvesters.
    371 		*/
    372 		int IQHarvester;
    373 
    374 		/*
    375 		**	Is allowed to sell a structure being damaged.
    376 		*/
    377 		int IQSellBack;
    378 
    379 		/*
    380 		**	The silver and wood crates in solo play will have these powerups.
    381 		*/
    382 		CrateType SilverCrate;
    383 		CrateType WoodCrate;
    384 		CrateType WaterCrate;
    385 
    386 		/*
    387 		**	This specifies the minimum number of crates to place on the map in spite
    388 		**	of the number of actual human players.
    389 		*/
    390 		int CrateMinimum;
    391 
    392 		/*
    393 		**	This specifies the crate maximum quantity to use.
    394 		*/
    395 		int CrateMaximum;
    396 
    397 		/*
    398 		**	Landing zone maximum alternate zone scan radius.
    399 		*/
    400 		LEPTON LZScanRadius;
    401 
    402 		/*
    403 		**	Multiplayer default settings.
    404 		*/
    405 		int MPDefaultMoney;
    406 		int MPMaxMoney;
    407 		unsigned IsMPShadowGrow:1;
    408 		unsigned IsMPBasesOn:1;
    409 		unsigned IsMPTiberiumGrow:1;
    410 		unsigned IsMPCrates:1;
    411 		unsigned IsMPAIPlayers:1;
    412 		unsigned IsMPCaptureTheFlag:1;
    413 
    414 		/*
    415 		**	Drop zone reveal radius.
    416 		*/
    417 		LEPTON DropZoneRadius;
    418 
    419 		/*
    420 		**	This is the delay that multiplayer messages will remain on the screen.
    421 		*/
    422 		fixed MessageDelay;
    423 
    424 		/*
    425 		**	Savour delay between when scenario detects end and the actual
    426 		**	end of the play.
    427 		*/
    428 		fixed SavourDelay;
    429 
    430 		/*
    431 		**	This specifies the damage to inflict for two differnt styles of
    432 		**	land mine.
    433 		*/
    434 		int AVMineDamage;
    435 		int APMineDamage;
    436 
    437 		/*
    438 		**	This is the maximum number of multiplayers allowed.
    439 		*/
    440 		int MaxPlayers;
    441 
    442 		/*
    443 		**	This is the delay between 'panic attacks' when the computer's base is under
    444 		**	attack. This delay gives the previously assigned units a chance to affect the
    445 		**	attacker before the computer sends more.
    446 		*/
    447 		fixed BaseDefenseDelay;
    448 
    449 		/*
    450 		**	These values control the team suspension logic for dealing with immedate base threats.
    451 		**	When the base is attacked, all teams with less than the specified priority will be
    452 		**	temporarily put on hold for the number of minutes specified.
    453 		*/
    454 		int SuspendPriority;
    455 		fixed SuspendDelay;
    456 
    457 		/*
    458 		**	This serves as the fraction of a building's original cost that is converted
    459 		**	into survivors (of some fashion). There are rounding and other marginal
    460 		**	fudge effects, but this value is the greatest control over the survivor rate.
    461 		*/
    462 		fixed SurvivorFraction;
    463 
    464 		/*
    465 		**	This is the aircraft reload rate expressed in minutes per ammo load.
    466 		*/
    467 		fixed ReloadRate;
    468 
    469 		/*
    470 		**	The average time (in minutes) between the computer autocreating a team
    471 		**	from the team's autocreate list.
    472 		*/
    473 		fixed AutocreateTime;
    474 
    475 		/*
    476 		**	Build up time for buildings (minutes).
    477 		*/
    478 		fixed BuildupTime;
    479 
    480 		/*
    481 		**	Ore truck speed for dumping.
    482 		*/
    483 		int OreDumpRate;
    484 
    485 		/*
    486 		**	This is the amount of damage done by the atom bomb in solo missions. The
    487 		**	damage done during multiplay will be 1/5th this value.
    488 		*/
    489 		int AtomDamage;
    490 
    491 		/*
    492 		**	This array controls the difficulty affects on the game. There is one
    493 		**	difficulty class object for each difficulty level.
    494 		*/
    495 		DifficultyClass Diff[DIFF_COUNT];
    496 
    497 		/*
    498 		**	Is the computer paranoid? If so, then it will band together with other computer
    499 		**	paranoid players when the situation looks rough.
    500 		*/
    501 		bool IsComputerParanoid:1;
    502 
    503 		/*
    504 		**	Should helicopters shuffle their position between firing on their
    505 		**	target?
    506 		*/
    507 		bool IsCurleyShuffle:1;
    508 
    509 		/*
    510 		**	Flash the power bar when the power goes below 100%.
    511 		*/
    512 		bool IsFlashLowPower:1;
    513 
    514 		/*
    515 		**	If the computer players will go to easy mode if there is more
    516 		**	than one human player, this flag will be true.
    517 		*/
    518 		bool IsCompEasyBonus:1;
    519 
    520 		/*
    521 		**	If fine control of difficulty settings is desired, then set this value to true.
    522 		**	Fine control allows 5 settings. The coarse control only allows three settings.
    523 		*/
    524 		bool IsFineDifficulty:1;
    525 
    526 		/*
    527 		**	If the harvester is to explode more violently than normal
    528 		**	if it is carrying cargo, then this flag will be true.
    529 		*/
    530 		unsigned IsExplosiveHarvester:1;
    531 
    532 		/*
    533 		**	If this flag is true, then the construction yard can undeploy back into an MCV.
    534 		*/
    535 		unsigned IsMCVDeploy:1;
    536 
    537 		/*
    538 		**	If the base is to be revealed to a new ally, then this
    539 		**	flag will be true.
    540 		*/
    541 		unsigned IsAllyReveal:1;
    542 
    543 		/*
    544 		**	Can the helipad (and airfield) be purchased separately from the associated
    545 		**	aircraft.
    546 		*/
    547 		unsigned IsSeparate:1;
    548 
    549 		/*
    550 		**	Give target cursor for trees? Doing this will make targetting of trees easier.
    551 		*/
    552 		unsigned IsTreeTarget:1;
    553 
    554 		/*
    555 		**	Are friendly units automatically aware of mines so that they can avoid them?
    556 		*/
    557 		unsigned IsMineAware:1;
    558 
    559 		/*
    560 		**	If Tiberium is allowed to grow, then this flag will be true.
    561 		*/
    562 		unsigned IsTGrowth:1;
    563 
    564 		/*
    565 		**	If Tiberium is allowed to spread, then this flag will be true.
    566 		*/
    567 		unsigned IsTSpread:1;
    568 
    569 		/*
    570 		**	Should civilan buildings and civilians display their true name rather than
    571 		**	the generic "Civilian Building" and "Civilain"?
    572 		*/
    573 		unsigned IsNamed:1;
    574 
    575 		/*
    576 		**	Should player controlled vehicles automatically try to crush nearby infantry
    577 		**	instead of required the player to manually direct them to crush.
    578 		*/
    579 		unsigned IsAutoCrush:1;
    580 
    581 		/*
    582 		**	Should the player controlled buildings and units automatically return fire when
    583 		**	fired upon?
    584 		*/
    585 		unsigned IsSmartDefense:1;
    586 
    587 		/*
    588 		**	Should player controlled units try to scatter more easily in order to
    589 		**	avoid damage or threats?
    590 		*/
    591 		unsigned IsScatter:1;
    592 
    593 		/*
    594 		**	If the chronoshift effect should kill all cargo, then this flag will
    595 		**	be set to true.
    596 		*/
    597 		unsigned IsChronoKill:1;
    598 
    599 		/*
    600 		**	When infantry are prone or when civilians are running around like crazy,
    601 		**	they are less prone to damage. This specifies the multiplier to the damage
    602 		**	(as a fixed point number).
    603 		*/
    604 		fixed ProneDamageBias;
    605 
    606 		/*
    607 		**	The time quake will do this percentage of damage to all units and buildings
    608 		**	in the game. The number is expressed as a fixed point percentage.
    609 		*/
    610 		fixed QuakeDamagePercent;
    611 
    612 		/*
    613 		**	Percentage chance that a time quake will occur with each chronoshift use.
    614 		*/
    615 		fixed QuakeChance;
    616 
    617 		/*
    618 		**	Ore (Tiberium) growth rate. The value is the number of minutes between
    619 		**	growth steps.
    620 		*/
    621 		fixed GrowthRate;
    622 
    623 		/*
    624 		**	This specifies the number of minutes between each shroud regrowth process.
    625 		*/
    626 		fixed ShroudRate;
    627 
    628 		/*
    629 		**	This is the average minutes between each generation of a random crate
    630 		**	to be placed on the map if generating of random crates is indicated.
    631 		*/
    632 		fixed CrateTime;
    633 
    634 		/*
    635 		**	This specifies the number of minutes remaining before that if the mission timer
    636 		**	gets to this level or below, it will be displayed in red.
    637 		*/
    638 		fixed TimerWarning;
    639 
    640 		/*
    641 		**	This specifies the minutes of delay between recharges for these
    642 		**	special weapon types.
    643 		*/
    644 		fixed SonarTime;
    645 		fixed ChronoTime;
    646 		fixed ParaBombTime;
    647 		fixed ParaInfantryTime;
    648 		fixed ParaSaboteurTime;
    649 		fixed SpyTime;
    650 		fixed IronCurtainTime;
    651 		fixed GPSTime;
    652 		fixed NukeTime;
    653 
    654 		/*
    655 		**	Other miscellaneous delay times.
    656 		*/
    657 		fixed SpeakDelay;
    658 		fixed DamageDelay;
    659 
    660 		/*
    661 		**	This is the gravity constant used to control the arcing and descent of ballistic
    662 		**	object such as grenades and artillery.
    663 		*/
    664 		int Gravity;
    665 
    666 		/*
    667 		**	Gap generators have a shroud radius of this many cells.
    668 		*/
    669 		int GapShroudRadius;
    670 
    671 		/*
    672 		**	This is the minute interval between the gap generators refreshing
    673 		**	their zones of gapping.
    674 		*/
    675 		fixed GapRegenInterval;
    676 
    677 		/*
    678 		**	Mobile radar jammer radius of effect.
    679 		*/
    680 		LEPTON RadarJamRadius;
    681 
    682 		/*
    683 		**	The speed at which a projectile that travels at or slower will cause
    684 		**	objects in the target location to scatter. This simulates the ability
    685 		**	of targets to run for cover if the projectile gives them enough time
    686 		**	to react.
    687 		*/
    688 		MPHType Incoming;
    689 
    690 		/*
    691 		**	Minimum and maximum damage allowed per shot.
    692 		*/
    693 		int MinDamage;
    694 		int MaxDamage;
    695 
    696 		/*
    697 		**	This is the rate of repair for units and buildings. The rate is the
    698 		**	number of strength points repaired per repair clock tick. The cost of
    699 		**	repair is the (fixed point) fractional cost to repair the object based
    700 		**	on the full price of the object. Example; a value of 50% means that to
    701 		**	repair the object from 1 damage point to full strength would cost 50% of
    702 		**	the cost to build it from scratch.
    703 		*/
    704 		int RepairStep;
    705 		fixed RepairPercent;
    706 		int URepairStep;
    707 		fixed URepairPercent;
    708 
    709 		/*
    710 		**	This is the rate that objects with self healing will heal. They will repair a bit
    711 		**	every 'this' number of minutes.
    712 		*/
    713 		fixed RepairRate;
    714 
    715 		/*
    716 		**	These fixed point values are used to determine the status (health bar
    717 		**	color) of the game objects. Objects in the 'yellow' are in a cautionary
    718 		**	state. Object in the 'red' are in a danger state.
    719 		*/
    720 		fixed ConditionGreen;
    721 		fixed ConditionYellow;
    722 		fixed ConditionRed;
    723 
    724 		/*
    725 		**	Average number of minutes between infantry random idle animations.
    726 		*/
    727 		fixed RandomAnimateTime;
    728 
    729 		/*
    730 		**	These control the capacity and value of the ore types that a harvester
    731 		**	may carry. The harvester carries a maximum discrete number of 'bails'.
    732 		**	The value of each bail depends on the ore it is composed of.
    733 		*/
    734 		int BailCount;		// was STEP_COUNT
    735 		int GoldValue;		// was GOLD_WORTH
    736 		int GemValue;		// was GEM_WORTH
    737 
    738 		/*
    739 		**	This specifies the heap maximum for the various game objects.
    740 		*/
    741 		int AircraftMax;
    742 		int AnimMax;
    743 		int BuildingMax;
    744 		int BulletMax;
    745 		int FactoryMax;
    746 		int InfantryMax;
    747 		int OverlayMax;
    748 		int SmudgeMax;
    749 		int TeamMax;
    750 		int TeamTypeMax;
    751 		int TemplateMax;
    752 		int TerrainMax;
    753 		int TriggerMax;
    754 		int UnitMax;
    755 		int VesselMax;
    756 		int ProjectileMax;
    757 		int WeaponMax;
    758 		int WarheadMax;
    759 		int TrigTypeMax;
    760 
    761 		/*
    762 		**	Close enough distance that is used to determine if the object should
    763 		**	stop movement when blocked. If the distance to the desired destination
    764 		**	is equal to this distance or less, but the path is blocked, then consider
    765 		**	the object to have gotten "close enough" to the destination to stop.
    766 		*/
    767 		LEPTON CloseEnoughDistance;
    768 
    769 		/*
    770 		**	Stray distance to group team members within. The larger the distance,
    771 		**	the looser the teams will move.
    772 		*/
    773 		LEPTON StrayDistance;
    774 
    775 		/*
    776 		**	If a vehicle is closer than this range to a target that it can crush
    777 		**	by driving over it, then it will try to drive over it instead of firing
    778 		**	upon it. The larger the value, the greater the 'bigfoot crush syndrome' is
    779 		**	has.
    780 		*/
    781 		LEPTON CrushDistance;
    782 
    783 		/*
    784 		**	For area effect crate bonus items will affect all objects within this radius.
    785 		*/
    786 		LEPTON CrateRadius;
    787 
    788 		/*
    789 		**	Maximum scatter distances for homing and non-homing projectiles.
    790 		*/
    791 		LEPTON HomingScatter;
    792 		LEPTON BallisticScatter;
    793 
    794 		/*
    795 		**	This is the refund percentage when selling off buildings and units
    796 		**	on the repair pad (service depot).
    797 		*/
    798 		fixed RefundPercent;
    799 
    800 		/*
    801 		**	The Iron Curtain invulnerability effect lasts for this many minutes.
    802 		*/
    803 		fixed IronCurtainDuration;
    804 
    805 		/*
    806 		**	The strength of bridges is held here. By corollary, the strength of the
    807 		**	demolition charge carried by Tanya is equal to this value as well.
    808 		*/
    809 		int BridgeStrength;
    810 
    811 		/*
    812 		**	This is the overall build speed bias. Multiply this value by the normal build
    813 		**	delay to get the effective build delay.
    814 		*/
    815 		fixed BuildSpeedBias;
    816 
    817 		/*
    818 		**	Weapon type array pointer should go here. Dynamic type.
    819 		*/
    820 
    821 
    822 		/*
    823 		**	Warhead type class array pointer should go here. Dynamic type.
    824 		*/
    825 
    826 
    827 		/*
    828 		**	Ground type and speed affect data should go here.
    829 		*/
    830 
    831 
    832 		/*
    833 		**	This is the delay between the time a C4 bomb is planted and the time it will
    834 		**	explode. The longer the delay, the greater safety margin for a demolitioner
    835 		**	type. The short the delay, the less time the victim has to sell the building
    836 		**	off.
    837 		*/
    838 		fixed C4Delay;
    839 
    840 		/*
    841 		**	The computer will only repair a structure if it has spare money greater than this
    842 		**	amount. The thinking is that this will prevent the computer from frittering away
    843 		**	all it's cash on repairing and thus leaving nothing for production of defenses.
    844 		*/
    845 		int RepairThreshhold;
    846 
    847 		/*
    848 		**	This is the delay (in minutes) between retries of a failed path. The longer the
    849 		**	delay the faster the system, but the longer the units take to react to a blocked
    850 		**	terrain event.
    851 		*/
    852 		fixed PathDelay;
    853 
    854 		/*
    855 		**	This is the special (debug version only) movie recorder timeout value. Each second
    856 		**	results in about 2-3 megabytes.
    857 		*/
    858 		fixed MovieTime;
    859 
    860 		/*
    861 		** This is the level at or above which the chronosphere facility can
    862 		** actually produce the chronosphere effect.  Below this tech level,
    863 		** the facility is merely a showpiece and has no effect.
    864 		*/
    865 		int ChronoTechLevel;
    866 
    867 		/*
    868 		**	These are the Tiberium scan distances. The short range scan is used to determine if the
    869 		**	current field has been exhausted. The long range scan is used when finding a Tiberium
    870 		**	field to harvest. Keep these ranges as small as possible.
    871 		*/
    872 		LEPTON TiberiumShortScan;
    873 		LEPTON TiberiumLongScan;
    874 
    875 		/*
    876 		**	Health bar display mode
    877 		*/
    878 		enum eHealthBarDisplayMode
    879 		{
    880 			HB_DAMAGED = 0,
    881 			HB_ALWAYS,
    882 			HB_SELECTED
    883 		} HealthBarDisplayMode;
    884 
    885 		/*
    886 		**	Resource bar display mode
    887 		*/
    888 		enum eResourceBarDisplayMode
    889 		{
    890 			RB_SELECTED = 0,
    891 			RB_ALWAYS,
    892 		} ResourceBarDisplayMode;
    893 };
    894 
    895 
    896 #endif