At this level
at.turtleme · 1- at.turtleme.chat.clan space A turtle meat clan: a chat channel held in an atproto permissioned space, readable only by the people its owner has let in. It is anchored on the owner's DID, and its key is the clan's name: lowercase letters, digits and hyphens, so an account can run several and a player joins one by its owner and name, as in alice.bsky.social/turtlers. Its lines are at.turtleme.chat.message records whose room is the space's own at:// URI.
- at.turtleme.chat.message record A single message sent to a turtle meat chat room. Messages live in the author's own repository; a room is assembled by reading the backlinks that point at it.
- at.turtleme.game.buy procedure Buy from the shop's shelf. The price is not a parameter: a shelf's price moves with what it is holding, and a client that could quote its own would buy a shop out at the price of the first item. The counter takes what there is and what the coins run to rather than refusing the lot, so fewer may be bought than were asked for. Requires an atproto service auth token addressed to did:web:turtleme.at#turtle_game and naming this method, so a token issued for one call cannot be spent on another.
- at.turtleme.game.cast procedure Cast out and start a run of strikes. The reply carries the seed every window of the run is drawn from, so the page can render the bar without being able to widen it or move the gold sliver. A cast while the water is still resting is refused. A cast while a run is still being played hands that run back, streak, strikes left and all, rather than starting another, so a page that lost sight of a run carries on with it and leaving a cast hanging is still not a way to fish without ever resting. A run
- at.turtleme.game.castReef procedure Anchor over a fresh reef. The board is made empty and the shoal goes down on the first sweep, clear of it, so the patch a round opens with is never the one that ends it. A patch named with the cast is that first sweep, settled in the same call, and the outcome carries what it opened as sweepReef's would. Where the shoal lies is never sent: the whole reason this is settled here is that a board laid out in the page is a board whose shoal is sitting in memory. Anchoring over a board that is still b
- at.turtleme.game.castSpot procedure Stand over a fishing spot. Casting at one that has not yet wandered off does not move it, the same way setting a net that is already out does not restart it. When a spot leaves is drawn from the moment it arrived, so the page and turtle meat work out the same answer and neither has to tell the other. Requires an atproto service auth token addressed to did:web:turtleme.at#turtle_game and naming this method, so a token issued for one call cannot be spent on another.
- at.turtleme.game.cook procedure Put one raw sea turtle on the range. One call, one roll, one result: whether it burnt is turtle meat's die and not the caller's. A cook takes four ticks, and asking again inside that is refused, so the range runs at the speed a range runs at however the button is being pressed. Requires an atproto service auth token addressed to did:web:turtleme.at#turtle_game and naming this method, so a token issued for one call cannot be spent on another.
- at.turtleme.game.defs defs 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.
- at.turtleme.game.exchange procedure Put an offer through the Grand Exchange. The price an offer fills at is the one turtle meat fetched from the Old School RuneScape Wiki, never one the caller sent: a client that could quote its own price would be setting its own exchange rate. What the caller sends is the limit it is willing to trade at, and an offer on the wrong side of the market does not fill, the way it would sit unfilled in the game. Sales are taxed at 2% per item, as they are there. When no price recent enough to trade on c
- at.turtleme.game.fishSpot procedure One cast at the fishing spot. Whether it catches anything, and whether what it catches is a sea turtle, are turtle meat's rolls and not the caller's. A cast takes four ticks and casting again inside that is refused, as is casting at a spot that has already wandered off. Requires an atproto service auth token addressed to did:web:turtleme.at#turtle_game and naming this method, so a token issued for one call cannot be spent on another.
- at.turtleme.game.getState procedure Read a player's own progress, without changing anything. Requires an atproto service auth token addressed to did:web:turtleme.at#turtle_game and naming this method, so a token issued for one call cannot be spent on another.
- at.turtleme.game.haulNet procedure Haul the drift net in, banking whatever elapsed time earned. Hauling an empty net costs nothing and earns nothing. Requires an atproto service auth token addressed to did:web:turtleme.at#turtle_game and naming this method, so a token issued for one call cannot be spent on another.
- at.turtleme.game.leaveReef procedure Up anchor and leave the shoal where it lies. Nothing comes aboard, because a board pays the whole shoal or it pays nothing, and the water wants the same wait it would after any other ending. Requires an atproto service auth token addressed to did:web:turtleme.at#turtle_game and naming this method, so a token issued for one call cannot be spent on another.
- at.turtleme.game.reelIn procedure End a run of strikes early and start the rest. Every way a run can end costs the same minute — running out of strikes, letting the line sit, filling the inventory, reeling in, walking away — because any of them left free would be the strike limit handed back for a click. A run that had already ended by itself, its line left sitting through its idle passes, rests from when it ended rather than from the reeling. Reeling in when there is no run does nothing. Requires an atproto service auth token a
- at.turtleme.game.sell procedure Sell to the shop. What it pays falls as its shelf fills, and never goes under a tenth of what the item is worth. Selling more than is held sells what is held. Requires an atproto service auth token addressed to did:web:turtleme.at#turtle_game and naming this method, so a token issued for one call cannot be spent on another.
- at.turtleme.game.session record One adjudicated session of play, published by the player as a public trail of how their progress was earned. The leaderboard does not need these records; at.turtleme.player.state alone is enough to rank someone. They exist so that progress can be read as a history rather than a number, and so other clients have something to render. Written per session rather than per catch, which keeps a player's repository from growing without limit.
- at.turtleme.game.setNet procedure Put the drift net in the water. Setting a net that is already set does not restart it. Requires an atproto service auth token addressed to did:web:turtleme.at#turtle_game and naming this method, so a token issued for one call cannot be spent on another.
- at.turtleme.game.strike procedure Strike at the marker. The caller says how far into the cast the finger came down, in milliseconds, and nothing else: where the marker was at that moment, which of the run's windows it had laid down on the way, how wide that window is and where the sliver sits in it are all worked out by turtle meat from the run's own seed and the clock it started on. The moment itself is the one thing no server can see, and it is held between the run's elapsed time, past which nothing has happened yet, and the s
- at.turtleme.game.sweepReef procedure Sweep one patch of the reef, or the handful a chord opens, in the order given. What comes back is the patches that opened and what each one counts. While the board is still being played it also carries the covered patches the open numbers already prove safe, with what each of those counts, so a page can open one the moment it is tapped: a player could open every one of them at no risk and read the same counts. Where the shoal lies is not sent until the board is over. Sweeping a patch with a turt
- at.turtleme.player.state record A player's game progress, as adjudicated by turtle meat and published by the player. The record lives in the player's own repository and can be deleted by them at any time, which removes them from the public leaderboard. It is a complete snapshot rather than a change since last time, so withholding an unflattering one gains nothing: any later snapshot already accounts for it.
- at.turtleme.player.status record A declaration that an account plays turtle meat, and optionally that it is playing right now. Written by the player's own client and not verified by anyone: nothing here affects scoring, so there is nothing to gain by lying in it. Progress that does affect scoring lives in at.turtleme.player.state, which carries a signature.