I don’t understand what this could be and whether it should be corrected, since BIODRONE, like all robots, is immune to any form of telepathy and stunning, that is, it is impossible to capture it.
OK, this will be a long post, but I want to answer all potential questions.
Question 1: why did we add this validation?We added the validation, because issues/crashes with live unit recovery were constantly reported by players and were hard to identify, both for modders and for developers.
The validation should help identify potential typos, mistakes and oversights.
Question 2: do I need to fix these validation errors? Will the game still start if I don't?OXCE will still start, potential errors will be reported only in the log file.
If we could clearly identify the intention of the modder, we would create a blocking validation, this is however not possible in this case.
It's the modder who needs to check it and decide how to fix it... because there are multiple different solutions.
Question 3: what does this validation even do?The validation checks whether the attributes related to live unit recovery are configured consistently.
To simplify the explanation: there are 2 competing attributes:
1. attributes saying if the unit can be recovered alive or not
2. attribute saying what should be recovered, in case a recovery is attempted
There are 4 combinations:
Case A (YES-YES): attributes say that a live unit is recoverable, and a recovery item is defined.- this is the normal scenario, everything is fine, and there is nothing written in the log
Case B (NO-NO): attributes say that a live unit is not recoverable, and a recovery item is not defined.- this is also a normal scenario, everything is fine, and there is nothing written in the log
Case C (YES-NO): attributes say that a live unit is recoverable, but a recovery item is not defined.- this is wrong and the game will 100% crash, if it tries to recover such a live unit
- it is of course possible that the modder made sure that a unit cannot be recovered by some other means... for example by not using the unit at all, or by using it only as a civilian faction... but we can't know that and it's safer to define the attributes consistently also in these cases
- the validation will identify such cases and will report a message in the log file saying something like this:
[21-01-2022_09-12-36] [INFO] Supressed Error for 'CIVILIAN_CASTAWAY_GAL': This unit can be recovered (in theory), but there is no corresponding item to recover.
The proper fix is to either make the live unit not recoverable (i.e. convert it into case B) or define the recovery item (i.e. convert it into case A).
Case D (NO-YES): attributes say that a live unit is not recoverable, but a recovery item is defined.- this will not crash the game (at the moment), but it may crash the game in the future (when more features are added for example)
- the problem is again the consistency and the inability of the developers to know if the modder wanted this live unit to be recoverable or not (we still can't read minds
)
- the validation will identify such cases and will report a message in the log file saying something like this:
[21-01-2022_09-12-36] [INFO] Supressed Error for 'STR_LOST_SOUL_MALE': This unit has a corresponding item to recover, but still isn't recoverable. Reason: (the first 'corpseBattle' item of the unit's armor is marked with 'recover: false'). Consider marking the unit with 'liveAlien: ""'.
or this:
[21-01-2022_09-12-36] [INFO] Supressed Error for 'STR_FIELD_GUN_TERRORIST': This unit has a corresponding item to recover, but still isn't recoverable. Reason: (the unit is marked with 'capturable: false'). Consider marking the unit with 'liveAlien: ""'.
The proper fix is to either make the live unit recoverable (i.e. convert it into case A) or un-define the recovery item (i.e. convert it into case B).
In most cases, conversion to case B is what needs to be done, the message even suggests it by saying "Consider marking the unit with 'liveAlien: ""'."; but it is possible that converting to case A is also what the original intention was.
Again, only the modder can say for sure.
Question 4: what are the attributes that say whether a live unit is recoverable or not?There are 2 main attributes, that are considered during the validation:
#1. the `recover` flag on the item that is used in `corpseBattle` attribute on the unit's armor
Example for a Sectoid (1x1 unit):
armors:
- type: SECTOID_ARMOR0
corpseBattle:
- STR_SECTOID_CORPSE # <----- this item is checked
items:
- type: STR_SECTOID_CORPSE
battleType: 11
recover: true # <----- this flag is checked
recoveryPoints: 5
Example for a Reaper (2x2 unit):
armors:
- type: REAPER_ARMOR
corpseBattle:
- REAPER_CORPSE_1 # <----- this item is checked
- REAPER_CORPSE_2 # <----- NOT relevant
- REAPER_CORPSE_3 # <----- NOT relevant
- REAPER_CORPSE_4 # <----- NOT relevant
corpseGeo: STR_REAPER_CORPSE # <----- NOT relevant
items:
- type: REAPER_CORPSE_1
battleType: 11
recover: true # <----- this flag is checked
recoveryPoints: 3
We recommend using this method when converting from case C/D to case A/B.
#2. the 'capturable' flag on the unit
An example of this could be a vanilla Cyberdisc, which is not capturable.
Not capturable unit are automatically also not recoverable as live aliens.
We do not recommend using this flag to convert from case C/D into case A/B, because it has also side effects: when such unit is stunned, it is automatically insta-killed.
We recommend using option #1.
Question 5: is this check final or will it change in the future?The check covers a lot of cases now, but not 100% of cases.
There are still corner cases that are not fully covered; for example logic around zombie-like units, just to name one.
We may improve this check in the future if we see there are still issues in the mods; or if we add new OXCE features.
Thank you for your attention, and if you made it this far, congratulations!