An aura can be specified for an entity by creating an aura json like this:

{
    "type": "range",
    "radius": 60,
    "affects": ["Worker"],
    "modifications": [
        {"value": "Builder/Rate", "multiply": 1.15}
    ],
    "auraName": "Builder Aura",
    "auraDescription": "Buildings construct 15% faster within his vision.",
    "overlayIcon": "art/textures/ui/session/auras/build_bonus.png",
    "rangeOverlay" : {
        "lineTexture": "outline_border.png",
        "lineTextureMask": "outline_border_mask.png",
        "lineThickness": 0.075
    }
}

The type can currently be range, global, player, formation, garrison or garrisonedUnits. The range type also requires an extra Radius (as in the example), and all entities in this radius will be affected by the aura. Global auras work on all entities (like technologies, but the modifications are reverted when the entity with an aura dies). Global and range auras also affect the unit itself when applicable. Player auras affects the Player entity. Formation auras affect all members of the same formation as the unit. The garrison aura has an effect on the garrisoning structure (arrows the structure shoots, speed of a ship, ...). The garrisonedUnits aura influences the units that are visibly garrisoned (giving units on a wall extra armor f.e.).

affects determines the classes it affects, listed as ["Class1 Class2", "Class3"], which means the target needs to have (Class1 AND Class2) OR Class3 to benefit from the aura.

affectedPlayers defines on which players it will act (a hero might cause the enemy to have less armour), listed as ["Value1", "Value2"]. The possible values are Player (yourself), Ally, ExclusiveAlly, MutualAlly, ExclusiveMutualAlly or Enemy. This value defaults to [ "Player" ] .

modifications are a list of modifications that will be applied, similarly structured as with technologies. A modification consists of a key, which presents the name of the value that will be changed, and either add or multiply to resp. add or multiply the value of the affected entity with something. Note that the actions should be reversible (they are reversed when the aura carrying entity is killed), so multiplications with 0 are not allowed. All other values are supported.

The list of modifiable unit properties is the same as with the Technologies (see TechModifications).

auraName is mandatory, it will appear in various UI elements.

auraDescription is not mandatory, it will appear in various UI elements.

overlayIcon is the icon displayed above all affected entities.

requiredTechnology is a technology required for the aura to be available.

stackable is an optional boolean which allows the aura to be stackable when set to true.

rangeOverlay is an optional Object for auras with a range type. If present in the aura json, it must consist of the properties "lineTexture", "lineTextureMask", and "lineThickness". The values for both "lineTexture" and "lineTextureMask" must be a string of the full filename of a png file under binaries/data/mods/public/art/textures/selection/. "lineThickness" must be a number (typically 0.05 to 0.3). If rangeOverlay is not present for an aura with a range type, the range visualization for that aura will use default values for these three properties (currently "outline_border.png", "outline_border_mask.png", and 0.2 respectively).

Last modified 4 months ago Last modified on May 22, 2017, 9:45:36 PM