Backporting droid stuff

Can WZ 3.2 droid properties be backported to WZ 3.1? Let the pondering commence....

Note: For own-built droids, we can just hook in to buildDroid() and addDroid() to get accurate details for most properties, with .cost being the main exception. The table below is more about other player's droids where we have far less info to hand.

PropertyNotes
bornWill use first sighting time.
droidType

Super-cyborgs need to appear as DROID_CYBORG, not DROID_WEAPON.

Might be able to work out some info from health/armour/thermal properties. Also name, particularly with cyborgs.

What to do with scav units?

When NB wants to build droids, will need to try and work this out based on components - primarily turret1 and propulsion, but sometimes body (eg. for either cyborgs or transports).

groupEven if droid not in a group, the group property should exist (with value null) – easy to do.
armedDeprecated in 3.2, but can use this field in 3.1 to determine if droid is VTOL, and also give rough estimate of armed state in .weapons[]
isVTOLIf .armed != null, then its a VTOL, can also use isVTOL() if the droid is not dead.
costBurr. *run for the trees*
isRadarDetectorPossibly, based on droid name.
isCBPossibly, based on droid name.
isSensorPossibly, based on droid name or DORDER_OBSERVE.
rangeStart with min range, then improve accuracy during attacks (dist between attacker and victim).
canHitAirPossibly, if it attacks one of our VTOLs, or by droid name.
canHitGroundPossibly, if it attacks one of our ground/hover units or structures, or by droid name.
hasIndirectDitto. Also by spotting DORDER_FIRESUPPORT.
bodyMight be able to work out some info from health/armour/thermal properties and also droid name.
propulsion

VTOL should be trivial to determine (.armed property, isVTOL() or transporter).

Hover much more difficult – will need to identify a water tile then do droidCanReach() to see if droid is a hovercraft. Alternatively, by droid name.

Land propulsions very difficult to determine – maybe by name, other than that it's guesswork.

cargoSizeSuggest this property is skipped - transports painful to work with pre-3.2
cargoCapacitySuggest this property is skipped - transports painful to work with pre-3.2
cargoSpaceSuggest this property is skipped - transports painful to work with pre-3.2
cargoCountSuggest this property is skipped - transports painful to work with pre-3.2
bodySizeMight be able to work this out if we know .body. Alternatively .health, .thermal and .armour might give clues.
weaponsOnly way I can think of is to look at droid name and try and determine weapon id (only one turret can be identified this way). The .lastFired property will be a static value, but maybe update if the droid attacks us. The .armed will be fed through from the main .armed property.