me.byjp.pesos.sts2.run

byjp.me

Schema Diff

+230 -14

From

CID
bafyreiclmkl6y4g...
Indexed At
2026-04-15 22:03 UTC
View this version

To

CID
bafyreiaqpnf3lg4...
Indexed At
2026-04-25 08:51 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

36 breaking changes, 94 non-breaking changes.

Breaking Changes (36)
  • RemovedVertex RemovedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.createdAt" }
  • RemovedVertex RemovedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.finalAct" }
  • RemovedVertex RemovedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.finalFloor" }
  • RemovedEdge RemovedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.createdAt", kind: "prop", name: Some("createdAt") }
  • RemovedEdge RemovedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.finalAct", kind: "prop", name: Some("finalAct") }
  • RemovedEdge RemovedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.finalFloor", kind: "prop", name: Some("finalFloor") }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageDealt", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.bossesWon", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsDrawn", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsPlayed", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestDamageTaken", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.goldEarned", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run:body.currentHp", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.highestBlockInTurn", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.goldCurrent", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.turns", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.combatsWon", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.combats", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.elitesWon", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.deaths", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageTaken", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.damageDealt", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.killCount", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.noDamageTurns", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.potionsUsed", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.goldSpent", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run:body.floor", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run:body.act", sort: "minimum", value: "1" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run:body.act", sort: "maximum", value: "4" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestDamageDealt", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.longestCombat", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run:body.maxHp", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.lowestHp", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsExhausted", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.healingReceived", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.damageTaken", sort: "minimum", value: "0" }
Non-Breaking Changes (94)
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#attestation" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#attestation.cid" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#attestation.key" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#attestation.signature" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#distribution" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestDamageDealt" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestDamageTaken" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageDealt" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageTaken" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.bossesWon" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.cardUseDistribution" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsDrawn" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsExhausted" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsPlayed" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.combats" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.combatsWon" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.damageDealt" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.damageTaken" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.deaths" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.elitesWon" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.goldCurrent" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.goldEarned" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.goldSpent" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.healingReceived" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.highestBlockInTurn" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.hitsDealtDistribution" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.hitsTakenDistribution" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.killCount" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.longestCombat" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.lowestHp" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.noDamageTurns" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.potionsUsed" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.turns" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.act" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.allies" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items.atproto" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items.steam" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.currentHp" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.floor" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.maxHp" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.potions" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.potions:items" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.stats" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.steamID64" }
  • AddedVertex AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.updatedAt" }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.cid", kind: "prop", name: Some("cid") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.key", kind: "prop", name: Some("key") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.signature", kind: "prop", name: Some("signature") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.biggestDamageDealt", kind: "prop", name: Some("biggestDamageDealt") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.biggestDamageTaken", kind: "prop", name: Some("biggestDamageTaken") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageDealt", kind: "prop", name: Some("biggestTurnDamageDealt") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageTaken", kind: "prop", name: Some("biggestTurnDamageTaken") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.bossesWon", kind: "prop", name: Some("bossesWon") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.cardUseDistribution", kind: "prop", name: Some("cardUseDistribution") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.cardsDrawn", kind: "prop", name: Some("cardsDrawn") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.cardsExhausted", kind: "prop", name: Some("cardsExhausted") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.cardsPlayed", kind: "prop", name: Some("cardsPlayed") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.combats", kind: "prop", name: Some("combats") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.combatsWon", kind: "prop", name: Some("combatsWon") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.damageDealt", kind: "prop", name: Some("damageDealt") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.damageTaken", kind: "prop", name: Some("damageTaken") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.deaths", kind: "prop", name: Some("deaths") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.elitesWon", kind: "prop", name: Some("elitesWon") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.goldCurrent", kind: "prop", name: Some("goldCurrent") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.goldEarned", kind: "prop", name: Some("goldEarned") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.goldSpent", kind: "prop", name: Some("goldSpent") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.healingReceived", kind: "prop", name: Some("healingReceived") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.highestBlockInTurn", kind: "prop", name: Some("highestBlockInTurn") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.hitsDealtDistribution", kind: "prop", name: Some("hitsDealtDistribution") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.hitsTakenDistribution", kind: "prop", name: Some("hitsTakenDistribution") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.killCount", kind: "prop", name: Some("killCount") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.longestCombat", kind: "prop", name: Some("longestCombat") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.lowestHp", kind: "prop", name: Some("lowestHp") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.noDamageTurns", kind: "prop", name: Some("noDamageTurns") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.potionsUsed", kind: "prop", name: Some("potionsUsed") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.turns", kind: "prop", name: Some("turns") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.act", kind: "prop", name: Some("act") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.allies", kind: "prop", name: Some("allies") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.currentHp", kind: "prop", name: Some("currentHp") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.floor", kind: "prop", name: Some("floor") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.maxHp", kind: "prop", name: Some("maxHp") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.potions", kind: "prop", name: Some("potions") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.stats", kind: "prop", name: Some("stats") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.steamID64", kind: "prop", name: Some("steamID64") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.updatedAt", kind: "prop", name: Some("updatedAt") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body.allies", tgt: "me.byjp.pesos.sts2.run:body.allies:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body.allies:items", tgt: "me.byjp.pesos.sts2.run:body.allies:items.atproto", kind: "prop", name: Some("atproto") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body.allies:items", tgt: "me.byjp.pesos.sts2.run:body.allies:items.steam", kind: "prop", name: Some("steam") }
  • AddedEdge AddedEdge { src: "me.byjp.pesos.sts2.run:body.potions", tgt: "me.byjp.pesos.sts2.run:body.potions:items", kind: "items", name: None }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "me.byjp.pesos.sts2.run:body.finalFloor", sort: "minimum" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "me.byjp.pesos.sts2.run:body.finalAct", sort: "minimum" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "me.byjp.pesos.sts2.run:body.finalAct", sort: "maximum" }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.createdAt" }
  • RemovedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.finalAct" }
  • RemovedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.finalFloor" }

