Due to the length of the TOC, it is hidden by default. Click here to expand 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.
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.
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
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
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 was 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.
Additionally, BuildingTypes with Hospital=yes
or Armory=yes
limit their special effects to the current Ammo they have, and previously those structures were hardwired to never reload their ammo. This restriction has been lifted, so you might need to revise the balance of such structures.Infantry and buildings can now reload ammo correctly.
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 Nuke.Sound=
(which defaults to [AudioVisual]►DigSound=
).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 GTWEAP*.
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.
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 in various ways: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 targets for 150 frames, 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.
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 InfantryTypes unless Cyborg=yes
is set (in which case, ImmuneToEMP
defaults to no.
ImmuneToEMP
defaults to no for VehicleTypes and AiracraftTypes 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=
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=PowerToggle
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.PowerToggle 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
Introduced in version: 0.1
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=RandomSelectionWeight
value by the sum of all Multiplay=yes
countries' RandomSelectionWeight values. Defaults to 1.RandomSelectionWeight=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=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
IronCurtain.Duration=-99999
).IronCurtain.Duration=This feature works with CellSpread
to affect multiple targets.
NB: No other warhead properties (e.g. Verses) affect the application of this effect.Weapons can apply the Iron Curtain effect for a specified number of frames (stackable).
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
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
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
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 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.
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:
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
Setting Action=Custom
on a super weapon will allow 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
The firing of a super weapon can now add or subtract credits from the firing player's cash reserve.
NB: Players are not prevented from firing the super weapon if they do not have sufficient funds for the Money.Amount being subtracted.Money deductable when firing a superweapon.
Introduced in version: 0.1
Introduced in version: 0.1
Introduced in version: 0.1
NB: There is a known bug that can cause the EVA events to be played incorrectly.Custom EVA events.
Introduced in version: 0.1
Type=ParaDrop
The original flags that control the units provided by the generic paradrop super weapons (AllyParaDropInf, SovParaDropInf and YuriParaDropInf) 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 2 new side-specific flags (ParaDrop.Types and ParaDrop.Num) that override the old flags. These new flags will accept VehicleTypes as well as InfantryTypes.
[Side]►ParaDrop.Types=E1,MTNK,FV [Side]►ParaDrop.Num=6,2,1
NB: Because the new flags are side-specific, this means there is still a limit of 1 unique paradrop set per side. This will be addressed in the future.ParaDrops can include vehicles.
Introduced in version: 0.1
Type=SpyPlane
Introduced in version: 0.1
Type=Nuke
[AudioVisual]►DigSound=
.Custom nuke siren sound.Nuke.Sound=Introduced in version: 0.1
NB: The AI cannot use the new SuperWeapon Types yet. Control similar to RockPatch's AITargetingType=
will be added soon.
Type=SonarPulse
The Sonar Pulse is a variation of the original Red Alert Sonar Pulse - it can only be fired into water cells and will cause any cloaked units situated on a water cell to temporarily decloak.
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.New super weapon type: SonarPulse (briefly reveals cloaked units).
Introduced in version: 0.1
Type=GenericWarhead
The Generic Warhead super weapon will detonate the specified warhead at the target cell.
CellSpread
on the warhead to make sure the desired targets (especially InfantryTypes) are affected.GenericWarhead.Warhead=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.
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.New super weapon type: UnitDelivery (create unit(s) at target cell).
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.
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.
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 ClickRepairable=no CanBeOccupied=noThe building will be created with 99% of its maximum
Strength
. This, combined with ClickRepairable=no
, ensures that Engineers will get a repair cursor over the building.Rubble.Destroyed=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: You should ensure that the in-tact trench and the collapsed trench both have the same Foundation. Otherwise, if the necessary cells are not clear, the replacement BuildingType will not get created.Buildings can be converted into a different building on destruction (rubble) and back again on repair by an engineer.
Known bug: #850
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
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.
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 CONYARD=GACNST,NACNST,YACNST AIRFORCE=GAAIRC,AMRADR
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. [GenericPrerequisites]►POWER=
, if specified, overrides [General]►PrerequisitePower=
). Take note that [GenericPrerequisites]►PROC=
does not override or nullify [General]►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
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
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
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=
Secondary
weapon range (like the original Prism Tower logic), or the Primary
weapon if the building has no Secondary
weapon. If the building has neither weapon then the default SupportRange
is zero.
PrismForwarding.SupportRange=
[General]►PrismSupportDelay
.
PrismForwarding.SupportDelay=
[General]►PrismSupportDuration
.
PrismForwarding.SupportDuration=
[General]►PrismSupportHeight
.
PrismForwarding.MyHeight=
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/down the final damage as more towers are included in the network. Defaults to zero.You can input your own values into the Prism Forwarding spreadsheet to see the effect this has on the damage dealt by your prism networks.
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.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.Prism Towers are not 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
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 WAV files that are loose in the Red Alert 2 game directory – they no longer have to be packed into a BAG file. Sounds should be referenced in audiomd.ini just the same as always (without the .wav extension).WAV files loose in the Red Alert 2 directory 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
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
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.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.
NB: these options are not affected by the "Surprise Me" function for the moment.
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 are hard-coded to the following list for the time being:
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
A key can be assigned to have the AI take control of your base so that you can observe what the AI does. This is for testing purposes only.
NB: You must let the AI assume control of your base before you deploy your MCV, otherwise the AI will do nothing.
NB: This hot key is available in multiplayer at present however this will most likely be changed in future.
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
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.
30 of 59 NPatch features are presently unique to NPatch (this is an approximation and subject to interpretation).
51 of 84 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).