An aura can be specified for an entity by creating an aura json like this: {{{ #!js { "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 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).