at.turtleme.game.defs
Schema Diff
+183 -0
Compatibility Analysis
Breaking Changes Detected
10 breaking changes, 56 non-breaking changes.
Breaking Changes (10)
- 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#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#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.span", kind: "prop", name: Some("span") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#cast", src: "at.turtleme.game.defs#cast", tgt: "at.turtleme.game.defs#cast.index", kind: "prop", name: Some("index") }
- 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#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#spot", src: "at.turtleme.game.defs#spot", tgt: "at.turtleme.game.defs#spot.since", kind: "prop", name: Some("since") }
Non-Breaking Changes (56)
- AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#cast" }
- AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#cast.index" }
- AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#cast.left" }
- AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#cast.seed" }
- AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#cast.span" }
- AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#cast.streak" }
- 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#reef" }
- AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#reef.across" }
- AddedVertex AddedVertex { vertex_id: "at.turtleme.game.defs#reef.laid" }
- 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#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.laid", kind: "prop", name: Some("laid") }
- 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#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.index" }AddedVertex { vertex_id: "at.turtleme.game.defs#cast.left" }AddedVertex { vertex_id: "at.turtleme.game.defs#cast.seed" }AddedVertex { vertex_id: "at.turtleme.game.defs#cast.span" }AddedVertex { vertex_id: "at.turtleme.game.defs#cast.streak" }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#reef" }AddedVertex { vertex_id: "at.turtleme.game.defs#reef.across" }AddedVertex { vertex_id: "at.turtleme.game.defs#reef.laid" }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#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#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#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.span", kind: "prop", name: Some("span") }
- Breaking: RequiredEdgeAdded { vertex_id: "at.turtleme.game.defs#cast", src: "at.turtleme.game.defs#cast", tgt: "at.turtleme.game.defs#cast.index", kind: "prop", name: Some("index") }
- 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#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") }
- 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") }
- 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.laid", kind: "prop", name: Some("laid") }
- 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#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 is what every window of the run is drawn from, and it is turtle meat's, so a client can render the bar without being able to widen it or move the gold sliver.",
6
+
"properties": {
7
+
"index": {
8
+
"description": "The earliest placement a strike may still name. Placements only go forward.",
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
+
"seed": {
18
+
"description": "What the run's windows are drawn from.",
19
+
"type": "integer"
20
+
},
21
+
"span": {
22
+
"description": "How wide the window is now, at this level and this streak. Worked out by turtle meat, not asked for.",
23
+
"type": "number"
24
+
},
25
+
"streak": {
26
+
"description": "Strikes landed in a row, which is what narrows the window and quickens the marker.",
27
+
"minimum": 0,
28
+
"type": "integer"
29
+
}
30
+
},
31
+
"required": [
32
+
"seed",
33
+
"streak",
34
+
"left",
35
+
"index",
36
+
"span"
37
+
],
38
+
"type": "object"
39
+
},
40
+
"market": {
41
+
"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.",
42
+
"properties": {
43
+
"at": {
44
+
"description": "When turtle meat fetched it.",
45
+
"format": "datetime",
46
+
"type": "string"
47
+
},
48
+
"high": {
49
+
"description": "What buyers are paying, so what a buy offer fills at.",
50
+
"minimum": 1,
51
+
"type": "integer"
52
+
},
53
+
"low": {
54
+
"description": "What sellers are getting, so what a sell offer fills at, before the 2% tax.",
55
+
"minimum": 1,
56
+
"type": "integer"
57
+
},
58
+
"stale": {
59
+
"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.",
60
+
"type": "boolean"
61
+
}
62
+
},
63
+
"required": [
64
+
"high",
65
+
"low"
66
+
],
67
+
"type": "object"
68
+
},
4
69
"net": {
5
70
"description": "The drift net, when it is in the water. Absent when it is not.",
6
71
"properties": {
7
72
"holding": {
8
73
"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
74
"minimum": 0,
10
75
"type": "integer"
11
76
},
12
77
"setAt": {
13
78
"format": "datetime",
14
79
"type": "string"
15
80
}
16
81
},
17
82
"type": "object"
18
83
},
84
+
"reef": {
85
+
"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.",
86
+
"properties": {
87
+
"across": {
88
+
"description": "How many patches across the board is. It is square.",
89
+
"type": "integer"
90
+
},
91
+
"laid": {
92
+
"description": "Whether the shoal has gone down yet. It goes down on the first sweep, clear of it.",
93
+
"type": "boolean"
94
+
},
95
+
"over": {
96
+
"description": "How the board ended, or null while it is still being played.",
97
+
"knownValues": [
98
+
"clear",
99
+
"scattered",
100
+
"left"
101
+
],
102
+
"type": "string"
103
+
},
104
+
"shoal": {
105
+
"description": "How many sea turtles are under it, which the nets in the corner count down.",
106
+
"type": "integer"
107
+
},
108
+
"swept": {
109
+
"description": "How many patches have been opened.",
110
+
"minimum": 0,
111
+
"type": "integer"
112
+
}
113
+
},
114
+
"required": [
115
+
"across",
116
+
"shoal"
117
+
],
118
+
"type": "object"
119
+
},
120
+
"rest": {
121
+
"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.",
122
+
"properties": {
123
+
"reef": {
124
+
"description": "After a reef, however it ended.",
125
+
"format": "datetime",
126
+
"type": "string"
127
+
},
128
+
"strike": {
129
+
"description": "After a run of strikes, however it ended. Null when the water has never been worked.",
130
+
"format": "datetime",
131
+
"type": "string"
132
+
}
133
+
},
134
+
"type": "object"
135
+
},
19
136
"skill": {
20
137
"properties": {
21
138
"xp": {
22
139
"minimum": 0,
23
140
"type": "integer"
24
141
}
25
142
},
26
143
"required": [
27
144
"xp"
28
145
],
29
146
"type": "object"
30
147
},
148
+
"spot": {
149
+
"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.",
150
+
"properties": {
151
+
"movesAt": {
152
+
"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.",
153
+
"format": "datetime",
154
+
"type": "string"
155
+
},
156
+
"since": {
157
+
"description": "When this spot appeared.",
158
+
"format": "datetime",
159
+
"type": "string"
160
+
}
161
+
},
162
+
"required": [
163
+
"since"
164
+
],
165
+
"type": "object"
166
+
},
31
167
"state": {
32
168
"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
169
"properties": {
170
+
"bankedTurtles": {
171
+
"description": "Turtles held at the Grand Exchange rather than in the inventory.",
172
+
"minimum": 0,
173
+
"type": "integer"
174
+
},
175
+
"cast": {
176
+
"description": "The run of strikes being played, when there is one. Null between casts.",
177
+
"ref": "#cast",
178
+
"type": "ref"
179
+
},
34
180
"cooking": {
35
181
"ref": "#skill",
36
182
"type": "ref"
37
183
},
38
184
"did": {
39
185
"format": "did",
40
186
"type": "string"
41
187
},
42
188
"fishing": {
43
189
"ref": "#skill",
44
190
"type": "ref"
45
191
},
192
+
"gp": {
193
+
"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.",
194
+
"minimum": 0,
195
+
"type": "integer"
196
+
},
197
+
"items": {
198
+
"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.",
199
+
"type": "unknown"
200
+
},
201
+
"market": {
202
+
"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.",
203
+
"ref": "#market",
204
+
"type": "ref"
205
+
},
46
206
"net": {
47
207
"ref": "#net",
48
208
"type": "ref"
49
209
},
210
+
"outcome": {
211
+
"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.",
212
+
"type": "unknown"
213
+
},
50
214
"proof": {
51
215
"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
216
"maxLength": 4096,
53
217
"type": "string"
54
218
},
219
+
"reef": {
220
+
"description": "The reef board being played, when there is one. Null between boards.",
221
+
"ref": "#reef",
222
+
"type": "ref"
223
+
},
224
+
"rest": {
225
+
"description": "When the two stretches of water that rest are worth working again.",
226
+
"ref": "#rest",
227
+
"type": "ref"
228
+
},
55
229
"seq": {
56
230
"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
231
"minimum": 0,
58
232
"type": "integer"
59
233
},
234
+
"shop": {
235
+
"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.",
236
+
"type": "unknown"
237
+
},
238
+
"spot": {
239
+
"description": "The fishing spot being stood over, when there is one. Null when there is not.",
240
+
"ref": "#spot",
241
+
"type": "ref"
242
+
},
60
243
"stats": {
61
244
"description": "Lifetime tallies.",
62
245
"type": "unknown"
63
246
}
64
247
},
65
248
"required": [
66
249
"did",
67
250
"seq",
68
251
"proof"
69
252
],
70
253
"type": "object"
71
254
}
72
255
},
73
256
"id": "at.turtleme.game.defs",
74
257
"lexicon": 1
75
258
}