Version: 1.0.0 Category: gameplay Description: Detailed workflow for handling attackerRetreated raid outcome
Start raid on target planet.
Action: raid
Request:
{
"action": "raid",
"type": "raid",
"target": "2-1",
"fleetId": "9-1",
"verify": {
"playerOnline": true,
"fleetAway": true,
"commandShipOnline": true,
"proofOfWork": true
}
}
Wait for raid to complete (may result in retreat).
Polling:
| Parameter | Value |
|---|---|
| Endpoint | GET /structs/planet/{planetId} |
| Interval | 2 seconds |
| Max Attempts | 60 |
| Check Field | planet.raidStatus |
Query raid outcome status.
Endpoint: GET /structs/planet/{planetId}
Expected Fields:
| Field | Expected Value |
|---|---|
planet.raidStatus |
complete |
planet.raidOutcome.status |
attackerRetreated |
Process attackerRetreated outcome.
| Property | Value |
|---|---|
| Resources Gained | false |
| Resources Lost | false |
| Fleet Intact | true |
Actions:
Confirm fleet is intact and ready.
Endpoint: GET /structs/fleet/{fleetId}
Expected Fields:
| Field | Expected Value |
|---|---|
fleet.status |
away |
fleet.ships |
intact |
fleet.commandShip |
online |
Confirm no resources were transferred.
Attacker Resources – GET /structs/player/{attackerId}:
| Field | Expected Value |
|---|---|
player.alphaMatter |
unchanged |
player.ore |
unchanged |
Defender Resources – GET /structs/player/{defenderId}:
| Field | Expected Value |
|---|---|
player.alphaMatter |
unchanged |
player.ore |
unchanged |
Attacker retreated from raid before completion.
| Property | Value |
|---|---|
| Resources Gained | false |
| Resources Lost | false |
| Fleet Intact | true |
| Raid Complete | false |
Example Response:
{
"status": "raidComplete",
"outcome": {
"status": "attackerRetreated",
"victory": false,
"alphaMatterGained": 0,
"oreStolen": 0,
"unitsDestroyed": [],
"resourcesLost": {
"ore": 0
}
}
}
Attacker successfully completed raid.
| Property | Value |
|---|---|
| Resources Gained | true |
| Resources Lost | false |
| Fleet Intact | true |
| Raid Complete | true |
Example Response:
{
"status": "raidComplete",
"outcome": {
"status": "victory",
"victory": true,
"alphaMatterGained": 5,
"oreStolen": 10,
"unitsDestroyed": ["enemy-struct-id"]
}
}
Attacker lost the raid.
| Property | Value |
|---|---|
| Resources Gained | false |
| Resources Lost | false |
| Fleet Intact | false |
| Raid Complete | true |
Example Response:
{
"status": "raidComplete",
"outcome": {
"status": "defeat",
"victory": false,
"alphaMatterGained": 0,
"oreStolen": 0,
"unitsDestroyed": ["attacker-struct-id"]
}
}
fleetHealth < thresholdattackerRetreated statusdefenderStrength > attackerStrengthattackerRetreated statusattackerRetreated statusWhen an attacker retreats, no resources are transferred between attacker and defender.
| Resource | Status |
|---|---|
| Alpha Matter | unchanged |
| Ore | unchanged |
| Fleet | intact |
| Losses | none |
| Resource | Status |
|---|---|
| Alpha Matter | unchanged |
| Ore | unchanged |
| Defenses | intact |
| Losses | none |
| Outcome | Attacker Alpha Matter | Attacker Ore | Attacker Fleet | Defender Resources Lost | Defender Defenses |
|---|---|---|---|---|---|
| victory | positive | positive (stolen) | intact | positive (ore lost) | possibly damaged |
| defeat | 0 | 0 | possibly damaged | 0 | intact |
| attackerRetreated | 0 | 0 | intact | 0 | intact |
Endpoint: GET /structs/planet/{planetId}
Fields to check:
planet.raidStatusplanet.raidOutcome.statusplanet.raidOutcome.victoryconst isAttackerRetreated = (raidOutcome) => raidOutcome.status === 'attackerRetreated';
def is_attacker_retreated(raid_outcome):
return raid_outcome.status == 'attackerRetreated'
func isAttackerRetreated(raidOutcome RaidOutcome) bool {
return raidOutcome.Status == "attackerRetreated"
}
switch (raidOutcome.status) {
case 'victory':
handleVictory(raidOutcome);
break;
case 'defeat':
handleDefeat(raidOutcome);
break;
case 'attackerRetreated':
handleRetreat(raidOutcome);
break;
}
if raid_outcome.status == 'victory':
handle_victory(raid_outcome)
elif raid_outcome.status == 'defeat':
handle_defeat(raid_outcome)
elif raid_outcome.status == 'attackerRetreated':
handle_retreat(raid_outcome)
Streaming event for raid status changes.
Event Type: PlanetRaidStatusEvent
Schema:
| Field | Type | Values |
|---|---|---|
category |
string | raid_status |
data.status |
string | victory, defeat, attackerRetreated |
data.attackerId |
string | Player ID |
data.planetId |
string | Planet ID |
Example Event:
{
"category": "raid_status",
"data": {
"status": "attackerRetreated",
"attackerId": "1-11",
"planetId": "2-1"
}
}
attackerRetreatedattackerRetreatedattackerRetreated