word Action that Failed word Ship Id (0 if not applicable) word Planet Id (0 if not applicable) word Cause ...optional addition data
Sent when: some action fails
Sent to: owner of the unit which tried the action
This record is intended as a general failure report mechanism, to avoid the need to guess why an order didn't work.
The Action field contains the action that failed; by convention, this is a utilX.dat record number, or a larger number if there is no equivalent record. The Cause field contains a standard failure code. The record provides space for optional additional data.
Failure codes: The following Cause codes are currently defined. Not all of them are already used. The first codes are equivalent to those used in the cloak failure record.
Code | Meaning |
---|---|
0 | Random chance |
1 | Insufficient fuel |
2 | Excess damage |
3 | Ionic pulse |
4 | Wormhole Travel |
5 | Tachyon pulse |
6 | Ion storm |
10 | Lacking resources |
11 | Lacking tech |
12 | No receiver unit |
13 | Feature disabled by host |
14 | Not allowed by rule |
15 | Not allowed by partner |
16 | Global object limit exceeded |
17 | Per-player limit exceeded |
18 | Required ability missing |
19 | Target object does not exist |
20 | Per-unit limit exceeded |
Codes currently in use: These are all the Action / Cause combinations which PHost currently generates.
- Action = 16 (Ship Recycled)
- Cause = 14: attempt to recycle a ship you don't own (some clients wrongly allow you to set these orders).
- Action = 18 (Ship Colonized)
- Cause = 15: planet was inhabited by unfriendly race
- Action = 20 (Ship Construction)
- Cause = 10: cloning of a ship failed due to lacking minerals. This message is sent when you do not have enough minerals by the turn the ship is actually scheduled for building.
- Cause = 11: clone order not accepted because starbase doesn't have sufficient tech.
- Cause = 14: clone order not accepted because you can build this ship normally.
- Cause = 18: clone order not accepted because ship is unclonable.
- Action = 21 (Ship Trade, give command)
- Cause = 12: receiver didn't have a ship or planet at the ship position
- Cause = 18: ship is ungiveable
- Action = 35 (Cloak Failure)
- Cause = 0: cloak failed due to random chance
- Cause = 1: cloak failed due to insufficient fuel
- Cause = 2: cloak failed due to excessive hull damage
- Cause = 3: cloak failed due to an ionic pulse
- Cause = 4: cloak failed due to wormhole travel
- Cause = 5: cloak failed due to a tachyon pulse (from a Loki)
- Cause = 6: cloak failed due to ion storm
- Action = 45 (Planet Trade, give command)
- Cause = 12: receiver didn't have a ship at the planet
- Action = 56 (Repair)
- Cause = 15: attempt to repair a ship you don't own and you are not allied with.
- Action = 10000 (ship mission failed)
This record describes a failed ship mission, which may not have their own util.dat record number. It contains three words of additional data, reporting the mission, intercept and tow numbers.- Cause = 0: Rob failed due to random chance
- Cause = 10: towing ship ran out of fuel, training ship had no fuel, Academy ship trying to exchange crew had no fuel.
- Cause = 13: attempt to lay mines but AllowMinefields resp. AllowWebMines is off
- Cause = 14: attempt to RGA or pillage a planet which has already been plundered this turn
- Cause = 15: attempt to lay mines in someone else's Id without permission (MineIdNeedsPermission); a Gather-type mission or training failed because the planet was not friendly, crew exchange failed because target ship didn't have ship-level alliance or matching friendly code.
- Cause = 16: all minefield slots are used
- Cause = 17: MaximumMinefieldsPerPlayer limit exceeded
- Cause = 18: tow strength too weak to tow target
- Cause = 19: attempt to add mines to a non-existing, non-matching, or maximum-size field, attempt to transfer torpedoes, fighters or cash to a ship that is at a different place or cannot carry the torpedoes/fighters, attempt to train while not at a planet, target ship for crew exchange not existant or at different location.
- Cause = 20: attempt to train but ExperienceLimit already reached