at.turtleme.game.defs

turtleme.at

Schema Diff

+258 -0

From

CID
bafyreifvmkozceo...
Indexed At
2026-09-15 20:03 UTC
View this version

To

CID
bafyreicc7y24mon...
Indexed At
2026-09-30 19:58 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

17 breaking changes, 76 non-breaking changes.

Breaking Changes (17)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#cast", src: "at.turtleme.game.defs#cast", tgt: "at.turtleme.game.defs#cast.elapsed", kind: "prop", name: Some("elapsed") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#cast", src: "at.turtleme.game.defs#cast", tgt: "at.turtleme.game.defs#cast.level", kind: "prop", name: Some("level") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#cast", src: "at.turtleme.game.defs#cast", tgt: "at.turtleme.game.defs#cast.mark", kind: "prop", name: Some("mark") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#cast", src: "at.turtleme.game.defs#cast", tgt: "at.turtleme.game.defs#cast.streak", kind: "prop", name: Some("streak") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#cast", src: "at.turtleme.game.defs#cast", tgt: "at.turtleme.game.defs#cast.left", kind: "prop", name: Some("left") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#cast", src: "at.turtleme.game.defs#cast", tgt: "at.turtleme.game.defs#cast.seed", kind: "prop", name: Some("seed") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#mark", src: "at.turtleme.game.defs#mark", tgt: "at.turtleme.game.defs#mark.dir", kind: "prop", name: Some("dir") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#mark", src: "at.turtleme.game.defs#mark", tgt: "at.turtleme.game.defs#mark.index", kind: "prop", name: Some("index") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#mark", src: "at.turtleme.game.defs#mark", tgt: "at.turtleme.game.defs#mark.at", kind: "prop", name: Some("at") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#mark", src: "at.turtleme.game.defs#mark", tgt: "at.turtleme.game.defs#mark.since", kind: "prop", name: Some("since") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#market", src: "at.turtleme.game.defs#market", tgt: "at.turtleme.game.defs#market.low", kind: "prop", name: Some("low") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#market", src: "at.turtleme.game.defs#market", tgt: "at.turtleme.game.defs#market.high", kind: "prop", name: Some("high") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#patch", src: "at.turtleme.game.defs#patch", tgt: "at.turtleme.game.defs#patch.index", kind: "prop", name: Some("index") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#patch", src: "at.turtleme.game.defs#patch", tgt: "at.turtleme.game.defs#patch.count", kind: "prop", name: Some("count") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#reef", src: "at.turtleme.game.defs#reef", tgt: "at.turtleme.game.defs#reef.across", kind: "prop", name: Some("across") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#reef", src: "at.turtleme.game.defs#reef", tgt: "at.turtleme.game.defs#reef.shoal", kind: "prop", name: Some("shoal") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#spot", src: "at.turtleme.game.defs#spot", tgt: "at.turtleme.game.defs#spot.since", kind: "prop", name: Some("since") }
Non-Breaking Changes (76)
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#cast" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#cast.elapsed" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#cast.left" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#cast.level" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#cast.mark" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#cast.seed" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#cast.streak" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#mark" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#mark.at" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#mark.dir" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#mark.index" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#mark.since" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#market" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#market.at" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#market.high" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#market.low" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#market.stale" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#patch" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#patch.count" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#patch.index" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#reef" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#reef.across" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#reef.known" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#reef.known:items" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#reef.laid" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#reef.opened" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#reef.opened:items" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#reef.over" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#reef.shoal" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#reef.swept" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#rest" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#rest.reef" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#rest.strike" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#spot" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#spot.movesAt" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#spot.since" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#state.bankedTurtles" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#state.cast" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#state.gp" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#state.items" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#state.market" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#state.outcome" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#state.reef" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#state.rest" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#state.shop" }
  • AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#state.spot" }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#cast.mark", tgt: "at.turtleme.game.defs#mark", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#market", tgt: "at.turtleme.game.defs#market.at", kind: "prop", name: Some("at") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#market", tgt: "at.turtleme.game.defs#market.stale", kind: "prop", name: Some("stale") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#reef", tgt: "at.turtleme.game.defs#reef.known", kind: "prop", name: Some("known") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#reef", tgt: "at.turtleme.game.defs#reef.laid", kind: "prop", name: Some("laid") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#reef", tgt: "at.turtleme.game.defs#reef.opened", kind: "prop", name: Some("opened") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#reef", tgt: "at.turtleme.game.defs#reef.over", kind: "prop", name: Some("over") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#reef", tgt: "at.turtleme.game.defs#reef.swept", kind: "prop", name: Some("swept") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#reef.known", tgt: "at.turtleme.game.defs#reef.known:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#reef.known:items", tgt: "at.turtleme.game.defs#patch", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#reef.opened", tgt: "at.turtleme.game.defs#reef.opened:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#reef.opened:items", tgt: "at.turtleme.game.defs#patch", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#rest", tgt: "at.turtleme.game.defs#rest.reef", kind: "prop", name: Some("reef") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#rest", tgt: "at.turtleme.game.defs#rest.strike", kind: "prop", name: Some("strike") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#spot", tgt: "at.turtleme.game.defs#spot.movesAt", kind: "prop", name: Some("movesAt") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.bankedTurtles", kind: "prop", name: Some("bankedTurtles") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.cast", kind: "prop", name: Some("cast") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.gp", kind: "prop", name: Some("gp") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.items", kind: "prop", name: Some("items") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.market", kind: "prop", name: Some("market") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.outcome", kind: "prop", name: Some("outcome") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.reef", kind: "prop", name: Some("reef") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.rest", kind: "prop", name: Some("rest") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.shop", kind: "prop", name: Some("shop") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.spot", kind: "prop", name: Some("spot") }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#state.cast", tgt: "at.turtleme.game.defs#cast", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#state.market", tgt: "at.turtleme.game.defs#market", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#state.reef", tgt: "at.turtleme.game.defs#reef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#state.rest", tgt: "at.turtleme.game.defs#rest", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "at.turtleme.game.defs#state.spot", tgt: "at.turtleme.game.defs#spot", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "at.turtleme.game.defs#cast" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#cast.elapsed" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#cast.left" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#cast.level" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#cast.mark" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#cast.seed" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#cast.streak" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#mark" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#mark.at" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#mark.dir" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#mark.index" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#mark.since" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#market" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#market.at" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#market.high" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#market.low" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#market.stale" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#patch" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#patch.count" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#patch.index" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#reef" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#reef.across" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#reef.known" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#reef.known:items" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#reef.laid" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#reef.opened" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#reef.opened:items" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#reef.over" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#reef.shoal" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#reef.swept" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#rest" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#rest.reef" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#rest.strike" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#spot" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#spot.movesAt" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#spot.since" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#state.bankedTurtles" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#state.cast" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#state.gp" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#state.items" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#state.market" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#state.outcome" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#state.reef" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#state.rest" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#state.shop" }
  • AddedVertex { vertex_id: "at.turtleme.game.defs#state.spot" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#spot", src: "at.turtleme.game.defs#spot", tgt: "at.turtleme.game.defs#spot.since", kind: "prop", name: Some("since") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#patch", src: "at.turtleme.game.defs#patch", tgt: "at.turtleme.game.defs#patch.index", kind: "prop", name: Some("index") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#patch", src: "at.turtleme.game.defs#patch", tgt: "at.turtleme.game.defs#patch.count", kind: "prop", name: Some("count") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#cast", src: "at.turtleme.game.defs#cast", tgt: "at.turtleme.game.defs#cast.elapsed", kind: "prop", name: Some("elapsed") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#cast", src: "at.turtleme.game.defs#cast", tgt: "at.turtleme.game.defs#cast.level", kind: "prop", name: Some("level") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#cast", src: "at.turtleme.game.defs#cast", tgt: "at.turtleme.game.defs#cast.mark", kind: "prop", name: Some("mark") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#cast", src: "at.turtleme.game.defs#cast", tgt: "at.turtleme.game.defs#cast.streak", kind: "prop", name: Some("streak") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#cast", src: "at.turtleme.game.defs#cast", tgt: "at.turtleme.game.defs#cast.left", kind: "prop", name: Some("left") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#cast", src: "at.turtleme.game.defs#cast", tgt: "at.turtleme.game.defs#cast.seed", kind: "prop", name: Some("seed") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#mark", src: "at.turtleme.game.defs#mark", tgt: "at.turtleme.game.defs#mark.dir", kind: "prop", name: Some("dir") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#mark", src: "at.turtleme.game.defs#mark", tgt: "at.turtleme.game.defs#mark.index", kind: "prop", name: Some("index") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#mark", src: "at.turtleme.game.defs#mark", tgt: "at.turtleme.game.defs#mark.at", kind: "prop", name: Some("at") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#mark", src: "at.turtleme.game.defs#mark", tgt: "at.turtleme.game.defs#mark.since", kind: "prop", name: Some("since") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#market", src: "at.turtleme.game.defs#market", tgt: "at.turtleme.game.defs#market.low", kind: "prop", name: Some("low") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#market", src: "at.turtleme.game.defs#market", tgt: "at.turtleme.game.defs#market.high", kind: "prop", name: Some("high") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#reef", src: "at.turtleme.game.defs#reef", tgt: "at.turtleme.game.defs#reef.across", kind: "prop", name: Some("across") }
  • Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#reef", src: "at.turtleme.game.defs#reef", tgt: "at.turtleme.game.defs#reef.shoal", kind: "prop", name: Some("shoal") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#cast.mark", tgt: "at.turtleme.game.defs#mark", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#market", tgt: "at.turtleme.game.defs#market.at", kind: "prop", name: Some("at") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#market", tgt: "at.turtleme.game.defs#market.stale", kind: "prop", name: Some("stale") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#reef", tgt: "at.turtleme.game.defs#reef.known", kind: "prop", name: Some("known") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#reef", tgt: "at.turtleme.game.defs#reef.laid", kind: "prop", name: Some("laid") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#reef", tgt: "at.turtleme.game.defs#reef.opened", kind: "prop", name: Some("opened") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#reef", tgt: "at.turtleme.game.defs#reef.over", kind: "prop", name: Some("over") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#reef", tgt: "at.turtleme.game.defs#reef.swept", kind: "prop", name: Some("swept") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#reef.known", tgt: "at.turtleme.game.defs#reef.known:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#reef.known:items", tgt: "at.turtleme.game.defs#patch", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#reef.opened", tgt: "at.turtleme.game.defs#reef.opened:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#reef.opened:items", tgt: "at.turtleme.game.defs#patch", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#rest", tgt: "at.turtleme.game.defs#rest.reef", kind: "prop", name: Some("reef") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#rest", tgt: "at.turtleme.game.defs#rest.strike", kind: "prop", name: Some("strike") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#spot", tgt: "at.turtleme.game.defs#spot.movesAt", kind: "prop", name: Some("movesAt") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.bankedTurtles", kind: "prop", name: Some("bankedTurtles") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.cast", kind: "prop", name: Some("cast") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.gp", kind: "prop", name: Some("gp") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.items", kind: "prop", name: Some("items") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.market", kind: "prop", name: Some("market") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.outcome", kind: "prop", name: Some("outcome") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.reef", kind: "prop", name: Some("reef") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.rest", kind: "prop", name: Some("rest") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.shop", kind: "prop", name: Some("shop") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#state", tgt: "at.turtleme.game.defs#state.spot", kind: "prop", name: Some("spot") }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#state.cast", tgt: "at.turtleme.game.defs#cast", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#state.market", tgt: "at.turtleme.game.defs#market", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#state.reef", tgt: "at.turtleme.game.defs#reef", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#state.rest", tgt: "at.turtleme.game.defs#rest", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "at.turtleme.game.defs#state.spot", tgt: "at.turtleme.game.defs#spot", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 +
    "cast": {
5 +
      "description": "A run of strikes. The seed every window is drawn from, the level the run opened at and the marker's state are all turtle meat's, so a client can draw the bar to the millisecond without being able to widen it, slow it or move the gold sliver.",
6 +
      "properties": {
7 +
        "elapsed": {
8 +
          "description": "How far into the run this reply reckons it is. A client sets its own clock from it, so the offset it reports for a strike is measured against the run turtle meat is timing.",
9 +
          "minimum": 0,
10 +
          "type": "integer"
11 +
        },
12 +
        "left": {
13 +
          "description": "Strikes the cast has left, landed or missed.",
14 +
          "minimum": 0,
15 +
          "type": "integer"
16 +
        },
17 +
        "level": {
18 +
          "description": "The Fishing level the cast opened at, which with the streak gives the width of the window and the pace of the marker. Held for the run, so a level gained mid-cast does not widen the bar under the player.",
19 +
          "maximum": 99,
20 +
          "minimum": 0,
21 +
          "type": "integer"
22 +
        },
23 +
        "mark": {
24 +
          "ref": "at.turtleme.game.defs#mark",
25 +
          "type": "ref"
26 +
        },
27 +
        "seed": {
28 +
          "description": "What the run's windows are drawn from.",
29 +
          "type": "integer"
30 +
        },
31 +
        "streak": {
32 +
          "description": "Strikes landed in a row, which is what narrows the window and quickens the marker.",
33 +
          "minimum": 0,
34 +
          "type": "integer"
35 +
        }
36 +
      },
37 +
      "required": [
38 +
        "seed",
39 +
        "level",
40 +
        "streak",
41 +
        "left",
42 +
        "mark",
43 +
        "elapsed"
44 +
      ],
45 +
      "type": "object"
46 +
    },
47 +
    "mark": {
48 +
      "description": "Where the marker was left after the last strike, and which window that laid down. With the run's seed, level and streak it is the whole bar: where the marker is at any later moment of the run follows from it and the clock, which is how a client and turtle meat draw and judge the same bar without describing it to one another.",
49 +
      "properties": {
50 +
        "at": {
51 +
          "description": "Where across the bar the marker was left, as a percentage of it.",
52 +
          "maximum": 100,
53 +
          "minimum": 0,
54 +
          "type": "number"
55 +
        },
56 +
        "dir": {
57 +
          "description": "Which way it is travelling: 1 towards the right end, -1 towards the left.",
58 +
          "type": "integer"
59 +
        },
60 +
        "index": {
61 +
          "description": "Which placement of the run's windows is on the bar. A turn at either end lays down the next one.",
62 +
          "minimum": 0,
63 +
          "type": "integer"
64 +
        },
65 +
        "since": {
66 +
          "description": "The moment of the run, in milliseconds, at which it started moving again. Until then it is held still for the splash to play over, and a strike thrown before it is refused.",
67 +
          "minimum": 0,
68 +
          "type": "integer"
69 +
        }
70 +
      },
71 +
      "required": [
72 +
        "at",
73 +
        "dir",
74 +
        "since",
75 +
        "index"
76 +
      ],
77 +
      "type": "object"
78 +
    },
79 +
    "market": {
80 +
      "description": "The Grand Exchange quote the server settles against, fetched from the Old School RuneScape Wiki's real-time API rather than taken from the caller. The graph on the page is drawn from the same API directly; this is the number a trade actually happens at.",
81 +
      "properties": {
82 +
        "at": {
83 +
          "description": "When turtle meat fetched it.",
84 +
          "format": "datetime",
85 +
          "type": "string"
86 +
        },
87 +
        "high": {
88 +
          "description": "What buyers are paying, so what a buy offer fills at.",
89 +
          "minimum": 1,
90 +
          "type": "integer"
91 +
        },
92 +
        "low": {
93 +
          "description": "What sellers are getting, so what a sell offer fills at, before the 2% tax.",
94 +
          "minimum": 1,
95 +
          "type": "integer"
96 +
        },
97 +
        "stale": {
98 +
          "description": "True when the price service could not be reached and this is the last quote that arrived. Still traded on, up to a point, because a price from twenty minutes ago is a price.",
99 +
          "type": "boolean"
100 +
        }
101 +
      },
102 +
      "required": [
103 +
        "high",
104 +
        "low"
105 +
      ],
106 +
      "type": "object"
107 +
    },
4 108
    "net": {
5 109
      "description": "The drift net, when it is in the water. Absent when it is not.",
6 110
      "properties": {
7 111
        "holding": {
8 112
          "description": "What the net would yield if hauled now. A readout for drawing, not a promise: nothing is banked until it is hauled, and the server works the figure out again at that point.",
9 113
          "minimum": 0,
10 114
          "type": "integer"
11 115
        },
12 116
        "setAt": {
13 117
          "format": "datetime",
14 118
          "type": "string"
15 119
        }
16 120
      },
17 121
      "type": "object"
18 122
    },
123 +
    "patch": {
124 +
      "description": "One patch of a reef and how many of the eight patches around it a turtle is under.",
125 +
      "properties": {
126 +
        "count": {
127 +
          "maximum": 8,
128 +
          "minimum": 0,
129 +
          "type": "integer"
130 +
        },
131 +
        "index": {
132 +
          "description": "Which patch, counted along each row from the top left.",
133 +
          "minimum": 0,
134 +
          "type": "integer"
135 +
        }
136 +
      },
137 +
      "required": [
138 +
        "index",
139 +
        "count"
140 +
      ],
141 +
      "type": "object"
142 +
    },
143 +
    "reef": {
144 +
      "description": "A reef board, as much of it as a player is allowed to know. Where the shoal lies is deliberately absent: a board laid out in the page is a board whose shoal is sitting in memory, and a player who looked would not be guessing at anything.",
145 +
      "properties": {
146 +
        "across": {
147 +
          "description": "How many patches across the board is. It is square.",
148 +
          "type": "integer"
149 +
        },
150 +
        "known": {
151 +
          "description": "Covered patches the open numbers prove safe, with what each one counts, alongside `opened`. What sweepReef hands over as `known`, for the whole board at once.",
152 +
          "items": {
153 +
            "ref": "#patch",
154 +
            "type": "ref"
155 +
          },
156 +
          "type": "array"
157 +
        },
158 +
        "laid": {
159 +
          "description": "Whether the shoal has gone down yet. It goes down on the first sweep, clear of it.",
160 +
          "type": "boolean"
161 +
        },
162 +
        "opened": {
163 +
          "description": "Every patch opened so far and what each one counts, on getState while the board is being played, so a page that has lost the board can draw it again. Nothing the sweeps that opened them did not already say.",
164 +
          "items": {
165 +
            "ref": "#patch",
166 +
            "type": "ref"
167 +
          },
168 +
          "type": "array"
169 +
        },
170 +
        "over": {
171 +
          "description": "How the board ended, or null while it is still being played.",
172 +
          "knownValues": [
173 +
            "clear",
174 +
            "scattered",
175 +
            "left"
176 +
          ],
177 +
          "type": "string"
178 +
        },
179 +
        "shoal": {
180 +
          "description": "How many sea turtles are under it, which the nets in the corner count down.",
181 +
          "type": "integer"
182 +
        },
183 +
        "swept": {
184 +
          "description": "How many patches have been opened.",
185 +
          "minimum": 0,
186 +
          "type": "integer"
187 +
        }
188 +
      },
189 +
      "required": [
190 +
        "across",
191 +
        "shoal"
192 +
      ],
193 +
      "type": "object"
194 +
    },
195 +
    "rest": {
196 +
      "description": "The moments two stretches of water are worth working again. Held as the moment it is up rather than a countdown, so closing the page does not hand the time back.",
197 +
      "properties": {
198 +
        "reef": {
199 +
          "description": "After a reef, however it ended.",
200 +
          "format": "datetime",
201 +
          "type": "string"
202 +
        },
203 +
        "strike": {
204 +
          "description": "After a run of strikes, however it ended. Null when the water has never been worked.",
205 +
          "format": "datetime",
206 +
          "type": "string"
207 +
        }
208 +
      },
209 +
      "type": "object"
210 +
    },
19 211
    "skill": {
20 212
      "properties": {
21 213
        "xp": {
22 214
          "minimum": 0,
23 215
          "type": "integer"
24 216
        }
25 217
      },
26 218
      "required": [
27 219
        "xp"
28 220
      ],
29 221
      "type": "object"
30 222
    },
223 +
    "spot": {
224 +
      "description": "A fishing spot. Where it is on the water is the page's business; when it leaves is not, because casting at water nobody is standing over has to be refusable.",
225 +
      "properties": {
226 +
        "movesAt": {
227 +
          "description": "When it wanders off, drawn from the moment it appeared and nothing else, so that both sides get the same answer without being told it.",
228 +
          "format": "datetime",
229 +
          "type": "string"
230 +
        },
231 +
        "since": {
232 +
          "description": "When this spot appeared.",
233 +
          "format": "datetime",
234 +
          "type": "string"
235 +
        }
236 +
      },
237 +
      "required": [
238 +
        "since"
239 +
      ],
240 +
      "type": "object"
241 +
    },
31 242
    "state": {
32 243
      "description": "A player's progress as the server holds it, with a receipt for publishing it. Every method returns this, so that a client always leaves a call holding something it can write to its own repository.",
33 244
      "properties": {
245 +
        "bankedTurtles": {
246 +
          "description": "Turtles held at the Grand Exchange rather than in the inventory.",
247 +
          "minimum": 0,
248 +
          "type": "integer"
249 +
        },
250 +
        "cast": {
251 +
          "description": "The run of strikes being played, when there is one. Null between casts, and once a run has ended by itself: what that leaves behind is a rest, which `rest` carries.",
252 +
          "ref": "#cast",
253 +
          "type": "ref"
254 +
        },
34 255
        "cooking": {
35 256
          "ref": "#skill",
36 257
          "type": "ref"
37 258
        },
38 259
        "did": {
39 260
          "format": "did",
40 261
          "type": "string"
41 262
        },
42 263
        "fishing": {
43 264
          "ref": "#skill",
44 265
          "type": "ref"
45 266
        },
267 +
        "gp": {
268 +
          "description": "Coins. Held here rather than by the client because a shop, an exchange and a player's own claim about what they can afford are the same question.",
269 +
          "minimum": 0,
270 +
          "type": "integer"
271 +
        },
272 +
        "items": {
273 +
          "description": "How many of each kind the player is carrying, keyed by item. Which of the inventory's slots a stack sits in is the client's business and is not recorded.",
274 +
          "type": "unknown"
275 +
        },
276 +
        "market": {
277 +
          "description": "What a sea turtle is going for, as turtle meat last fetched it. Present only on the methods that need a price, and null when none recent enough to trade on could be had.",
278 +
          "ref": "#market",
279 +
          "type": "ref"
280 +
        },
46 281
        "net": {
47 282
          "ref": "#net",
48 283
          "type": "ref"
49 284
        },
285 +
        "outcome": {
286 +
          "description": "What the call just did, in facts rather than sentences: what was caught, bought, cooked or refused. The page puts it into words, because phrasing is not a number anyone else can see. Absent on a read. An outcome carrying `stale: true` means another call settled first and nothing was written; the state beside it is what is actually true.",
287 +
          "type": "unknown"
288 +
        },
50 289
        "proof": {
51 290
          "description": "A compact JWS over these figures, signed by turtle meat. Writing it into at.turtleme.player.state is what puts a player on the leaderboard; not writing it is how they stay off.",
52 291
          "maxLength": 4096,
53 292
          "type": "string"
54 293
        },
294 +
        "reef": {
295 +
          "description": "The reef board being played, when there is one. Null between boards.",
296 +
          "ref": "#reef",
297 +
          "type": "ref"
298 +
        },
299 +
        "rest": {
300 +
          "description": "When the two stretches of water that rest are worth working again.",
301 +
          "ref": "#rest",
302 +
          "type": "ref"
303 +
        },
55 304
        "seq": {
56 305
          "description": "Increases whenever the state changes, and never otherwise. Publishing a receipt whose sequence has already been counted is a no-op rather than an error.",
57 306
          "minimum": 0,
58 307
          "type": "integer"
59 308
        },
309 +
        "shop": {
310 +
          "description": "What each of the shop's shelves is holding right now, keyed by item, for a page that has to draw a counter. A shelf nobody has traded at is absent and sits at its usual quantity.",
311 +
          "type": "unknown"
312 +
        },
313 +
        "spot": {
314 +
          "description": "The fishing spot being stood over, when there is one. Null when there is not.",
315 +
          "ref": "#spot",
316 +
          "type": "ref"
317 +
        },
60 318
        "stats": {
61 319
          "description": "Lifetime tallies.",
62 320
          "type": "unknown"
63 321
        }
64 322
      },
65 323
      "required": [
66 324
        "did",
67 325
        "seq",
68 326
        "proof"
69 327
      ],
70 328
      "type": "object"
71 329
    }
72 330
  },
73 331
  "id": "at.turtleme.game.defs",
74 332
  "lexicon": 1
75 333
}

Compare Other Versions

Lexicon Garden

@