Note: This is a work-around until Selectable can be moved to Mods.Common, which is when the voice extensions should be moved back to ActorExts.
Pulled phrase check before foreach in PlayVoice ActorExts.
Removed superflous actor parameter from PlayVoice/PlayVoiceLocal.
Simplified PlayVoice extensions.
variant is no longer customisable, as all current usages use self.Owner.Country.Race anyway.
The actor and smudge definitions are now stored
as raw MiniYamlNodes in the map. It is now the
responsibility of the consumers to parse these
into real objects.
Reduce code duplication by extracting a common class to deal with spatial partitioning of actors, and use some (cached) delegates to reduce duplication further without affecting performance too much.
Speed up updates and removal of actors by caching their location so we only need to update or remove them from bins they are actually in (typically very few), compared to having to check every bin for removals which is much more work in comparison.
Speed up checking for actors inside a region by checking if items are located entirely within the bin they are located in. If so, we don't need to add them to the hash-set for de-duplication purposes which is fairly expensive.
To resolve the ambiguity introduced when the introduction of isometric maps meant that cell and map coordinates were no longer equivalent, a new type has been introduced so they can each be represented separately.
Changes included:
Warhead code split out of weapon code and refactored.
Warhead functionality now split into several classes, each handling one effect/impact.
Additional custom warheads can now be defined and called via yaml.
Custom warheads inherit the abstract class Warhead,
which provides target check functions.
Custom warheads have to define their own impact functions,
and can also define their own replacement for check
functions.