Due to the length of the TOC, it is hidden by default. Click here to expand it.
Clicking on the bold print headers (IE "Introduction", "Type 1 Fixes", "Iron Curtain Effect", etc) will allow the reader to collapse the section immediately below. To reexpand, simply click the desired header again. Note that collapsing a large section header will collapse everything below it as well. Conversely, expanding a section will also expand all sections below it.
Ares is the new tool to extend the capabilities of Yuri's Revenge. It was conceived by pd near the end of 2007, and is currently in an early development and testing cycle.
This documentation is aimed primarily at Ares testers, as Ares is a work in progress and subject to many further changes. However, the documentation is also aimed at mod authors wishing to make use of the new functionality that Ares offers.
Ares is incorporated into Yuri's Revenge via the use of Syringe, a program developed by pd to 'inject' DLL code into a running executable without modifying the executable itself. In this case, the Ares DLL is injected into the Yuri's Revenge 1.001 main executable, gamemd.exe.
Syringe can be run directly via a command line prompt, or automatically using Launch Base. See the respective documentations of those programs for further details.
Ares is not intended to be used in conjunction with any third party patch that modifies the executable of the game. This is due to fairly obvious technical reasons that were best summarized by Renegade: [paraphrase] You can't use the USA maps on your GPS to navigate through Russia.
...because sooner or later you will drive down a road that doesn't exist, and off a cliff.
Comodo has been reported as being a problem multiple times. It seems that this particular program has a strong dislike for programs that alter other programs. Normally, this is a good thing, but Ares works with a program called Syringe, which is a program that alters other programs. Be advised that issues may be encountered. A solution can be found here.
For the same reasons, Ares does not support loading save games or scripted IPB videos that were created with any other version of the game than the very same version of Ares (not even the original Yuri's Revenge save games are supported).
NB: Unfortunately, for the moment, save games are not functional at all in Ares. This is a known problem that will be fixed in the future - Ares will eventually be able to load games that were saved using [the exact same version of] Ares.
NB: As of July 2011, this issue has been targeted to 1.0 due to its complexity and lack of interest in the issue.
SolidHeight
/Solid Buildings functionality does not work with invisible projectiles yet. (Issue #888)Ares provides three types of bug fixes:
When a unit kills an enemy unit it gains experience, which can lead to that unit becoming veteran or elite. Killing friendly units (your own or your allies') does not earn experience in this way.
However, Temporal warheads (warheads with Temporal=yes
set) did use to earn experience when killing friendly units. This is no longer the case. Temporal warheads no longer gain experience when used against allies
Introduced in version: 0.1
[General]
section without re-stating the PrismSupportModifier
, the PrismSupportModifier
from rulesmd.ini would get multiplied by 100, thus causing supported Prism Towers to deal extremely high damage. This bug is now fixed. It should be noted that several official maps which used to exhibit this bug were already 'fixed' by the UMP by re-stating PrismSupportModifier=150%
in each affected map. As a result of the UMP fixes, these maps are now set at the original 150%, regardless of what your mod may set it to. If you want to change this then you should manually override the global modifier via Ares' new Prism Forwarding logic. This can be done simply by adding a single flag to the Prism Tower:[ATESLA]►PrismForwarding.SupportModifier=whatever
Prism support modifier fixed for game modes/maps.
Introduced in version: 0.2
Infantry killed by a mutation warhead appear to transform into another InfantryType. Internally this is achieved by playing an animation, upon completion of which a new infantry unit is spawned. If the cell where the new infantry is to be spawned is already occupied then the animation will pause on the final frame until the obstacle is cleared. The original game would allocate memory for the new infantry on every frame but would fail to de-allocate that memory when the infantry could not be placed. The more time that passes with the animation in this state, the worse the memory leak gets – resulting in the game eventually grinding to a halt. Ares fixes this by simply deleting the animation if the new infantry unit cannot be spawned.Stuck mutation animations are deleted (thus preventing a memory leak)
Introduced in version: 0.1
When you infiltrate an enemy War Factory, any [trainable] VehicleTypes' (not AircraftTypes) cameos (build icons) will gain the veteran symbol, indicating that they will start veteran when built. However, only vehicles built from a War Factory will actually start veteran, not vehicles built from a Naval Yard. Ares ensures that only the vehicles that will actually start veteran gain the veteran symbol for their cameos.Spying a war factory will not give you veteran build icons for naval units incorrectly.
Introduced in version: 0.1
The random weighting of each possible Secret Lab boon was not calculated correctly – the later a boon appeared in the list the less likely it was to appear in-game. For example, if the Grand Cannon were not picked as the boon for the first Secret Lab on the map (probability 1/8) then it could not be picked for any of the other Secret Labs. This has been fixed such that every Secret Lab will pick its boon completely at random, independently of other Secret Labs on the map.Secret lab boons are picked truly at random.
Introduced in version: 0.1
If there were more Secret Labs on the map than there were possible boons then all of the Secret Labs would be 'empty'. This has been fixed such that every Secret Lab will pick its boon completely at random, independently of other Secret Labs on the map.Too many secret labs on a map would cause them all to be empty. Not anymore.
Introduced in version: 0.1
When AI controlled Super weapons with Type=WeatherStorm
or Type=Nuke
picked their target, they failed to ignore cloaked objects (such as Submarines) and, as a result, sometimes selected them as targets, ruining the appearance of fair play. Cloaked objects are no longer considered as targets for these super weapons.AI will not use weather storms or nukes on cloaked units.
Introduced in version: 0.1
It was possible to issue the 'guard mode' order to enemy harvesters as if they were your own units. Players unaware of this exploit would find their economy crippled when facing an unscrupulous player. It is no longer possible to issue the guard mode order to enemy harvesters."Enemy harvester guard mode" exploit no longer works.
Introduced in version: 0.1
If a parasite (e.g. Terror Drone) entered a unit that can fly (e.g. Nighthawk) and that unit was destroyed by the parasite whilst airborne then the parasite would appear, unscathed, on the ground beneath the destroyed unit. In Ares, the parasite will instead appear at the same height as the destroyed airborne unit and fall to the ground - where it will be destroyed by the impact.Parasites that destroy an airborne unit will fall to the ground and be destroyed too.
Introduced in version: 0.1
The Verses
flag (which is used on warheads to manipulate the damage dealt versus different armor types) has three special-case values used to define additional behavior:
However, a bug with the way the floating-point values are compared means that these behaviors were not always applied consistently. Ares fixes this bug so the behavior should always be consistent now.
The special behaviors can also now be toggled independently of the Verses value (see Additional ArmorTypes and Verses).Warhead verses special values (0%/1%/2%) should now apply their behavior consistently.
Introduced in version: 0.1
When a unit was pulled by a Magnetron it would play its MoveSound
, even though it was not moving under its own power. Now, this sound will only be played when the unit moves under its own power.Units pulled by a Magnetron will on longer play their move sound.
Introduced in version: 0.1
Westwood did not update the code that selects the load screen text color for Yuri's Revenge. The original campaigns always used red no matter what faction you played as. For the multiplayer game modes, everything that was not Allied got red, too. Ares selects these values: Allies get blue for campaigns and Yuri gets purple in multiplayer.Dedicated load screen text colors for each faction.
Introduced in version: 0.2
Several super weapon cursors contain multiple frames but only display the first one. Ares enables these animations for the paradrop, chronoshift and iron curtain cursors.Several super weapon cursor animations enabled.
Introduced in version: 0.2
If a jumpjet unit with SpeedType=Hover
like the Nighthawk or the deployed Siege Chopper was chronoshifted into water it originally would not sink. The unit would even be able to take off unharmed. Ares will let these jumpjet units sink.Jumpjet units will sink when chronoshifted into water.
Introduced in version: 0.2
If a player ordered infantry to occupy a neutral structure, and the building was erased with a Temporal warhead before the potential occupiers could arrive, an Internal Error would occur. Ares fixes this behavior so that erasing the structure will no longer trigger an error.Temporal Warheads and potential occupation targets.
Introduced in version: 0.2
Yuri's Revenge uses different unit voice lists for firing weapons (VoicePrimaryWeaponAttack
, VoicePrimaryEliteWeaponAttack
, VoiceSecondaryWeaponAttack
and VoiceSecondaryEliteWeaponAttack
). If the *EliteWeaponAttack
list is empty, VoiceAttack
is used instead of the more appropriate non-elite version *WeaponAttack
. This behavior makes units like Boris, Magnetrons, Siege Choppers, Boomers and Floating Discs lose their special voices once they become elite. Ares falls back to the non-elite weapon firing voices instead of using the generic VoiceAttack
ones.
Introduced in version: 0.2
Units won't lose their special weapon firing voices once they become elite.When an InfantryType with MovementZone=AmphibiousDestroyer
was carried between water and land inside an 'open topped' vehicle (e.g. a Nighthawk converted into a flying Battle Fortress), their EnterWaterSound
/ExitWaterSound
would be played. Now, these sounds will only be played when the InfantryType themselves physically enters/leaves water.
Introduced in version: 0.1
Secret Lab boons were picked on map load so if a Secret Lab were not pre-placed on the map then it would not provide a boon. With Ares, Secret Labs constructed by a player will randomly pick a boon that that player could not build at the time the Secret Lab was placed.Buildable secret labs will now have a boon.
Introduced in version: 0.1
Construction Yards that were made buildable from the sidebar would cause an Internal Error if the player started construction of one and then cancelled it. This error no longer occurs.Buildable construction yards no longer cause an IE when canceled.
Introduced in version: 0.1
Animations may have appeared to deal damage randomly rather than based on the warhead specified. In fact, animations were hard-coded to deal damage using the warhead specified by [CombatDamage]►FlameDamage2
, unless the animation ID was [INVISO]
, in which case the warhead used was [CombatDamage]►C4Warhead
. With Ares, the [Animation]►Warhead=
flag will be adhered to, with the aforementioned warheads used as the default if [Animation]►Warhead
is not specified.Animations' warhead flag now works.Warhead=
Introduced in version: 0.1
When you infiltrate, say, an enemy Barracks, any [trainable] infantry that you subsequently build will start veteran. The infantry's cameos (build icons) will gain the veteran symbol to indicate this. However, if the country you are playing as has any units that always 'start veteran' then those units did not gain the veteran symbol for their cameos. Now they do.Units that start veteran as a country-specific bonus will now have veteran build icons.
Introduced in version: 0.1
Tesla Troopers, for example, can overpower Tesla Coils to make them fire a more powerful weapon. If the same logic were applied to vehicles (for example, the Tesla Tank), to make them overpower buildings in the same way, then the overpowering weapon of the vehicle would fire but would not, in fact, overpower the building. Now vehicles can overpower buildings properly.Vehicles can overpower buildings.
Introduced in version: 0.1
If a passenger inside an 'open topped' vehicle (e.g. the Battle Fortress) fired a weapon with DecloakToFire=yes
set then the open topped vehicle (if it were cloaked) would not decloak when the weapon was fired. Now it will.OpenTopped transports will decloak to fire when their passengers fire.
Introduced in version: 0.1
The weapon effects of Radiation Beams and Waves (Sonic and Magnetron Beams) would always get drawn from the FLH of the firing unit's current primary weapon rather than from the FLH of the weapon that actually fired the beam/wave. Now the weapon effects will be drawn using the correct FLH.
Note that the Magnetron does not have a SecondaryFireFLH
set in the unmodded game, so any mod using Ares will need to set this themselves. You may also need to correct the FLHs for the IFV.RadBeams and waves will use the correct FLH (instead of always using PrimaryFLH).
Introduced in version: 0.1
The Warhead
and AmbientDamage
settings used when applying ambient damage from a sonic weapon were always taken from the unit's current primary weapon rather than the weapon that actually fired the wave. Now these settings are taken from the weapon that fired the wave.Sonic wave ambient damage comes from the correct weapon (instead of always Primary).
Introduced in version: 0.1
If an Ivan Bomb weapon was given to any unit other than an InfantryType then the weapon would fire but the Ivan Bomb would not actually get attached to the target. Now Ivan Bombs can be fired by VehicleTypes, AircraftTypes and BuildingTypes as well.
NB: BuildingTypes do not get the Dynamite cursor.Ivan bombs can be fired by any unit (instead of just infantry).
Introduced in version: 0.1
Before Ares, upgrades did not appear to work as prerequisites – if you had the upgrade, you still didn't satisfy the prerequisite. In fact, only the most recently constructed BuildingType would be checked to see if it had the upgrade. With Ares, all upgrades on all BuildingTypes are eligible to satisfy any prerequisite logic that a normal BuildingType can.
In addition, upgrades can now satisfy a super weapon's AuxBuilding
.Building upgrades can now be used as prerequisites.
Introduced in version: 0.1
The original game supports custom palettes on TechnoTypes using Palette=
(filename, excluding .pal extension) on the TechnoType's entry in artmd.ini. However, the game would crash (with the message "You have violated the limit of having only one extra building Palette" in the (non-existent) log file) if you used the Palette
flag more than once. And, of course, the one extra palette was already in use on the Statue of Liberty. Ares removes this limit and lets you use custom palettes on all TechnoTypes to your heart's content.
NB: It is not known why this apparently arbitrary limit on custom palettes was in place – it may have been there to mask a bug that we don't yet know about.Units can specify a custom palette.
Introduced in version: 0.1
If you had queued up a lot of vehicles such that the primary factory could not cope with the rapid exit cycle then the game would search for alternative exits – other instances of the same BuildingType. In Ares this has been extended to search for all BuildingTypes with the same Factory=
and Naval=
settings.
NB: This fix currently prevents the so-called 'kennel hack' from working.Factory load sharing for factories of the same type, rather than just the same ID.
Introduced in version: 0.1
One cause of the NCO bug (where the EVA will announce "new construction options" when, in fact, there aren't any) was the game's failure to check if the player had the appropriate factory type to build the unit concerned (e.g. a VehicleType factory for VehicleTypes). Such a check will now take place, thus removing this cause of the NCO bug."New construction options" no longer announced if player does not have the correct factory type for a unit.
Introduced in version: 0.1
Units with weapons that use MindControl=yes
, Parasite=yes
or Temporal=yes
require special treatment behind-the-scenes in order to function. However, the original game only performed this treatment if those units had such weapons as their Primary weapon. The treatment would not be applied for Secondary weapons and thus result in crashes. Ares performs the treatment for Secondary weapons too.
NB: The 'special treatment' sets up the object wielding these weapons. However, the original code is not designed to handle an object having more than one weapon with 'special' functionality so it is not recommended to have multiple weapons with the same type of special functionality on a single object.Special weapons (mind-control/parasite/temporal) will now work in the Secondary slot.
Introduced in version: 0.1
The remappable parts of animations played via the use of the DestroyAnims=
flag (when a building is destroyed) used to remain red in color – they would not get remapped to the owning player's house color. Now they will. Note that the games files already include suitable animations for some buildings, however some of these (the Allied Barracks and Prism Tower) use the red palette indexes rather than the remappable indexes so you will need to recolor the images.DestroyAnims can use remappable colors.
Introduced in version: 0.1
The DestroyAnims=
flag used to cause reconnection errors in multiplayer whenever it was used. This should not happen anymore.DestroyAnims don't cause reconnection errors anymore.
Introduced in version: 0.1
See ModEnc://Ammo for exact details of this problem. Put simply, ammo/reloading logic did not work properly on BuildingTypes or InfantryTypes and was essentially useless on those object types. Ares fixes this logic such that these object types will now reload their ammo properly. Note that AircraftTypes are hard-coded to require docking to reload.BuildingTypes and InfantryTypes Do Not Reload Ammo Properly
NB: There are two tags for which this does not work: Hospital=
and Armory=
. Normally, a building will use up its supply of ammo and then proceed to reload. Setting Hospital=
and Armory=
to yes
will in effect disable the ability of that building to reload. After the building heals or promotes the number of units specified under Ammo=
, the building will effectively be useless. This occurs even if the structure has a weapon set under Primary
. In that circumstance, any combination of ammo used will contribute to the exhaustion of ammo without hope of reload.
Introduced in version: 0.1
If you have a vehicle which deploys into a structure, both the deploying vehicle and the structure will now count towards the BuildLimit
of that vehicle.Vehicles that deploy into a building now count towards the BuildLimit of that building, and vice versa.
Hijackers inside stolen vehicles now count towards the Hijacker's BuildLimit.Hijackers inside vehicles now count towards that hijacker's BuildLimit.
Introduced in version: 0.1
There is no longer an upper limit on the InfantryTypes, VehicleTypes and AircraftTypes lists.
NB: The so-called Whiteboy Bug (where graphical glitches and even game freezing can occur when there are 74 or more cameos visible on the sidebar at the same time) has not been fixed.100-unit bug fixed for infantry, vehicles and aircraft (there's no longer a limit on these).
Introduced in version: 0.1
Multiple loose PKT files can now be used without their contents being duplicated (unless you duplicate the mapfilters, of course).Multiple loose PKT files no longer have their contents duplicated.
Introduced in version: 0.1
You can now override the original missionsmd.pkt by placing your own version in an expandmd##.mix file (the game has been modified to load these files before langmd.mix).Missionsmd.pkt can now be overridden by your own version inside expandmd##.mix
Introduced in version: 0.1
The original game includes a little-known flag that allows all ObjectTypes (anything placeable on the map - Projectiles, Trees, Overlays, Smudges (not the IsometricTileTypes), Aircraft, Infantry, Vehicles and Buildings) to have a lighting effect displayed on them.
[Object]►AlphaImage=ALPHATST
instructs the game to display ALPHATST.shp on the object as a lighting effect. The SHP must be saved without any compression (just like mouse.sha).
Ares adds two improvements to this feature:
Introduced in version: 0.1
MC-parasites would draw a mind-control link between the mind-controlled unit and the point on the map where the parasite entered the unit. Now the link will not be drawn at all. You can also use MindControl.Permanent instead, in order to use the perma-mc animation.Mind-controller parasites will no longer draw the mind-control link when the the target is selected.
Introduced in version: 0.1
If you set AllyParaDropNum=
to a list of integers so as to send multiple InfantryTypes in the paradrop (and thus multiple paradrop planes) then the SpyPlane super weapon would also send the same number of planes as there were elements in that list. In Ares, the number of spy planes sent out is now specified by the super weapon's own SpyPlane.Count=
flag (which defaults to 1).SpyPlane.Count decoupled from AllyParaDropNum.
Introduced in version: 0.1
[AudioVisual]►DigSound=
is used for both the global Nuke siren and the sound made when a subterranean unit (with Locomotor={4A582743-9839-11d1-B709-00A024DDAFD1}
) digs into or emerges from the ground. With Ares, the super weapon can specify its own SW.ActivationSound=
(which defaults to [AudioVisual]►DigSound=
for nukes).Nuke super weapons can be overridden to use a sound other than DigSound for their siren.
Introduced in version: 0.1
If a Jumpjet vehicle uses SHP-based imagery then the shadow would only be drawn when the unit was at rest on the ground or if Turret=yes
were set (and then the shadow would appear directly underneath the unit instead of on the ground). Now the shadow will always be drawn correctly on the ground.Shadows on jumpjet units will now be drawn correctly when the unit is airborne.
Introduced in version: 0.1
Passengers of AircraftTypes get paradropped out if the AircraftType fires its weapon. The passengers would always use the infantry sub-cell positions for where they would be spawned, even if the passenger were not an InfantryType. This ultimately meant that vehicles would appear to fall part-way into the ground upon landing. This error no longer happens in Ares.
(The same problem also used to occur with vehicles paradropped from aircraft with Carryall=yes
set.)Vehicles that are paradropped will now be centered correctly on the cell they land on, rather than being offset.
Introduced in version: 0.1
Anti-air weapons (where the projectile has AA=yes
set) could not be used by AircraftTypes – aircraft simply would not attack other airborne units. Now, anti-air weapons work just fine on aircraft. No additional flags are required.Aircraft can now attack other aircraft if given a weapon with an AA=yes
projectile.
Introduced in version: 0.1
[General]►BaseUnit=
specifies the list of VehicleTypes that are considered to be MCVs. Only the first 3 entries of this list were recognized by the game, which means that additional sides would never be playable in non-Short Games (among other limitations). Ares removes this limit so all entries in the list are now recognized.BaseUnit=
can now hold more than 3 vehicles.
Introduced in version: 0.1
If you get into low power then the EVA will announce 'low power', but only if you have one of the first 3 buildings from the [AI]►BuildConst=
list. With Ares, you'll get the EVA announcement if you have any building from the list."Low power" announcement used to occur only if you owned one of the first 3 buildings from BuildConst=
. This now works if you have any building on the list.
Introduced in version: 0.1
Infantry sent into an Armory or old-style Tech Hospital emerge a few moments later, having had the relevant benefit applied (e.g. promotion or healing). However, if the building were destroyed, sold or undeployed whilst the InfantryType were still inside then that InfantryType would remain in 'limbo' whilst still counting towards the owning player's units (e.g. defeat conditions, build limit, etc). Ares will make sure that such InfantryTypes are ejected from the building in those situations.Infantry still inside a Hospital or Armory when it is destroyed/sold may go into limbo instead of emerging, meaning that they still count towards the player's units. Now they will emerge.
Introduced in version: 0.1
If the AI were modified to build multiple factories of the same type then every time they built a unit from that factory type they would produce a copy of that unit from every additional factory. For example, if the AI were made to build a second War Factory then they would get a second copy of every vehicle they build. This behavior is disabled by default in Ares, although a flag has been added to allow mod authors to turn it back on if they really want to:
Introduced in version: 0.1
BuildingTypes whose artmd.ini entry has NewTheater=yes
set would have the second letter of their SHP filenames replaced by another letter, depending on the theater of the current map. For example, GAWEAP uses SHP files named GAWEAP* on arctic maps, GTWEAP* on temperate maps, GDWEAP* on desert maps and so on. In the event that a SHP file with the appropriate filename does not exist, the game falls back to GGWEAP*.
However, in Yuri's Revenge this filename-adjusting logic only works for BuildingTypes whose Image
ID starts with G, N, Y or C. Ares extends this logic to work for Image
IDs starting with any letter (A-Z or a-z).
Introduced in version: 0.2
When an amphibious (not hover) object - that is, one that can normally enter water cells without problem - was chronoshifted onto water by the Chrono Sphere, it would sink. Ares corrects this so that all amphibious objects can be chronoshifted onto water without sinking.Amphibious objects no longer sink when chronoshifted onto water.
Attacking a unit with a Temporal=yes
warhead when it should not be susceptible due to having Warpable=no
set, could still experience some negative effects. Units that were mind-controlled by the unwarpable unit would be freed and aircraft-spawners would have those aircraft destroyed. Unwarpable units are no longer affected in this manner. Temporal warheads no longer affect objects that are not Warpable
In Tiberian Sun you could place buildable gates on top of existing walls. This logic still exists in Yuri's Revenge. However, the logic was hardcoded to only work with GAWALL and NAWALL, so it wouldn't work with Yuri's wall (YAWALL) or, indeed, any other walls you might add to the game. Ares changes this so that all overlays with Wall=yes
set can have gates "slammed" onto them.
NB: The automatic joining of walls to the gates still only works for GAWALL and NAWALL however this will be fixed in future.Gates can be slammed onto any walls, not just GAWALL or NAWALL.
Walls (i.e. OverlayTypes with Wall=yes
) always use the same colour in place of the remap for all players, regardless of the owning player's colour. Ares will instead draw walls' remappable sections in their respective owner's colours.Walls remap to the owning player's colour.
Introduced in version: 0.2
In Yuri's Revenge, using the Mirage disguise logic on a VehicleType with Turret=yes
would result in the vehicle's turret not being disguised. Ares fixes this behaviour so that associated turrets and barrels will be disguised along with the unit's body..
Introduced in version: 0.2
Turrets and barrels will be disguised with the unit.Weapons that contain a negative Damage
flag, and have AnimList
specified on their associated warheads, would cause an Internal Error upon firing. This no longer happens in Ares.
Introduced in version: 0.2
Negatively Damaging Weapons with AnimList tags on their warheads will no longer cause errors.AircraftTypes with IsRailgun=yes
weapons would cause Internal Errors when they destroy their intended target. This no longer happens in Ares.
Introduced in version: 0.2
AircraftTypes can now use railguns without causing Internal Errors.Until now, AircraftTypes and BuildingTypes have ignored the existence of Cloakable=yes
. Now, if this tag is included on the entry of a BuildingType or AircraftType, it will cloak.
Note: AircraftTypes will decloak when told to attack, not once they are within firing range.
Introduced in version: 0.2
AircraftTypes and BuildingTypes can now be cloakable.If a you were to remove the SovParaDropInf
tag from [General]
, then summoned Airstrikes such as Boris' weapon will trigger an Internal Error when fired. This no longer happens in Ares.
Introduced in version: 0.2
Summoned Airstrikes are no longer dependent on the SovParaDropInf tag.If you send a hijacked unit into a grinder, you will get a refund for the vehicle thief also. Originally, Yuri's Revenge did not consider the hijacker.
Introduced in version: 0.2
Hijackers are reimbursed when a unit is grinded.Using the Player@X
logic, Yuri's Revenge would also try to reinforce players that don't exist, which leads to a crash. When using Reinforcement
, Reinforcement at Waypoint
and Reinforcement by Chrono
, Ares will only create a team if the player exists on the map.
Introduced in version: 0.2
Only existing players will receive reinforcements in multiplayer games.Introduced in version: 0.1
The Yuri's Revenge engine is based on the Red Alert 2 engine, which, in turn, is based on the Tiberian Sun engine.
Various features that existed in Tiberian Sun were removed in Red Alert 2, and further features were removed in Yuri's Revenge and in the 1.001 patch.
The extent to which these features no longer exist in Yuri's Revenge 1.001 varies, from not functioning correctly to complete removal of the logic (sometimes because simply using the logic causes an Internal Error).
Below is a list of the features that Ares has restored, along with any changes or enhancements to the way those features used to work in Tiberian Sun.
Note that, in many cases, Ares has drastically changed the way these features are implemented.
Vehicles affected by EMP (Electromagnetic Pulse) are paralyzed in a similar manner to a Chrono Legionnaire erasing a unit. Unlike the Chrono Legionnaire however, EMP'd vehicles can still be attacked by other units.
EMP paralysis affects units and buildings in various ways (given they are not immune to EMP, see below):EMP weapons
[General]►EMPulseSparkles=EMP_FX01
. Note that the emp_fx01.shp file that comes with Red Alert 2 is in the Tiberian Sun palette and needs to be converted.[SuperWeapon]►IsPowered=yes
set.Quickstart: If you want a warhead to EMP a target for ten seconds, set EMP.Duration=150 on the warhead.
NB: Tiberian Sun used the weapon's Damage flag to determine how long the EMP effect would last. Ares, however, uses 2 new flags (EMP.Duration and EMP.Cap) to provide greater control. The weapon's Damage will be delivered independently from EMP paralysis (so a weapon can both damage and paralyze its target). Tiberian Sun also used the flag EMEffect=yes, which is not used in Ares.
The game keeps track of how much longer each unit will remain paralyzed. Each unit essentially has a hidden EMP counter that counts down frame by frame until it reaches zero, at which point the unit will be re-activated. This counter is what gets modified by EMP warheads.
A unit does not get affected by EMP if Verses
is equal to 0%
, otherwise the target is endowed with the full effect.
First we will look at positive EMP.Duration – the targets are going to be paralyzed.
EMP.Cap
is greater than zero.EMP.Duration
up to but not exceeding EMP.Cap
.EMP.Cap
(e.g. caused by some other EMP weapon) then it will not be reduced.EMP.Duration=10
, EMP.Cap=20
. Result: EMP counter will be set to 10.EMP.Duration=10
, EMP.Cap=20
. Result: EMP counter will be set to 20.EMP.Duration=10
, EMP.Cap=20
. EMP counter will remain at 60.EMP.Cap=0
EMP.Duration
, without limit.EMP.Cap
flag was added).EMP.Duration=10
. Result: EMP counter will be set to 35.EMP.Cap=-1
EMP.Duration
, unless the target's EMP counter is already greater than this.EMP.Duration=10
. Result: EMP counter will be set to 10.EMP.Duration=10
. EMP counter will remain at 20.Next we will look at negative EMP.Duration
– for example, a friendly unit trying to re-activate the already-paralyzed unit.
EMP.Cap=-1
EMP.Duration
.EMP.Duration=10
. Result: EMP counter will be set to 40.EMP.Duration=10
. Result: EMP counter will be set to zero and the unit will re-activate.EMP.Cap
is greater than zero.EMP.Duration
. If this value is still greater than EMP.Cap
then the EMP counter is reduced further so that it is equal to EMP.Cap
.EMP.Duration=10
, EMP.Cap=70
. Result: EMP counter will be set to 40.EMP.Duration=10
, EMP.Cap=20
. Result: EMP counter will be set to 20.EMP.Duration=10
. Result: EMP counter will be set to zero and the unit will re-activate.EMP.Cap=0
EMP.Duration
is irrelevant. The EMP counter will be set to zero and the unit will re-activate.Quickstart: If you want a unit to be immune to EMP, set ImmuneToEMP=yes on the unit.
ImmuneToEMP
defaults to no for BuildingTypes that have Powered=yes
and a negative Power=
value set.ImmuneToEMP
defaults to no for BuildingTypes that provide one or more of the following special functions:ImmuneToEMP
defaults to yes for all other BuildingTypes. For instance, power plants and pillboxes are immune to EMP by default, as well as SpySat buildings and factories.
ImmuneToEMP
defaults to yes for InfantryTypes unless Cyborg=yes
is set (in which case, ImmuneToEMP
defaults to no).
ImmuneToEMP
defaults to no for VehicleTypes and AircraftTypes unless Organic=yes
is set (in which case, ImmuneToEMP
defaults to yes).
ImmuneToEMP
always overrides the default.VeteranAbilities=EMPIMMUNE
or EliteAbilities=EMPIMMUNE
on the TechnoType.TypeImmune
, AffectsAllies
and AffectsEnemies
on the warhead.
ImmuneToEMP=
EMP.Modifier
defaults to 100%
.EMP.Modifier=See Destroy Units by EMP to learn how to crash flying TechnoTypes.
Introduced in version: 0.1
In Tiberian Sun you could sell units that were docked with a structure by using the normal Sell button on the sidebar. In Yuri's Revenge, a super weapon with Action=SellUnit
achieves the same function. However, if such a super weapon were fired on a unit inside a Tank Bunker then an Internal Error would occur (sometimes this would be delayed until the destruction of the Tank Bunker). Ares prevents the error occurring.SellUnit super weapon no longer causes IEs with Tank Bunker.
Introduced in version: 0.1
In Tiberian Sun there was a button on the sidebar that allowed players to turn their own buildings on and off and in low power situations. In Yuri's Revenge, a super weapon with Action=TogglePower
achieves the same function. However, if such a super weapon were fired into an empty cell then an Internal Error would occur. Ares prevents the error occurring.An Action=TogglePower super weapon no longer causes IE when targetting an empty cell.
Introduced in version: 0.1
Spotlights would cause an Internal Error whenever they were created. The error no longer occurs so spotlights can now be used.Spotlights
Introduced in version: 0.1
Laser Fences used to work in Red Alert 2 and Yuri's Revenge 1.000 but stopped working with the arrival of the 1.001 patch, in that the 'lasers' never turned on (this appears to have been an incidental change and not something Westwood did intentionally).
Laser Fences now work just the same as they did in Tiberian Sun. You need a BuildingType with LaserFencePost=yes
to act as a corner post, and another BuildingType with LaserFence=yes
which will be placed in between the corner posts automatically (see the original building's SHP from Tiberian Sun to see how the art is controlled). These fences are impassable to ground objects and invulnerable to normal damage, but when a corner post is destroyed, the fences connected to it are lost. When the corner post loses power, the fences connected to it go offline and become freely passable. When the post regains power, the fences reactivate and any object unfortunate enough to be traversing them will be destroyed.Laser FencesLaserFence=LaserFencePost=
Introduced in version: 0.1
The Firestorm Wall and super weapon can now be implemented in Yuri's Revenge.
See the New Super Weapon Types: Firestorm section) for details.
Introduced in version: 0.1
Image=
) to YYYY.shp or YYYY.vxl (defined by [WaterImage]►Image=
) when in water, similar to UnloadingClass.[VehicleTypes]
.
WaterImage=
Amphibious vehicles can change their image when moving between water/land.
Introduced in version: 0.1
Red Alert introduced a way to balance engineers. By being able to capture a building only if has been damaged already engineer rushes became a lot more difficult. If the building could not be captured the engineer would damage it instead. EngineerDamage
is not present in Yuri's Revenge. Ares restores this feature. Multi Engineer.
Use sensible defaults. Generally, EngineerDamage
should never be higher than EngineerCaptureLevel
or there might be situations an engineer blows up the building to be captured.
See Multi Engineer Checkbox to enable the user to turn the Multi Engineer option on and off from the game menu. If the checkbox is not enabled, the game will force the settings defined in rulesmd.ini.
Introduced in version: 0.2
Tiberian Sun lets the user enable and disable the Multi Engineer feature from the user interface. Ares restores this feature. If the user turns off Multi Engineer buildings can always be captured using an engineer, otherwise the settings in rulesmd.ini are used. Multi Engineer checkbox in Skirmish menu.
no
.See Multi Engineer for more info on EngineerDamage
and EngineerCaptureLevel
.
NB: Currently only the skirmish menu supports changing the Multi Engineer option. This will be changed in the future to support network and online games as well.
Introduced in version: 0.2
This chapter documents all the completely new features that have been added to the game.
In the original game the sides and countries were, for the most part, hard-coded. You could not add to, remove or reorder the 10 countries or 3 sides. Ares, however, makes these tasks possible – you can now have up to 16? countries and 16 sides, and you can customize these in numerous ways...New sides & countries (including numerous enhancements).
Countries are specified in the [Countries]
list in rulesmd.ini. Any country with Multiplay=yes
set will appear in the country selection drop-down list and be eligible for random selection if the player chooses 'Random'.Countries can be excluded from the 'random country' option, or given differing weights.
The [Countries]
list can contain up to 32 countries, however taunts will only work for 16 of these.
Each country can be customized using the following flags in the country's INI section:
NB: The following filename specifications (where raw C-style format specifiers like %s are required) are going to be changed into safer versions in the future. The replacement style has not been decided yet.
%s
", which will be substituted for the current screen width (640 or 800 pixels). For example, File.LoadScreen=ls%susstates.shp
will make the game load ls800usstates.shp.File.LoadScreen=%02i
", which will be substituted for the taunt ID (01 through 08). For example, File.Taunt=Taunts\tauam%02i.wav
will make the game load taunts tauam01.wav
through tauam08.wav
.LoadScreenText.Name=Name:Americans
.LoadScreenText.Name=LoadScreenText.SpecialName=Name:apara
.LoadScreenText.SpecialName=LoadScreenText.Brief=loadbrief:usa
.LoadScreenText.Brief=[Colors]
enumeration. For example, LoadScreenText.Color=AlliedLoad
.LoadScreenText.Color=RandomSelectionWeight
value by the sum of all Multiplay=yes
countries' RandomSelectionWeight values. Defaults to 1.RandomSelectionWeight=ListIndex
, the order is defined by their appearance in the [Countries]
enumeration. Countries with negative values will not appear in the dropdown list; you can use this to effectively hide countries without having to change the [Countries]
list and thus without risking game crashes. To also prevent such countries from being selected randomly, set RandomSelectionWeight=0
. Defaults to 100.ListIndex=Type=ParaDrop
super weapons (such as the one normally provided by a Tech Airport) for this country. Defaults to the corresponding side's ParaDrop.Types=
.ParaDrop.Num=
.ParaDrop.Num=ParaDrop.Aircraft=
.ParaDrop.Aircraft=Parachute.Anim=
.Parachute.Anim=Introduced in version: 0.1
Sides are specified in the [Sides]
list in rulesmd.ini.
There is no limit to the number of sides that can be defined. However, only 16 fully-working countries can be implemented (see above).
Each side can (and should) define its own values for the following flags in the side's INI section:
Crewed=yes
set) owned by this side are destroyed (or, in the case of buildings, sold)Crew=AI.BaseDefenses
) that the AI can build.AI.BaseDefenseCounts=Type=ParaDrop
super weapons (such as the one normally provided by a Tech Airport) for this side. Defaults to [General]►AllyParaDropInf
for GDI (Allied), [General]►SovParaDropInf
for Nod (Soviet), and [General]►YuriParaDropInf
for ThirdSide (Yuri).[General]►AllyParaDropNum
for GDI (Allied), [General]►SovParaDropNum
for Nod (Soviet), and [General]►YuriParaDropNum
for ThirdSide (Yuri).ParaDrop.Num=PDPLANE
.ParaDrop.Aircraft=PARACH
.Parachute.Anim=Introduced in version: 0.1
[WeaponTypes]
SectionThis new section allows you to declare new weapons without having to declare a dummy unit to parse them (like the official "WEEDGUY" hack). This works in the same way as the existing [Warheads]
section. Any WeaponType listed under the [WeaponTypes]
section will be parsed by the game and can be used as a shrapnel weapon or a new weapon in a game mode, etc.
Introduced in version: 0.1
Before Ares, Radiation beams could not be customized – they were always either green or blue depending on the type of weapon. Now, however, radiation beams can be customized using the following flags (which affect weapons with IsRadBeam=yes
set and/or IsRadEruption=yes
set) in the weapon's INI section:Rad beams can have custom colors, duration and amplitude.
[AudioVisual]►ChronoBeamColor
for weapons with a Temporal warhead, and [Radiation]►RadColor
for weapons with a non-Temporal warhead.Beam.Color=Beam.Color
.Beam.IsHouseColor=Introduced in version: 0.1
Introduced in version: 0.1
An unused weapon effect (present in the game code but disabled) has been enabled. It is similar in appearance to the old laser beam or the old disruptor wave from previous games. For now it is referred to as Laser.Enabled unused IsLaser wave effect.
IsLaser
and IsBigLaser
produce two different effects, however their naming was established before the effects were fully tested: IsLaser
appears to actually render a wider beam! See the image below, left unit is using Wave.IsLaser
, the right one is using Wave.IsBigLaser
:
Introduced in version: 0.1
The following flags are applicable to all Wave effects; the aforementioned Wave.Is(Big)Laser=yes
as well as Sonic=yes
and IsMagBeam=yes
.Wave.IsLaser=Wave.IsBigLaser=
Wave.Color
.Waves can have custom colors.Wave.IsHouseColor=Introduced in version: 0.1
Waves are drawn in different directions (from firer to target or vice versa) depending on the type of wave and the circumstances. This direction can now be customized in several ways. The following flags all default to no unless otherwise specified.
IsMagBeam=yes
is set on the weapon.Wave.ReverseAgainstVehicles=Introduced in version: 0.1
All waves can now deal disruptor-style damage to objects that they pass through, a feature that was previously limited to Sonic Waves only. As a reminder, the flags that control this are:
Introduced in version: 0.1
As with many other features of Yuri's Revenge, the settings that control Crazy Ivan Bombs are global so you can't have multiple variations of them with their own controls. With Ares it is now possible to create new Ivan Bomb-esque weapons – new types of sticky bomb with whatever settings you like. The only aspect of Ivan Bombs that hasn't been de-globalized is the ability to remote detonate the bombs – this feature is either enabled or disabled for all Ivan Bomb types.
When IvanBomb=yes
is set on the weapon's warhead, the weapon can specify the following flags in order to customize that bomb.
IvanBomb.DestroysBridges=yes
is set.IvanBomb.DestroysBridges=Control=loop
set in its INI section in soundmd.ini.IvanBomb.TickingSound=frameToShow = (Game.CurrentFrame – Bomb.PlantingFrame) / (Bomb.Delay / (Bomb.Image.Frames – 1)) IF (CurrentFrame mod (2 * Bomb.FlickerRate) >= Bomb.FlickerRate) THEN frameToShow = frameToShow + 1Originally this logic was hard-coded to ignore the last frame of the bomb SHP, which was originally planned to be used for so called "death bombs" which were cut from the game before Red Alert 2 was released. This hard-coding has been changed so that the whole SHP is now considered for the fuse, however this means that you'll now see that extra frame from bombcurs.shp, unless you replace that SHP file.
Introduced in version: 0.1
NB: Currently this has the same bugs as the NPatch version, only works with IsHouseColor=yes
and have low quality.
Introduced in version: 0.2
The Iron Curtain effect can now be given to or removed from units and buildings using new Ares warhead settings.Weapons can apply or remove the Iron Curtain effect for a specified number of frames (stackable or absolute).
IronCurtain.Cap=
below to have the effect duration be cumulative rather than absolute. IronCurtain.Duration
defaults to 0
(no Iron Curtain effect).IronCurtain.Duration=IronCurtain.Duration
is absolute and will not stack up if a target is fired upon multiple times. If this value is 0
the effect duration can stack up indefinitely. Otherwise the Iron Curtain effect can not stack up to durations longer than this value – except for when a unit's duration already is higher and IronCurtain.Duration
isn't negative (the duration will not be decreased, then). IronCurtain.Cap
defaults to -1
(non-stacking, absolute duration).IronCurtain.Cap=To change the effect the Iron Curtain has on specific units:
0%
to create a unit that can not be affected by the Iron Curtain. IronCurtain.Modifier
defaults to 100%
.IronCurtain.Modifier=Quickstart: To have a unit protect a target for ten seconds, set [Warhead]►IronCurtain.Duration=150. To allow the Iron Curtain duration to stack up to one minute, set [Warhead]►IronCurtain.Cap=900. To remove the Iron Curtain effect altogether, set [Warhead]►IronCurtain.Duration=-1 and [Warhead]►IronCurtain.Cap=0 (remove one frame but have the resulting number of frames not exceed 0).
If a weapon deals conventional damage and applies the Iron Curtain at the same time, the damage will be dealt first. InfantryTypes and Organic=yes
units will always get killed instantaneously.
This feature works with CellSpread
to affect multiple targets. AffectsAllies
and AffectsEnemies
are respected. A unit does not get the Iron Curtain effect if Verses
is equal to 0%
, otherwise the target is endowed with the full effect.
Introduced in version: 0.1
MindControl.Permanent=yes
set as well as MindControl=yes
set then the mind-control will be permanent.MindControl.Permanent=Introduced in version: 0.1
Permanent mind-control is handled in the same way as the Psychic Dominator effect – previously-mind-controlled units (even permanently) are re-mind-controlled, and the mind-controller does not have a limit on the number of units that it can permanently mind-control.
Unlike the Psychic Dominator, buildings are susceptible to permanent mind-control if the warhead can target them.Permanent mind-control weapons.
Introduced in version: 0.1
If [Warhead]►Temporal.WarpAway
is set, it specifies the animation to be played when this warhead erases an object, instead of [General]►WarpAway=
.Per-weapon WarpAway animation.Temporal.WarpAway=
Introduced in version: 0.1
Ripple.Radius=1 - Forget it, nothing.
5 - Target cell, only voxel rippling
8 - Target cell, both voxel and SHP rippling.
10 - 1 cell radius
15 - 2 cell radius
20 - 3 cell radius
25 - 3 cell radius
28 - 3 cell unit-rippling, 4 cell terrain rippling radius
30 and onwards - 3 cell unit-rippling, 5 cell terrain-rippling radius
Introduced in version: 0.1
Damage
if the InfantryType receiving it is currently deployed.Deployed.Damage=Note that this is not the same as the existing ProneDamage=
flag; deployed units are not considered to be prone. Defaults to 100%.Per-warhead damage multiplier against deployed infantry.
Introduced in version: 0.1
AffectsAllies
flag.AffectsEnemies=
flag added (counterpart for AffectsAllies=).AffectsEnemies=Introduced in version: 0.1
EVA_OreMinerUnderAttack
). No other EVA messages are suppressed. For example, if a warhead's purpose is to spread ore – dealing damage as a side effect only – you can use Malicious=no
to disable unreasonable EVA attack warnings for ore miners. Defaults to yes
.Malicious=
warhead flag suppresses EVA's ore miner under attack warnings.Malicious=Introduced in version: 0.2
NotHuman=no
) is killed by this warhead. Works in the same way as existing InfDeath
animations except this flag allows you to specify an animation ID rather than an integer. Further more, the animation will be treated as the correct type (e.g. mutation or non-mutation) automatically, which means that you can now have any number of mutations that produce player-owned InfantryTypes. See MakeInfantryOwner for how to control which player will gain control of 'mutated' infantry.New InfDeaths (InfDeathAnim= any animation, auto-detect mutation).InfDeathAnim=Introduced in version: 0.1
In Yuri's Revenge the nuke uses a special animation called NUKEBALL
which was shown prior to displaying the actual mushroom explosion and dealing damage. The game was hard-coded to use this only for warheads with the ID NUKE
. Ares enables this for arbitrary warheads.PreImpactAnim=
optional for every warhead, not just for NUKE
.
NUKEBALL
for NUKE
, otherwise to none
.PreImpactAnim=Introduced in version: 0.2
The new [ArmorTypes]
section can be used to define new ArmorTypes for objects (in addition to the 11 existing ArmorTypes; none, flak, plate, light, medium, heavy, wood, steel, concrete, special_1 and special_2).
[ArmorTypes] paper=steel magic=11%
paper=steel
declares a new ArmorType called "paper" whose Verses
on each warhead defaults to being the same as that warhead's Verses
against the "steel" ArmorType.
magic=11%
declares a new ArmorType called "magic" whose Verses
on all warheads defaults to 11%.
These ArmorTypes can be assigned to objects in the same way as the standard ArmorTypes (case-insensitively). Their susceptibility to specific warheads can be specified as follows:
Armor=magic
.Versus.*=Note that each individual ArmorType's versus value is specified using the new "Versus.*" flag, whereas the original 11 ArmorTypes versus values are specified using the original Verses flag (note Westwood's misspelling of "versus").
The original Verses=
flag parser no longer crashes if you specify less than 11 values.Additional armor types which can default to reacting like an existing armor type.ArmorTypes
Introduced in version: 0.1
The Verses flag has three special-case values that can be used to define additional behavior:
These behaviors can now be toggled on or off independently of the damage multiplier (so you can now have a warhead that is 100% effective against an armor type but, at the same time, will not directly target a unit with that ArmorType).
Note Ares' correct spelling of "acquire".Warhead verses special behaviours can be decoupled from Verses (ForceFire/Retaliate/PassiveAcquire).
Introduced in version: 0.1
The original game has a way to make certain units immune to certain warheads, however this is severely limited. For example, the [DESO]
infantry has the flag ImmuneToRadiation=yes
and the [RadBeamWarhead]
warhead has the flag Radiation=yes
. This means that the Desolator is immune to damage from the radiation beams fired by other Desolators. This immunity system has 2 limitations:
Ares overcomes these limitations with new armor types, as mentioned above. If you want to have additional 'old-style' immunities that still allow units to target things they can't damage (e.g. because they will affect enemies in an area around the target) then you can create a new armor type that will emulate this as follows:
[ArmorTypes] flakImmuneToFrost=flak [IceMan] Armor=flakImmuneToFrost Primary=IceBlast [IceBlast] Warhead=IceBlastWH [IceBlastWH] Versus.flakImmuneToFrost=0% Versus.flakImmuneToFrost.ForceFire=yes Versus.flakImmuneToFrost.Retaliate=yes Versus.flakImmuneToFrost.PassiveAcquire=yes
The above settings give the IceMan unit a damage immunity to the IceMan weapon, even though he can still be attacked by that weapon.
The original MakeInfantry
logic would always grant ownership of newly-created infantry to the neutral side, unless the animation was caused by an InfantryType being killed by an InfDeath=9
warhead (in which case the killing player would get ownership of the new InfantryType). Ares lets you choose which player will gain ownership, from one of several options.
Next=
tag then MakeInfantry=
goes on the last animation whereas MakeInfantryOwner=
goes on the first animation - that is, the animation that was initially invoked.Note that this is not a warhead property – it goes on the corresponding animation entry in artmd.ini. However, MakeInfantryOwner
only works for specific animations; namely those invoked by InfDeathAnim
, DeathAnims
and map triggers. The deafult MakeInfantryOwner
is 'invoker', which corresponds to a different player depending on the animation.
InfDeathAnim
, 'invoker' represents 'killer' (the owner of the killing unit).DeathAnims
, 'invoker' represents 'victim' (the owner of the dying unit).'random' will pick a random player from all players in the game, including neutral.
NB: Like InfDeath=9
, all mutation animations will be rendered in the unit palette instead of anim.pal.MakeInfantry animations (InfDeathAnim, DeathAnims, map triggers) can choose who the owner will be as killer|victim|neutral|random.MakeInfantryOwner=
Introduced in version: 0.1
In Yuri's Revenge, there is very little you can do to change or add to the existing super weapons – most super weapon-related features are hard-coded to only work as designed for the original super weapons. Ares, however, includes several new ways to customize existing super weapons as well as several wholly new super weapons.Super Weapons:
NB: You cannot change a super weapon's Type=
or Action=
values in any of the game mode specific INI files (like mpfreeforallmd.ini) or map files. To achive the same effect, add a new super weapon to rulesmd.ini with the different Type=
or Action=
and change SuperWeapon=
for the respective owner buildings to use the new super weapon in the INI file instead.
Buildings can display specific animations for when the attached super weapon is charging, is nearly charged (1 minute remaining in the normal game), is ready to be fired, and when it fires. However, in Yuri's Revenge, these animations only work properly for the original super weapons. In Ares, these will work for any super weapon.Building animations played correctly for new super weapons.
Introduced in version: 0.1
SW.Range=3.5
defines a circle with 7 cells diameter, SW.Range=4,6
defines a rectangle 4 cells wide and 6 cells high. The range is no longer bound to cell spread's limitation of a maximum range of 10.SW.Range=team
equals owner,allies
, all
equals owner,allies,enemies
. Defaults to team
for the Force Shield, to all
otherwise.SW.AffectsHouse=SW.AffectsTarget=land,buildings
affects all buildings that aren't water-bound, SW.AffectsTarget=water
affects every water cell, occupied or empty.SW.AffectsTarget=SW.AutoFire=no
is set. Defaults to yes
.SW.ShowCameo=Introduced in version: 0.1
It made no sense to have the values PreClick
, PostClick
, and PreDependent
customizable. Ares hardcodes these values and they have no effect any more. Instead, SW.PostDependent
takes their place.PreClick, PostClick, and PreDependent are replaced by PostDependent.
[ChronoSphereSpecial]►SW.PostDependent=ChronoWarpSpecial
switches to the ChronoWarp type super weapon after you chose the source locationSW.PostDependent=Introduced in version: 0.2
yes
.FireIntoShroud optional.SW.FireIntoShroud=yes
, the AI targeting options are used to infer the best target cell. Defaults to no
.SW.AutoFire=no
, the player will not be able to launch the super weapon. This setting is ignored if SW.AutoFire=no
is set. Defaults to yes
.SW.ManualFire=Cursor
, otherwise the player gets the NoCursor
and it is not possible to launch the super weapon. For an example see SW.AffectsTarget=
. Please be aware of the problems that can arise if this and SW.AffectsTarget=
are set to mutually exclusive values not allowing the super weapon to affect anything.SW.RequiresTarget=LightningStorm
or Nuke
.SW.RequiresTarget
and SW.RequiresHouse
.Introduced in version: 0.1
Ares allows you to specify custom mouse cursors for the super weapon, using the following flags:Custom cursors.
Cursor.Frame
, except this is for the mouse cursor when positioned on the minimap.Cursor.MiniFrame=Cursor.Count
, except this is for the mouse cursor when positioned on the minimap.Cursor.MiniCount=Cursor.HotSpot=Left,Top
will treat the top-left corner of the cursor as the tip. Default is "Center,Middle".All of the above "Cursor.
" flags have a corresponding "NoCursor.
" flag, which allows you to specify the cursor that will be displayed then the mouse pointer is positioned over a point where the super weapon cannot be fired (e.g. the Force Shield cannot be fired over empty ground, so will display an alternate cursor to indicate this).Cursor.HotSpot=
NoCursor.
" flags default to the same value as their "Cursor.
" counterparts.NoCursor.Count=NoCursor.Frame=NoCursor.HotSpot=NoCursor.Interval=NoCursor.MiniCount=NoCursor.MiniFrame=Introduced in version: 0.1
Instead of one global setting, Ares supports customizable ChargeToDrainRatio settings for each super weapon. All settings here only apply for super weapons having UseChargeDrain=yes
set.Customizable charge to drain ratio for each superweapon.
0
. Defaults to [General]►ChargeToDrainRatio
.SW.ChargeToDrainRatio=no
.SW.Unstoppable=Note that UseChargeDrain
is supported for the Firewall super weapon only. Using it along with any other super weapon types it will lead to unexpected results.
Introduced in version: 0.2
The firing of a super weapon can now add or subtract credits from the firing player's cash reserve. If the player doesn't have enough funds the launch is aborted and an EVA event is triggered to notify the player. Super weapons costing money will show the needed amount in the super weapon's cameo tool tip.Money deductable when firing a superweapon.
UseChargeDrain=yes
super weapon is active. Use a negative number to subtract credits.Money.DrainAmount=Money.DrainAmount=
are added to the firing player's account when a UseChargeDrain=yes
super weapon is active.Money.DrainDelay=Introduced in version: 0.1
The default values depend on the super weapon's actual Type
.
Introduced in version: 0.1
EVA_InsufficientFunds
.EVA.InsufficientFunds=To disable an EVA event, use the value none
.Custom EVA events.
Introduced in version: 0.1
no
.Message.FirerColor=Message.FirerColor=yes
is set.Message.Color=Introduced in version: 0.2
These texts will overlay the cameo in the sidebar to show the super weapon's current status.
UseChargeDrain=yes
set and can be fired, but it isn't fully charged yet.Text.Charging=UseChargeDrain=yes
set and is currently enabled and draining.Text.Active=Introduced in version: 0.2
The three major super weapons allow for a temporary change of lighting. You can change any of these values without having to change the others, too. If you want to use the scenario's respective default value, use -1
for ambient or colors.
Introduced in version: 0.2
Type=LightningStorm
Default values for general tags:
[General]►LightningCellSpread
.[General]►LightningDamage
.[General]►LightningWarhead
.[General]►LightningDeferment
.[AudioVisual]►StormSound
.LightningStorm
.[Lighting]►Ion*
.Lightning Storm specific tags:
-1
means indefinite duration. Defaults to [General]►LightningStormDuration
.Lightning.Duration=SW.AffectsHouse
. Defaults to [General]►LightningStormDuration
.Lightning.RadarOutage=enemies
.[General]►LightningHitDelay
.Lightning.HitDelay=[General]►LightningScatterDelay
.Lightning.ScatterDelay=Lightning.ScatterDelay
frames. Values of 0 or lower will disable random hits. Defaults to 1
.Lightning.ScatterCount=[General]►LightningSeparation
.Lightning.Separation=[General]►LightningPrintText
.Lightning.PrintText=LightningRod=yes
set. Defaults to no
.Lightning.IgnoreLightningRod=2
.Lightning.MinDebris=4
.Lightning.MaxDebris=-1
.Lightning.CloudHeight=[General]►WeatherConBoltExplosion
.Lightning.BoltExplosion=[AudioVisual]►LightningSounds
.Lightning.Sounds=[General]►WeatherConClouds
.Lightning.Clouds=[General]►WeatherConBolts
.Lightning.Bolts=[General]►MetallicDebris
.Lightning.Debris=Other changes:
Lightning rods attract random lightning that is about to strike in close range. For more information see the Lightning Rods section.
NB: Do not use Bouncer=yes
animations with Lightning.Bolts
. This leads to crashes if a building is hit.
Introduced in version: 0.2
Type=MultiMissile
Default values for general tags:
-1
.none
.[AudioVisual]►DigSound
.Nuke
.Light.Ambient=200
, Light.Red=175
, Light.Green=150
, and Light.Blue=125
respectively.Nuclear missile specific tags:
SW.Damage
and SW.Warhead
aren't set. Defaults to NukePayload
.Nuke.Payload=[General]►NukeTakeOff
.Nuke.TakeOff=PSIWARN
.Nuke.PsiWarning=NukeSilo=yes
providing this super weapon. Otherwise the weapon defined by Nuke.Payload
is created off-screen, aiming for the target cell. Defaults to yes
.Nuke.SiloLaunch=Other changes:
Use WeaponType
to control the properties of the upward flying animation (especially its Projectile
). Ares respects the WeaponType
for every nuke, it will not use the WeaponType
of the first superweapon with Type=Nuke
like Yuri's Revenge did. Also mind to set NukeMaker=yes
on the WeaponType
, otherwise the nuke will not come down again.
Ares supports multiple buildings with NukeSilo=yes
providing this super weapon. Yuri's Revenge only tried to find the first building type that matched those criteria.
Yuri's Revenge supported the nuke impact animation only for the warhead called NUKE
, hardcoded to NUKEBALL
. To change this animation in Ares, have a look at PreImpactAnim.
Introduced in version: 0.2
Type=PsychicDominator
Default values for general tags:
[General]►DominatorCaptureRange
.[General]►DominatorDamage
.[General]►DominatorWarhead
.0
.[AudioVisual]►PsychicDominatorActivateSound
.PsychicDominator
.all
.infantry,units
.[Lighting]►Dominator*
.Psychic Dominator specific tags:
[General]►DominatorFirstAnim
.Dominator.FirstAnim=Dominator.FirstAnim
is played above the ground. Defaults to 750
.Dominator.FirstAnimHeight=[General]►DominatorSecondAnim
.Dominator.SecondAnim=Dominator.SecondAnim
is played above the ground. Defaults to 0
.Dominator.SecondAnimHeight=Dominator.FirstAnim
's frames have been played, the Dominator is fired. This is the actual percentage, 20
is 20%. Don't use decimal numbers. Defaults to [General]►DominatorFireAtPercentage
.Dominator.FireAtPercentage=[CombatDamage]►PermaControlledAnimationType
.Dominator.ControlAnim=yes
.Dominator.Captures=yes
.Dominator.Ripple=yes
.Dominator.CaptureMindControlled=yes
.Dominator.CapturePermaMindControlled=yes
ignores the ImmuneToPsionics
tag on its victims. Defaults to no
.Dominator.CaptureImmuneToPsionics=no
allows other mind-controllers to re-capture the victim, otherwise it will be uncapturable. Defaults to yes
.Dominator.PermanentCapture=Introduced in version: 0.2
Type=ChronoSphere
The ChronoSphere
type super weapon needs a ChronoWarp
type super weapon. If you have more than one ChronoSphere
super weapons, you can use the same ChronoWarp
super weapon for all of them or create dedicated super weapons, if you want to. See SW.PostDependent.
Default values for general tags:
3,3
.[General]►ChronoPlacement
.SW.Animation
is played above the ground. Defaults to 5
.none
. The AI cannot use this.all
.infantry,units
. Please note that buildings with Chronoshift.IsVehicle=yes
are considered units and not buildings, if Chronosphere.ReconsiderBuildings=yes
.ChronoWarp
type super weapon in the SuperWeaponTypes
list.Chronosphere specific tags:
[General]►ChronoBlast
.Chronosphere.BlastSrc=[General]►ChronoBlastDest
.Chronosphere.BlastDest=Chronoshift.IsVehicle=yes
as vehicles instead. Otherwise deployed-vehicle type buildings always count as buildings like with the original Chronosphere. Defaults to yes
.Chronosphere.ReconsiderBuildings=yes
.Chronosphere.KillOrganic=Teleporter=yes
set. Otherwise the units will be chronoshifted. Defaults to no
.Chronosphere.KillTeleporters=no
.Chronosphere.AffectsIronCurtain=Warpable=no
set. Otherwise the units will be ignored. Defaults to yes
.Chronosphere.AffectsUnwarpable=yes
, SW.AffectsTarget
and Chronoshift.IsVehicle
are bypassed and the building is chronoshifted with vehicle placement rules. Defaults to no
.Chronosphere.AffectsUndeployable=yes
.Chronosphere.BlowUnplaceable=Other changes:
It is now possible to chronoshift buildings. Note that there is a difference to chronoporting units: If a building cannot be placed in the target location it will blow up in the source location (if the default Chronosphere.BlowUnplaceable=yes
is used). Vehicle-type buildings will try to find a fitting place just like units would.
See Chronoshift to prevent objects from being chronoshifted.
NB: There are several known issues with chronoshifting buildings that haven't been fixed yet. For example, buildup animations will restart and the turret facing is reset.
Introduced in version: 0.2
Type=ChronoWarp
The ChronoWarp
type super weapon is fired at the target location of the chronoshift and marks the position the units will be teleported to. If you have a ChronoSphere
type super weapon you have to have one ChronoWarp
type super weapon, too.
From the ChronoWarp
type super weapon only the targeting and cursor properties are used, as well as Range
to indicate the area of effect.
For the actual chronoshifting tags, see ChronoSphere.
Introduced in version: 0.2
Type=IronCurtain
and Type=ForceShield
The difference between Type=IronCurtain
and Type=ForceShield
are the default values used. Type=ForceShield
will always use the force shield protection color for buildings, otherwise the iron curtain color is used.
Default values for general tags:
[General]►ForceShieldRadius
for ForceShield
, 3,3
otherwise.[General]►ForceShieldInvokeAnim
for ForceShield
, [General]►IronCurtainInvokeAnim
otherwise.SW.Animation
is played above the ground. Defaults to 5
.ForceShield
for ForceShield
, none
otherwise and the AI cannot use this.team
for ForceShield
, all
otherwise.buildings
for ForceShield
, all
otherwise.buildings
for ForceShield
, all
otherwise.team
for ForceShield
, none
otherwise.Iron Curtain and Force Shield specific tags:
[General]►ForceShieldDuration
for ForceShield
, [CombatDamage]►IronCurtainDuration
otherwise.Protect.Duration=[General]►ForceShieldBlackoutDuration
for ForceShield
, 0
otherwise.Protect.PowerOutage=[SuperWeapon]►SpecialSound
is played. Must be smaller than Protect.Duration
. Defaults to [General]►ForceShieldPlayFadeSoundTime
for ForceShield
, 0
otherwise.Protect.PlayFadeSoundTime=Introduced in version: 0.2
Type=GeneticConverter
Default values for general tags:
Mutate.Explosion=yes
. Defaults to 3,3
.Mutate.Explosion=yes
. Defaults to 10000
.[SpecialWeapons]►MutateExplosionWarhead
if Mutate.Explosion=yes
, to [SpecialWeapons]►MutateWarhead
otherwise.[AudioVisual]►GeneticMutatorActivateSound
.GeneticMutator
.Mutate.Explosion=no
. Defaults to all
.land
or water
targets. You cannot define any unit type here and they will be ignored. Ignored if Mutate.Explosion=yes
. Defaults to all
.Genetic Mutator specific tags:
yes
, the Genetic Mutator will cause an explosion using SW.Warhad
and SW.Damage
without respecting any other Genetic Mutator specific tags. Otherwise all infantry units in range are killed using SW.Warhead
, verses and immunities are ignored. Defaults to [General]►MutateExplosion
.Mutate.Explosion=Cyborg=yes
set. Ignored if Mutate.Explosion=yes
. Defaults to no
.Mutate.IgnoreCyborg=NotHuman=yes
set. Ignored if Mutate.Explosion=yes
. Defaults to no
.Mutate.IgnoreNotHuman=Natural=yes
set opposed to affecting it using SW.Warhead
. Ignored if Mutate.Explosion=yes
. Defaults to yes
.Mutate.KillNatural=Introduced in version: 0.2
Type=ParaDrop
and Type=AmerParaDrop
Default values for general tags:
ParaDrop
.The original flags that control the units provided by the generic paradrop super weapons (AllyParaDropInf
, SovParaDropInf
and YuriParaDropInf
) and the American paradrop (AmerParaDropInf
) only accept InfantryTypes. If you try to include a VehicleType via these lists then the game will create a new InfantryType instead - with the same parameters as the existing VehicleType - ultimately resulting in an invisible InfantryType being delivered in the paradrop.
With Ares, there are new country-specific flags that override the old flags and enhance the way paradrops are delivered. ParaDrop.Types
will accept VehicleTypes as well as InfantryTypes. You can send multiple airplanes of user-defined type.
Each plane consists of the following properties:
Type=AmerParaDrop
super weapons, this defaults to AmerParaDropInf=
.Type=AmerParaDrop
super weapons, this defaults to AmerParaDropNum=
.ParaDrop.Num=ParaDrop.Aircraft=
.ParaDrop.Aircraft=1
.ParaDrop.Count=You can define every plane for each country, side or the super weapon separately. The syntax is as follows:[Superweapon]►Paradrop.ID.PlaneX.*=
ID is name of the country or side. X is a positive integer, with no leading zeros, starting with 2 up to Count
. To customize the first plane (which will also act as the default plane), do not use the PlaneX segment. If you want to set the default properties for all sides, do not use the ID segment. Of course, the Count
tags can't have a PlaneX segment.
The Airplane and its contents will be read separately, thus just defining the Aircraft
will result in Types
and Nums
being read from the next tag from this list (and vice versa). Types
and Nums
have to be defined together; it is not possible to change the number of units without restating the types.
[Superweapon]►Paradrop.Country.PlaneX.*=
(the SW's country-specific plane X)[Superweapon]►Paradrop.Side.PlaneX.*=
(the SW's side-specific plane X)[Superweapon]►Paradrop.PlaneX.*=
(the SW's default plane X)[Superweapon]►Paradrop.Country.*=
(the SW's country-specific default plane)[Superweapon]►Paradrop.Side.*=
(the SW's side-specific default plane)[Superweapon]►Paradrop.*=
(the SW's default plane)[Country]►Paradrop.*=
(the country-specific default plane)[Side]►Paradrop.*=
(the side-specific default plane)[General]►*=
(the Rules' default plane)You can create unlimited new paradrop superweapons with different properties. Type=ParaDrop
and Type=AmerParaDrop
are treated equally, but they differ by the default values. The AI will use both types as in the unmodified game.
Introduced in version: 0.2
Type=SpyPlane
Default values for general tags:
ParaDrop
.Spy Plane specific tags:
SPYP
.SpyPlane.Type=Introduced in version: 0.1
Type=PsychicReveal
Default values for general tags:
[CombatDamage]►PsychicRevealRadius
. The default value is capped at 10, mimicking the original implementation using Cell Spread. To disable this limitation, set SW.Range
explicitly.[AudioVisual]►PsychicRevealActivateSound
.ParaDrop
.Introduced in version: 0.2
Type=SonarPulse
The Sonar Pulse is a variation of the original Sonar Pulse known from Red Alert – it will cause any cloaked units in range or on the entire map to temporarily decloak.New super weapon type: SonarPulse (briefly reveals cloaked units).
Default values for general tags:
10
.Stealth
.enemies
.water
, all unit types situated on water cells.Sonar Pulse specific tags:
60
.SonarPulse.Delay=NB: If the affected unit gained its cloaking ability via VeteranAbilities or EliteAbilities then it will only decloak for a moment, as opposed to the full duration specified by the super weapon.
Introduced in version: 0.1
Type=GenericWarhead
The Generic Warhead super weapon will detonate the specified warhead at the target cell.New super weapon type: GenericWarhead (detonate any warhead at target cell).
Default values for general tags:
CellSpread
on the warhead to make sure the desired targets (especially InfantryTypes) are affected.Offensive
.DamageSelf=yes
set (just like the Soviet Nuclear Missile Silo) if you want the warhead to be capable of damaging the firing building.
Introduced in version: 0.1
Type=UnitDelivery
The Unit Delivery super weapon will create the specified unit(s) in the target cell. This uses the CellSpread model to place the units.New super weapon type: UnitDelivery (create unit(s) at target cell).
Default values for general tags:
ParaDrop
.Unit Delivery specific tags:
All objects are placed on the ground, including aircraft. Flying units that never land (e.g. the Rocketeer and Kirovs) will take off.
If a cell is occupied, the super weapon will retry on the next cell and so on, until the object gets placed. Once the first unit is placed, this process starts again for the next item in the list. Infantry squads are grouped in a single cell. The search will skip an item if it has not been placed after testing 100 cells.
You can mix in naval units and they will be placed where they can normally exist.
If you have more than one building, the resulting placement might look odd.
The actual delivery of the units happens all at once, on the 20th frame after firing the super weapon. This delayed-effect logic will most likely be customizable in future and so, in future, the delay for this super weapon may default to a different amount.
Introduced in version: 0.1
Type=Firestorm
This superweapon is a recreation of the Tiberian Sun Firestorm superweapon.
When activated, all structures owned by the firing player that have Firestorm.Wall=yes
set will emit an energy field, blocking all hostile projectiles (except those with SubjectToFirestorm=no
set) from passing through. The energy field also destroys any friend or foe unlucky (or stupid) enough to come into direct contact with active cells.
BuildingTypes with Firestorm.Wall=yes
set will act as a section of the Firestorm Wall and auto-connect to other nearby pieces (check the original building's SHP from Tiberian Sun to see how the art is controlled).
This Superweapon uses the old Charge-Drain logic: once activated, the effect will persist for a duration determined by [General]►ChargeToDrainRatio
, after which it will automatically shut down and the superweapon will restart its charging process. Whilst the effect is active you can click the super weapon button again to manually deactivate it, thus allowing the recharge process to begin earlier and finish faster. Refer to ModEnc for more information about Charge-Drain logic.
In Tiberian Sun, the Charge-Drain feature was disableable through an INI flag ([SuperWeapon]►UseChargeDrain=no
) however: Ares forces this logic to be used regardless of the value of that flag. Ares also forces this super weapon to ignore its assigned Action
, if any, as this is required to make it activate from a single click of the sidebar icon.
The AI will not use this super weapon.
NB: The animations used by this logic are temporarily hard-coded to "FSIDLE", "FSGRND" and "FSAIR", as was used in Tiberian Sun.
NB: The AI has a lot of problems with targets behind an active Firestorm Wall, although this should not be a major problem due to the relatively small amount of game time that the Wall is active for.
Firestorm Wall
Firestorm.Wall=
SubjectToFirestorm=
Introduced in version: 0.1
In the original Red Alert, pilots would parachute from destroyed aircraft. Ares reintroduces this feature along with some additional improvements, all of which are customizable.
AircraftTypes and VehicleTypes have the option of spawning a pilot (or driver) when they are destroyed. In order for a pilot to be spawned from an airborne unit, the ground beneath the destroyed unit must be clear.
The following flags control the percent chance of a survivor being spawned, and the type of unit that that survivor will be.
Survivor.Side0=E1
would cause the spawned survivor (if any) to be a GI when the destroyed unit was owned by an Allied player.Crew=
.Survivor.Side#=Crewed=yes
set, 0 otherwise.Survivor.PilotCount=[General]►CrewEscape=50%
Survivor.RookiePilotChance=Survivor.VeteranPilotChance=Survivor.ElitePilotChance=These flags default to a special-case value of -1 which means "use the original game logic" (i.e. land-based vehicles such as the Battle Fortress will eject their passengers but jumpjet vehicles such as the Nighthawk will not).
Note that, for airborne vehicles such as the Nighthawk, there is no way to say "passengers can survive on the ground, but aren't allowed to paradrop from the air" – if they can survive they can survive.
If either the pilots or any passengers are 'killed' because they were not spawned (i.e. because the ground was not clear or the random chance did not luck in) then they count as having been killed by the unit that killed the transport. If Survivor.PilotChance=0
then the pilots will not count as having been killed (however, passengers will always count as having been killed, even if Survivor.PassengerChance=0
).
Spawned pilots will be spawned with 50% of their maximum health and the same amount of experience as the destroyed unit had. Passengers will emerge with both their health and their experience unchanged.Percent chance for pilots and/or passengers to emerge/parachute from destroyed vehicles/aircraft.
Introduced in version: 0.1
Any TechnoType can now require a specific InfantryType to be among its passengers before it will function.
On the TechnoType you will need to set Passengers=1
(or higher) and SizeLimit=1
(or higher).
For BuildingTypes you will also need to set InfantryAbsorb=yes
.
If the needed passenger is not inside then the TechnoType will power down in a similar fashion to the Robot Tank when the Robot Control Centre is offline – the unit will not be able to move or fire.
BuildingTypes without their Operator will not be able to fire their weapon, if they have one.
No other building-specific functions will be affected (e.g. providing power, being a factory, undeploying, super weapons, radar, etc).
Mirage Tanks without their Operator will still maintain their disguise.
DeploysInto=
.BallonHover=yes
unusable because they will power down in mid-air without landing, so it is impossible to get NB: The AI behaves unpredicatably when faced with units that require Operators and may not be subject to certain effects. You should prevent the AI from building anything that requires an Operator.Vehicles and buildings can be made to require an operator (driver) before they will function.
Introduced in version: 0.1
Requested as a "Jarmen Kell" functionality, this feature allows specific warheads to kill the driver of a vehicle instead of damaging it, and allows others to take over the now-neutral vehicle.Warheads can be set to kill the driver of a vehicle, instead of damaging it.
NB: As of the time of this writing, the relationship between Operator=
and KillDriver=
is not fully implemented; ideally, KillDriver
will kill all passengers in case of _ANY_
, and only the specific operator passengers when specific operators are required, ejecting unharmed passengers in all cases.
At the moment, KillDriver=
simply kills all passengers if an Operator=
case is encountered.
In addition, drivers entering a neutral vehicle need different handling depending on whether they enter a neutral vehicle as part of the Operator logic or as a "generic" driver - generic drivers should vanish, becoming the permanent driver of the vehicle, whereas operators should turn the unit and enter as a passenger, allowing operator-switches as with all other units.
NB: As of the time of this writing, no reclaiming mechanism has been implemented. You will need a VehicleThief
to acquire a neutral vehicle.
Introduced in version: 0.2
Buildings can now be made 'solid' to projectiles, meaning that projectiles will detonate when hitting a building rather than passing through it.
In rulesmd.ini:
In artmd.ini:
Height
as solid. Default is zero, meaning the building is not at all solid (as per the normal game).Introduced in version: 0.1
This section covers several new features that were designed together in order to allow mod authors to add occupiable trenches to the game.
These features do not all have to be used together to implement trenches though - each feature has been designed to be customizable and can be used separately.
NB: This means that these individual features do not distinguish between buildings that are a trench and buildings that are not. It is important that you understand how each new flag works - both on its own and in conjunction with other trench-related flags.Numerous features added to support trenches:
Urban Combat buildings can now specify what percentage of attacks against them will 'pass through' to the occupants inside – damaging them rather than the building itself.Weapons can be made to pass through urban combat buildings to the occupants inside (including fatal chance and damage modifier).
UC.PassThrough
will be ignored (i.e. all shots damage the building).UC.PassThrough=UC.DamageMultiplier
. Defaults to 100% (i.e. no change to the damage dealt by the weapon).UC.DamageMultiplier=UC.PassThrough
chance on targeted buildings. If the projectile has SubjectToTrenches=no
set, and the target building has UC.PassThrough set greater than zero, then the building will be treated as if it had UC.PassThrough=100%
, when hit by this projectile. If SubjectToTrenches=yes
is set (default), then the normal UC.PassThrough
chance will be used when the building is hit by this projectile.SubjectToTrenches=SubjectToTrenches was very much intended for trenches - a Grenadier, for example, would easily be able to drop their grenade into an open trench and would therefore definitely harm the occupants.
NB: The name 'SubjectToTrenches' is misleading if you are not thinking about trenches. This has an effect on all occupiable buildings with UC.PassThrough > 0%.
You can now specify that Battle Bunkers, for example, can be captured by enemy infantry just by having them walk in and garrison the building as if it were their own.
If Bunker.Raidable=yes
is set and the building is empty then the building can be garrisoned by any player's infantry. When another player garrisons the building, ownership is transferred to that player. At this point the building can only be further garrisoned by the player whose troops are inside. If the occupants leave the building then ownership of the building is transferred back to its original owner. Whilst a building is held by a player that is not the "true" owner, that building cannot be sold.Unoccupied player buildings can be garrisoned by enemy infantry.
If you really hit a trench hard enough to destroy it you're only doing one of two things; either you're turning a small hole into a larger hole, or you're making it collapse. Either way, you don't really remove the trench from the battlefield - just render it unusable. It will be easier to re-dig a trench there than on untouched soil, and, on the other hand, you can't just build there like nothing ever happened.Buildings can be converted into a different building on destruction (rubble) and back again on repair by an engineer.
Advanced Rubble is implemented in a similar way to other upgrade systems in Ares:
Rubble.Destroyed
will have the following properties forced upon them:
Capturable=no TogglePower=no Unsellable=yes CanBeOccupied=noThe building will be created with maximum
Strength
. Engineers will always get a repair cursor over the building.Rubble.Destroyed=Strength
.Rubble.Intact=Note that Engineers will not be 'used up' by this repair process - they keep existing outside of the trench. This is very much intended for trenches: an Engineer would not be repairing/rebuilding an entire building, just re-digging a trench so his work would not be too exhausting.
NB: Ares enforces the foundations ofRubble.Destroyed=
and Rubble.Intact=
to match those of the original BuildingType. Custom foundations never match built-in foundations. A fatal error will be raised if you do not comply with this requirement and the game will exit.
A major concept of trenches is the ability for infantry to move from one segment of a trench to the next, on the basis that adjacent segments are connected and, in essence, the same trench.
For example, let's say you have IsTrench=AlliedModern
. You have 2 segments of this trench adjacent to one another and one of these segments is garrisoned. If you select the garrisoned segment and then position the mouse cursor over the adjacent segment, you will get an 'enter' cursor over the adjacent segment. Clicking now with the enter cursor showing will transfer the occupants from the garrisoned segment into the adjacent segment.
NB: There is no special image-handling with IsTrench logic (yet); you will not get nice rows of trenches with proper joins/closed off ends like you do with, say, walls or Laser Fences.Infantry can jump from one urban combat building to an adjacent one.
Introduced in version: 0.1
You can now specify which infantries are allowed to enter into a building.
Introduced in version: 0.2
Building Foundations can now be any shape and size, not just the few predefined options previously available. For example, you can now recreate the old Red Alert Repair Depot foundation. The INI coding is rather complex, so instead of writing it manually, it's recommended to use the Custom Foundation Generator developed by Renegade.
When creating foundations, don't forget to create the outlines.
NB: War Factories are hard-coded to use the unit exit paths from the original game so changing the foundation for these buildings is not recommended. The preferred exit point for a unit exiting a War Factory is hard-coded to be the 11th cell of the Outline. Buildings can have any size and shape of custom foundations.
NB: The Custom Foundation Generator located with the Renegade Project Network is incompatible with Google Chrome, and results in gibberish. Be advised.
Introduced in version: 0.1
The prerequisite system has been enhanced in several ways. New flags are described below, and an issue has been resolved with regard to upgrades as prerequisites (see Type 2 Fixes).Prerequisites:
AlternateArcticArt
functionality used on the Navy SEAL, but for all unit types and all theaters (however this may present challenges for your AI). The theater names are:
PrerequisiteOverride
does not override Prerequisite.RequiredTheaters
.Units can require the map to be a specific theater (desert/snow/lunar/etc).Prerequisite.RequiredTheaters=Introduced in version: 0.1
PrerequisiteOverride
does not override Prerequisite.Negative
.PrerequisiteNegative makes a unit unavailable if a building on the list is owned.Prerequisite.Negative=Introduced in version: 0.1
Prerequisite.Lists
)Prerequisite
flag. For example, if you set Prerequisite=GAPILE,GATECH
and Prerequisite.List1=NAHAND,NATECH
then the unit will be available to any player who owns both an Allied Barracks and Battle Lab, or a Soviet Barracks and Battle Lab (a minimum of one of the prerequisite lists must be satisfied).Prerequisite.List0
, if specified, overrides the existing Prerequisite
flag.Multiple separate prerequisite lists - a unit can require any one of several sets of buildings.Prerequisite.List#=Introduced in version: 0.1
Introduced in version: 0.1
Below is a flowchart of the current prerequisite system. Blue sections are unchanged from the original system. Pink sections have been modified or added by Ares.
You can now create custom generic prerequisite groups like the existing POWER
(PrerequisitePower
), FACTORY
(PrerequisiteFactory
), BARRACKS
(PrerequisiteBarracks
), RADAR
(PrerequisiteRadar
), TECH
(PrerequisiteTech
) and PROC
(PrerequisiteProc
and PrerequisiteProcAlternate
) groups.
To create new groups simply include the new [GenericPrerequisites]
section and add flags with the format GROUPNAME=
(list of BuildingTypes). For example:
[GenericPrerequisites] NAVALYARD=GAYARD,NAYARD,YAYARD etc...
[TechnoType] ... Prerequisites=NAVALYARD ...
If you declare any of the existing groups (POWER
/FACTORY
/BARRACKS
/RADAR
/TECH
/PROC
) then the BuildingTypes specified in the [GenericPrerequisites]
section will be used instead of those specified on the original PrerequisiteGroup
flags (i.e. [UnitType]►POWER=
, if specified, overrides [UnitType]►PrerequisitePower=
). Take note that [BuildingType]►PROC=
does not override or nullify [BuildingType]►PrerequisiteProcAlternate=
.New Prerequisite Groups.GenericPrerequisites
Introduced in version: 0.1
Secret Lab logic had some flaws which have been resolved (see Type 1 Fixes). In addition to those fixes, Secret Lab logic has been extended with the following 'per building' flags. SecretLab=yes
must be set on the building before it will be treated as a Secret Lab and so allow these flags to be considered.
SecretLab.GenerateOnCapture=yes
is set then every time the building is captured it will re-pick the boon to be offered. Defaults to no.SecretLab.GenerateOnCapture=Each possible boon can specify the following flags...
SecretLab.GenerateOnCapture=no
then the boon can still be obtained by a country not on the Secret.RequiredHouses
list (if the original owner's country is on the list).Secret.RequiredHouses=SecretLab.GenerateOnCapture=no
then the boon can still be obtained by a country that is on the Secret.RequiredHouses
list (if the original owner's country is not on the list).Secret.ForbiddenHouses=The boon ultimately offered is picked at random, but only boons that are not presently buildable by the owner of the Secret Lab (civilian in the case of pre-placed buildings without GenerateOnCapture=yes
) are eligible to be picked.
NB: This means that such Secret Labs may appear to disobey Secret.RequiredHouses and Secret.ForbiddenHouses when captured. This is not a bug.Per-building secret lab boons.
Introduced in version: 0.1
Lightning rods attract Lightning Storms and optionally modify their damage.Rudimentary Lightning Rods.
no
.LightningRod=LightningRod=yes
set being hit by lightning get the damage multiplied by this value. Values less than 1.0 reduce damage, larger values increase the damage. Defaults to 1.0
.LightningRod.Modifier=NB: This logic is likely to be expanded in future versions.
Introduced in version: 0.2
These options specify what the Chronosphere should do with an object.Per-unit Chronosphere options.
yes
.Chronoshift.Allow=Chronosphere.ReconsiderBuildings=yes
is set. On the other hand this building will not be considered a building any more and thus will be ignored by a Chronosphere that doesn't affect units. Defaults to no
.Chronoshift.IsVehicle=Introduced in version: 0.2
The game is hard-coded to do certain things with certain unit IDs. Namely the [COW]
, [DESO]
and [FV]
. These units can now have said special properties switched off, and other units can be given these properties if you want.Hard-coded properties of Cows and Desolators can be toggled on/off for any infantry.
The [COW]
was hard-coded to play its idle animation more frequently than other infantry and was also hard-coded to move around randomly. You can now set IsCow=yes
on other InfantryTypes or, indeed, IsCow=no
on the [COW]
.IsCow=
The [DESO]
was hard-coded to have different deploy-weapon firing timing than other units. The change to the timing appears to be related to the unit's art Sequence
although the exact effect has not been investigated. You can now set IsDesolator=yes
on other InfantryTypes or, indeed, IsDesolator=no
on the [DESO]
.IsDesolator=
The [FV]
was the only unit to be checked for the special turret and weapon flags, such as SniperTurretIndex
. With Ares, all VehicleTypes with Gunner=yes
set will read those flags. This means that you can now have multiple types of IFV.Custom IFV clones.
Introduced in version: 0.1
In Ares you can specify the VoiceIFVRepair tag on any IFV unit.
Introduced in version: 0.2
Configure the way units get experience from killing enemies. Veterancy options for Passengers, Airstrike and Mind-Control.
OpenTopped=yes
and Gunner=yes
units to gain experience when a passenger kills an enemy. If this is no
the unit only gets promoted when killing enemies itself. For gunners like the IFV this means the vehicle may not have any passengers to gain experience. Defaults to yes
. Experience.FromPassengers=OpenTopped=yes
or Gunner=yes
unit is trainable and already elite, the passenger shooting will get the experience instead. If this is no
the additional experience will be lost as the vehicle is elite already. Defaults to no
. Experience.PromotePassengers=100%
. Experience.PassengerModifier=no
. Experience.FromAirstrike=Experience.FromAircraft=yes
is set on the designator of an airstrike (like Boris), the experience gain is multiplied by this value. Defaults to 100%
. Experience.AirstrikeModifier=0%
. Experience.MindControlSelfModifier=Experience.MindControlSelfModifier
sum up to 100%. Defaults to 100%
. Experience.MindControlVictimModifier=Mind-controlled open-topped vehicles will not gain any experience from it's passengers if the mind-controller's and the open-topped's players aren't allied. Mind-controllers will not gain experience from killing enemies with a captured allied unit.
Trainable=no
is always honored, no untrainable unit will get any experience. Mind that an open-topped vehicle in the unmodified game also could promote its passengers (but without the mind-control check) if it had Trainable=no
set.
Introduced in version: 0.2
Units can now have custom insignia (chevrons) to represent their veterancy level.
Insignia.Rookie=SAMPLE
would display sample.shp as the insignia while the object is rookie.Insignia.Rookie=Insignia.Veteran=Insignia.Elite=These SHPs - like the original pips.shp - are expected to be in the theater palette. If you specify an insignia, the first frame of its SHP will be drawn. Veteran and Elite objects without the insignia specified will still display the 15th/16th frames of pips.shp as usual.Custom insignia for veteran/elite units.
Introduced in version: 0.1
Objects can now have their own individual parachute animation.
Parachute.Anim
will default to PARACH. The SHP is expected to be in the unit palette.Parachute.Anim=While the animation is playing, the object's falling speed will reach, but not exceed, [General]►ParachuteMaxFallRate=
. After the animation disappears, if the object is still falling then the object's speed will increase to match [General]►NoParachuteMaxFallRate=
. Custom parachute animations.
Introduced in version: 0.1
Rather than always using the cameo palette, individual cameos can now use their own bespoke palette.
In artmd.ini:
Cameo
and AltCameo
must use the same palette), in the format "filename.pal". In rulesmd.ini:
SidebarImage
, in the format "filename.pal".
Defaults to cameo.pal.Custom palettes for cameos.SidebarPalette=NB: The cameo must not use the color at index 0 of the palette. It will be transparent in-game.
Introduced in version: 0.1
Additionally, cameos can be loaded from PCX files instead of SHP.
In artmd.ini:
In rulesmd.ini:
NB: Like other PCX files used by the game, the PCX files used for this feature must have 256 colors and dimensions of 60x48 pixels.
Introduced in version: 0.2
Yuri's Revenge only permits a Spy to achieve one effect on infiltrating, which is determined by a hard-coded order of precedence. Spy infiltration logic has been rewritten in Ares to be more flexible, including some new effects that a Spy can achieve.
All of the following flags default to no or zero.
NB: Must be set to yes for any of the following effects to work...Spy behaviour:Multiple effects can be achieved on a single building.
Radar=yes
set.New effect: Reveal radar (shows you what the enemy can see).SpyEffect.RevealRadar=SpyEffect.StolenMoneyAmount=0
.SpyEffect.StolenMoneyAmount=500
but the enemy only has 200 credits then you will only gain 200 credits from spying the building).Per-building steal money percentage.SpyEffect.StolenMoneyPercentage=In Yuri's Revenge, there were only three types of stealable technology available and these were hard-coded to specific buildings.
Spying [GATECH]
satisfies RequiresStolenAlliedTech=yes
Spying [NATECH]
satisfies RequiresStolenSovietTech=yes
Spying [YATECH]
satisfies RequiresStolenThirdTech=yes
In Ares, spying a building with SpyEffect.StolenTechIndex=2
(for example) satisfies the stolen tech requirements for units that require stolen tech 2.
NB: If you set SpyEffect.Custom=yes
on GATECH, NATECH or YATECH then those buildings will no longer satisfy the old RequiresStolen*Tech flags.
SpyEffect.UnitVeterancy=yes
set will cause all future InfantryTypes that you build to start veteran.Introduced in version: 0.1
The Navy Seal has AlternateArcticArt=yes
set, which causes the game to use the image file seala.shp on arctic maps, instead of seal.shp. This logic works for any InfantryType, however this only works for the arctic theater and only for InfantryTypes.
Image=JUNK
and AlternateTheaterArt=yes
on a unit will make the unit load artmd.ini section [JUNKA]
on arctic, [JUNKD]
on desert, and so on according to theater. If any of those sections do not exist then the unit will fall back to [JUNK]
. So quite similar to AlternateArcticArt
, just automatic and smarter. Defaults to no.Introduced in version: 0.2
In this pre-release screenshot for Red Alert 2, Prism Towers are seen to feed their energy from one tower to another along a whole chain of towers. This, of course, is not possible in the released game (which suggests that this screenshot has been doctored).
Quickstart: If all you want to do is keep existing Prism Towers but extend them to multiple chains like in the pre-release screenshot above, simply set [ATESLA]►PrismForwarding.MaxChainLength=3 or the number of backward-links you would like (-1 for infinite).
PrismForwarding=forward
means that this building can support other towers but cannot attack as a Prism Tower.PrismForwarding=attack
means that this building can attack as a Prism Tower but cannot support other towers.PrismForwarding=yes
means that this building is a fully fledged Prism Tower - it can support other towers or attack.PrismForwarding=no
means that this building is not a Prism Tower and will not be included in any prism networks.[General]►PrismType
, defaults to no for all other buildings.
PrismForwarding=
[General]►PrismSupportMax
.
PrismForwarding.MaxFeeds=
PrismForwarding.MaxNetworkSize
is the total number of towers allowed in the prism network, not including the firing tower itself. Only the firing tower dictates the maximum network size, regardless of what other tower types may be included in the network. -1 means no limit. Defaults to [General]►PrismSupportMax
.
PrismForwarding.MaxNetworkSize=
PrismSupportModifier
- it is the amount of multiplier that this tower will contribute to the firing beam. The multiplier accumulates in a linear fashion (i.e. if there are 2 support towers, each with PrismForwarding.SupportModifier=150%
, then the total multiplier to damage will be 150% + 150% + 100% = 400%. Defaults to [General]►PrismSupportModifier
.
PrismForwarding.SupportModifier=
SupportModifier
multiplier is applied. This can be used instead of the multiplier, or it can be used in conjunction with the multiplier to progressively dial up or down the final damage as more towers are included in the network. Defaults to zero.[General]►PrismSupportHeight
.
PrismForwarding.MyHeight=
This is for advanced users only! This option was only really added for testing purposes and doesn't really enhance the look of the support beam so it is recommended that you ignore this option.
In the original game, the master (firing) tower enlists just one slave (support) tower per frame. Each slave tower enlisted begins charging at that time and the master tower restarts charging. This gives the effect of having the slave tower beams arrive in quick succession, rather than all at once. This effect is barely noticeable in-game except at slow speeds or if the network has a large number of towers.
In Ares, this has been changed so that all adjacent slave towers are enlisted on the same frame. That said, a charge delay has been introduced so that the towers do not all appear to start charging immediately. For each backward-chain in the network, the farthest-forward towers begin charging just that little bit later, to give the effect of the beam travelling along the chain. The amount that each tower will delay starting it's charge for can be specified by PrismForwarding.ChargeDelay
. This delay accumulates for each chain in the prism forwarding network. So, for example, if PrismForwarding.ChargeDelay=2
and you have a prism chain of 3 towers then the farthest tower (tower 3) will begin charging immediately, the middle tower (tower 2) will begin charging after 2 frames and the firing tower (tower 1) will begin charging after a further 2 frames. All towers will be in their charging state on the 4th frame. At firing time, the beams will filter down from the farthest tower to the firing tower.
Due to the new way in which the actual power of the beam is transferred across the prism forwarding network, the minimum ChargeDelay
is 1, so you cannot have the beams all appear simultaneously. However, at normal game speeds, a ChargeDelay
of 1 frame is barely noticeable, unless there is a particularly long chain in the network.
Default charge delay is 1. Increase this to have the support beams spread across the network more slowly (not recommended, as large values tend to lower the quality of the effect).
PrismForwarding.ChargeDelay=
LaserThickness
of 5 - that's 2 higher than the default LaserThickness
of the firing weapon (3). The PrismForwarding.Intensity
flag treats negative values as an absolute addition to the firing beam, so the default value of -2 leaves the behaviour exactly the same as the original game.PrismForwarding.Intensity
value of 1 would cause the farthest beam to have no thickness increase, the next to have an increase of 1, the next to have an increase of 2, and so on. See the section on LaserThickness
for more information regarding the way lasers are drawn.
PrismForwarding.Intensity=
Overpowerable
flag was ignored. Ares allows firing Prism Towers to make use of the overpower logic - you can now have a supported & overpowered Prism Tower at the same time! Note that overpowering a support tower will not have any effect.
[PrismSupport]
weapon was never referenced directly, and the Secondary
weapon of the Prism Tower was only ever referenced to get the Range
that towers could support over.Secondary
weapon of the Prism Tower is not referenced at all. Instead, we use PrismForwarding.SupportWeapon
to explicitly reference a weapon object from which to get additional settings for the support beam.PrismForwarding.SupportWeapon
.
PrismForwarding.EliteSupportWeapon=
The PrismForwarding.SupportWeapon
is not a weapon in the traditional sense and does not actually get fired. Only specific properties of the weapon are used by the Prism Forwarding system, and these are all described below. Note that the default values mentioned are only used in the event that you have not specified a support weapon. If you have specified a support weapon, then the default values are the same as for any other weapon.
It is not recommended to use the existing [PrismSupport]
weapon as a base. If you want to customize the default values then you should use the provided example at the end of the following flag list instead.
Primary
weapon range plus 1 cell (the extra cell ensures that placing a support tower within the attack radius circle of a firing tower guarantees that the support tower is within support range). This is different to the original game.
MinimumRange
.[General]►PrismSupportDelay
.
LaserDuration
, IsHouseColor
, LaserInnerColor
, LaserOuterColor
, LaserOuterSpread
and LaserThickness
) are also respected.IsLaser=yes
, LaserDuration=[General]►PrismSupportDuration
, IsHouseColor=yes
, LaserThickness=3
)
IsAlternateColor
, Bolt.Color1
, Bolt.Color2
and Bolt.Color3
) are also respected.Beam.Duration
, Beam.IsHouseColor
, Beam.Color
and Beam.Amplitude
) are also respected.No other properties of the support weapon are referenced at present, however this could be changed in the future.
Example support weapon:
[NewPrismSupportBeam] Range=9 ;or 8 if you prefer the original ROF=45 IsLaser=yes IsHouseColor=yes LaserDuration=15 LaserThickness=3
The firing origing of the support beam can be set by using the FLH controls on the buliding's art entry - AlternateFLH0
specifies the rookie support beam origin, AlternateFLH1
specifies the elite support beam origin. If either of these are set to 0,0,0 (the default FLH value) then they will fall back to using PrimaryFireFLH
or ElitePrimaryFireFLH
, as appropriate.
Prism Towers should not be allowed to undeploy - undeploying a Prism Tower during a charge sequence can cause an Internal Error.
Extended Prism networks ("Prism Forwarding")Introduced in version: 0.2
Certain units should be destroyed by EMP rather than just being paralyzed. Aircraft is destroyed by EMP instantaneously, but flying TechnoTypes like the Siege Chopper, Kirov and Yuri's Disk do not count as Aircraft. EMP.Threshold
changes this behavior. EMP.Threshold
defaults to inair
, destroying all TechnoTypes that are in the air the instant the EMP hits. Parachuting TechnoTypes do not count as being in the air, yet exceeding the positive threshold will kill them, too.EMP can destroy units.
yes
equals 1
.inair
equals -1
.no
equals 0
.You can create units that only take a certain amount of EMP before failing irrecoverably or flying and floating units that just crash.
Using inair
causes the Siege Chopper not to be destroyed when it is deployed.
Introduced in version: 0.2
Red Alert-like Radar Jammers, where the mere presence of the jammmer within a certain range of the radar causes an outage (i.e. no weapons firing, no deploy, etc. needed), are now possible again (Request #305).
The jamming will only affect the radar functionality of the building, no other functions.
The building will not go offline.
The jammer will only jam the radars in range; should the enemy player have unjammed radars elsewhere on the map, he will continue to have radar through those structures.
The jammer will not work on allied countries, including the player himself.
Ares's jammers also jam the SpySat Uplink.Radar jammers.
Radar=yes
or SpySat=yes
will be jammed.
RadarJamRadius=Introduced in version: 0.2
Originally intended for Yuri's Revenge, with published concept art and even appearing on the original version of the box art, the Chrono Prison was planned as a unit which would suck units into a "containment sphere" in its turret; the turret would grow with each unit sucked in, and if the prison were destroyed, the units would be free again.
Ares includes functionality which can be used to create such a unit, but the implementation is liberal enough to use the parts for a variety of other units. (Original requests: #680 and #1208, original concept art on RADEN)Chrono Prisons.
SizeLimit
defaults to 0, so if you don't set it, abduction of most units will be denied. As usual, PipScale
is required for all transports.Passengers
for buildings was tacked on, it is possible buildings with abducting weapons will not work properly. (Using InfantryAbsorb
/UnitAbsorb
increases your chances.) These malfunctions are considered out of the scope of the request and will not be considered bugs. The same goes for InfantryTypes.Turret=yes
, an appropriate TurretCount
, and you have to use the WeaponX
flags to specify weapons.
PassengerTurret=Introduced in version: 0.2
In Yuri's Revenge, you could use the animation or the unit palette to display animations. Ares lets you to specify custom palettes for animations and projectiles.
You can specify theater-specific palettes by putting three ~ marks to the theater specific part of the filename. Note that if you're using this on projectiles, you have to add the projectile to the [Animations]
list.
Introduced in version: 0.2
In Red Alert 2, the Cloning Vats reverse-engineered any infantry it was sent into. Ares not just reenables this logic but also enables customization.
NB: Currently Grinding=yes
is needed to the reverse-engineering building to have this logic working. Also, reverse-engineered units will ignore Prerequisite=
, PrerequisiteLists
, PrerequisiteOverride
, StolenTech
, both old and new models, TechLevel
, RequiredHouses
and ForbiddenHouses
, but obeying BuildLimit
, PrerequisiteTheaters
, NegativePrerequisite
, Factory=
and Naval=
settings.
NB: While this logic appears to be working, there have also been some minor bugs related to this feature. Be advised.
Reverse-Engineering logic.ReverseEngineersVictims=SpyEffect.UndoReverseEngineer=CanBeReversed=Introduced in version: 0.2
In original Yuri's Revenge, the PowersUnit=
tag logic dictated that there could only be one powered unit, and one building providing power, per side. Ares replaces this tag with PoweredBy=
, which allows each side to have multiple buildings power multiple units.
Introduced in version 0.2
NB: Be advised, if a powered unit is being built when the powers.units building is destroyed, the immobile unit will jam up that WarFactory until destruction or powers.units building is rebuilt.
NB: PowersUnit=
is usable but obsolete in Ares. Therefore features using PowersUnit=
won't be supported by the BugTracker or RenProj in general.
NB: PoweredBy=
can use multiple buildings, but be advised, using a comma to separate multiple buildings will be parsed as "or" rather than "and". There is no "and" capacity.
All the changes/additions that make various tasks easier for the mod author, but don't directly provide any new functionality.
Ares allows you to split your rulesmd.ini file up into separate pieces so as to better organise the various settings. Any INI files you list under the new [#include]
section will be loaded once the main file itself has finished loading. INI files included in this manner can also specify their own [#include]
section to load further INIs. There is no depth limit, and the file loading recursion is depth-first (In English: if the original INI file includes multiple files, and an included file includes other files itself, those second-level files will be included before resuming inclusion of the remaining first-level ones. Recurse again if necessary.)
For example, the [#include]
section you specify in rulesmd.ini may look something like this:
[#include] 1=rules_sw.ini 2=rules_vehicles.ini 3=rules_buildings.ini 4=rules_aircraft.ini 5=rules_infantry.ini
As each INI file is loaded, any flag that is encountered that has already been defined will have its value updated with the newly found value. Using the above include list as an example, if [E1]►Strength=200
is specified in rulesmd.ini, and [E1]►Strength=300
is specified in rules_infantry.ini, then the GI will have Strength=300
in-game.
INI files are taken to be relative to the Red Alert 2 directory. Values in the include list can include subfolders (e.g. 5=MyMod\rules_infantry.ini
). The currently loaded MIXes are also scanned for the files if a loose file of that name cannot be found, however, this only works if you do not specify a subfolder.[#include]
section allows rulesmd.ini to be split up into separate files.#include
Introduced in version: 0.1
In addition to ra2md.csf, the game will now load – stringtable00.csf through stringtable99.csf. These string tables will add to or replace strings that were included in previously loaded string tables.
It is also now possible to name objects in INI code (without having to create a string table entry) by using the NOSTR:
prefix. For example, UIName=NOSTR:Sonar Pulse
will be displayed as "Sonar Pulse". However, the string (including the prefix) cannot exceed 31 characters.Object names can be written directly into rulesmd.ini rather than adding them to the string table.
Introduced in version: 0.1
There are several INI flags that take a comma-separated list of values. The game imposes a maximum length for INI flag values of 128 characters which isn't always long enough for lists – especially with some of the extensions that Ares allows. This limit has been relaxed for flags that take lists – the maximum length for flags that take lists is now 2048 characters.Several INI flag lists have been extended to allow more text to be parsed.
Introduced in version: 0.1
expandmd##.mix files are now loaded earlier, allowing them to override content from langmd.mix.expandmd##.mix can override content from langmd.mix.
Introduced in version: 0.1
The game can now load sounds from WAV files - they no longer have to be packed into a BAG file. Sounds should be referenced in soundmd.ini just the same as always (without the .wav extension).WAV files loose in the Red Alert 2 directory or in the MIX files can now be played, without having to include them in audio.bag.
Introduced in version: 0.1
SHP compression can now be used on mouse.sha. Without Ares, using SHP compression on mouse.sha would result in a garbled mouse cursor in-game.SHP compression can be used on mouse.sha.
Introduced in version: 0.1
NB: Not yet successfully implemented.
The animation displayed for a dying InfantryType when the warhead that killed them had InfDeath=5
used to be hard-coded to the second animation from the [Animations]
list. You can now specify [AudioVisual]►InfantryElectrocuted=
instead. If InfantryElectrocuted
is not defined then the game will search for an animation named "ELECTRO", before finally falling back to the second animation like before.Animation for InfDeath=5
can be overriden using InfantryElectrocuted=
(instead of using the second animation from [Animations]).InfantryElectrocuted=
Introduced in version: 0.1
In order to avoid internal errors, Ares sets this to 71 by default if it's not specified in the terrain control file.Snowmd.ini defaults Medians=71
(this is needed by the Terrain Expansion and also prevents an IE in the Random Map Generator when Urban Ares are enabled).
Introduced in version: 0.1
Numerous enhancements and additions have been made to the user interface – aspects of Yuri's Revenge outside the main in-game battlefield view.
The initial loading screen displayed when first starting Yuri's Revenge now indicates that Ares is active and stresses that it is a test version.
Introduced in version: 0.1
Also, if the country loading screen strings are blank, Ares doesn't generate a black box.
Introduced in version: 0.2
When an Internal Error occurs, the except.txt file that is produced has been modified so as to output more information that is both relevant to mod authors, and also relevant to us, the developers, when debugging the changes and additions introduced by Ares.
except.txt may include a timestamp in the filename to prevent an existing except.txt file being overwritten.
Ares will give you the option to produce a crash dump file to assist in determining the cause of the error. This file will be stored in a Debug folder within the main game directory. Note that the crash dump file is very large and may only be readable by the Ares developers. Like except.txt, this file will include a timestamp in the filename.
If you have turned on debug logging (see Command Line Arguments and Debug Logging) then the game will produce a debug.log file in the aforementioned Debug folder. Like except.txt, this file will include a timestamp in the filename. The log file may contain useful information for helping diagnose problems with your mod or Ares itself.
In the event of an Internal Error, Ares can sometimes tell you what caused the error. For example:
Here, Ares can determine what caused the error.
Here, the error cannot be figured out - Ares offers to create a full crash report.
The crash report has been generated. Ares will close after showing this message.
Some potential errors may now be triggered when loading rather than waiting for the error to crop up in game. Critical errors occur always, less critical errors occur only if you have used the -STRICT command line argument.Improved Internal Error handling and debug logs to assist with debugging mods/Ares.
Introduced in version: 0.1
With Ares active, screenshots are now generated as BMP files rather than PCX. BMP files are smaller in size and are more widely supported.
NB:The BMP files are written in reverse line order. This is perfectly valid but some graphics editors may not support it.Screenshots saved as BMP files rather than PCX.
Introduced in version: 0.1
Ares lets you create random maps using some new map styles – Archipelago terrain and the Desert tileset.
The RMG will now place bridges at random on maps that include rivers.Random Map Generator enhancements:
A new checkbox – 'Place Urban Areas' – allows the user to add an assortment of streets and urban combat buildings at random spots throughout the generated map. The objects placed by this feature can be modified by adding the heading "[URBAN]
" in the rgdmd.ini
file, and adding the following lists after Structure=, Vehicles=
and Infantry=
respectively:
Place Urban Areas option.Bridges over rivers.New terrain style: Archipelago.New tileset: Desert.NB: Urban areas generated in the minimap preview do not always correspond to content generated ingame, especially in Desert maps – this is still being investigated.
In addition, there are reports of this feature not working at all with certain settings. (Known issue: #794)
Introduced in version: 0.1
Ares includes several new commands that can be issued in game via the use of keyboard hotkeys. Note that the labels for these hotkeys are presently hard-coded, unlike the standard Yuri's Revenge hotkeys (which use the string table).
A key can be assigned to save a snapshot of the current game as a YRM map file, which can be edited in FinalAlert 2 YR.
NB: Loading the generated map file in-game causes an Internal Error. The reason for this is not yet known. If you do encounter it then please provide the developers with the crash information.Map snapshot command (saves a YRM map file of the current map).
Introduced in version: 0.1
A key can be assigned to toggle debug.log writing on and off. See Internal Errors / Debugging
Introduced in version: 0.1
A key can be assigned to output some additional information to the debug.log file (see above). The additional information is written to the log each time the key is pressed. This includes information such as AI trigger weighting, so mod authors can see how the AI is performing over the course of a game.
Note that debug.log file writing must be turned on otherwise the data will not be written to the file.Type data dumping command (dump type information to a log file, including AI trigger weights).
Introduced in version: 0.1
Please refer to section "Command Line Arguments" below under the tag:
Introduced in version: 0.1
Introduced in version: 0.1
Various new resolutions have been enabled by default in the Options screen, up to 4096x4096. This is the same effect provided by the AllowHiResModes
setting or the HIRES cheat code, both of which are obsolete in Ares.AllowHiResMods enabled by default.
Introduced in version: 0.1
You can now start a single player skirmish game without any AI players. This is primarily used for testing a mod without having to worry about the AI attacking you.Can play single player skirmish without any computer players.
Introduced in version: 0.1
The player colors shown in the dropdown list in the menu are hardcoded in Yuri's Revenge and they map to hardcoded color schemes in-game. Ares removes the hardcoding and lets you customize all existing colors and even add more of them. Custom Dropdown Colors.
Using uimd.ini you can define up to 16 colors to be shown in the dropdown lists. Replace X
by the numbers from 1
to Count
(without leading zeros):
8
.
Count=
[Colors]
section this slot maps to in-game. Default depends on slot index.
SlotX.ColorScheme=
You can use Observer
instead of SlotX
to define the colors used for observers.
Ares will display all color slots from 1
to Count
. You may redefine any property without having to redefine the entire list.
It is your responsibility to select appropriate values. Ares will not check whether color values and color schemes are unique and distinguishable.
Quickstart: Ares defaults to the original game's values and adds six more definitions not shown by default. To display those new items, set Count=14
. Note that these additional color schemes have been added merely for demonstration purposes and they might collide with the original color schemes.
Slot ID | Menu Color | Color Scheme | Tool Tip | Note | |
---|---|---|---|---|---|
Slot1 | 221,226,13 | Gold | STT:PlayerColorGold | ||
Slot2 | 255,25,25 | DarkRed | STT:PlayerColorRed | ||
Slot3 | 42,116,226 | DarkBlue | STT:PlayerColorBlue | ||
Slot4 | 62,209,46 | DarkGreen | STT:PlayerColorGreen | ||
Slot5 | 255,160,25 | Orange | STT:PlayerColorOrange | ||
Slot6 | 50,215,230 | DarkSky | STT:PlayerColorSkyBlue | ||
Slot7 | 149,40,189 | Purple | STT:PlayerColorPurple | ||
Slot8 | 255,154,235 | Magenta | STT:PlayerColorPink | ||
Slot9 | 148,93,239 | NeonBlue | STT:PlayerColorLilac | For demonstration purposes | |
Slot10 | 115,255,231 | LightBlue | STT:PlayerColorLightBlue | For demonstration purposes | |
Slot11 | 255,239,99 | Yellow | STT:PlayerColorLime | For demonstration purposes | |
Slot12 | 8,195,90 | Green | STT:PlayerColorTeal | For demonstration purposes | |
Slot13 | 189,85,0 | Red | STT:PlayerColorBrown | For demonstration purposes | |
Slot14 | 128,128,128 | Grey | STT:PlayerColorCharcoal | For demonstration purposes | |
(others) | 255,255,255 | LightGrey | NOSTR: | ||
Observer | 96,96,96 | LightGrey | STT:PlayerColorObserver |
Introduced in version: 0.2
To complement the graphical user interface elements Yuri's Revenge relies on a set of hardcoded colors. Customize the colors used to draw texts and borders with these Ares tags.Custom User Interface Colors.
All these uimd.ini tags are RGB colors, that is three comma separated values from 0 to 255.
Please note the special combobox (dropdown list) state for dropdown lists in Observer mode, that is it has its Observer entry selected. Yuri's Revenge uses grey colors and special graphical elements to denote this state. Changing the global values will not change the Observer colors, you'll have to define the specific Color.Observer.*
tags.
167,190,197
.
Color.Border1=
104,122,128
.
Color.Border2=
Color.Observer.Text
. Defaults to 255,255,0
(yellow).
Color.Text=
X
can be one of Button
, Label
(descriptions), List
, Checkbox
, Combobox
(dropdown lists), Observer
(dropdown lists in with Observer selected), Groupbox
(frames), Slider
, or Edit
(text boxes). Defaults to 238,238,238
(light grey) for Observer
, to [UISettings]►Color.Text
otherwise.
Color.X.Text=
Color.Observer.Selection
. Defaults to 255,0,0
(red).
Color.Selection=
X
can be one of List
, Combobox
(dropdown lists) or Observer
(dropdown lists in with Observer selected). Defaults to 98,98,98
(dark grey) for Observer
, to [UISettings]►Color.Selection
otherwise.
Color.X.Selection=
159,0,0
(dark red).
Color.Disabled=
X
can be one of Button
, Label
(descriptions), List
, Checkbox
, Combobox
(dropdown lists), Observer
(dropdown lists in with Observer selected), or Slider
. Defaults to 167,0,0
(dark red) for Button
, to 143,143,143
(grey) for Observer
, to [UISettings]►Color.Disabled
otherwise.
Color.X.Disabled=
Introduced in version: 0.2
Change some menus to hide certain buttons that don't fit your mod like the Campaign and Play Movies buttons. The default button action will be overridden by the action you defined. You are not limited to just disable the button. Menu button customization.
The following buttons can be affected by editing uimd.ini. They default to default
.
The following action values are valid:
Examples:
CampaignButton=hide
will hide the campaign selection button. The menu buttons are reordered automatically so the Skirmish button takes its place.PlayMoviesButton=hide
.MoviesAndCreditsButton=credits
to show your credits roll from the main menu. This works best if you change its caption also.ViewCreditsButton=message
and set the string TXT_VIEWCREDITSBUTTON_MSG to your short copyright message.Introduced in version: 0.2
With Ares you can have up to four campaign buttons on Yuri's Revenge's campaign selection menu and customize all of them in uimd.ini. Third Button / Campaign Button Customization.
You can customize all campaign buttons using these uimd.ini tags by replacing X
by the numbers from 1
to 4
:
battle.ini
started by clicking the image button. To hide a button set CampaignX=no
. Defaults to ALL1
, SOV1
, TUT1
or no
respectively.
CampaignX=
fsalg.shp
or fsslg.shp
respectively.
CampaignX.Image=
fsalg.pal
, fsslg.pal
or fsbclg.pal
respectively.
CampaignX.Palette=
STT:AlliedCampaignIcon
, STT:SovietCampaignIcon
or STT:CampaignAnimTutorial
respectively.
CampaignX.Subline=
CampaignX.Subline
.
CampaignX.Tooltip=
Ares defaults to the original game's values so you don't have to change anything. To display a third button just add the above tags for Campaign3
.
Three buttons are arranged in a triangle formation: one centered in the upper row, two in the lower one. If you want to have an upside-down triangle skip Campaign3
and use Campaign4
instead. Four campaigns are always ordered left to right, top to bottom.
To control the sound that is played when the player hovers over the image see HoverSound=
on Campaign List.
Quickstart: If you want to have a third campaign button to start the tutorial mission, set [UISettings]►Campaign3.Image=fsbclg.shp. You will have to rework that image, as there is no Yuri's Revenge style version of it.
Introduced in version: 0.2
If you have more campaigns than the game's default Campaign Selection menu supports you can switch to a campaign list as in Tiberian Sun. Ares supports an arbitrary amout of campaigns. Every non-debug battle listed in battlemd.ini will show up in the list under the name defined by Description=
. Campaign List.
Enable the campaign list in uimd.ini:
DebugOnly=yes
set.
ShowDebugCampaigns=
You can customize the campaigns in the list by editing battlemd.ini:
AlliedCampaignSelect
, SovietCampaignSelect
, and BootCampSelect
for the original in-game campaigns. The selection menu plays them if the mouse hovers over the respective campaign's image.
HoverSound=
Introduced in version: 0.2
Yuri's Revenge always draws single player campaign load screen texts in red. Ares uses the correct values, inferred by the mission name prefix. You can override these defaults for each mission using this new missionmd.ini tag.Campaign load screen text color customizable per mission.
[Colors]
list. For example, LoadScreenText.Color=AlliedLoad
.
LoadScreenText.Color=
Introduced in version: 0.2
This is for advanced users only! By default, most of the game's drawing surfaces are allocated in system memory, but two of them (frequently used destination buffers) default to GPU memory.
Techniques used by the game to draw images to the screen require the former ones to be copied to the latter ones, and this operation is fairly expensive. Ares allows you to allocate those surfaces in system memory, which means the source to destination copying is almost free.
In ares.ini you can add the following section:
[Graphics.Advanced] DirectX.Force= (hardware|emulation) Surface.$surface.Memory= (System|VRAM) Surface.$surface.Force3D= (true|false)
...where $surface is one of Composite, Alternate, Hidden, Sidebar or Tile.
NB: enabling Force3D forces Memory into VRAM mode.
NB: Ares.ini is not intended to be included or edited by mods, as this file may include various other settings in future that the end-user wishes to set themselves. Launch Base does not permit mods to include ares.ini, and also provides its own interface to allow the user to modify the above graphical settings.Graphics/Surface drawing options can be configured by the user (advanced users only).
Introduced in version: 0.1
Unfortunately, Ares will not simply "work" without changes to the original game files. The reason for this is that maintaining compatibility with the original game files whilst still offering the enhancements that are Ares' raison d'être would make implementing Ares features (both for us, the developers, and you, the mod author) considerably more complex, ultimately wasting time that would be better spent on other tasks.
This section details the modifications you'll most likely need to make to ensure your mod does not receive any unexpected changes from simply being run whilst Ares is active.
In future these changes will be provided as extensions to the standard files that are included with the YR Unofficial 1.002 Mini-Patch Developer's Pack.
This animation needs to have its last frame removed if you don't want to see the previously unused skull image. See IvanBomb.FlickerRate.
Ares is being developed by:
Documentation by DCoder, Marshall, Nighthawk and Renegade. If there are any omissions or errors in this document, please file a bug under the category "Wrong Information" or "Outdated Information", whichever fits better.
If you feel something is not explained clearly enough, please post on the RenegadeProjects Network Forums and let us know where the issue lies.
For creating this great game in the first place. Although you guys really should've fired half of your coding staff (out of a cannon, into the sun).
For developing Launch Base and the YR Unofficial 1.002 Mini-Patch (UMP), whipping this documentation into shape and developing Ares' Prism Forwarding feature.
For hosting Ares itself, performing the duties of Project Manager, creating the HTML version of the Ares manual and, of course, contributing code and helper tools.
For devoting their free time to testing Ares and giving us feedback - this enables us to make Yuri's Revenge and Ares even better.
This is a list of new flags/sections only. Existing flags/sections whose functionality has changed are not listed here (except in extreme cases).
Below is a list of everything that Ares brings to Yuri's Revenge as a series of quick bullet points.
23 of 59 NPatch features are presently unique to NPatch (this is an approximation and subject to interpretation).
53 of 86 Ares features are unique to Ares (again, this is an approximation and subject to interpretation, however we have tried to be strict in only counting totally unique features).
This does not count the Bug Fixes section (NPatch documentation does not go into detail about the extent of bug fixes, if any).