Sea of Stone is a set of maps. Each sea's ports, fishing grounds, pirate
coves, regattas, its fish and its story come from one setting in the map
file, rules.sea, and everything below works on any map that sets it. Every
seat is a crew with one ship: fishing, trading, fighting and sailing between
your ports.
Start from the Corsair Isles
Download the Corsair Isles and open it in the Forge with File → Import Map JSON…. Its voyage comes with it.
To start from a blank map instead, open the Players module in the Forge. Under Rules there is a Sea panel. Switch it on and it adds a home port and a fishing ground in the middle of the map: move them onto your own water in the panel's text box, and paint the coast. Switching the sea on also turns standard victory, the starting base, the AI's armies and building off; turn any back on in Rules if your map wants it.
Switch a voyage on: rules.sea
{
"rules": {
"sea": {
"version": 1,
"homePort": "saltmarsh",
"ports": [
{ "id": "saltmarsh", "name": "Saltmarsh", "people": "dwarf", "x": 40, "y": 60, "r": 3, "exitX": 46, "exitY": 60, "exitHeading": 0 }
],
"spots": [
{ "id": "the_shelf", "name": "The Shelf", "x": 70, "y": 60, "r": 4, "depthM": 30, "fish": [{ "id": "silver_sprat", "count": 8 }] }
],
"startGold": 200,
"danger": "fair"
}
}
}Positions are in tiles. A port's x and y are its harbour mouth, where a
ship docks; exitX, exitY and exitHeading (radians) are where a ship
leaves from. A fishing ground (spots) holds a stock of each species, which
grows back. The Sea panel edits the voyage's own settings (starting gold, the
length of a day, danger, a gentle reel, bounties, Pirate Waters) and shows the
whole voyage as JSON: pirate coves and roamers, regions, bottles,
merchant lanes, regattas, wonders and the rest.
Your own fish: rules.sea.fish
The shipped species are there for any map to stock by id. A map can add its own, or change a shipped one by giving its id:
{
"fish": [
{
"id": "glass_eel", "name": "Glass Eel", "region": "lagoon", "sprite": "silver_sprat.webp", "shape": "##",
"lengthCm": [30, 60], "price": 40, "depthM": [0, 20], "time": "any", "behaviour": "darter", "rarity": "rare",
"swim": 1.4, "power": 0.3, "stamina": 8, "wary": 0.2, "freshDays": 1, "bait": ["worm"],
"codex": "You can read the tide through it.", "fight": "leaper"
}
]
}sprite is one of the shipped fish paintings by file name. shape is its
footprint in the hold, rows split by /. fight is how it fights on the
line (runner, thrasher, sounder, circler, holer, leaper), and
protected: true has the harbours fine a crew for landing it.
Your own story: rules.sea.story
"story": "drowned_crown" tells Sea of Stone's own story. Or write your own
in the same shape: a cast, and acts of steps, each step one objective with
the lines spoken when it begins and ends.
{
"story": {
"title": "The Skipper's Debt",
"cast": {
"skipper": { "id": "skipper", "name": "Old Brann", "title": "Skipper, retired", "people": "dwarf", "portrait": "harbourmaster" }
},
"done": "The debt is paid.",
"acts": [
{
"id": "debt", "n": 1, "title": "Home Waters", "waters": "The Lagoon",
"steps": [
{
"id": "come_home", "title": "Come home", "goal": "Dock at Saltmarsh.",
"objective": { "kind": "visit", "port": "saltmarsh" },
"intro": [{ "who": "skipper", "text": "Bring her home, and mind the rocks." }],
"outro": [{ "who": "narrator", "text": "The harbour bell rings once." }]
}
]
}
]
}
}An objective is one of visit a port, sell a number of fish, pay gold
at a port, catch fish (of a species, or below a depth), find a bottle,
sink ships, board a merchant or a pirate, reach a story point
(rules.sea.storyPoints), or choose between two to four options; a later
step with a branch plays only after that choice. A step may give a
reward of gold, standing with the League or the Brotherhood, a blueprint
or an unlock (which opens a region or a gate). A speaker's portrait is one
of the story portraits by name, or a picture you uploaded.
A voyage whose rules cannot run plays as an ordinary map instead. Validation (F10) and the Sea panel list why.