me.byjp.pesos.sts2.run
A single Slay the Spire 2 run.
Details · record, key tid
| Kind | record |
|---|---|
| Record key | tid |
| Authority | sts2.pesos.byjp.me |
| Indexed |
Checks
Validunlimited-stringdefs.attestation.properties.cidNo maxLength, maxGraphemes or format limits this string.unlimited-bytesdefs.attestation.properties.signatureNo maxLength limits these bytes.unlimited-stringdefs.main.record.properties.allies.items.properties.steamNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.characterNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.deck.itemsNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.gameVersionNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.killedByNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.modVersionNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.outcomeNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.potions.itemsNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.relics.itemsNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.seedNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.steamID64No maxLength, maxGraphemes or format limits this string.
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"attestation": {
"description": "Inline ECDSA signature appended to the record's `signatures` array after the content CID is computed (per badge.blue). The `signatures` array is stripped before re-validation; entries identify the signing key so verifiers can look it up against a trusted-keys list to confirm a genuine mod build. The canonical list lives at https://sts2.byjp.me/.well-known/sts2-mod-keys/keys.json — other verifiers may publish their own at the same well-known path on a different host.",
"properties": {
"cid": {
"description": "CIDv1 (DAG-CBOR + SHA-256) of the record body that was signed.",
"type": "string"
},
"key": {
"description": "did:key identifying the signing key.",
"format": "did",
"type": "string"
},
"signature": {
"description": "P-256 ECDSA signature (low-S, IEEE P1363 r‖s) over the content CID bytes.",
"type": "bytes"
}
},
"required": [
"cid",
"key",
"signature"
],
"type": "object"
},
"distribution": {
"description": "Generic histogram keyed by arbitrary string values mapped to their integer counts. Keys are intentionally undeclared because the set of values is open-ended.",
"properties": {},
"type": "object"
},
"main": {
"description": "A single Slay the Spire 2 run.",
"key": "tid",
"record": {
"properties": {
"act": {
"maximum": 4,
"minimum": 1,
"type": "integer"
},
"allies": {
"description": "Other players in a multiplayer run.",
"items": {
"properties": {
"atproto": {
"description": "Atproto DID, when known.",
"format": "did",
"type": "string"
},
"steam": {
"description": "SteamID64 as a decimal string.",
"type": "string"
}
},
"required": [
"steam"
],
"type": "object"
},
"type": "array"
},
"ascension": {
"maximum": 20,
"minimum": 0,
"type": "integer"
},
"character": {
"description": "Character class id (e.g. 'ironclad', 'silent').",
"type": "string"
},
"currentHp": {
"description": "Local player's current HP at the time of emission (0 if dead).",
"minimum": 0,
"type": "integer"
},
"deck": {
"description": "Card ids in the final deck.",
"items": {
"type": "string"
},
"type": "array"
},
"durationSeconds": {
"minimum": 0,
"type": "integer"
},
"endedAt": {
"format": "datetime",
"type": "string"
},
"floor": {
"minimum": 0,
"type": "integer"
},
"game": {
"description": "Optional at-uri of the canonical games.gamesgamesgamesgames.actor.game record for StS2.",
"format": "at-uri",
"type": "string"
},
"gameVersion": {
"type": "string"
},
"killedBy": {
"description": "Enemy / event that ended the run, if applicable.",
"type": "string"
},
"maxHp": {
"description": "Local player's maximum HP at the time of emission (reflects run-long HP gains/losses).",
"minimum": 0,
"type": "integer"
},
"modVersion": {
"type": "string"
},
"outcome": {
"description": "How the run ended.",
"knownValues": [
"in_progress",
"victory",
"death",
"abandoned"
],
"type": "string"
},
"potions": {
"description": "Potion ids currently held.",
"items": {
"type": "string"
},
"type": "array"
},
"relics": {
"description": "Relic ids held at run end.",
"items": {
"type": "string"
},
"type": "array"
},
"score": {
"minimum": 0,
"type": "integer"
},
"seed": {
"description": "Run seed as displayed in-game.",
"type": "string"
},
"startedAt": {
"format": "datetime",
"type": "string"
},
"stats": {
"description": "Aggregated combat stats across the run. All fields optional; counters reflect the local player's own activity.",
"ref": "lex:me.byjp.pesos.sts2.run#stats",
"type": "ref"
},
"statsRef": {
"description": "at-uri of the user's games.gamesgamesgamesgames.actor.stats record for StS2, updated alongside this run.",
"format": "at-uri",
"type": "string"
},
"steamID64": {
"description": "SteamID64 of the run's owner, when playing on Steam.",
"type": "string"
},
"updatedAt": {
"format": "datetime",
"type": "string"
}
},
"required": [
"outcome",
"character",
"ascension",
"seed",
"startedAt",
"updatedAt"
],
"type": "object"
},
"type": "record"
},
"stats": {
"properties": {
"biggestDamageDealt": {
"description": "Largest HP damage dealt by the player in one attack (after block).",
"minimum": 0,
"type": "integer"
},
"biggestDamageTaken": {
"description": "Largest HP damage taken by the player in one attack (after block).",
"minimum": 0,
"type": "integer"
},
"biggestTurnDamageDealt": {
"description": "Most HP damage the player dealt in one player turn (after block).",
"minimum": 0,
"type": "integer"
},
"biggestTurnDamageTaken": {
"description": "Most HP damage the player took in one enemy turn (after block).",
"minimum": 0,
"type": "integer"
},
"bossesWon": {
"description": "Boss combats won.",
"minimum": 0,
"type": "integer"
},
"cardUseDistribution": {
"description": "Cards played, keyed by card name (id) mapped to the number of times that card was played. Example: { \"strike\": 42, \"bash\": 6 }.",
"ref": "#distribution",
"type": "ref"
},
"cardsDrawn": {
"minimum": 0,
"type": "integer"
},
"cardsExhausted": {
"minimum": 0,
"type": "integer"
},
"cardsPlayed": {
"minimum": 0,
"type": "integer"
},
"combats": {
"description": "Total combats entered.",
"minimum": 0,
"type": "integer"
},
"combatsWon": {
"description": "Combats the player's side won.",
"minimum": 0,
"type": "integer"
},
"damageDealt": {
"description": "Total HP damage dealt by the player to enemies (after block).",
"minimum": 0,
"type": "integer"
},
"damageTaken": {
"description": "Total HP damage taken by the player (after block).",
"minimum": 0,
"type": "integer"
},
"deaths": {
"description": "Number of times the player went to 0 HP. 0 in solo victory; can exceed 1 in multiplayer where allies revive.",
"minimum": 0,
"type": "integer"
},
"elitesWon": {
"description": "Elite combats won.",
"minimum": 0,
"type": "integer"
},
"goldCurrent": {
"description": "Gold the player is currently holding at the time of emission.",
"minimum": 0,
"type": "integer"
},
"goldEarned": {
"description": "Total gold gained over the run.",
"minimum": 0,
"type": "integer"
},
"goldSpent": {
"description": "Total gold spent over the run.",
"minimum": 0,
"type": "integer"
},
"healingReceived": {
"description": "Total HP healed by the player across the run (sum of positive HP changes).",
"minimum": 0,
"type": "integer"
},
"highestBlockInTurn": {
"description": "Most block gained by the player in a single player turn.",
"minimum": 0,
"type": "integer"
},
"hitsDealtDistribution": {
"description": "Hits dealt by the player grouped by the attack's full value (before block). Example: { \"1\": 23, \"2\": 8, \"10\": 1 }.",
"ref": "#distribution",
"type": "ref"
},
"hitsTakenDistribution": {
"description": "Hits the player received grouped by the attack's full value (before block). Example: { \"1\": 23, \"2\": 8, \"10\": 1 }.",
"ref": "#distribution",
"type": "ref"
},
"killCount": {
"description": "Number of monsters this player dealt the killing blow to.",
"minimum": 0,
"type": "integer"
},
"longestCombat": {
"description": "Most player turns in a single combat.",
"minimum": 0,
"type": "integer"
},
"lowestHp": {
"description": "Lowest HP the player reached at any tracked moment in the run.",
"minimum": 0,
"type": "integer"
},
"noDamageTurns": {
"description": "Enemy turns during which the player took zero unblocked damage.",
"minimum": 0,
"type": "integer"
},
"potionsUsed": {
"minimum": 0,
"type": "integer"
},
"turns": {
"description": "Total player turns taken across all combats.",
"minimum": 0,
"type": "integer"
}
},
"type": "object"
}
},
"id": "me.byjp.pesos.sts2.run",
"lexicon": 1
}