Some further investigation yields the problem that in the script, plugin.LIFE.ship.signal.attacked, LIFE temporarily adds the ship to a special, hidden wing that it uses as a queue. That wing is used as a primary mechanism for communication between the scripting side and the mission director side (storing the list of ships that have been attacked and thus need to be processed).
After some finagling in the director script LIFE.Attacked.xml, it calls plugin.LIFE.mdcomms.queue on the ship, which removes the ship from the special queue wing and restores the previous wing membership. Unfortunately, removing a ship from a wing cancels its current order on task 0, the main task (engine bug maybe?).
Sadly, since that queue is pretty central to how the attacking signalling works in LIFE, I don't see a way to get around not having the wing.
So a workaround may be to not add non-race controlled ships to the queue in the first place. So, you can replace the line (around line 61) in plugin.LIFE.ship.signal.attacked.xml:
Code: Select all
$gAttacked-> temporarily remove from wing
add ship to flight wing: wing=$mdcommsQueue ship=$gAttacked
with
Code: Select all
* TechSY730 fix: Don't do special handling for special mission ships, since removing the wing later on interferes with current commands
if $gAttacked-> can be controlled by race logic
$gAttacked-> temporarily remove from wing
add ship to flight wing: wing=$mdcommsQueue ship=$gAttacked
end
This will make it so that ships that have been reserved for other purposes cannot get "co-opted". Race logic controlled ships are unchanged, as they have their main task restored by GOD periodically, so that is why it hasn't been an issue for those ships.
Sadly, this is a little overreaching and also turns off special LIFE handling for script spawned ships too that disable race logic, even if the script can handle it by having fallback "restart" logic. But I can't really see a way around that.
However, the above will also silence such mission ships from saying "I'm under attack". I'll provide a version that preserves as a follow up post, since it makes the code much longer.