# net.anisota.player.state

> Published by [anisota.net](https://lexicon.garden/identity/did:plc:lcieujcfkv4jx7gehsvok3pr)

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:lcieujcfkv4jx7gehsvok3pr/net.anisota.player.state)
- [Documentation](https://lexicon.garden/lexicon/did:plc:lcieujcfkv4jx7gehsvok3pr/net.anisota.player.state/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:lcieujcfkv4jx7gehsvok3pr/net.anisota.player.state/examples)

## Definitions

### `net.anisota.player.state`

**Type**: `record`

Ephemeral player state for cross-device sync. Singleton record (rkey: self), overwritten via putRecord.

**Key**: `any`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `equipped` | `unknown` | No | Equipment slots: object mapping slotId (hands, backpack, camp) to arrays of equipped item ID strings |
| `updatedAt` | `string` (datetime) | Yes | When this state snapshot was taken |
| `currentLight` | `string` | No | Current light charge in Wh (decimal string, e.g. '280.0') |
| `slotCapacity` | `unknown` | No | Slot capacity overrides: object mapping slotId to integer capacity (for upgrades). Slots not listed use default capacity. |
| `triggerSource` | `string` | No | What caused this state snapshot (visibility_hidden, session_end, stamina_depleted, manual) |
| `currentStamina` | `string` | No | Current stamina level (decimal string, e.g. '42.5') |
| `lastSessionStart` | `string` (datetime) | No | When the current session started (for multi-device awareness) |
| `lightDrainActive` | `boolean` | No | Whether light drain was active when state was saved |
| `activityIntentionX` | `string` | No | Activity style intention X position as grid percentage (0-100, consuming axis) |
| `activityIntentionY` | `string` | No | Activity style intention Y position as grid percentage (0-100, creating axis) |
| `starterItemsGranted` | `boolean` | No | Whether the player has received their starter items |
| `tutorialCompletedAt` | `string` (datetime) | No | When the player completed (or skipped) the interactive tutorial. Presence of this field means the tutorial is done; absence means it has not been completed. |
| `activityIntentionTotal7d` | `string` | No | Target total weekly activity count, sum of all actions (decimal string, e.g. '500') |
| `activeBlocksIntentionDaily` | `string` | No | Target active blocks per day (decimal string, e.g. '6') |
| `activityIntentionCreating7d` | `string` | No | Deprecated: use activityIntentionTotal7d. Target weekly creating count. |
| `activityIntentionConsuming7d` | `string` | No | Deprecated: use activityIntentionTotal7d. Target weekly consuming count. |

## Raw Schema

```json
{
  "id": "net.anisota.player.state",
  "defs": {
    "main": {
      "key": "any",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "updatedAt"
        ],
        "properties": {
          "equipped": {
            "type": "unknown",
            "description": "Equipment slots: object mapping slotId (hands, backpack, camp) to arrays of equipped item ID strings"
          },
          "updatedAt": {
            "type": "string",
            "format": "datetime",
            "description": "When this state snapshot was taken"
          },
          "currentLight": {
            "type": "string",
            "description": "Current light charge in Wh (decimal string, e.g. '280.0')"
          },
          "slotCapacity": {
            "type": "unknown",
            "description": "Slot capacity overrides: object mapping slotId to integer capacity (for upgrades). Slots not listed use default capacity."
          },
          "triggerSource": {
            "type": "string",
            "description": "What caused this state snapshot (visibility_hidden, session_end, stamina_depleted, manual)"
          },
          "currentStamina": {
            "type": "string",
            "description": "Current stamina level (decimal string, e.g. '42.5')"
          },
          "lastSessionStart": {
            "type": "string",
            "format": "datetime",
            "description": "When the current session started (for multi-device awareness)"
          },
          "lightDrainActive": {
            "type": "boolean",
            "description": "Whether light drain was active when state was saved"
          },
          "activityIntentionX": {
            "type": "string",
            "description": "Activity style intention X position as grid percentage (0-100, consuming axis)"
          },
          "activityIntentionY": {
            "type": "string",
            "description": "Activity style intention Y position as grid percentage (0-100, creating axis)"
          },
          "starterItemsGranted": {
            "type": "boolean",
            "description": "Whether the player has received their starter items"
          },
          "tutorialCompletedAt": {
            "type": "string",
            "format": "datetime",
            "description": "When the player completed (or skipped) the interactive tutorial. Presence of this field means the tutorial is done; absence means it has not been completed."
          },
          "activityIntentionTotal7d": {
            "type": "string",
            "description": "Target total weekly activity count, sum of all actions (decimal string, e.g. '500')"
          },
          "activeBlocksIntentionDaily": {
            "type": "string",
            "description": "Target active blocks per day (decimal string, e.g. '6')"
          },
          "activityIntentionCreating7d": {
            "type": "string",
            "description": "Deprecated: use activityIntentionTotal7d. Target weekly creating count."
          },
          "activityIntentionConsuming7d": {
            "type": "string",
            "description": "Deprecated: use activityIntentionTotal7d. Target weekly consuming count."
          }
        }
      },
      "description": "Ephemeral player state for cross-device sync. Singleton record (rkey: self), overwritten via putRecord."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