Added Elements

  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#attestation" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#attestation.cid" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#attestation.key" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#attestation.signature" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#distribution" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestDamageDealt" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestDamageTaken" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageDealt" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageTaken" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.bossesWon" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.cardUseDistribution" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsDrawn" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsExhausted" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsPlayed" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.combats" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.combatsWon" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.damageDealt" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.damageTaken" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.deaths" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.elitesWon" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.goldCurrent" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.goldEarned" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.goldSpent" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.healingReceived" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.highestBlockInTurn" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.hitsDealtDistribution" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.hitsTakenDistribution" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.killCount" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.longestCombat" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.lowestHp" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.noDamageTurns" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.potionsUsed" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run#stats.turns" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.act" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.allies" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items.atproto" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.allies:items.steam" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.currentHp" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.floor" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.maxHp" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.potions" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.potions:items" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.stats" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.steamID64" }
  • AddedVertex { vertex_id: "me.byjp.pesos.sts2.run:body.updatedAt" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.damageDealt", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.damageTaken", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.bossesWon", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.combats", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.noDamageTurns", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestDamageTaken", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.highestBlockInTurn", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.elitesWon", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.killCount", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.longestCombat", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run:body.floor", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.lowestHp", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.combatsWon", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run:body.act", sort: "maximum", value: "4" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run:body.act", sort: "minimum", value: "1" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsExhausted", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.deaths", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.goldEarned", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsDrawn", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run:body.maxHp", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run:body.currentHp", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageTaken", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestDamageDealt", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.healingReceived", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageDealt", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.turns", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.goldSpent", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.potionsUsed", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.goldCurrent", sort: "minimum", value: "0" }
  • ConstraintAdded ConstraintAdded { vertex_id: "me.byjp.pesos.sts2.run#stats.cardsPlayed", sort: "minimum", value: "0" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "me.byjp.pesos.sts2.run:body.finalAct", sort: "maximum" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "me.byjp.pesos.sts2.run:body.finalAct", sort: "minimum" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "me.byjp.pesos.sts2.run:body.finalFloor", sort: "minimum" }

Additional Notes

  • Breaking: RemovedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.createdAt", kind: "prop", name: Some("createdAt") }
  • Breaking: RemovedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.finalAct", kind: "prop", name: Some("finalAct") }
  • Breaking: RemovedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.finalFloor", kind: "prop", name: Some("finalFloor") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.cid", kind: "prop", name: Some("cid") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.key", kind: "prop", name: Some("key") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#attestation", tgt: "me.byjp.pesos.sts2.run#attestation.signature", kind: "prop", name: Some("signature") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.biggestDamageDealt", kind: "prop", name: Some("biggestDamageDealt") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.biggestDamageTaken", kind: "prop", name: Some("biggestDamageTaken") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageDealt", kind: "prop", name: Some("biggestTurnDamageDealt") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.biggestTurnDamageTaken", kind: "prop", name: Some("biggestTurnDamageTaken") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.bossesWon", kind: "prop", name: Some("bossesWon") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.cardUseDistribution", kind: "prop", name: Some("cardUseDistribution") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.cardsDrawn", kind: "prop", name: Some("cardsDrawn") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.cardsExhausted", kind: "prop", name: Some("cardsExhausted") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.cardsPlayed", kind: "prop", name: Some("cardsPlayed") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.combats", kind: "prop", name: Some("combats") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.combatsWon", kind: "prop", name: Some("combatsWon") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.damageDealt", kind: "prop", name: Some("damageDealt") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.damageTaken", kind: "prop", name: Some("damageTaken") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.deaths", kind: "prop", name: Some("deaths") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.elitesWon", kind: "prop", name: Some("elitesWon") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.goldCurrent", kind: "prop", name: Some("goldCurrent") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.goldEarned", kind: "prop", name: Some("goldEarned") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.goldSpent", kind: "prop", name: Some("goldSpent") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.healingReceived", kind: "prop", name: Some("healingReceived") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.highestBlockInTurn", kind: "prop", name: Some("highestBlockInTurn") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.hitsDealtDistribution", kind: "prop", name: Some("hitsDealtDistribution") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.hitsTakenDistribution", kind: "prop", name: Some("hitsTakenDistribution") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.killCount", kind: "prop", name: Some("killCount") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.longestCombat", kind: "prop", name: Some("longestCombat") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.lowestHp", kind: "prop", name: Some("lowestHp") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.noDamageTurns", kind: "prop", name: Some("noDamageTurns") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.potionsUsed", kind: "prop", name: Some("potionsUsed") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run#stats", tgt: "me.byjp.pesos.sts2.run#stats.turns", kind: "prop", name: Some("turns") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.act", kind: "prop", name: Some("act") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.allies", kind: "prop", name: Some("allies") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.currentHp", kind: "prop", name: Some("currentHp") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.floor", kind: "prop", name: Some("floor") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.maxHp", kind: "prop", name: Some("maxHp") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.potions", kind: "prop", name: Some("potions") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.stats", kind: "prop", name: Some("stats") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.steamID64", kind: "prop", name: Some("steamID64") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body", tgt: "me.byjp.pesos.sts2.run:body.updatedAt", kind: "prop", name: Some("updatedAt") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body.allies", tgt: "me.byjp.pesos.sts2.run:body.allies:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body.allies:items", tgt: "me.byjp.pesos.sts2.run:body.allies:items.atproto", kind: "prop", name: Some("atproto") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body.allies:items", tgt: "me.byjp.pesos.sts2.run:body.allies:items.steam", kind: "prop", name: Some("steam") }
  • Non-breaking: AddedEdge { src: "me.byjp.pesos.sts2.run:body.potions", tgt: "me.byjp.pesos.sts2.run:body.potions:items", kind: "items", name: None }
1 1
{
2 2
  "id": "me.byjp.pesos.sts2.run",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "tid",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "outcome",
11 11
          "character",
12 12
          "ascension",
13 13
          "seed",
14 -
          "finalFloor",
15 14
          "startedAt",
16 -
          "endedAt",
17 -
          "createdAt"
15 +
          "updatedAt"
18 16
        ],
19 17
        "properties": {
18 +
          "act": {
19 +
            "type": "integer",
20 +
            "maximum": 4,
21 +
            "minimum": 1
22 +
          },
20 23
          "deck": {
21 24
            "type": "array",
22 25
            "items": {
23 26
              "type": "string"
24 27
            },
25 28
            "description": "Card ids in the final deck."
26 29
          },
27 30
          "game": {
28 31
            "type": "string",
29 32
            "format": "at-uri",
30 33
            "description": "Optional at-uri of the canonical games.gamesgamesgamesgames.actor.game record for StS2."
31 34
          },
32 35
          "seed": {
33 36
            "type": "string",
34 37
            "description": "Run seed as displayed in-game."
35 38
          },
39 +
          "floor": {
40 +
            "type": "integer",
41 +
            "minimum": 0
42 +
          },
43 +
          "maxHp": {
44 +
            "type": "integer",
45 +
            "minimum": 0,
46 +
            "description": "Local player's maximum HP at the time of emission (reflects run-long HP gains/losses)."
47 +
          },
36 48
          "score": {
37 49
            "type": "integer",
38 50
            "minimum": 0
39 51
          },
52 +
          "stats": {
53 +
            "ref": "lex:me.byjp.pesos.sts2.run#stats",
54 +
            "type": "ref",
55 +
            "description": "Aggregated combat stats across the run. All fields optional; counters reflect the local player's own activity."
56 +
          },
57 +
          "allies": {
58 +
            "type": "array",
59 +
            "items": {
60 +
              "type": "object",
61 +
              "required": [
62 +
                "steam"
63 +
              ],
64 +
              "properties": {
65 +
                "steam": {
66 +
                  "type": "string",
67 +
                  "description": "SteamID64 as a decimal string."
68 +
                },
69 +
                "atproto": {
70 +
                  "type": "string",
71 +
                  "format": "did",
72 +
                  "description": "Atproto DID, when known."
73 +
                }
74 +
              }
75 +
            },
76 +
            "description": "Other players in a multiplayer run."
77 +
          },
40 78
          "relics": {
41 79
            "type": "array",
42 80
            "items": {
43 81
              "type": "string"
44 82
            },
45 83
            "description": "Relic ids held at run end."
46 84
          },
47 85
          "endedAt": {
48 86
            "type": "string",
49 87
            "format": "datetime"
50 88
          },
51 89
          "outcome": {
52 90
            "type": "string",
53 91
            "description": "How the run ended.",
54 92
            "knownValues": [
93 +
              "in_progress",
55 94
              "victory",
56 95
              "death",
57 96
              "abandoned"
58 97
            ]
59 98
          },
60 -
          "finalAct": {
61 -
            "type": "integer",
62 -
            "maximum": 4,
63 -
            "minimum": 1
99 +
          "potions": {
100 +
            "type": "array",
101 +
            "items": {
102 +
              "type": "string"
103 +
            },
104 +
            "description": "Potion ids currently held."
64 105
          },
65 106
          "killedBy": {
66 107
            "type": "string",
67 108
            "description": "Enemy / event that ended the run, if applicable."
68 109
          },
69 110
          "statsRef": {
70 111
            "type": "string",
71 112
            "format": "at-uri",
72 113
            "description": "at-uri of the user's games.gamesgamesgamesgames.actor.stats record for StS2, updated alongside this run."
73 114
          },
74 115
          "ascension": {
75 116
            "type": "integer",
76 117
            "maximum": 20,
77 118
            "minimum": 0
78 119
          },
79 120
          "character": {
80 121
            "type": "string",
81 122
            "description": "Character class id (e.g. 'ironclad', 'silent')."
82 123
          },
83 -
          "createdAt": {
124 +
          "currentHp": {
125 +
            "type": "integer",
126 +
            "minimum": 0,
127 +
            "description": "Local player's current HP at the time of emission (0 if dead)."
128 +
          },
129 +
          "startedAt": {
84 130
            "type": "string",
85 131
            "format": "datetime"
86 132
          },
87 -
          "startedAt": {
133 +
          "steamID64": {
134 +
            "type": "string",
135 +
            "description": "SteamID64 of the run's owner, when playing on Steam."
136 +
          },
137 +
          "updatedAt": {
88 138
            "type": "string",
89 139
            "format": "datetime"
90 -
          },
91 -
          "finalFloor": {
92 -
            "type": "integer",
93 -
            "minimum": 0
94 140
          },
95 141
          "modVersion": {
96 142
            "type": "string"
97 143
          },
98 144
          "gameVersion": {
99 145
            "type": "string"
100 146
          },
101 147
          "durationSeconds": {
102 148
            "type": "integer",
103 149
            "minimum": 0
104 150
          }
105 151
        }
106 152
      },
107 -
      "description": "A single completed Slay the Spire 2 run."
153 +
      "description": "A single Slay the Spire 2 run."
154 +
    },
155 +
    "stats": {
156 +
      "type": "object",
157 +
      "properties": {
158 +
        "turns": {
159 +
          "type": "integer",
160 +
          "minimum": 0,
161 +
          "description": "Total player turns taken across all combats."
162 +
        },
163 +
        "deaths": {
164 +
          "type": "integer",
165 +
          "minimum": 0,
166 +
          "description": "Number of times the player went to 0 HP. 0 in solo victory; can exceed 1 in multiplayer where allies revive."
167 +
        },
168 +
        "combats": {
169 +
          "type": "integer",
170 +
          "minimum": 0,
171 +
          "description": "Total combats entered."
172 +
        },
173 +
        "lowestHp": {
174 +
          "type": "integer",
175 +
          "minimum": 0,
176 +
          "description": "Lowest HP the player reached at any tracked moment in the run."
177 +
        },
178 +
        "bossesWon": {
179 +
          "type": "integer",
180 +
          "minimum": 0,
181 +
          "description": "Boss combats won."
182 +
        },
183 +
        "elitesWon": {
184 +
          "type": "integer",
185 +
          "minimum": 0,
186 +
          "description": "Elite combats won."
187 +
        },
188 +
        "goldSpent": {
189 +
          "type": "integer",
190 +
          "minimum": 0,
191 +
          "description": "Total gold spent over the run."
192 +
        },
193 +
        "killCount": {
194 +
          "type": "integer",
195 +
          "minimum": 0,
196 +
          "description": "Number of monsters this player dealt the killing blow to."
197 +
        },
198 +
        "cardsDrawn": {
199 +
          "type": "integer",
200 +
          "minimum": 0
201 +
        },
202 +
        "combatsWon": {
203 +
          "type": "integer",
204 +
          "minimum": 0,
205 +
          "description": "Combats the player's side won."
206 +
        },
207 +
        "goldEarned": {
208 +
          "type": "integer",
209 +
          "minimum": 0,
210 +
          "description": "Total gold gained over the run."
211 +
        },
212 +
        "cardsPlayed": {
213 +
          "type": "integer",
214 +
          "minimum": 0
215 +
        },
216 +
        "damageDealt": {
217 +
          "type": "integer",
218 +
          "minimum": 0,
219 +
          "description": "Total HP damage dealt by the player to enemies (after block)."
220 +
        },
221 +
        "damageTaken": {
222 +
          "type": "integer",
223 +
          "minimum": 0,
224 +
          "description": "Total HP damage taken by the player (after block)."
225 +
        },
226 +
        "goldCurrent": {
227 +
          "type": "integer",
228 +
          "minimum": 0,
229 +
          "description": "Gold the player is currently holding at the time of emission."
230 +
        },
231 +
        "potionsUsed": {
232 +
          "type": "integer",
233 +
          "minimum": 0
234 +
        },
235 +
        "longestCombat": {
236 +
          "type": "integer",
237 +
          "minimum": 0,
238 +
          "description": "Most player turns in a single combat."
239 +
        },
240 +
        "noDamageTurns": {
241 +
          "type": "integer",
242 +
          "minimum": 0,
243 +
          "description": "Enemy turns during which the player took zero unblocked damage."
244 +
        },
245 +
        "cardsExhausted": {
246 +
          "type": "integer",
247 +
          "minimum": 0
248 +
        },
249 +
        "healingReceived": {
250 +
          "type": "integer",
251 +
          "minimum": 0,
252 +
          "description": "Total HP healed by the player across the run (sum of positive HP changes)."
253 +
        },
254 +
        "biggestDamageDealt": {
255 +
          "type": "integer",
256 +
          "minimum": 0,
257 +
          "description": "Largest HP damage dealt by the player in one attack (after block)."
258 +
        },
259 +
        "biggestDamageTaken": {
260 +
          "type": "integer",
261 +
          "minimum": 0,
262 +
          "description": "Largest HP damage taken by the player in one attack (after block)."
263 +
        },
264 +
        "highestBlockInTurn": {
265 +
          "type": "integer",
266 +
          "minimum": 0,
267 +
          "description": "Most block gained by the player in a single player turn."
268 +
        },
269 +
        "cardUseDistribution": {
270 +
          "ref": "#distribution",
271 +
          "type": "ref",
272 +
          "description": "Cards played, keyed by card name (id) mapped to the number of times that card was played. Example: { \"strike\": 42, \"bash\": 6 }."
273 +
        },
274 +
        "hitsDealtDistribution": {
275 +
          "ref": "#distribution",
276 +
          "type": "ref",
277 +
          "description": "Hits dealt by the player grouped by the attack's full value (before block). Example: { \"1\": 23, \"2\": 8, \"10\": 1 }."
278 +
        },
279 +
        "hitsTakenDistribution": {
280 +
          "ref": "#distribution",
281 +
          "type": "ref",
282 +
          "description": "Hits the player received grouped by the attack's full value (before block). Example: { \"1\": 23, \"2\": 8, \"10\": 1 }."
283 +
        },
284 +
        "biggestTurnDamageDealt": {
285 +
          "type": "integer",
286 +
          "minimum": 0,
287 +
          "description": "Most HP damage the player dealt in one player turn (after block)."
288 +
        },
289 +
        "biggestTurnDamageTaken": {
290 +
          "type": "integer",
291 +
          "minimum": 0,
292 +
          "description": "Most HP damage the player took in one enemy turn (after block)."
293 +
        }
294 +
      }
295 +
    },
296 +
    "attestation": {
297 +
      "type": "object",
298 +
      "required": [
299 +
        "cid",
300 +
        "key",
301 +
        "signature"
302 +
      ],
303 +
      "properties": {
304 +
        "cid": {
305 +
          "type": "string",
306 +
          "description": "CIDv1 (DAG-CBOR + SHA-256) of the record body that was signed."
307 +
        },
308 +
        "key": {
309 +
          "type": "string",
310 +
          "format": "did",
311 +
          "description": "did:key identifying the signing key."
312 +
        },
313 +
        "signature": {
314 +
          "type": "bytes",
315 +
          "description": "P-256 ECDSA signature (low-S, IEEE P1363 r‖s) over the content CID bytes."
316 +
        }
317 +
      },
318 +
      "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."
319 +
    },
320 +
    "distribution": {
321 +
      "type": "object",
322 +
      "properties": {},
323 +
      "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."
108 324
    }
109 325
  },
110 326
  "$type": "com.atproto.lexicon.schema",
111 327
  "lexicon": 1
112 328
}

Compare Other Versions

Lexicon Garden

@