• Categories Widget (Show All)

  • Recent Articles

  • Red Alert 2 RULES.INI Guide Part 2

    Red Alert 2 RULES.INI Guide Part 2

    Sections Covered
    • [Countries]
    • [Sides]
    • [MultiplayerDialogSettings]
    • [Maximums]
    • [AI]
    • [AIGenerals]
    • [IQ]
    • [Colors]
    • [ColorAdd] (Yuri's Revenge)
    • Difficulty Settings
    • [VariableNames]
    • Mission Control
    • [Tiberiums]
    • [Powerups]
    • Land Characteristics

    [Countries]

    This section lists the countries that are available in the game, primarily for naming purposes. Each side has some basic controls on how they behave when controlled by the computer. Do not remove, override or reorder the 9 major countries for skirmish or LAN game maps. These need to go into the country types array first and without interruption by other types of countries, or you get Internal Errors, as the country numbering constitutes an internal table used for the AI and for tags in map files. There are 13 countries numbered 0 - 12 as follows;-

    0=Americans
    1=Alliance
    2=French
    3=Germans
    4=British
    5=Africans
    6=Arabs
    7=Confederation
    8=Russians
    9=GDI
    10=Nod
    11=Neutral
    12=Special

    In Yuri's Revenge, the list changes to 14 countries numbered 0 - 13;-

    0=Americans
    1=Alliance
    2=French
    3=Germans
    4=British
    5=Africans
    6=Arabs
    7=Confederation
    8=Russians
    9=YuriCountry
    10=GDI
    11=Nod
    12=Neutral
    13=Special

    GDI= is the collective placeholder for 'Allied Countries' and Nod= is the collective placeholder for 'Soviet Countries'. It is not possible to 'truly' add new countries by extending this list as it forms an internal array - the numbering system is very strict as numbers 13 and upwards are used by the game code to refer to houses in multiplayer games (one of which may include an 'observer' if that has been allowed in the game at the expense of another human or AI player) and form the basis of events, actions and triggers. The game is also hard-coded to recognize the above countries and their corresponding numbers only. Each country listed here should also get its own section (for example [Americans] for the first entry in the above list) and here is a list of all statements which can be used in each countries' entry. In Yuri's Revene, this section gets extended by adding 9=YuriCountry to the table so that there are then 14 entries.

    UIName=
    Determines the string containing the in-game & on-screen text to display for the name of this object contained in the .CSF string file. Is usually a Name: type although that is only used for convention.

    Name=
    The internal name used for referring to this country. This is used for map triggers and events as well as determining country specific information.

    Prefix=
    Was used in previous C&C games for determining the internal filename for objects specific to this house (such as loading screens). The string contained here would form the beginning of the filename for that object (e.g. if Prefix= was set to 'A' then loading screens for this house would all have a filename of 'A_rest_of_filename.SHP'). It is not known what significance this has in Red Alert 2 or even if it is used although it is parsed.

    Suffix=
    Was used in previous C&C games for determining the internal filename for objects specific to this house (such as loading screens). The string contained here would form the ending of the filename for that object (continuing the above example, if Suffix= was set to 'B' then loading screens for this house would all have a filename of 'A_rest_of_filename_B.SHP'). It is not known what significance this has in Red Alert 2 or even if it is used although it is parsed. TRIVIA FACT: the 'JP' suffix used to define the [Special]side remains residual from Tiberium Dawn where it was used to reference files with a 'JP' extension - this indicted that the file was used by the Jurassic Park missions!

    Color=
    The color to be used when displaying objects owned by this house. This must be set to one of the colors defined in the [Colors] section (see later).

    Multiplay=
    Can be set to 'yes' or 'no' and determines if this house can be used as a placeholder for multiplayer games (in other words if a player can choose to play as this house). See also MultiplayPassive=.

    MultiplayPassive=
    Can be set to 'true' or 'false' and determines if this is a 'passive' house for the purposes of multiplayer games. A passive house is one that the game uses for firing triggers, events and actions as each must be attached to a house. Passive houses can also be used to place objects on the map (such as neutral structures like Tech Buildings) as each object must belong to a house. Note that if this is set to 'true' then you must also ensure that Multiplay= is also set to 'no' (and vice versa) otherwise you may get Internal Errors - a house should not exist as both.

    Side=
    Determines which side this house belongs to (see the [Sides]section below).

    SmartAI=
    Determines if this house already has the 'smart' AI logic enabled for the purposes of multiplayer games. If set to 'no' this means that this house will always get some basic AI triggers enabled, even if they have not been enabled (for example in specific map files) - these include things like 'if you have a refinery make sure you have at least one harvester' and 'its a good idea to defend your Construction Yard'. In Red Alert and Tiberian Sun, these triggers included the 'replace MCV if destroyed' trigger but this has been removed in Red Alert 2. If set to 'yes' the AI presumes it already does this kind of stuff (i.e. all AI trigger types have been enabled) and so those triggers are not allocated to this house.

    WallOwner=
    Can be set to 'yes' or 'no' and determines if this house should own any walls that it places near its buildings. This is a little buggy, but because walls are converted to overlay types instead of structures when placed on the map (but they still form an obstruction) telling the computer that it owns them is supposed to stop it destroying them the moment they are built. It will still destroy them if they pose an obstruction to normal movement (especially if the moving unit is in a hunt or attack mission).

    ArmorInfantryMult=
    ArmorUnitsMult=
    ArmorAircraftMult=
    ArmorBuildingsMult=
    ArmorDefensesMult=
    Determine the multiplier to the Armor= value of the relevant objects when produced by this house.

    CostInfantryMult=
    CostUnitsMult=
    CostAircraftMult=
    CostBuildingsMult=
    CostDefensesMult=
    Determine the multiplier to the Cost= value of the relevant objects when produced by this house. It is not known if these values over-ride or enhance/accumulate with the Cost= entry for the house (see Difficulty Settings).

    SpeedInfantryMult=
    SpeedUnitsMult=
    SpeedAircraftMult=
    Determine the multiplier to the Speed= value of the relevant objects when produced by this house. It is not known if these values over-ride or enhance/accumulate with the Groundspeed= or Airspeed= entries for the house (see Difficulty Settings).

    BuildTimeInfantryMult=
    BuildTimeUnitsMult=
    BuildTimeAircraftMult=
    BuildTimeBuildingsMult=
    BuildTimeDefensesMult=
    Determine the multiplier to the time taken to produce the relevant objects by this house. It is not known if these values over-ride or enhance/accumulate with the BuildTime= entry for the house (see Difficulty Settings).

    IncomeMult=
    Straight multiplier applied to the amount of money this house gains from a Refinery when it processes Ore.

    ROF=
    Straight multiplier applied to the ROF= of all weapons used by this country. Larger values mean slower rates of fire (default is 1.0).

    VeteranInfantry=
    Lists the infantry that can be produced and start the game at Veteran level for this house. These must be valid entries from the [InfantryTypes] list and be owned by this house or you may get Internal Errors.

    VeteranUnits=
    Lists the units (tanks and ships) that can be produced and start the game at Veteran level for this house. These must be valid entries from the [VehicleTypes] list and be owned by this house or you may get Internal Errors.

    VeteranAircraft=
    Lists the aircraft that can be produced and start the game at Veteran level for this house. These must be valid entries from the [AircraftTypes] list and be owned by this house or you may get Internal Errors.

    [Sides]

    Each of the countries listed in the [Countries] section is listed here according to their 'side'. This section lists the countries (or 'houses') which each side has as its members. This order has to be kept as GDI first (Allied), Nod second (Soviet) and ThirdSide (Yuri) third, plus you have to keep those names as the game internal tables and triggers rely upon them. The reason for this is to keep order with the side-specific (e.g. sidebar) images and EVA voices - the first side in this list (GDI by default) uses the data loaded by SIDEC01.MIX and the Allied= EVA voices from the EVA file. The second side (Nod by default) uses the data loaded from SIDEC02.MIX and the Soviet= voices from the EVA file. Curiously, the third side (ThirdSide by default) does not use it's own mix file - instead, it uses additions to the second side by use of the SIDEC02MD.MIX file and points to specific, rather than generic, files. Why this is the case is not entirely known (it would have been simpler to use a SIDEC03.MIX) and this is the reason why Yuri cannot be given his own unique sidebar images without over-writing the Soviet ones - unfortunately, each file is loaded into RAM at initialization, meaning anything added to SIDEC02.MIX will over-write the same file in SIDEC02.MIX.

    GDI=British,French,Germans,Americans,Alliance
    Nod=Russians,Africans,Confederation,Arabs
    (YR) ThirdSide=YuriCountry
    Civilian=Neutral
    Mutant=Special

    [MultiplayerDialogSettings]

    NOTE: the [MultiplayerDialogSettings] section was formerly known as the [MultiplayerDefaults] section in previous C&C games. This change has been made due to the additional logic and enhanced multiplayer game functionality provided by the new facility to customize multiplayer games through the MPMODES.INI and relevant game mode INI files.

    MinMoney=
    Minimum amount of money selectable in the sidebar. I have not established if there are minimum or maximum thresholds for this value, although I would imagine that setting this below 0 would cause problems. Note that despite the presence of the Money= statement in this section, it is not parsed or used in Red Alert 2 - the game uses the value held in the Credits= statement of the RA2.INI file to determine this value.

    MaxMoney=
    Maximum amount of money selectable in the sidebar. I have not established if there are minimum or maximum thresholds for this value, although setting this less than MinMoney= causes problems. Note that despite the presence of the Money= statement in this section, it is not parsed or used in Red Alert 2 - the game uses the value held in the Credits= statement of the RA2.INI file to determine this value.

    MoneyIncrement=
    The amount that the money value changes by each time the slider is moved.

    MinUnitCount=
    Minimum number of units with which each player can start the game. I have not established if there are minimum or maximum thresholds for this value, although I would imagine that setting this below 0 would cause problems. The units chosen are any ground-based units (vehicles and infantry) which do not have AllowedToStartInMultiplayer=no set. The default unit count is determined by the UnitCount= statement in the RA2.INI file.

    MaxUnitCount=
    Maximum number of units with which each player can start the game. I have not established if there are minimum or maximum thresholds for this value, although I would imagine that setting this less than MinUnitCount= would cause problems. The units chosen are any ground-based units (vehicles and infantry) which do not have AllowedToStartInMultiplayer=no set. The default unit count is determined by the UnitCount= statement in the RA2.INI file.

    UnitCount=
    Default number of units with which each player starts the game. I have not established if there are minimum or maximum thresholds for this value, although I would imagine that setting this below 0 would cause problems. The units chosen are any ground-based units (vehicles and infantry) which do not have AllowedToStartInMultiplayer=no set.

    AIDifficulty=
    The AI difficulty level, 0=Easy, 1=Medium, 2=Brutal.

    AIPlayers=
    Default number of computer controlled players to be used in the game. This number, when added to the number of human players, should not exceed the Players= value in the [Maximums] section.

    BridgeDestruction=
    Default setting which determines whether or not destroyable bridges are enabled in the game.

    ShadowGrow=
    Default setting which determines whether or not the shadow regrows over time. This is de-supported in Red Alert 2 although it is still parsed and valid. Note that there is a difference between the 'shadow' and the 'shroud' (see below). The 'shroud' is the blackness that covers the map, the 'shadow' is the edge of the shroud that surrounds units. Thus if the shroud regrows but the shadow does not, then areas of the map already revealed by units will not always be re-shrouded.

    Shroud=
    Default setting which determines whether or not the map is shrouded at the start of the game. This should always be set to 'yes' otherwise all players get to see the whole map at the start of the game (although they do not have a radar). If you set this to 'no and set ShroudGrow= to 'yes' the shroud will regrow over time at a rate determined by ShroudRate=. This is a crude way to enable a kind of Fog Of War in Red Alert 2.

    Bases=
    Essentially this determines whether or not players get an MCV at the start of the game, thus decides whether or not bases can be built in the game. Although this is parsed and valid, it is de-supported in Red Alert 2, probably because of the dependency of the MCV in some multiplayer game modes.

    TiberiumGrows=
    Can be set to 'yes' or 'no' and determines whether or not Ore re-grows over time at the rate determined by GrowthRate=.

    Crates=
    Can be set to 'yes' or 'no' and determines whether or not random crates appear in the game.

    CaptureTheFlag=
    Can be set to 'yes' or 'no' and decides whether or not this is a Capture The Flag game in which case special game logic is used. Although this is de-supported in Red Alert 2 it is still parsed and valid (as it was in Tiberian Sun) however I have not been able to get this to work. I still believe this may be possible, as the game code still refers to FLAGFLY.SHP (the image of the 'capturable' flag itself). That SHP can be extracted from Red Alert but needs converting to the Red Alert 2 palette. Incidentally, MOUSE.SHP also contains the flag movement cursor in Red Alert 2.

    HarvesterTruce=
    Determines if Ore Miners are immune to normal combat damage during the game (thus indestructible) although a bug in the game engine sometimes renders them susceptible to weapons with high AmbientDamage= values attached. Although parsed and valid, this is de-supported in Red Alert 2. In Red Alert 2, this may have had the effect of modifying all warheads in the game so that they had a Verses= of 0% against medium armor, as only Ore Miners have this type of armor, thus it may still be possible to implement this.

    AlliesAllowed=
    Can be set to 'yes' or 'no' and determines if human players can form and break alliances with each other in the game. This also seems to be used to indicate some other condition when it is placed in the [MultiplayerDialogSettings] section of multiplayer game-mode INI files, although I have not established the significance of that.

    ShortGame=
    Determines if this is a 'short game', in other words a players' game is over when all of their structures are destroyed (even if they have units remaining). This is the option that prevents players 'hiding' units on the map in a bid to win by forcing their opponent to abort or quit.

    SuperWeaponsAllowed=
    Can be set to 'yes' or 'no' and determines whether or not Super Weapons can be used in the game. Note that this only affects those Super Weapons which have DisableableFromShell=yes set. Note that the addition of this logic to allow disabling of Super Weapons has also rendered the TechLevel= setting obsolete - this is not valid, parsed or used in Red Alert 2.

    BuildOffAlly=
    Can be set to 'yes' or 'no' and determines whether or not players can build their own structures adjacent to their allies' structures. By default, this affects only Construction Yards, although you can define any structure as being eligible for this feature by giving it EligibileForAllyBuilding=yes.

    MultiEngineer=
    Can be set to 'yes' or 'no' and determines whether or not you must use multiple engineers to capture a structure. If this is set to 'yes' then the value held in EngineerCaptureLevel= in the [General] section is used to determine the number of engineers needed to capture a structure Although parsed and valid in Red Alert 2, this is de-supported to allow the simple capturing of Tech Buildings.

    FogOfWar=
    Can be set to 'yes' or 'no' and determines if the 'Fog Of War' is used in this game (from Tiberian Sun). This is parsed and valid in Red Alert 2 although it is yet to be determined whether or not it still works. It may have been disabled due to possible problems with the Spy Satellite or Gap Generator logic, although FOG.SHP is still in the game files (it has even been modified to be suitable for Red Alert 2) and is referred to by the game code.

    MCVRedeploys=
    Can be set to 'yes' or 'no' and determines whether or not MCV's can be deployed and redeployed in the game.

    WonlineTournamentAllowed=
    NOTE: this is not parsed and used by Red Alert 2 when included in the RULES.INI file but I have included it here because it is parsed from the [MultiplayerDialogSettings] section of multiplayer game-mode INI files. Can be set to 'yes' or 'no' and determines if this game mode can be used for official Westwood Tournament games when used on Westwood Online.

    (YR) AllyChangeAllowed=
    Can be set to 'yes' or 'no' and determines whether or not alliances can be changed in the middle of the game. This defaults to 'yes' although it is thought that the logic has been de-supported as this allowed for alliances between human and computer players.

    (YR) MustAlly=
    NOTE: this is not parsed and used by Red Alert 2 when included in the RULESMD.INI file but I have included it here because it is parsed from the [MultiplayerDialogSettings] section of multiplayer game-mode INI files. Can be set to 'yes' or 'no' and determines if players must ally in this game mode.

    [Maximums]

    Players=
    Determines the maximum number of players allowed in a game, inclusive of human and AI players. Because UDP is the underlying protocol used, the IPX layer on Westwood's game servers is used to restrict this to 8 although scrupulous patches are available which get around this limit. For stability, this number should correspond to the number of 'slot' entries defined in RA2.INI.

    Warheads=
    Allows you to set an object heap maximum on warhead types, although it is not known quite how (or even if) this gets used. This number should never be lower than the number of warheads defined in the [Warheads] list or bad crashiness will result.

    [AI]

    BuildConst=
    Tells the computer which structures constitute Construction Yards so it will aspire to build them and also target enemy ones. It has been observed that the computer can actually 'build' a Construction Yard without having built and deployed an MCV - this statement may be why.

    BuildPower=
    Tells the computer which structures generate power so it will aspire to build them and also target enemy ones.

    BuildRefinery=
    Tells the computer which structures constitute Ore Refineries so it will aspire to build them and also target enemy ones. The value held by the RefineryRatio= statement is dependant on the structures listed here.

    BuildBarracks=
    Tells the computer which structures constitute infantry factories so it will aspire to build them and also target enemy ones. The value held by the BarracksRatio= statement is dependant on the structures listed here.

    BuildTech=
    Tells the computer which structures constitute Battle Labs so it will aspire to build them and also target enemy ones. The computer must build these structures to progress up the 'tech-tree' thus make use of higher AI triggers on the more difficult skill levels.

    BuildWeapons=
    Tells the computer which structures constitute vehicle factories so it will aspire to build them and also target enemy ones. The value held by the WarRatio= statement is dependant on the structures listed here.

    BuildDefense=
    Tells the computer which structures constitute basic base defenses so it will aspire to build them and also target enemy ones. The value held by the DefenseRatio= statement is dependant on the structures listed here.

    BuildPDefense=
    Tells the computer which structures constitute advanced base defenses (ones which require high power) so it will aspire to build them and also target enemy ones. The value held by the TeslaRatio= statement is dependant on the structures listed here.

    BuildAA=
    Tells the computer which structures constitute anti-air defenses so it will aspire to build them and also target enemy ones. The value held by the AARatio= statement is dependant on the structures listed here.

    BuildHelipad=
    Tells the computer which structures constitute aircraft factories so it will aspire to build them and also target enemy ones. The values held by the HelipadRatio= (Allied) and AirstripRatio= (Soviet) statements are dependant on the structures listed here.

    BuildRadar=
    Tells the computer which structures constitute radar so it will aspire to build them and also target enemy ones. The computer will typically only strive to have one of these in its base.

    ConcreteWalls=
    Tells the computer which structures constitute concrete so it will aspire to build them if AIBuildsWalls=yes and/or NodAIBuildsWalls=yes are set.

    NSGates=
    Tells the computer which structure constitutes a gate so it will aspire to build them and also target enemy ones. The computer will verify this with the GDIGateOne= statement.

    EWGates=
    Tells the computer which structure constitutes a gate so it will aspire to build them and also target enemy ones. The computer will verify this with the GDIGateTwo= statement.

    BuildNavalYard=
    Tells the computer which structures constitute ship factories (units with Naval=yes set) so it will aspire to build them and also target enemy ones. The value held by the WarRatio= statement is dependant on the structures listed here.

    BuildDummy=
    Tells the computer which structures constitute standard base defenses so it will aspire to build them and also target enemy ones. The value held by the DefenseRatio= statement is dependant on the structures listed here. This is slightly different to the BuildDefense= statement as these structures usually have HasStupidGuardMode=false set and make use of the Defaults For Dumb Threat Evaluation controls rather than the standard ones.

    NeutralTechBuildings=
    Tells the computer which structures constitute the Tech Buildings (i.e. ones it will consider capturing instead of enemy structures in its AI triggers). This list is also used by the Random Map Generator in the game to randomly determine which structures to place on random maps (other aspects of the Random Map Generator are controlled through the RMG.INI file).

    (YR) AlliedBaseDefenses=
    Tells the computer which structures constitute standard Allied base defenses so it will aspire to build them and also target enemy ones. This list includes all base defenses, both ground based and anti-air.

    (YR) SovietBaseDefenses=
    Tells the computer which structures constitute standard Soviet base defenses so it will aspire to build them and also target enemy ones. This list includes all base defenses, both ground based and anti-air.

    (YR) ThirdBaseDefenses=
    Tells the computer which structures constitute standard Yuri's base defenses so it will aspire to build them and also target enemy ones. This list includes all base defenses, both ground based and anti-air.

    (YR) AIForcePredictionFudge=
    To decide what base defense to use, since all of the new ones in Yuri's Revenge do not do conventional damage, the AI will analyze its enemy's force (in money terms) and pick Air, Armor or Infantry. This analysis is fudged by difficulty level (Brutal, Normal, Easy) by the percentages specified here (+/- n%). Once the pick is made, all currently buildable base defenses will be made into a weighted distribution based on their AntiXXXValue= numbers. The AI knows to consider Rocketeers as Air, as well as Blimps and V3 Rockets.

    GDIWallDefense=
    Specifies the length of each section of wall to be built each time an Allied computer player places one down.

    GDIWallDefenseCoefficient=
    Multiplier to the ThreatPosed= value of base defenses of Allied armies when placed within walls by the AI. This is used in conjunction with the WallTower= logic and is residual from Tiberian Sun.

    NodBaseDefenseCoefficient=
    This is partly obsolete as the SovietBaseDefenseCounts= statement is used to determine the explicit number of base defense structures that Easy, Medium and Brutal Soviet AI players will plan on making. To predict how many the AI is likely to build, use this formula;-
    ((Total Base Value - 2000) / 1500 x NodBaseDefenseCoefficient) + 3 x (Difficulty Level - 1)

    GDIBaseDefenseCoefficient=
    This is partly obsolete as the AlliedBaseDefenseCounts= statement is used to determine the explicit number of base defense structures that Easy, Medium and Brutal Allied AI players will plan on making. To predict how many the AI is likely to build, use this formula;-
    ((Total Base Value - 2000) / 1500 x GDIBaseDefenseCoefficient) + 3 x (Difficulty Level - 1)

    MaximumBaseDefenseValue=
    The total ThreatPosed= value of the AI's base defenses. This is ground-based defenses only and does not include AA defenses.

    ComputerBaseDefenseResponse=
    This determines the factor to apply to several other statements which together will determine how much the computer players will over-respond to attacks on their bases or any of their units which have ToProtect=yes set (for example Ore Miners).

    AttackInterval=
    The average delay, in minutes, between the computer launching one if its attacks from the AI.INI file. This is parsed and valid although does not get used in favor of the TeamDelays= statement instead, as in Red Alert 2 this logic means that use of this value would mean the AI waiting forever before it launched an attack.

    AttackDelay=
    The average delay, in minutes, before the computer begins its first attack.

    PatrolScan=
    Time interval, in minutes, between the computer scanning for enemy objects while on a patrol mission, either by following waypoints or set to that mission through an AI trigger/script type.

    CreditReserve=
    The computer will not begin to repair its damaged structures if its available credits fall below this amount.

    PathDelay=
    Delay, in minutes, between the computer trying to move a unit again when its path is blocked.

    BlockagePathDelay=
    Delay, in frames, before the unit whose patch is blocked will simply try to find another way around it instead of trying to go through it. Decreasing this makes the computer less tolerant of blockages to its units travel path.

    TiberiumNearScan=
    Radius, in cells, that the computer will scan around its Ore Miners for the next bit of Ore to harvest.

    TiberiumFarScan=
    Radius, in cells, that the computer will scan from its Ore Miners for the next patch or Ore to harvest when one patch has been cleared.

    AutocreateTime=
    The average time, in minutes, between the computer creating AI team types that are flagged to be auto-created.

    InfantryReserve=
    Computer players will only build objects from the [InfantryTypes] list if they have more credits than this.

    InfantryBaseMult=
    Computer players will only build units from the [InfantryTypes] list if the number of structures in their base(s) multiplied by this number is less than the current number of [InfantryTypes] they currently have on the map. This is used to ensure the computer trains infantry units in relation to the size of its base so that its has enough teams created for base defense and that they actually serve some purpose.

    PowerSurplus=
    The computer players will continue to build structures determined with the BuildPower= statement until it has a surplus of power which is at least equal to this figure.

    BaseSizeAdd=
    This is used to determine the size of a computer players' base at any given time. In terms of the number of structures in that base, it can never be any bigger than the largest human controlled base plus this number of structures. This ensures that the computer continues to build structures (if it is able to) in relation to the size of the largest player controlled base, and it will build those structures in line with the relevant Ratio= values (see below).

    RefineryRatio=
    This ratio value is based on the number of buildings in the computer base that should be the structure defined in the BuildRefinery= statement. The ratio total (i.e. the sum of all the Ratio= values in this section) should exceed 100% so that the base will always try to grow as it vainly attempts to achieve the specified percentage composition. Changing the ratio values allows a small degree of control over the AI's build order, as those with a higher ratio are more likely to be constructed.

    RefineryLimit=
    This determines the maximum number of structures determined by the BuildRefinery= statement, regardless of the current ratio achieved or the size of the computer base.

    BarracksRatio=
    This ratio value is based on the number of buildings in the computer base that should be the structure defined in the BuildBarracks= statement. The ratio total (i.e. the sum of all the Ratio= values in this section) should exceed 100% so that the base will always try to grow as it vainly attempts to achieve the specified percentage composition. Changing the ratio values allows a small degree of control over the AI's build order, as those with a higher ratio are more likely to be constructed.

    BarracksLimit=
    This determines the maximum number of structures determined by the BuildBarracks= statement, regardless of the current ratio achieved or the size of the computer base. its worth noting that to make life trickier for players, setting this value to greater than 1 will mean the computer will also get a further bonus to build speed for Infantry Types as it has more than one of that Factory Type in its base.

    WarRatio=
    This ratio value is based on the number of buildings in the computer base that should be the structure defined in the BuildWeapons= and BuildNavalYard= statements. The ratio total (i.e. the sum of all the Ratio= values in this section) should exceed 100% so that the base will always try to grow as it vainly attempts to achieve the specified percentage composition. Changing the ratio values allows a small degree of control over the AI's build order, as those with a higher ratio are more likely to be constructed.

    WarLimit=
    This determines the maximum number of structures determined by the BuildWeapons= and BuildNavalYard= statements, regardless of the current ratio achieved or the size of the computer base. its worth noting that to make life trickier for players, setting this value to greater than 2 will mean the computer will also get a further bonus to build speed for Vehicle Types as it has more than one of that Factory Type in its base. Note also that you should set this value to at least 2 - if you set it to 1, the computer will only strive to build a War Factory or Naval Yard as they are both the same Factory Type.

    DefenseRatio=
    This ratio value is based on the number of buildings in the computer base that should be the structure defined in the BuildDefense= and BuildDummy= statements. The ratio total (i.e. the sum of all the Ratio= values in this section) should exceed 100% so that the base will always try to grow as it vainly attempts to achieve the specified percentage composition. Changing the ratio values allows a small degree of control over the AI's build order, as those with a higher ratio are more likely to be constructed.

    DefenseLimit=
    This determines the maximum number of structures determined by the BuildDefense= and BuildDummy= statements, regardless of the current ratio achieved or the size of the computer base. Note that you should set this value to at least 2 - if you set it to 1, the computer will only strive to build one of these types.

    AARatio=
    This ratio value is based on the number of buildings in the computer base that should be the structure defined in the BuildAA= statement. The ratio total (i.e. the sum of all the Ratio= values in this section) should exceed 100% so that the base will always try to grow as it vainly attempts to achieve the specified percentage composition. Changing the ratio values allows a small degree of control over the AI's build order, as those with a higher ratio are more likely to be constructed.

    AALimit=
    This determines the maximum number of structures determined by the BuildAA= statement, regardless of the current ratio achieved or the size of the computer base.

    TeslaRatio=
    This ratio value is based on the number of buildings in the computer base that should be the structure defined in the BuildPDefense= statement. The ratio total (i.e. the sum of all the Ratio= values in this section) should exceed 100% so that the base will always try to grow as it vainly attempts to achieve the specified percentage composition. Changing the ratio values allows a small degree of control over the AI's build order, as those with a higher ratio are more likely to be constructed.

    TeslaLimit=
    This determines the maximum number of structures determined by the BuildPDefense= statement, regardless of the current ratio achieved or the size of the computer base.

    HelipadRatio=
    This ratio value is based on the number of buildings in the computer base that should be the structure defined in the BuildHelipad= statement (Allied forces). The ratio total (i.e. the sum of all the Ratio= values in this section) should exceed 100% so that the base will always try to grow as it vainly attempts to achieve the specified percentage composition. Changing the ratio values allows a small degree of control over the AI's build order, as those with a higher ratio are more likely to be constructed.

    HelipadLimit=
    This determines the maximum number of structures determined by the BuildHelipad= statement (Allied forces), regardless of the current ratio achieved or the size of the computer base. its worth noting that to make life trickier for players, setting this value to greater than 1 will mean the computer will also get a further bonus to build speed for Aircraft Types as it has more than one of that Factory Type in its base.

    AirstripRatio=
    This ratio value is based on the number of buildings in the computer base that should be the structure defined in the BuildAirstrip= statement (Soviet forces). The ratio total (i.e. the sum of all the Ratio= values in this section) should exceed 100% so that the base will always try to grow as it vainly attempts to achieve the specified percentage composition. Changing the ratio values allows a small degree of control over the AI's build order, as those with a higher ratio are more likely to be constructed.

    AirstripLimit=
    This determines the maximum number of structures determined by the BuildAirstrip= statement (Soviet forces), regardless of the current ratio achieved or the size of the computer base. its worth noting that to make life trickier for players, setting this value to greater than 1 will mean the computer will also get a further bonus to build speed for Aircraft Types as it has more than one of that Factory Type in its base. NOTE: this is set to 0 by default as Soviet armies do not have a Factory Type that produces Aircraft Types. If you create one in your mod, you should ensure that you set this value accordingly or the AI may not strive to build one and utilize it correctly, even with AIBuildThis=yes set on that structure.

    CompEasyBonus=
    Can be set to 'yes' or 'no' and determines if, when there is more than one human player in the game, the computer defaults all of its players to the easiest difficulty setting.

    Paranoid=
    Can be set to 'yes' or 'no' and determines whether or not all computer players will form alliances with the other computer players if the situation looks bleak for them. Although parsed and valid, this does not seem to have much effect as the AI in Red Alert 2 initially formed alliances between all computer houses anyway, although the changes made by the 1.004 patch may have had an effect on this.

    PowerEmergency=
    Determines the power level below which the computer will sell structures in order to ensure power is back online.

    AIBaseSpacing=
    Determines the explicit number of cells that the computer ensures is between each of its structures. The exception is the Naval Yard - the distance of this from the computers Construction Yard is controlled by the AINavalYardAdjacency= statement in the [General] section. This is over-ridden by the WantsExtraSpace=yes statement if present in a structures entry, in which case it will add 1 to this value to create more space between that structure and others, which is useful for Weapons Factories and such to ensure that produced units do not cluster together or form a blockage.

    [AIGenerals]

    This section offers perhaps one of the most useful tweaks that can be made to the games AI. You will see from a standard RULES.INI file that the entire section is commented out. This section was added in Tiberian Sun (but was commented out and thus unused there too). its effect is to place some pre-determined strategies (or combat behavioural characteristics) into the AI, in order that it adopts one of them depending on the state of the battle. Each strategy is based on that of a military General. In other words, it would at times rush the human player(s) or play very heavily on defense, instead of simply continuing to play the game blindly in the same scripted manner at all times irrespective of how it was doing. Naturally, this makes the AI a little more of a challenge and, at worst, more unpredictable (and theoretically more 'human').

    The section takes the form of a list, numbered starting at '1'. Each entry in the list is a COM object within the game code that defines a General (i.e. a strategy). This works exactly like the Locomotor= statement which details a section of the code dealing with it (you will see that the hex numbers representing each General take exactly the same format as those used by the Locomotor= as they point to the game code in the same way). To get the AI to adopt the behaviour of these Generals, you simply have to delete the comments and re-include the section.

    NOTE: once you have re-enabled this section, you may encounter random/sporadic/frequent Internal Errors in games played against AI armies. This is because those CLSIDs point to COM objects that are not present in Red Alert 2's code. However, they do exist in Tiberian Sun (even though they don't get used) and can all be found in the AI.TLB file (an OLE Type Library) in Tiberian Sun, so by copying that file and placing it directly in the Red Alert 2 directory you can enable this section and point to those COM objects in Red Alert 2 as well (you will also have to distribute that file with your mod if you plan on making use of this section).

    its worth noting 2 important points however;-

    (i) significant changes to the AI strategy will hardly be noticed in Red Alert 2 because of the comparative lack of AI teams defined in the AI.INI file (less than half of those present in Tiberian Sun) - it stands to reason that the more AI triggers and teams that can be employed by the computer, the more apparent that the different strategies will become.

    (ii) because AI.TLB comes from Tiberian Sun, it is designed for GDI vs Nod battles - thankfully, Allied and Soviet are still referred to as GDI and Nod in Red Alert 2 so it still works but you get best results in games where Soviets are playing against Allies and vice versa. Use of the Generals becomes much less apparent in games where Soviets play against Soviets or Allies play against Allies.

    It may originally have been removed from Tiberian Sun because when using GDI vs Nod logic, the AI would be very ineffective if it was the only Nod player facing all Nod enemies (or vice versa, GDI vs GDI). You can get around that shortcoming by adding more AI Triggers and scripts to AI.INI that specifically tell Soviet armies to target other Soviets and vice versa (see the AI.INI Guide).

    Hence its well worth enabling this section only after you have finished all other AI editing and added considerable amounts to the AI's pool of TeamTypes and AITriggerTypes (see the AI.INI Guide for more information). In short, the more teams and scripts available to the AI, the harder it will become to beat as each General will make his presence more apparent.

    When using this section, the AI tends to employ the strategy of one of the Generals by comparing the significance of the Category= of objects possessed by itself and its enemy as well as the total of the ThreatPosed= values of its enemy verses the total Strength= of its own army. This suggests that the use of this section relates closely to the Default Threat Evaluation Controls and that they are used to assess the total threat posed by its enemy rather than the threat posed by a single unit or group of units. The net result is that a factor is applied to the Priority= of the TeamType and the weighting of each AI Trigger to make it more appropriate for a specific General.

    For information, here's a list of all of the valid Generals and what their behaviours are (including their names where known);-

    {F706E6E0-86DA-11D1-B706-00A024DDAFD1}
    General BrainDead - has no pre-defined behaviour. This is the default setting for the AI and explains a lot about how weak it can be.

    {9E0F6120-87C1-11D1-B707-00A024DDAFD1}
    General Meade - the computer concentrates on strong defense and weak attack, prioritizing the building of TeamTypes and structures that have IsBaseDefense=yes set and attacking only in response to incursions into, or attacks on, its base. In short, it defends heavily and only retaliates rather than initiating attack.

    {C6004D80-87D1-11D1-B707-00A024DDAFD1}
    General Jackson - the computer prioritizes TeamTypes that have Aggressive=yes set and also structures that have IsBaseDefense=yes set. The result is that the computer attacks and defends strongly.

    {FBE6D4A0-87D1-11D1-B707-00A024DDAFD1}
    General Grant - the computer defends weakly and attacks frequently.

    {FBE6D4A1-87D1-11D1-B707-00A024DDAFD1}
    General Hooker - the computer is unpredictable and attacks/defends almost at random. Adopted when it has all Prerequisite= requirements met.

    [IQ]

    Each house (computer controlled or otherwise) is given an IQ rating that is used to determine what the computer is allowed to automatically control. This is distinct from the difficulty setting. The higher the IQ setting, the more autonomous and intelligent the side will behave. Each ability is given a rating that indicates the IQ level (or above) that the ability will be granted. Because such abilities are automatically performed by the computer, giving a human controlled country a high IQ is not recommended. Otherwise the player's units will start to automatically "do their own thing"! A human controlled country is presumed to have an IQ rating of zero. A computer controlled country has an IQ of 1 or higher. When in skirmish mode or when multiplayer AIs are active, the computer IQ is set to the maximum. The IQ setting can be independently set for any house through its definition in a map file with the IQ= statement in that house's entry.

    MaxIQLevels=
    Determines the maximum number of discrete IQ levels.

    SuperWeapons=
    Determines the IQ level required by a house before it is allowed to automatically fire its Super Weapons.

    Production=
    Determines the IQ level required by a house before it will automatically produce units and construct new buildings.

    GuardArea=
    Determines the IQ level required by a house before it will automatically place newly produced units into guard mode.

    RepairSell=
    Determines the IQ level required by a house before it is allowed to decide between selling a damaged building or repairing it (in other words it is allowed to consider the cheapest option based on its economy).

    AutoCrush=
    Determines the IQ level required by a house before its units with Crusher=yes set will automatically try to crush nearby enemy units that have Crushable=yes set. Applies only to land based vehicles.

    Scatter=
    Determines the IQ level required by a house before its units will automatically scatter from incoming threats (ballistic or lobbed projectiles and such are included here).

    ContentScan=
    Determines the IQ level required by a house before it will consider the contents of a transport when picking a good target.

    Harvester=
    Determines the IQ level required by a house before it will automatically replace lost Ore Miners. Note that although there is a similar statement for Aircraft=, this is residual from Red Alert and is not used in Red Alert 2 - other production/AI triggers control that.

    SellBack=
    Determines the IQ level required by a house before it will automatically sell structures to raise funds.

    [Colors]

    This section contains the various colors available to be used when applying the 'remap' logic and usually refer to the colors that objects in the game can be remapped to. Most objects in the game contain an area or areas of color which are drawn in specific palette entries from the UNITSNO, UNITEM and UNITURB palettes. In Red Alert 2, like Tiberian Sun, these palette entries are represented by various shades of red. The colors listed here form an internal table of colors from which the game can remap those shades of red. Each house (country) must be assigned a default Color= from this list. In multiplayer map files, the color of each house already present on the map can be specified which will over-ride the default setting for that house. The three values from each entry here represent the hue, saturation and value of each color. The value component specifies the maximum brightness allowed for the color as the color spread is generated. The hue component remains constant. The saturation curves through color space as the value component changes such that darker colors become more saturated.

    Note that this list forms an internal table to which the game refers when any color is required for the games houses (including display of text). The table is numbered in the order in which these colors appear and starts at '0'. When the game needs a particular color, it refers to a number from this table by matching the name, so to edit or change any colors you should change the values held here under that color's name, not the name itself.

    It is also worth remembering that entries 1,5,6,7,8,10,12 and 14 are used for the default colors of the multiplayer houses so you can change these values to allow players to use different colors, although it is not recommended that you use Black for a multiplayer house - doing so means the player will not see a lot of in game text which is printed on a Black background! It is unwise to edit numbers 17 and 18 (Allied Load and Soviet Load) as these colors are always used for the text on loading screens. The game can handle a maximum of 50 colors in this table.

    LightGold=25,255,255 ; 0 Orange
    Gold=41,240,230 ; 1 MP#0 Yellow
    LightGrey=0,0,240 ; 2 White
    Grey=0,0,131 ; 3 Grey
    Red=20,255,184 ; 4 Brown
    DarkRed=0,230,255 ; 5 MP#1 Red
    Orange=25,230,255 ; 6 MP#4 Orange
    Magenta=221,102,255 ; 7 MP#7 Pink
    Purple=201,201,189 ; 8 MP#6 Purple
    LightBlue=119,143,255 ; 9 Aqua
    DarkBlue=153,214,212 ; 10 MP#2 Blue
    NeonBlue=185,156,238 ; 11 Violet
    DarkSky=131,200,230 ; 12 MP#5 Periwinkle (i.e. aquaish)
    Green=104,241,195 ; 13 Bathroom green
    DarkGreen=81,200,210 ; 14 MP#3 Light green
    NeonGreen=0,0,0 ; 15 Black
    Yellow=38,159,255 ; 16 Pastel yellow
    AlliedLoad=164,255,255 ; 17 Allied Load
    SovietLoad=0,235,255 ; 18 Soviet Load
    (YR) Purple2=211,201,189 ; 19 Yuris Purple #1
    (YR) Purple3=191,201,189 ; 20 Yuris Purple #2

    Purely for information, the UNITSNO and UNITTEM palettes in Red Alert 2 are almost identical to the Tiberian Sun ones, so here are some more colors from Tiberian Sun should you wish to modify the default colors, as they work equally well in Red Alert 2.

    LightGold=34,128,255
    Gold=34,160,255
    DarkGold=34,235,255
    LightGrey=0,0,220
    Grey=0,0,190
    DarkGrey=0,0,120
    Black=0,100,0
    White=0,0,255
    LightRed=0,70,255
    Red=0,160,255
    DarkRed=0,235,255
    Burgandy=0,255,150
    LightOrange=24,165,255
    Orange=24,255,255
    DarkOrange=11,235,255
    LightMagenta=228,120,255
    Magenta=228,160,255
    DarkMagenta=228,235,255
    LightPurple=200,160,255
    Purple=200,235,255
    HyundaiPurple=200,235,170
    LightBlue=164,140,255
    Blue=164,200,255
    DarkBlue=164,200,179
    NeonBlue=164,255,255
    LightSky=142,70,255
    Sky=142,160,255
    DarkSky=142,235,255
    LightCyan=132,70,255
    Cyan=132,160,255
    DarkCyan=132,235,255
    LightTeal=110,70,255
    Teal=110,160,255
    DarkTeal=110,235,255
    LightGreen=85,70,255
    Green=85,160,200
    DarkGreen=85,235,150
    NeonGreen=85,255,255
    LightYellow=43,70,255
    Yellow=43,160,255
    DarkYellow=43,235,255
    NeonYellow=43,255,255
    LightPeach=21,120,255
    Peach=21,150,255
    DarkPeach=21,180,255
    DarkerPeach=21,255,255
    LightLime=53,70,255
    Lime=53,160,255
    Darklime=53,235,200
    NeonLime=53,235,255

    [ColorAdd] (Yuri's Revenge)

    This section holds and defines the colors used to tint buildings, such as when they are designated for an Airstrike. In order to prevent slowdown in the low level blitting routines, this functionality was implemented by doing a composite bitwise logical OR. This means that the color value is not being shifted, instead the value of color specified below is being added. If part of the object being tinted already has as much value of the color specified, then no change will be seen. At the level that the blitters operate, colors are 16 bit numbers using the 5,6,5 RGB scheme. This means that values of red range from 0 to 31, values of green from 0 to 63, and values of blue from 0 to 31. Those values are then converted from binary to decimal and listed here.

    None=0,0,0 00000,000000,00000 0
    StrongRed=31,0,0 11111,000000,00000 1
    StrongGreen=0,63,0 00000,111111,00000 2
    StrongBlue=0,0,31 00000,000000,11111 3
    HighRed=24,0,0 11000,000000,00000 4
    HighGreen=0,56,0 00000,111000,00000 5
    HighBlue=0,0,24 00000,000000,11000 6
    BrightWhite=31,63,31 11111,111111,11111 7
    LowWhite=7,7,7 00111,000111,00111 8
    HighWhite=24,56,24 11000,111000,11000 9
    MidWhite=14,28,14 01110,011100,01110 10
    Purple=15,0,15 01111,000000,01111 11
    HighYellow=24,56,0 11000,111000,00000 12
    TopYellow=16,32,0 10000,100000,00000 13


    • Difficulty Settings

    The games' difficulty is controlled by these factors. Some of these factors will only affect a computer player. The computer and human players can be handicapped by these individual settings, thus the computer may be playing at 'hard' level while the player may be playing at 'easy' level. Each level of difficulty must be defined with its own section here and should be [Easy] , [Normal] and [Difficult]- you cannot add new difficulty levels as these sections are the only ones Red Alert 2 will recognize.

    Airspeed=
    Houses can have special adjustments to their unit and building values. These are global values that affect all units and buildings owned by that country. This applies only to multiplayer games and skirmish mode. In normal game play, all values are "1.0". This enables you to define the characteristics that can uniquely differentiate between countries. This statement determines the multiplier to overall object air speed (larger means quicker) and is only used for AI players at specific difficulty settings. It is not known if this is used in Red Alert 2 for human players and in either case may be over-ridden by the SpeedAircraftMult= statement (see [Countries]).

    Groundspeed=
    Houses can have special adjustments to their unit and building values. These are global values that affect all units and buildings owned by that country. This applies only to multiplayer games and skirmish mode. In normal game play, all values are "1.0". This statement determines the multiplier to overall object ground speed (larger means quicker) and is only used for AI players at specific difficulty settings. It is not known if this is used in Red Alert 2 for human players and in either case may be over-ridden by the SpeedAircraftMult= statement (see [Countries]).

    ROF=
    Houses can have special adjustments to their unit and building values. These are global values that affect all units and buildings owned by that country. This applies only to multiplayer games and skirmish mode. In normal game play, all values are "1.0". This statement determines the multiplier to overall object rate of fire (larger means slower). and is only used for AI players at specific difficulty settings. It is not known if this is used in Red Alert 2 for human players and in either case may be over-ridden by the individual multiplier statements (see [Countries]).

    Cost=
    Houses can have special adjustments to their unit and building values. These are global values that affect all units and buildings owned by that country. This applies only to multiplayer games and skirmish mode. In normal game play, all values are "1.0". This statement determines the multiplier to overall object cost in credits (larger means more expensive) and is only used for AI players at specific difficulty settings. It is not known if this is used in Red Alert 2 for human players and in either case may be over-ridden by the individual multiplier statements (see [Countries]).

    BuildTime=
    Houses can have special adjustments to their unit and building values. These are global values that affect all units and buildings owned by that country. This applies only to multiplayer games and skirmish mode. In normal game play, all values are "1.0". This statement determines the multiplier to overall time taken to build objects (larger means longer to build) and is only used for AI players at specific difficulty settings. It is not known if this is used in Red Alert 2 for human players and in either case may be over-ridden by the individual multiplier statements (see [Countries]).

    BuildSlowdown=
    Can be set to 'yes' or 'no' and determines whether or not the computer builds things slower than the player. Appears to make a house-specific change to the BuildSpeed= variable from the [General] section although it is not known quite what factor is applied.

    ContentScan=
    Can be set to 'yes' or 'no' and determines whether or not the computer considers the contents of transports when picking the best target. When set to 'yes' this overrides the IQ setting of the computer player's house(s).

    RepairDelay=
    Specifies the average delay, in minutes, before initiating the repair of damaged structures.

    BuildDelay=
    Specifies the average delay, in minutes, before initiating the construction of new structures.

    DestroyWalls=
    Can be set to 'yes' or 'no' and determines whether or not the computer will scan for nearby enemy walls and destroy them, even if they do not pose an obstruction to movement or firing. This is best left set to 'yes' otherwise the computer can occasionally neglect to attack those structures which have ProtectWithWall=yes set.

    [VariableNames]

    This section is used to determine the global variable names used throughout the single player campaigns. These must be constant throughout all scenarios based on these rules. These are numbered starting from zero. Do not change the number values or else all pre-existing triggers using them will break. There should be no need to amend, edit or change these - they are best left alone. If you need to set your own variables you can do so through individual map files with the use of Local variables (see the Map Editing Guide). You can however define new Globals here and in conjunction with the relevant map file Action= this could provide a crude means of ensuring that your map(s) can only be used with your mod.

    • Mission Control

    This section specifies the various general behaviour characteristics of the missions that objects can be assigned. Each of the game objects must be in a mission at all times. The mission behaviour is generally hard coded, but there are some behaviour characteristics that can be overridden. Don't modify these or bad crashiness (and at best unpredictable/undesired effects) will result. Each mission to which an object can be assigned can have its own section defined here which will over-write the default values. Red Alert 2 allows the following missions for objects;-

    [Sleep] object sits around and plays dead, will not acquire targets
    [Attack] special attack mission used by AI team type logic
    [Move] simply moving to destination
    [QMove] special move to destination after other queued moves occur
    [Retreat] object runs away (may even leave the map)
    [Guard] object sits around and will engage an enemy that falls within its weapon range
    [Sticky] just like guard mode, except the object will engage enemies but not pursue them
    [Enter] enter building or transport
    [Capture] engineer entry logic
    [Eaten] when object is being repaired (applies only to structures)
    [Harvest] the loop controlling harvesting of Ore and dumping at a Refinery
    [Area Guard] guard the general area where the object starts at
    [Return] return to co-ordinating object (e.g. spawned object returns to the spawner)
    [Stop] stop moving or firing at the first available opportunity
    [Ambush] unused, its effects are unknown
    [Hunt] scan for and attack enemies wherever they may be on the map
    [Unload] while dropping off cargo (e.g. Landing Craft unloading passengers)
    [Sabotage] unit runs to place C4 on a building or Ivan goes to place bomb on object
    [Construction] structures use this when building up after initial placement
    [Selling] structures use this for deconstruction after being sold
    [Repair] used when repairing an object (e.g. Service Depot)
    [Rescue] special team over-ride mission
    [Missile] Nuke Silo special launch missile mission
    [Harmless] object doesn't fire and is not considered in any threat scan
    [Open] while opening or closing a gate to allow passage
    [Patrol] patrol a series of waypoints
    [Paradrop Approach] object is approaching the paradrop site
    [Paradrop Overfly] object is flying over the paradrop site (i.e. dropping the paratroopers)
    [Wait] paused and awaiting next mission
    (YR) [Spyplane Approach]object is flying towards target
    (YR) [Spyplane Overfly] object is flying over the target

    NoThreat=
    Can be set to 'yes' or 'no' and determines if this objects weapons are disabled and thus ignored as a potential target until fired upon.

    Zombie=
    Can be set to 'yes' or 'no' and determines if this object sits there like a Zombie and never recovers.

    Recruitable=
    Can be set to 'yes' or 'no' and determines if this object can be recruited into a team or base defense mission.

    Paralyzed=
    Can be set to 'yes' or 'no' and determines if this object is frozen in place but can still fire and function.

    Retaliate=
    Can be set to 'yes' or 'no' and determines if this object is allowed to retaliate while on this mission.

    Scatter=
    Can be set to 'yes' or 'no' and determines if this object is allowed to scatter from threats whilst in this mission.

    Rate=
    Determines the delay between normal game processing while the object is in this mission (larger values mean a faster game but less responsiveness while this mission is being carried out as the mission must be completed).

    AARate=
    Determines the delay between anti-aircraft fire. If not specified it uses the regular ROF=.

    [Tiberiums]

    This section details the characteristics for Ore and Gems. The [Tiberiums] section forms a list, starting at 0, of each type of Ore or Gems. Each object in the list should then have its own section in which its characteristics are defined.

    Value=
    Specifies the number of credits per 'bail' (the number of bails an Ore Miner can collect is determined by the Storage= statement in its entry).

    Growth=
    Specifies the number of cells that this type will strive to occupy when growing if TiberiumGrows=yes is set.

    GrowthPercentage=
    Specifies the percentage of the Ore patches current size that it will grow by with each subsequent growth. Setting this to 0 disables the growth of this type.

    Spread=
    Specifies the number of cells that this type will strive to occupy when spreading if TiberiumSpreads=yes is set in the [SpecialFlags] section of a map file (see the Map Editing Guide).

    SpreadPercentage=
    Specifies the percentage of the Ore patches current size that it will spread by with each subsequent spread. Setting this to 0 disables the spread of this type. Only applies if TiberiumSpreads=yes is set in the [SpecialFlags] section of a map file (see the Map Editing Guide).

    Debris=
    Specifies the debris animation to play when exploding or destroyed. Should be a valid animation from the [Animations] list and be defined in ART.INI.

    [Powerups]

    This section specifies the chance for the each crate power up to appear in a 'random' crate. Each type must have three parameters and an optional fourth (dependant on the type of power up). The first parameter is the chance of this power up being in the crate that is picked up, and is expressed in the form of 'shares' out of the total shares specified - if you set this to 0, then that crate power up will not appear. NOTE: you must ensure your total chances add up to 110 (the total of the default unedited Red Alert 2 values) otherwise the randomizer can occasionally generate an Internal Error - bear this in mind if you add a new one or remove an existing one. The second parameter is the animation to use when this crate is picked up, which must be from the [Animations] list and be defined in ART.INI although you can prevent an animation from displaying by setting this to . The third parameter can be set to 'yes' or 'no' and specifies whether or not this crate is available on water. The fourth parameter, if present, specifies the data value needed for that crate power up. They mean different things for the different powerups (see list below). NOTE: you should use caution when setting the third parameter to 'yes' - there is a small possibility of a power up which gives the player a free unit generating a unit on water which can only move on land and vice versa - this will generate an Internal Error. This is due to a bug in the game code because the code was copied from Tiberian Sun which had no water-only units.

    Firepower=
    Units Firepower= is upgraded by multiple of parameter 4.

    Speed=
    Units Speed= upgraded by multiple of parameter 4.

    Armor=
    Units Strength= upgraded by value held in parameter 4.

    ICBM=
    Player gets one time Super Weapon, charged and ready to fire. The Super Weapon given is always the first from the [SuperWeaponTypes] list.

    HealBase=
    All players objects are restored to their full Strength= value.

    Veteran=
    Object gets veteran upgrade, parameter 4 is number of levels to progress.

    Cloak=
    Object is cloaked - note that this is the same effect as submersible underwater units so they will not be detected unless they are detected by another object which has Sensors=yes set.

    Napalm=
    Fire explosion, affects infantry only and takes them out, parameter 4 is damage inflicted. This uses a warhead from the [Warheads] list so by editing that warhead you can customize this crate power up, although it is not known which warhead is used.

    Explosion=
    Explosion, parameter 4 is the amount of damage inflicted. This uses the [HE] warhead so by editing that you can customize this crate power up.

    Money=
    Player gets credits, parameter 4 is amount of cash they get.

    Reveal=
    Entire map is revealed to the player.

    Shroud=
    Entire map is shrouded to the player except for those areas that their existing objects can 'see'. Use caution if you enable this as it eliminates the functionality of the Spy Satellite if the player already has it.

    Tiberium=
    Patch of ore is scattered around the object which collects this crate.

    Gas=
    The [Gas] warhead is triggered on the unit which collects this crate doing the amount of damage determined by parameter 4. You can customize this crate power up by modifying the [Gas] warhead entry.

    Unit=
    Player gets a unit from the [VehicleTypes] list. The vehicle that the player gets is determined randomly from a list compiled from those units which do not have CrateGoodie=no set. It is worth setting parameter 3 to 'no' to ensure that this cannot be collected on water and making sure that all naval-only units have CrateGoodie=no set, otherwise there is a small percentage chance that the player could get a ship from a crate on land which causes an Internal Error.

    Squad=
    Unknown. In Red Alert, this power up gave the player a random squad of infantry although this does not function in Red Alert 2. The crate does bestow some effect, however this property is unknown and is yet to be determined - collecting the crate usually gives the player a small amount of money which is an indication that the object collecting the crate already has the property which the crate bestows (you get the same effect when a 'cloaked' unit collects a 'cloak' crate).

    IonStorm=
    Pod=
    Invulnerability=
    Placeholders, these can be used as they are parsed by the game but they have no effects programmed. By attaching an animation, you could get these to perform some effect through the animation itself in the ART.INI file thus create a new Crate.

    • Land Characteristics

    This section specifies the characteristics of the various terrain types. The primary purpose is to differentiate the movement capabilities of each object dependant upon their Locomotor= CLSID, and also determines if structures can be built on these terrain types. Every object defined within the [OverlayTypes] list must have a Land= statement in its entry which determines the effect that it has on the movement of units that pass over it and whether or not structures can be built (or deployable units deployed) on it. Each Land= type has its own section here defining its characteristics. These can also be used to limit the movement of some units with the MovementRestrictedTo= statement by specifying a land type from here. Red Alert 2 is hard coded to deal with the following land types. NOTE: 'water' is not a land type, although it is a valid MovementZone= and is one reason why ships do not share the normal vehicle Locomotor= CLSID.

    [Clear] normal clear terrain
    [Road] roads (both dirt and paved)
    [Rock] rocky terrain (including rocks themselves)
    [Beach] where water joins land
    [Rough] rough terrain (debris for example)
    [Ice] ice covering water (although this may be disabled in Red Alert 2)
    [Railroad] railroads. Residual from Tiberian Sun, although it is not known if this logic still works in Red Alert 2
    [Tunnel] tunnels under cliffs etc. The tunnel logic does work in Red Alert 2
    [Weeds] residual from Tiberian Sun, although it is not known if this logic still works in Red Alert 2

    Each of the statements in the entry for each land type details a SpeedType= and the percentage adjustment to the speed of a unit moving over this land type that has that particular SpeedType= assigned. A land type that has 0% assigned to a particular SpeedType= will result in the player getting the 'no move' cursor when they try to move the unit with that SpeedType= onto it. Exceptions to this are the 'ship' and 'teleport' locomotor CLSID's which are hard coded differently. Note that all values here default to 100% which means there is no effect on that SpeedType= by this land type, so omitting an entry for a particular SpeedType= means that the land type will have no effect on it. Note also that some units make use of different SpeedTypes= from which their Locomotor= CLSID defaults to - see the AircraftTypes, VehicleTypes and InfantryTypes sections of this guide for more details.

    Foot=
    Determines the percentage of the units Speed= that it will move at when moving over this land type if the unit has SpeedType=Foot. Should apply only to infantry types whose Locomotor= CLSID defaults to this anyway.

    Track=
    Determines the percentage of the units Speed= that it will move at when moving over this land type if the unit has SpeedType=Track. Should apply only to specific types of terrestrial vehicles which have IsTrain=yes and MovementRestrictedTo=Railroad set. Note that the TrackedUphill= and TrackedDownhill= statements are used to determine the coefficient applied to these units' Speed= when moving up and down hill. Although undocumented, this was used in Tiberian Sun for the trains.

    Wheel=
    Determines the percentage of the units Speed= that it will move at when moving over this land type if the unit has SpeedType=Wheel. Should apply only to specific types of terrestrial vehicles (e.g. tanks) whose Locomotor= CLSID defaults to this anyway. Note that the WheeledUphill= and WheeledDownhill= statements are used to determine the coefficient applied to these units' Speed= when moving up and down hill.

    Float=
    Determines the percentage of the units Speed= that it will move at when moving over this land type if the unit has SpeedType=Float. Should apply only to naval vehicles (e.g. ships) whose Locomotor= CLSID defaults to this anyway although the ship Locomotor= CLSID deals with this independently (this is one reason why ships do not share the normal vehicle Locomotor= CLSID).

    Hover=
    Determines the percentage of the units Speed= that it will move at when moving over this land type if the unit has SpeedType=Hover. Should apply only to hover units whose Locomotor= CLSID defaults to this anyway.

    FloatBeach=
    Determines the percentage of the units Speed= that it will move at when moving over this land type if the unit has SpeedType=FloatBeach. Should apply only to naval units that have CanBeach=yes set.

    Underground=
    Determines the percentage of the units Speed= that it will move at when moving over this land type if the unit has SpeedType=Underground. Should apply only to subterranean units whose Locomotor= CLSID defaults to his anyway, but note that this is not included in RULES.INI as land should not affect subterranean units - their Speed= defaults to 100% across all land types because they move under the land type, not on or over it. Note also that the overall Speed= of such units when underground is controlled by the TunnelSpeed= statement.

    Winged=
    Determines the percentage of the units Speed= that it will move at when moving over this land type if the unit has SpeedType=Winged. Should apply only to aircraft whose Locomotor= CLSID defaults to his anyway, but note that this is not included in RULES.INI as land should not affect aircraft - their Speed= defaults to 100% across all land types because they move above the land type, not on or over it.

    Buildable=
    Can be set to 'yes' or 'no' and determines whether or not structures can be placed on this land type when deploying.