====== Loggy's Auras reverse engineering notes ====== (from 5.51b executable) "Aura value" means the size of the aura ability. So for sleep cloud (10) the aura value would be 10. All auras are checked every 320 [[:ticks]]. ^ Aura ^ Primary Effect ^ Notes ^ | Poison cloud | Eff2007 Dmg2 (poison cloud with 1 damage ticks with lingering 2) | | | Heat / UWHeat | Damage 4, eff variable (makes clouds with lingering 1 or 2 that do 2 AN heat fatigue damage) | Normal heat and UWHeat values are additive in overwater provinces. Heat scale is added to aura value. If raining, -2 to aura value. If final aura value is 6 or less, clouds generate with lingering 1 instead of 2. | | Chill | Damage 5, eff variable (cloud with lingering 1 or 2 that do 2 AN cold fatigue damage) | Cold scale is added to aura value. If some condition I don't understand, extra +2 to aura value. If final aura value is 6 or less, clouds generate with lingering 1 instead of 2. | | Mind Slimer | Slowness, no effect on mindless | | | "Fatigue Sacred Aura" (unit effect 326) | 15AP fatigue damage to sacreds only | Unknown vanilla source. Generates the same green/cyan particles as sleep aura. | | Sleep aura | Sleep, MR neg, no effect on friendlies/mindless/undead/inanimates | MR check is considered to be from a nature source | | Disbelieve | 999 AN disbelieve damage, MR neg (to illusions only) | MR check is considered to be from an astral source | | Soul Vortex | 1 AN life steal, MR negates, no effect on inanimate | Aura value generated by the spell is always 8. MR check is considered to be from a death source | | [[:Plague Carrier]] | Disease, MR neg | MR check is considered to be from a death source | | Contagious aspect of Plague spell effect (affliction 8) | Plague, MR neg, no effect on inanimate | This aura always has an aura value of 2. MR check is not associated with any particular path | | Fear | Fear, magnitude floor(aura value/5) + 3, enemies only | Does nothing if aura value is less than 5. Providing that is the case, the aura value is increased by 6. | With that out the way, time to move on to... === Actual Aura Mechanics === In all cases, if the unit is somehow off the field (in a square where either coordinate is less than -1), do nothing. If the aura value is over 600, it follows different rules: - Calculate the size of the battlefield in squares (this is normally 80x40 so 3200 squares total) - If the aura value is less than 666: number of pulses is given by: - X = floor(squares/6) + (squares >> 31) [533 for a normal sized field] - final = (X >> 4) - (X >> 31) [33 for a normal sized field] - Otherwise: do the same, but final is instead (X >> 3) - (X >> 31) [66 for a normal sized field] - Each pulse hits a completely random square on the battlefield. For normal auras: - If the aura value is less than or equal to a random number 0-23, do nothing. - Otherwise, add one to the pulse count and subtract 24 from the aura value. If a random number 0-23 is less than the new aura value, add another pulse. Repeat this step until a pulse is not added. - With the number of pulses calculated, all that remains is to place them. - If this is one of the first three pulses or the (now reduced) aura value is less than 10, pick a random square with a max distance of 1 (diagonals allowed). Otherwise, the max distance is 2. Repeat until the calculated number of pulses have been generated. Each time, set the origin coords to where the last pulse appeared.