|
90 | 90 | server: { |
91 | 91 | maxUndoStackSize: { |
92 | 92 | "": "Undo History Size Limit", |
93 | | - "@Tooltip": "Maximum allowed size of the Splicing Table's undo history. To disable the limit, set the value to 0.", |
| 93 | + "@Tooltip": "Maximum allowed size of the splicing table's undo history. To disable the limit, set the value to 0.", |
94 | 94 | } |
95 | 95 | } |
96 | 96 | }, |
|
108 | 108 | after: "Set Breakpoint After" |
109 | 109 | }, |
110 | 110 | "craft/debugger": "Craft Debugger", |
| 111 | + "splicing/": { |
| 112 | + "view_index/": { |
| 113 | + read: "Sprocket's Purification", |
| 114 | + write: "Sprocket's Gambit", |
| 115 | + }, |
| 116 | + "selection/": { |
| 117 | + read: "Splicer's Decomposition", |
| 118 | + write: "Splicer's Gambit", |
| 119 | + }, |
| 120 | + "clipboard/": { |
| 121 | + read: "Compositor's Purification", |
| 122 | + write: "Compositor's Gambit", |
| 123 | + readable: "Producer's Purification", |
| 124 | + writable: "Director's Purification", |
| 125 | + } |
| 126 | + }, |
111 | 127 | }, |
112 | 128 | "book.hexdebug:": { |
113 | 129 | "next_eval_index": "Debug Locator's Rfln.", |
114 | | - "const/cognitohazard": "Cognitohazard Rfln." |
115 | | - } |
| 130 | + "const/cognitohazard": "Cognitohazard Rfln.", |
| 131 | + "splicing/clipboard/read": "Compositor's Prfn.", |
| 132 | + }, |
116 | 133 | }, |
117 | 134 |
|
118 | 135 | mishap: { |
|
179 | 196 | "3": "I can select iotas (or the space between them) by clicking on them. Holding $(k:sneak) and clicking again allows me to select a range of iotas.$(br2)\ |
180 | 197 | Additionally, there are dedicated buttons to select the entire list ($(thing)Select All/$) and to clear my selection ($(thing)Select None/$).$(br2)\ |
181 | 198 | Selecting iotas allows me to unlock the true power of the $(l:items/splicing_table)$(item)Splicing Table/$: editing _Hexes.", |
182 | | - "4": "With $(l:items/splicing_table#cost)sufficient media/$, I can perform the following actions:\ |
| 199 | + actions: "With $(l:items/splicing_table#cost)sufficient media/$, I can perform the following actions:\ |
183 | 200 | $(li)$(thing)Nudge Left/$: Move the selected iota(s) one space to the left.\ |
184 | 201 | $(li)$(thing)Nudge Right/$: Move the selected iota(s) one space to the right.\ |
185 | 202 | $(li)$(thing)Delete/$: Remove the selected iota(s) from the list.\ |
186 | 203 | $(li)$(thing)Duplicate/$: Create a copy of the selected iota(s).\ |
187 | 204 | $(li)$(thing)Undo/$: Revert the last action performed.\ |
188 | 205 | $(li)$(thing)Redo/$: Re-perform actions previously reverted with $(thing)Undo/$.", |
189 | | - "5": "For more advanced operations, some extra storage is required. I can place an iota-holding item in the slot to the left to unlock the following actions:\ |
| 206 | + secondary: "For more advanced operations, some extra storage is required. I can place an iota-holding item in the slot to the left to unlock the following actions:\ |
190 | 207 | $(li)$(thing)Copy/$: Write the selected iota(s) to a new list in the secondary item.\ |
191 | 208 | $(li)$(thing)Cut/$: Same as $(thing)Copy/$, but also delete the selected iota(s).\ |
192 | 209 | $(li)$(thing)Paste/$: Replace the selected iota(s) with the iota in the secondary item. If the iota is a list, its contents are pasted instead; I can override this by holding $(k:sneak).", |
193 | | - "6": "Finally, I can insert a $(l:items/staff)$(item)Staff/$ into the lower left slot to reveal a miniature casting grid. Patterns drawn on this grid are inserted directly into the list, overwriting any selected iotas.$(br2)\ |
| 210 | + staff: "Finally, I can insert a $(l:items/staff)$(item)Staff/$ into the lower left slot to reveal a miniature casting grid. Patterns drawn on this grid are inserted directly into the list, overwriting any selected iotas.$(br2)\ |
194 | 211 | There are also six general-purpose inventory slots on the right side. These have no special functionality; they're just a convenient place to store a few extra items.", |
195 | 212 | cost: "Unfortunately, all of this incredible versatility comes at a cost. In order to modify the contents of items, _media is required - about a tenth of one $(l:items/amethyst)$(item)Amethyst Dust/$ per action performed.$(br2)\ |
196 | 213 | I can supply _media to the $(l:items/splicing_table)$(item)Splicing Table/$ by putting it in the lower right slot. The table will consume up to ten $(l:items/amethyst)$(item)Amethyst Dust/$ at once; any surplus is ignored until it can be consumed without wasting _media.", |
| 214 | + patterns: "If this small cost is prohibitive, or if I wish to perform more complicated actions than those previously described, there is another option. I can use patterns such as $(l:patterns/readwrite_blocks#hexcasting:read/entity)$(action)Chronicler's Purification/$ to manipulate the contents of the item in the main slot, and I've devised some $(l:patterns/splicing_table)specialized patterns/$ to control other aspects of the splicing table.$(br2)\ |
| 215 | + Now, if only I could make the table think for itself...", |
197 | 216 | recipe: "$(italic)She plugged in strings one after the other, the tiny metal cubes flying in and out as her fingers danced over the tray with blinding speed./$", |
198 | 217 | }, |
199 | 218 | }, |
|
203 | 222 | patterns: { |
204 | 223 | entry: { |
205 | 224 | debugging: { |
206 | | - "": "Debugging", |
| 225 | + "": "Debugging Patterns", |
207 | 226 | page: { |
208 | | - "const/debugging": "Adds $(thing)True/$ to the top of the stack if executed by a $(l:items/debugging#debugger)$(item)Debugger/$ or $(l:items/debugging#evaluator)$(item)Evaluator/$, or $(thing)False/$ otherwise.", |
209 | | - "next_eval_index": "Adds the index of the next iota to be evaluated if executed by a $(l:items/debugging#debugger)$(item)Debugger/$ or $(l:items/debugging#evaluator)$(item)Evaluator/$, or $(l:casting/influences)$(thing)Null/$ otherwise.", |
| 227 | + "const/debugging": "Add $(thing)True/$ to the top of the stack if executed by a $(l:items/debugging#debugger)$(item)Debugger/$ or $(l:items/debugging#evaluator)$(item)Evaluator/$, or $(thing)False/$ otherwise.", |
| 228 | + "next_eval_index": "Add the index of the next iota to be evaluated if executed by a $(l:items/debugging#debugger)$(item)Debugger/$ or $(l:items/debugging#evaluator)$(item)Evaluator/$, or $(l:casting/influences)$(thing)Null/$ otherwise.", |
210 | 229 | "const/cognitohazard": { |
211 | | - "1": "Adds a $(thing)Cognitohazard/$ to the top of the stack.", |
| 230 | + "1": "Add a $(thing)Cognitohazard/$ to the top of the stack.", |
212 | 231 | "2": "It seems certain $(l:items/debugging#evaluator)debugging tools/$ may pose a security risk for some $(l:patterns/meta#hexcasting:eval/cc)high-level techniques/$. To help combat this, I have created this pattern.$(br2)\ |
213 | 232 | When a $(thing)Cognitohazard/$ iota is executed normally, nothing happens. However, if one is present in a _Hex executed by a $(l:items/debugging#debugger)$(item)Debugger/$, it will cause the _Hex to terminate $(italic)immediately/$ - even before the $(thing)Cognitohazard/$ is actually executed.", |
214 | 233 | }, |
215 | 234 | "breakpoint/": { |
216 | | - before: "Pauses the $(l:items/debugging#debugger)$(item)Debugger/$ before executing this pattern.", |
217 | | - after: "Pauses the $(l:items/debugging#debugger)$(item)Debugger/$ after executing this pattern (ie. before executing the next pattern).", |
| 235 | + before: "Pause the $(l:items/debugging#debugger)$(item)Debugger/$ before executing this pattern.", |
| 236 | + after: "Pause the $(l:items/debugging#debugger)$(item)Debugger/$ after executing this pattern (ie. before executing the next pattern).", |
218 | 237 | }, |
219 | | - "craft/debugger": "Creates a $(l:items/debugging#debugger)$(item)Debugger/$ that casts a _Hex, similar to $(l:patterns/spells/hexcasting)certain other patterns/$ I've used in the past.$(br2)\ |
| 238 | + "craft/debugger": "Create a $(l:items/debugging#debugger)$(item)Debugger/$ that casts a _Hex, similar to $(l:patterns/spells/hexcasting)certain other patterns/$ I've used in the past.$(br2)\ |
220 | 239 | Costs about ten $(l:items/amethyst)$(item)Charged Amethyst/$.", |
221 | 240 | }, |
222 | 241 | }, |
| 242 | + splicing_table: { |
| 243 | + "": "Splicing Table Patterns", |
| 244 | + page: { |
| 245 | + "view_index/": { |
| 246 | + read: "Remove a vector from the stack, then push the index of the leftmost iota currently visible in the $(l:items/splicing_table)$(item)Splicing Table/$ at that position.", |
| 247 | + write: "Remove a vector and number from the stack, then move the view of the $(l:items/splicing_table)$(item)Splicing Table/$ at that position so that the given index is the leftmost one visible.", |
| 248 | + }, |
| 249 | + "selection/": { |
| 250 | + read: { |
| 251 | + "1": "Remove a vector from the stack, then push two values representing the current selection in the $(l:items/splicing_table)$(item)Splicing Table/$ at that position.", |
| 252 | + "2": "If a range of iotas is selected, two numbers are pushed, representing the start (inclusive) and end (exclusive) of the selected range. If the edge between two iotas is selected, the index of the iota to the right of the selected edge is pushed, followed by $(l:casting/influences)$(thing)Null/$. And if nothing is selected, $(l:casting/influences)$(thing)Null/$ is pushed twice.", |
| 253 | + }, |
| 254 | + write: "Remove a vector and two values from the stack, then set the selection of the $(l:items/splicing_table)$(item)Splicing Table/$ at that position as previously described.", |
| 255 | + }, |
| 256 | + "clipboard/": { |
| 257 | + read: "Remove a vector from the stack, then copy the contents of the secondary item in the $(l:items/splicing_table)$(item)Splicing Table/$ at that position and push it to the stack.", |
| 258 | + write: "Remove a vector and iota from the stack, then save the iota into the secondary item in the $(l:items/splicing_table)$(item)Splicing Table/$ at that position.$(br)\ |
| 259 | + As with $(l:patterns/readwrite_blocks#hexcasting:write/entity)$(action)Chronicler's Gambit/$, I cannot write my own Name using this spell.", |
| 260 | + readable: "Replace the vector at the top of the stack with True if there is a $(l:items/splicing_table)$(item)Splicing Table/$ at that position containing a secondary item that I could read, or False otherwise.", |
| 261 | + writable: "Replace the vector at the top of the stack with True if there is a $(l:items/splicing_table)$(item)Splicing Table/$ at that position containing a secondary item that I could save an iota into, or False otherwise.", |
| 262 | + }, |
| 263 | + }, |
| 264 | + }, |
223 | 265 | }, |
224 | 266 | }, |
225 | 267 | }, |
|
0 commit comments