RULES.H 23 KB

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