Airstrike Voices
~~~~~~~~~~~~~~~~

`Ares` supports to customize airstrike related voices. These flags can be defined on the designator unit like Boris and the aircraft (the designator's flags take precedence). If a flag isn't set on any of those, the respective `[AudioVisual]` flag is used. To disable an airstrike voice, set it to an empty sound.

:[TechnoType]VoiceAirstrikeAttack= (soundmd entry): Specifies the voice played when the airstrike is called in and the team enters the map.
:[TechnoType]VoiceAirstrikeAbort= (soundmd entry): Specifies the voice played when the designator unit is killed before the aircraft had a chance to fire.
Only un-powered units sparkle. Deactivation because of EMP and Operator logics does not make the unit sparkle any more.
Made the dimming effect for deactivated voxel units customizable

[AudioVisual]DeactivateDimEMP= (float, defaults to 0.8)
[AudioVisual]DeactivateDimOperator= (float, defaults to 0.65)
[AudioVisual]DeactivateDimPowered= (float, defaults to 0.5)

The first applicable value is used, the other values will not be considered. That is, if an unpowered unit is under EMP, the DeactivateDimEMP is used. This is purely cosmetic and the order may change in the future. A value of 1.0 disables the dimming effect. Supported range is 0.0 to 1.0, though higher values might also work to brighten the unit.

This only affects UnitTypes and only voxels.
Added Firestorm's AV tag

[Projectile]AV= (bool, defaults to AG): Whether this projectile can be fired at vehicles (UnitTypes). Opposed to TS, AV does not override AG and AA, and it can be defined independently of the two.
Splits missile logic and Airburst enhancements

The split weapon of the Cyborg Reaper from Tiberian Sun fired two missiles. Each of them splits in mid-air after they gained some altitude, releasing two new projectiles each, which would either aim for the original target, retarget to one of the units nearby (range 2) or a random cell in a 7x7 area.

[Projectile]Splits= (boolean, defaults to no): Whether the projectile will split into a number of other projectiles defined by Cluster and AirburstWeapon. Can be combined with Airburst.

[Projectile]RetargetAccuracy= (float, defaults to 0.0): The probability that a split cluster will aim for the same target the original projectile was shot at. The higher the value, the less likely it is for the split projectile to chose another target. Valid range is 0.0 to 1.0.

[Projectile]AirburstSpread= (float, defaults to 1.5): The range the airburst effect covers. Each cell in range will be targeted by the AirburstWeapon. Requires Airburst=yes. Cannot be combined with Splits=yes.
Fix for inefficient smoke animation lookup

When aircraft smoke because of heavy damage, the animation is hardcoded, but still looked up every time. When an aircraft is destroyed, it creates many smoke animations. This fix gets rid of the lookup. Additionally, it makes the smoke customizable per AircraftType.

[AircraftType]Smoke.Anim= (animation type, defaults to SGRYSMK1): The animation created as smoke.

[AircraftType]Smoke.ChanceRed= (integer, defaults to 10): The chance of a heavily damaged aircraft creating a smoke animation each frame.

[AircraftType]Smoke.ChanceDead= (integer, defaults to 80): The chance of a crashing aircraft creating a smoke animation each frame.
Related issue #896160: Passable structures

[BuildingType]IsPassable= (boolean, defaults to no): Whether the cells the building occupies can still be entered or stood on by vehicles and infantry.

This tag can be considered a replacement for the Firestorm tag IsLimpetMine.
Hunter Seeker added

Side specific Hunter Seeker units:
[Side]HunterSeeker= (VehicleType): The unit used as Hunter Seeker for the SW firer's side. Replaces GDIHunterSeeker= and NodHunterSeeker= from Tiberian Sun. Set this to a vehicle type with the fly locomotor.

Global hunter seeker control:
[SpecialWeapons]HSBuilding= (list of BuildingTypes): Buildings that can launch Hunter Seekers.
[General]HunterSeekerDetonateProximity= (integer): Distance to target in leptons below which the Hunter Seeker will detonate. Tiberium Sun uses 150.
[General]HunterSeekerDescendProximity= (integer): Distance to target in leptons where the Hunter Seeker will start to descend. TS uses 700.
[General]HunterSeekerAscentSpeed= (integer): Speed value used while rising to a higher flight level. TS uses 40.
[General]HunterSeekerDescentSpeed= (integer): Speed value used while going down to a lower flight level. TS uses 50.
[General]HunterSeekerEmergeSpeed= (integer): Speed value used when ascending from the launch site. TS uses 6.

The last five values can be overridden by TechnoTypes:
[TechnoType]HunterSeeker.DetonateProximity= (integer)
[TechnoType]HunterSeeker.DescendProximity= (integer)
[TechnoType]HunterSeeker.AscentSpeed= (integer)
[TechnoType]HunterSeeker.DescentSpeed= (integer)
[TechnoType]HunterSeeker.EmergeSpeed= (integer)

Only the Fly locomotor makes use of these values.

Ignore certain target types:
[TechnoType]HunterSeeker.Ignore= (boolean, defaults to no): Whether the Hunter Seeker will ignore targets of this type.

Type=HunterSeeker super weapon added, with the following settings:
[SuperWeaponType]HunterSeeker.Buildings= (list of BuildingTypes): Overrides the global HSBuildings list.
[SuperWeaponType]HunterSeeker.Type= (VehicleType): Overrides the side-specific HunterSeeker unit type.
[SuperWeaponType]HunterSeeker.RandomOnly= (boolean, defaults to no): Whether or not every object on the map has an equal chance of being targeted by the Hunter Seeker. If this is no, non-civilian targets are preferred for human players in multiplayer games. If no preferred target is found, a random target is chosen.

Default properties:
EVA.Detected=EVA_HunterSeekerDetected
EVA.Ready=EVA_HunterSeekerReady
EVA.Activated=EVA_HunterSeekerLaunched
SW.AITargeting=NoTarget
SW.AffectsHouse=enemies
SW.AffectsTarget=all
Text.Ready=TXT_RELEASE
Recreated the Drop Pod SW

This re-implements the Drop Pod SW (Type=DropPod) known from Firestorm. Firestorm had types E1 and E2 hardcoded, which is not recreated. Thus, don't forget to set the types.

Global tags:
[General]DropPodTypes= (list of TechnoTypes): The types to chose from. Each type has an equal chance of being selected. You can add types more than once. Only infantry is supported.
[General]DropPodMinimum= (integer): The minimum number of Drop Pods being generated. Defaults to 0.
[General]DropPodMaximum= (integer): The maximum number of Drop Pods being generated. Defaults to 0.

SW specific tags:
[SuperWeapon]DropPod.Types= (list of TechnoTypes): The types to chose from. Each type has an equal chance of being selected. You can add types more than once. Only infantry is supported. Defaults to [General]DropPodTypes.
[SuperWeapon]DropPod.Minimum= (integer): The minimum number of Drop Pods being generated. Defaults to [General]DropPodMinimum.
[SuperWeapon]DropPod.Maximum= (integer): The maximum number of Drop Pods being generated. Defaults to [General]DropPodMaximum.
[SuperWeapon]DropPod.Veterancy= (float): The veterancy level the units will start at. Values between 0 and [General]VeteranCap are valid. Defaults to 2.0 (elite).
Drop Pod Trailer speed improvement and customization

[General]DropPodTrailer= (Animation): The animation used as smoke trailer for drop pods. Defaults to SMOKEY.

The animation is retrieved only once, not once for each drop pod every six frames. The smoke trailer is created even if the drop pod does not have a [General]DropPodWeapon attached.

If the weapon used in [General]DropPodWeapon does not have at least one valid Report sound set, the game will not crash any more.
Added a HouseClass parameter to CanFireAt for no apparent reason.
Replaced manual loops by ranged for loops, which reverses the order. Shouldn't matter.
Removed xcompile include.
Code reformatting for the NewSWTypes.
Override specifiers to all NewSWType methods.
No need to copy the section names.
GetCellFloorHeight update.
CoordinatesLegal update
IsWithinUsableArea update
SelectDamageAnimation update