|
| 1 | +{ |
| 2 | + hexthings: { |
| 3 | + book: { |
| 4 | + patterns: { |
| 5 | + utils: { |
| 6 | + "": "Utilities", |
| 7 | + noop: "Does nothing, but the tail can be any shape. Useful as \ |
| 8 | + a placeholder to be replaced later", |
| 9 | + insert: "Similar to $(l:patterns/lists#hexcasting:replace)$(action)Surgeon's Exaltation/$, but replaces the \ |
| 10 | + element of the first list instead with the $(o)contents/$ of the second list, rather than with the list itself.", |
| 11 | + unquote: "This pattern can be used to place raw iota directly into an \ |
| 12 | + Introspection-Restrospection pair. After drawing this pattern, all \ |
| 13 | + subsequent patterns are \"unescaped\", allowing them to be executed as \ |
| 14 | + normal until a $(l:patterns/hexutils#hexthings:requote)$(action)Retrojection/$ is \ |
| 15 | + encountered.", |
| 16 | + requote: "When used after an \ |
| 17 | + $(l:patterns/hexutils#hexthings:unquote)$(action)Introjection/$, \ |
| 18 | + This pattern puts all iota on the stack into the escaped list, with the \ |
| 19 | + previous state of the stack being restored.", |
| 20 | + isgreatersent: "Pushes if my current sentinel is a \ |
| 21 | + $(l:patterns/great_spells/greater_sentinel)$(action)Greater Sentinel/$, \ |
| 22 | + or $(l:patterns/consts#hexcasting:const/null)$(thing)Null/$ if I \ |
| 23 | + have no sentinel at all." |
| 24 | + }, |
| 25 | + dict: { |
| 26 | + "": "Dictionary Manipulation", |
| 27 | + empty_dict: "Creates an empty Dictionary iota.", |
| 28 | + abs: "Pushes the number of entries in the Dictionary", |
| 29 | + replace: "Places the iota in the Dictionary at the specified key. Not every \ |
| 30 | + iota type is allowed to be used as a key, with notable the exceptions being \ |
| 31 | + $(l:casting/influences)$(thing)Garbage/$ and $(l:patterns/meta#hexcasting:\ |
| 32 | + eval/cc)$(thing)Jump/$ iota. Attempting to set the value of a key to \ |
| 33 | + $(l:patterns/consts#hexcasting:const/null)$(thing)Null/$ will remove the \ |
| 34 | + key the same way using $(l:patterns/dict#hexcasting:remove_from)$(action)\ |
| 35 | + Excisor's Distillation/$ would.", |
| 36 | + remove_from: "Removes the key-value pair from the Dictionary, pushing the \ |
| 37 | + previous value, or $(l:patterns/consts#hexcasting:const/null)$(thing)Null/$ \ |
| 38 | + if no value was present.", |
| 39 | + index_of: "Pushes the value present at the provided key, or $(l:patterns/consts\ |
| 40 | + #hexcasting:const/null)$(thing)Null/$ if no value was present.", |
| 41 | + dict_keys: "Pushes a list of the keys present in the Dictionary.", |
| 42 | + dict_vals: "Pushes a list of the values present in the Dictionary.", |
| 43 | + dict_ents: "Pushes a list of the key-value pairs in this Dictionary, each being \ |
| 44 | + a 2 element list." |
| 45 | + }, |
| 46 | + uiua: { |
| 47 | + "": "Advanced List Operators", |
| 48 | + uiua_take: "Keeps elements of the list based on the second argument. If it's a \ |
| 49 | + number and positive, it keeps the first $(o)n/$ elements of the list, if \ |
| 50 | + negative; the last $(o)n/$. If given a list, then its elements are treated as \ |
| 51 | + indices to keep.", |
| 52 | + uiua_drop: "The exact inverse of $(l:patterns/uiua#hexthings:uiua_take)$(action)\ |
| 53 | + Retention Distillation/$, dropping the specified elements instead of dropping the \ |
| 54 | + rest.", |
| 55 | + uiua_rotate: "Shifts the contents of the list by the specified amount, wrapping elements \ |
| 56 | + that go \"outside\" the list.", |
| 57 | + uiua_where: "Pushes a list containing the indices of values that are \ |
| 58 | + $(l:patterns/logic#hexcasting:bool_coerce)considered true by Nature/$.", |
| 59 | + div: "Pushes a list containing pairs of values corresponding to the values at that \ |
| 60 | + index in each list.", |
| 61 | + mul: "Pushes a list containing every combination of elements between the two lists." |
| 62 | + } |
| 63 | + }, |
| 64 | + info: { |
| 65 | + iota_embedding: { |
| 66 | + "title": "Iota Embedding", |
| 67 | + "text": { |
| 68 | + "1": "In my studies, I've discovered a way to... \"embed\" iota within \ |
| 69 | + a hex itself, allowing me to avoid the need to reconstruct them with \ |
| 70 | + every cast. This becomes especially useful when combined with \ |
| 71 | + $(l:items/hexcasting)$(item)casting items/$, allowing for much faster \ |
| 72 | + casts, or simply making the process of using the hex within them easier.", |
| 73 | + "2": "Typically, this process involves starting an Introspection-\ |
| 74 | + Retrospection pair, using a placeholder pattern, modifying the list \ |
| 75 | + after the fact using $(l:patterns/lists#hexcasting:index_of)$(action)\ |
| 76 | + Locator's Distillation/$ and $(l:patterns/lists#hexcasting:replace)\ |
| 77 | + $(action)Surgeon's Exaltation/$, and placing a $(l:patterns/lists\ |
| 78 | + #hexcasting:splat)$(action)Flock's Disintegration/$ afterwards to \ |
| 79 | + access the iota — a very annoying and time-consuming process, certainly. \ |
| 80 | + It does seem my forays into this art are viewed favorably by Nature, \ |
| 81 | + as I've recently found two patterns for simplifying the process." |
| 82 | + } |
| 83 | + } |
| 84 | + }, |
| 85 | + noop_examples: { |
| 86 | + "header": "Patience Patterns", |
| 87 | + "text": "Some examples of Patience patterns that can be used." |
| 88 | + } |
| 89 | + } |
| 90 | + }, |
| 91 | + |
| 92 | + hexcasting: { |
| 93 | + action: { |
| 94 | + "hexthings:": { |
| 95 | + noop: "Patience", |
| 96 | + insert: "Flattening Exaltation", |
| 97 | + unquote: "Introjection", |
| 98 | + requote: "Retrojection", |
| 99 | + isgreatersent: "Shard Reflection", |
| 100 | + empty_dict: "Impasse Reflection", |
| 101 | + dict_keys: "Accessor's Purification", |
| 102 | + dict_vals: "Accessed's Purification", |
| 103 | + dict_ents: "Entry Purification", |
| 104 | + uiua_take: "Retention Distillation", |
| 105 | + uiua_drop: "Rejection Distillation", |
| 106 | + uiua_rotate: "Ferris Distillation", |
| 107 | + uiua_where: "Deduction Purification" |
| 108 | + }, |
| 109 | + |
| 110 | + // use this to add shortened versions of pattern names if the full name won't fit in the ingame book |
| 111 | + // you don't need to add an entry for every pattern - the above value will be used as a default |
| 112 | + book: { |
| 113 | + "hexthings:": { |
| 114 | + }, |
| 115 | + }, |
| 116 | + }, |
| 117 | + special: { |
| 118 | + "hexthings:": { |
| 119 | + noop: "Patience" |
| 120 | + } |
| 121 | + }, |
| 122 | + mishap: { |
| 123 | + "invalid_unquote": "Did not first cast Introjection.", |
| 124 | + "invalid_key_type": "An iota of type %s is not allowed as a key.", |
| 125 | + invalid_value: { |
| 126 | + class: { |
| 127 | + int_list: "a list of numbers" |
| 128 | + } |
| 129 | + } |
| 130 | + } |
| 131 | + }, |
| 132 | + |
| 133 | + text: { |
| 134 | + "autoconfig.hexthings": { |
| 135 | + title: "HexThings Config", |
| 136 | + |
| 137 | + category: { |
| 138 | + client: "Client", |
| 139 | + server: "Server", |
| 140 | + }, |
| 141 | + |
| 142 | + option: { |
| 143 | + client: { |
| 144 | + dummyClientConfigOption: { |
| 145 | + "": "Dummy Client Config Option", |
| 146 | + "@Tooltip": "This is an example of a client-side config option that accepts a boolean.", |
| 147 | + }, |
| 148 | + }, |
| 149 | + |
| 150 | + server: { |
| 151 | + dummyServerConfigOption: { |
| 152 | + "": "Dummy Server Config Option", |
| 153 | + "@Tooltip": "This is an example of a server-side config option that accepts an integer.", |
| 154 | + }, |
| 155 | + }, |
| 156 | + }, |
| 157 | + }, |
| 158 | + }, |
| 159 | +} |
0 commit comments