@polycode-projects/the-mechanical-code-talker 4.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +178 -9
- package/corpus/reference/index.json.gz +0 -0
- package/corpus/reference/manifest.json +8 -8
- package/corpus/reference/shards/ref-00.jsonl.gz +0 -0
- package/corpus/sprites/src/sprite-facts.jsonl +401 -0
- package/corpus/worlds/index.json.gz +0 -0
- package/corpus/worlds/manifest.json +49 -9
- package/corpus/worlds/shards/greyvale-museum.jsonl.gz +0 -0
- package/corpus/worlds/shards/lantern-cottage.jsonl.gz +0 -0
- package/corpus/worlds/shards/mud-hollow.jsonl.gz +0 -0
- package/corpus/worlds/shards/mud-warren.jsonl.gz +0 -0
- package/corpus/worlds/shards/spider-fly.jsonl.gz +0 -0
- package/corpus/worlds/src/greyvale-museum.jsonl +136 -0
- package/corpus/worlds/src/lantern-cottage.jsonl +60 -0
- package/corpus/worlds/src/mud-hollow.jsonl +82 -0
- package/corpus/worlds/src/mud-warren.jsonl +124 -0
- package/corpus/worlds/src/spider-fly.jsonl +1 -1
- package/data/sprites/animal-icon.toml +11 -5
- package/data/sprites/book-icon.toml +9 -5
- package/data/sprites/cabinet-icon.toml +10 -5
- package/data/sprites/cellar-icon.toml +16 -6
- package/data/sprites/container-icon.toml +7 -3
- package/data/sprites/desk-icon.toml +8 -5
- package/data/sprites/dog-icon.toml +8 -5
- package/data/sprites/dog-with-colour-icon.toml +13 -12
- package/data/sprites/drawing-room-icon.toml +14 -5
- package/data/sprites/egg-icon.toml +6 -3
- package/data/sprites/fly-icon.toml +10 -5
- package/data/sprites/furniture-icon.toml +5 -3
- package/data/sprites/garden-icon.toml +10 -3
- package/data/sprites/key-icon.toml +3 -1
- package/data/sprites/kitchen-icon.toml +15 -6
- package/data/sprites/lamp-icon.toml +9 -4
- package/data/sprites/letter-icon.toml +7 -4
- package/data/sprites/library-icon.toml +14 -3
- package/data/sprites/pan-icon.toml +7 -3
- package/data/sprites/person-icon.toml +6 -2
- package/data/sprites/poodle-icon.toml +1 -1
- package/data/sprites/portable-icon.toml +6 -4
- package/data/sprites/portrait-icon.toml +7 -4
- package/data/sprites/room-icon.toml +11 -2
- package/data/sprites/spider-icon.toml +9 -3
- package/data/sprites/study-icon.toml +10 -2
- package/package.json +5 -4
- package/src/adapters/memory/core.mjs +20 -0
- package/src/domain/ask-vocab.mjs +71 -0
- package/src/domain/ask.mjs +168 -0
- package/src/domain/game-config.mjs +11 -0
- package/src/domain/grammar/ace.mjs +40 -4
- package/src/domain/grammar/lexicon-core.json +2 -1
- package/src/domain/grammar/lexicon.mjs +18 -0
- package/src/domain/mud-facts.mjs +15 -0
- package/src/domain/reference-pack.mjs +31 -7
- package/src/domain/router/drive.mjs +35 -9
- package/src/domain/router/registry.mjs +24 -4
- package/src/domain/router/resolver.mjs +102 -40
- package/src/domain/scene-compose.mjs +117 -0
- package/src/domain/spider-fly-world.mjs +37 -1
- package/src/domain/sprite-facts.mjs +0 -0
- package/src/domain/sprite-request.mjs +156 -0
- package/src/domain/sprite-templates.mjs +169 -20
- package/src/services/adventure-editor.mjs +8 -14
- package/src/services/adventure-viz.mjs +209 -157
- package/src/services/adventure.mjs +526 -391
- package/src/services/chat-page-viz.mjs +69 -25
- package/src/services/chat.mjs +200 -51
- package/src/services/code-explorer-viz.mjs +102 -62
- package/src/services/extract-facts.mjs +4 -7
- package/src/services/ingest-viz.mjs +68 -82
- package/src/services/ledger-viz.mjs +136 -67
- package/src/services/memory-panel-viz.mjs +62 -0
- package/src/services/mud-editor.mjs +10 -15
- package/src/services/mud-turn.mjs +6 -6
- package/src/services/mud-viz.mjs +1016 -208
- package/src/services/p2p-room.mjs +90 -23
- package/src/services/plan-pddl.mjs +3 -1
- package/src/services/plan-viz.mjs +123 -64
- package/src/services/research-viz.mjs +160 -108
- package/src/services/spider-fly-turn.mjs +15 -23
- package/src/services/spider-fly-viz.mjs +146 -161
- package/src/services/spider-fly.mjs +69 -11
- package/src/services/sprite-catalog-viz.mjs +414 -240
- package/src/services/viz-boot.mjs +71 -0
- package/src/services/viz-room-graph.mjs +203 -0
- package/src/services/viz-theme.mjs +90 -1
- package/src/services/viz-ticker.mjs +22 -0
- package/src/surfaces/web/adventure-browser-entry.mjs +49 -33
- package/src/surfaces/web/chat-browser-entry.mjs +30 -105
- package/src/surfaces/web/code-explorer-browser-entry.mjs +168 -24
- package/src/surfaces/web/ingest-browser-entry.mjs +3 -13
- package/src/surfaces/web/ledger-browser-entry.mjs +7 -47
- package/src/surfaces/web/memory-ask-browser.bundle.js +127 -124
- package/src/surfaces/web/memory-stats.mjs +11 -0
- package/src/surfaces/web/mud-browser-entry.mjs +71 -29
- package/src/surfaces/web/plan-browser-entry.mjs +22 -40
- package/src/surfaces/web/research-browser-entry.mjs +26 -41
- package/src/surfaces/web/spider-fly-browser-entry.mjs +45 -28
- package/src/surfaces/web/sprites-browser-entry.mjs +14 -27
- package/src/surfaces/web/turn-session.mjs +120 -0
- package/src/tools/definitions.mjs +30 -0
- package/src/tools/handlers/index.mjs +6 -3
- package/src/tools/handlers/kit.mjs +19 -2
- package/src/tools/handlers/tmct-ask.mjs +11 -6
- package/src/tools/handlers/tmct-ingest.mjs +5 -1
- package/src/tools/handlers/tmct-related.mjs +4 -4
- package/src/tools/handlers/tmct-sprite.mjs +147 -0
- package/src/tools/memory-fallthrough.mjs +9 -2
- package/src/tools/server.mjs +25 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
{"world":"mud-warren","kind":"meta","opening":"a deep warren under a beech wood, four galleries wide, with a fox earth off the north gallery and an owl on the stump above. Food is thin down here. Say \"look\" to look around and \"go down\" to drop into the warren. Above ground the only dig is straight down; under the soil you can dig north, south, east or west, or up to break the surface."}
|
|
2
|
+
{"world":"mud-warren","kind":"fact","subject":"clearing","predicate":"rdf:type","object":"room"}
|
|
3
|
+
{"world":"mud-warren","kind":"fact","subject":"clearing","predicate":"mgx:is-origin","object":"true"}
|
|
4
|
+
{"world":"mud-warren","kind":"fact","subject":"stump","predicate":"rdf:type","object":"room"}
|
|
5
|
+
{"world":"mud-warren","kind":"fact","subject":"warren-mouth","predicate":"rdf:type","object":"room"}
|
|
6
|
+
{"world":"mud-warren","kind":"fact","subject":"north-gallery","predicate":"rdf:type","object":"room"}
|
|
7
|
+
{"world":"mud-warren","kind":"fact","subject":"south-gallery","predicate":"rdf:type","object":"room"}
|
|
8
|
+
{"world":"mud-warren","kind":"fact","subject":"east-run","predicate":"rdf:type","object":"room"}
|
|
9
|
+
{"world":"mud-warren","kind":"fact","subject":"west-run","predicate":"rdf:type","object":"room"}
|
|
10
|
+
{"world":"mud-warren","kind":"fact","subject":"fox-earth","predicate":"rdf:type","object":"room"}
|
|
11
|
+
{"world":"mud-warren","kind":"fact","subject":"clearing","predicate":"mgx:has-exit-north","object":"stump"}
|
|
12
|
+
{"world":"mud-warren","kind":"fact","subject":"stump","predicate":"mgx:has-exit-south","object":"clearing"}
|
|
13
|
+
{"world":"mud-warren","kind":"fact","subject":"clearing","predicate":"mgx:has-exit-down","object":"warren-mouth"}
|
|
14
|
+
{"world":"mud-warren","kind":"fact","subject":"warren-mouth","predicate":"mgx:has-exit-up","object":"clearing"}
|
|
15
|
+
{"world":"mud-warren","kind":"fact","subject":"warren-mouth","predicate":"mgx:has-exit-north","object":"north-gallery"}
|
|
16
|
+
{"world":"mud-warren","kind":"fact","subject":"north-gallery","predicate":"mgx:has-exit-south","object":"warren-mouth"}
|
|
17
|
+
{"world":"mud-warren","kind":"fact","subject":"warren-mouth","predicate":"mgx:has-exit-south","object":"south-gallery"}
|
|
18
|
+
{"world":"mud-warren","kind":"fact","subject":"south-gallery","predicate":"mgx:has-exit-north","object":"warren-mouth"}
|
|
19
|
+
{"world":"mud-warren","kind":"fact","subject":"warren-mouth","predicate":"mgx:has-exit-east","object":"east-run"}
|
|
20
|
+
{"world":"mud-warren","kind":"fact","subject":"east-run","predicate":"mgx:has-exit-west","object":"warren-mouth"}
|
|
21
|
+
{"world":"mud-warren","kind":"fact","subject":"warren-mouth","predicate":"mgx:has-exit-west","object":"west-run"}
|
|
22
|
+
{"world":"mud-warren","kind":"fact","subject":"west-run","predicate":"mgx:has-exit-east","object":"warren-mouth"}
|
|
23
|
+
{"world":"mud-warren","kind":"fact","subject":"north-gallery","predicate":"mgx:has-exit-east","object":"fox-earth"}
|
|
24
|
+
{"world":"mud-warren","kind":"fact","subject":"fox-earth","predicate":"mgx:has-exit-west","object":"north-gallery"}
|
|
25
|
+
{"world":"mud-warren","kind":"fact","subject":"mole-1","predicate":"rdf:type","object":"adventurer"}
|
|
26
|
+
{"world":"mud-warren","kind":"fact","subject":"vole-1","predicate":"rdf:type","object":"adventurer"}
|
|
27
|
+
{"world":"mud-warren","kind":"fact","subject":"badger-2","predicate":"rdf:type","object":"adventurer"}
|
|
28
|
+
{"world":"mud-warren","kind":"fact","subject":"groundhog-1","predicate":"rdf:type","object":"adventurer"}
|
|
29
|
+
{"world":"mud-warren","kind":"fact","subject":"meerkat-1","predicate":"rdf:type","object":"adventurer"}
|
|
30
|
+
{"world":"mud-warren","kind":"fact","subject":"mole-1","predicate":"mgx:currently-in","object":"clearing"}
|
|
31
|
+
{"world":"mud-warren","kind":"fact","subject":"vole-1","predicate":"mgx:currently-in","object":"clearing"}
|
|
32
|
+
{"world":"mud-warren","kind":"fact","subject":"badger-2","predicate":"mgx:currently-in","object":"warren-mouth"}
|
|
33
|
+
{"world":"mud-warren","kind":"fact","subject":"groundhog-1","predicate":"mgx:currently-in","object":"warren-mouth"}
|
|
34
|
+
{"world":"mud-warren","kind":"fact","subject":"meerkat-1","predicate":"mgx:currently-in","object":"south-gallery"}
|
|
35
|
+
{"world":"mud-warren","kind":"fact","subject":"mole-1","predicate":"mgx:hasMass","object":"8"}
|
|
36
|
+
{"world":"mud-warren","kind":"fact","subject":"vole-1","predicate":"mgx:hasMass","object":"6"}
|
|
37
|
+
{"world":"mud-warren","kind":"fact","subject":"badger-2","predicate":"mgx:hasMass","object":"12"}
|
|
38
|
+
{"world":"mud-warren","kind":"fact","subject":"groundhog-1","predicate":"mgx:hasMass","object":"9"}
|
|
39
|
+
{"world":"mud-warren","kind":"fact","subject":"meerkat-1","predicate":"mgx:hasMass","object":"9"}
|
|
40
|
+
{"world":"mud-warren","kind":"fact","subject":"predator","predicate":"rdfs:subClassOf","object":"animal"}
|
|
41
|
+
{"world":"mud-warren","kind":"fact","subject":"fox","predicate":"rdfs:subClassOf","object":"predator"}
|
|
42
|
+
{"world":"mud-warren","kind":"fact","subject":"owl","predicate":"rdfs:subClassOf","object":"predator"}
|
|
43
|
+
{"world":"mud-warren","kind":"fact","subject":"fox-1","predicate":"rdf:type","object":"fox"}
|
|
44
|
+
{"world":"mud-warren","kind":"fact","subject":"fox-1","predicate":"mgx:currently-in","object":"fox-earth"}
|
|
45
|
+
{"world":"mud-warren","kind":"fact","subject":"fox-1","predicate":"mgx:is-predator","object":"true"}
|
|
46
|
+
{"world":"mud-warren","kind":"fact","subject":"fox-1","predicate":"mgx:hasMass","object":"40"}
|
|
47
|
+
{"world":"mud-warren","kind":"fact","subject":"owl-1","predicate":"rdf:type","object":"owl"}
|
|
48
|
+
{"world":"mud-warren","kind":"fact","subject":"owl-1","predicate":"mgx:currently-in","object":"stump"}
|
|
49
|
+
{"world":"mud-warren","kind":"fact","subject":"owl-1","predicate":"mgx:is-predator","object":"true"}
|
|
50
|
+
{"world":"mud-warren","kind":"fact","subject":"owl-1","predicate":"mgx:hasMass","object":"14"}
|
|
51
|
+
{"world":"mud-warren","kind":"fact","subject":"food","predicate":"rdfs:subClassOf","object":"portable"}
|
|
52
|
+
{"world":"mud-warren","kind":"fact","subject":"carrot","predicate":"rdfs:subClassOf","object":"food"}
|
|
53
|
+
{"world":"mud-warren","kind":"fact","subject":"lettuce","predicate":"rdfs:subClassOf","object":"food"}
|
|
54
|
+
{"world":"mud-warren","kind":"fact","subject":"tomato","predicate":"rdfs:subClassOf","object":"food"}
|
|
55
|
+
{"world":"mud-warren","kind":"fact","subject":"carrot","predicate":"rdf:type","object":"carrot"}
|
|
56
|
+
{"world":"mud-warren","kind":"fact","subject":"carrot","predicate":"mgx:located-in","object":"west-run"}
|
|
57
|
+
{"world":"mud-warren","kind":"fact","subject":"carrot","predicate":"mgx:hasMass","object":"3"}
|
|
58
|
+
{"world":"mud-warren","kind":"fact","subject":"lettuce","predicate":"rdf:type","object":"lettuce"}
|
|
59
|
+
{"world":"mud-warren","kind":"fact","subject":"lettuce","predicate":"mgx:located-in","object":"south-gallery"}
|
|
60
|
+
{"world":"mud-warren","kind":"fact","subject":"lettuce","predicate":"mgx:hasMass","object":"2"}
|
|
61
|
+
{"world":"mud-warren","kind":"fact","subject":"tomato","predicate":"rdf:type","object":"tomato"}
|
|
62
|
+
{"world":"mud-warren","kind":"fact","subject":"tomato","predicate":"mgx:located-in","object":"east-run"}
|
|
63
|
+
{"world":"mud-warren","kind":"fact","subject":"tomato","predicate":"mgx:hasMass","object":"2"}
|
|
64
|
+
{"world":"mud-warren","kind":"fact","subject":"root","predicate":"rdfs:subClassOf","object":"food"}
|
|
65
|
+
{"world":"mud-warren","kind":"fact","subject":"root","predicate":"mgx:hasMass","object":"2"}
|
|
66
|
+
{"world":"mud-warren","kind":"fact","subject":"worm","predicate":"rdfs:subClassOf","object":"food"}
|
|
67
|
+
{"world":"mud-warren","kind":"fact","subject":"worm","predicate":"mgx:hasMass","object":"2"}
|
|
68
|
+
{"world":"mud-warren","kind":"fact","subject":"mouse","predicate":"rdfs:subClassOf","object":"animal"}
|
|
69
|
+
{"world":"mud-warren","kind":"fact","subject":"mouse","predicate":"mgx:hasMass","object":"4"}
|
|
70
|
+
{"world":"mud-warren","kind":"fact","subject":"den","predicate":"rdfs:subClassOf","object":"underground-space"}
|
|
71
|
+
{"world":"mud-warren","kind":"fact","subject":"underground-space","predicate":"mgx:dig-spawns","object":"root"}
|
|
72
|
+
{"world":"mud-warren","kind":"fact","subject":"underground-space","predicate":"mgx:dig-spawns","object":"worm"}
|
|
73
|
+
{"world":"mud-warren","kind":"fact","subject":"underground-space","predicate":"mgx:den-spawns","object":"root"}
|
|
74
|
+
{"world":"mud-warren","kind":"fact","subject":"underground-space","predicate":"mgx:den-spawns","object":"worm"}
|
|
75
|
+
{"world":"mud-warren","kind":"fact","subject":"underground-space","predicate":"mgx:den-resident","object":"mouse"}
|
|
76
|
+
{"world":"mud-warren","kind":"fact","subject":"underground-space","predicate":"mgx:dig-spawn-max","object":"1"}
|
|
77
|
+
{"world":"mud-warren","kind":"fact","subject":"underground-space","predicate":"mgx:den-chance-in","object":"8"}
|
|
78
|
+
{"world":"mud-warren","kind":"fact","subject":"underground-space","predicate":"mgx:den-resident-chance-in","object":"2"}
|
|
79
|
+
{"world":"mud-warren","kind":"fact","subject":"clearing","predicate":"mgx:dig-reach","object":"10"}
|
|
80
|
+
{"world":"mud-warren","kind":"fact","subject":"mole-1","predicate":"mgx:mass-drain-per-turn","object":"0.10"}
|
|
81
|
+
{"world":"mud-warren","kind":"fact","subject":"vole-1","predicate":"mgx:mass-drain-per-turn","object":"0.09"}
|
|
82
|
+
{"world":"mud-warren","kind":"fact","subject":"badger-2","predicate":"mgx:mass-drain-per-turn","object":"0.14"}
|
|
83
|
+
{"world":"mud-warren","kind":"fact","subject":"groundhog-1","predicate":"mgx:mass-drain-per-turn","object":"0.11"}
|
|
84
|
+
{"world":"mud-warren","kind":"fact","subject":"meerkat-1","predicate":"mgx:mass-drain-per-turn","object":"0.09"}
|
|
85
|
+
{"world":"mud-warren","kind":"fact","subject":"stone","predicate":"rdf:type","object":"portable"}
|
|
86
|
+
{"world":"mud-warren","kind":"fact","subject":"stone","predicate":"mgx:located-in","object":"clearing"}
|
|
87
|
+
{"world":"mud-warren","kind":"fact","subject":"seed","predicate":"rdf:type","object":"portable"}
|
|
88
|
+
{"world":"mud-warren","kind":"fact","subject":"seed","predicate":"mgx:located-in","object":"stump"}
|
|
89
|
+
{"world":"mud-warren","kind":"fact","subject":"basket","predicate":"rdf:type","object":"furniture"}
|
|
90
|
+
{"world":"mud-warren","kind":"fact","subject":"basket","predicate":"mgx:fixed-in","object":"warren-mouth"}
|
|
91
|
+
{"world":"mud-warren","kind":"fact","subject":"basket","predicate":"mgx:is-container","object":"true"}
|
|
92
|
+
{"world":"mud-warren","kind":"fact","subject":"basket","predicate":"mgx:is-open","object":"true"}
|
|
93
|
+
{"world":"mud-warren","kind":"fact","subject":"room","predicate":"rdfs:subClassOf","object":"space"}
|
|
94
|
+
{"world":"mud-warren","kind":"fact","subject":"clearing","predicate":"rdf:type","object":"outdoor-space"}
|
|
95
|
+
{"world":"mud-warren","kind":"fact","subject":"stump","predicate":"rdf:type","object":"outdoor-space"}
|
|
96
|
+
{"world":"mud-warren","kind":"fact","subject":"warren-mouth","predicate":"rdf:type","object":"underground-space"}
|
|
97
|
+
{"world":"mud-warren","kind":"fact","subject":"north-gallery","predicate":"rdf:type","object":"underground-space"}
|
|
98
|
+
{"world":"mud-warren","kind":"fact","subject":"south-gallery","predicate":"rdf:type","object":"underground-space"}
|
|
99
|
+
{"world":"mud-warren","kind":"fact","subject":"east-run","predicate":"rdf:type","object":"underground-space"}
|
|
100
|
+
{"world":"mud-warren","kind":"fact","subject":"west-run","predicate":"rdf:type","object":"underground-space"}
|
|
101
|
+
{"world":"mud-warren","kind":"fact","subject":"fox-earth","predicate":"rdf:type","object":"underground-space"}
|
|
102
|
+
{"world":"mud-warren","kind":"fact","subject":"outdoor-space","predicate":"rdfs:subClassOf","object":"space"}
|
|
103
|
+
{"world":"mud-warren","kind":"fact","subject":"underground-space","predicate":"rdfs:subClassOf","object":"space"}
|
|
104
|
+
{"world":"mud-warren","kind":"rule","name":"go","ruleKind":"action-signature","slots":{"subjectClass":"adventurer","targetClass":"room"}}
|
|
105
|
+
{"world":"mud-warren","kind":"rule","name":"go","ruleKind":"action-signature","slots":{"subjectClass":"person","targetClass":"room"}}
|
|
106
|
+
{"world":"mud-warren","kind":"rule","name":"go","ruleKind":"action-effect","slots":{"predicate":"currently-in","subjectRole":"subject","objectRole":"target"}}
|
|
107
|
+
{"world":"mud-warren","kind":"rule","name":"take","ruleKind":"action-signature","slots":{"subjectClass":"portable","targetClass":"adventurer"}}
|
|
108
|
+
{"world":"mud-warren","kind":"rule","name":"take","ruleKind":"action-effect","slots":{"predicate":"located-in","subjectRole":"subject","objectRole":"target"}}
|
|
109
|
+
{"world":"mud-warren","kind":"rule","name":"drop","ruleKind":"action-signature","slots":{"subjectClass":"portable","targetClass":"room"}}
|
|
110
|
+
{"world":"mud-warren","kind":"rule","name":"drop","ruleKind":"action-effect","slots":{"predicate":"located-in","subjectRole":"subject","objectRole":"target"}}
|
|
111
|
+
{"world":"mud-warren","kind":"rule","name":"give","ruleKind":"action-signature","slots":{"subjectClass":"portable","targetClass":"person"}}
|
|
112
|
+
{"world":"mud-warren","kind":"rule","name":"give","ruleKind":"action-effect","slots":{"predicate":"located-in","subjectRole":"subject","objectRole":"target"}}
|
|
113
|
+
{"world":"mud-warren","kind":"rule","name":"open","ruleKind":"action-signature","slots":{"subjectClass":"adventurer","targetClass":"furniture"}}
|
|
114
|
+
{"world":"mud-warren","kind":"rule","name":"open","ruleKind":"action-precond","slots":{"shape":"fact-value","predicate":"stands-locked-in","role":"target","scope":"any","negate":"true"}}
|
|
115
|
+
{"world":"mud-warren","kind":"rule","name":"open","ruleKind":"action-precond","slots":{"shape":"fact-value","predicate":"is-open","role":"target","scope":"any","value":"true","negate":"true"}}
|
|
116
|
+
{"world":"mud-warren","kind":"rule","name":"open","ruleKind":"action-effect","slots":{"predicate":"is-open","subjectRole":"target","value":"true"}}
|
|
117
|
+
{"world":"mud-warren","kind":"rule","name":"close","ruleKind":"action-signature","slots":{"subjectClass":"adventurer","targetClass":"furniture"}}
|
|
118
|
+
{"world":"mud-warren","kind":"rule","name":"close","ruleKind":"action-precond","slots":{"shape":"fact-value","predicate":"is-open","role":"target","scope":"any","value":"true"}}
|
|
119
|
+
{"world":"mud-warren","kind":"rule","name":"close","ruleKind":"action-effect","slots":{"predicate":"is-open","subjectRole":"target","value":"false"}}
|
|
120
|
+
{"world":"mud-warren","kind":"rule","name":"unlock","ruleKind":"action-signature","slots":{"subjectClass":"adventurer","targetClass":"furniture"}}
|
|
121
|
+
{"world":"mud-warren","kind":"rule","name":"dig","ruleKind":"action-signature","slots":{"subjectClass":"adventurer","targetClass":"room"}}
|
|
122
|
+
{"world":"mud-warren","kind":"rule","name":"eat","ruleKind":"action-signature","slots":{"subjectClass":"adventurer","targetClass":"food"}}
|
|
123
|
+
{"world":"mud-warren","kind":"rule","name":"put","ruleKind":"action-signature","slots":{"subjectClass":"portable","targetClass":"furniture"}}
|
|
124
|
+
{"world":"mud-warren","kind":"rule","name":"put","ruleKind":"action-effect","slots":{"predicate":"located-in","subjectRole":"subject","objectRole":"target"}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
{"world":"spider-fly","kind":"meta","opening":"a spider waits in its web; a fly drifts in from the edge of the board. Neither is yours to move
|
|
1
|
+
{"world":"spider-fly","kind":"meta","opening":"a spider waits in its web; a fly drifts in from the edge of the board. Neither is yours to move. Watch, or address one by name in chat."}
|
|
2
2
|
{"world":"spider-fly","kind":"fact","subject":"cell-1-1","predicate":"rdf:type","object":"cell"}
|
|
3
3
|
{"world":"spider-fly","kind":"fact","subject":"cell-1-1","predicate":"mgx:has-exit-south","object":"cell-1-2"}
|
|
4
4
|
{"world":"spider-fly","kind":"fact","subject":"cell-1-1","predicate":"mgx:has-exit-east","object":"cell-2-1"}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
# animal — the deliberately plainest shape in the set: an unadorned
|
|
2
|
-
# four-legged
|
|
3
|
-
# rather than suggesting one the taxonomy never named.
|
|
4
|
-
#
|
|
1
|
+
# animal — the deliberately plainest shape in the set: still an unadorned
|
|
2
|
+
# four-legged body, so an unregistered species reads as "some animal"
|
|
3
|
+
# rather than suggesting one the taxonomy never named. Small ears and a
|
|
4
|
+
# tail give it a quadruped-mammal silhouette instead of a bare blob, but
|
|
5
|
+
# no fixed markings or colour ever get added — that specificity belongs
|
|
6
|
+
# to the species that actually earns it (badger, dog, poodle). The
|
|
7
|
+
# declared root fallback for the spider-and-fly world.
|
|
5
8
|
classes = ["animal"]
|
|
6
9
|
svg = """
|
|
7
10
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
8
11
|
<ellipse cx="12" cy="13" rx="7" ry="4.4" fill="currentColor"/>
|
|
12
|
+
<path d="M20.4 12.6 C22.4 12 23 14 21.6 14.8 Z" fill="currentColor"/>
|
|
9
13
|
<circle cx="12" cy="7" r="3.4" fill="currentColor"/>
|
|
10
|
-
<
|
|
14
|
+
<path d="M9 4.4 L8 2.2 L10.4 3.6 Z" fill="currentColor"/>
|
|
15
|
+
<path d="M15 4.4 L16 2.2 L13.6 3.6 Z" fill="currentColor"/>
|
|
16
|
+
<g stroke="currentColor" stroke-width="1.8" stroke-linecap="round">
|
|
11
17
|
<line x1="7" y1="17" x2="7" y2="21"/>
|
|
12
18
|
<line x1="17" y1="17" x2="17" y2="21"/>
|
|
13
19
|
</g>
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
# book — the library's default portable: a closed hardback seen spine-on
|
|
2
|
-
#
|
|
3
|
-
#
|
|
1
|
+
# book — the library's default portable: a closed hardback seen spine-on. The
|
|
2
|
+
# fore-edge shows a visible page block (paper is always lighter than a cover)
|
|
3
|
+
# and a ribbon marks a place — a wax-red fixed accent, since a bookmark
|
|
4
|
+
# ribbon's colour is its own trim rather than something a theme should own —
|
|
5
|
+
# so a taken book reads as its own thing rather than the generic portable box.
|
|
4
6
|
classes = ["book"]
|
|
5
7
|
svg = """
|
|
6
8
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
7
9
|
<path d="M6 3 H18 A1 1 0 0 1 19 4 V20 A1 1 0 0 1 18 21 H6 Z" fill="currentColor"/>
|
|
8
|
-
<rect x="
|
|
10
|
+
<rect x="17.1" y="3.6" width="1.6" height="16.8" rx="0.3" fill="color-mix(in srgb, currentColor 34%, white)"/>
|
|
11
|
+
<rect x="6" y="3" width="1.8" height="18" fill="color-mix(in srgb, currentColor 78%, black)"/>
|
|
9
12
|
<path d="M9.4 3 V21" stroke="currentColor" stroke-width="0.5" opacity="0.35"/>
|
|
10
|
-
<path d="M11
|
|
13
|
+
<path d="M11 8 H15 M11 10.6 H15" stroke="color-mix(in srgb, currentColor 60%, black)" stroke-width="0.6"/>
|
|
14
|
+
<path d="M16.8 3 V11 L15.9 9.8 L15 11 V3 Z" fill="#8a2e2e"/>
|
|
11
15
|
</svg>
|
|
12
16
|
"""
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
# cabinet — Ashcombe Hall's own locked cabinet (a container): a two-door
|
|
2
|
-
# wardrobe silhouette, the gap between the doors reading as the seam
|
|
3
|
-
#
|
|
2
|
+
# wardrobe silhouette, the gap between the doors reading as the seam. Each
|
|
3
|
+
# door carries a recessed raised-panel outline, the classic wardrobe-door
|
|
4
|
+
# cue, plus a cornice band above and a plinth below so it reads as a
|
|
5
|
+
# standing piece of furniture rather than a wall panel.
|
|
4
6
|
classes = ["cabinet"]
|
|
5
7
|
svg = """
|
|
6
8
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
7
9
|
<rect x="4.5" y="2.5" width="7.2" height="19" rx="1" fill="currentColor"/>
|
|
8
10
|
<rect x="12.3" y="2.5" width="7.2" height="19" rx="1" fill="currentColor"/>
|
|
9
|
-
<rect x="4.5" y="2.5" width="15" height="1.
|
|
10
|
-
<
|
|
11
|
-
<
|
|
11
|
+
<rect x="4.5" y="2.5" width="15" height="1.6" fill="color-mix(in srgb, currentColor 70%, black)"/>
|
|
12
|
+
<rect x="4.5" y="20.1" width="15" height="1.4" fill="color-mix(in srgb, currentColor 70%, black)"/>
|
|
13
|
+
<rect x="6" y="5.4" width="4.2" height="13.4" rx="0.4" fill="none" stroke="color-mix(in srgb, currentColor 55%, black)" stroke-width="0.6"/>
|
|
14
|
+
<rect x="13.8" y="5.4" width="4.2" height="13.4" rx="0.4" fill="none" stroke="color-mix(in srgb, currentColor 55%, black)" stroke-width="0.6"/>
|
|
15
|
+
<circle cx="10.6" cy="12" r="1" fill="color-mix(in srgb, currentColor 65%, black)"/>
|
|
16
|
+
<circle cx="13.4" cy="12" r="1" fill="color-mix(in srgb, currentColor 65%, black)"/>
|
|
12
17
|
</svg>
|
|
13
18
|
"""
|
|
@@ -1,12 +1,22 @@
|
|
|
1
|
-
# cellar — an underground space: a room box with a stair stepping down
|
|
2
|
-
# stone coursing, so the room-kind icon reads as
|
|
3
|
-
# plain room, matching the underground border.
|
|
1
|
+
# cellar — an underground space: a room box with a stair stepping down into
|
|
2
|
+
# it and stone coursing on the back wall, so the room-kind icon reads as
|
|
3
|
+
# below ground rather than a plain room, matching the underground border.
|
|
4
|
+
# The wash is a fixed white/black tint rather than currentColor-mixed (the
|
|
5
|
+
# same reason room.toml's own wash is fixed): a tint built from currentColor
|
|
6
|
+
# reverses direction between a light and a dark theme, a plain white/black
|
|
7
|
+
# one never does.
|
|
4
8
|
classes = ["cellar"]
|
|
5
9
|
svg = """
|
|
6
10
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
7
|
-
<
|
|
11
|
+
<defs>
|
|
12
|
+
<linearGradient id="cellar-wash" x1="0" y1="0" x2="0.4" y2="1">
|
|
13
|
+
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.06"/>
|
|
14
|
+
<stop offset="100%" stop-color="#000000" stop-opacity="0.22"/>
|
|
15
|
+
</linearGradient>
|
|
16
|
+
</defs>
|
|
17
|
+
<rect x="3" y="3" width="18" height="18" rx="1" fill="url(#cellar-wash)"/>
|
|
8
18
|
<rect x="3" y="3" width="18" height="18" rx="1" fill="none" stroke="currentColor" stroke-width="1.6"/>
|
|
9
|
-
<path d="
|
|
10
|
-
<path d="
|
|
19
|
+
<path d="M8 3 V21 M14 3 V21" stroke="currentColor" stroke-width="0.4" opacity="0.25"/>
|
|
20
|
+
<path d="M6 7.5 H10 V10.5 H14 V13.5 H18 V17.5 H6 Z" fill="currentColor"/>
|
|
11
21
|
</svg>
|
|
12
22
|
"""
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
# container — the generic fallback for any container with no sprite of
|
|
2
2
|
# its own (see cabinet/portrait for Ashcombe Hall's own two): a solid
|
|
3
|
-
# chest silhouette with a carved lid-seam and a latch
|
|
3
|
+
# chest silhouette with a carved lid-seam and a latch plate with its own
|
|
4
|
+
# keyhole cut into it, so "container" reads as a locked chest rather than
|
|
5
|
+
# a plain crate.
|
|
4
6
|
classes = ["container"]
|
|
5
7
|
svg = """
|
|
6
8
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
7
9
|
<path d="M3 10 L5 5 H19 L21 10 Z" fill="currentColor"/>
|
|
8
10
|
<rect x="3" y="10" width="18" height="10" rx="1.2" fill="currentColor"/>
|
|
9
|
-
<rect x="3" y="10" width="18" height="1.
|
|
10
|
-
<rect x="10
|
|
11
|
+
<rect x="3" y="10" width="18" height="1.8" fill="color-mix(in srgb, currentColor 70%, black)"/>
|
|
12
|
+
<rect x="10" y="9" width="4" height="3.2" rx="0.5" fill="color-mix(in srgb, currentColor 55%, black)"/>
|
|
13
|
+
<circle cx="12" cy="10.4" r="0.55" fill="color-mix(in srgb, currentColor 20%, white)"/>
|
|
14
|
+
<path d="M11.8 10.9 L12.2 10.9 L12.45 12 L11.55 12 Z" fill="color-mix(in srgb, currentColor 20%, white)"/>
|
|
11
15
|
</svg>
|
|
12
16
|
"""
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
# desk — Ashcombe Hall's own study desk: a tabletop bar over two drawer
|
|
2
|
-
# blocks with pull-knobs, on tapered legs.
|
|
2
|
+
# blocks with pull-knobs and a drawer-front groove, on tapered legs.
|
|
3
3
|
classes = ["desk"]
|
|
4
4
|
svg = """
|
|
5
5
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
6
6
|
<rect x="3" y="7" width="18" height="2.6" rx="0.6" fill="currentColor"/>
|
|
7
|
-
<rect x="
|
|
8
|
-
<rect x="
|
|
9
|
-
<
|
|
10
|
-
<
|
|
7
|
+
<rect x="3.4" y="7.3" width="17.2" height="0.6" fill="color-mix(in srgb, currentColor 30%, white)"/>
|
|
8
|
+
<rect x="4.4" y="9.6" width="6.6" height="5.6" rx="0.6" fill="currentColor"/>
|
|
9
|
+
<rect x="13" y="9.6" width="6.6" height="5.6" rx="0.6" fill="currentColor"/>
|
|
10
|
+
<path d="M5.4 12.4 H10" stroke="color-mix(in srgb, currentColor 60%, black)" stroke-width="0.5"/>
|
|
11
|
+
<path d="M14 12.4 H18.6" stroke="color-mix(in srgb, currentColor 60%, black)" stroke-width="0.5"/>
|
|
12
|
+
<circle cx="9.6" cy="12.4" r="0.6" fill="color-mix(in srgb, currentColor 55%, black)"/>
|
|
13
|
+
<circle cx="16.4" cy="12.4" r="0.6" fill="color-mix(in srgb, currentColor 55%, black)"/>
|
|
11
14
|
<path d="M4.6 15.2 L3.8 20.5 L5.6 20.5 L6.2 15.2 Z" fill="currentColor"/>
|
|
12
15
|
<path d="M17.8 15.2 L17.2 20.5 L19 20.5 L18.2 15.2 Z" fill="currentColor"/>
|
|
13
16
|
</svg>
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
# dog — the plain-class sprite a taxonomy hop away from poodle/sheepdog.
|
|
2
2
|
# Same body language as poodle's, without the pompom cut, so the family
|
|
3
|
-
# reads as one dog rather than two unrelated animals.
|
|
3
|
+
# reads as one dog rather than two unrelated animals. A muzzle bump breaks
|
|
4
|
+
# the head silhouette and the tail curls up and alert rather than hanging,
|
|
5
|
+
# so the pose itself carries the identity even before any colour is added.
|
|
4
6
|
classes = ["dog"]
|
|
5
7
|
svg = """
|
|
6
8
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
7
9
|
<ellipse cx="13" cy="15" rx="6.4" ry="4.3" fill="currentColor"/>
|
|
10
|
+
<path d="M19 13.4 C22.4 11.6 23.4 14.8 21.4 16.2 C20.6 15 19.8 14.2 19 13.4 Z" fill="currentColor"/>
|
|
8
11
|
<circle cx="7" cy="9" r="3.6" fill="currentColor"/>
|
|
9
|
-
<ellipse cx="
|
|
10
|
-
<path d="M4.
|
|
11
|
-
<
|
|
12
|
-
<g stroke="currentColor" stroke-width="1.
|
|
12
|
+
<ellipse cx="3.3" cy="9.8" rx="1.7" ry="1.3" fill="currentColor"/>
|
|
13
|
+
<path d="M4.6 6.4 C2.8 5 1.8 3.4 2.2 2.4 C4.2 2.6 6 4.4 6.4 6.6 Z" fill="currentColor"/>
|
|
14
|
+
<circle cx="5.3" cy="8.2" r="0.45" fill="color-mix(in srgb, currentColor 20%, black)"/>
|
|
15
|
+
<g stroke="currentColor" stroke-width="1.8" stroke-linecap="round">
|
|
13
16
|
<line x1="9" y1="19" x2="9" y2="22"/>
|
|
14
17
|
<line x1="17" y1="19" x2="17" y2="22"/>
|
|
15
18
|
</g>
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
# dog-with-colour — the parameterized-property worked example: "a dog that
|
|
2
|
-
# is black". Same silhouette as dog.toml
|
|
3
|
-
# color from the instance's
|
|
4
|
-
# mgx:hasProperty value rather than the page's currentColor
|
|
5
|
-
# thin currentColor stroke kept on each shape so a light
|
|
6
|
-
# still reads against a light card background. A property
|
|
7
|
-
# entry in [parameters.colour.values] is not a match for
|
|
8
|
-
# all (see sprite-templates.mjs's own header for the
|
|
9
|
-
# convention) — it falls through to the plain dog.toml
|
|
10
|
-
# guessed color.
|
|
2
|
+
# is black". Same silhouette as dog.toml (muzzle bump, curled alert tail,
|
|
3
|
+
# floppy ear), but every filled shape takes its color from the instance's
|
|
4
|
+
# OWN observed mgx:hasProperty value rather than the page's currentColor
|
|
5
|
+
# accent, with a thin currentColor stroke kept on each shape so a light
|
|
6
|
+
# value (white) still reads against a light card background. A property
|
|
7
|
+
# value with no entry in [parameters.colour.values] is not a match for
|
|
8
|
+
# this template at all (see sprite-templates.mjs's own header for the
|
|
9
|
+
# naming/specificity convention) — it falls through to the plain dog.toml
|
|
10
|
+
# sprite, never a guessed color.
|
|
11
11
|
classes = ["dog"]
|
|
12
12
|
svg = """
|
|
13
13
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
14
14
|
<ellipse cx="13" cy="15" rx="6.4" ry="4.3" fill="{{FILL}}" stroke="currentColor" stroke-width="0.9"/>
|
|
15
|
+
<path d="M19 13.4 C22.4 11.6 23.4 14.8 21.4 16.2 C20.6 15 19.8 14.2 19 13.4 Z" fill="{{FILL}}" stroke="currentColor" stroke-width="0.9"/>
|
|
15
16
|
<circle cx="7" cy="9" r="3.6" fill="{{FILL}}" stroke="currentColor" stroke-width="0.9"/>
|
|
16
|
-
<
|
|
17
|
-
<path d="
|
|
18
|
-
<g stroke="currentColor" stroke-width="1.
|
|
17
|
+
<ellipse cx="3.3" cy="9.8" rx="1.7" ry="1.3" fill="{{FILL}}" stroke="currentColor" stroke-width="0.9"/>
|
|
18
|
+
<path d="M4.6 6.4 C2.8 5 1.8 3.4 2.2 2.4 C4.2 2.6 6 4.4 6.4 6.6 Z" fill="{{FILL}}" stroke="currentColor" stroke-width="0.9"/>
|
|
19
|
+
<g stroke="currentColor" stroke-width="1.8" stroke-linecap="round">
|
|
19
20
|
<line x1="9" y1="19" x2="9" y2="22"/>
|
|
20
21
|
<line x1="17" y1="19" x2="17" y2="22"/>
|
|
21
22
|
</g>
|
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
# drawing-room — a room floor plan marked by a framed picture on the wall (the
|
|
2
2
|
# portrait hangs here), so the room-kind icon reads as the drawing room rather
|
|
3
|
-
# than a plain room.
|
|
3
|
+
# than a plain room. The wash is a fixed white/black tint rather than
|
|
4
|
+
# currentColor-mixed (see room-icon.toml's own header for why), and the
|
|
5
|
+
# canvas behind the framed bust gets its own lighter tone so frame, canvas
|
|
6
|
+
# and figure read as three distinct layers rather than one flat block.
|
|
4
7
|
classes = ["drawing-room"]
|
|
5
8
|
svg = """
|
|
6
9
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
7
|
-
<
|
|
10
|
+
<defs>
|
|
11
|
+
<linearGradient id="drawing-room-wash" x1="0" y1="0" x2="0.4" y2="1">
|
|
12
|
+
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.1"/>
|
|
13
|
+
<stop offset="100%" stop-color="#000000" stop-opacity="0.14"/>
|
|
14
|
+
</linearGradient>
|
|
15
|
+
</defs>
|
|
16
|
+
<rect x="3" y="3" width="18" height="18" rx="1" fill="url(#drawing-room-wash)"/>
|
|
8
17
|
<rect x="3" y="3" width="18" height="18" rx="1" fill="none" stroke="currentColor" stroke-width="1.6"/>
|
|
9
|
-
<rect x="8.5" y="7" width="7" height="6" rx="0.4" fill="
|
|
10
|
-
<circle cx="12" cy="9.4" r="1.1" fill="currentColor"
|
|
11
|
-
<path d="M9.6 12.4 C9.6 10.9 10.6 10 12 10 C13.4 10 14.4 10.9 14.4 12.4 Z" fill="currentColor"
|
|
18
|
+
<rect x="8.5" y="7" width="7" height="6" rx="0.4" fill="color-mix(in srgb, currentColor 22%, white)" stroke="currentColor" stroke-width="1.3"/>
|
|
19
|
+
<circle cx="12" cy="9.4" r="1.1" fill="currentColor"/>
|
|
20
|
+
<path d="M9.6 12.4 C9.6 10.9 10.6 10 12 10 C13.4 10 14.4 10.9 14.4 12.4 Z" fill="currentColor"/>
|
|
12
21
|
</svg>
|
|
13
22
|
"""
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
# egg — the spider-and-fly board's laid egg
|
|
2
|
-
#
|
|
1
|
+
# egg — the spider-and-fly board's laid egg: the plain shell silhouette,
|
|
2
|
+
# lit from the upper left with a lighter highlight and a darker shadow
|
|
3
|
+
# side so the round shell reads as three-dimensional rather than a flat
|
|
4
|
+
# tinted disc.
|
|
3
5
|
classes = ["egg"]
|
|
4
6
|
svg = """
|
|
5
7
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
6
8
|
<path d="M12 2 C7 2 4 10 4 15.5 C4 20 7.6 22 12 22 C16.4 22 20 20 20 15.5 C20 10 17 2 12 2 Z" fill="currentColor"/>
|
|
7
|
-
<
|
|
9
|
+
<path d="M12 2 C16 2 19 8.6 19.9 14 C18.4 15.2 16.6 15.8 15 14.6 C16.2 11 15.6 5.4 12 2 Z" fill="color-mix(in srgb, currentColor 65%, black)"/>
|
|
10
|
+
<ellipse cx="9.4" cy="8.8" rx="1.9" ry="2.8" fill="color-mix(in srgb, currentColor 25%, white)"/>
|
|
8
11
|
</svg>
|
|
9
12
|
"""
|
|
@@ -1,17 +1,22 @@
|
|
|
1
|
-
# fly — the spider-and-fly board's other agent. A round head
|
|
2
|
-
# body with a carved highlight,
|
|
3
|
-
#
|
|
1
|
+
# fly — the spider-and-fly board's other agent. A round head with a pair
|
|
2
|
+
# of large compound eyes, a tapered body with a carved highlight,
|
|
3
|
+
# translucent wings (opacity carries real translucency here, not a
|
|
4
|
+
# decorative wash, so it stays), and two thin trailing legs.
|
|
4
5
|
classes = ["fly"]
|
|
5
6
|
svg = """
|
|
6
7
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
7
8
|
<ellipse cx="12" cy="13.6" rx="3.4" ry="5.2" fill="currentColor"/>
|
|
8
9
|
<circle cx="12" cy="7" r="2.7" fill="currentColor"/>
|
|
9
|
-
<ellipse cx="11.1" cy="12" rx="1.1" ry="1.7" fill="currentColor
|
|
10
|
+
<ellipse cx="11.1" cy="12" rx="1.1" ry="1.7" fill="color-mix(in srgb, currentColor 70%, black)"/>
|
|
10
11
|
<g fill="currentColor" opacity="0.55">
|
|
11
12
|
<path d="M9 10 C3 6 2 4 3 2 C6 2 9 6 10.5 10 Z"/>
|
|
12
13
|
<path d="M15 10 C21 6 22 4 21 2 C18 2 15 6 13.5 10 Z"/>
|
|
13
14
|
</g>
|
|
14
|
-
<g
|
|
15
|
+
<g fill="color-mix(in srgb, currentColor 70%, black)">
|
|
16
|
+
<ellipse cx="10.1" cy="6.1" rx="1.5" ry="1.9" transform="rotate(-18 10.1 6.1)"/>
|
|
17
|
+
<ellipse cx="13.9" cy="6.1" rx="1.5" ry="1.9" transform="rotate(18 13.9 6.1)"/>
|
|
18
|
+
</g>
|
|
19
|
+
<g stroke="currentColor" stroke-width="1.1" stroke-linecap="round">
|
|
15
20
|
<path d="M9.6 17 L7.4 19.4"/>
|
|
16
21
|
<path d="M14.4 17 L16.6 19.4"/>
|
|
17
22
|
</g>
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
# furniture — the generic fallback for any furniture piece with no sprite
|
|
2
|
-
# of its own: a solid console-table silhouette
|
|
3
|
-
#
|
|
2
|
+
# of its own: a solid console-table silhouette with a stretcher bar joining
|
|
3
|
+
# the tapered legs low down, the structural cue that reads as "a table"
|
|
4
|
+
# rather than "a shelf on the wall".
|
|
4
5
|
classes = ["furniture"]
|
|
5
6
|
svg = """
|
|
6
7
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
7
8
|
<rect x="3.5" y="6.5" width="17" height="3.2" rx="0.8" fill="currentColor"/>
|
|
8
|
-
<rect x="3.5" y="6.5" width="17" height="1" fill="currentColor
|
|
9
|
+
<rect x="3.5" y="6.5" width="17" height="1" fill="color-mix(in srgb, currentColor 30%, white)"/>
|
|
9
10
|
<path d="M5.6 9.7 L4.6 20 L6.7 20 L7.2 9.7 Z" fill="currentColor"/>
|
|
10
11
|
<path d="M18.4 9.7 L16.8 20 L18.9 20 L19.4 9.7 Z" fill="currentColor"/>
|
|
12
|
+
<rect x="6.4" y="15.6" width="11.2" height="1.3" rx="0.4" fill="color-mix(in srgb, currentColor 70%, black)"/>
|
|
11
13
|
</svg>
|
|
12
14
|
"""
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
# garden — an outdoor space, so no room box: a tree over a ground line reads
|
|
2
2
|
# as open air rather than an interior, matching the outdoor room-kind border.
|
|
3
|
+
# The canopy is built from three overlapping lobes rather than one plain
|
|
4
|
+
# circle so it reads as foliage, and a couple of grass tufts at the base
|
|
5
|
+
# ground it as cultivated planting rather than bare earth.
|
|
3
6
|
classes = ["garden"]
|
|
4
7
|
svg = """
|
|
5
8
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
6
9
|
<path d="M3 20 H21" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/>
|
|
7
10
|
<path d="M12 20 V12" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/>
|
|
8
|
-
<circle cx="
|
|
9
|
-
<circle cx="
|
|
10
|
-
<circle cx="
|
|
11
|
+
<circle cx="8.4" cy="9.4" r="3.6" fill="currentColor"/>
|
|
12
|
+
<circle cx="15.6" cy="9.4" r="3.6" fill="currentColor"/>
|
|
13
|
+
<circle cx="12" cy="6.6" r="4.2" fill="currentColor"/>
|
|
14
|
+
<g stroke="color-mix(in srgb, currentColor 55%, black)" stroke-width="1" stroke-linecap="round">
|
|
15
|
+
<path d="M5.4 20 C5.4 18.6 6.2 17.8 6.2 17.8"/>
|
|
16
|
+
<path d="M18.2 20 C18.2 18.6 17.4 17.8 17.4 17.8"/>
|
|
17
|
+
</g>
|
|
11
18
|
</svg>
|
|
12
19
|
"""
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# key — Ashcombe Hall's own key (hidden in the portrait, unlocks the
|
|
2
2
|
# cabinet): a classic round-bow skeleton key, bold strokes so it stays
|
|
3
|
-
# legible at a 44px render
|
|
3
|
+
# legible at a 44px render, plus a thin specular arc tracing the bow's own
|
|
4
|
+
# upper-left curve so the ring reads as metal rather than a flat ring.
|
|
4
5
|
classes = ["key"]
|
|
5
6
|
svg = """
|
|
6
7
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
@@ -8,5 +9,6 @@ svg = """
|
|
|
8
9
|
<path d="M10.4 12 L19.5 21.1" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"/>
|
|
9
10
|
<path d="M16.4 17.1 L18.6 14.9" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
|
10
11
|
<path d="M18.6 19.3 L20.6 17.3" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
|
12
|
+
<path d="M5 6.6 A4.4 4.4 0 0 1 8.6 4.8" fill="none" stroke="color-mix(in srgb, currentColor 25%, white)" stroke-width="1" stroke-linecap="round"/>
|
|
11
13
|
</svg>
|
|
12
14
|
"""
|
|
@@ -1,13 +1,22 @@
|
|
|
1
|
-
# kitchen — a room floor plan marked by a stove with two burners
|
|
2
|
-
# distinguishing cue the large tier uses, so
|
|
3
|
-
# kitchen rather than a plain room.
|
|
1
|
+
# kitchen — a room floor plan marked by a stove with two burners and an
|
|
2
|
+
# oven-door handle, the same distinguishing cue the large tier uses, so
|
|
3
|
+
# the room-kind icon reads as a kitchen rather than a plain room. The wash
|
|
4
|
+
# is a fixed white/black tint rather than currentColor-mixed (see
|
|
5
|
+
# room-icon.toml's own header for why).
|
|
4
6
|
classes = ["kitchen"]
|
|
5
7
|
svg = """
|
|
6
8
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
7
|
-
<
|
|
9
|
+
<defs>
|
|
10
|
+
<linearGradient id="kitchen-wash" x1="0" y1="0" x2="0.4" y2="1">
|
|
11
|
+
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.1"/>
|
|
12
|
+
<stop offset="100%" stop-color="#000000" stop-opacity="0.14"/>
|
|
13
|
+
</linearGradient>
|
|
14
|
+
</defs>
|
|
15
|
+
<rect x="3" y="3" width="18" height="18" rx="1" fill="url(#kitchen-wash)"/>
|
|
8
16
|
<rect x="3" y="3" width="18" height="18" rx="1" fill="none" stroke="currentColor" stroke-width="1.6"/>
|
|
9
17
|
<rect x="8" y="10" width="8" height="7" rx="0.6" fill="none" stroke="currentColor" stroke-width="1.2"/>
|
|
10
|
-
<circle cx="10.5" cy="12.
|
|
11
|
-
<circle cx="13.5" cy="12.
|
|
18
|
+
<circle cx="10.5" cy="12.4" r="1" fill="currentColor"/>
|
|
19
|
+
<circle cx="13.5" cy="12.4" r="1" fill="currentColor"/>
|
|
20
|
+
<path d="M9.4 15.8 H14.6" stroke="currentColor" stroke-width="0.9" stroke-linecap="round"/>
|
|
12
21
|
</svg>
|
|
13
22
|
"""
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
# lamp — Ashcombe Hall's own study lamp: a Victorian hurricane-lamp
|
|
2
|
-
# silhouette — base, glass globe, a neck, and a small
|
|
2
|
+
# silhouette — base, glass globe, a neck, and a small flame. The globe gets
|
|
3
|
+
# its own lighter glass tone plus a specular streak so it reads as glass
|
|
4
|
+
# distinct from the solid metal base and neck, and the flame is a fixed
|
|
5
|
+
# warm amber regardless of theme — a flame's colour comes from what's
|
|
6
|
+
# burning, not from CSS.
|
|
3
7
|
classes = ["lamp"]
|
|
4
8
|
svg = """
|
|
5
9
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
6
10
|
<path d="M9 21 H15 L14 18 H10 Z" fill="currentColor"/>
|
|
7
|
-
<path d="M8.4 18 C7 15.6 7 12.6 8.6 10.4 H15.4 C17 12.6 17 15.6 15.6 18 Z" fill="currentColor"/>
|
|
8
|
-
<
|
|
9
|
-
<
|
|
11
|
+
<path d="M8.4 18 C7 15.6 7 12.6 8.6 10.4 H15.4 C17 12.6 17 15.6 15.6 18 Z" fill="color-mix(in srgb, currentColor 55%, white)"/>
|
|
12
|
+
<path d="M9.2 11.4 C9 13.4 9.1 15.6 9.9 17.4" fill="none" stroke="color-mix(in srgb, currentColor 20%, white)" stroke-width="0.8" stroke-linecap="round"/>
|
|
13
|
+
<rect x="10.6" y="6.4" width="2.8" height="4.4" rx="0.4" fill="currentColor"/>
|
|
14
|
+
<path d="M12 3.2 C13.4 4.6 13.8 6 12 7.4 C10.2 6 10.6 4.6 12 3.2 Z" fill="#f4b73f"/>
|
|
10
15
|
</svg>
|
|
11
16
|
"""
|