diff --git a/config/packer/1.20-fabric.json b/config/packer/1.20-fabric.json index 853e79aed46f..ee3ef870bf25 100644 --- a/config/packer/1.20-fabric.json +++ b/config/packer/1.20-fabric.json @@ -13,9 +13,7 @@ "1.20.1 Fabric" ], "exclusionMods": [], - "exclusionNamespaces": [ - "hexcasting" - ], + "exclusionNamespaces": [], "fallbackVersions": [ "1.19-fabric", "1.18-fabric" diff --git a/projects/assets/hexcasting/1.20-fabric/hexcasting/lang/en_us.flatten.json5 b/projects/assets/hexcasting/1.20-fabric/hexcasting/lang/en_us.flatten.json5 index f846be50ae93..fbace6c75d9e 100644 --- a/projects/assets/hexcasting/1.20-fabric/hexcasting/lang/en_us.flatten.json5 +++ b/projects/assets/hexcasting/1.20-fabric/hexcasting/lang/en_us.flatten.json5 @@ -265,6 +265,15 @@ "gui.hexcasting": { spellcasting: "Hex Grid", }, + + "category.hexcasting": { + "binds": "Hex Casting", + }, + + "key.hexcasting": { + "spellbook_prev": "Previous Spellbook Page", + "spellbook_next": "Next Spellbook Page", + }, "tag.hexcasting": { staves: "Hex Staves", @@ -276,7 +285,7 @@ "tag.item.hexcasting": { brainswept_circle_components: "Brainswept Circle Components", directrices: "Directrices", - grants_root_advancement: "Grants Rood Advancement", + grants_root_advancement: "Grants Root Advancement", impeti: "Impeti", seal_materials: "Seal Materials", }, @@ -335,13 +344,17 @@ "": "Ctrl Toggles Off Stroke Order", "@Tooltip": "Whether the ctrl key will instead turn *off* the color gradient on patterns", }, + disableInworldScrolling: { + "": "Disable In-World Scrolling", + "@Tooltip": "Disable scrolling input for spellbooks and abaci in the normal world, keeping keybinds and staff screen scrolling normal" + }, invertSpellbookScrollDirection: { "": "Invert Spellbook Scroll Direction", "@Tooltip": "Whether scrolling up (as opposed to down) will increase the page index of the spellbook, and vice versa", }, invertAbacusScrollDirection: { "": "Invert Abacus Scroll Direction", - "@Tooltip": "Whether scrolling up (as opposed to down) will increase the page index of the abacus, and vice versa", + "@Tooltip": "Whether scrolling up (as opposed to down) will increase the value of the abacus, and vice versa", }, gridSnapThreshold: { "": "Grid Snap Threshold", @@ -355,6 +368,14 @@ "": "Always Show List Commas", "@Tooltip": "Whether all iota types should be comma-separated when displayed in lists (by default, pattern iotas do not use commas)", }, + advancedTooltipsShowsIotaNBT: { + "": "Advanced Tooltips Shows Iota NBT", + "@Tooltip": "Whether enabling advanced tooltips (F3+H) should display the full NBT of iotas stored in items like foci and spellbooks", + }, + staticActiveSlates: { + "": "Static Active Slates", + "@Tooltip": "Whether patterns on active slates should be rendered without wobble (improves performance with lots of active slates)", + }, }, server: { @@ -372,11 +393,19 @@ }, actionDenyList: { "": "Action Deny List", - "@Tooltip": "Resource locations of disallowed actions. Trying to cast one of these will result in a mishap. For example, hexcasting:get_caster will prevent Mind's Reflection", + "@Tooltip": "Resource locations of disallowed actions. Trying to cast one of these will result in a mishap. For example, hexcasting:get_caster will prevent Mind's Reflection.", }, circleActionDenyList: { "": "Circle Action Deny List", - "@Tooltip": "Resource locations of disallowed actions within circles. Trying to cast one of these from a circle will result in a mishap.", + "@Tooltip": "Resource locations of disallowed actions within circles. Trying to cast one of these from a circle will result in a mishap. For example, hexcasting:get_caster\" will prevent Mind's Reflection.", + }, + globalCostScaling: { + "": "Global Cost Scaling Factor", + "@Tooltip": "All media costs, except for actions in the #hexcasting:cannot_modify_cost tag, will be multiplied by this value. If you want to modify the cost of an action in that tag, use the per-action cost scaling list.", + }, + costRescaleListRaw: { + "": "Per-Action Cost Scaling Factors", + "@Tooltip": "Maps resource locations to the scaling factor for that specific action's media cost. For example, hexcasting:add_motion 3 will make Impulse cost 3x as much.", }, greaterTeleportSplatsItems: { "": "Greater Teleport Splats Items", @@ -581,6 +610,8 @@ scroll: { needs_purchase: "Purchase to show pattern", pattern_not_loaded: "Place in inventory to load pattern", + "recalc_warning.line1": "The per-world pattern for %s has not been calculated yet!", + "recalc_warning.line2": "Please run /hexcasting recalcPatterns, then get a new scroll.", }, abacus: { @@ -708,6 +739,7 @@ pi: "Arc's Reflection", tau: "Circle's Reflection", "e": "Euler's Reflection", + phi: "Harmony Reflection", }, }, @@ -720,6 +752,7 @@ raycast: "Archer's Distillation", "raycast/axis": "Architect's Distillation", "raycast/entity": "Scout's Distillation", + get_media: "Media Reflection", "circle/": { impetus_pos: "Waystone Reflection", @@ -765,7 +798,19 @@ not_player: "Zone Distillation: Non-Player", not_living: "Zone Distillation: Non-Living", }, - + + type_equals: "Similarity Distillation", + type_not_equals: "Dissimilarity Distillation", + "compare_block/": { + "lenient": "Surveyor's Distillation", + "strict": "Inspector's Distillation", + }, + compare_entity: "Taxonomer's Distillation", + "compare_item/": { + "lenient": "Sorter's Distillation", + "strict": "Stacking Distillation", + }, + swap: "Jester's Gambit", rotate: "Rotation Gambit", rotate_reverse: "Rotation Gambit II", @@ -891,6 +936,15 @@ create_lava: "Create Lava", "teleport/great": "Greater Teleport", brainsweep: "Flay Mind", + + escape: "Consideration", + runtime_escape: "Contemplation", + open_paren: "Introspection", + close_paren: "Retrospection", + open_n_parens: "Meditation", + close_all_parens: "Recollection", + read_into_parens: "Interjection", + undo: "Evanition", eval: "Hermes' Gambit", "eval/cc": "Iris' Gambit", @@ -962,34 +1016,56 @@ number: "Numerical Reflection: %s", mask: "Bookkeeper's Gambit: %s", }, - - "rawhook.hexcasting:": { - open_paren: "Introspection", - close_paren: "Retrospection", - escape: "Consideration", - undo: "Evanition", - }, - + "iota.hexcasting:": { - "null": "Null", - double: "Number", - boolean: "Boolean", - entity: "Entity", - list: "List", - pattern: "Pattern", - garbage: "Garbage", - vec3: "Vector", + null: { + "": "Null", + desc: "a null value", + }, + double: { + "": "Number", + desc: "a number", + }, + boolean: { + "": "Boolean", + desc: "a boolean", + }, + entity: { + "": "Entity", + desc: "an entity", + }, + list: { + "": "List", + desc: "a list", + }, + pattern: { + "": "Pattern", + desc: "a pattern", + }, + garbage: { + "": "Garbage", + desc: "garbage", + }, + vec3: { + "": "Vector", + desc: "a vector", + }, + continution: { + "": "Continuation", + desc: "a jump iota", + }, }, mishap: { "": "%s: %s", - invalid_pattern: "That pattern isn't associated with any action", + invalid_pattern: "The pattern %s isn't associated with any action", + invalid_pattern_generic: "That pattern isn't associated with any action", unescaped: "Expected to evaluate a pattern, but evaluated %s instead", not_enough_args: "expected %s or more arguments but the stack was only %s tall", no_args: "expected %s or more arguments but the stack was empty", - too_many_close_parens: "Did not first use Introspection", + needs_parens: "Did not first use Introspection", wrong_dimension: "cannot see %s from %s", entity_too_far: "%s is out of range", @@ -1026,28 +1102,33 @@ }, no_akashic_record: "No Akashic Record at %s", - disallowed: "has been disallowed by the server admins", - disallowed_circle: "has been disallowed in spell circles by the server admins", + disallowed: "%s has been disallowed by the server admins", + disallowed_generic: "That pattern has been disallowed by the server admins", + disallowed_circle: "%s has been disallowed in spell circles by the server admins", + disallowed_circle_generic: "That pattern has been disallowed in spell circles by the server admins", invalid_spell_datum_type: "Tried to use a value of invalid type as a SpellDatum: %s (class %s). This is a bug in the mod.", unknown: "threw an exception (%s). This is a bug in the mod.", stack_size: "Exceeded the size limit of the stack", bad_caster: "Tried to execute a pattern that requires a greater mind", invalid_value: { - "": "expected %s at index %s of the stack, but got %s", + "": "expected %s at index %s of the stack, but got %s: %s", class: { double: "a number", boolean: "a boolean", vector: "a vector", list: "a list", - widget: "an influence", pattern: "a pattern", + continuation: "a jump iota", + garbage: "garbage", + null: "null", entity: { "": "an entity", mob: "a mob", item: "an item entity", + item_holder: "an item-holding entity", player: "a player", living: "a living entity", }, @@ -1059,7 +1140,6 @@ numvec: "a number or vector", numlist: "an integer or list", - "list.pattern": "a list of patterns", double: { positive: { @@ -1095,6 +1175,7 @@ bad_item: { "": "needs %s but got %dx %s", offhand: "needs %s in the other hand but got %dx %s", + hotbar: "needs %s somewhere in the hotbar", iota: { "": "a place to store iotas", @@ -1111,6 +1192,7 @@ rechargable: "a rechargable item", colorizer: "a pigment", variant: "an item with variants", + placeable: "a placeable item", }, bad_block: { @@ -1200,11 +1282,11 @@ couldnt_cast: "A Frustration", start_to_see: "WHAT DID I SEE", "101": "Hex Casting 101", + whats_a_hex: "What is a Hex?", vectors: "A Primer On Vectors", mishaps: "Mishaps", stack: "The Stack", naming: "Naming Actions", - influences: "Influences", mishaps2: "Enlightened Mishaps", amethyst: "Amethyst", @@ -1251,8 +1333,10 @@ stackmanip: "Stack Manipulation", logic: "Logical Operators", entities: "Entities", + types: "Types", lists: "List Manipulation", patterns_as_iotas: "Escaping Patterns", + advanced_escaping: "Advanced Escaping", readwrite: "Reading and Writing", meta: "Meta-Evaluation", circle_patterns: "Spell Circle Patterns", @@ -1375,7 +1459,7 @@ $(li)Vectors, a collection of three numbers representing a position, movement, or direction.\ $(li)Booleans or \"bools\" for short, representing an abstract True or False.\ $(li)Entities, like myself, chickens, and minecarts.", - "2": "$(li)Influences, peculiar types of iota that seem to represent abstract ideas.\ + "2": "$(li)Influences, iotas that represent various abstract ideas such as the absence of data ($(thing)Null/$) or complete nonsense ($(thing)Garbage/$).\ $(li)Patterns themselves, used for crafting magic items and truly mind-boggling feats like $(italic)spells that cast other spells/$.\ $(li)A list of several of the above, gathered into a single iota.", "3": "Generally, I provide iotas to actions. \ @@ -1390,13 +1474,13 @@ "101": { "1": "Casting a _Hex is quite difficult-- no wonder this art was lost to time! I'll have to re-read my notes carefully.$(br2)I can start a _Hex by pressing $(k:use) with a $(l:items/staff)$(item)Staff/$ in my hand-- this will cause a hexagonal grid of dots to appear in front of me. Then I can click and drag from dot to dot to draw patterns in the _media of the grid; finishing a pattern will run its corresponding action (more on that later).", "2": "Once I've drawn enough patterns to cast a spell, the grid will disappear as the _media I've stored up is released. Holding $(k:sneak) while using my $(l:items/staff)$(item)staff/$ will also clear the grid.$(br2)So how do patterns work? In short:$(li)$(italic)Patterns/$ will execute...$(li)$(italic)Actions/$, which manipulate...$(li)$(l:casting/stack)$(italic)The Stack/$, which is a list of...$(li)$(italic)Iotas/$, which are simply units of information.", - "3": "First, $(thing)patterns/$. These are essential-- they're what I use to manipulate the _media around me. Certain patterns, when drawn, will cause $(thing)actions/$ to happen. Actions are what actually $(italic)do/$ the magic; all patterns influence _media in particular ways, and when those influences end up doing something useful, we call it an action.$(br2)_Media can be fickle: if I draw an invalid pattern, I'll get some $(l:casting/influences)$(action)garbage/$ result somewhere on my stack (read on...)", + "3": "First, $(thing)patterns/$. These are essential-- they're what I use to manipulate the _media around me. Certain patterns, when drawn, will cause $(thing)actions/$ to happen. Actions are what actually $(italic)do/$ the magic; all patterns influence _media in particular ways, and when those influences end up doing something useful, we call it an action.$(br2)_Media can be fickle: if I draw an invalid pattern, I'll get some $(thing)garbage/$ result somewhere on my stack (read on...)", "4.header": "An Example", "4": "It's interesting to note that the $(italic)rotation/$ of a pattern doesn't seem to matter at all. These two patterns both perform an action called $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$, for example.", "5": "A _Hex is cast by drawing (valid) actions in sequence. Each action might do one of a few things:$(li)Gather some information about the environment, leaving it on the top of the stack;$(li)manipulate the info gathered (e.g. adding two numbers); or$(li)perform some magical effect, like summoning lightning or an explosion. (These actions are called \"spells.\")$(p)When I start casting a _Hex, it creates an empty stack. Actions manipulate the top of that stack.", "6": "For example, $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$ will create an iota representing $(italic)me/$, the caster, and add it to the top of the stack. $(l:patterns/basics#hexcasting:entity_pos/eye)$(action)Compass' Purification/$ will take the iota at the top the stack, if it represents an entity, and transform it into an iota representing that entity's location.$(br2)So, drawing those patterns in that order would result in an iota on the stack representing my position.", - "7": "$(thing)Iotas/$ can represent things like myself or my position, but there are several other types I can manipulate with $(thing)Actions/$. Here's a comprehensive list:$(li)Numbers (which some legends called \"doubles\");$(li)Vectors, a collection of three numbers representing a position, movement, or direction in the world;$(li)Booleans or \"bools\" for short, representing an abstract True or False,", - "8": "$(li)Entities, like myself, chickens, and minecarts;$(li)Influences, peculiar types of iota that seem to represent abstract ideas;$(li)Patterns themselves, used for crafting magic items and truly mind-boggling feats like $(italic)spells that cast other spells/$; and$(li)A list of several of the above, gathered into a single iota.", + "7": "$(thing)Iotas/$ can represent things like myself or my position, but there are several other types I can manipulate with $(thing)Actions/$. Here's a comprehensive list:$(li)Numbers (which some legends called \"doubles\");$(li)Vectors, a collection of three numbers representing a position, movement, or direction in the world;$(li)Booleans or \"bools\" for short, representing an abstract True or False;", + "8": "$(li)Entities, like myself, chickens, and minecarts;$(li)Influences, iotas that represent various abstract ideas such as the absence of data ($(thing)Null/$) or complete nonsense ($(thing)Garbage/$);$(li)Patterns themselves, used for crafting magic items and truly mind-boggling feats like $(italic)spells that cast other spells/$;$(li)A list of several of the above, gathered into a single iota.", "9": "Of course, there's no such thing as a free lunch. All spells, and certain other actions, require _media as payment.$(br2)The best I can figure, a _Hex is a little bit like a plan of action presented to Nature-- in this analogy, the _media is used to provide the arguments to back it up, so Nature will accept your plan and carry it out.", "10": "That aside, it doesn't seem like anyone has done much research on exactly how $(italic)much/$ any particular piece of $(l:items/amethyst)$(item)amethyst/$ is valued. The best I can tell, an $(l:items/amethyst)$(item)Amethyst Shard/$ is worth about five pieces of $(l:items/amethyst)$(item)Amethyst Dust/$, and a $(l:items/amethyst)$(item)Charged Amethyst Crystal/$ is worth about ten.$(br2)Strangely enough, it seems like no other form of $(l:items/amethyst)$(item)amethyst/$ is suitable to be used in the casting of a _Hex. I suspect that whole blocks or crystals are too solid to be easily unraveled into _media.", "11": "It's also worth noting that each action will consume the _media it needs immediately, rather than all at once when the Hex finishes. Also, an action will always consume entire items-- an action that only requires one $(l:items/amethyst)$(item)Amethyst Dust/$'s worth of _media will consume an entire $(l:items/amethyst)$(item)Charged Amethyst Crystal/$, if that's all that's present in my inventory.$(br2)Thus, it might be a good idea to bring dust for spellcasting too-- waste not, want not...", @@ -1406,13 +1490,26 @@ "14.link_text": "Goblin Punch", "15": "Finally, it seems spells have a maximum range of influence, about 32 blocks from my position. Trying to affect anything outside of that will cause the spell to fail.$(br2)Despite this, if I have a player's reference, I can affect them from anywhere. This only applies to affecting them directly, though; I cannot use this to affect the world around them if they're outside of my range.$(br)I ought to be careful when giving out a reference like that. While friendly _Hexcasters could use them to great effect and utility, I shudder to think of what someone malicious might do with this.", }, - + + whats_a_hex: { + "1": "Conceptually, a _Hex is exactly as described in $(l:casting/101)Hex Casting 101/$: a sequence of actions, usually done with the goal of performing some kind of effect in the world by means of one or more spells.$(br2)This idea of a _Hex is fine for on-the-fly casting, but if I wish to record my work for posterity (or simply for my own reuse) I may need something a little more concrete.", + "2": "Typically, this takes the form of a list of pattern iotas, as created by the techniques described in $(l:patterns/patterns_as_iotas)Escaping Patterns/$. With my _Hex placed onto the stack this way, I can cast it using meta-evaluation patterns like $(l:patterns/meta#hexcasting:eval)Hermes' Gambit/$, or infuse it into a $(l:items/hexcasting)Casting Item/$ item for easy reuse.$(br2)Note that this list is no different from any other list iota - I can manipulate it, save it into $(l:items/thought_knot)permanent/$ $(l:items/focus)storage/$, or even incorporate it into another _Hex.", + "3": "Note also that this list need not be composed exclusively of pattern iotas. Inserting iotas of other types into my _Hexes won't normally end well, but $(l:patterns/patterns_as_iotas#iota_embedding)certain techniques/$ allow me to do it safely. Furthermore, some $(l:patterns/meta#hexcasting:eval/cc)special iotas/$ can be directly evaluated just like a pattern.$(br2)With this in mind, $(o)any/$ list of iotas can in theory be a _Hex - the only requirement is that I can successfully cast it.", + }, + vectors: { - "1": "It seems I will need to be adroit with vectors if I am to get anywhere in my studies. I have compiled some resources here on vectors if I find I do not know how to work with them.$(br2)First off, an enlightening video on the topic.", - "1.link_text": "3blue1brown", - "2": "Additionally, it seems that the mages who manipulated $(thing)Psi energy/$ (the so-called \"spellslingers\"), despite their poor naming sense, had some quite-effective lessons on vectors to teach their acolytes. I've taken the liberty of linking to one of their texts on the next page.$(br2)They seem to have used different language for their spellcasting:$(li)A \"Spell Piece\" was their name for an action;$(li)a \"Trick\" was their name for a spell; and$(li)an \"Operator\" was their name for a non-spell action.", - "3": "Link here.", - "3.link_text": "Psi Codex", + "1": "It seems I will need to be adroit with vectors if I am to get anywhere in my studies. A vector is a set of three numbers that can be used to represent a variety of things, usually either a position in the world, an offset from one position to another, or a direction in space. The following pages provide a basic summary of how vectors work and what I can do with them.", + "2": "All the vectors I will be working with as a $(hex)Hexcaster/$ are three-dimensional, since the world I inhabit has three dimensions.$(br2)Each vector has an X component, a Y component, and a Z component in that order, corresponding to the three coordinate axes of the world: the X axis runs east and west, the Y axis runs up and down, and the Z axis runs north and south.", + "3": "The most basic way to use a vector is as a $(o)position/$, representing a fixed point in the world - it could be the location of a block, or an entity, or perhaps some empty space that I wish to target with a spell.$(br2)A position vector is effectively just a set of coordinates pinpointing the exact location to which it refers. However, not all vectors represent positions.", + "4": "If I have a vector for the position of a block, and I want to target the block above it, I need to increase the Y component of the vector by 1. I can do this by taking a second vector with the value (0, 1, 0) and adding it to the first one. Likewise, if I wanted to target something two blocks to the east, I could add a second vector with the value (2, 0, 0). Both of these new vectors represent $(o)offsets/$ from one position to a new position.", + "5": "Note that while position vectors and offset vectors represent different things, there is no fundamental difference between them - all vectors are just groups of numbers. In fact, I could even consider all my vectors to be one type or the other if I so desired: positions are just offsets from the world origin to the specified coordinates, and offsets are just positions relative to an arbitrary starting point.", + "6": "Two important properties of vectors are $(o)magnitude/$ (length) and $(o)direction/$. These may be easiest to imagine when thinking of vectors as offsets.$(br2)If I were to choose a starting point, and then move in a straight line based on an offset vector, the distance I travelled would be the length of the vector, and the direction I travelled would be its direction.", + "7": "There many ways to manipulate vectors. As described earlier, I can add them together, which adds the corresponding X, Y, and Z components of each vector. The same applies with subtraction - conveniently, subtracting one position vector from another results in the offset from the first position to the second.$(br2)Multiplying and dividing two vectors is not so simple; I can find more information on that topic $(l:https://www.mathsisfun.com/algebra/vectors-dot-product.html)here/$ and $(l:https://www.mathsisfun.com/algebra/vectors-cross-product.html)here/$.", + "8": "I can also multiply or divide a vector by a single number to $(o)scale/$ it. This multiplies or divides all three components of the vector by that number.$(br2)So long as the number is positive, this will multiply or divide the length of the vector without affecting its direction. If the number is negative, the length will be multiplied or divided as usual, but the direction will be reversed.", + "9": "Dividing a vector by its own length produces a unit vector, which has the same direction as the original but a length of exactly 1. These can be useful if the direction of the vector is all that matters. They are also useful in that I can multiply a unit vector by some number to get a new vector with exactly that length.$(br2)Many patterns that calculate a direction of some kind, such as $(l:patterns/basics#hexcasting:get_entity_look)Alidade's Purification/$, provide it as a unit vector.", + "10": "All the operations described thus far, and many more, can be performed using patterns found in the $(l:patterns/math)Mathematics/$ section.$(br2)I can create new vectors by gathering information from entities using $(l:patterns/basics)Basic Patterns/$, by using $(l:patterns/consts)Constants/$ to create unit vectors for basic directions, or by directly combining three numbers with $(l:patterns/math#hexcasting:construct_vec)Vector Exaltation/$.", + "11": "To understand more advanced concepts related to vectors, I may want to do further research outside the bounds of this notebook. The video below may also serve as a useful reference.", + "11.link_text": "3blue1brown", }, mishaps: { @@ -1421,16 +1518,16 @@ "3": "Fortunately, although the bad effects of mishaps are certainly $(italic)annoying/$, none of them are especially destructive in the long term. Nothing better to do than dust myself off and try again ... but I should strive for better anyways.$(br2)Following is a list of mishaps I have compiled.", "invalid_pattern.title": "Invalid Pattern", - invalid_pattern: "The pattern drawn is not associated with any action.$(br2)Causes yellow sparks, and a $(l:casting/influences)$(action)Garbage/$ will be pushed to the top of my stack.", + invalid_pattern: "The pattern drawn is not associated with any action.$(br2)Causes yellow sparks, and a $(thing)garbage/$ will be pushed to the top of my stack.", "not_enough_iotas.title": "Not Enough Iotas", - not_enough_iotas: "The action required more iotas than were on the stack.$(br2)Causes light gray sparks, and as many $(l:casting/influences)$(action)Garbages/$ as would be required to fill up the argument count will be pushed.", - + not_enough_iotas: "The action required more iotas than were on the stack.$(br2)Causes light gray sparks, and as many $(thing)Garbages/$ as would be required to fill up the argument count will be pushed.", + "stack_size.title": "Too Many Iotas", - "stack_size": "I tried to cast a spell which exceeded the size limit of the stack.$(br2)Causes black sparks, and my entire stack will be replaced with a single $(l:casting/influences)$(action)Garbage/$.", + "stack_size": "I tried to cast a spell which exceeded the size limit of the stack.$(br2)Causes black sparks, and my entire stack will be replaced with a single $(thing)garbage/$.", "incorrect_iota.title": "Incorrect Iota", - incorrect_iota: "The action that was executed expected an iota of a certain type for an argument, but it got something invalid. If multiple iotas are invalid, the error message will only tell me about the error deepest in the stack.$(br2)Causes dark gray sparks, and the invalid iota will be replaced with $(l:casting/influences)$(action)Garbage/$.", + incorrect_iota: "The action that was executed expected an iota of a certain type for an argument, but it got something invalid. If multiple iotas are invalid, the error message will only tell me about the error deepest in the stack.$(br2)Causes dark gray sparks, and the invalid iota will be replaced with $(thing)garbage/$.", "vector_out_of_range.title": "Vector Out of Ambit", vector_out_of_range: "The action tried to affect the world at a point that was out of my range.$(br2)Causes magenta sparks, and the items in my hands will be yanked out and flung towards the offending location.", @@ -1442,7 +1539,7 @@ entity_immune: "The action tried to affect an entity that cannot be altered by it.$(br2)Causes blue sparks, and the items in my hands will be yanked out and flung towards the offending entity.", "math_error.title": "Mathematical Error", - math_error: "The action did something offensive to the laws of mathematics, such as dividing by zero.$(br2)Causes red sparks, pushes a $(l:casting/influences)$(action)Garbage/$ to my stack, and my mind will be ablated, stealing half the vigor I have remaining. It seems that Nature takes offense to such operations, and divides $(italic)me/$ in retaliation.", + math_error: "The action did something offensive to the laws of mathematics, such as dividing by zero.$(br2)Causes red sparks, pushes a $(thing)garbage/$ to my stack, and my mind will be ablated, stealing half the vigor I have remaining. It seems that Nature takes offense to such operations, and divides $(italic)me/$ in retaliation.", "incorrect_item.title": "Incorrect Item", incorrect_item: "The action requires some sort of item, but the item I supplied was not suitable.$(br2)Causes brown sparks. If the offending item was in my hand, it will be flung to the floor. If it was in entity form, it will be flung in the air.", @@ -1450,9 +1547,9 @@ "incorrect_block.title": "Incorrect Block", incorrect_block: "The action requires some sort of block at a target location, but the block supplied was not suitable.$(br2)Causes bright green sparks, and causes an ephemeral explosion at the given location. The explosion doesn't seem to harm me, the world, or anything else though; it's just startling.", - "retrospection.title": "Hasty Retrospection", - retrospection: "I attempted to draw $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ without first drawing $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$.$(br2)Causes orange sparks, and pushes the pattern for $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ to the stack as a pattern iota.", - + "needs_parens.title": "Absent Introspection", + needs_parens: "I attempted to draw a pattern that only works while $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)introspecting/$ without first drawing $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$.$(br2)Causes orange sparks, and pushes the pattern I tried to draw to the stack as an iota.", + "too_many_patterns.title": "Lost in Thought", too_many_patterns: "I attempted to evaluate too many patterns in one _Hex. Often, this happens because I've accidentally created an infinite loop.$(br2)Causes dark blue sparks, and chokes all the air out of me.", @@ -1478,18 +1575,12 @@ "2": "$(li)A $(thing)Reflection/$ pops nothing and pushes one iota.$(li)A $(thing)Purification/$ pops one and pushes one.$(li)A $(thing)Distillation/$ pops two and pushes one.$(li)An $(thing)Exaltation/$ pops three or more and pushes one.$(li)A $(thing)Decomposition/$ pops one argument and pushes two.$(li)A $(thing)Disintegration/$ pops one and pushes three or more.$(li)Finally, a $(thing)Gambit/$ pushes or pops some other number (or rearranges the stack in some other manner).", "3": "Spells seem to be exempt from this nomenclature and are more or less named after what they do-- after all, why call it a $(action)Demoman's Gambit/$ when you could just say $(l:patterns/spells/basic#hexcasting:explode)$(action)Explosion/$?", }, - - influences: { - "1": "Influences are ... strange, to say the least. Whereas most iotas seem to represent something about the world, influences represent something more... abstract, or formless.$(br2)For example, one influence I've named $(l:casting/influences)$(thing)Null/$ seems to represent nothing at all. It's created when there isn't a suitable answer to a question asked, such as an $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation/$ facing the sky.", - "2": "In addition, I've discovered a curious quartet of influences I've named $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$, $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$, $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, and $(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)Evanition/$. They seem to have properties of both patterns and other influences, yet act very differently. I can use these to add patterns to my stack as iotas, instead of matching them to actions. $(l:patterns/patterns_as_iotas)My notes on the subject are here/$.", - "3": "Finally, there seems to be an infinite family of influences that just seem to be a tangled mess of _media. I've named them $(l:casting/influences)$(action)Garbage/$, as they are completely useless. They seem to appear in my stack at various places in response to $(l:casting/mishaps)$(thing)mishaps/$, and appear to my senses as a nonsense jumble.", - }, - + mishaps2: { "1": "I have discovered new and horrifying modes of failure. I must not succumb to them.", "bad_mindflay.title": "Inert Mindflay", - bad_mindflay: "Attempted to flay the mind of something that I have either already used, or of a character not suitable for the target block.$(br2)Causes dark green sparks, and kills the subject. If a villager sees that, I doubt they would look on it favorably.", + bad_mindflay: "Attempted to flay the mind of something that I have either already used, or of a character not suitable for the target block.$(br2)Causes dark green sparks. Subjects I have already used will be killed outright, while those that are simply unsuitable will be slightly damaged.", "no_circle.title": "Lack Spell Circle", no_circle: "Tried to cast an action requiring a spell circle without a spell circle.$(br2)Causes light blue sparks, and upends my inventory onto the ground.", @@ -1526,7 +1617,7 @@ thought_knot: { "1": "The forgetful often tie a piece of string about their finger to help them remember something important. I believe this idea might be of use in my art. A specially knotted piece of string should be able to hold a single iota stably, irregardless of my stack.$(br2)I will call my invention a $(item)Thought-Knot/$.", "2": "When I craft it, it stores no iota. Using $(l:patterns/readwrite#hexcasting:write)$(action)Scribe's Gambit/$ while holding a $(item)Thought-Knot/$ in my other hand will remove the top of the stack and save it into the $(item)Thought-Knot/$. Using $(l:patterns/readwrite#hexcasting:read)$(action)Scribe's Reflection/$ will copy whatever iota's in the $(item)Thought-Knot/$ and add it to the stack.$(br2)Once a $(item)Thought-Knot/$ has been written to, the string is indelibly tangled; the iota can be read any number of times, but there is no way to erase or overwrite it. Fortunately, they are not expensive.", - "3": "Also, if I store an entity in a $(item)Thought-Knot/$ and try to recall it after the referenced entity has died or otherwise disappeared, the $(l:patterns/readwrite#hexcasting:read)$(action)Scribe's Reflection/$ will add $(l:casting/influences)$(thing)Null/$ to the stack instead.", + "3": "Also, if I store an entity in a $(item)Thought-Knot/$ and try to recall it after the referenced entity has died or otherwise disappeared, the $(l:patterns/readwrite#hexcasting:read)$(action)Scribe's Reflection/$ will add $(thing)Null/$ to the stack instead.", "crafting.desc": "$(italic)How would you feel if someone saw you wearing a sign that said, \"I am dashing and handsome?\"/$", }, @@ -1564,11 +1655,11 @@ // roll credits hexcasting: { - "1": "Although the flexibility of casting _Hexes \"on the go\" with my $(l:items/staff)$(item)Staff/$ is quite helpful, it's a huge pain to have to wave it around repeatedly just to accomplish a basic task. If I could save a common spell for later reuse, it would simplify things a lot-- and allow me to share my _Hexes with friends, too.", + "1": "Although the flexibility of casting _Hexes \"on the go\" with my $(l:items/staff)$(item)Staff/$ is quite helpful, it's a huge pain to have to wave it around repeatedly just to accomplish a basic task. If I could save a common _Hex for later reuse, it would simplify things a lot-- and allow me to share my _Hexes with friends, too.", "2": "To do this, I can craft one of three types of magic items: $(l:items/hexcasting)$(item)Cyphers/$, $(l:items/hexcasting)$(item)Trinkets/$, or $(l:items/hexcasting)$(item)Artifacts/$. All of them hold the patterns of a given _Hex inside, along with a small battery containing _media.$(br2)Simply holding one and pressing $(thing)$(k:use)/$ will cast the patterns inside, as if the holder had cast them out of a staff, using its internal battery.", "3": "Each item has its own quirks:$(br2)$(l:items/hexcasting)$(item)Cyphers/$ are fragile, destroyed after their internal _media reserves are gone, and $(italic)cannot/$ be recharged;$(br2)$(l:items/hexcasting)$(item)Trinkets/$ can be cast as much as the holder likes, as long as there's enough _media left, but become useless afterwards until recharged;", "4": "$(l:items/hexcasting)$(item)Artifacts/$ are the most powerful of all-- after their _media is depleted, they can use $(l:items/amethyst)$(item)Amethyst/$ from the holder's inventory to pay for the _Hex, just as I do when casting with a $(l:items/staff)$(item)Staff/$. Of course, this also means the spell might consume their mind if there's not enough $(l:items/amethyst)$(item)Amethyst/$.$(br2)Once I've made an empty magic item in a mundane crafting bench, I infuse the _Hex into it using (what else but) a spell appropriate to the item. $(l:patterns/spells/hexcasting)I've catalogued the patterns here./$", - "5": "Each infusion spell requires an entity and a list of patterns on the stack. The entity must be a _media-holding item entity (i.e. $(l:items/amethyst)$(item)amethyst/$ crystals, dropped on the ground); the entity is consumed and forms the battery.$(br2)Usefully, it seems that the _media in the battery is not consumed in chunks as it is when casting with a $(l:items/staff)$(item)Staff/$-- rather, the _media \"melts down\" into one continuous pool. Thus, if I store a _Hex that only costs one $(l:items/amethyst)$(item)Amethyst Dust/$'s worth of media, a $(l:items/amethyst)$(item)Charged Crystal/$ used as the battery will allow me to cast it 10 times.", + "5": "Each infusion spell requires an entity and a $(l:casting/whats_a_hex)list of iotas/$ to cast on the stack. The entity must be a _media-holding item entity (i.e. $(l:items/amethyst)$(item)amethyst/$ dropped on the ground); the entity is consumed and forms the battery.$(br2)Usefully, it seems that the _media in the battery is not consumed in chunks as it is when casting with a $(l:items/staff)$(item)Staff/$-- rather, the _media \"melts down\" into one continuous pool. Thus, if I store a _Hex that only costs one $(l:items/amethyst)$(item)Amethyst Dust/$'s worth of media, a $(l:items/amethyst)$(item)Charged Crystal/$ used as the battery will allow me to cast it 10 times.", "crafting.desc": "$(italic)We have a saying in our field: \"Magic isn't\". It doesn't \"just work,\" it doesn't respond to your thoughts, you can't throw fireballs or create a roast dinner from thin air or turn a bunch of muggers into frogs and snails./$", }, @@ -1666,12 +1757,12 @@ empty_directrix: "Firstly, a design for the cradle ... although, perhaps \"substrate\" would be more accurate a word. Without a mind guiding it, the output direction is determined by microscopic fluctuations in the _media wave and surroundings, making it effectively random.", directrix_redstone: "A $(l:greatwork/directrix)$(item)Mason Directrix/$ switches output side based on a redstone signal. Without a signal, the exit is the _media-color side; with a signal, the exit is the redstone-color side.", - directrix_boolean: "A $(l:greatwork/directrix)$(item)Shepherd Directrix/$ switches output side based on a boolean on the stack. A $(thing)True/$ makes the wave exit from the back, a $(thing)False/$ from the front. Failing to provide a boolean at all will cause a mishap." + directrix_boolean: "A $(l:greatwork/directrix)$(item)Shepherd Directrix/$ switches output side based on a boolean popped from the stack. A $(thing)True/$ makes the wave exit from the back, a $(thing)False/$ from the front. Failing to provide a boolean at all will cause a mishap." }, akashiclib: { "1": "I KNOW SO MUCH it is ONLY RIGHT to have a place to store it all. Information can be stored in books but it is oh so so so so $(italic)slow/$ to write by hand and read by eye. I demand BETTER. And so I shall MAKE better.$(br2)... I am getting worse ... do not know if I have time to write everything bursting through my head before expiring.", - "2": "The library. Here. My plans.$(br2)Like how patterns are associated with actions, I can associate my own patterns with iotas in any way I choose. An $(l:greatwork/akashiclib)$(item)Akashic Record/$ controls the library, and each $(l:greatwork/akashiclib)$(item)Akashic Bookshelf/$ stores one pattern mapped to one iota. These must all be directly connected together, touching, within 32 blocks. An $(l:greatwork/akashiclib)$(item)Akashic Ligature/$ doesn't do anything but count as a connecting block, to extend the size of my library.", + "2": "The library. Here. My plans.$(br2)Like how patterns are associated with actions, I can associate my own patterns with iotas in any way I choose. An $(l:greatwork/akashiclib)$(item)Akashic Record/$ controls the library, and each $(l:greatwork/akashiclib)$(item)Akashic Bookshelf/$ stores one pattern mapped to one iota. These must all be directly connected together, touching, within 128 blocks. An $(l:greatwork/akashiclib)$(item)Akashic Ligature/$ doesn't do anything but count as a connecting block, to extend the size of my library.", akashic_record: "Allocating and assigning patterns is simple but oh so boring. I have better things to do. I will need a mind well-used to its work for the extraction to stay sound.", "3": "Then to operate the library is simple, the patterns are routed through the librarian and it looks them up and returns the iota to you. Two actions do the work. $(l:patterns/akashic_patterns)Notes here/$.$(br2)Using an empty $(l:items/scroll)$(item)scroll/$ on a bookshelf copies the pattern there onto the $(l:items/scroll)$(item)scroll/$. Sneaking and using an empty hand clears the datum in the shelf.", }, @@ -1704,7 +1795,7 @@ print: "Displays the top iota of the stack to me.", raycast: { "1": "Combines two vectors (a position and a direction) into the answer to the question: If I stood at the position and looked in the direction, what block would I be looking at? Costs a negligible amount of _media.", - "2": "If it doesn't hit anything, the vectors will combine into $(l:casting/influences)$(thing)Null/$.$(br2)A common sequence of patterns, the so-called \"raycast mantra,\" is $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$, $(l:patterns/basics#hexcasting:entity_pos/eye)$(action)Compass' Purification/$, $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$, $(l:patterns/basics#hexcasting:get_entity_look)$(action)Alidade Purification/$, $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation/$. Together, they return the vector position of the block I am looking at.", + "2": "If it doesn't hit anything, the vectors will combine into $(thing)Null/$.$(br2)A common sequence of patterns, the so-called \"raycast mantra,\" is $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$, $(l:patterns/basics#hexcasting:entity_pos/eye)$(action)Compass' Purification/$, $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$, $(l:patterns/basics#hexcasting:get_entity_look)$(action)Alidade Purification/$, $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation/$. Together, they return the vector position of the block I am looking at.", }, "raycast/axis": { "1": "Like $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation/$, but instead returns a vector representing the answer to the question: Which $(italic)side/$ of the block am I looking at? Costs a negligible amount of _media.", @@ -1713,6 +1804,7 @@ "raycast/entity": "Like $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation/$, but instead returns the $(italic)entity/$ I am looking at. Costs a negligible amount of _media.", get_entity_height: "Transforms an entity on the stack into its height.", get_entity_velocity: "Transforms an entity on the stack into the direction in which it's moving, with the speed of that movement as that direction's magnitude.", + get_media: "Pushes the amount of _media available to the current cast, in units of $(l:items/amethyst)$(item)Amethyst Dust/$.", }, numbers: { @@ -1747,13 +1839,13 @@ "mul.2": "As such:$(li)With two numbers, combines them into their product.$(li)With a number and a vector, removes the number from the stack and multiplies each component of the vector by that number.$(li)With two vectors, combines them into their $(l:https://www.mathsisfun.com/algebra/vectors-dot-product.html)dot product/$.", "div.1": "Perform division or the cross product.", - "div.2": "As such:$(li)With two numbers, combines them into their quotient.$(li)With a number and a vector, removes the number and divides it by each element of the vector.$(li)With two vectors, combines them into their $(l:https://www.mathsisfun.com/algebra/vectors-cross-product.html)cross product/$.$(br2)In the first and second cases, the top of the stack or its components comprise the dividend, and the second-from-the-top or its components are the divisor.$(p)WARNING: Never divide by zero!", + "div.2": "As such:$(li)With two numbers, combines them into their quotient.$(li)With a number and a vector, removes the number and divides each element of the vector by it.$(li)With two vectors, combines them into their $(l:https://www.mathsisfun.com/algebra/vectors-cross-product.html)cross product/$.$(br2)In the first and second cases, the second-from-the-top of the stack is divided by the top of the stack.$(p)WARNING: Never divide by zero!", "abs.1": "Compute the absolute value or length.", "abs.2": "Replaces a number with its absolute value, or a vector with its length.", "pow.1": "Perform exponentiation or vector projection.", - "pow.2": "With two numbers, combines them by raising the first to the power of the second.$(li)With a number and a vector, removes the number and raises each component of the vector to the number's power.$(li)With two vectors, combines them into the $(l:https://en.wikipedia.org/wiki/Vector_projection)vector projection/$ of the top of the stack onto the second-from-the-top.$(br2)In the first and second cases, the first argument or its components are the base, and the second argument or its components are the exponent.", + "pow.2": "With two numbers, combines them by raising the first to the power of the second.$(li)With a number and a vector, removes the number and raises each component of the vector to the number's power.$(li)With two vectors, combines them into the $(l:https://en.wikipedia.org/wiki/Vector_projection)vector projection/$ of the second-from-the-top onto the top of the stack.$(br2)In the first and second cases, the first argument or its components are the base, and the second argument or its components are the exponent.", floor: "\"Floors\" a number, cutting off the fractional component and leaving an integer value. If passed a vector, instead floors each of its components.", ceil: "\"Ceilings\" a number, raising it to the next integer value if it has a fractional component. If passed a vector, instead ceils each of its components.", @@ -1792,7 +1884,7 @@ }, "consts.const/": { - "null": "Adds the $(l:casting/influences)$(thing)Null/$ influence to the top of the stack.", + "null": "Adds the $(thing)Null/$ influence to the top of the stack.", "true": "Adds $(thing)True/$ to the top of the stack.", "false": "Adds $(thing)False/$ to the top of the stack.", @@ -1807,6 +1899,7 @@ tau: "Adds τ, the radial representation of a complete circle, to the stack.", pi: "Adds π, the radial representation of half a circle, to the stack.", "e": "Adds $(italic)e/$, the base of natural logarithms, to the stack.", + phi: "Adds φ, the golden ratio, to the stack. This is the ratio between two values such that (A+B)/A = A/B.", }, }, @@ -1839,7 +1932,7 @@ }, logic: { - bool_coerce: "Convert an argument to a boolean. The number $(thing)0/$, $(l:casting/influences)$(thing)Null/$, False, and the empty list become False; everything else becomes True.", + bool_coerce: "Convert an argument to a boolean. The number $(thing)0/$, $(thing)Null/$, False, and the empty list become False; everything else becomes True.", bool_to_number: "Convert a boolean to a number; True becomes $(thing)1/$, and False becomes $(thing)0/$.", not: "If the argument is True, return False; if it is False, return True.", or: "Returns True if at least one of the arguments are True; otherwise returns False.", @@ -1855,13 +1948,13 @@ }, entities: { - get_entity: "Transform the position on the stack into the entity at that location (or $(l:casting/influences)$(thing)Null/$ if there isn't one).", + get_entity: "Transform the position on the stack into the entity at that location (or $(thing)Null/$ if there isn't one).", "get_entity/": { - animal: "Transform the position on the stack into the animal at that location (or $(l:casting/influences)$(thing)Null/$ if there isn't one).", - monster: "Transform the position on the stack into the monster at that location (or $(l:casting/influences)$(thing)Null/$ if there isn't one).", - item: "Transform the position on the stack into the dropped item at that location (or $(l:casting/influences)$(thing)Null/$ if there isn't one).", - player: "Transform the position on the stack into the player at that location (or $(l:casting/influences)$(thing)Null/$ if there isn't one).", - living: "Transform the position on the stack into the living creature at that location (or $(l:casting/influences)$(thing)Null/$ if there isn't one).", + animal: "Transform the position on the stack into the animal at that location (or $(thing)Null/$ if there isn't one).", + monster: "Transform the position on the stack into the monster at that location (or $(thing)Null/$ if there isn't one).", + item: "Transform the position on the stack into the dropped item at that location (or $(thing)Null/$ if there isn't one).", + player: "Transform the position on the stack into the player at that location (or $(thing)Null/$ if there isn't one).", + living: "Transform the position on the stack into the living creature at that location (or $(thing)Null/$ if there isn't one).", }, zone_entity: "Take a position and maximum distance on the stack, and combine them into a list of all entities near the position.", @@ -1878,9 +1971,26 @@ not_living: "Take a position and maximum distance on the stack, and combine them into a list of non-living entities near the position.", }, }, - + + types: { + type_equals: "Compare the given iotas and push whether they are of the same type.", + type_not_equals: "Compare the given iotas and push whether they are of different types.", + "compare_block/": { + lenient: "Compare the blocks specified by the given vectors and push whether they are of the same type. Two $(l:items/edified#hexcasting:cut_edified_plank_variants)$(item)Edified Stairs/$ will always compare as equal regardless of their shape or if they are waterlogged.", + strict: "Compare the blocks specified by the given vectors and push whether they appear to be identical. Two placed $(l:items/edified#hexcasting:cut_edified_plank_variants)$(item)Edified Stairs/$ will only compare as equal if they appear exactly the same.", + remarks: "Nature seems a bit arbitrary as to when blocks appear identical to each other. Placed $(l:items/slate)$(item)Slates/$ appear identical if they face the same direction and share waterlogging state, even if they have different patterns written to them. Similarly, chests appear identical if their outward appearance is the same, even if their contents differ." + }, + compare_entity: "Compare the given entities and push whether they are of the same type.", + "compare_item/": { + lenient: "Compare the items represented or held by the given entities and push whether they are the same type of item. Two $(l:items/focus)$(item)Foci/$ will always compare as equal.", + strict: "Like $(l:patterns/types#hexcasting:compare_item/lenient)$(action)Sorter's Distillation/$, but push whether they are identical items. Two $(l:items/focus)$(item)Foci/$ only compare as identical if they hold the same iota and have $(l:patterns/spells/cyclevariant)$(thing)the same appearance/$.", + "remarks.title": "On Item Holders", + remarks: "The way Nature interprets an entity given to $(l:patterns/types#hexcasting:compare_item/lenient)$(action)Sorter's Dstl./$ or $(l:patterns/types#hexcasting:compare_item/strict)$(action)Stacking Dstl./$ depends on its type:$(li)Item entities resolve to the items they represents$(li)Item frames resolve to the item they contain, and mishap if they are empty$(li)Players resolve to the item they are currently holding, prioritizing their primary hand" + }, + }, + lists: { - index: "Remove the number at the top of the stack, then replace the list at the top with the nth element of that list (where n is the number you removed). Replaces the list with $(l:casting/influences)$(thing)Null/$ if the number is out of bounds.", + index: "Remove the number at the top of the stack, then replace the list at the top with the nth element of that list (where n is the number you removed). Replaces the list with $(thing)Null/$ if the number is out of bounds.", slice: "Remove the two numbers at the top of the stack, then take a sublist of the list at the top of the stack between those indices, lower bound inclusive, upper bound exclusive. For example, the 0, 2 sublist of [0, 1, 2, 3, 4] would be [0, 1].", append: "Remove the top of the stack, then add it to the end of the list at the top of the stack.", unappend: "Remove the iota on the end of the list at the top of the stack, and add it to the top of the stack.", @@ -1900,24 +2010,32 @@ patterns_as_iotas: { "1": "One of the many peculiarities of this art is that $(italic)patterns themselves/$ can act as iotas-- I can even put them onto my stack when casting.$(br2)This raises a fairly obvious question: how do I express them? If I simply drew a pattern, it would hardly tell Nature to add it to my stack-- rather, it would simply be matched to an action.", - "2": "Fortunately, Nature has provided me with a set of $(l:casting/influences)influences/$ that I can use to work with patterns directly.$(br2)In short, $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ lets me add one pattern to the stack, and $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ let me add a whole list.", - escape: { - "1": "To use $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$, I draw it, then another arbitrary pattern. That second pattern is added to the stack.", + "2": "Fortunately, Nature has provided me with a set of special patterns that I can use to work with other patterns directly.$(br2)In short, $(l:patterns/patterns_as_iotas#hexcasting:runtime_escape)$(action)Contemplation/$ and $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ let me add one pattern to the stack, $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ let me add a whole list, and $(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)Evanition/$ lets me undo mistakes during the creation of such a list.", + runtime_escape: { + "1": "To use $(l:patterns/patterns_as_iotas#hexcasting:runtime_escape)$(action)Contemplation/$, I draw it, then another arbitrary pattern. That second pattern is added to the stack.", "2": "One may find it helpful to think of this as \"escaping\" the pattern onto the stack, if they happen to be familiar with the science of computers.$(br2)The usual use for this is to copy the pattern to a $(l:items/scroll)$(item)Scroll/$ or $(l:items/slate)$(item)Slate/$ using $(l:patterns/readwrite#hexcasting:write)$(action)Scribe's Gambit/$, and then perhaps decorating with them.", }, parens: { - "1": "Drawing $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$ makes my drawing of patterns act differently, for a time. Until I draw $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Retrospection/$, the patterns I draw are saved. Then, when I draw $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, they are added to the stack as a list iota.", + "1": "Drawing $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$ makes my drawing of patterns act differently, for a time. Until I draw $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, the patterns I draw are saved. Then, when I draw $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, they are added to the stack as a list iota.", "2": "If I draw another $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Introspection/$, it'll still be saved to the list, but I'll then have to draw $(italic)two/$ $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospections/$ to get back to normal casting.", }, - undo: "Finally, if I make a mistake while drawing patterns inside $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Intro-/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ I can draw $(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)Evanition/$ to remove the last pattern that I drew from the pattern list that is being constructed.", + undo: "Finally, if I make a mistake while drawing patterns inside $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Intro-/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, I can draw $(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)Evanition/$ to remove the last pattern that I drew from the pattern list that is being constructed.", + escape: "Similar to $(l:patterns/patterns_as_iotas#hexcasting:runtime_escape)$(action)Contemplation/$, but acts even when drawn between $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Intro-/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$. This can \"escape\" other patterns that work between $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Intro-/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, putting them into the list without any other effects.", further_notes: { title: "Further Notes", - "1": "I can escape the special behavior of $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Intro-/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ by drawing a $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ before them, which will simply add them to the list without affecting which the number of $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospections/$ I need to return to casting.$(br2)If I draw two $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Considerations/$ in a row while $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)introspecting/$, it will add a single $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ to the list.", + "1": "Because $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ acts immediately within $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Intro-/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, I need to draw two of them if I want to actually put $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ into a pattern list. The first $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ escapes the special behavior of the second, allowing it to go into the list.$(br2)$(l:patterns/patterns_as_iotas#hexcasting:runtime_escape)$(action)Contemplation/$, on the other hand, only needs to be drawn once no matter the depth.", "2": "If an iota other than a pattern is present in a list to be executed by $(l:patterns/meta#hexcasting:eval)$(action)Hermes' Gambit/$ or any other meta-evaluation pattern, it will normally result in a mishap. However, this can be avoided using the patterns described in this section.$(br2)Just as with pattern iotas, the patterns described here can be used to \"escape\" $(o)any other$() kind of iota, causing it to be pushed to the stack when something tries to evaluate it instead of causing a mishap.", - "3": "This technique may be useful if I want a _Hex to be able to reference a specific iota, such as a complicated vector or an entity reference, without having to construct or obtain it each time.$(br2)The process of getting such an iota into a list of patterns in the first place may be somewhat involved. The simplest method would be to draw a placeholder pattern when assembling the list, and then make use of $(l:patterns/lists#hexcasting:replace)$(action)Surgeon's Exaltation/$ to replace it with my desired iota.", + "3": "This technique may be useful if I want a _Hex to be able to reference a specific iota, such as a complicated vector or an entity reference, without having to construct or obtain it each time.$(br2)To get such an iota into a list of patterns in the first place, I can either use $(l:patterns/advanced_escaping#hexcasting:read_into_parens)$(action)Interjection/$ while creating the list, or draw a placeholder pattern and then use $(l:patterns/lists#hexcasting:replace)$(action)Surgeon's Exaltation/$ to replace it once the list has been created.", }, }, - + + advanced_escaping: { + "1": "$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Intro-/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ are very useful, but when building complex _Hexes I may need more advanced techniques.$(br2)This section describes such techniques: $(l:patterns/advanced_escaping#hexcasting:read_into_parens)$(action)Interjection/$ lets me insert iotas directly into an in-progress list, while $(l:patterns/advanced_escaping#hexcasting:open_n_parens)$(action)Meditation/$ and $(l:patterns/advanced_escaping#hexcasting:close_all_parens)$(action)Recollection/$ let me start and finish the list creation process with arbitrary levels of nesting depth.", + read_into_parens: "Only works while $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)introspecting/$. Reads an iota from my offhand, and adds it to the in-progress list. For iotas other than patterns, I may need to $(l:patterns/patterns_as_iotas#iota_embedding)$(action)take steps/$ to avoid a mishap when executing the list.", + open_n_parens: "Removes a number from the stack, then acts as though I'd drawn that many $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspections/$. Treated as a normal pattern while $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)introspecting/$, so nesting this may require $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)tricks/$ to draw extra $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospections/$.", + close_all_parens: "Works like $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, but closes $(italic)all/$ open $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspections/$ at once. The number of layers closed, along with the list of saved patterns, are then added to the stack.", + }, + readwrite: { "1": "This section deals with the storage of $(thing)Iotas/$ in a more permanent medium. Nearly any iota can be stored to a suitable item, such as a $(l:items/focus)$(item)Focus/$ or $(l:items/spellbook)$(item)Spellbook/$, and read back later. Certain items, such as an $(l:items/abacus)$(item)Abacus/$, can only be read from.$(br2)Iotas are usually read and written from the other hand, but it is also possible to read and write with an item when it is sitting on the ground as an item entity, or when in an item frame.", "2": "There may be other entities I can interact with in this way. For example, a $(l:items/scroll)$(item)Scroll/$ hung on the wall can have its pattern read off of it.$(br2)However, it seems I am unable to save a reference to another player, only me. I suppose an entity reference is similar to the idea of a True Name; perhaps Nature is helping to keep our Names out of the hands of enemies. If I want a friend to have my Name I can make a $(l:items/focus)$(item)Focus/$ for them.", @@ -1930,25 +2048,25 @@ writable: "If I could save an iota into the item in my other hand, returns True. Otherwise, returns False.", "writable/entity": "Like $(l:patterns/readwrite#hexcasting:writable)$(action)Assessor's Reflection/$, but the writability of an entity is checked instead of my other hand.", "local.title": "The Ravenmind", - local: "Items are not the only places I can store information, however. I am also able to store that information in the _media of the _Hex itself, much like the stack, but separate. Texts refer to this as the $(l:patterns/readwrite#hexcasting:local)$(thing)ravenmind/$. It holds a single iota, much like a $(l:items/focus)$(item)Focus/$, and begins with $(l:casting/influences)$(thing)Null/$ like the same. It is preserved between iterations of $(l:patterns/meta#hexcasting:for_each)$(action)Thoth's Gambit/$, but only lasts as long as the _Hex it's a part of. Once I stop casting, the value will be lost.", + local: "Items are not the only places I can store information, however. I am also able to store that information in the _media of the _Hex itself, much like the stack, but separate. Texts refer to this as the $(l:patterns/readwrite#hexcasting:local)$(thing)ravenmind/$. It holds a single iota, much like a $(l:items/focus)$(item)Focus/$, and begins with $(thing)Null/$ like the same. It is preserved between iterations of $(l:patterns/meta#hexcasting:for_each)$(action)Thoth's Gambit/$, but only lasts as long as the _Hex it's a part of. Once I stop casting, the value will be lost.", "write/local": "Removes the top iota from the stack, and saves it to my $(l:patterns/readwrite#hexcasting:local)$(thing)ravenmind/$, storing it there until I stop casting the _Hex.", "read/local": "Copy the iota out of my $(l:patterns/readwrite#hexcasting:local)$(thing)ravenmind/$, which I likely just wrote with $(l:patterns/readwrite#hexcasting:write/local)$(action)Huginn's Gambit/$.", }, meta: { - "eval.1": "Remove a pattern or list of patterns from the stack, then cast them as if I had drawn them myself with my $(l:items/staff)$(item)Staff/$ (until a $(l:patterns/meta#hexcasting:halt)$(action)Charon's Gambit/$ is encountered). If an iota is escaped with $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ or $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)its ilk/$, it will be pushed to the stack. Otherwise, non-patterns will fail.", - "eval.2": "This can be $(italic)very/$ powerful in tandem with $(l:items/focus)$(item)Foci/$.$(br2)It also makes the bureaucracy of Nature a \"Turing-complete\" system, according to one esoteric scroll I found.$(br2)However, it seems there's a limit to how many times a _Hex can cast itself-- Nature doesn't look kindly on runaway spells!$(br2)In addition, with the energies of the patterns occurring without me to guide them, any mishap will cause the remaining actions to become too unstable and immediately unravel.", - - "for_each.1": "Remove a list of patterns and a list from the stack, then cast the given pattern over each element of the second list.", - "for_each.2": "More specifically, for each element in the second list, it will:$(li)Create a new stack, with everything on the current stack plus that element$(li)Draw all the patterns in the first list$(li)Save all the iotas remaining on the stack to a list$(br)Then, after all is said and done, pushes the list of saved iotas onto the main stack.$(br2)No wonder all the practitioners of this art go mad.", + "eval.1": "Remove something evaluatable (usually a pattern or an $(l:casting/whats_a_hex)entire _Hex/$) from the stack, then cast it as if I had drawn the relevant patterns with my $(l:items/staff)$(item)Staff/$.", + "eval.2": "This can be very powerful in tandem with $(l:items/focus)$(item)Foci/$, and according to one esoteric scroll I found it also makes the bureaucracy of Nature a \"Turing-complete\" system.$(br2)Note that any iotas other than patterns in a _Hex cast this way will cause a mishap unless $(l:patterns/patterns_as_iotas)$(action)escaped/$. In addition, with the energies of the patterns occurring without me to guide them, $(o)any/$ mishap will cause the remaining actions in the _Hex to immediately unravel.", + + "for_each.1": "Remove something evaluatable and a list from the stack, then cast the evaluatable over each element of the list.", + "for_each.2": "More specifically, for each element in the provided list, it will:$(li)Create a new stack, with everything on the current stack plus that element$(li)Cast the evaluatable iota$(li)Save all the iotas remaining on the stack to a list$(br)Then, after all is said and done, pushes the list of saved iotas onto the main stack.$(br2)No wonder all the practitioners of this art go mad.", "halt.1": "This pattern forcibly halts a _Hex. This is mostly useless on its own, as I could simply just stop writing patterns, or put down my staff.", "halt.2": "But when combined with $(l:patterns/meta#hexcasting:eval)$(action)Hermes'/$ or $(l:patterns/meta#hexcasting:for_each)$(action)Thoth's Gambits/$, it becomes $(italics)far/$ more interesting. Those patterns serve to 'contain' that halting, and rather than ending the entire _Hex, those gambits end instead. This can be used to cause $(l:patterns/meta#hexcasting:for_each)$(action)Thoth's Gambit/$ not to operate on every iota it's given. An escape from the madness, as it were.", - "eval/cc.1": "Cast a pattern or list of patterns from the stack exactly like $(l:patterns/meta#hexcasting:eval)$(action)Hermes' Gambit/$, except that a unique \"Jump\" iota is pushed to the stack beforehand. ", - "eval/cc.2": "When the \"Jump\"-iota is executed, it'll skip the rest of the patterns and jump directly to the end of the pattern list.$(p)While this may seem redundant given $(l:patterns/meta#hexcasting:halt)$(action)Charon's Gambit/$ exists, this allows you to exit $(italic)nested/$ $(l:patterns/meta#hexcasting:eval)$(action)Hermes'/$ invocations in a controlled way, where Charon only allows you to exit one.$(p)The \"Jump\" iota will apparently stay on the stack even after execution is finished... better not think about the implications of that.", - - "thanatos.1": "Adds the number of patterns a _Hex is still capable of evaluating to the stack. This is reduced by one for each pattern cast by the _Hex." + "eval/cc.1": "Cast something evaluatable from the stack exactly like $(l:patterns/meta#hexcasting:eval)$(action)Hermes' Gambit/$, except that a unique \"Jump\" iota is pushed to the stack beforehand. ", + "eval/cc.2": "When the \"Jump\"-iota is executed, it'll jump directly to the end of the evaluatable, skipping any remaining actions.$(p)While this may seem redundant given $(l:patterns/meta#hexcasting:halt)$(action)Charon's Gambit/$ exists, this allows you to exit $(italic)nested/$ $(l:patterns/meta#hexcasting:eval)$(action)Hermes'/$ invocations in a controlled way, where Charon only allows you to exit one.$(p)The \"Jump\" iota will apparently stay on the stack even after execution is finished... better not think about the implications of that.", + + "thanatos.1": "It seems there is a limit to how many patterns can be evaluated within a single _Hex. I can use this pattern to deterime how many patterns remain before I reach this limit.", }, circle_patterns: { @@ -2012,15 +2130,15 @@ }, hexcasting_spell: { - basics: "These three spells each create an $(l:items/hexcasting)$(thing)item that casts a _Hex./$$(br)They all require me to hold the empty item in my off-hand, and require two things: the list of patterns to be cast, and an entity representing a dropped stack of $(l:items/amethyst)$(item)Amethyst/$ to form the item's battery.$(br2)See $(l:items/hexcasting)this entry/$ for more information.", + basics: "These three spells each create an $(l:items/hexcasting)$(thing)item that casts a _Hex./$$(br)They all require me to hold the empty item in my off-hand, and require two things: the list of iotas (usually patterns) to be cast, and an entity representing a dropped stack of $(l:items/amethyst)$(item)Amethyst/$ to form the item's battery.$(br2)See $(l:items/hexcasting)this entry/$ for more information.", "craft/cypher": "Costs about one $(l:items/amethyst)$(item)Charged Amethyst/$.", "craft/trinket": "Costs about five $(l:items/amethyst)$(item)Charged Amethysts/$.", "craft/artifact": "Costs about ten $(l:items/amethyst)$(item)Charged Amethysts/$.", - "recharge.1": "Recharge a _media-containing item in my other hand. Costs about one $(l:items/amethyst)$(item)Amethyst Shard/$.", + "recharge.1": "Recharge a _media-containing item in my other hand. Costs about one $(l:items/amethyst)$(item)Amethyst Shard/$ per item.", "recharge.2": "This spell is cast in a similar method to the crafting spells; an entity representing a dropped stack of $(l:items/amethyst)$(item)Amethyst/$ is provided, and recharges the _media battery of the item in my other hand.$(br2)This spell $(italic)cannot/$ recharge the item farther than its original battery size.", - "erase.1": "Clear a _Hex-containing item in my other hand. Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$.", + "erase.1": "Clears _Hex-containing or iota-containing items in my other hand. Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$ per item.", "erase.2": "The spell will also void all the _media stored inside the item, releasing it back to Nature and returning the item to a perfectly clean slate. This way, I can re-use $(l:items/hexcasting)$(item)Trinkets/$ I have put an erroneous spell into, for example.$(br2)This also works to clear a $(l:items/focus)$(item)Focus/$ or $(l:items/spellbook)$(item)Spellbook/$ page, unsealing them in the process.", }, @@ -2030,23 +2148,23 @@ "sentinel/create": "Summons my $(l:patterns/spells/sentinels)$(thing)sentinel/$ at the given position. Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$.", "sentinel/destroy": "Banish my $(l:patterns/spells/sentinels)$(thing)sentinel/$, and remove it from the world. Costs a negligible amount of _media.", - "sentinel/get_pos": "Add the position of my $(l:patterns/spells/sentinels)$(thing)sentinel/$ to the stack, or $(l:casting/influences)$(thing)Null/$ if it isn't summoned. Costs a negligible amount of _media.", - "sentinel/wayfind": "Transform the position vector on the top of the stack into a unit vector pointing from that position to my $(l:patterns/spells/sentinels)$(thing)sentinel/$, or $(l:casting/influences)$(thing)Null/$ if it isn't summoned. Costs a negligible amount of _media.", + "sentinel/get_pos": "Add the position of my $(l:patterns/spells/sentinels)$(thing)sentinel/$ to the stack, or $(thing)Null/$ if it isn't summoned. Costs a negligible amount of _media.", + "sentinel/wayfind": "Transform the position vector on the top of the stack into a unit vector pointing from that position to my $(l:patterns/spells/sentinels)$(thing)sentinel/$, or $(thing)Null/$ if it isn't summoned. Costs a negligible amount of _media.", }, colorize: "I must be holding a $(l:items/pigments)$(item)Pigment/$ in my other hand to cast this spell. When I do, it will consume the dye and permanently change my mind's coloration (at least, until I cast the spell again). Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$.", - cycle_variant: "Certain items I create seem oddly receptive to the influence of _media. By holding a $(l:items/hexcasting)$(item)Cypher/$, $(l:items/hexcasting)$(item)Trinket/$, $(l:items/hexcasting)$(item)Artifact/$, $(l:items/focus)$(item)Focus/$, or $(l:items/spellbook)$(item)Spellbook/$ in my other hand, I can use this spell to change the appearance of the item. Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$.", + cycle_variant: "Certain items I create seem oddly receptive to the influence of _media. By holding a $(l:items/hexcasting)$(item)Cypher/$, $(l:items/hexcasting)$(item)Trinket/$, $(l:items/hexcasting)$(item)Artifact/$, $(l:items/focus)$(item)Focus/$, or $(l:items/spellbook)$(item)Spellbook/$ in my other hand, I can use this spell to change the appearance of the item. Costs a negligible amount of _media.", flights: { "1": "Although it seems that true, limitless flight is out of my grasp, I have nonetheless found some methods of holding one in the sky, each with their respective drawbacks.$(br2)All forms produce a shimmer of excess _media; as the spell gets closer to ending, the sparks are shot through with more red and black.", "2": "Other forms of flight do exist, of course. For example, a combination of $(l:patterns/spells/basic#hexcasting:add_motion)$(action)Impulse/$ and $(l:patterns/spells/nadirs#hexcasting:potion/levitation)$(action)Blue Sun's Nadir/$ has been used since antiquity for a flight of sorts.$(br2)I've also heard tell of a thin membrane worn on the back that allows the ability to glide. From my research, I believe the Great spell $(l:patterns/great_spells/altiora)$(action)Altiora/$ may be used to mimic it.", "range.1": "A flight limited in its range.", - "range.2": "The second argument is a horizontal radius, in meters, in which the spell is stable. Moving outside of that radius will end the spell, dropping me out of the sky. As long as I stay inside the safe zone, however, the spell lasts indefinitely. An additional shimmer of _media marks the origin point of the safe zone. $(br2)Costs about 1 $(l:items/amethyst)$(item)Amethyst Dust/$ per meter of safety.", + "range.2": "The second argument is a horizontal radius, in meters, in which the spell is stable. Moving outside of that radius will end the spell, dropping me out of the sky. As long as I stay inside the safe zone, however, the spell lasts indefinitely. An additional shimmer of _media marks the origin point of the safe zone. $(br2)Costs about 2 $(l:items/amethyst)$(item)Amethyst Dust/$ per meter of safety, though any radius less than 1 meter will still cost 2 $(l:items/amethyst)$(item)Amethyst Dust/$.", "time.1": "A flight limited in its duration.", - "time.2": "The second argument is an amount of time in seconds for which the spell is stable. After that time, the spell ends and I am dropped from the sky. $(br2)It is relatively expensive at about 1 $(l:items/amethyst)$(item)Amethyst Shard/$ per second of flight; I believe it is best suited for travel.", + "time.2": "The second argument is an amount of time in seconds for which the spell is stable. After that time, the spell ends and I am dropped from the sky. $(br2)Costs about 2 $(l:items/amethyst)$(item)Amethyst Dust/$ per second of flight; I believe it is best suited for travel.", // Putting this in this category instead of elsewhere -- see sentinel chapter also containing some reflections/nonspells "can_fly.1": "Returns whether the given player is under the effects of $(l:patterns/spells/flight#hexcasting:flight/range)Anchorite's/$ or $(l:patterns/spells/flight#hexcasting:flight/time)Wayfarer's Flight/$.", @@ -2070,8 +2188,8 @@ }, "teleport/great": { - "1": "Far more powerful than $(l:patterns/spells/basic#hexcasting:blink)$(action)Blink/$, this spell lets me teleport nearly anywhere in the entire world! There does seem to be a limit, but it is $(italic)much/$ greater than the normal radius of influence I am used to.", - "2": "The entity will be teleported by the given vector. Curiously, this vector seems to be an offset, not an absolute position in the world; for example, if I use $(l:patterns/consts#hexcasting:const/vec/x)$(action)Vector Reflection +X/$, the entity will end up precisely one block east of its original position. No matter the distance, it always seems to cost about ten $(l:items/amethyst)$(item)Charged Amethyst/$.$(br2)The transference is not perfect, and it seems when teleporting something as complex as a player, their inventory doesn't $(italic)quite/$ stay attached, and tends to splatter everywhere at the destination. In addition, the target will be forcibly removed from anything inanimate they are riding or sitting on ... but I've read scraps that suggest animals can come along for the ride, so to speak.", + "1": "Far more powerful than $(l:patterns/spells/basic#hexcasting:blink)$(action)Blink/$, this spell lets me teleport an entity to anywhere in the entire world! No matter the distance, it always seems to cost about ten $(l:items/amethyst)$(item)Charged Amethyst/$.", + "2": "The provided vector is an offset, not an absolute position in the world; for example, if I use (1, 0, 0), the entity will end up precisely one block east of its original position.$(br2)Unfortunately, it seems that when teleporting myself, I'm unable to remain perfectly focused. This can cause some of my items to splatter out of my inventory on arrival.$(br2)I should also note that the target will be forcibly removed from anything inanimate they are riding ... but I've read scraps that suggest animals can come along for the ride, so to speak.", }, zeniths: { @@ -2210,4 +2328,4 @@ // ^ page }, // ^ hexcasting -} +} \ No newline at end of file diff --git a/projects/assets/hexcasting/1.20/hexcasting/lang/en_us.flatten.json5 b/projects/assets/hexcasting/1.20/hexcasting/lang/en_us.flatten.json5 index f846be50ae93..fbace6c75d9e 100644 --- a/projects/assets/hexcasting/1.20/hexcasting/lang/en_us.flatten.json5 +++ b/projects/assets/hexcasting/1.20/hexcasting/lang/en_us.flatten.json5 @@ -265,6 +265,15 @@ "gui.hexcasting": { spellcasting: "Hex Grid", }, + + "category.hexcasting": { + "binds": "Hex Casting", + }, + + "key.hexcasting": { + "spellbook_prev": "Previous Spellbook Page", + "spellbook_next": "Next Spellbook Page", + }, "tag.hexcasting": { staves: "Hex Staves", @@ -276,7 +285,7 @@ "tag.item.hexcasting": { brainswept_circle_components: "Brainswept Circle Components", directrices: "Directrices", - grants_root_advancement: "Grants Rood Advancement", + grants_root_advancement: "Grants Root Advancement", impeti: "Impeti", seal_materials: "Seal Materials", }, @@ -335,13 +344,17 @@ "": "Ctrl Toggles Off Stroke Order", "@Tooltip": "Whether the ctrl key will instead turn *off* the color gradient on patterns", }, + disableInworldScrolling: { + "": "Disable In-World Scrolling", + "@Tooltip": "Disable scrolling input for spellbooks and abaci in the normal world, keeping keybinds and staff screen scrolling normal" + }, invertSpellbookScrollDirection: { "": "Invert Spellbook Scroll Direction", "@Tooltip": "Whether scrolling up (as opposed to down) will increase the page index of the spellbook, and vice versa", }, invertAbacusScrollDirection: { "": "Invert Abacus Scroll Direction", - "@Tooltip": "Whether scrolling up (as opposed to down) will increase the page index of the abacus, and vice versa", + "@Tooltip": "Whether scrolling up (as opposed to down) will increase the value of the abacus, and vice versa", }, gridSnapThreshold: { "": "Grid Snap Threshold", @@ -355,6 +368,14 @@ "": "Always Show List Commas", "@Tooltip": "Whether all iota types should be comma-separated when displayed in lists (by default, pattern iotas do not use commas)", }, + advancedTooltipsShowsIotaNBT: { + "": "Advanced Tooltips Shows Iota NBT", + "@Tooltip": "Whether enabling advanced tooltips (F3+H) should display the full NBT of iotas stored in items like foci and spellbooks", + }, + staticActiveSlates: { + "": "Static Active Slates", + "@Tooltip": "Whether patterns on active slates should be rendered without wobble (improves performance with lots of active slates)", + }, }, server: { @@ -372,11 +393,19 @@ }, actionDenyList: { "": "Action Deny List", - "@Tooltip": "Resource locations of disallowed actions. Trying to cast one of these will result in a mishap. For example, hexcasting:get_caster will prevent Mind's Reflection", + "@Tooltip": "Resource locations of disallowed actions. Trying to cast one of these will result in a mishap. For example, hexcasting:get_caster will prevent Mind's Reflection.", }, circleActionDenyList: { "": "Circle Action Deny List", - "@Tooltip": "Resource locations of disallowed actions within circles. Trying to cast one of these from a circle will result in a mishap.", + "@Tooltip": "Resource locations of disallowed actions within circles. Trying to cast one of these from a circle will result in a mishap. For example, hexcasting:get_caster\" will prevent Mind's Reflection.", + }, + globalCostScaling: { + "": "Global Cost Scaling Factor", + "@Tooltip": "All media costs, except for actions in the #hexcasting:cannot_modify_cost tag, will be multiplied by this value. If you want to modify the cost of an action in that tag, use the per-action cost scaling list.", + }, + costRescaleListRaw: { + "": "Per-Action Cost Scaling Factors", + "@Tooltip": "Maps resource locations to the scaling factor for that specific action's media cost. For example, hexcasting:add_motion 3 will make Impulse cost 3x as much.", }, greaterTeleportSplatsItems: { "": "Greater Teleport Splats Items", @@ -581,6 +610,8 @@ scroll: { needs_purchase: "Purchase to show pattern", pattern_not_loaded: "Place in inventory to load pattern", + "recalc_warning.line1": "The per-world pattern for %s has not been calculated yet!", + "recalc_warning.line2": "Please run /hexcasting recalcPatterns, then get a new scroll.", }, abacus: { @@ -708,6 +739,7 @@ pi: "Arc's Reflection", tau: "Circle's Reflection", "e": "Euler's Reflection", + phi: "Harmony Reflection", }, }, @@ -720,6 +752,7 @@ raycast: "Archer's Distillation", "raycast/axis": "Architect's Distillation", "raycast/entity": "Scout's Distillation", + get_media: "Media Reflection", "circle/": { impetus_pos: "Waystone Reflection", @@ -765,7 +798,19 @@ not_player: "Zone Distillation: Non-Player", not_living: "Zone Distillation: Non-Living", }, - + + type_equals: "Similarity Distillation", + type_not_equals: "Dissimilarity Distillation", + "compare_block/": { + "lenient": "Surveyor's Distillation", + "strict": "Inspector's Distillation", + }, + compare_entity: "Taxonomer's Distillation", + "compare_item/": { + "lenient": "Sorter's Distillation", + "strict": "Stacking Distillation", + }, + swap: "Jester's Gambit", rotate: "Rotation Gambit", rotate_reverse: "Rotation Gambit II", @@ -891,6 +936,15 @@ create_lava: "Create Lava", "teleport/great": "Greater Teleport", brainsweep: "Flay Mind", + + escape: "Consideration", + runtime_escape: "Contemplation", + open_paren: "Introspection", + close_paren: "Retrospection", + open_n_parens: "Meditation", + close_all_parens: "Recollection", + read_into_parens: "Interjection", + undo: "Evanition", eval: "Hermes' Gambit", "eval/cc": "Iris' Gambit", @@ -962,34 +1016,56 @@ number: "Numerical Reflection: %s", mask: "Bookkeeper's Gambit: %s", }, - - "rawhook.hexcasting:": { - open_paren: "Introspection", - close_paren: "Retrospection", - escape: "Consideration", - undo: "Evanition", - }, - + "iota.hexcasting:": { - "null": "Null", - double: "Number", - boolean: "Boolean", - entity: "Entity", - list: "List", - pattern: "Pattern", - garbage: "Garbage", - vec3: "Vector", + null: { + "": "Null", + desc: "a null value", + }, + double: { + "": "Number", + desc: "a number", + }, + boolean: { + "": "Boolean", + desc: "a boolean", + }, + entity: { + "": "Entity", + desc: "an entity", + }, + list: { + "": "List", + desc: "a list", + }, + pattern: { + "": "Pattern", + desc: "a pattern", + }, + garbage: { + "": "Garbage", + desc: "garbage", + }, + vec3: { + "": "Vector", + desc: "a vector", + }, + continution: { + "": "Continuation", + desc: "a jump iota", + }, }, mishap: { "": "%s: %s", - invalid_pattern: "That pattern isn't associated with any action", + invalid_pattern: "The pattern %s isn't associated with any action", + invalid_pattern_generic: "That pattern isn't associated with any action", unescaped: "Expected to evaluate a pattern, but evaluated %s instead", not_enough_args: "expected %s or more arguments but the stack was only %s tall", no_args: "expected %s or more arguments but the stack was empty", - too_many_close_parens: "Did not first use Introspection", + needs_parens: "Did not first use Introspection", wrong_dimension: "cannot see %s from %s", entity_too_far: "%s is out of range", @@ -1026,28 +1102,33 @@ }, no_akashic_record: "No Akashic Record at %s", - disallowed: "has been disallowed by the server admins", - disallowed_circle: "has been disallowed in spell circles by the server admins", + disallowed: "%s has been disallowed by the server admins", + disallowed_generic: "That pattern has been disallowed by the server admins", + disallowed_circle: "%s has been disallowed in spell circles by the server admins", + disallowed_circle_generic: "That pattern has been disallowed in spell circles by the server admins", invalid_spell_datum_type: "Tried to use a value of invalid type as a SpellDatum: %s (class %s). This is a bug in the mod.", unknown: "threw an exception (%s). This is a bug in the mod.", stack_size: "Exceeded the size limit of the stack", bad_caster: "Tried to execute a pattern that requires a greater mind", invalid_value: { - "": "expected %s at index %s of the stack, but got %s", + "": "expected %s at index %s of the stack, but got %s: %s", class: { double: "a number", boolean: "a boolean", vector: "a vector", list: "a list", - widget: "an influence", pattern: "a pattern", + continuation: "a jump iota", + garbage: "garbage", + null: "null", entity: { "": "an entity", mob: "a mob", item: "an item entity", + item_holder: "an item-holding entity", player: "a player", living: "a living entity", }, @@ -1059,7 +1140,6 @@ numvec: "a number or vector", numlist: "an integer or list", - "list.pattern": "a list of patterns", double: { positive: { @@ -1095,6 +1175,7 @@ bad_item: { "": "needs %s but got %dx %s", offhand: "needs %s in the other hand but got %dx %s", + hotbar: "needs %s somewhere in the hotbar", iota: { "": "a place to store iotas", @@ -1111,6 +1192,7 @@ rechargable: "a rechargable item", colorizer: "a pigment", variant: "an item with variants", + placeable: "a placeable item", }, bad_block: { @@ -1200,11 +1282,11 @@ couldnt_cast: "A Frustration", start_to_see: "WHAT DID I SEE", "101": "Hex Casting 101", + whats_a_hex: "What is a Hex?", vectors: "A Primer On Vectors", mishaps: "Mishaps", stack: "The Stack", naming: "Naming Actions", - influences: "Influences", mishaps2: "Enlightened Mishaps", amethyst: "Amethyst", @@ -1251,8 +1333,10 @@ stackmanip: "Stack Manipulation", logic: "Logical Operators", entities: "Entities", + types: "Types", lists: "List Manipulation", patterns_as_iotas: "Escaping Patterns", + advanced_escaping: "Advanced Escaping", readwrite: "Reading and Writing", meta: "Meta-Evaluation", circle_patterns: "Spell Circle Patterns", @@ -1375,7 +1459,7 @@ $(li)Vectors, a collection of three numbers representing a position, movement, or direction.\ $(li)Booleans or \"bools\" for short, representing an abstract True or False.\ $(li)Entities, like myself, chickens, and minecarts.", - "2": "$(li)Influences, peculiar types of iota that seem to represent abstract ideas.\ + "2": "$(li)Influences, iotas that represent various abstract ideas such as the absence of data ($(thing)Null/$) or complete nonsense ($(thing)Garbage/$).\ $(li)Patterns themselves, used for crafting magic items and truly mind-boggling feats like $(italic)spells that cast other spells/$.\ $(li)A list of several of the above, gathered into a single iota.", "3": "Generally, I provide iotas to actions. \ @@ -1390,13 +1474,13 @@ "101": { "1": "Casting a _Hex is quite difficult-- no wonder this art was lost to time! I'll have to re-read my notes carefully.$(br2)I can start a _Hex by pressing $(k:use) with a $(l:items/staff)$(item)Staff/$ in my hand-- this will cause a hexagonal grid of dots to appear in front of me. Then I can click and drag from dot to dot to draw patterns in the _media of the grid; finishing a pattern will run its corresponding action (more on that later).", "2": "Once I've drawn enough patterns to cast a spell, the grid will disappear as the _media I've stored up is released. Holding $(k:sneak) while using my $(l:items/staff)$(item)staff/$ will also clear the grid.$(br2)So how do patterns work? In short:$(li)$(italic)Patterns/$ will execute...$(li)$(italic)Actions/$, which manipulate...$(li)$(l:casting/stack)$(italic)The Stack/$, which is a list of...$(li)$(italic)Iotas/$, which are simply units of information.", - "3": "First, $(thing)patterns/$. These are essential-- they're what I use to manipulate the _media around me. Certain patterns, when drawn, will cause $(thing)actions/$ to happen. Actions are what actually $(italic)do/$ the magic; all patterns influence _media in particular ways, and when those influences end up doing something useful, we call it an action.$(br2)_Media can be fickle: if I draw an invalid pattern, I'll get some $(l:casting/influences)$(action)garbage/$ result somewhere on my stack (read on...)", + "3": "First, $(thing)patterns/$. These are essential-- they're what I use to manipulate the _media around me. Certain patterns, when drawn, will cause $(thing)actions/$ to happen. Actions are what actually $(italic)do/$ the magic; all patterns influence _media in particular ways, and when those influences end up doing something useful, we call it an action.$(br2)_Media can be fickle: if I draw an invalid pattern, I'll get some $(thing)garbage/$ result somewhere on my stack (read on...)", "4.header": "An Example", "4": "It's interesting to note that the $(italic)rotation/$ of a pattern doesn't seem to matter at all. These two patterns both perform an action called $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$, for example.", "5": "A _Hex is cast by drawing (valid) actions in sequence. Each action might do one of a few things:$(li)Gather some information about the environment, leaving it on the top of the stack;$(li)manipulate the info gathered (e.g. adding two numbers); or$(li)perform some magical effect, like summoning lightning or an explosion. (These actions are called \"spells.\")$(p)When I start casting a _Hex, it creates an empty stack. Actions manipulate the top of that stack.", "6": "For example, $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$ will create an iota representing $(italic)me/$, the caster, and add it to the top of the stack. $(l:patterns/basics#hexcasting:entity_pos/eye)$(action)Compass' Purification/$ will take the iota at the top the stack, if it represents an entity, and transform it into an iota representing that entity's location.$(br2)So, drawing those patterns in that order would result in an iota on the stack representing my position.", - "7": "$(thing)Iotas/$ can represent things like myself or my position, but there are several other types I can manipulate with $(thing)Actions/$. Here's a comprehensive list:$(li)Numbers (which some legends called \"doubles\");$(li)Vectors, a collection of three numbers representing a position, movement, or direction in the world;$(li)Booleans or \"bools\" for short, representing an abstract True or False,", - "8": "$(li)Entities, like myself, chickens, and minecarts;$(li)Influences, peculiar types of iota that seem to represent abstract ideas;$(li)Patterns themselves, used for crafting magic items and truly mind-boggling feats like $(italic)spells that cast other spells/$; and$(li)A list of several of the above, gathered into a single iota.", + "7": "$(thing)Iotas/$ can represent things like myself or my position, but there are several other types I can manipulate with $(thing)Actions/$. Here's a comprehensive list:$(li)Numbers (which some legends called \"doubles\");$(li)Vectors, a collection of three numbers representing a position, movement, or direction in the world;$(li)Booleans or \"bools\" for short, representing an abstract True or False;", + "8": "$(li)Entities, like myself, chickens, and minecarts;$(li)Influences, iotas that represent various abstract ideas such as the absence of data ($(thing)Null/$) or complete nonsense ($(thing)Garbage/$);$(li)Patterns themselves, used for crafting magic items and truly mind-boggling feats like $(italic)spells that cast other spells/$;$(li)A list of several of the above, gathered into a single iota.", "9": "Of course, there's no such thing as a free lunch. All spells, and certain other actions, require _media as payment.$(br2)The best I can figure, a _Hex is a little bit like a plan of action presented to Nature-- in this analogy, the _media is used to provide the arguments to back it up, so Nature will accept your plan and carry it out.", "10": "That aside, it doesn't seem like anyone has done much research on exactly how $(italic)much/$ any particular piece of $(l:items/amethyst)$(item)amethyst/$ is valued. The best I can tell, an $(l:items/amethyst)$(item)Amethyst Shard/$ is worth about five pieces of $(l:items/amethyst)$(item)Amethyst Dust/$, and a $(l:items/amethyst)$(item)Charged Amethyst Crystal/$ is worth about ten.$(br2)Strangely enough, it seems like no other form of $(l:items/amethyst)$(item)amethyst/$ is suitable to be used in the casting of a _Hex. I suspect that whole blocks or crystals are too solid to be easily unraveled into _media.", "11": "It's also worth noting that each action will consume the _media it needs immediately, rather than all at once when the Hex finishes. Also, an action will always consume entire items-- an action that only requires one $(l:items/amethyst)$(item)Amethyst Dust/$'s worth of _media will consume an entire $(l:items/amethyst)$(item)Charged Amethyst Crystal/$, if that's all that's present in my inventory.$(br2)Thus, it might be a good idea to bring dust for spellcasting too-- waste not, want not...", @@ -1406,13 +1490,26 @@ "14.link_text": "Goblin Punch", "15": "Finally, it seems spells have a maximum range of influence, about 32 blocks from my position. Trying to affect anything outside of that will cause the spell to fail.$(br2)Despite this, if I have a player's reference, I can affect them from anywhere. This only applies to affecting them directly, though; I cannot use this to affect the world around them if they're outside of my range.$(br)I ought to be careful when giving out a reference like that. While friendly _Hexcasters could use them to great effect and utility, I shudder to think of what someone malicious might do with this.", }, - + + whats_a_hex: { + "1": "Conceptually, a _Hex is exactly as described in $(l:casting/101)Hex Casting 101/$: a sequence of actions, usually done with the goal of performing some kind of effect in the world by means of one or more spells.$(br2)This idea of a _Hex is fine for on-the-fly casting, but if I wish to record my work for posterity (or simply for my own reuse) I may need something a little more concrete.", + "2": "Typically, this takes the form of a list of pattern iotas, as created by the techniques described in $(l:patterns/patterns_as_iotas)Escaping Patterns/$. With my _Hex placed onto the stack this way, I can cast it using meta-evaluation patterns like $(l:patterns/meta#hexcasting:eval)Hermes' Gambit/$, or infuse it into a $(l:items/hexcasting)Casting Item/$ item for easy reuse.$(br2)Note that this list is no different from any other list iota - I can manipulate it, save it into $(l:items/thought_knot)permanent/$ $(l:items/focus)storage/$, or even incorporate it into another _Hex.", + "3": "Note also that this list need not be composed exclusively of pattern iotas. Inserting iotas of other types into my _Hexes won't normally end well, but $(l:patterns/patterns_as_iotas#iota_embedding)certain techniques/$ allow me to do it safely. Furthermore, some $(l:patterns/meta#hexcasting:eval/cc)special iotas/$ can be directly evaluated just like a pattern.$(br2)With this in mind, $(o)any/$ list of iotas can in theory be a _Hex - the only requirement is that I can successfully cast it.", + }, + vectors: { - "1": "It seems I will need to be adroit with vectors if I am to get anywhere in my studies. I have compiled some resources here on vectors if I find I do not know how to work with them.$(br2)First off, an enlightening video on the topic.", - "1.link_text": "3blue1brown", - "2": "Additionally, it seems that the mages who manipulated $(thing)Psi energy/$ (the so-called \"spellslingers\"), despite their poor naming sense, had some quite-effective lessons on vectors to teach their acolytes. I've taken the liberty of linking to one of their texts on the next page.$(br2)They seem to have used different language for their spellcasting:$(li)A \"Spell Piece\" was their name for an action;$(li)a \"Trick\" was their name for a spell; and$(li)an \"Operator\" was their name for a non-spell action.", - "3": "Link here.", - "3.link_text": "Psi Codex", + "1": "It seems I will need to be adroit with vectors if I am to get anywhere in my studies. A vector is a set of three numbers that can be used to represent a variety of things, usually either a position in the world, an offset from one position to another, or a direction in space. The following pages provide a basic summary of how vectors work and what I can do with them.", + "2": "All the vectors I will be working with as a $(hex)Hexcaster/$ are three-dimensional, since the world I inhabit has three dimensions.$(br2)Each vector has an X component, a Y component, and a Z component in that order, corresponding to the three coordinate axes of the world: the X axis runs east and west, the Y axis runs up and down, and the Z axis runs north and south.", + "3": "The most basic way to use a vector is as a $(o)position/$, representing a fixed point in the world - it could be the location of a block, or an entity, or perhaps some empty space that I wish to target with a spell.$(br2)A position vector is effectively just a set of coordinates pinpointing the exact location to which it refers. However, not all vectors represent positions.", + "4": "If I have a vector for the position of a block, and I want to target the block above it, I need to increase the Y component of the vector by 1. I can do this by taking a second vector with the value (0, 1, 0) and adding it to the first one. Likewise, if I wanted to target something two blocks to the east, I could add a second vector with the value (2, 0, 0). Both of these new vectors represent $(o)offsets/$ from one position to a new position.", + "5": "Note that while position vectors and offset vectors represent different things, there is no fundamental difference between them - all vectors are just groups of numbers. In fact, I could even consider all my vectors to be one type or the other if I so desired: positions are just offsets from the world origin to the specified coordinates, and offsets are just positions relative to an arbitrary starting point.", + "6": "Two important properties of vectors are $(o)magnitude/$ (length) and $(o)direction/$. These may be easiest to imagine when thinking of vectors as offsets.$(br2)If I were to choose a starting point, and then move in a straight line based on an offset vector, the distance I travelled would be the length of the vector, and the direction I travelled would be its direction.", + "7": "There many ways to manipulate vectors. As described earlier, I can add them together, which adds the corresponding X, Y, and Z components of each vector. The same applies with subtraction - conveniently, subtracting one position vector from another results in the offset from the first position to the second.$(br2)Multiplying and dividing two vectors is not so simple; I can find more information on that topic $(l:https://www.mathsisfun.com/algebra/vectors-dot-product.html)here/$ and $(l:https://www.mathsisfun.com/algebra/vectors-cross-product.html)here/$.", + "8": "I can also multiply or divide a vector by a single number to $(o)scale/$ it. This multiplies or divides all three components of the vector by that number.$(br2)So long as the number is positive, this will multiply or divide the length of the vector without affecting its direction. If the number is negative, the length will be multiplied or divided as usual, but the direction will be reversed.", + "9": "Dividing a vector by its own length produces a unit vector, which has the same direction as the original but a length of exactly 1. These can be useful if the direction of the vector is all that matters. They are also useful in that I can multiply a unit vector by some number to get a new vector with exactly that length.$(br2)Many patterns that calculate a direction of some kind, such as $(l:patterns/basics#hexcasting:get_entity_look)Alidade's Purification/$, provide it as a unit vector.", + "10": "All the operations described thus far, and many more, can be performed using patterns found in the $(l:patterns/math)Mathematics/$ section.$(br2)I can create new vectors by gathering information from entities using $(l:patterns/basics)Basic Patterns/$, by using $(l:patterns/consts)Constants/$ to create unit vectors for basic directions, or by directly combining three numbers with $(l:patterns/math#hexcasting:construct_vec)Vector Exaltation/$.", + "11": "To understand more advanced concepts related to vectors, I may want to do further research outside the bounds of this notebook. The video below may also serve as a useful reference.", + "11.link_text": "3blue1brown", }, mishaps: { @@ -1421,16 +1518,16 @@ "3": "Fortunately, although the bad effects of mishaps are certainly $(italic)annoying/$, none of them are especially destructive in the long term. Nothing better to do than dust myself off and try again ... but I should strive for better anyways.$(br2)Following is a list of mishaps I have compiled.", "invalid_pattern.title": "Invalid Pattern", - invalid_pattern: "The pattern drawn is not associated with any action.$(br2)Causes yellow sparks, and a $(l:casting/influences)$(action)Garbage/$ will be pushed to the top of my stack.", + invalid_pattern: "The pattern drawn is not associated with any action.$(br2)Causes yellow sparks, and a $(thing)garbage/$ will be pushed to the top of my stack.", "not_enough_iotas.title": "Not Enough Iotas", - not_enough_iotas: "The action required more iotas than were on the stack.$(br2)Causes light gray sparks, and as many $(l:casting/influences)$(action)Garbages/$ as would be required to fill up the argument count will be pushed.", - + not_enough_iotas: "The action required more iotas than were on the stack.$(br2)Causes light gray sparks, and as many $(thing)Garbages/$ as would be required to fill up the argument count will be pushed.", + "stack_size.title": "Too Many Iotas", - "stack_size": "I tried to cast a spell which exceeded the size limit of the stack.$(br2)Causes black sparks, and my entire stack will be replaced with a single $(l:casting/influences)$(action)Garbage/$.", + "stack_size": "I tried to cast a spell which exceeded the size limit of the stack.$(br2)Causes black sparks, and my entire stack will be replaced with a single $(thing)garbage/$.", "incorrect_iota.title": "Incorrect Iota", - incorrect_iota: "The action that was executed expected an iota of a certain type for an argument, but it got something invalid. If multiple iotas are invalid, the error message will only tell me about the error deepest in the stack.$(br2)Causes dark gray sparks, and the invalid iota will be replaced with $(l:casting/influences)$(action)Garbage/$.", + incorrect_iota: "The action that was executed expected an iota of a certain type for an argument, but it got something invalid. If multiple iotas are invalid, the error message will only tell me about the error deepest in the stack.$(br2)Causes dark gray sparks, and the invalid iota will be replaced with $(thing)garbage/$.", "vector_out_of_range.title": "Vector Out of Ambit", vector_out_of_range: "The action tried to affect the world at a point that was out of my range.$(br2)Causes magenta sparks, and the items in my hands will be yanked out and flung towards the offending location.", @@ -1442,7 +1539,7 @@ entity_immune: "The action tried to affect an entity that cannot be altered by it.$(br2)Causes blue sparks, and the items in my hands will be yanked out and flung towards the offending entity.", "math_error.title": "Mathematical Error", - math_error: "The action did something offensive to the laws of mathematics, such as dividing by zero.$(br2)Causes red sparks, pushes a $(l:casting/influences)$(action)Garbage/$ to my stack, and my mind will be ablated, stealing half the vigor I have remaining. It seems that Nature takes offense to such operations, and divides $(italic)me/$ in retaliation.", + math_error: "The action did something offensive to the laws of mathematics, such as dividing by zero.$(br2)Causes red sparks, pushes a $(thing)garbage/$ to my stack, and my mind will be ablated, stealing half the vigor I have remaining. It seems that Nature takes offense to such operations, and divides $(italic)me/$ in retaliation.", "incorrect_item.title": "Incorrect Item", incorrect_item: "The action requires some sort of item, but the item I supplied was not suitable.$(br2)Causes brown sparks. If the offending item was in my hand, it will be flung to the floor. If it was in entity form, it will be flung in the air.", @@ -1450,9 +1547,9 @@ "incorrect_block.title": "Incorrect Block", incorrect_block: "The action requires some sort of block at a target location, but the block supplied was not suitable.$(br2)Causes bright green sparks, and causes an ephemeral explosion at the given location. The explosion doesn't seem to harm me, the world, or anything else though; it's just startling.", - "retrospection.title": "Hasty Retrospection", - retrospection: "I attempted to draw $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ without first drawing $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$.$(br2)Causes orange sparks, and pushes the pattern for $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ to the stack as a pattern iota.", - + "needs_parens.title": "Absent Introspection", + needs_parens: "I attempted to draw a pattern that only works while $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)introspecting/$ without first drawing $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$.$(br2)Causes orange sparks, and pushes the pattern I tried to draw to the stack as an iota.", + "too_many_patterns.title": "Lost in Thought", too_many_patterns: "I attempted to evaluate too many patterns in one _Hex. Often, this happens because I've accidentally created an infinite loop.$(br2)Causes dark blue sparks, and chokes all the air out of me.", @@ -1478,18 +1575,12 @@ "2": "$(li)A $(thing)Reflection/$ pops nothing and pushes one iota.$(li)A $(thing)Purification/$ pops one and pushes one.$(li)A $(thing)Distillation/$ pops two and pushes one.$(li)An $(thing)Exaltation/$ pops three or more and pushes one.$(li)A $(thing)Decomposition/$ pops one argument and pushes two.$(li)A $(thing)Disintegration/$ pops one and pushes three or more.$(li)Finally, a $(thing)Gambit/$ pushes or pops some other number (or rearranges the stack in some other manner).", "3": "Spells seem to be exempt from this nomenclature and are more or less named after what they do-- after all, why call it a $(action)Demoman's Gambit/$ when you could just say $(l:patterns/spells/basic#hexcasting:explode)$(action)Explosion/$?", }, - - influences: { - "1": "Influences are ... strange, to say the least. Whereas most iotas seem to represent something about the world, influences represent something more... abstract, or formless.$(br2)For example, one influence I've named $(l:casting/influences)$(thing)Null/$ seems to represent nothing at all. It's created when there isn't a suitable answer to a question asked, such as an $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation/$ facing the sky.", - "2": "In addition, I've discovered a curious quartet of influences I've named $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$, $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$, $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, and $(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)Evanition/$. They seem to have properties of both patterns and other influences, yet act very differently. I can use these to add patterns to my stack as iotas, instead of matching them to actions. $(l:patterns/patterns_as_iotas)My notes on the subject are here/$.", - "3": "Finally, there seems to be an infinite family of influences that just seem to be a tangled mess of _media. I've named them $(l:casting/influences)$(action)Garbage/$, as they are completely useless. They seem to appear in my stack at various places in response to $(l:casting/mishaps)$(thing)mishaps/$, and appear to my senses as a nonsense jumble.", - }, - + mishaps2: { "1": "I have discovered new and horrifying modes of failure. I must not succumb to them.", "bad_mindflay.title": "Inert Mindflay", - bad_mindflay: "Attempted to flay the mind of something that I have either already used, or of a character not suitable for the target block.$(br2)Causes dark green sparks, and kills the subject. If a villager sees that, I doubt they would look on it favorably.", + bad_mindflay: "Attempted to flay the mind of something that I have either already used, or of a character not suitable for the target block.$(br2)Causes dark green sparks. Subjects I have already used will be killed outright, while those that are simply unsuitable will be slightly damaged.", "no_circle.title": "Lack Spell Circle", no_circle: "Tried to cast an action requiring a spell circle without a spell circle.$(br2)Causes light blue sparks, and upends my inventory onto the ground.", @@ -1526,7 +1617,7 @@ thought_knot: { "1": "The forgetful often tie a piece of string about their finger to help them remember something important. I believe this idea might be of use in my art. A specially knotted piece of string should be able to hold a single iota stably, irregardless of my stack.$(br2)I will call my invention a $(item)Thought-Knot/$.", "2": "When I craft it, it stores no iota. Using $(l:patterns/readwrite#hexcasting:write)$(action)Scribe's Gambit/$ while holding a $(item)Thought-Knot/$ in my other hand will remove the top of the stack and save it into the $(item)Thought-Knot/$. Using $(l:patterns/readwrite#hexcasting:read)$(action)Scribe's Reflection/$ will copy whatever iota's in the $(item)Thought-Knot/$ and add it to the stack.$(br2)Once a $(item)Thought-Knot/$ has been written to, the string is indelibly tangled; the iota can be read any number of times, but there is no way to erase or overwrite it. Fortunately, they are not expensive.", - "3": "Also, if I store an entity in a $(item)Thought-Knot/$ and try to recall it after the referenced entity has died or otherwise disappeared, the $(l:patterns/readwrite#hexcasting:read)$(action)Scribe's Reflection/$ will add $(l:casting/influences)$(thing)Null/$ to the stack instead.", + "3": "Also, if I store an entity in a $(item)Thought-Knot/$ and try to recall it after the referenced entity has died or otherwise disappeared, the $(l:patterns/readwrite#hexcasting:read)$(action)Scribe's Reflection/$ will add $(thing)Null/$ to the stack instead.", "crafting.desc": "$(italic)How would you feel if someone saw you wearing a sign that said, \"I am dashing and handsome?\"/$", }, @@ -1564,11 +1655,11 @@ // roll credits hexcasting: { - "1": "Although the flexibility of casting _Hexes \"on the go\" with my $(l:items/staff)$(item)Staff/$ is quite helpful, it's a huge pain to have to wave it around repeatedly just to accomplish a basic task. If I could save a common spell for later reuse, it would simplify things a lot-- and allow me to share my _Hexes with friends, too.", + "1": "Although the flexibility of casting _Hexes \"on the go\" with my $(l:items/staff)$(item)Staff/$ is quite helpful, it's a huge pain to have to wave it around repeatedly just to accomplish a basic task. If I could save a common _Hex for later reuse, it would simplify things a lot-- and allow me to share my _Hexes with friends, too.", "2": "To do this, I can craft one of three types of magic items: $(l:items/hexcasting)$(item)Cyphers/$, $(l:items/hexcasting)$(item)Trinkets/$, or $(l:items/hexcasting)$(item)Artifacts/$. All of them hold the patterns of a given _Hex inside, along with a small battery containing _media.$(br2)Simply holding one and pressing $(thing)$(k:use)/$ will cast the patterns inside, as if the holder had cast them out of a staff, using its internal battery.", "3": "Each item has its own quirks:$(br2)$(l:items/hexcasting)$(item)Cyphers/$ are fragile, destroyed after their internal _media reserves are gone, and $(italic)cannot/$ be recharged;$(br2)$(l:items/hexcasting)$(item)Trinkets/$ can be cast as much as the holder likes, as long as there's enough _media left, but become useless afterwards until recharged;", "4": "$(l:items/hexcasting)$(item)Artifacts/$ are the most powerful of all-- after their _media is depleted, they can use $(l:items/amethyst)$(item)Amethyst/$ from the holder's inventory to pay for the _Hex, just as I do when casting with a $(l:items/staff)$(item)Staff/$. Of course, this also means the spell might consume their mind if there's not enough $(l:items/amethyst)$(item)Amethyst/$.$(br2)Once I've made an empty magic item in a mundane crafting bench, I infuse the _Hex into it using (what else but) a spell appropriate to the item. $(l:patterns/spells/hexcasting)I've catalogued the patterns here./$", - "5": "Each infusion spell requires an entity and a list of patterns on the stack. The entity must be a _media-holding item entity (i.e. $(l:items/amethyst)$(item)amethyst/$ crystals, dropped on the ground); the entity is consumed and forms the battery.$(br2)Usefully, it seems that the _media in the battery is not consumed in chunks as it is when casting with a $(l:items/staff)$(item)Staff/$-- rather, the _media \"melts down\" into one continuous pool. Thus, if I store a _Hex that only costs one $(l:items/amethyst)$(item)Amethyst Dust/$'s worth of media, a $(l:items/amethyst)$(item)Charged Crystal/$ used as the battery will allow me to cast it 10 times.", + "5": "Each infusion spell requires an entity and a $(l:casting/whats_a_hex)list of iotas/$ to cast on the stack. The entity must be a _media-holding item entity (i.e. $(l:items/amethyst)$(item)amethyst/$ dropped on the ground); the entity is consumed and forms the battery.$(br2)Usefully, it seems that the _media in the battery is not consumed in chunks as it is when casting with a $(l:items/staff)$(item)Staff/$-- rather, the _media \"melts down\" into one continuous pool. Thus, if I store a _Hex that only costs one $(l:items/amethyst)$(item)Amethyst Dust/$'s worth of media, a $(l:items/amethyst)$(item)Charged Crystal/$ used as the battery will allow me to cast it 10 times.", "crafting.desc": "$(italic)We have a saying in our field: \"Magic isn't\". It doesn't \"just work,\" it doesn't respond to your thoughts, you can't throw fireballs or create a roast dinner from thin air or turn a bunch of muggers into frogs and snails./$", }, @@ -1666,12 +1757,12 @@ empty_directrix: "Firstly, a design for the cradle ... although, perhaps \"substrate\" would be more accurate a word. Without a mind guiding it, the output direction is determined by microscopic fluctuations in the _media wave and surroundings, making it effectively random.", directrix_redstone: "A $(l:greatwork/directrix)$(item)Mason Directrix/$ switches output side based on a redstone signal. Without a signal, the exit is the _media-color side; with a signal, the exit is the redstone-color side.", - directrix_boolean: "A $(l:greatwork/directrix)$(item)Shepherd Directrix/$ switches output side based on a boolean on the stack. A $(thing)True/$ makes the wave exit from the back, a $(thing)False/$ from the front. Failing to provide a boolean at all will cause a mishap." + directrix_boolean: "A $(l:greatwork/directrix)$(item)Shepherd Directrix/$ switches output side based on a boolean popped from the stack. A $(thing)True/$ makes the wave exit from the back, a $(thing)False/$ from the front. Failing to provide a boolean at all will cause a mishap." }, akashiclib: { "1": "I KNOW SO MUCH it is ONLY RIGHT to have a place to store it all. Information can be stored in books but it is oh so so so so $(italic)slow/$ to write by hand and read by eye. I demand BETTER. And so I shall MAKE better.$(br2)... I am getting worse ... do not know if I have time to write everything bursting through my head before expiring.", - "2": "The library. Here. My plans.$(br2)Like how patterns are associated with actions, I can associate my own patterns with iotas in any way I choose. An $(l:greatwork/akashiclib)$(item)Akashic Record/$ controls the library, and each $(l:greatwork/akashiclib)$(item)Akashic Bookshelf/$ stores one pattern mapped to one iota. These must all be directly connected together, touching, within 32 blocks. An $(l:greatwork/akashiclib)$(item)Akashic Ligature/$ doesn't do anything but count as a connecting block, to extend the size of my library.", + "2": "The library. Here. My plans.$(br2)Like how patterns are associated with actions, I can associate my own patterns with iotas in any way I choose. An $(l:greatwork/akashiclib)$(item)Akashic Record/$ controls the library, and each $(l:greatwork/akashiclib)$(item)Akashic Bookshelf/$ stores one pattern mapped to one iota. These must all be directly connected together, touching, within 128 blocks. An $(l:greatwork/akashiclib)$(item)Akashic Ligature/$ doesn't do anything but count as a connecting block, to extend the size of my library.", akashic_record: "Allocating and assigning patterns is simple but oh so boring. I have better things to do. I will need a mind well-used to its work for the extraction to stay sound.", "3": "Then to operate the library is simple, the patterns are routed through the librarian and it looks them up and returns the iota to you. Two actions do the work. $(l:patterns/akashic_patterns)Notes here/$.$(br2)Using an empty $(l:items/scroll)$(item)scroll/$ on a bookshelf copies the pattern there onto the $(l:items/scroll)$(item)scroll/$. Sneaking and using an empty hand clears the datum in the shelf.", }, @@ -1704,7 +1795,7 @@ print: "Displays the top iota of the stack to me.", raycast: { "1": "Combines two vectors (a position and a direction) into the answer to the question: If I stood at the position and looked in the direction, what block would I be looking at? Costs a negligible amount of _media.", - "2": "If it doesn't hit anything, the vectors will combine into $(l:casting/influences)$(thing)Null/$.$(br2)A common sequence of patterns, the so-called \"raycast mantra,\" is $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$, $(l:patterns/basics#hexcasting:entity_pos/eye)$(action)Compass' Purification/$, $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$, $(l:patterns/basics#hexcasting:get_entity_look)$(action)Alidade Purification/$, $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation/$. Together, they return the vector position of the block I am looking at.", + "2": "If it doesn't hit anything, the vectors will combine into $(thing)Null/$.$(br2)A common sequence of patterns, the so-called \"raycast mantra,\" is $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$, $(l:patterns/basics#hexcasting:entity_pos/eye)$(action)Compass' Purification/$, $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$, $(l:patterns/basics#hexcasting:get_entity_look)$(action)Alidade Purification/$, $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation/$. Together, they return the vector position of the block I am looking at.", }, "raycast/axis": { "1": "Like $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation/$, but instead returns a vector representing the answer to the question: Which $(italic)side/$ of the block am I looking at? Costs a negligible amount of _media.", @@ -1713,6 +1804,7 @@ "raycast/entity": "Like $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation/$, but instead returns the $(italic)entity/$ I am looking at. Costs a negligible amount of _media.", get_entity_height: "Transforms an entity on the stack into its height.", get_entity_velocity: "Transforms an entity on the stack into the direction in which it's moving, with the speed of that movement as that direction's magnitude.", + get_media: "Pushes the amount of _media available to the current cast, in units of $(l:items/amethyst)$(item)Amethyst Dust/$.", }, numbers: { @@ -1747,13 +1839,13 @@ "mul.2": "As such:$(li)With two numbers, combines them into their product.$(li)With a number and a vector, removes the number from the stack and multiplies each component of the vector by that number.$(li)With two vectors, combines them into their $(l:https://www.mathsisfun.com/algebra/vectors-dot-product.html)dot product/$.", "div.1": "Perform division or the cross product.", - "div.2": "As such:$(li)With two numbers, combines them into their quotient.$(li)With a number and a vector, removes the number and divides it by each element of the vector.$(li)With two vectors, combines them into their $(l:https://www.mathsisfun.com/algebra/vectors-cross-product.html)cross product/$.$(br2)In the first and second cases, the top of the stack or its components comprise the dividend, and the second-from-the-top or its components are the divisor.$(p)WARNING: Never divide by zero!", + "div.2": "As such:$(li)With two numbers, combines them into their quotient.$(li)With a number and a vector, removes the number and divides each element of the vector by it.$(li)With two vectors, combines them into their $(l:https://www.mathsisfun.com/algebra/vectors-cross-product.html)cross product/$.$(br2)In the first and second cases, the second-from-the-top of the stack is divided by the top of the stack.$(p)WARNING: Never divide by zero!", "abs.1": "Compute the absolute value or length.", "abs.2": "Replaces a number with its absolute value, or a vector with its length.", "pow.1": "Perform exponentiation or vector projection.", - "pow.2": "With two numbers, combines them by raising the first to the power of the second.$(li)With a number and a vector, removes the number and raises each component of the vector to the number's power.$(li)With two vectors, combines them into the $(l:https://en.wikipedia.org/wiki/Vector_projection)vector projection/$ of the top of the stack onto the second-from-the-top.$(br2)In the first and second cases, the first argument or its components are the base, and the second argument or its components are the exponent.", + "pow.2": "With two numbers, combines them by raising the first to the power of the second.$(li)With a number and a vector, removes the number and raises each component of the vector to the number's power.$(li)With two vectors, combines them into the $(l:https://en.wikipedia.org/wiki/Vector_projection)vector projection/$ of the second-from-the-top onto the top of the stack.$(br2)In the first and second cases, the first argument or its components are the base, and the second argument or its components are the exponent.", floor: "\"Floors\" a number, cutting off the fractional component and leaving an integer value. If passed a vector, instead floors each of its components.", ceil: "\"Ceilings\" a number, raising it to the next integer value if it has a fractional component. If passed a vector, instead ceils each of its components.", @@ -1792,7 +1884,7 @@ }, "consts.const/": { - "null": "Adds the $(l:casting/influences)$(thing)Null/$ influence to the top of the stack.", + "null": "Adds the $(thing)Null/$ influence to the top of the stack.", "true": "Adds $(thing)True/$ to the top of the stack.", "false": "Adds $(thing)False/$ to the top of the stack.", @@ -1807,6 +1899,7 @@ tau: "Adds τ, the radial representation of a complete circle, to the stack.", pi: "Adds π, the radial representation of half a circle, to the stack.", "e": "Adds $(italic)e/$, the base of natural logarithms, to the stack.", + phi: "Adds φ, the golden ratio, to the stack. This is the ratio between two values such that (A+B)/A = A/B.", }, }, @@ -1839,7 +1932,7 @@ }, logic: { - bool_coerce: "Convert an argument to a boolean. The number $(thing)0/$, $(l:casting/influences)$(thing)Null/$, False, and the empty list become False; everything else becomes True.", + bool_coerce: "Convert an argument to a boolean. The number $(thing)0/$, $(thing)Null/$, False, and the empty list become False; everything else becomes True.", bool_to_number: "Convert a boolean to a number; True becomes $(thing)1/$, and False becomes $(thing)0/$.", not: "If the argument is True, return False; if it is False, return True.", or: "Returns True if at least one of the arguments are True; otherwise returns False.", @@ -1855,13 +1948,13 @@ }, entities: { - get_entity: "Transform the position on the stack into the entity at that location (or $(l:casting/influences)$(thing)Null/$ if there isn't one).", + get_entity: "Transform the position on the stack into the entity at that location (or $(thing)Null/$ if there isn't one).", "get_entity/": { - animal: "Transform the position on the stack into the animal at that location (or $(l:casting/influences)$(thing)Null/$ if there isn't one).", - monster: "Transform the position on the stack into the monster at that location (or $(l:casting/influences)$(thing)Null/$ if there isn't one).", - item: "Transform the position on the stack into the dropped item at that location (or $(l:casting/influences)$(thing)Null/$ if there isn't one).", - player: "Transform the position on the stack into the player at that location (or $(l:casting/influences)$(thing)Null/$ if there isn't one).", - living: "Transform the position on the stack into the living creature at that location (or $(l:casting/influences)$(thing)Null/$ if there isn't one).", + animal: "Transform the position on the stack into the animal at that location (or $(thing)Null/$ if there isn't one).", + monster: "Transform the position on the stack into the monster at that location (or $(thing)Null/$ if there isn't one).", + item: "Transform the position on the stack into the dropped item at that location (or $(thing)Null/$ if there isn't one).", + player: "Transform the position on the stack into the player at that location (or $(thing)Null/$ if there isn't one).", + living: "Transform the position on the stack into the living creature at that location (or $(thing)Null/$ if there isn't one).", }, zone_entity: "Take a position and maximum distance on the stack, and combine them into a list of all entities near the position.", @@ -1878,9 +1971,26 @@ not_living: "Take a position and maximum distance on the stack, and combine them into a list of non-living entities near the position.", }, }, - + + types: { + type_equals: "Compare the given iotas and push whether they are of the same type.", + type_not_equals: "Compare the given iotas and push whether they are of different types.", + "compare_block/": { + lenient: "Compare the blocks specified by the given vectors and push whether they are of the same type. Two $(l:items/edified#hexcasting:cut_edified_plank_variants)$(item)Edified Stairs/$ will always compare as equal regardless of their shape or if they are waterlogged.", + strict: "Compare the blocks specified by the given vectors and push whether they appear to be identical. Two placed $(l:items/edified#hexcasting:cut_edified_plank_variants)$(item)Edified Stairs/$ will only compare as equal if they appear exactly the same.", + remarks: "Nature seems a bit arbitrary as to when blocks appear identical to each other. Placed $(l:items/slate)$(item)Slates/$ appear identical if they face the same direction and share waterlogging state, even if they have different patterns written to them. Similarly, chests appear identical if their outward appearance is the same, even if their contents differ." + }, + compare_entity: "Compare the given entities and push whether they are of the same type.", + "compare_item/": { + lenient: "Compare the items represented or held by the given entities and push whether they are the same type of item. Two $(l:items/focus)$(item)Foci/$ will always compare as equal.", + strict: "Like $(l:patterns/types#hexcasting:compare_item/lenient)$(action)Sorter's Distillation/$, but push whether they are identical items. Two $(l:items/focus)$(item)Foci/$ only compare as identical if they hold the same iota and have $(l:patterns/spells/cyclevariant)$(thing)the same appearance/$.", + "remarks.title": "On Item Holders", + remarks: "The way Nature interprets an entity given to $(l:patterns/types#hexcasting:compare_item/lenient)$(action)Sorter's Dstl./$ or $(l:patterns/types#hexcasting:compare_item/strict)$(action)Stacking Dstl./$ depends on its type:$(li)Item entities resolve to the items they represents$(li)Item frames resolve to the item they contain, and mishap if they are empty$(li)Players resolve to the item they are currently holding, prioritizing their primary hand" + }, + }, + lists: { - index: "Remove the number at the top of the stack, then replace the list at the top with the nth element of that list (where n is the number you removed). Replaces the list with $(l:casting/influences)$(thing)Null/$ if the number is out of bounds.", + index: "Remove the number at the top of the stack, then replace the list at the top with the nth element of that list (where n is the number you removed). Replaces the list with $(thing)Null/$ if the number is out of bounds.", slice: "Remove the two numbers at the top of the stack, then take a sublist of the list at the top of the stack between those indices, lower bound inclusive, upper bound exclusive. For example, the 0, 2 sublist of [0, 1, 2, 3, 4] would be [0, 1].", append: "Remove the top of the stack, then add it to the end of the list at the top of the stack.", unappend: "Remove the iota on the end of the list at the top of the stack, and add it to the top of the stack.", @@ -1900,24 +2010,32 @@ patterns_as_iotas: { "1": "One of the many peculiarities of this art is that $(italic)patterns themselves/$ can act as iotas-- I can even put them onto my stack when casting.$(br2)This raises a fairly obvious question: how do I express them? If I simply drew a pattern, it would hardly tell Nature to add it to my stack-- rather, it would simply be matched to an action.", - "2": "Fortunately, Nature has provided me with a set of $(l:casting/influences)influences/$ that I can use to work with patterns directly.$(br2)In short, $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ lets me add one pattern to the stack, and $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ let me add a whole list.", - escape: { - "1": "To use $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$, I draw it, then another arbitrary pattern. That second pattern is added to the stack.", + "2": "Fortunately, Nature has provided me with a set of special patterns that I can use to work with other patterns directly.$(br2)In short, $(l:patterns/patterns_as_iotas#hexcasting:runtime_escape)$(action)Contemplation/$ and $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ let me add one pattern to the stack, $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ let me add a whole list, and $(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)Evanition/$ lets me undo mistakes during the creation of such a list.", + runtime_escape: { + "1": "To use $(l:patterns/patterns_as_iotas#hexcasting:runtime_escape)$(action)Contemplation/$, I draw it, then another arbitrary pattern. That second pattern is added to the stack.", "2": "One may find it helpful to think of this as \"escaping\" the pattern onto the stack, if they happen to be familiar with the science of computers.$(br2)The usual use for this is to copy the pattern to a $(l:items/scroll)$(item)Scroll/$ or $(l:items/slate)$(item)Slate/$ using $(l:patterns/readwrite#hexcasting:write)$(action)Scribe's Gambit/$, and then perhaps decorating with them.", }, parens: { - "1": "Drawing $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$ makes my drawing of patterns act differently, for a time. Until I draw $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Retrospection/$, the patterns I draw are saved. Then, when I draw $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, they are added to the stack as a list iota.", + "1": "Drawing $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$ makes my drawing of patterns act differently, for a time. Until I draw $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, the patterns I draw are saved. Then, when I draw $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, they are added to the stack as a list iota.", "2": "If I draw another $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Introspection/$, it'll still be saved to the list, but I'll then have to draw $(italic)two/$ $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospections/$ to get back to normal casting.", }, - undo: "Finally, if I make a mistake while drawing patterns inside $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Intro-/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ I can draw $(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)Evanition/$ to remove the last pattern that I drew from the pattern list that is being constructed.", + undo: "Finally, if I make a mistake while drawing patterns inside $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Intro-/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, I can draw $(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)Evanition/$ to remove the last pattern that I drew from the pattern list that is being constructed.", + escape: "Similar to $(l:patterns/patterns_as_iotas#hexcasting:runtime_escape)$(action)Contemplation/$, but acts even when drawn between $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Intro-/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$. This can \"escape\" other patterns that work between $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Intro-/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, putting them into the list without any other effects.", further_notes: { title: "Further Notes", - "1": "I can escape the special behavior of $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Intro-/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ by drawing a $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ before them, which will simply add them to the list without affecting which the number of $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospections/$ I need to return to casting.$(br2)If I draw two $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Considerations/$ in a row while $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)introspecting/$, it will add a single $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ to the list.", + "1": "Because $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ acts immediately within $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Intro-/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, I need to draw two of them if I want to actually put $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ into a pattern list. The first $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ escapes the special behavior of the second, allowing it to go into the list.$(br2)$(l:patterns/patterns_as_iotas#hexcasting:runtime_escape)$(action)Contemplation/$, on the other hand, only needs to be drawn once no matter the depth.", "2": "If an iota other than a pattern is present in a list to be executed by $(l:patterns/meta#hexcasting:eval)$(action)Hermes' Gambit/$ or any other meta-evaluation pattern, it will normally result in a mishap. However, this can be avoided using the patterns described in this section.$(br2)Just as with pattern iotas, the patterns described here can be used to \"escape\" $(o)any other$() kind of iota, causing it to be pushed to the stack when something tries to evaluate it instead of causing a mishap.", - "3": "This technique may be useful if I want a _Hex to be able to reference a specific iota, such as a complicated vector or an entity reference, without having to construct or obtain it each time.$(br2)The process of getting such an iota into a list of patterns in the first place may be somewhat involved. The simplest method would be to draw a placeholder pattern when assembling the list, and then make use of $(l:patterns/lists#hexcasting:replace)$(action)Surgeon's Exaltation/$ to replace it with my desired iota.", + "3": "This technique may be useful if I want a _Hex to be able to reference a specific iota, such as a complicated vector or an entity reference, without having to construct or obtain it each time.$(br2)To get such an iota into a list of patterns in the first place, I can either use $(l:patterns/advanced_escaping#hexcasting:read_into_parens)$(action)Interjection/$ while creating the list, or draw a placeholder pattern and then use $(l:patterns/lists#hexcasting:replace)$(action)Surgeon's Exaltation/$ to replace it once the list has been created.", }, }, - + + advanced_escaping: { + "1": "$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Intro-/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ are very useful, but when building complex _Hexes I may need more advanced techniques.$(br2)This section describes such techniques: $(l:patterns/advanced_escaping#hexcasting:read_into_parens)$(action)Interjection/$ lets me insert iotas directly into an in-progress list, while $(l:patterns/advanced_escaping#hexcasting:open_n_parens)$(action)Meditation/$ and $(l:patterns/advanced_escaping#hexcasting:close_all_parens)$(action)Recollection/$ let me start and finish the list creation process with arbitrary levels of nesting depth.", + read_into_parens: "Only works while $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)introspecting/$. Reads an iota from my offhand, and adds it to the in-progress list. For iotas other than patterns, I may need to $(l:patterns/patterns_as_iotas#iota_embedding)$(action)take steps/$ to avoid a mishap when executing the list.", + open_n_parens: "Removes a number from the stack, then acts as though I'd drawn that many $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspections/$. Treated as a normal pattern while $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)introspecting/$, so nesting this may require $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)tricks/$ to draw extra $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospections/$.", + close_all_parens: "Works like $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, but closes $(italic)all/$ open $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspections/$ at once. The number of layers closed, along with the list of saved patterns, are then added to the stack.", + }, + readwrite: { "1": "This section deals with the storage of $(thing)Iotas/$ in a more permanent medium. Nearly any iota can be stored to a suitable item, such as a $(l:items/focus)$(item)Focus/$ or $(l:items/spellbook)$(item)Spellbook/$, and read back later. Certain items, such as an $(l:items/abacus)$(item)Abacus/$, can only be read from.$(br2)Iotas are usually read and written from the other hand, but it is also possible to read and write with an item when it is sitting on the ground as an item entity, or when in an item frame.", "2": "There may be other entities I can interact with in this way. For example, a $(l:items/scroll)$(item)Scroll/$ hung on the wall can have its pattern read off of it.$(br2)However, it seems I am unable to save a reference to another player, only me. I suppose an entity reference is similar to the idea of a True Name; perhaps Nature is helping to keep our Names out of the hands of enemies. If I want a friend to have my Name I can make a $(l:items/focus)$(item)Focus/$ for them.", @@ -1930,25 +2048,25 @@ writable: "If I could save an iota into the item in my other hand, returns True. Otherwise, returns False.", "writable/entity": "Like $(l:patterns/readwrite#hexcasting:writable)$(action)Assessor's Reflection/$, but the writability of an entity is checked instead of my other hand.", "local.title": "The Ravenmind", - local: "Items are not the only places I can store information, however. I am also able to store that information in the _media of the _Hex itself, much like the stack, but separate. Texts refer to this as the $(l:patterns/readwrite#hexcasting:local)$(thing)ravenmind/$. It holds a single iota, much like a $(l:items/focus)$(item)Focus/$, and begins with $(l:casting/influences)$(thing)Null/$ like the same. It is preserved between iterations of $(l:patterns/meta#hexcasting:for_each)$(action)Thoth's Gambit/$, but only lasts as long as the _Hex it's a part of. Once I stop casting, the value will be lost.", + local: "Items are not the only places I can store information, however. I am also able to store that information in the _media of the _Hex itself, much like the stack, but separate. Texts refer to this as the $(l:patterns/readwrite#hexcasting:local)$(thing)ravenmind/$. It holds a single iota, much like a $(l:items/focus)$(item)Focus/$, and begins with $(thing)Null/$ like the same. It is preserved between iterations of $(l:patterns/meta#hexcasting:for_each)$(action)Thoth's Gambit/$, but only lasts as long as the _Hex it's a part of. Once I stop casting, the value will be lost.", "write/local": "Removes the top iota from the stack, and saves it to my $(l:patterns/readwrite#hexcasting:local)$(thing)ravenmind/$, storing it there until I stop casting the _Hex.", "read/local": "Copy the iota out of my $(l:patterns/readwrite#hexcasting:local)$(thing)ravenmind/$, which I likely just wrote with $(l:patterns/readwrite#hexcasting:write/local)$(action)Huginn's Gambit/$.", }, meta: { - "eval.1": "Remove a pattern or list of patterns from the stack, then cast them as if I had drawn them myself with my $(l:items/staff)$(item)Staff/$ (until a $(l:patterns/meta#hexcasting:halt)$(action)Charon's Gambit/$ is encountered). If an iota is escaped with $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ or $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)its ilk/$, it will be pushed to the stack. Otherwise, non-patterns will fail.", - "eval.2": "This can be $(italic)very/$ powerful in tandem with $(l:items/focus)$(item)Foci/$.$(br2)It also makes the bureaucracy of Nature a \"Turing-complete\" system, according to one esoteric scroll I found.$(br2)However, it seems there's a limit to how many times a _Hex can cast itself-- Nature doesn't look kindly on runaway spells!$(br2)In addition, with the energies of the patterns occurring without me to guide them, any mishap will cause the remaining actions to become too unstable and immediately unravel.", - - "for_each.1": "Remove a list of patterns and a list from the stack, then cast the given pattern over each element of the second list.", - "for_each.2": "More specifically, for each element in the second list, it will:$(li)Create a new stack, with everything on the current stack plus that element$(li)Draw all the patterns in the first list$(li)Save all the iotas remaining on the stack to a list$(br)Then, after all is said and done, pushes the list of saved iotas onto the main stack.$(br2)No wonder all the practitioners of this art go mad.", + "eval.1": "Remove something evaluatable (usually a pattern or an $(l:casting/whats_a_hex)entire _Hex/$) from the stack, then cast it as if I had drawn the relevant patterns with my $(l:items/staff)$(item)Staff/$.", + "eval.2": "This can be very powerful in tandem with $(l:items/focus)$(item)Foci/$, and according to one esoteric scroll I found it also makes the bureaucracy of Nature a \"Turing-complete\" system.$(br2)Note that any iotas other than patterns in a _Hex cast this way will cause a mishap unless $(l:patterns/patterns_as_iotas)$(action)escaped/$. In addition, with the energies of the patterns occurring without me to guide them, $(o)any/$ mishap will cause the remaining actions in the _Hex to immediately unravel.", + + "for_each.1": "Remove something evaluatable and a list from the stack, then cast the evaluatable over each element of the list.", + "for_each.2": "More specifically, for each element in the provided list, it will:$(li)Create a new stack, with everything on the current stack plus that element$(li)Cast the evaluatable iota$(li)Save all the iotas remaining on the stack to a list$(br)Then, after all is said and done, pushes the list of saved iotas onto the main stack.$(br2)No wonder all the practitioners of this art go mad.", "halt.1": "This pattern forcibly halts a _Hex. This is mostly useless on its own, as I could simply just stop writing patterns, or put down my staff.", "halt.2": "But when combined with $(l:patterns/meta#hexcasting:eval)$(action)Hermes'/$ or $(l:patterns/meta#hexcasting:for_each)$(action)Thoth's Gambits/$, it becomes $(italics)far/$ more interesting. Those patterns serve to 'contain' that halting, and rather than ending the entire _Hex, those gambits end instead. This can be used to cause $(l:patterns/meta#hexcasting:for_each)$(action)Thoth's Gambit/$ not to operate on every iota it's given. An escape from the madness, as it were.", - "eval/cc.1": "Cast a pattern or list of patterns from the stack exactly like $(l:patterns/meta#hexcasting:eval)$(action)Hermes' Gambit/$, except that a unique \"Jump\" iota is pushed to the stack beforehand. ", - "eval/cc.2": "When the \"Jump\"-iota is executed, it'll skip the rest of the patterns and jump directly to the end of the pattern list.$(p)While this may seem redundant given $(l:patterns/meta#hexcasting:halt)$(action)Charon's Gambit/$ exists, this allows you to exit $(italic)nested/$ $(l:patterns/meta#hexcasting:eval)$(action)Hermes'/$ invocations in a controlled way, where Charon only allows you to exit one.$(p)The \"Jump\" iota will apparently stay on the stack even after execution is finished... better not think about the implications of that.", - - "thanatos.1": "Adds the number of patterns a _Hex is still capable of evaluating to the stack. This is reduced by one for each pattern cast by the _Hex." + "eval/cc.1": "Cast something evaluatable from the stack exactly like $(l:patterns/meta#hexcasting:eval)$(action)Hermes' Gambit/$, except that a unique \"Jump\" iota is pushed to the stack beforehand. ", + "eval/cc.2": "When the \"Jump\"-iota is executed, it'll jump directly to the end of the evaluatable, skipping any remaining actions.$(p)While this may seem redundant given $(l:patterns/meta#hexcasting:halt)$(action)Charon's Gambit/$ exists, this allows you to exit $(italic)nested/$ $(l:patterns/meta#hexcasting:eval)$(action)Hermes'/$ invocations in a controlled way, where Charon only allows you to exit one.$(p)The \"Jump\" iota will apparently stay on the stack even after execution is finished... better not think about the implications of that.", + + "thanatos.1": "It seems there is a limit to how many patterns can be evaluated within a single _Hex. I can use this pattern to deterime how many patterns remain before I reach this limit.", }, circle_patterns: { @@ -2012,15 +2130,15 @@ }, hexcasting_spell: { - basics: "These three spells each create an $(l:items/hexcasting)$(thing)item that casts a _Hex./$$(br)They all require me to hold the empty item in my off-hand, and require two things: the list of patterns to be cast, and an entity representing a dropped stack of $(l:items/amethyst)$(item)Amethyst/$ to form the item's battery.$(br2)See $(l:items/hexcasting)this entry/$ for more information.", + basics: "These three spells each create an $(l:items/hexcasting)$(thing)item that casts a _Hex./$$(br)They all require me to hold the empty item in my off-hand, and require two things: the list of iotas (usually patterns) to be cast, and an entity representing a dropped stack of $(l:items/amethyst)$(item)Amethyst/$ to form the item's battery.$(br2)See $(l:items/hexcasting)this entry/$ for more information.", "craft/cypher": "Costs about one $(l:items/amethyst)$(item)Charged Amethyst/$.", "craft/trinket": "Costs about five $(l:items/amethyst)$(item)Charged Amethysts/$.", "craft/artifact": "Costs about ten $(l:items/amethyst)$(item)Charged Amethysts/$.", - "recharge.1": "Recharge a _media-containing item in my other hand. Costs about one $(l:items/amethyst)$(item)Amethyst Shard/$.", + "recharge.1": "Recharge a _media-containing item in my other hand. Costs about one $(l:items/amethyst)$(item)Amethyst Shard/$ per item.", "recharge.2": "This spell is cast in a similar method to the crafting spells; an entity representing a dropped stack of $(l:items/amethyst)$(item)Amethyst/$ is provided, and recharges the _media battery of the item in my other hand.$(br2)This spell $(italic)cannot/$ recharge the item farther than its original battery size.", - "erase.1": "Clear a _Hex-containing item in my other hand. Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$.", + "erase.1": "Clears _Hex-containing or iota-containing items in my other hand. Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$ per item.", "erase.2": "The spell will also void all the _media stored inside the item, releasing it back to Nature and returning the item to a perfectly clean slate. This way, I can re-use $(l:items/hexcasting)$(item)Trinkets/$ I have put an erroneous spell into, for example.$(br2)This also works to clear a $(l:items/focus)$(item)Focus/$ or $(l:items/spellbook)$(item)Spellbook/$ page, unsealing them in the process.", }, @@ -2030,23 +2148,23 @@ "sentinel/create": "Summons my $(l:patterns/spells/sentinels)$(thing)sentinel/$ at the given position. Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$.", "sentinel/destroy": "Banish my $(l:patterns/spells/sentinels)$(thing)sentinel/$, and remove it from the world. Costs a negligible amount of _media.", - "sentinel/get_pos": "Add the position of my $(l:patterns/spells/sentinels)$(thing)sentinel/$ to the stack, or $(l:casting/influences)$(thing)Null/$ if it isn't summoned. Costs a negligible amount of _media.", - "sentinel/wayfind": "Transform the position vector on the top of the stack into a unit vector pointing from that position to my $(l:patterns/spells/sentinels)$(thing)sentinel/$, or $(l:casting/influences)$(thing)Null/$ if it isn't summoned. Costs a negligible amount of _media.", + "sentinel/get_pos": "Add the position of my $(l:patterns/spells/sentinels)$(thing)sentinel/$ to the stack, or $(thing)Null/$ if it isn't summoned. Costs a negligible amount of _media.", + "sentinel/wayfind": "Transform the position vector on the top of the stack into a unit vector pointing from that position to my $(l:patterns/spells/sentinels)$(thing)sentinel/$, or $(thing)Null/$ if it isn't summoned. Costs a negligible amount of _media.", }, colorize: "I must be holding a $(l:items/pigments)$(item)Pigment/$ in my other hand to cast this spell. When I do, it will consume the dye and permanently change my mind's coloration (at least, until I cast the spell again). Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$.", - cycle_variant: "Certain items I create seem oddly receptive to the influence of _media. By holding a $(l:items/hexcasting)$(item)Cypher/$, $(l:items/hexcasting)$(item)Trinket/$, $(l:items/hexcasting)$(item)Artifact/$, $(l:items/focus)$(item)Focus/$, or $(l:items/spellbook)$(item)Spellbook/$ in my other hand, I can use this spell to change the appearance of the item. Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$.", + cycle_variant: "Certain items I create seem oddly receptive to the influence of _media. By holding a $(l:items/hexcasting)$(item)Cypher/$, $(l:items/hexcasting)$(item)Trinket/$, $(l:items/hexcasting)$(item)Artifact/$, $(l:items/focus)$(item)Focus/$, or $(l:items/spellbook)$(item)Spellbook/$ in my other hand, I can use this spell to change the appearance of the item. Costs a negligible amount of _media.", flights: { "1": "Although it seems that true, limitless flight is out of my grasp, I have nonetheless found some methods of holding one in the sky, each with their respective drawbacks.$(br2)All forms produce a shimmer of excess _media; as the spell gets closer to ending, the sparks are shot through with more red and black.", "2": "Other forms of flight do exist, of course. For example, a combination of $(l:patterns/spells/basic#hexcasting:add_motion)$(action)Impulse/$ and $(l:patterns/spells/nadirs#hexcasting:potion/levitation)$(action)Blue Sun's Nadir/$ has been used since antiquity for a flight of sorts.$(br2)I've also heard tell of a thin membrane worn on the back that allows the ability to glide. From my research, I believe the Great spell $(l:patterns/great_spells/altiora)$(action)Altiora/$ may be used to mimic it.", "range.1": "A flight limited in its range.", - "range.2": "The second argument is a horizontal radius, in meters, in which the spell is stable. Moving outside of that radius will end the spell, dropping me out of the sky. As long as I stay inside the safe zone, however, the spell lasts indefinitely. An additional shimmer of _media marks the origin point of the safe zone. $(br2)Costs about 1 $(l:items/amethyst)$(item)Amethyst Dust/$ per meter of safety.", + "range.2": "The second argument is a horizontal radius, in meters, in which the spell is stable. Moving outside of that radius will end the spell, dropping me out of the sky. As long as I stay inside the safe zone, however, the spell lasts indefinitely. An additional shimmer of _media marks the origin point of the safe zone. $(br2)Costs about 2 $(l:items/amethyst)$(item)Amethyst Dust/$ per meter of safety, though any radius less than 1 meter will still cost 2 $(l:items/amethyst)$(item)Amethyst Dust/$.", "time.1": "A flight limited in its duration.", - "time.2": "The second argument is an amount of time in seconds for which the spell is stable. After that time, the spell ends and I am dropped from the sky. $(br2)It is relatively expensive at about 1 $(l:items/amethyst)$(item)Amethyst Shard/$ per second of flight; I believe it is best suited for travel.", + "time.2": "The second argument is an amount of time in seconds for which the spell is stable. After that time, the spell ends and I am dropped from the sky. $(br2)Costs about 2 $(l:items/amethyst)$(item)Amethyst Dust/$ per second of flight; I believe it is best suited for travel.", // Putting this in this category instead of elsewhere -- see sentinel chapter also containing some reflections/nonspells "can_fly.1": "Returns whether the given player is under the effects of $(l:patterns/spells/flight#hexcasting:flight/range)Anchorite's/$ or $(l:patterns/spells/flight#hexcasting:flight/time)Wayfarer's Flight/$.", @@ -2070,8 +2188,8 @@ }, "teleport/great": { - "1": "Far more powerful than $(l:patterns/spells/basic#hexcasting:blink)$(action)Blink/$, this spell lets me teleport nearly anywhere in the entire world! There does seem to be a limit, but it is $(italic)much/$ greater than the normal radius of influence I am used to.", - "2": "The entity will be teleported by the given vector. Curiously, this vector seems to be an offset, not an absolute position in the world; for example, if I use $(l:patterns/consts#hexcasting:const/vec/x)$(action)Vector Reflection +X/$, the entity will end up precisely one block east of its original position. No matter the distance, it always seems to cost about ten $(l:items/amethyst)$(item)Charged Amethyst/$.$(br2)The transference is not perfect, and it seems when teleporting something as complex as a player, their inventory doesn't $(italic)quite/$ stay attached, and tends to splatter everywhere at the destination. In addition, the target will be forcibly removed from anything inanimate they are riding or sitting on ... but I've read scraps that suggest animals can come along for the ride, so to speak.", + "1": "Far more powerful than $(l:patterns/spells/basic#hexcasting:blink)$(action)Blink/$, this spell lets me teleport an entity to anywhere in the entire world! No matter the distance, it always seems to cost about ten $(l:items/amethyst)$(item)Charged Amethyst/$.", + "2": "The provided vector is an offset, not an absolute position in the world; for example, if I use (1, 0, 0), the entity will end up precisely one block east of its original position.$(br2)Unfortunately, it seems that when teleporting myself, I'm unable to remain perfectly focused. This can cause some of my items to splatter out of my inventory on arrival.$(br2)I should also note that the target will be forcibly removed from anything inanimate they are riding ... but I've read scraps that suggest animals can come along for the ride, so to speak.", }, zeniths: { @@ -2210,4 +2328,4 @@ // ^ page }, // ^ hexcasting -} +} \ No newline at end of file diff --git a/projects/assets/hexcasting/1.20/hexcasting/lang/zh_cn.flatten.json5 b/projects/assets/hexcasting/1.20/hexcasting/lang/zh_cn.flatten.json5 index 8c8263213419..5bd307c5c60e 100644 --- a/projects/assets/hexcasting/1.20/hexcasting/lang/zh_cn.flatten.json5 +++ b/projects/assets/hexcasting/1.20/hexcasting/lang/zh_cn.flatten.json5 @@ -17,7 +17,7 @@ bamboo: "竹法杖", edified: "启迪木法杖", quenched: "淬灵晶法杖", - mindsplice: "制念法杖", + mindsplice: "剖念法杖", }, amethyst_dust: "紫水晶粉", @@ -266,9 +266,18 @@ spellcasting: "咒术网格", }, + "category.hexcasting": { + "binds": "咒法学", + }, + + "key.hexcasting": { + "spellbook_prev": "法术书上一页", + "spellbook_next": "法术书下一页", + }, + "tag.hexcasting": { staves: "咒术法杖", - edified_logs: "启迪原木", + edified_logs: "启迪木", edified_planks: "启迪木板", phial_base: "空试剂瓶", }, @@ -335,6 +344,10 @@ "": "Ctrl关闭笔顺显示", "@Tooltip": "按下Ctrl键时*关闭*图案渐变显示,而非按下时打开", }, + disableInworldScrolling: { + "": "禁用世界中滚轮操作", + "@Tooltip": "禁用正常世界中法术书和算盘的滚轮输入操作,确保对应键位和法杖界面滚轮操作的功能符合预期" + }, invertSpellbookScrollDirection: { "": "反转法术书滚轮方向", "@Tooltip": "向上滚动滚轮(而非向下)增加法术书当前页页码,反之亦然", @@ -355,16 +368,24 @@ "": "在所有情况下都显示列表逗号", "@Tooltip": "是否用逗号分隔列表中各种类型的iota(默认情况下,图案iota不会使用逗号分隔)", }, + advancedTooltipsShowsIotaNBT: { + "": "高级提示文本显示iota NBT", + "@Tooltip": "启用高级提示文本(F3+H)时是否应当显示核心、法术书等物品所包含iota的完整NBT", + }, + staticActiveSlates: { + "": "石板激活后静态显示", + "@Tooltip": "石板激活后其上图案是否不会摇晃(有大量激活的石板时能提升性能)", + }, }, server: { opBreakHarvestLevel: { "": "破坏方块挖掘等级", - "@Tooltip": "破坏方块法术的挖掘等级\n0 = 木,1 = 石,2 = 铁,3 = 钻石,4 = 下界合金", + "@Tooltip": "破坏方块法术的挖掘等级\n0 = 木,1 = 石,2 = 铁,3 = 钻石,4 = 下界合金。", }, maxOpCount: { "": "最大操作数", - "@Tooltip": "一刻(tick)内能执行的最大操作数,用于避免服务器卡顿", + "@Tooltip": "一刻(tick)内能执行的最大操作数,用于避免服务器卡顿。", }, maxSpellCircleLength: { "": "法术环最大长度", @@ -374,9 +395,17 @@ "": "禁用操作列表", "@Tooltip": "被禁用操作的资源位置;试图执行此类操作会导致事故。例如,“hexcasting:get_caster”会禁用意识之精思。", }, + globalCostScaling: { + "": "全局消耗倍数", + "@Tooltip": "除去#hexcasting:cannot_modify_cost标签下的操作,其余操作的媒质消耗均会乘以该数。若希望调整该标签下操作的消耗,请使用“操作消耗倍数”配置。", + }, + costRescaleListRaw: { + "": "操作消耗倍数", + "@Tooltip": "资源位置与对应操作媒质消耗倍数的映射。例如,“hexcasting:add_motion 3”会让驱动的消耗变为3倍。", + }, circleActionDenyList: { "": "法术环禁用操作列表", - "@Tooltip": "法术环中被禁用操作的资源位置;试图执行此类操作会导致事故", + "@Tooltip": "法术环中被禁用操作的资源位置;试图执行此类操作会导致事故。" }, greaterTeleportSplatsItems: { "": "卓越传送散落物品", @@ -420,7 +449,7 @@ }, amethystShardModification: { "": "紫水晶碎片掉落率变化量", - "@Tooltip": "采掘紫水晶簇时紫水晶碎片掉落数量相较原版的改变量", + "@Tooltip": "采掘紫水晶簇时紫水晶碎片掉落数量相较原版的改变量。", }, }, }, @@ -581,6 +610,8 @@ scroll: { needs_purchase: "购买以显示图案", pattern_not_loaded: "放入物品栏以加载图案", + "recalc_warning.line1": "%s:笔顺因世界而异的图案还未生成!", + "recalc_warning.line2": "请先运行/hexcasting recalcPatterns,再拿一张新卷轴。", }, abacus: { @@ -708,6 +739,7 @@ pi: "弧之精思", tau: "圆之精思", "e": "欧拉之精思", + phi: "和谐之精思", }, }, @@ -720,6 +752,7 @@ raycast: "弓箭手之馏化", "raycast/axis": "建筑师之馏化", "raycast/entity": "侦查员之馏化", + get_media: "媒质之精思", "circle/": { impetus_pos: "指路石之精思", @@ -766,6 +799,18 @@ not_living: "区域之馏化:非生物", }, + type_equals: "类似之馏化", + type_not_equals: "相异之馏化", + "compare_block/": { + "lenient": "测量员之馏化", + "strict": "检验员之馏化", + }, + compare_entity: "分类学家之馏化", + "compare_item/": { + "lenient": "分拣员之馏化", + "strict": "堆叠之馏化", + }, + swap: "弄臣之策略", rotate: "轮换之策略", rotate_reverse: "轮换之策略,第二型", @@ -892,6 +937,15 @@ "teleport/great": "卓越传送", brainsweep: "剥离意识", + escape: "考察", + runtime_escape: "深思", + open_paren: "内省", + close_paren: "反思", + open_n_parens: "冥想", + close_all_parens: "回想", + read_into_parens: "插嵌", + undo: "消解", + eval: "赫尔墨斯之策略", "eval/cc": "伊里斯之策略", for_each: "托特之策略", @@ -963,33 +1017,55 @@ mask: "簿记员之策略:%s", }, - "rawhook.hexcasting:": { - open_paren: "内省", - close_paren: "反思", - escape: "考察", - undo: "消解", - }, - "iota.hexcasting:": { - "null": "Null", - double: "数", - boolean: "布尔值", - entity: "实体", - list: "列表", - pattern: "图案", - garbage: "垃圾", - vec3: "向量", + "null": { + "": "Null", + desc: "一个空值", + }, + double: { + "": "数", + desc: "一个数", + }, + boolean: { + "": "布尔值", + desc: "一个布尔值", + }, + entity: { + "": "实体", + desc: "一个实体", + }, + list: { + "": "列表", + desc: "一个列表", + }, + pattern: { + "": "图案", + desc: "一个图案", + }, + garbage: { + "": "垃圾", + desc: "垃圾", + }, + vec3: { + "": "向量", + desc: "一个向量", + }, + continution: { + "": "续体", + desc: "一个跳转iota", + }, }, mishap: { "": "%s:%s", - invalid_pattern: "该图案不对应任何操作", + invalid_pattern: "图案%s不对应任何操作", + invalid_pattern_generic: "该图案不对应任何操作", unescaped: "本应运行一个图案,而实际运行了%s", not_enough_args: "本应接受大于等于%s个参数,而实际栈高度为%s", no_args: "本应接受大于等于%s个参数,而实际为空栈", - too_many_close_parens: "在绘制反思前未先绘制内省", + needs_parens: "在绘制反思前未先绘制内省", wrong_dimension: "无法在%2$s中影响到%1$s", entity_too_far: "%s超出影响范围", @@ -1026,28 +1102,33 @@ }, no_akashic_record: "%s处无阿卡夏记录", - disallowed: "已被服务器管理员禁用于施法", - disallowed_circle: "已被服务器管理员禁用于法术环", + disallowed: "%s已被服务器管理员禁用", + disallowed_generic: "该图案已被服务器管理员禁用", + disallowed_circle: "%s已被服务器管理员禁用于法术环", + disallowed_circle_generic: "该图案已被服务器管理员禁用于法术环", invalid_spell_datum_type: "尝试将某无效类型的值用作SpellDatum:%s(class %s)。这是模组中的漏洞。", unknown: "抛出异常(%s)。这是模组中的漏洞。", stack_size: "超出了栈的大小上限", bad_caster: "试图运行的图案需要强大的意识才能承受", invalid_value: { - "": "本应在栈下标为%2$s处接受%1$s,而实际接受了%3$s", + "": "本应在栈下标为%2$s处接受%1$s,而实际接受了%3$s:%4$s", class: { double: "一个数", boolean: "一个布尔值", vector: "一个向量", list: "一个列表", - widget: "一个虚指", pattern: "一个图案", + continuation: "一个跳转iota", + garbage: "垃圾", + "null": "Null", entity: { "": "一个实体", mob: "一个生物", item: "一个物品实体", + item_holder: "一个持有物品的实体", player: "一个玩家", living: "一个生物实体", }, @@ -1059,7 +1140,6 @@ numvec: "一个数或向量", numlist: "一个整数或列表", - "list.pattern": "一个由图案组成的列表", double: { positive: { @@ -1095,6 +1175,7 @@ bad_item: { "": "需要%s,而实际持有%d个%s", offhand: "需要在另一只手里持有%s,而实际持有%d个%s", + hotbar: "需要在快捷栏里放有%s", iota: { "": "一个可以存储iota的地方", @@ -1111,6 +1192,7 @@ rechargable: "一个可重新充能的物品", colorizer: "一个染色剂", variant: "一个有变种的物品", + placeable: "一个可放置的物品", }, bad_block: { @@ -1200,11 +1282,11 @@ couldnt_cast: "挫折", start_to_see: "我看到了什么?", "101": "咒术 101", + whats_a_hex: "咒术是什么?", vectors: "向量入门", mishaps: "事故", stack: "栈", naming: "操作命名法", - influences: "虚指", mishaps2: "启迪后事故", amethyst: "紫水晶", @@ -1231,7 +1313,7 @@ decoration: "装饰性方块", the_work: "卓伟之作", - brainsweeping: "关于意识的剥离", + brainsweeping: "论意识的剥离", spellcircles: "法术环", impetus: "促动石", directrix: "导向石", @@ -1251,8 +1333,10 @@ stackmanip: "栈操作", logic: "逻辑运算", entities: "实体", + types: "类型", lists: "列表操作", - patterns_as_iotas: "将图案用作 Iota", + patterns_as_iotas: "图案转义", + advanced_escaping: "高阶转义", readwrite: "读取与写入", meta: "元运行", circle_patterns: "法术环图案", @@ -1321,7 +1405,7 @@ }, couldnt_cast: { - "1": "为什么我就是施不了这个法术?!$(br2)我找到的卷轴货真价实。我能$(italic)感受/$到卷轴的嗡鸣——图案是真的,真的不能再真了。法术$(italic)就在里面/$。$(p)但感觉起来它好像处在某种薄膜的另一侧。我试过召唤它——它也想要起效——但它$(italic)做不到/$。", + "1": "为什么我就是施不了这个法术?!$(br2)我找到的卷轴货真价实。我能$(italic)感受/$到卷轴的嗡鸣——图案是真的,真得不能再真了。法术$(italic)就在里面/$。$(p)但感觉起来它好像处在某种薄膜的另一侧。我试过召唤它——它也想要起效——但它$(italic)做不到/$。", "2": "好像那层屏障会因我施法时用的魔力而被缓慢地削弱。但就算我用尽全力——最大程度地专注,最精致的紫水晶,最精确的图案——它$(italic)就是不肯/$跨过那个屏障。真是惹人上火。难道我对魔法的研究就$(p)$(italic)止步于此/$了吗?就因为我无力施法,我就要放弃那些力量了吗?$(br2)深呼吸。我应该仔细回顾我曾学到的知识,就算可能加起来也没多少……", "3": "……经过仔细回顾……我发现我自己发生了改变。$(p)似乎……拜$(l:items/amethyst)$(item)紫水晶/$所赐,我能仅凭我自身的意识和生命能量来施放法术,就和传说中说的一样。$(p)我不清楚我为什么做得到。只是……获得真知的代价就在那里,而我现在知道了那个代价是什么。我要去承受它。$(br2)幸运的是,我也清楚我的极限在哪里——我的生命力最旺盛时大概就相当于两个$(l:items/amethyst)$(item)充能紫水晶/$中的$(media)媒质/$。", "4": "只是想想都让我打颤——直到现在,我都在研究中保持了自身意识的大体完整。但这样做的结果就是,我只建立了单向而脆弱的连接。$(p)我与屏障的另一侧是相连的,其间的屏障已因我的努力而受了削弱。而在屏障的另一侧,仅是简单的操作,就能带来永恒的荣耀。$(p)我想要拥有那份力量,是否就大错特错?", @@ -1375,7 +1459,7 @@ $(li)向量,一种可代表世界中位置、运动或方向的,由三个数组成的集合。\ $(li)布尔值(简称“布尔”),一种代表真和假的抽象概念的 iota。\ $(li)实体,如我自己、鸡、矿车等。", - "2": "$(li)虚指,一种代表抽象概念的奇怪的 iota。\ + "2": "$(li)虚指,代表各类抽象概念的 iota,如数据的缺乏($(thing)Null/$)或杂乱的数据($(thing)垃圾/$)。\ $(li)图案,用于制作魔法物品,也用在某些烧脑的咒术中,如$(italic)能施放其他法术的法术/$。\ $(li)由上述若干种组成的列表,相当于一个 iota。", "3": "通常情况下,我会给操作提供 iota。\ @@ -1390,7 +1474,7 @@ "101": { "1": "施放$(hex)咒术/$难度颇高,也难怪这门学问早已遗落!我必须要仔细回看我的笔记。$(br2)我可以手持$(l:items/staff)$(item)法杖/$按下$(k:use)来施放$(hex)咒术/$,而后就会浮现一个按六边形网格排列的点阵。然后便可在点阵上单击并拖动以在网格的$(media)媒质/$中绘制图案。绘制完一个图案就会立刻执行其对应的操作(详情见后)。", "2": "当我绘制的图案足以施法时,网格就会消失,而累积起来的$(media)媒质/$也会被释放。按住$(k:sneak)时使用$(l:items/staff)$(item)法杖/$也能清空网格。$(br2)所以图案是如何起效的呢?简而言之:$(li)$(italic)图案/$会执行……$(li)$(italic)操作/$,其会操控……$(li)$(l:casting/stack)$(italic)栈/$,也即一列表的……$(li)$(italic)Iota/$,就是以单位计的信息。", - "3": "首先,$(thing)图案/$。它们是咒术的必需物,可用它们来操控周围的$(media)媒质/$。部分图案在被绘制时,会执行$(thing)操作/$。操作是$(italic)实际产生/$魔法效果的事物。所有图案都会以某种方式影响$(media)媒质/$,而当这些影响实际有用时,我们就称其为操作。$(br2)$(media)媒质/$是易变的,如果我绘制了无效的图案,栈上某处就会出现$(l:casting/influences)$(action)垃圾/$(详情见后)。", + "3": "首先,$(thing)图案/$。它们是咒术的必需物,可用它们来操控周围的$(media)媒质/$。部分图案在被绘制时,会执行$(thing)操作/$。操作是$(italic)实际产生/$魔法效果的事物。所有图案都会以某种方式影响$(media)媒质/$,而当这些影响实际有用时,我们就称其为操作。$(br2)$(media)媒质/$是易变的,如果我绘制了无效的图案,栈上某处就会出现$(thing)垃圾/$(详情见后)。", "4.header": "示例", "4": "有意思的是,图案整体的$(italic)方向/$完全不影响图案的功用。例如,上图中的两个图案都会执行名为$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$的操作。", "5": "$(hex)咒术/$是通过按顺序绘制(有效的)图案施放的。每个操作都能完成如下几件事中的一件:$(li)获取有关环境的信息,然后将其置于栈顶。$(li)操控获取到的信息(例如加和两个数)。或者$(li)产生魔法效果,例如召唤闪电或产生爆炸。(这些操作被称为“法术”。)$(p)在开始施放$(hex)咒术/$时会自动创建一个空栈。操作会影响栈顶的若干元素。", @@ -1407,12 +1491,25 @@ "15": "最后,法术的影响是有距离限制的,最远大约是距离我 32 格处。若试图影响该范围外的事物,法术便不会生效。$(br2)尽管如此,我可以凭借代表玩家的 iota 在任何地方影响他们。当然影响仅限于玩家本身,若玩家周围的环境超出我的影响范围,那些位置便不受影响。$(br)必须谨慎考虑要不要给别人代表我的 iota。友善的$(hex)咒术师/$可凭此助你行事,但那些心怀鬼胎的就不好说了。", }, + whats_a_hex: { + "1": "从概念上看,$(hex)咒术/$和$(l:casting/101)咒术 101/$ 里描述的完全一致:一系列操作,通常以在世界中产生特定效果为执行目的,并会通过法术实现这一需求。$(br2)对于随写随用的$(hex)咒术/$而言,这么想没有问题;但要是希望为后人留下记录和参考(或者只是方便我自己使用),或许就需要再具体一点的概念了。", + "2": "通常来说,$(hex)咒术/$是一个图案 iota 列表,和在$(l:patterns/patterns_as_iotas)图案转义/$中提及的一致。而将这种形式的$(hex)咒术/$入栈后,即可用$(l:patterns/meta#hexcasting:eval)赫尔墨斯之策略/$等元运行图案施放,或灌注到$(l:items/hexcasting)施法物品/$中以供后用。$(br2)这个列表和其他的列表 iota 没有本质区别——我可以操作列表本身,或将其保存到$(l:items/thought_knot)永久性/$$(l:items/focus)存储位置/$,甚至可以再嵌入到其他$(hex)咒术/$中去。", + "3": "需注意,这类列表不需要全由图案组成。虽然直接插入非图案 iota 通常会导致$(hex)咒术/$无法正常运作,但也有$(l:patterns/patterns_as_iotas#iota_embedding)相应的操作/$能规避麻烦。而且,部分$(l:patterns/meta#hexcasting:eval/cc)特殊 iota/$ 可以直接和图案一样运行。$(br2)清楚这一点后,其实$(o)所有/$列表都可以是$(hex)咒术/$——唯一的要求就是能成功施放。", + }, + vectors: { - "1": "如果要深入研究,就要对向量相关的知识足够熟悉。我整理了些讲解向量知识的资料,以备不理解时之需。$(br2)首先,来一段富有启发性的视频。(译注:此为 B 站官方账号$(l:https://www.bilibili.com/video/BV1ys411472E)网址/$)", - "1.link_text": "3blue1brown", - "2": "此外,似乎操控 $(thing)Psi 能量/$的魔法师们(又称“术式师”)有一些对学徒理解向量大有裨益的课程,虽然他们命名能力不强。我会在后页冒昧地提供前往他们课程的链接。$(br2)他们使用了另一套术语:$(li)“功能块”对应“操作”。$(li)“启动式”对应“法术”。$(li)“运算符”则对应不是法术的操作。", - "3": "链接在此。", - "3.link_text": "Psi Codex", + "1": "要用这门技艺干任何有用的事,似乎都需要掌握向量。向量是一组三个数,可用于代表许多事物,常见的例子有世界中的位置、两位置间的偏移量、空间中的方向。后页是对向量原理的简单总结,以及对有关应用的简要介绍。", + "2": "作为$(hex)咒术师/$,我能接触到的所有向量均是三维,因为我所处的世界就是三维的。$(br2)向量的分量按顺序为 X 分量、Y 分量、Z 分量,分别对应着世界的三个坐标轴:东西向的 X 轴、上下向的 Y 轴,以及南北向的 Z 轴。", + "3": "向量最基础的使用方法是用来代表$(o)位置/$,即代表世界中的某个定点——可以是方块的位置、实体的位置,若是法术需要,甚至能是空气中的某一处。$(br2)位置向量其实只是相应位置三个坐标的集合。不过,不是所有向量都代表着位置。", + "4": "已知某个方块的位置,若要指向它上方的方块,就需要向 Y 分量加 1:可以创建值为 (0, 1, 0) 的第二个向量与原有向量求和。类似地,若要指向它东边两格处,可使用值为 (2, 0, 0) 的向量。例中用到的两个向量都代表着从原有位置指向新位置的$(o)偏移量/$。", + "5": "注意,虽然位置向量和偏移向量含义不同,但它们在本质上没有区别——都只是三个数组成的集合。只要我想,所有向量都可以看作一类:位置不过是从世界原点指向对应位置的偏移,偏移也不过是相对于其他原点的位置。", + "6": "向量有两个重要属性,分别是$(o)模长/$(长度)和$(o)方向/$;把向量看作偏移可能会方便想象。$(br2)选取一个原点,再按照偏移向量直线移动,走过的距离即是向量的长度,走的方向则是向量的方向。", + "7": "向量有许多操作方法。如前例所说,向量可求和,即对 X、Y、Z 分量分别求和。减法也是一样——恰巧,两个位置向量的差正是减向量指向被减向量的偏移。$(br2)向量的乘除则不甚容易;有关这两种运算的介绍可参见$(l:https://www.mathsisfun.com/algebra/vectors-dot-product.html)这里/$和$(l:https://www.mathsisfun.com/algebra/vectors-cross-product.html)这里/$。", + "8": "以数乘或除向量可进行$(o)缩放/$,即同时让三个分量乘以或除以该数。$(br2)只要所用的数是正数,乘除便只会影响长度,不影响方向。若用的是负数,那么长度会和用正数时一样增减,且同时会反转向量的方向。", + "9": "让向量除以其长度会得到单位向量——方向不变,但长度恰变为 1。在只看重向量的方向时,单位向量就很合适。单位向量数乘后,所得向量的长度恰为所用的数,这一性质也很有用。$(br2)许多会计算方向的图案,比如$(l:patterns/basics#hexcasting:get_entity_look)照准仪之纯化/$,返回的就是单位向量。", + "10": "到目前为止提及的所有运算,以及还未提及的那些,都可通过$(l:patterns/math)数学/$章节中的图案实现。$(br2)我可以通过$(l:patterns/basics)基础图案/$将实体的信息获取为新向量,可以使用$(l:patterns/consts)常量/$来创建坐标轴向的单位向量,也可通过$(l:patterns/math#hexcasting:construct_vec)向量之提整/$将三个数组合为向量。", + "11": "对于与向量有关的那些更为高深的概念,我可能会在这本笔记之外再进行些拓展研究。下方的视频则是不错的参考资料。", + "11.link_text": "3blue1brown", }, mishaps: { @@ -1421,16 +1518,16 @@ "3": "而幸运的是,虽然所有事故导致的有害效果都$(italic)很烦人/$,但也都不会导致长期毁灭性后果。在哪里跌倒,就要在哪里站起来,然后继续前进……当然也可以换一条更好走的路。$(br2)我整理的所有事故如下所述。", "invalid_pattern.title": "无效图案", - invalid_pattern: "绘制的图案不对应任何操作。$(br2)产生黄色火花,并向栈顶压入一个$(l:casting/influences)$(action)垃圾/$。", + invalid_pattern: "绘制的图案不对应任何操作。$(br2)产生黄色火花,并向栈顶压入一个$(thing)垃圾/$。", "not_enough_iotas.title": "Iota 过少", - not_enough_iotas: "该操作需要比当前栈中元素数还多的 iota。$(br2)产生淡灰色火花,并向栈顶压入缺少的参数的数量个$(l:casting/influences)$(action)垃圾/$。", + not_enough_iotas: "该操作需要比当前栈中元素数还多的 iota。$(br2)产生淡灰色火花,并向栈顶压入缺少的参数的数量个$(thing)垃圾/$。", "stack_size.title": "Iota 过多", - "stack_size": "试图施放超出栈大小限制的法术。$(br2)产生黑色火花,我的整个栈变为仅含有单个$(l:casting/influences)$(action)垃圾/$。", + "stack_size": "试图施放超出栈大小限制的法术。$(br2)产生黑色火花,我的整个栈变为仅含有单个$(thing)垃圾/$。", "incorrect_iota.title": "Iota 错误", - incorrect_iota: "该操作需要一种特定类型的 iota 作为参数,而实际 iota 无效。如果有多个 iota 无效,错误信息只会提示最靠近栈底的错误。$(br2)产生深灰色火花,无效的 iota 会被替换为$(l:casting/influences)$(action)垃圾/$。", + incorrect_iota: "该操作需要一种特定类型的 iota 作为参数,而实际 iota 无效。如果有多个 iota 无效,错误信息只会提示最靠近栈底的错误。$(br2)产生深灰色火花,无效的 iota 会被替换为$(thing)垃圾/$。", "vector_out_of_range.title": "向量越界", vector_out_of_range: "该操作试图影响在我影响范围之外的某一位置。$(br2)产生品红色火花,我手中的物品将会掉落并飞向对应位置。", @@ -1442,7 +1539,7 @@ entity_immune: "该操作试图影响某不会受其影响的实体。$(br2)产生蓝色火花,我手中的物品将会掉落并飞向对应实体。", "math_error.title": "数学错误", - math_error: "该操作违背了数学规律,例如试图除以零。$(br2)产生红色火花,压入一个$(l:casting/influences)$(action)垃圾/$,并销蚀我的意识,扣去我当时生命力的一半。自然似乎对这种举动深感冒犯,而后便会报复性地惩罚$(italic)我/$。", + math_error: "该操作违背了数学规律,例如试图除以零。$(br2)产生红色火花,压入一个$(thing)垃圾/$,并销蚀我的意识,扣去我当时生命力的一半。自然似乎对这种举动深感冒犯,而后便会报复性地惩罚$(italic)我/$。", "incorrect_item.title": "物品错误", incorrect_item: "该操作需要某种物品,而我提供的物品不合适。$(br2)产生棕色火花。如果在手中持有对应物品,则该物品会掉落在地。如果对应物品以实体形式存在,则其会被击飞。", @@ -1450,8 +1547,8 @@ "incorrect_block.title": "方块错误", incorrect_block: "该操作需在目标位置存在某种方块,而该位置实际存在的方块不合适。$(br2)产生亮绿色火花,并在对应位置产生一次爆炸。这种爆炸似乎不会伤害到我、世界或是任何其他事物。就是挺吓人的。", - "retrospection.title": "反思过急", - retrospection: "试图在绘制$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$前绘制$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$。$(br2)产生橙色火花,并压入一个$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$对应的图案。", + "needs_parens.title": "内省缺失", + needs_parens: "试图在绘制$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$之前直接绘制仅能在其中使用的图案。$(br2)产生橙色火花,并将我试图绘制的图案作为 iota 压栈。", "too_many_patterns.title": "陷入沉思", too_many_patterns: "试图在单个$(hex)咒术/$内运行过多图案,通常是因为不小心制造了死循环。$(br2)产生暗蓝色火花,并使我窒息。", @@ -1467,9 +1564,9 @@ }, stack: { - "1": "$(thing)栈/$,又被称为“后进先出表(LIFO)”,是计算机科学中的概念。简而言之,栈是一种只能与最近交互过的事物交互的事物的集合。$(br2)想象一摞盘子,新盘子会被放在其顶部。若想要与放在这摞盘子中间的某个盘子交互,你就必须先将它上面的所有盘子拿开才行。", - "2": "因为栈非常简单,所以可用的交互种类屈指可数:$(li)$(italic)向其中加入事物/$,称为“入栈”/“push”。$(li)$(italic)移除最后加入的元素/$,称为“出栈”/“pop”。$(li)$(italic)校验或修改最后加入的元素/$,称为“检视”/“peek”。$(br)我们将最后加入的元素称为“栈顶元素”,就和盘子的类比差不多。$(p)举个例子,如果向栈压入 1 号元素,然后压入 2 号元素,然后弹出一个元素,这时栈顶元素便是 1 号元素。", - "3": "操作(大致)都只能与栈以如上几种方式交互。它们会弹出部分它们所期望的 iota(称为“参数”或“实参”或“形参”),对它们进行处理,然后压入一定数目的结果。$(br2)当然,某些操作(例如$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$)可能不会弹出任何元素,而某些操作(尤其是法术)可能不会压入任何元素。", + "1": "$(thing)栈/$,又被称为“后进先出表(LIFO)”,是计算机科学中的概念。简而言之,栈是一种只能与最近交互过的事物交互的事物集合。$(br2)想象一摞盘子,新盘子会被放在其顶部。若想要与放在这摞盘子中间的某个盘子交互,你就必须先将它上面的所有盘子拿开才行。", + "2": "因为栈非常简单,所以可用的交互种类屈指可数:$(li)$(italic)向其中加入事物/$,称为“入栈”“压栈”/“push”。$(li)$(italic)移除最后加入的元素/$,称为“出栈”“弹栈”/“pop”。$(li)$(italic)校验或修改最后加入的元素/$,称为“检视”/“peek”。$(br)我们将最后加入的元素称为“栈顶元素”,就和盘子的类比差不多。$(p)举个例子,如果向栈压入 1 号元素,然后压入 2 号元素,然后弹出一个元素,这时栈顶元素便是 1 号元素。", + "3": "操作(大致)都只能与栈以如上几种方式交互。它们会弹出部分它们所期望的 iota(称为“参数”),对它们进行处理,然后压入一定数目的结果。$(br2)当然,某些操作(例如$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$)可能不会弹出任何元素,而某些操作(尤其是法术)可能不会压入任何元素。", "4": "更复杂的操作都可用若干次入栈、出栈或检视操作实现。例如,$(l:patterns/stackmanip#hexcasting:swap)$(action)弄臣之策略/$交换栈顶两个元素的顺序。这可认为是弹出两个 iota 并以相反顺序重新压入。又例如,$(l:patterns/stackmanip#hexcasting:duplicate)$(action)双子之分解/$会复制栈顶元素,也即其检视栈顶并压入一个一样的元素。", }, @@ -1479,17 +1576,11 @@ "3": "法术不受此命名法约束,而是以其效用命名。毕竟,能叫它$(l:patterns/spells/basic#hexcasting:explode)$(action)爆炸/$,为何还要起个像是“$(action)爆破兵之策略/$”的名字呢?", }, - influences: { - "1": "虚指非常……奇怪,至少能这么说。大部分 iota 都代表着世界中的某个实际事物,而虚指则代表着某些更为……抽象或无形的事物。$(br2)例如,我将一种虚指命名为 $(l:casting/influences)$(thing)Null/$,它似乎代表着“无”这种状态。当一个问题没有确切的答案时就会出现一个 Null,比如对着天空执行$(l:patterns/basics#hexcasting:raycast)$(action)弓箭手之馏化/$。", - "2": "此外,我还发现了一组四个奇特的虚指,命名为$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$、$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$、$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$和$(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)消解/$。它们似乎同时有着图案和虚指的性质,但实际作用却和这两者都不一样。我能用它们把图案作为 iota 加到栈中,而非执行图案对应的操作。$(l:patterns/patterns_as_iotas)相关笔记在此/$。", - "3": "最后,似乎还有一组无限个虚指,它们都代表着一团紊乱的$(media)媒质/$。我称其为$(l:casting/influences)$(action)垃圾/$,因为它们毫无用处。它们似乎会因$(l:casting/mishaps)$(thing)事故/$而在栈中任意位置出现,呈现出来的则是一团乱麻。", - }, - mishaps2: { "1": "我发现了若干骇人的新事故。我绝不能向它们屈服。", "bad_mindflay.title": "惰性剥离", - bad_mindflay: "试图剥离已被剥除意识的生物的意识,或是试图剥离不适用于目标方块的生物的意识。$(br2)产生暗绿色火花,并杀死对应生物。倘若被村民看到了,他们应该不会对此有什么好评价。", + bad_mindflay: "试图剥离已被剥除意识的生物的意识,或是试图剥离不适用于目标方块的生物的意识。$(br2)产生暗绿色火花。已被剥离过的生物会直接死亡,而只是不适用的则仅会遭受轻微伤害。", "no_circle.title": "缺失法术环", no_circle: "试图直接执行只能在法术环内执行的操作。$(br2)产生淡蓝色火花,并将我物品栏中所有物品散落在地。", @@ -1519,21 +1610,21 @@ lens: { "1": "$(media)媒质/$在某些特殊情况下能和任何信息作用而产生奇异效果。而若是在玻璃上覆上薄薄一层媒质,就能……生出些独特的见地。$(br2)手持$(l:items/lens)$(item)探知透镜/$观察某些方块,就能给出一些额外信息。", - "2": "例如,看向$(item)红石粉/$会给出其信号强度。我猜测随着研究的深入,还能发现新的额外信息。$(br2)此外,用$(l:items/staff)$(item)法杖/$施法时,在另一只手持有探知透镜就能缩短点与点的间距,从而能在网格上绘制更多图案。$(br2)我还可以把它当单片眼镜戴在头上。这样做能显示额外信息,但不会缩小网格。但没关系,总有两全其美的办法……", + "2": "例如,看向$(item)红石粉/$会给出其信号强度。我猜测随着研究的深入,还能发现新的额外信息。$(br2)此外,用$(l:items/staff)$(item)法杖/$施法时,在另一只手持有探知透镜就能缩短点与点的间距,从而能在网格上绘制更多图案。$(br2)我还可以把它当单片眼镜戴在头上。", "crafting.desc": "$(italic)你必须学会……探知你所看到的事物。/$", }, thought_knot: { "1": "健忘者常在手指上缠绕丝线以助记忆。我也坚信我的咒法技艺能活用这种做法。以特定方式绑出的绳结应该能稳定存储一个 iota,且能独立于栈存在。$(br2)我将其称为“$(item)结念绳/$”。", "2": "在初合成时,它的存储空间内没有 iota。在另一只手持有$(item)结念绳/$时,绘制$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$就会将栈顶 iota 移除并存入$(item)结念绳/$。绘制$(l:patterns/readwrite#hexcasting:read)$(action)书吏之精思/$则会将$(item)结念绳/$中 iota 复制出来并压入栈顶。$(br2)一旦将 iota 写入$(item)结念绳/$,绳结本身便不再能解开。其中 iota 可被随意读取,但不可被清除或覆写。不过还好,这些绳结十分易得。", - "3": "另外,如果我在$(item)结念绳/$中写入一个实体,然后在该实体死亡或消失后尝试复制,则$(l:patterns/readwrite#hexcasting:read)$(action)书吏之精思/$会压入一个 $(l:casting/influences)$(thing)Null/$。", + "3": "另外,如果我在$(item)结念绳/$中写入一个实体,然后在该实体死亡或消失后尝试复制,则$(l:patterns/readwrite#hexcasting:read)$(action)书吏之精思/$会压入一个 $(thing)Null/$。", "crafting.desc": "$(italic)别人要是看到你带着块牌子,上面写着“本人风度翩翩,品貌非凡”,你又会作何感想?/$", }, focus: { - "1": "$(l:items/focus)$(item)核心/$能存储一个 iota。$(br2)合成核心时,其默认存有 $(l:casting/influences)$(thing)Null/$ 这一虚指。在另一只手持有$(l:items/focus)$(item)核心/$时,可以用$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$将栈顶元素弹出栈并写入其中。而使用$(l:patterns/readwrite#hexcasting:read)$(action)书吏之精思/$就会将$(l:items/focus)$(item)核心/$中的 iota 复制出来并压入栈中。", - "2": "我突然想到,我可以在$(l:items/focus)$(item)核心/$中写入一个由图案组成的列表,将它们复制出来后用$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$运行就行了。这样就有了施放复杂法术和施放某法术其中一部分的简单方法,不用再在每次使用时全部重画一遍图案了。$(br2)它可以用作一个简易版$(l:items/hexcasting#artifact)$(item)造物/$,但我觉得将某些常用图案“组合”存到$(l:items/focus)$(item)核心/$中更方便,比如返回我在看哪里的图案组合。", - "3": "另外,如果我在$(l:items/focus)$(item)核心/$中写入一个实体,然后在该实体死亡或消失后尝试复制,则$(l:patterns/readwrite#hexcasting:read)$(action)书吏之精思/$会压入一个 $(l:casting/influences)$(thing)Null/$。$(br2)最后,如果不希望$(l:items/focus)$(item)核心/$被覆写,可以将其与$(item)蜜脾/$合成来蜡封,这时对其使用$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$就会失败。$(l:patterns/spells/hexcasting#hexcasting:erase)$(action)清除物品/$则会将蜡封和其内容物一并清除。", + "1": "$(item)核心/$和$(l:items/thought_knot)$(item)结念绳/$类似,也即两者都可用于读写 iota。不过,核心的优势在于它可以$(italic)重复使用/$。如果我在写入$(item)核心/$后发现手误,可以直接再次施放$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$以覆写其中 iota。", + "2": "若希望给$(l:items/focus)$(item)核心/$加上防护,避免误操作覆写,可以将其与$(item)蜜脾/$合成进行蜡封。对蜡封的核心使用$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$会失败。$(br2)$(l:patterns/spells/hexcasting#hexcasting:erase)$(action)清除物品/$能同时去除蜡封和其中的内容。", + "3": "不过,$(l:items/thought_knot)$(item)结念绳/$对$(item)核心/$也有优势,因为$(item)核心/$相较之下要昂贵许多。我的研究表明,早期的习艺者只使用$(item)核心/$,$(l:items/thought_knot)$(item)结念绳/$则完全是我的原创发明。$(br2)古代人的生活肯定是相当优渥富足了。", "crafting.desc": "$(italic)毒苹果,毒虫子。/$", }, @@ -1564,11 +1655,11 @@ // roll credits hexcasting: { - "1": "虽然用$(l:items/staff)$(item)法杖/$直接施放$(hex)咒术/$确实足够灵活易用,但仅凭法杖重复施放同一种咒术就很烦人了。如果能将某些常用法术存储起来后续直接使用,就再方便不过了,同时也方便我与朋友分享这些$(hex)咒术/$。", + "1": "虽然用$(l:items/staff)$(item)法杖/$直接施放$(hex)咒术/$确实足够灵活易用,但仅凭法杖重复施放同一种咒术就很烦人了。如果能将某些常用$(hex)咒术/$存储起来后续直接使用,就再方便不过了,同时也方便我与朋友分享这些$(hex)咒术/$。", "2": "以下三种魔法物品就能做到这点:$(l:items/hexcasting)$(item)杂件/$,$(l:items/hexcasting)$(item)缀品/$和$(l:items/hexcasting)$(item)造物/$。所有三种物品都能存储$(hex)咒术/$对应的所有图案,且都有一个用来存储$(media)媒质/$的小储库。$(br2)手持时按下$(thing)$(k:use)/$就会消耗其内含的媒质像用法杖施法那样运行其中图案。", "3": "每种物品都有自己的特点:$(br2)$(l:items/hexcasting)$(item)杂件/$很脆弱,在耗尽其内含的$(media)媒质/$后就会损坏,$(italic)不可/$重新充能。$(br2)$(l:items/hexcasting)$(item)缀品/$则只要还有剩余的$(media)媒质/$就能一直施法,但媒质耗尽后若不重新充能就无法使用。", "4": "$(l:items/hexcasting)$(item)造物/$是三者之中最强力的——其内含的$(media)媒质/$耗尽后,它们还能消耗持有者物品栏内的$(l:items/amethyst)$(item)紫水晶/$来施放$(hex)咒术/$,就和用$(l:items/staff)$(item)法杖/$施法一样。不过这也意味着,一旦$(l:items/amethyst)$(item)紫水晶/$不够,继续施法可能会消耗施法者的意识。$(br2)而在工作台中合成魔法物品后,必须将$(hex)咒术/$以适合对应物品的法术写入其中。(也没什么其他办法。)$(l:patterns/spells/hexcasting)对应的图案详情见此。/$", - "5": "每次写入都需要栈上有一个实体和一个由图案构成的列表。这个实体必须是一个含有$(media)媒质/$的物品实体(也即掉落在地上的$(l:items/amethyst)$(item)紫水晶/$)。该实体会变成该魔法物品的内部储库。$(br2)似乎储库中的$(media)媒质/$不会像用$(l:items/staff)$(item)法杖/$施法那样以物品组为单位消耗。其中的$(media)媒质/$实际上会“溶解”入一个连续的能量池。因此,当物品中存有会消耗 1 个$(l:items/amethyst)$(item)紫水晶粉/$中媒质来施放的$(hex)咒术/$时,含有相当于 1 个$(l:items/amethyst)$(item)充能紫水晶/$中媒质的储库能支持施放该咒术 10 次。", + "5": "每次写入都需要栈上有一个实体和一个 $(l:casting/whats_a_hex)iota 列表/$。这个实体必须是一个含有$(media)媒质/$的物品实体(也即掉落在地上的$(l:items/amethyst)$(item)紫水晶/$)。该实体会变成该魔法物品的内部储库。$(br2)似乎储库中的$(media)媒质/$不会像用$(l:items/staff)$(item)法杖/$施法那样以物品组为单位消耗。其中的$(media)媒质/$实际上会“溶解”入一个连续的能量池。因此,当物品中存有会消耗 1 个$(l:items/amethyst)$(item)紫水晶粉/$中媒质来施放的$(hex)咒术/$时,含有相当于 1 个$(l:items/amethyst)$(item)充能紫水晶/$中媒质的储库能支持施放该咒术 10 次。", "crafting.desc": "$(italic)我们常说一句话,“魔法从不……”。它从不“就是行得通”,它不会随你操控。你不能光靠所谓魔法扔个火球,烧顿晚饭,或是把一帮劫匪变成青蛙和蜗牛。/$", }, @@ -1666,12 +1757,12 @@ empty_directrix: "第一步,基床……用“基底”这个名字会准确些。倘若没有意识引导,媒质的流向是由$(media)媒质/$波的微观涨落和环境决定的,换句话说,随机的。", directrix_redstone: "$(l:greatwork/directrix)$(item)石匠导向石/$会根据红石信号改变输出方向。没有信号的话,出口是$(media)媒质/$色的一端;有信号的话,出口是红石色的一端。", - directrix_boolean: "$(l:greatwork/directrix)$(item)牧羊人导向石/$会根据栈中的布尔值改变输出方向。为 $(thing)True/$ 时,媒质自后方流出;为 $(thing)False/$ 时,媒质自前方流出。未能获取到布尔值则会招致事故。" + directrix_boolean: "$(l:greatwork/directrix)$(item)牧羊人导向石/$会从栈中弹出一个布尔值并据此改变输出方向。为 $(thing)True/$ 时,媒质自后方流出;为 $(thing)False/$ 时,媒质自前方流出。未能获取到布尔值则会招致事故。" }, akashiclib: { "1": "我所知甚多,将所知存于某处是唯一正途。信息能用书本存储但徒手书写以眼阅读非常非常非常非常$(italic)缓慢/$。我需要更好的方法。并且我必将找到。$(br2)……我的意识每况愈下……不知道我还有没有时间赶在满溢头脑的知识消散之前记下它们。", - "2": "一座图书馆。我的计划,如下。$(br2)就和图案与操作的对应关系一样,我能以我自己的方式将自创的图案与 iota 对应起来。$(l:greatwork/akashiclib)$(item)阿卡夏记录/$是图书馆的控制核心,而每个$(l:greatwork/akashiclib)$(item)阿卡夏书架/$存储一个映射。它们必须互相连接,直接贴在一起,不超过 32 格。$(l:greatwork/akashiclib)$(item)阿卡夏桥接块/$没有存储功能但被视为连接方块,从而增加图书馆的大小。", + "2": "一座图书馆。我的计划,如下。$(br2)就和图案与操作的对应关系一样,我能以我自己的方式将自创的图案与 iota 对应起来。$(l:greatwork/akashiclib)$(item)阿卡夏记录/$是图书馆的控制核心,而每个$(l:greatwork/akashiclib)$(item)阿卡夏书架/$存储一个映射。它们必须互相连接,直接贴在一起,不超过 128 格。$(l:greatwork/akashiclib)$(item)阿卡夏桥接块/$没有存储功能但被视为连接方块,从而增加图书馆的大小。", akashic_record: "存储和分配图案非常简单但太过磨人,我还有更要紧的事要做。剥离一个精于此道的意识能省很多麻烦。", "3": "图书馆的使用方法很简单,交给图书管理员一个图案,然后他把对应的 iota 交给你。共有两个相关图案,$(l:patterns/akashic_patterns)笔记在此/$。$(br2)对书架使用一张空白的$(l:items/scroll)$(item)卷轴/$就能将图案复制到$(l:items/scroll)$(item)卷轴/$上。潜行时右击书架就能清除其中数据。", }, @@ -1704,7 +1795,7 @@ print: "向我展示栈顶的 iota。", raycast: { "1": "将两个向量组合(分别表示位置和方向)并返回如下问题的答案:若我站在该位置并看向该方向,我会看到什么方块?消耗极少量$(media)媒质/$。", - "2": "如果视线并未击中任何事物,所提供的向量会变为 $(l:casting/influences)$(thing)Null/$。$(br2)有一套常用的图案序列(常称“射线追踪曼怛罗”),由$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$、$(l:patterns/basics#hexcasting:entity_pos/eye)$(action)指南针之纯化/$、$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$、$(l:patterns/basics#hexcasting:get_entity_look)$(action)照准仪之纯化/$、$(l:patterns/basics#hexcasting:raycast)$(action)弓箭手之馏化/$组成。依次绘制就能返回我所看的方块的位置向量。", + "2": "如果视线并未击中任何事物,所提供的向量会变为 $(thing)Null/$。$(br2)有一套常用的图案序列(常称“射线追踪曼怛罗”),由$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$、$(l:patterns/basics#hexcasting:entity_pos/eye)$(action)指南针之纯化/$、$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$、$(l:patterns/basics#hexcasting:get_entity_look)$(action)照准仪之纯化/$、$(l:patterns/basics#hexcasting:raycast)$(action)弓箭手之馏化/$组成。依次绘制就能返回我所看的方块的位置向量。", }, "raycast/axis": { "1": "与$(l:patterns/basics#hexcasting:raycast)$(action)弓箭手之馏化/$类似,但会返回如下问题的答案:我看着的是方块的$(italic)哪一面/$?消耗极少量$(media)媒质/$。", @@ -1713,6 +1804,7 @@ "raycast/entity": "与$(l:patterns/basics#hexcasting:raycast)$(action)弓箭手之馏化/$类似,但会返回我所看的$(italic)实体/$。消耗极少量$(media)媒质/$。", get_entity_height: "将栈顶的实体变为其高度。", get_entity_velocity: "将栈顶的实体变为其移动方向上的向量,其模长为实体的移动速度。", + get_media: "将当前施法可用的$(media)媒质/$量压栈,以$(l:items/amethyst)$(item)紫水晶粉/$计。", }, numbers: { @@ -1753,7 +1845,7 @@ "abs.2": "将一个数变为其绝对值,将一个向量变为其模长。", "pow.1": "执行乘方或向量射影。", - "pow.2": "若栈顶为两个数,返回两数的幂。$(li)若为一个数和一个向量,移除该数并计算向量的每个分量与该数的幂。$(li)若为两个向量,计算栈顶向量对栈顶往下第二向量的$(l:https://en.wikipedia.org/wiki/Vector_projection)向量射影/$。$(br2)第一第二种情况下,栈顶元素或其分量为指数,栈顶往下第二元素或其分量为底数。", + "pow.2": "若栈顶为两个数,返回两数的幂。$(li)若为一个数和一个向量,移除该数并计算向量的每个分量与该数的幂。$(li)若为两个向量,计算栈顶往下第二向量对栈顶向量的$(l:https://en.wikipedia.org/wiki/Vector_projection)向量射影/$。$(br2)第一第二种情况下,栈顶元素或其分量为指数,栈顶往下第二元素或其分量为底数。", floor: "对一个数取底,也即去掉小数部分取整。或对向量的每个分量取底。", ceil: "对一个数取顶,也即将小数部分不为零的数换为大于其的最小整数。或对向量的每个分量取顶。", @@ -1792,7 +1884,7 @@ }, "consts.const/": { - "null": "返回 $(l:casting/influences)$(thing)Null/$ 这一虚指。", + "null": "返回 $(thing)Null/$ 这一虚指。", "true": "返回 $(thing)True/$。", "false": "返回 $(thing)False/$。", @@ -1807,6 +1899,7 @@ tau: "返回 τ,也即圆的弧度。", pi: "返回 π,也即半圆的弧度。", "e": "返回 $(italic)e/$,也即自然对数的底。", + phi: "返回 φ,也即黄金比例。得出该比例的两值 A、B 满足 (A+B)/A = A/B。", }, }, @@ -1827,7 +1920,7 @@ "fisherman/copy": "与$(l:patterns/stackmanip#hexcasting:fisherman)$(action)渔夫之策略/$类似,但会复制 iota 而非将其提出。", mask: { - "1": "一组无限个根据凹槽和横线的顺序来保留或移除栈中元素的操作。", + "1": "一组无限个根据凹槽和横线的顺序来移除或保留栈中元素的操作。", "2": "假如从左到右绘制书吏之策略,此操作操控的 iota 个数由其横向长度决定。从靠近栈底的位置开始往栈顶计入,一条横线代表保留该处元素,一个凹槽代表移除该处元素。$(br2)如果栈从靠近栈底处起形如 $(italic)0, 1, 2/$ ,绘制左页例图一,则栈变为 $(italic)1/$;例图二会将栈变为 $(italic)0/$;例图三会将栈变为 $(italic)0, 2/$(栈底方向的 0 不受影响)。", }, @@ -1839,15 +1932,15 @@ }, logic: { - bool_coerce: "将参数变换为布尔值。数 $(thing)0/$、$(l:casting/influences)$(thing)Null/$、False,以及空列表会变为 False。其余所有则变为 True。", + bool_coerce: "将参数变换为布尔值。数 $(thing)0/$、$(thing)Null/$、False,以及空列表会变为 False。其余所有则变为 True。", bool_to_number: "将布尔值变换为数。True 变为 $(thing)1/$, False 变为 $(thing)0/$。", not: "如果参数是 True,返回 False;如果参数是 False,返回 True。", or: "如果至少有一个参数是 True,返回 True。否则返回 False。", and: "如果两个参数都是 True,返回 True。否则返回 False。", xor: "如果参数中仅一个是 True,返回 True。否则返回 False。", if: "如果第一个参数是 True,保留第二个参数并移除第三个。否则保留第三个参数并移除第二个。", - equals: "如果第一个参数等于第二个(允许较小误差),返回 True。否则返回 False。", - not_equals: "如果第一个参数不等于第二个(允许较小误差),返回 True。否则返回 False。", + equals: "如果第一个参数等于第二个(在较小误差内),返回 True。否则返回 False。", + not_equals: "如果第一个参数不等于第二个(超出较小误差),返回 True。否则返回 False。", greater: "如果第一个参数大于第二个,返回 True。否则返回 False。", less: "如果第一个参数小于第二个,返回 True。否则返回 False。", greater_eq: "如果第一个参数大于或等于第二个,返回 True。否则返回 False。", @@ -1855,13 +1948,13 @@ }, entities: { - get_entity: "将栈顶位置向量变为该处实体(若无则返回 $(l:casting/influences)$(thing)Null/$)。", + get_entity: "将栈顶位置向量变为该处实体(若无则返回 $(thing)Null/$)。", "get_entity/": { - animal: "将栈顶位置向量变为该处动物(若无则返回 $(l:casting/influences)$(thing)Null/$)。", - monster: "将栈顶位置向量变为该处怪物(若无则返回 $(l:casting/influences)$(thing)Null/$)。", - item: "将栈顶位置向量变为该处物品实体(若无则返回 $(l:casting/influences)$(thing)Null/$)。", - player: "将栈顶位置向量变为该处玩家(若无则返回 $(l:casting/influences)$(thing)Null/$)。", - living: "将栈顶位置向量变为该处生物(若无则返回 $(l:casting/influences)$(thing)Null/$)。", + animal: "将栈顶位置向量变为该处动物(若无则返回 $(thing)Null/$)。", + monster: "将栈顶位置向量变为该处怪物(若无则返回 $(thing)Null/$)。", + item: "将栈顶位置向量变为该处物品实体(若无则返回 $(thing)Null/$)。", + player: "将栈顶位置向量变为该处玩家(若无则返回 $(thing)Null/$)。", + living: "将栈顶位置向量变为该处生物(若无则返回 $(thing)Null/$)。", }, zone_entity: "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有实体的列表。", @@ -1879,8 +1972,25 @@ }, }, + types: { + type_equals: "比较所给 iota,判断它们是否类型相同。", + type_not_equals: "比较所给 iota,判断它们是否类型不同。", + "compare_block/": { + lenient: "比较所给向量处的方块,判断它们是否类型相同。两个$(l:items/edified#hexcasting:cut_edified_plank_variants)$(item)启迪木楼梯/$必然类型相同,无论形态如何,也无论是否含水。", + strict: "比较所给向量处的方块,判断它们是否一致。只有外观完全一致的两个$(l:items/edified#hexcasting:cut_edified_plank_variants)$(item)启迪木楼梯/$才会被判断为一致。", + remarks: "自然在判断方块是否一致时比较随性。在自然看来,朝向和含水性相同的两块$(l:items/slate)$(item)石板/$就已经一致,即便刻着的图案不同也不会影响判断。类似地,箱子只要外观一致即一致,即便内容物不同也不影响。" + }, + compare_entity: "比较所给实体,判断它们是否类型相同。", + "compare_item/": { + lenient: "比较所给实体代表或持有的物品,判断它们是否类型相同。两枚$(l:items/focus)$(item)核心/$必然相同。", + strict: "和$(l:patterns/types#hexcasting:compare_item/lenient)$(action)分拣员之馏化/$类似,但会判断物品是否完全一致。两枚$(l:items/focus)$(item)核心/$只会在其中 iota 相同且$(l:patterns/spells/cyclevariant)$(thing)外观相同/$时判断为一致。", + "remarks.title": "论物品容器", + remarks: "自然在面对传入$(l:patterns/types#hexcasting:compare_item/lenient)$(action)分拣员之馏化/$和$(l:patterns/types#hexcasting:compare_item/strict)$(action)堆叠之馏化/$的实体时,会按实体的类型分类处理:$(li)物品实体视为它们对应的物品$(li)物品展示框视为放在框中的物品,为空则招致事故$(li)玩家视为其当前手持的物品,优先选取主手" + }, + }, + lists: { - index: "移除栈顶的数,将栈顶的列表变为其中下标为该数(就是被移除的那个数)的元素。若该数越界,则将列表换为 $(l:casting/influences)$(thing)Null/$。", + index: "移除栈顶的数,将栈顶的列表变为其中下标为该数(就是被移除的那个数)的元素。若该数越界,则将列表换为 $(thing)Null/$。", slice: "移除栈顶的两个数,将栈顶的列表变为其中下标在两个数之间元素的子列表,包含下标下界,不含下标上界。例如,[0, 1, 2, 3, 4] 的 0, 2 子列表是 [0, 1]。", append: "移除栈顶元素,将其加到栈顶列表的末尾。", unappend: "移除栈顶列表末尾的元素,将其加到栈顶。", @@ -1891,8 +2001,8 @@ reverse: "倒置栈顶列表。", index_of: "移除栈顶元素,并将栈顶列表变为该元素在其中第一次出现的位置(从 0 开始)。若没有出现过则返回 -1。", remove_from: "移除栈顶的数,而后移除栈顶列表中下标为该数(就是被移除的那个数)的元素。", - replace: "移除栈顶元素和栈顶的数,而后将栈顶列表中下标为该数(就是被移除的那个数)变为该元素。若该数越界则不进行操作。", - last_n_list: "移除$(italic)所给数/$个元素,将这些元素加入列表并将该列表压入栈顶。", + replace: "移除栈顶元素和栈顶的数,而后将栈顶列表中下标为该数(就是被移除的那个数)的位置变为原栈顶元素。数越界则不进行操作。", + last_n_list: "移除$(italic)所给数/$个元素,将这些元素加入列表,并将所得列表压入栈顶。", splat: "移除栈顶列表,而后将其中元素全部压入栈顶。", construct: "移除栈顶元素,将其加到栈顶列表的开头。", deconstruct: "移除栈顶列表中的第一个元素,并将该元素压入栈顶。", @@ -1900,24 +2010,32 @@ patterns_as_iotas: { "1": "咒法学中的一个怪异之处就是$(italic)图案本身/$也可被视为 iota——其甚至能在施法时被压到栈中。$(br2)这就产生了一个问题:我怎么把图案用作 iota 呢?如果就只是画一遍,自然大概不会将其理解为“把它加到栈里”,而只会将其与操作对应起来。", - "2": "幸运的是,自然提供了一组专用于此道的$(l:casting/influences)虚指/$。$(br2)简而言之,$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$使我能将一个图案加到栈中,$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$则能加入一整个列表。", - escape: { - "1": "要使用$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$,先绘制它,然后绘制任意图案。第二个图案就会被加到栈中。", - "2": "如果对计算机科学有足够了解的话,你可能能将其与“转义”/“escape”操作联系起来。$(br2)考察的一大用途是将某一图案复制到$(l:items/scroll)$(item)卷轴/$或$(l:items/slate)$(item)石板/$上,且要和$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$配合使用。这之后卷轴和石板就能拿来装饰了。", + "2": "幸运的是,自然提供了一组专用于和其他图案交互的特殊图案。$(br2)简而言之,$(l:patterns/patterns_as_iotas#hexcasting:runtime_escape)$(action)深思/$和$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$能将一个图案加到栈中,$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$能加入一整个列表,$(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)消解/$则能撤销创建列表途中犯的错误。", + runtime_escape: { + "1": "要使用$(l:patterns/patterns_as_iotas#hexcasting:runtime_escape)$(action)深思/$,先绘制它,然后绘制任意图案。第二个图案就会被加到栈中。", + "2": "如果对计算机科学有足够了解的话,你可能能将其与“转义”/“escape”操作联系起来。$(br2)此图案的一大用途是将某一图案复制到$(l:items/scroll)$(item)卷轴/$或$(l:items/slate)$(item)石板/$上,且要和$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$配合使用。这之后卷轴和石板就能拿来装饰了。", }, parens: { - "1": "绘制$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$会让这之后绘制的图案不再与操作联系。而在绘制$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)反思/$后,之前绘制的图案就会作为一个列表加到栈中。", + "1": "绘制$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$会让这之后绘制的图案不再与操作联系。而在绘制$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$后,之前绘制的图案就会作为一个列表加到栈中。", "2": "如果绘制内省后再绘制一个$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)内省/$,则它也将被加到列表中,而且需绘制$(italic)两次/$$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$才能回到正常施法模式。", }, - undo: "最后,若在$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$之间有图案绘制错误,则可绘制$(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)消解/$以移除图案列表中的最后绘制的图案。", + undo: "最后,若在$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$之间有图案绘制错误,可绘制$(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)消解/$以移除图案列表中的最后绘制的图案。", + escape: "和$(l:patterns/patterns_as_iotas#hexcasting:runtime_escape)$(action)深思/$类似,但在$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$之间也能正常运作。它可以“转义”$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$之间的其他图案,将这些图案压栈,而不产生任何其他效果。", further_notes: { title: "更多笔记", - "1": "在绘制$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$前绘制一个$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$,就能绕过它们的特殊功能,并将它们作为普通图案加到栈中,且不会影响返回正常施法模式前要绘制的$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$个数。$(br2)如果在$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省中/$连续绘制两个$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$,只有第一个$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$会被加到栈中。", + "1": "由于$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$会在$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$间立即生效,如要向列表加入$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$本身,就应绘制两遍。第一个$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$会转义第二个,绕过它的特殊功能。$(br2)$(l:patterns/patterns_as_iotas#hexcasting:runtime_escape)$(action)深思/$则不同,无论嵌套深度如何都只需要绘制一遍。", "2": "如果$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$或者其他元运行图案运行的列表中出现了图案之外的 iota,那么通常来说会招致事故。但是,这种事故也可用本节中写到的图案规避。$(br2)本节中的图案可以“转义”图案 iota,也一样能“转义”$(o)任意一种 iota$()。运行到这些 iota 时,它们只会被压入栈中,而不会招致事故。", - "3": "我要是想让$(hex)咒术/$直接引用特定的 iota——比如复杂向量、对实体的引用等——而不在每次运行时都从头开始构造或获取,这一技术会很有用。$(br2)把这类 iota 加入列表的过程可能会比较复杂。最简单的方法是在组装列表时绘制占位图案,然后用$(l:patterns/lists#hexcasting:replace)$(action)外科医师之提整/$替换成所需的 iota。", + "3": "我要是想让$(hex)咒术/$直接引用特定的 iota——比如复杂向量、对实体的引用等——而不在每次运行时都从头开始构造或获取,这一技术会很有用。$(br2)把这类 iota 加入列表的过程可能会比较复杂。可以在创建列表时使用$(l:patterns/advanced_escaping#hexcasting:read_into_parens)$(action)插嵌/$;或也可使用占位图案,再在创建完成后通过$(l:patterns/lists#hexcasting:replace)$(action)外科医师之提整/$替换。", }, }, + advanced_escaping: { + "1": "$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$很有用,但复杂的$(hex)咒术/$可能会需要更高阶的操作。$(br2)本节介绍的就是这种高阶操作:$(l:patterns/advanced_escaping#hexcasting:read_into_parens)$(action)插嵌/$可以直接向运行中的列表插入 iota,$(l:patterns/advanced_escaping#hexcasting:open_n_parens)$(action)冥想/$和$(l:patterns/advanced_escaping#hexcasting:close_all_parens)$(action)回想/$则可分别开始和结束任意嵌套深度的列表创建。", + read_into_parens: "只在$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$时可用。从我的副手读取 iota,将其插入正在运行的列表。非图案 iota 可能需要$(l:patterns/patterns_as_iotas#iota_embedding)$(action)特殊措施/$才能在执行列表时规避事故。", + open_n_parens: "移除栈顶数,并视为绘制了该数个$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$。在$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$时和普通图案表现一致,在多层嵌套中绘制额外的$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$可能会需要一定的$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)技巧/$。", + close_all_parens: "和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$一致,但会一次性关闭$(italic)所有/$$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$。执行后会向栈中加入退出的总层数和编写的整个列表。", + }, + readwrite: { "1": "这一章节主要记述有关将 $(thing)iota/$ 写入永久性介质中的知识。几乎所有 iota 都可被写入合适的物品中,例如$(l:items/focus)$(item)核心/$和$(l:items/spellbook)$(item)法术书/$,而后可以将它们读出来。而某些物品,例如$(l:items/abacus)$(item)算盘/$,则只能被读取。$(br2)一般可从另一只手中的物品中读取或写入 iota。但若将物品丢出为物品实体,或是放在物品展示框中,则也可读取或写入。", "2": "我还能对其他实体执行上述两种操作。例如,可从一张壁挂$(l:items/scroll)$(item)卷轴/$中读出图案。$(br2)然而,貌似写入代表其他玩家的 iota 是不被允许的,只有我自己的能写入。我认为这和“真名”类似。也许是自然在阻止我们的真名落入敌手。如果我想把我的真名交给朋友,做个$(l:items/focus)$(item)核心/$给他们就好了。", @@ -1930,25 +2048,25 @@ writable: "如果能将 iota 写入另一只手中的物品,返回 True。否则返回 False。", "writable/entity": "与$(l:patterns/readwrite#hexcasting:writable)$(action)估价员之精思/$类似,但会检测实体可写性,而非手中物品。", "local.title": "渡鸦之思", - local: "物品不是唯一一个能写入信息的地方,我也可以将其存到$(hex)咒术/$自身的$(media)媒质/$里,就和栈差不多。文献将其称为$(l:patterns/readwrite#hexcasting:local)$(thing)渡鸦之思/$。它能存有一个 iota,默认为 $(l:casting/influences)$(thing)Null/$,和$(l:items/focus)$(item)核心/$差不多。它在每次使用$(l:patterns/meta#hexcasting:for_each)$(action)托特之策略/$后保持不变,但也只能撑到$(hex)咒术/$结束。一旦施法结束,其值就会被清除。", + local: "物品不是唯一一个能写入信息的地方,我也可以将其存到$(hex)咒术/$自身的$(media)媒质/$里,就和栈差不多。文献将其称为$(l:patterns/readwrite#hexcasting:local)$(thing)渡鸦之思/$。它能存有一个 iota,默认为 $(thing)Null/$,和$(l:items/focus)$(item)核心/$差不多。它在每次使用$(l:patterns/meta#hexcasting:for_each)$(action)托特之策略/$后保持不变,但也只能撑到$(hex)咒术/$结束。一旦施法结束,其值就会被清除。", "write/local": "移除栈顶 iota,并将其写入$(l:patterns/readwrite#hexcasting:local)$(thing)渡鸦之思/$,在施放$(hex)咒术/$的整个过程结束之前一直存在那里。", "read/local": "将$(l:patterns/readwrite#hexcasting:local)$(thing)渡鸦之思/$中的 iota 复制出来。(也许刚刚才用$(l:patterns/readwrite#hexcasting:write/local)$(action)福金之策略/$写进去。)", }, meta: { - "eval.1": "移除栈顶的图案列表,然后就像我用$(l:items/staff)$(item)法杖/$施法一样依次运行(直到碰到$(l:patterns/meta#hexcasting:halt)$(action)卡戎之策略/$)。如果一个 iota 已用$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$或$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)类似手段/$作为图案加入栈中,那么该 iota 将在运行时被加到栈中。否则其将在非图案元素运行失败。", - "eval.2": "若与$(l:items/focus)$(item)核心/$同时使用,它将提供$(italic)极为/$强大的操控能力。$(br2)据我找到的一张奇特卷轴所称,它还将自然的咒法体系变为了一个“图灵完备”的系统。$(br2)然而,$(hex)咒术/$能重复执行自身的次数是有限的——自然不会对失控的法术手软的!$(br2)此外,由于这些图案产生的能量缺乏我的引导,任何失误都会导致后续操作变得极不稳定,以至于立即瓦解。", + "eval.1": "移除栈顶的可运行 iota(通常是图案或$(l:casting/whats_a_hex)整条$(hex)咒术/$),然后就像我用$(l:items/staff)$(item)法杖/$绘制施法一样运行。", + "eval.2": "若与$(l:items/focus)$(item)核心/$同时使用,它将提供极为强大的操控能力。据我找到的一张晦涩卷轴所称,它还将自然的咒法体系变为了一个“图灵完备”的系统。$(br2)需注意,此时$(hex)咒术/$中的非图案 iota 会招致事故,除非预先进行$(l:patterns/patterns_as_iotas)$(action)转义/$。此外,由于这些图案产生的能量缺乏我的引导,$(o)任何/$失误都会导致$(hex)咒术/$的后续操作立即瓦解。", - "for_each.1": "移除栈中的一个图案列表和一个列表,然后对后一列表中的每个元素运行前一图案列表中的图案。", - "for_each.2": "更确切地说,对应后一列表中的每个元素,它将:$(li)创建一个新栈,其中包括当前栈中的所有元素和后一列表中的一个元素。$(li)绘制前一列表中的所有图案。$(li)将该栈中剩余的所有元素存进一个列表。$(br)在所有元素都运行一遍后,将该列表压入原本的栈中。$(br2)也难怪精通此操作的人都疯了。", + "for_each.1": "移除栈中的可运行 iota 和一个列表,然后对列表中的每个元素运行所给的可运行 iota。", + "for_each.2": "更确切地说,对于列表中的每个元素,它将:$(li)创建一个新栈,其中包括当前栈中的所有元素和后一列表中的一个元素。$(li)施放可运行 iota。$(li)将该栈中剩余的所有元素存进一个列表。$(br)在所有元素都运行一遍后,将该列表压入原本的栈中。$(br2)也难怪精通此操作的人都疯了。", "halt.1": "这个图案将强制停止$(hex)咒术/$的施放。它独自出现可能没什么用,我只要不绘制图案或是放下法杖就行了。", "halt.2": "但当与$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$或$(l:patterns/meta#hexcasting:for_each)$(action)托特之策略/$一起使用时,它就将发挥$(italic)大/$用。那些图案会碰到这个休止符,但$(hex)咒术/$本身不会停止,停止运行的是那些策略。它可以用来防止$(l:patterns/meta#hexcasting:for_each)$(action)托特之策略/$将每个 iota 都运行一遍。这便是逃离疯狂的秘道。", - "eval/cc.1": "此图案和$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$类似,也能运行图案或依次运行图案列表,但会在开始之前将一独特的“跳转” iota 压入栈中。", - "eval/cc.2": "当执行至“跳转” iota 时,法术会直接跳过图案列表中剩余的图案至列表尾部。$(p)当然因为已经有了$(l:patterns/meta#hexcasting:halt)$(action)卡戎之策略/$,这种性质难免显得有些冗余。不过它能以可控方式退出$(italic)多层嵌套/$调用的$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$,而卡戎之策略只能退出一层。$(p)“跳转”iota 甚至会在所有策略都执行完毕后还留在栈上……真是细思恐极。", + "eval/cc.1": "此图案和$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$类似,也能运行可运行 iota,但会在开始之前将一独特的“跳转” iota 压入栈中。", + "eval/cc.2": "当执行至“跳转” iota 时,法术会直接跳至可运行 iota 的尾部,略过剩余的所有操作。$(p)当然因为已经有了$(l:patterns/meta#hexcasting:halt)$(action)卡戎之策略/$,这种性质难免显得有些冗余。不过它能以可控方式退出$(italic)多层嵌套/$调用的$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$,而卡戎之策略只能退出一层。$(p)“跳转”iota 甚至会在所有策略都执行完毕后还留在栈上……真是细思恐极。", - "thanatos.1": "将$(hex)咒术/$仍能运行的图案数压入列表。每运行一个图案,所得数即减少 1。" + "thanatos.1": "单个$(hex)咒术/$能运行的图案数量似乎存在上限。此图案可将仍可运行的图案数压入列表。" }, circle_patterns: { @@ -2012,15 +2130,15 @@ }, hexcasting_spell: { - basics: "这三个法术都能制作$(l:items/hexcasting)$(thing)用于施放$(hex)咒术/$的物品/$。$(br)它们都要求我在另一只手上手持对应的基础物品,并且需提供两个参数:需运行的图案和一个用作储库的$(l:items/amethyst)$(item)紫水晶/$物品实体。$(br2)详情参见$(l:items/hexcasting)此条目/$。", + basics: "这三个法术都能制作$(l:items/hexcasting)$(thing)用于施放$(hex)咒术/$的物品/$。$(br)它们都要求我在另一只手上手持对应的基础物品,并且需提供两个参数:需运行的列表(通常是图案列表)和一个用作储库的$(l:items/amethyst)$(item)紫水晶/$物品实体。$(br2)详情参见$(l:items/hexcasting)此条目/$。", "craft/cypher": "消耗大约 1 个$(l:items/amethyst)$(item)充能紫水晶/$。", "craft/trinket": "消耗大约 5 个$(l:items/amethyst)$(item)充能紫水晶/$。", "craft/artifact": "消耗大约 10 个$(l:items/amethyst)$(item)充能紫水晶/$。", - "recharge.1": "给另一只手中能装$(media)媒质/$的物品重新充能。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶碎片/$。", + "recharge.1": "给另一只手中能装$(media)媒质/$的物品重新充能。每个物品消耗大约 1 个$(l:items/amethyst)$(item)紫水晶碎片/$。", "recharge.2": "此法术的施放方式和制作施法物品所用法术的类似。提供一个$(l:items/amethyst)$(item)紫水晶/$物品实体,就能给另一只手中物品的$(media)媒质/$储库重新充能。$(br2)此法术$(italic)不能/$充入超过储库大小的媒质。", - "erase.1": "清除另一只手中写有$(hex)咒术/$的物品。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "erase.1": "清除另一只手中写有$(hex)咒术/$或存有 iota 的物品。每个物品消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", "erase.2": "此法术也会清除物品内存储的$(media)媒质/$,将其释放给自然并将物品恢复到其初始状态。如此就能回收利用容易出错的$(l:items/hexcasting)$(item)缀品/$了。$(br2)此法术也能清除$(l:items/focus)$(item)核心/$和$(l:items/spellbook)$(item)法术书/$书页内容,同时去除其上密封。", }, @@ -2030,23 +2148,23 @@ "sentinel/create": "在给定位置召唤$(l:patterns/spells/sentinels)$(thing)哨卫/$。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", "sentinel/destroy": "将我的$(l:patterns/spells/sentinels)$(thing)哨卫/$从世界中驱除出去。消耗极少量$(media)媒质/$。", - "sentinel/get_pos": "将我的$(l:patterns/spells/sentinels)$(thing)哨卫/$的位置加到栈中,若并未召唤则加入一个 $(l:casting/influences)$(thing)Null/$。消耗极少量$(media)媒质/$。", - "sentinel/wayfind": "将栈顶的位置向量变为从我的位置指向$(l:patterns/spells/sentinels)$(thing)哨卫/$的单位向量,若并未召唤则变为 $(l:casting/influences)$(thing)Null/$。消耗极少量$(media)媒质/$。", + "sentinel/get_pos": "将我的$(l:patterns/spells/sentinels)$(thing)哨卫/$的位置加到栈中,若并未召唤则加入一个 $(thing)Null/$。消耗极少量$(media)媒质/$。", + "sentinel/wayfind": "将栈顶的位置向量变为从我的位置指向$(l:patterns/spells/sentinels)$(thing)哨卫/$的单位向量,若并未召唤则变为 $(thing)Null/$。消耗极少量$(media)媒质/$。", }, colorize: "施法时需要在另一只手中持有$(l:items/pigments)$(item)染色剂/$。施法后,染色剂将被消耗,而我意识的颜色也将永久改变(至少是在再次施法前)。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", - cycle_variant: "我制造的一些物品极易受$(media)媒质/$的影响。另一只手持有$(l:items/hexcasting)$(item)杂件/$、$(l:items/hexcasting)$(item)缀品/$、$(l:items/hexcasting)$(item)造物/$、$(l:items/focus)$(item)核心/$、$(l:items/spellbook)$(item)法术书/$时,可以使用此法术更改它们的外表。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + cycle_variant: "我制造的一些物品极易受$(media)媒质/$的影响。另一只手持有$(l:items/hexcasting)$(item)杂件/$、$(l:items/hexcasting)$(item)缀品/$、$(l:items/hexcasting)$(item)造物/$、$(l:items/focus)$(item)核心/$、$(l:items/spellbook)$(item)法术书/$时,可以使用此法术更改它们的外表。消耗极少量$(media)媒质/$。", flights: { "1": "尽管无法掌握自由飞行的力量,我还是找到了若干能将物体滞空的方法,但各种方法各有缺陷。$(br2)所有种类的飞行法术都会产生微量多余$(media)媒质/$。在法术效果将要结束时,其会产生越来越多红色和黑色的火花。", "2": "当然,也有其他种类的飞行法术。例如,将$(l:patterns/spells/basic#hexcasting:add_motion)$(action)驱动/$和$(l:patterns/spells/nadirs#hexcasting:potion/levitation)$(action)蓝阳西沉/$结合使用的类飞行技术自古代起就多有运用。$(br2)我还听说过一种能给予滑翔能力的,可以穿在背上的薄透翼膜。研究表明,被称为“$(l:patterns/great_spells/altiora)$(action)翱翔/$”的卓越法术也许能模仿这种翼膜的功用。", "range.1": "受范围限制的飞行法术。", - "range.2": "第二参数代表水平方向上的半径(以米计),在此范围内,法术能保持稳定。走出该范围就会结束该法术,滞空的物体会直接坠向地面。但只要一直待在这个范围内,法术的效果便会无限持续。此法术还会额外产生微量$(media)媒质/$用以标记安全区域中心点。$(br2)每米安全范围消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "range.2": "第二参数代表水平方向上的半径(以米计),在此范围内,法术能保持稳定。走出该范围就会结束该法术,滞空的物体会直接坠向地面。但只要一直待在这个范围内,法术的效果便会无限持续。此法术还会额外产生微量$(media)媒质/$用以标记安全区域中心点。$(br2)每米安全范围消耗大约 2 个$(l:items/amethyst)$(item)紫水晶粉/$,即便范围半径小于 1 米也仍会消耗 2 个$(l:items/amethyst)$(item)紫水晶粉/$。", "time.1": "受时间限制的飞行法术。", - "time.2": "第二参数代表持续时间(以秒计),在此限制内,法术能保持稳定。持续时间超过限制就会结束该法术,滞空的物体会直接坠向地面。$(br2)此法术相对较昂贵,每秒持续时间消耗大约 1 个$(l:items/amethyst)$(item)紫水晶碎片/$。我觉得它极其适合长途旅行。", + "time.2": "第二参数代表持续时间(以秒计),在此限制内,法术能保持稳定。持续时间超过限制就会结束该法术,滞空的物体会直接坠向地面。$(br2)每秒持续时间消耗大约 2 个$(l:items/amethyst)$(item)紫水晶粉/$。我觉得它极其适合长途旅行。", // Putting this in this category instead of elsewhere -- see sentinel chapter also containing some reflections/nonspells "can_fly.1": "检查玩家是否处于$(l:patterns/spells/flight#hexcasting:flight/range)隐士之飞行/$或$(l:patterns/spells/flight#hexcasting:flight/time)旅者之飞行/$的影响之下。", @@ -2070,8 +2188,8 @@ }, "teleport/great": { - "1": "比$(l:patterns/spells/basic#hexcasting:blink)$(action)闪现/$更为强大,此法术能让我传送到世界上几乎任何一处!当然它也有极限,但可比我熟悉的施法距离要远得$(italic)多/$。", - "2": "实体会被移动至所给向量处。奇怪的是,这个向量似乎代表了偏差值,而非世界中的绝对位置;比如,使用$(l:patterns/consts#hexcasting:const/vec/x)$(action)向量之精思,+X 型/$时,目标实体会被传送到原有位置恰好 1 格以东处。它似乎一直会消耗大约 10 个$(l:items/amethyst)$(item)充能紫水晶/$,不论传送距离。$(br2)当然这种传送也不是尽善尽美的,在传送如玩家般复杂的实体时,实体身上的物品就不会$(italic)非常/$安稳了,它们可能会散落在目的地周围。还有,传送的实体将会被强制从其所乘坐的无生命载具中卸下……但我曾读到过动物可以一起被传送,大概吧。", + "1": "此法术比$(l:patterns/spells/basic#hexcasting:blink)$(action)闪现/$更加强大,能将实体传送到世界上几乎任何一处!没有距离限制,它似乎需要消耗大约 10 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "2": "所给向量代表偏移量,而非世界中的绝对位置;比如,使用 (1, 0, 0) 时,目标实体会被传送到原有位置恰好 1 格以东处。$(br2)当然这种传送也不是尽善尽美的,在传送我自己时,我便难以保持十足的专注。这可能会导致我身上的部分物品散落在目的地周围。$(br2)还有,传送的实体将会被强制从其所乘坐的无生命载具中卸下……但我曾读到过动物可以一起被传送,大概吧。", }, zeniths: { diff --git a/projects/assets/hexcasting/1.20/hexcasting/lang/zh_cn.json b/projects/assets/hexcasting/1.20/hexcasting/lang/zh_cn.json new file mode 100644 index 000000000000..ce42c392d605 --- /dev/null +++ b/projects/assets/hexcasting/1.20/hexcasting/lang/zh_cn.json @@ -0,0 +1,1388 @@ +{ + "item.hexcasting.book": "咒术笔记", + "item.hexcasting.staff.oak": "橡木法杖", + "item.hexcasting.staff.spruce": "云杉木法杖", + "item.hexcasting.staff.birch": "白桦木法杖", + "item.hexcasting.staff.jungle": "丛林木法杖", + "item.hexcasting.staff.acacia": "金合欢木法杖", + "item.hexcasting.staff.dark_oak": "深色橡木法杖", + "item.hexcasting.staff.crimson": "绯红木法杖", + "item.hexcasting.staff.warped": "诡异木法杖", + "item.hexcasting.staff.mangrove": "红树木法杖", + "item.hexcasting.staff.cherry": "樱花木法杖", + "item.hexcasting.staff.bamboo": "竹法杖", + "item.hexcasting.staff.edified": "启迪木法杖", + "item.hexcasting.staff.quenched": "淬灵晶法杖", + "item.hexcasting.staff.mindsplice": "剖念法杖", + "item.hexcasting.amethyst_dust": "紫水晶粉", + "item.hexcasting.charged_amethyst": "充能紫水晶", + "item.hexcasting.quenched_allay_shard": "淬灵晶碎片", + "item.hexcasting.scroll_small": "小型卷轴", + "item.hexcasting.scroll_small.of": "是如何拿到此%s卷轴的", + "item.hexcasting.scroll_small.empty": "空白小型卷轴", + "item.hexcasting.scroll_medium": "中型卷轴", + "item.hexcasting.scroll_medium.of": "是如何拿到此%s卷轴的", + "item.hexcasting.scroll_medium.empty": "空白中型卷轴", + "item.hexcasting.scroll": "大型卷轴", + "item.hexcasting.scroll.of": "%s之远古卷轴", + "item.hexcasting.scroll.empty": "空白大型卷轴", + "item.hexcasting.focus": "核心", + "item.hexcasting.focus.sealed": "密封核心", + "item.hexcasting.ancient_cypher": "远古杂件", + "item.hexcasting.ancient_cypher.preset": "远古杂件:%s", + "item.hexcasting.thought_knot": "结念绳", + "item.hexcasting.spellbook": "法术书", + "item.hexcasting.cypher": "杂件", + "item.hexcasting.trinket": "缀品", + "item.hexcasting.artifact": "造物", + "item.hexcasting.battery": "媒质之瓶", + "item.hexcasting.lens": "探知透镜", + "item.hexcasting.abacus": "算盘", + "item.hexcasting.jeweler_hammer": "珠宝匠锤", + "item.hexcasting.sub_sandwich": "潜艇三明治", + "item.hexcasting.dye_colorizer_white": "白色染色剂", + "item.hexcasting.dye_colorizer_orange": "橙色染色剂", + "item.hexcasting.dye_colorizer_magenta": "品红色染色剂", + "item.hexcasting.dye_colorizer_light_blue": "淡蓝色染色剂", + "item.hexcasting.dye_colorizer_yellow": "黄色染色剂", + "item.hexcasting.dye_colorizer_lime": "黄绿色染色剂", + "item.hexcasting.dye_colorizer_pink": "粉红色染色剂", + "item.hexcasting.dye_colorizer_gray": "灰色染色剂", + "item.hexcasting.dye_colorizer_light_gray": "淡灰色染色剂", + "item.hexcasting.dye_colorizer_cyan": "青色染色剂", + "item.hexcasting.dye_colorizer_purple": "紫色染色剂", + "item.hexcasting.dye_colorizer_blue": "蓝色染色剂", + "item.hexcasting.dye_colorizer_brown": "棕色染色剂", + "item.hexcasting.dye_colorizer_green": "绿色染色剂", + "item.hexcasting.dye_colorizer_red": "红色染色剂", + "item.hexcasting.dye_colorizer_black": "黑色染色剂", + "item.hexcasting.pride_colorizer_agender": "无性别染色剂", + "item.hexcasting.pride_colorizer_aroace": "无浪漫倾向无性恋染色剂", + "item.hexcasting.pride_colorizer_aromantic": "无浪漫倾向染色剂", + "item.hexcasting.pride_colorizer_asexual": "无性恋染色剂", + "item.hexcasting.pride_colorizer_bisexual": "双性恋染色剂", + "item.hexcasting.pride_colorizer_demiboy": "部分男性染色剂", + "item.hexcasting.pride_colorizer_demigirl": "部分女性染色剂", + "item.hexcasting.pride_colorizer_gay": "男同性恋染色剂", + "item.hexcasting.pride_colorizer_genderfluid": "性别流体染色剂", + "item.hexcasting.pride_colorizer_genderqueer": "性别酷儿染色剂", + "item.hexcasting.pride_colorizer_intersex": "双性人染色剂", + "item.hexcasting.pride_colorizer_lesbian": "女同性恋染色剂", + "item.hexcasting.pride_colorizer_nonbinary": "非二元性别染色剂", + "item.hexcasting.pride_colorizer_pansexual": "泛性恋染色剂", + "item.hexcasting.pride_colorizer_plural": "多重人格染色剂", + "item.hexcasting.pride_colorizer_transgender": "跨性别染色剂", + "item.hexcasting.uuid_colorizer": "灵魂闪光染色剂", + "item.hexcasting.default_colorizer": "空无染色剂", + "item.hexcasting.ancient_colorizer": "远古染色剂", + "item.hexcasting.creative_unlocker": "媒质立方", + "item.hexcasting.creative_unlocker.for_emphasis": "无限媒质", + "item.hexcasting.creative_unlocker.tooltip": "食用以解锁所有有关%s的知识。", + "item.hexcasting.creative_unlocker.mod_name": "咒法学", + "item.hexcasting.lore_fragment": "故事残卷", + "item.hexcasting.lore_fragment.all": "似乎我已找齐了此世界上的所有故事。", + "entity.hexcasting.wall_scroll": "壁挂卷轴", + "block.hexcasting.conjured_light": "构筑的光源", + "block.hexcasting.conjured_block": "构筑的方块", + "block.hexcasting.directrix.empty": "空白导向石", + "block.hexcasting.directrix.redstone": "石匠导向石", + "block.hexcasting.directrix.boolean": "牧羊人导向石", + "block.hexcasting.impetus.empty": "空白促动石", + "block.hexcasting.impetus.rightclick": "工具匠促动石", + "block.hexcasting.impetus.look": "制箭师促动石", + "block.hexcasting.impetus.redstone": "牧师促动石", + "block.hexcasting.akashic_record": "阿卡夏记录", + "block.hexcasting.akashic_bookshelf": "阿卡夏书架", + "block.hexcasting.akashic_connector": "阿卡夏桥接块", + "block.hexcasting.slate": "石板", + "block.hexcasting.slate.blank": "空白石板", + "block.hexcasting.slate.written": "有图案的石板", + "block.hexcasting.slate_block": "板岩块", + "block.hexcasting.slate_tiles": "板岩瓦", + "block.hexcasting.slate_bricks": "板岩砖", + "block.hexcasting.slate_bricks_small": "板岩小型砖", + "block.hexcasting.slate_pillar": "板岩柱", + "block.hexcasting.amethyst_dust_block": "紫水晶粉块", + "block.hexcasting.amethyst_tiles": "紫水晶瓦", + "block.hexcasting.amethyst_bricks": "紫水晶砖", + "block.hexcasting.amethyst_bricks_small": "紫水晶小型砖", + "block.hexcasting.amethyst_pillar": "紫水晶柱", + "block.hexcasting.slate_amethyst_tiles": "板岩紫晶瓦", + "block.hexcasting.slate_amethyst_bricks": "板岩紫晶砖", + "block.hexcasting.slate_amethyst_bricks_small": "板岩紫晶小型砖", + "block.hexcasting.slate_amethyst_pillar": "板岩紫晶柱", + "block.hexcasting.scroll_paper": "纸卷轴", + "block.hexcasting.ancient_scroll_paper": "远古纸卷轴", + "block.hexcasting.scroll_paper_lantern": "纸灯笼", + "block.hexcasting.ancient_scroll_paper_lantern": "远古纸灯笼", + "block.hexcasting.amethyst_sconce": "紫水晶灯台", + "block.hexcasting.edified_log": "启迪原木", + "block.hexcasting.edified_log_amethyst": "晶紫启迪原木", + "block.hexcasting.edified_log_aventurine": "砂蓝启迪原木", + "block.hexcasting.edified_log_citrine": "晶黄启迪原木", + "block.hexcasting.edified_log_purple": "紫色启迪原木", + "block.hexcasting.edified_wood": "启迪木", + "block.hexcasting.edified_planks": "启迪木板", + "block.hexcasting.edified_panel": "启迪木块", + "block.hexcasting.edified_tile": "启迪木方砖", + "block.hexcasting.edified_door": "启迪木门", + "block.hexcasting.edified_trapdoor": "启迪木活板门", + "block.hexcasting.edified_stairs": "启迪木楼梯", + "block.hexcasting.edified_slab": "启迪木台阶", + "block.hexcasting.edified_button": "启迪木按钮", + "block.hexcasting.edified_pressure_plate": "启迪木压力板", + "block.hexcasting.edified_fence": "启迪木栅栏", + "block.hexcasting.edified_fence_gate": "启迪木栅栏门", + "block.hexcasting.stripped_edified_log": "去皮启迪原木", + "block.hexcasting.stripped_edified_wood": "去皮启迪木", + "block.hexcasting.amethyst_edified_leaves": "晶紫启迪树叶", + "block.hexcasting.aventurine_edified_leaves": "砂蓝启迪树叶", + "block.hexcasting.citrine_edified_leaves": "晶黄启迪树叶", + "block.hexcasting.quenched_allay": "淬灵晶块", + "block.hexcasting.quenched_allay_tiles": "淬灵晶瓦", + "block.hexcasting.quenched_allay_bricks": "淬灵晶砖", + "block.hexcasting.quenched_allay_bricks_small": "淬灵晶小型砖", + "effect.hexcasting.enlarge_grid": "明晰", + "effect.hexcasting.shrink_grid": "蒙翳", + "item.minecraft.potion.effect.enlarge_grid": "明晰药水", + "item.minecraft.potion.effect.enlarge_grid_long": "明晰药水", + "item.minecraft.potion.effect.enlarge_grid_strong": "明晰药水", + "item.minecraft.potion.effect.shrink_grid": "蒙翳药水", + "item.minecraft.potion.effect.shrink_grid_long": "蒙翳药水", + "item.minecraft.potion.effect.shrink_grid_strong": "蒙翳药水", + "item.minecraft.splash_potion.effect.enlarge_grid": "喷溅型明晰药水", + "item.minecraft.splash_potion.effect.enlarge_grid_long": "喷溅型明晰药水", + "item.minecraft.splash_potion.effect.enlarge_grid_strong": "喷溅型明晰药水", + "item.minecraft.splash_potion.effect.shrink_grid": "喷溅型蒙翳药水", + "item.minecraft.splash_potion.effect.shrink_grid_long": "喷溅型蒙翳药水", + "item.minecraft.splash_potion.effect.shrink_grid_strong": "喷溅型蒙翳药水", + "item.minecraft.lingering_potion.effect.enlarge_grid": "滞留型明晰药水", + "item.minecraft.lingering_potion.effect.enlarge_grid_long": "滞留型明晰药水", + "item.minecraft.lingering_potion.effect.enlarge_grid_strong": "滞留型明晰药水", + "item.minecraft.lingering_potion.effect.shrink_grid": "滞留型蒙翳药水", + "item.minecraft.lingering_potion.effect.shrink_grid_long": "滞留型蒙翳药水", + "item.minecraft.lingering_potion.effect.shrink_grid_strong": "滞留型蒙翳药水", + "item.minecraft.tipped_arrow.effect.enlarge_grid": "明晰之箭", + "item.minecraft.tipped_arrow.effect.enlarge_grid_long": "明晰之箭", + "item.minecraft.tipped_arrow.effect.enlarge_grid_strong": "明晰之箭", + "item.minecraft.tipped_arrow.effect.shrink_grid": "蒙翳之箭", + "item.minecraft.tipped_arrow.effect.shrink_grid_long": "蒙翳之箭", + "item.minecraft.tipped_arrow.effect.shrink_grid_strong": "蒙翳之箭", + "itemGroup.hexcasting.hexcasting": "咒法学", + "itemGroup.hexcasting.scrolls": "咒法学丨卷轴", + "gui.hexcasting.spellcasting": "咒术网格", + "category.hexcasting.binds": "咒法学", + "key.hexcasting.spellbook_prev": "法术书上一页", + "key.hexcasting.spellbook_next": "法术书下一页", + "tag.hexcasting.staves": "咒术法杖", + "tag.hexcasting.edified_logs": "启迪木", + "tag.hexcasting.edified_planks": "启迪木板", + "tag.hexcasting.phial_base": "空试剂瓶", + "tag.item.hexcasting.brainswept_circle_components": "剥离意识所得法术环组件", + "tag.item.hexcasting.directrices": "导向石", + "tag.item.hexcasting.grants_root_advancement": "给予根进度", + "tag.item.hexcasting.impeti": "促动石", + "tag.item.hexcasting.seal_materials": "密封材料", + "emi.category.hexcasting.brainsweep": "剥离意识", + "emi.category.hexcasting.craft.battery": "制作试剂瓶", + "emi.category.hexcasting.edify": "启迪树苗", + "emi.category.hexcasting.villager_leveling": "职业等级", + "emi.category.hexcasting.villager_profession": "村民职业", + "text.autoconfig.hexcasting.title": "咒法学(Hexcasting)配置", + "text.autoconfig.hexcasting.category.common": "通用", + "text.autoconfig.hexcasting.category.client": "客户端", + "text.autoconfig.hexcasting.category.server": "服务端", + "text.autoconfig.hexcasting.option.common.dustMediaAmount": "紫水晶粉媒质含量", + "text.autoconfig.hexcasting.option.common.dustMediaAmount.@Tooltip": "单个紫水晶粉所含媒质量", + "text.autoconfig.hexcasting.option.common.shardMediaAmount": "紫水晶碎片媒质含量", + "text.autoconfig.hexcasting.option.common.shardMediaAmount.@Tooltip": "单个紫水晶碎片所含媒质量", + "text.autoconfig.hexcasting.option.common.chargedCrystalMediaAmount": "充能紫水晶媒质含量", + "text.autoconfig.hexcasting.option.common.chargedCrystalMediaAmount.@Tooltip": "单个充能紫水晶所含媒质量", + "text.autoconfig.hexcasting.option.common.mediaToHealthRate": "媒质与生命值交换比率", + "text.autoconfig.hexcasting.option.common.mediaToHealthRate.@Tooltip": "1点生命值可在施法时换算的媒质量", + "text.autoconfig.hexcasting.option.common.cypherCooldown": "杂件使用冷却", + "text.autoconfig.hexcasting.option.common.cypherCooldown.@Tooltip": "杂件使用冷却刻(tick)数", + "text.autoconfig.hexcasting.option.common.trinketCooldown": "缀品使用冷却", + "text.autoconfig.hexcasting.option.common.trinketCooldown.@Tooltip": "缀品使用冷却刻(tick)数", + "text.autoconfig.hexcasting.option.common.artifactCooldown": "造物使用冷却", + "text.autoconfig.hexcasting.option.common.artifactCooldown.@Tooltip": "造物使用冷却刻(tick)数", + "text.autoconfig.hexcasting.option.client.ctrlTogglesOffStrokeOrder": "Ctrl关闭笔顺显示", + "text.autoconfig.hexcasting.option.client.ctrlTogglesOffStrokeOrder.@Tooltip": "按下Ctrl键时*关闭*图案渐变显示,而非按下时打开", + "text.autoconfig.hexcasting.option.client.disableInworldScrolling": "禁用世界中滚轮操作", + "text.autoconfig.hexcasting.option.client.disableInworldScrolling.@Tooltip": "禁用正常世界中法术书和算盘的滚轮输入操作,确保对应键位和法杖界面滚轮操作的功能符合预期", + "text.autoconfig.hexcasting.option.client.invertSpellbookScrollDirection": "反转法术书滚轮方向", + "text.autoconfig.hexcasting.option.client.invertSpellbookScrollDirection.@Tooltip": "向上滚动滚轮(而非向下)增加法术书当前页页码,反之亦然", + "text.autoconfig.hexcasting.option.client.invertAbacusScrollDirection": "反转算盘滚轮方向", + "text.autoconfig.hexcasting.option.client.invertAbacusScrollDirection.@Tooltip": "向上滚动滚轮(而非向下)增加算盘计数,反之亦然", + "text.autoconfig.hexcasting.option.client.gridSnapThreshold": "咒术网格吸附阈值", + "text.autoconfig.hexcasting.option.client.gridSnapThreshold.@Tooltip": "使用法杖时,吸附至另一点所需划过的距离,0.5意味着需划过50%(取值0.5~1)", + "text.autoconfig.hexcasting.option.client.clickingTogglesDrawing": "单击切换绘制与否", + "text.autoconfig.hexcasting.option.client.clickingTogglesDrawing.@Tooltip": "单击即可开始或结束绘制,无需按住拖动", + "text.autoconfig.hexcasting.option.client.alwaysShowListCommas": "在所有情况下都显示列表逗号", + "text.autoconfig.hexcasting.option.client.alwaysShowListCommas.@Tooltip": "是否用逗号分隔列表中各种类型的iota(默认情况下,图案iota不会使用逗号分隔)", + "text.autoconfig.hexcasting.option.client.advancedTooltipsShowsIotaNBT": "高级提示文本显示iota NBT", + "text.autoconfig.hexcasting.option.client.advancedTooltipsShowsIotaNBT.@Tooltip": "启用高级提示文本(F3+H)时是否应当显示核心、法术书等物品所包含iota的完整NBT", + "text.autoconfig.hexcasting.option.client.staticActiveSlates": "石板激活后静态显示", + "text.autoconfig.hexcasting.option.client.staticActiveSlates.@Tooltip": "石板激活后其上图案是否不会摇晃(有大量激活的石板时能提升性能)", + "text.autoconfig.hexcasting.option.server.opBreakHarvestLevel": "破坏方块挖掘等级", + "text.autoconfig.hexcasting.option.server.opBreakHarvestLevel.@Tooltip": "破坏方块法术的挖掘等级\n0 = 木,1 = 石,2 = 铁,3 = 钻石,4 = 下界合金。", + "text.autoconfig.hexcasting.option.server.maxOpCount": "最大操作数", + "text.autoconfig.hexcasting.option.server.maxOpCount.@Tooltip": "一刻(tick)内能执行的最大操作数,用于避免服务器卡顿。", + "text.autoconfig.hexcasting.option.server.maxSpellCircleLength": "法术环最大长度", + "text.autoconfig.hexcasting.option.server.maxSpellCircleLength.@Tooltip": "法术环所允许含有石板的最大个数", + "text.autoconfig.hexcasting.option.server.actionDenyList": "禁用操作列表", + "text.autoconfig.hexcasting.option.server.actionDenyList.@Tooltip": "被禁用操作的资源位置;试图执行此类操作会导致事故。例如,“hexcasting:get_caster”会禁用意识之精思。", + "text.autoconfig.hexcasting.option.server.globalCostScaling": "全局消耗倍数", + "text.autoconfig.hexcasting.option.server.globalCostScaling.@Tooltip": "除去#hexcasting:cannot_modify_cost标签下的操作,其余操作的媒质消耗均会乘以该数。若希望调整该标签下操作的消耗,请使用“操作消耗倍数”配置。", + "text.autoconfig.hexcasting.option.server.costRescaleListRaw": "操作消耗倍数", + "text.autoconfig.hexcasting.option.server.costRescaleListRaw.@Tooltip": "资源位置与对应操作媒质消耗倍数的映射。例如,“hexcasting:add_motion 3”会让驱动的消耗变为3倍。", + "text.autoconfig.hexcasting.option.server.circleActionDenyList": "法术环禁用操作列表", + "text.autoconfig.hexcasting.option.server.circleActionDenyList.@Tooltip": "法术环中被禁用操作的资源位置;试图执行此类操作会导致事故。", + "text.autoconfig.hexcasting.option.server.greaterTeleportSplatsItems": "卓越传送散落物品", + "text.autoconfig.hexcasting.option.server.greaterTeleportSplatsItems.@Tooltip": "使用卓越传送时,玩家物品栏中的物品是否会飞出", + "text.autoconfig.hexcasting.option.server.doesTrueNameHaveAmbit": "真名是否受影响范围限制", + "text.autoconfig.hexcasting.option.server.doesTrueNameHaveAmbit.@Tooltip": "真名(即对玩家的实体引用)是否可指向在正常影响范围之外的玩家", + "text.autoconfig.hexcasting.option.server.tpDimDenylist": "传送维度黑名单", + "text.autoconfig.hexcasting.option.server.tpDimDenylist.@Tooltip": "禁止传送的维度的资源位置", + "text.autoconfig.hexcasting.option.server.villagersOffendedByMindMurder": "村民会被意识剥除冒犯", + "text.autoconfig.hexcasting.option.server.villagersOffendedByMindMurder.@Tooltip": "村民是否会在其他村民被剥离意识时感到气愤", + "text.autoconfig.hexcasting.option.server.traderScrollChance": "流浪商人交易卷轴概率", + "text.autoconfig.hexcasting.option.server.traderScrollChance.@Tooltip": "流浪商人出售远古卷轴的概率", + "text.autoconfig.hexcasting.option.server.scrollInjectionsRaw": "卷轴战利品权重", + "text.autoconfig.hexcasting.option.server.scrollInjectionsRaw.@Tooltip": "将战利品表名与卷轴生成数量期望一一对应并罗列。在下列所有战利品表中生成卷轴的概率约50%,生成时会放入1到对应期望个数的卷轴。", + "text.autoconfig.hexcasting.option.server.loreInjectionsRaw": "故事残卷战利品位置", + "text.autoconfig.hexcasting.option.server.loreInjectionsRaw.@Tooltip": "应加入故事残卷的战利品表列表。", + "text.autoconfig.hexcasting.option.server.loreChance": "故事残卷出现概率", + "text.autoconfig.hexcasting.option.server.loreChance.@Tooltip": "上述战利品表中故事残卷出现的概率。", + "text.autoconfig.hexcasting.option.server.cypherInjectionsRaw": "远古杂件战利品位置", + "text.autoconfig.hexcasting.option.server.cypherInjectionsRaw.@Tooltip": "应加入远古杂件的战利品表列表。", + "text.autoconfig.hexcasting.option.server.cypherChance": "远古杂件出现概率", + "text.autoconfig.hexcasting.option.server.cypherChance.@Tooltip": "上述战利品表中远古杂件出现的概率。", + "text.autoconfig.hexcasting.option.server.amethystShardModification": "紫水晶碎片掉落率变化量", + "text.autoconfig.hexcasting.option.server.amethystShardModification.@Tooltip": "采掘紫水晶簇时紫水晶碎片掉落数量相较原版的改变量。", + "advancement.hexcasting:root": "咒法学研究", + "advancement.hexcasting:root.desc": "在地底深处找到并采集不断生长着的、凝聚的媒质", + "advancement.hexcasting:creative_unlocker": "无尽能量!", + "advancement.hexcasting:creative_unlocker.desc": "找到创造调试物品。", + "advancement.hexcasting:enlightenment": "获得启迪", + "advancement.hexcasting:enlightenment.desc": "施放咒术至生命将尽来击碎屏障", + "advancement.hexcasting:wasteful_cast": "勤俭节约……", + "advancement.hexcasting:wasteful_cast.desc": "施放咒术时浪费巨量媒质", + "advancement.hexcasting:big_cast": "……吃穿不缺", + "advancement.hexcasting:big_cast.desc": "耗费巨量媒质以施放一个咒术", + "advancement.hexcasting:y_u_no_cast_angy": "盲目绘制", + "advancement.hexcasting:y_u_no_cast_angy.desc": "尝试根据卷轴施放法术,然后失败", + "advancement.hexcasting:opened_eyes": "恍然大悟", + "advancement.hexcasting:opened_eyes.desc": "用你的一部分意识向自然换取一个咒术。让自然再拿些又会怎样呢?", + "advancement.hexcasting:lore": "咒法学故事", + "advancement.hexcasting:lore.desc": "阅读一份故事残卷", + "advancement.hexcasting:lore/cardamom1": "卡达蒙·斯蒂勒斯 #1", + "advancement.hexcasting:lore/cardamom1.desc": "卡达蒙·斯蒂勒斯寄给她父亲的信,#1", + "advancement.hexcasting:lore/cardamom2": "卡达蒙·斯蒂勒斯 #2", + "advancement.hexcasting:lore/cardamom2.desc": "卡达蒙·斯蒂勒斯寄给她父亲的信,#2", + "advancement.hexcasting:lore/cardamom3": "卡达蒙·斯蒂勒斯 #3", + "advancement.hexcasting:lore/cardamom3.desc": "卡达蒙·斯蒂勒斯寄给她父亲的信,#3,第一部分", + "advancement.hexcasting:lore/cardamom4": "卡达蒙·斯蒂勒斯 #3,第二部分", + "advancement.hexcasting:lore/cardamom4.desc": "卡达蒙·斯蒂勒斯寄给她父亲的信,#3,第二部分", + "advancement.hexcasting:lore/cardamom5": "卡达蒙·斯蒂勒斯 #4", + "advancement.hexcasting:lore/cardamom5.desc": "卡达蒙·斯蒂勒斯寄给她父亲的信,#4", + "advancement.hexcasting:lore/experiment1": "“毡障”实例笔记", + "advancement.hexcasting:lore/experiment2": "“毡障”测试日志", + "advancement.hexcasting:lore/inventory": "回收日志 #72", + "stat.hexcasting.media_used": "消耗媒质量(以紫水晶粉计)", + "stat.hexcasting.media_overcast": "过度施法消耗媒质量(以紫水晶粉计)", + "stat.hexcasting.patterns_drawn": "绘制图案次数", + "stat.hexcasting.spells_cast": "施放法术次数", + "death.attack.hexcasting.overcast": "%s的意识消散为了能量", + "death.attack.hexcasting.overcast.player": "在与%2$s战斗时,%1$s的意识消散为了能量", + "command.hexcasting.recalc": "已重生成此世界特有图案", + "command.hexcasting.pats.listing": "此世界特有的图案:", + "command.hexcasting.pats.all": "给予%2$s所有%1$d张卷轴", + "command.hexcasting.pats.specific.success": "给予%3$sID为%2$s的%1$s", + "command.hexcasting.brainsweep": "已清除%s的意识", + "command.hexcasting.brainsweep.fail.badtype": "%s不是生物", + "command.hexcasting.brainsweep.fail.already": "%s早已没有了意识", + "matcher.hexcasting.pattern.title": "咒术图案", + "matcher.hexcasting.pattern.title.styled": "咒术图案", + "matcher.hexcasting.pattern.description": "咒法学图案可视化", + "matcher.hexcasting.pattern.example": "", + "hexcasting.pattern.unknown": "未知图案资源 %s", + "hexcasting.debug.media_withdrawn": "%s - 取出的媒质:%s", + "hexcasting.debug.media_withdrawn.with_dust": "%s - 取出的媒质:%s(计%s个紫水晶粉)", + "hexcasting.debug.media_inserted": "%s - 存入的媒质:%s", + "hexcasting.debug.media_inserted.with_dust": "%s - 存入的媒质:%s(计%s个紫水晶粉)", + "hexcasting.debug.all_media": "所有媒质", + "hexcasting.debug.infinite_media": "无限", + "hexcasting.loot_hex.shatter": "粉碎", + "hexcasting.loot_hex.kindle": "燃焰", + "hexcasting.loot_hex.illuminate": "耀明", + "hexcasting.loot_hex.growth": "生长", + "hexcasting.loot_hex.lunge": "猛冲", + "hexcasting.loot_hex.sidestep": "侧闪", + "hexcasting.loot_hex.ascend": "升空", + "hexcasting.loot_hex.blink": "闪现", + "hexcasting.loot_hex.blastoff": "起飞", + "hexcasting.loot_hex.radar": "雷达", + "hexcasting.loot_hex.beckon": "召来", + "hexcasting.loot_hex.detonate": "引爆", + "hexcasting.loot_hex.shockwave": "冲击波", + "hexcasting.loot_hex.heat_wave": "热浪", + "hexcasting.loot_hex.wither_wave": "凋零波纹", + "hexcasting.loot_hex.flight_zone": "飞行区", + "hexcasting.message.cant_overcast": "这个咒术需求的媒质量比我有的还多……我应该再算几遍。", + "hexcasting.message.cant_great_spell": "奇怪,法术没起效……也许我还不够熟练?", + "hexcasting.tooltip.spellbook.page": "所选书页 %d/%d", + "hexcasting.tooltip.spellbook.page.sealed": "所选书页 %d/%d(%s)", + "hexcasting.tooltip.spellbook.page_with_name": "所选书页 %d/%d(“%s”)", + "hexcasting.tooltip.spellbook.page_with_name.sealed": "所选书页 %d/%d(“%s”)(%s)", + "hexcasting.tooltip.spellbook.empty": "空白", + "hexcasting.tooltip.spellbook.empty.sealed": "空白(%s)", + "hexcasting.tooltip.spellbook.sealed": "已密封", + "hexcasting.tooltip.scroll.needs_purchase": "购买以显示图案", + "hexcasting.tooltip.scroll.pattern_not_loaded": "放入物品栏以加载图案", + "hexcasting.tooltip.scroll.recalc_warning.line1": "%s:笔顺因世界而异的图案还未生成!", + "hexcasting.tooltip.scroll.recalc_warning.line2": "请先运行/hexcasting recalcPatterns,再拿一张新卷轴。", + "hexcasting.tooltip.abacus": "%d", + "hexcasting.tooltip.abacus.reset": "重置为0", + "hexcasting.tooltip.abacus.reset.nice": "nice", + "hexcasting.tooltip.circle.no_exit": "%s处的媒质流无法找到出口", + "hexcasting.tooltip.circle.many_exits": "%s处的媒质流的可选去路过多", + "hexcasting.tooltip.circle.no_closure": "%s处的媒质流无法返回促动石", + "hexcasting.tooltip.lens.pattern.invalid": "无效图案", + "hexcasting.tooltip.lens.bee": "%s只蜜蜂", + "hexcasting.tooltip.lens.bee.single": "%s只蜜蜂", + "hexcasting.tooltip.lens.impetus.redstone.bound": "与%s绑定", + "hexcasting.tooltip.lens.impetus.redstone.bound.none": "未绑定", + "hexcasting.tooltip.lens.akashic.bookshelf.location": "记录于%s", + "hexcasting.tooltip.lens.akashic.record.count": "存有%s个iota", + "hexcasting.tooltip.lens.akashic.record.count.single": "存有%s个iota", + "hexcasting.tooltip.brainsweep.min_level": "%s级或以上", + "hexcasting.tooltip.brainsweep.level": "%s级", + "hexcasting.tooltip.brainsweep.product": "无意识的躯体", + "hexcasting.tooltip.media": "%d 紫水晶粉", + "hexcasting.tooltip.media_amount": "含有:%s(%s)", + "hexcasting.tooltip.media_amount.advanced": "含有:%s/%s(%s)", + "hexcasting.tooltip.stored_hex": "咒术:", + "hexcasting.tooltip.list_contents": "[%s]", + "hexcasting.tooltip.null_iota": "Null", + "hexcasting.tooltip.jump_iota": "[Jump]", + "hexcasting.tooltip.pattern_iota": "HexPattern(%s)", + "hexcasting.tooltip.boolean_true": "True", + "hexcasting.tooltip.boolean_false": "False", + "hexcasting.spelldata.onitem": "存有:%s", + "hexcasting.spelldata.anything": "任意", + "hexcasting.spelldata.unknown": "损坏的iota", + "hexcasting.spelldata.entity.whoknows": "未知实体", + "hexcasting.spelldata.akashic.nopos": "阿卡夏记录无法获取到此处的iota(这是个漏洞)", + "hexcasting.subtitles.casting.pattern.start": "开始绘制", + "hexcasting.subtitles.casting.pattern.add_segment": "绘制线段", + "hexcasting.subtitles.casting.cast.fail": "事故:轰鸣", + "hexcasting.subtitles.casting.cast.normal": "操作:嗡鸣", + "hexcasting.subtitles.casting.cast.spell": "法术:施放", + "hexcasting.subtitles.casting.cast.hermes": "赫尔墨斯之策略:鸣响", + "hexcasting.subtitles.casting.cast.thoth": "托特之策略:鸣响", + "hexcasting.subtitles.ambiance": "咒术网格:嗡鸣", + "hexcasting.subtitles.staff.reset": "重置咒术", + "hexcasting.subtitles.abacus": "算盘:咔哒", + "hexcasting.subtitles.abacus.shake": "算盘:摇晃", + "hexcasting.subtitles.spellcircle.add_pattern": "法术环:噼啪作响", + "hexcasting.subtitles.spellcircle.fail": "法术环:失效", + "hexcasting.subtitles.scroll.dust": "卷轴:被施粉", + "hexcasting.subtitles.scroll.scribble": "卷轴:被涂写", + "hexcasting.subtitles.impetus.fletcher.tick": "制箭师促动石:咔哒", + "hexcasting.subtitles.impetus.redstone.register": "牧师促动石:叮~", + "hexcasting.subtitles.impetus.redstone.clear": "牧师促动石:清空", + "hexcasting.subtitles.lore_fragment.read": "故事残卷:被阅读", + "hexcasting.subtitles.flight.ambience": "玩家:飞翔", + "hexcasting.subtitles.flight.finish": "飞翔结束", + "hexcasting.attributes.grid_zoom": "咒术网格大小", + "hexcasting.attributes.media_consumption": "媒质消耗", + "hexcasting.attributes.ambit_radius": "玩家影响范围半径", + "hexcasting.attributes.sentinel_radius": "哨卫影响范围半径", + "hexcasting.attributes.scry_sight": "探知视觉", + "hexcasting.attributes.feeble_mind": "孱弱意识", + "hexcasting.action.hexcasting:const/null": "空元之精思", + "hexcasting.action.hexcasting:const/true": "真之精思", + "hexcasting.action.hexcasting:const/false": "假之精思", + "hexcasting.action.hexcasting:const/vec/px": "向量之精思,+X型", + "hexcasting.action.hexcasting:const/vec/py": "向量之精思,+Y型", + "hexcasting.action.hexcasting:const/vec/pz": "向量之精思,+Z型", + "hexcasting.action.hexcasting:const/vec/nx": "向量之精思,-X型", + "hexcasting.action.hexcasting:const/vec/ny": "向量之精思,-Y型", + "hexcasting.action.hexcasting:const/vec/nz": "向量之精思,-Z型", + "hexcasting.action.hexcasting:const/vec/0": "向量之精思,零型", + "hexcasting.action.hexcasting:const/double/pi": "弧之精思", + "hexcasting.action.hexcasting:const/double/tau": "圆之精思", + "hexcasting.action.hexcasting:const/double/e": "欧拉之精思", + "hexcasting.action.hexcasting:const/double/phi": "和谐之精思", + "hexcasting.action.hexcasting:get_caster": "意识之精思", + "hexcasting.action.hexcasting:entity_pos/eye": "指南针之纯化", + "hexcasting.action.hexcasting:entity_pos/foot": "指南针之纯化,第二型", + "hexcasting.action.hexcasting:get_entity_look": "照准仪之纯化", + "hexcasting.action.hexcasting:get_entity_height": "测高仪之纯化", + "hexcasting.action.hexcasting:get_entity_velocity": "步伐之纯化", + "hexcasting.action.hexcasting:raycast": "弓箭手之馏化", + "hexcasting.action.hexcasting:raycast/axis": "建筑师之馏化", + "hexcasting.action.hexcasting:raycast/entity": "侦查员之馏化", + "hexcasting.action.hexcasting:get_media": "媒质之精思", + "hexcasting.action.hexcasting:circle/impetus_pos": "指路石之精思", + "hexcasting.action.hexcasting:circle/impetus_dir": "磁石之精思", + "hexcasting.action.hexcasting:circle/bounds/min": "次要折角之精思", + "hexcasting.action.hexcasting:circle/bounds/max": "主要折角之精思", + "hexcasting.action.hexcasting:append": "整合之馏化", + "hexcasting.action.hexcasting:unappend": "派生之分解", + "hexcasting.action.hexcasting:index": "选择之馏化", + "hexcasting.action.hexcasting:singleton": "单体之纯化", + "hexcasting.action.hexcasting:empty_list": "空无之精思", + "hexcasting.action.hexcasting:reverse": "逆行之纯化", + "hexcasting.action.hexcasting:last_n_list": "群体之策略", + "hexcasting.action.hexcasting:splat": "群体之拆解", + "hexcasting.action.hexcasting:index_of": "定位器之馏化", + "hexcasting.action.hexcasting:remove_from": "切除器之馏化", + "hexcasting.action.hexcasting:slice": "选择之提整", + "hexcasting.action.hexcasting:replace": "外科医师之提整", + "hexcasting.action.hexcasting:construct": "演讲者之馏化", + "hexcasting.action.hexcasting:deconstruct": "演讲者之分解", + "hexcasting.action.hexcasting:get_entity": "实体之纯化", + "hexcasting.action.hexcasting:get_entity/animal": "实体之纯化:动物", + "hexcasting.action.hexcasting:get_entity/monster": "实体之纯化:怪物", + "hexcasting.action.hexcasting:get_entity/item": "实体之纯化:物品", + "hexcasting.action.hexcasting:get_entity/player": "实体之纯化:玩家", + "hexcasting.action.hexcasting:get_entity/living": "实体之纯化:生物", + "hexcasting.action.hexcasting:zone_entity": "区域之馏化:任意", + "hexcasting.action.hexcasting:zone_entity/animal": "区域之馏化:动物", + "hexcasting.action.hexcasting:zone_entity/monster": "区域之馏化:怪物", + "hexcasting.action.hexcasting:zone_entity/item": "区域之馏化:物品", + "hexcasting.action.hexcasting:zone_entity/player": "区域之馏化:玩家", + "hexcasting.action.hexcasting:zone_entity/living": "区域之馏化:生物", + "hexcasting.action.hexcasting:zone_entity/not_animal": "区域之馏化:非动物", + "hexcasting.action.hexcasting:zone_entity/not_monster": "区域之馏化:非怪物", + "hexcasting.action.hexcasting:zone_entity/not_item": "区域之馏化:非物品", + "hexcasting.action.hexcasting:zone_entity/not_player": "区域之馏化:非玩家", + "hexcasting.action.hexcasting:zone_entity/not_living": "区域之馏化:非生物", + "hexcasting.action.hexcasting:type_equals": "类似之馏化", + "hexcasting.action.hexcasting:type_not_equals": "相异之馏化", + "hexcasting.action.hexcasting:compare_block/lenient": "测量员之馏化", + "hexcasting.action.hexcasting:compare_block/strict": "检验员之馏化", + "hexcasting.action.hexcasting:compare_entity": "分类学家之馏化", + "hexcasting.action.hexcasting:compare_item/lenient": "分拣员之馏化", + "hexcasting.action.hexcasting:compare_item/strict": "堆叠之馏化", + "hexcasting.action.hexcasting:swap": "弄臣之策略", + "hexcasting.action.hexcasting:rotate": "轮换之策略", + "hexcasting.action.hexcasting:rotate_reverse": "轮换之策略,第二型", + "hexcasting.action.hexcasting:duplicate": "双子之分解", + "hexcasting.action.hexcasting:over": "勘探者之策略", + "hexcasting.action.hexcasting:tuck": "送葬者之策略", + "hexcasting.action.hexcasting:2dup": "狄俄斯库里之策略", + "hexcasting.action.hexcasting:duplicate_n": "双子之策略", + "hexcasting.action.hexcasting:stack_len": "群体之精思", + "hexcasting.action.hexcasting:fisherman": "渔夫之策略", + "hexcasting.action.hexcasting:fisherman/copy": "渔夫之策略,第二型", + "hexcasting.action.hexcasting:swizzle": "骗徒之策略", + "hexcasting.action.hexcasting:unique": "唯一之纯化", + "hexcasting.action.hexcasting:and": "合取之馏化", + "hexcasting.action.hexcasting:or": "析取之馏化", + "hexcasting.action.hexcasting:xor": "互斥之馏化", + "hexcasting.action.hexcasting:greater": "至大之馏化", + "hexcasting.action.hexcasting:less": "至小之馏化", + "hexcasting.action.hexcasting:greater_eq": "至大之馏化,第二型", + "hexcasting.action.hexcasting:less_eq": "至小之馏化,第二型", + "hexcasting.action.hexcasting:equals": "相等之馏化", + "hexcasting.action.hexcasting:not_equals": "不等之馏化", + "hexcasting.action.hexcasting:not": "取非之纯化", + "hexcasting.action.hexcasting:bool_coerce": "占卜师之纯化", + "hexcasting.action.hexcasting:if": "占卜师之提整", + "hexcasting.action.hexcasting:add": "加法之馏化", + "hexcasting.action.hexcasting:sub": "减法之馏化", + "hexcasting.action.hexcasting:mul": "乘法之馏化", + "hexcasting.action.hexcasting:div": "除法之馏化", + "hexcasting.action.hexcasting:abs": "长度之纯化", + "hexcasting.action.hexcasting:pow": "乘方之馏化", + "hexcasting.action.hexcasting:floor": "取底之纯化", + "hexcasting.action.hexcasting:ceil": "取顶之纯化", + "hexcasting.action.hexcasting:modulo": "余数之馏化", + "hexcasting.action.hexcasting:construct_vec": "向量之提整", + "hexcasting.action.hexcasting:deconstruct_vec": "向量之拆解", + "hexcasting.action.hexcasting:sin": "正弦之纯化", + "hexcasting.action.hexcasting:cos": "余弦之纯化", + "hexcasting.action.hexcasting:tan": "正切之纯化", + "hexcasting.action.hexcasting:arcsin": "反正弦之纯化", + "hexcasting.action.hexcasting:arccos": "反余弦之纯化", + "hexcasting.action.hexcasting:arctan": "反正切之纯化", + "hexcasting.action.hexcasting:arctan2": "反正切之馏化", + "hexcasting.action.hexcasting:random": "熵之精思", + "hexcasting.action.hexcasting:logarithm": "对数之馏化", + "hexcasting.action.hexcasting:coerce_axial": "轴向之纯化", + "hexcasting.action.hexcasting:read": "书吏之精思", + "hexcasting.action.hexcasting:read/entity": "编年史家之纯化", + "hexcasting.action.hexcasting:read/local": "雾尼之精思", + "hexcasting.action.hexcasting:write": "书吏之策略", + "hexcasting.action.hexcasting:write/entity": "编年史家之策略", + "hexcasting.action.hexcasting:write/local": "福金之策略", + "hexcasting.action.hexcasting:readable": "审计员之精思", + "hexcasting.action.hexcasting:readable/entity": "审计员之纯化", + "hexcasting.action.hexcasting:writable": "估价员之精思", + "hexcasting.action.hexcasting:writable/entity": "估价员之纯化", + "hexcasting.action.hexcasting:akashic/read": "阿卡夏之馏化", + "hexcasting.action.hexcasting:akashic/write": "阿卡夏之策略", + "hexcasting.action.hexcasting:print": "揭示", + "hexcasting.action.hexcasting:beep": "弹奏音符", + "hexcasting.action.hexcasting:explode": "爆炸", + "hexcasting.action.hexcasting:explode/fire": "火球", + "hexcasting.action.hexcasting:add_motion": "驱动", + "hexcasting.action.hexcasting:blink": "闪现", + "hexcasting.action.hexcasting:break_block": "破坏方块", + "hexcasting.action.hexcasting:place_block": "放置方块", + "hexcasting.action.hexcasting:craft/cypher": "制作杂件", + "hexcasting.action.hexcasting:craft/trinket": "制作缀品", + "hexcasting.action.hexcasting:craft/artifact": "制作造物", + "hexcasting.action.hexcasting:craft/battery": "制作试剂瓶", + "hexcasting.action.hexcasting:recharge": "重新充能", + "hexcasting.action.hexcasting:erase": "清除物品", + "hexcasting.action.hexcasting:create_water": "制造水源", + "hexcasting.action.hexcasting:destroy_water": "清除流体", + "hexcasting.action.hexcasting:ignite": "点燃", + "hexcasting.action.hexcasting:extinguish": "广域熄灭", + "hexcasting.action.hexcasting:conjure_block": "构筑方块", + "hexcasting.action.hexcasting:conjure_light": "构筑光源", + "hexcasting.action.hexcasting:bonemeal": "催生", + "hexcasting.action.hexcasting:edify": "启迪树苗", + "hexcasting.action.hexcasting:colorize": "内化染色剂", + "hexcasting.action.hexcasting:cycle_variant": "施法者之魅力", + "hexcasting.action.hexcasting:sentinel/create": "召唤哨卫", + "hexcasting.action.hexcasting:sentinel/create/great": "召唤卓越哨卫", + "hexcasting.action.hexcasting:sentinel/destroy": "驱除哨卫", + "hexcasting.action.hexcasting:sentinel/get_pos": "定位哨卫", + "hexcasting.action.hexcasting:sentinel/wayfind": "寻路至哨卫", + "hexcasting.action.hexcasting:potion/weakness": "白阳西沉", + "hexcasting.action.hexcasting:potion/levitation": "蓝阳西沉", + "hexcasting.action.hexcasting:potion/wither": "黑阳西沉", + "hexcasting.action.hexcasting:potion/poison": "红阳西沉", + "hexcasting.action.hexcasting:potion/slowness": "绿阳西沉", + "hexcasting.action.hexcasting:potion/regeneration": "白阳当空", + "hexcasting.action.hexcasting:potion/night_vision": "蓝阳当空", + "hexcasting.action.hexcasting:potion/absorption": "黑阳当空", + "hexcasting.action.hexcasting:potion/haste": "红阳当空", + "hexcasting.action.hexcasting:potion/strength": "绿阳当空", + "hexcasting.action.hexcasting:flight": "翱翔", + "hexcasting.action.hexcasting:flight/range": "隐士之飞行", + "hexcasting.action.hexcasting:flight/time": "旅者之飞行", + "hexcasting.action.hexcasting:flight/can_fly": "飞行员之纯化", + "hexcasting.action.hexcasting:lightning": "召雷", + "hexcasting.action.hexcasting:summon_rain": "召雨", + "hexcasting.action.hexcasting:dispel_rain": "驱雨", + "hexcasting.action.hexcasting:create_lava": "制造熔岩", + "hexcasting.action.hexcasting:teleport/great": "卓越传送", + "hexcasting.action.hexcasting:brainsweep": "剥离意识", + "hexcasting.action.hexcasting:escape": "考察", + "hexcasting.action.hexcasting:runtime_escape": "深思", + "hexcasting.action.hexcasting:open_paren": "内省", + "hexcasting.action.hexcasting:close_paren": "反思", + "hexcasting.action.hexcasting:open_n_parens": "冥想", + "hexcasting.action.hexcasting:close_all_parens": "回想", + "hexcasting.action.hexcasting:read_into_parens": "插嵌", + "hexcasting.action.hexcasting:undo": "消解", + "hexcasting.action.hexcasting:eval": "赫尔墨斯之策略", + "hexcasting.action.hexcasting:eval/cc": "伊里斯之策略", + "hexcasting.action.hexcasting:for_each": "托特之策略", + "hexcasting.action.hexcasting:halt": "卡戎之策略", + "hexcasting.action.hexcasting:thanatos": "塔纳托斯之精思", + "hexcasting.action.hexcasting:interop/gravity/get": "引力之纯化", + "hexcasting.action.hexcasting:interop/gravity/set": "改变引力", + "hexcasting.action.hexcasting:interop/pehkui/get": "格列佛之纯化", + "hexcasting.action.hexcasting:interop/pehkui/set": "改变大小", + "hexcasting.action.book.hexcasting:get_entity_height": "测高仪之纯化", + "hexcasting.action.book.hexcasting:get_entity/animal": "实体之纯化:动物", + "hexcasting.action.book.hexcasting:get_entity/monster": "实体之纯化:怪物", + "hexcasting.action.book.hexcasting:get_entity/item": "实体之纯化:物品", + "hexcasting.action.book.hexcasting:get_entity/player": "实体之纯化:玩家", + "hexcasting.action.book.hexcasting:get_entity/living": "实体之纯化:生物", + "hexcasting.action.book.hexcasting:zone_entity": "区域之馏化:任意", + "hexcasting.action.book.hexcasting:zone_entity/animal": "区域之馏化:动物", + "hexcasting.action.book.hexcasting:zone_entity/monster": "区域之馏化:怪物", + "hexcasting.action.book.hexcasting:zone_entity/item": "区域之馏化:物品", + "hexcasting.action.book.hexcasting:zone_entity/player": "区域之馏化:玩家", + "hexcasting.action.book.hexcasting:zone_entity/living": "区域之馏化:生物", + "hexcasting.action.book.hexcasting:zone_entity/not_animal": "区域之馏化:非动物", + "hexcasting.action.book.hexcasting:zone_entity/not_monster": "区域之馏化:非怪物", + "hexcasting.action.book.hexcasting:zone_entity/not_item": "区域之馏化:非物品", + "hexcasting.action.book.hexcasting:zone_entity/not_player": "区域之馏化:非玩家", + "hexcasting.action.book.hexcasting:zone_entity/not_living": "区域之馏化:非生物", + "hexcasting.action.book.hexcasting:mul": "乘法之馏化", + "hexcasting.action.book.hexcasting:div": "除法之馏化", + "hexcasting.action.book.hexcasting:arcsin": "反正弦之纯化", + "hexcasting.action.book.hexcasting:arccos": "反余弦之纯化", + "hexcasting.action.book.hexcasting:arctan": "反正切之纯化", + "hexcasting.action.book.hexcasting:arctan2": "反正切之馏化", + "hexcasting.action.book.hexcasting:const/vec/x": "向量之精思,+X/-X型", + "hexcasting.action.book.hexcasting:const/vec/y": "向量之精思,+Y/-Y型", + "hexcasting.action.book.hexcasting:const/vec/z": "向量之精思,+Z/-Z型", + "hexcasting.action.book.hexcasting:read/entity": "编年史家之纯化", + "hexcasting.action.book.hexcasting:bool_to_number": "数秘术师之纯化", + "hexcasting.action.book.hexcasting:number": "数字之精思", + "hexcasting.action.book.hexcasting:mask": "簿记员之策略", + "hexcasting.special.hexcasting:number": "数字之精思:%s", + "hexcasting.special.hexcasting:mask": "簿记员之策略:%s", + "hexcasting.iota.hexcasting:null": "Null", + "hexcasting.iota.hexcasting:null.desc": "一个空值", + "hexcasting.iota.hexcasting:double": "数", + "hexcasting.iota.hexcasting:double.desc": "一个数", + "hexcasting.iota.hexcasting:boolean": "布尔值", + "hexcasting.iota.hexcasting:boolean.desc": "一个布尔值", + "hexcasting.iota.hexcasting:entity": "实体", + "hexcasting.iota.hexcasting:entity.desc": "一个实体", + "hexcasting.iota.hexcasting:list": "列表", + "hexcasting.iota.hexcasting:list.desc": "一个列表", + "hexcasting.iota.hexcasting:pattern": "图案", + "hexcasting.iota.hexcasting:pattern.desc": "一个图案", + "hexcasting.iota.hexcasting:garbage": "垃圾", + "hexcasting.iota.hexcasting:garbage.desc": "垃圾", + "hexcasting.iota.hexcasting:vec3": "向量", + "hexcasting.iota.hexcasting:vec3.desc": "一个向量", + "hexcasting.iota.hexcasting:continution": "续体", + "hexcasting.iota.hexcasting:continution.desc": "一个跳转iota", + "hexcasting.mishap": "%s:%s", + "hexcasting.mishap.invalid_pattern": "图案%s不对应任何操作", + "hexcasting.mishap.invalid_pattern_generic": "该图案不对应任何操作", + "hexcasting.mishap.unescaped": "本应运行一个图案,而实际运行了%s", + "hexcasting.mishap.not_enough_args": "本应接受大于等于%s个参数,而实际栈高度为%s", + "hexcasting.mishap.no_args": "本应接受大于等于%s个参数,而实际为空栈", + "hexcasting.mishap.needs_parens": "在绘制反思前未先绘制内省", + "hexcasting.mishap.wrong_dimension": "无法在%2$s中影响到%1$s", + "hexcasting.mishap.entity_too_far": "%s超出影响范围", + "hexcasting.mishap.immune_entity": "无法影响到%s", + "hexcasting.mishap.eval_too_much": "运行了过多图案", + "hexcasting.mishap.no_item": "需要%s,而实际无对应物品", + "hexcasting.mishap.no_item.offhand": "需要在另一只手里持有%s,而实际无对应物品", + "hexcasting.mishap.bad_entity": "需要%s,而实际接受了%s", + "hexcasting.mishap.bad_brainsweep": "%s排斥此生物的意识", + "hexcasting.mishap.already_brainswept": "此意识已被使用", + "hexcasting.mishap.no_spell_circle": "需在法术环上执行", + "hexcasting.mishap.others_name": "试图侵犯%s的灵魂的隐私", + "hexcasting.mishap.others_name.self": "试图随意泄露我自己真名的秘密", + "hexcasting.mishap.divide_by_zero.divide": "试图用%2$s除%1$s", + "hexcasting.mishap.divide_by_zero.project": "试图将%s投影至%s", + "hexcasting.mishap.divide_by_zero.exponent": "试图计算%s的%s", + "hexcasting.mishap.divide_by_zero.logarithm": "试图计算%s以%s为底的对数", + "hexcasting.mishap.divide_by_zero.zero": "零", + "hexcasting.mishap.divide_by_zero.zero.power": "零次幂", + "hexcasting.mishap.divide_by_zero.zero.vec": "零向量", + "hexcasting.mishap.divide_by_zero.power": "%s次幂", + "hexcasting.mishap.divide_by_zero.sin": "%s的正弦", + "hexcasting.mishap.divide_by_zero.cos": "%s的余弦", + "hexcasting.mishap.invalid_operator_args.one": "在栈下标为%d处获取到意外iota:%s", + "hexcasting.mishap.invalid_operator_args.many": "在栈下标为%2$d到%3$d处获取到%1$s个意外iota:%4$s", + "hexcasting.mishap.no_akashic_record": "%s处无阿卡夏记录", + "hexcasting.mishap.disallowed": "%s已被服务器管理员禁用", + "hexcasting.mishap.disallowed_generic": "该图案已被服务器管理员禁用", + "hexcasting.mishap.disallowed_circle": "%s已被服务器管理员禁用于法术环", + "hexcasting.mishap.disallowed_circle_generic": "该图案已被服务器管理员禁用于法术环", + "hexcasting.mishap.invalid_spell_datum_type": "尝试将某无效类型的值用作SpellDatum:%s(class %s)。这是模组中的漏洞。", + "hexcasting.mishap.unknown": "抛出异常(%s)。这是模组中的漏洞。", + "hexcasting.mishap.stack_size": "超出了栈的大小上限", + "hexcasting.mishap.bad_caster": "试图运行的图案需要强大的意识才能承受", + "hexcasting.mishap.invalid_value": "本应在栈下标为%2$s处接受%1$s,而实际接受了%3$s:%4$s", + "hexcasting.mishap.invalid_value.class.double": "一个数", + "hexcasting.mishap.invalid_value.class.boolean": "一个布尔值", + "hexcasting.mishap.invalid_value.class.vector": "一个向量", + "hexcasting.mishap.invalid_value.class.list": "一个列表", + "hexcasting.mishap.invalid_value.class.pattern": "一个图案", + "hexcasting.mishap.invalid_value.class.continuation": "一个跳转iota", + "hexcasting.mishap.invalid_value.class.garbage": "垃圾", + "hexcasting.mishap.invalid_value.class.null": "Null", + "hexcasting.mishap.invalid_value.class.entity": "一个实体", + "hexcasting.mishap.invalid_value.class.entity.mob": "一个生物", + "hexcasting.mishap.invalid_value.class.entity.item": "一个物品实体", + "hexcasting.mishap.invalid_value.class.entity.item_holder": "一个持有物品的实体", + "hexcasting.mishap.invalid_value.class.entity.player": "一个玩家", + "hexcasting.mishap.invalid_value.class.entity.living": "一个生物实体", + "hexcasting.mishap.invalid_value.class.entity_or_vector": "一个实体或向量", + "hexcasting.mishap.invalid_value.class.unknown": "(未知,这是个漏洞)", + "hexcasting.mishap.invalid_value.numvec": "一个数或向量", + "hexcasting.mishap.invalid_value.numlist": "一个整数或列表", + "hexcasting.mishap.invalid_value.double.positive": "一个正数", + "hexcasting.mishap.invalid_value.double.positive.less": "一个小于%d的正数", + "hexcasting.mishap.invalid_value.double.positive.less.equal": "一个小于等于%d的正数", + "hexcasting.mishap.invalid_value.double.between": "一个介于%d和%d之间的数", + "hexcasting.mishap.invalid_value.int": "一个整数", + "hexcasting.mishap.invalid_value.int.positive": "一个正整数", + "hexcasting.mishap.invalid_value.int.positive.less": "一个小于%d的正整数", + "hexcasting.mishap.invalid_value.int.positive.less.equal": "一个小于等于%d的正整数", + "hexcasting.mishap.invalid_value.int.between": "一个介于%d和%d之间的整数", + "hexcasting.mishap.invalid_value.evaluatable": "可运行的事物", + "hexcasting.mishap.invalid_value.bool_commute": "一个布尔值、0或1", + "hexcasting.mishap.location_too_far": "%s超出影响范围", + "hexcasting.mishap.location_out_of_world": "%s不在此世界内", + "hexcasting.mishap.location_too_close_to_out": "%s离世界边界太近了", + "hexcasting.mishap.location_forbidden": "%s并未对你开放", + "hexcasting.mishap.location_bad_dimension": "无法在此维度内执行此操作", + "hexcasting.mishap.bad_item": "需要%s,而实际持有%d个%s", + "hexcasting.mishap.bad_item.offhand": "需要在另一只手里持有%s,而实际持有%d个%s", + "hexcasting.mishap.bad_item.hotbar": "需要在快捷栏里放有%s", + "hexcasting.mishap.bad_item.iota": "一个可以存储iota的地方", + "hexcasting.mishap.bad_item.iota.read": "一个可以读出iota的地方", + "hexcasting.mishap.bad_item.iota.write": "一个可以写入iota的地方", + "hexcasting.mishap.bad_item.iota.readonly": "一个能够接受%s的地方", + "hexcasting.mishap.bad_item.media": "含有媒质的物品", + "hexcasting.mishap.bad_item.media_for_battery": "天然含有媒质的物品", + "hexcasting.mishap.bad_item.only_one": "仅一个物品", + "hexcasting.mishap.bad_item.eraseable": "一个可清除的物品", + "hexcasting.mishap.bad_item.bottle": "一个玻璃瓶", + "hexcasting.mishap.bad_item.rechargable": "一个可重新充能的物品", + "hexcasting.mishap.bad_item.colorizer": "一个染色剂", + "hexcasting.mishap.bad_item.variant": "一个有变种的物品", + "hexcasting.mishap.bad_item.placeable": "一个可放置的物品", + "hexcasting.mishap.bad_block": "本应在%2$s处接受%1$s,而实际接受了%3$s", + "hexcasting.mishap.bad_block.sapling": "一个树苗", + "hexcasting.mishap.bad_block.replaceable": "一个可放置方块的地方", + "hexcasting.mishap.circle.bool_directrix.no_bool": "%s处的iota实际为%s,而非布尔值", + "hexcasting.mishap.circle.bool_directrix.empty_stack": "%s处的栈为空栈", + "hexcasting.circles.no_exit": "%s处的媒质流无法找到出口", + "hexcasting.circles.many_exits": "%s处的媒质流的可选去路过多", + "hexcasting.landing": "我似乎发现了一种全新的魔法,一种在六边形网格上画各式奇诡图案的魔法。它深深地迷住了我。我决定着手撰写一本笔记,以此记述我的想法和研究成果。$(br2)$(l:https://forum.petra-k.at/index.php)论坛链接/$", + "hexcasting.category.basics": "初入咒法", + "hexcasting.category.basics.desc": "研究这种魔法的人士会用$(l:items/staff)$(item)法杖/$在空中绘制奇异的图案来施放他们口中的“$(hex)咒术/$”,他们也会让$(l:items/hexcasting)$(item)强大的魔法物品/$替他们施法。我要如何复现呢?", + "hexcasting.category.casting": "咒法学", + "hexcasting.category.casting.desc": "我好像已经开始理解以前的咒法师们是如何施放$(hex)咒术/$的了!虽然有些复杂,但我坚信我能理清其中脉络。继续研究吧……", + "hexcasting.category.items": "物品", + "hexcasting.category.items.desc": "这部分主要介绍我在研究过程中可能要用到的魔法物品和各类神秘物品。", + "hexcasting.category.greatwork": "卓伟之作", + "hexcasting.category.greatwork.desc": "我所见……甚多。我已……经历……湮灭与解构与重构。我已听闻世上的原子在被翻转而后被搅乱而后消散为能量时的尖啸。我已见我已见我已冂$(k)get stick bugged lmao/$", + "hexcasting.category.lore": "故事", + "hexcasting.category.lore.desc": "我发现了些与我所研究的学问没有直接关系的信件和文本。但是,其中也许记载了某些历史上发生过的事。还是需要好好读读……", + "hexcasting.category.interop": "模组联动", + "hexcasting.category.interop.desc": "好像我装了某些能和咒法学联动的模组!详情如下。", + "hexcasting.category.patterns": "图案", + "hexcasting.category.patterns.desc": "我所发现的各式图案,和它们的功用。", + "hexcasting.category.spells": "法术", + "hexcasting.category.spells.desc": "能以魔法影响到世界的图案和操作。", + "hexcasting.category.great_spells": "卓越法术", + "hexcasting.category.great_spells.desc": "这类法术据信极难施放,但也极为强力。记载它们的文献极为$(l:items/scroll)少见/$(据称理由充分)。这也许只是某些消亡的老古董口中的胡言乱语,不过——它们只是简单的图案罢了。$(br2)试试看又能出什么错呢?", + "hexcasting.entry.media": "媒质", + "hexcasting.entry.creative_items": "仅创造物品", + "hexcasting.entry.geodes": "晶洞", + "hexcasting.entry.couldnt_cast": "挫折", + "hexcasting.entry.start_to_see": "我看到了什么?", + "hexcasting.entry.101": "咒术 101", + "hexcasting.entry.whats_a_hex": "咒术是什么?", + "hexcasting.entry.vectors": "向量入门", + "hexcasting.entry.mishaps": "事故", + "hexcasting.entry.stack": "栈", + "hexcasting.entry.naming": "操作命名法", + "hexcasting.entry.mishaps2": "启迪后事故", + "hexcasting.entry.amethyst": "紫水晶", + "hexcasting.entry.staff": "法杖", + "hexcasting.entry.lens": "探知透镜", + "hexcasting.entry.jeweler_hammer": "珠宝匠锤", + "hexcasting.entry.thought_knot": "结念绳", + "hexcasting.entry.focus": "核心", + "hexcasting.entry.abacus": "算盘", + "hexcasting.entry.spellbook": "法术书", + "hexcasting.entry.scroll": "卷轴", + "hexcasting.entry.slate": "石板", + "hexcasting.entry.hexcasting": "施法物品", + "hexcasting.entry.ancient_cyphers": "远古杂件", + "hexcasting.entry.phials": "媒质之瓶", + "hexcasting.entry.potions": "咒术药水", + "hexcasting.entry.pigments": "染色剂", + "hexcasting.entry.edified": "启迪树", + "hexcasting.entry.decoration": "装饰性方块", + "hexcasting.entry.the_work": "卓伟之作", + "hexcasting.entry.brainsweeping": "论意识的剥离", + "hexcasting.entry.spellcircles": "法术环", + "hexcasting.entry.impetus": "促动石", + "hexcasting.entry.directrix": "导向石", + "hexcasting.entry.akashiclib": "阿卡夏图书馆", + "hexcasting.entry.quenching_allays": "淬炼悦灵", + "hexcasting.entry.fanciful_staves": "华丽法杖", + "hexcasting.entry.readers_guide": "如何阅读这一章节", + "hexcasting.entry.basics_pattern": "基础图案", + "hexcasting.entry.numbers": "数字常量", + "hexcasting.entry.math": "数学", + "hexcasting.entry.advanced_math": "高阶数学", + "hexcasting.entry.sets": "集合", + "hexcasting.entry.consts": "常量", + "hexcasting.entry.stackmanip": "栈操作", + "hexcasting.entry.logic": "逻辑运算", + "hexcasting.entry.entities": "实体", + "hexcasting.entry.types": "类型", + "hexcasting.entry.lists": "列表操作", + "hexcasting.entry.patterns_as_iotas": "图案转义", + "hexcasting.entry.advanced_escaping": "高阶转义", + "hexcasting.entry.readwrite": "读取与写入", + "hexcasting.entry.meta": "元运行", + "hexcasting.entry.circle_patterns": "法术环图案", + "hexcasting.entry.akashic_patterns": "阿卡夏图案", + "hexcasting.entry.itempicking": "处理物品", + "hexcasting.entry.basic_spell": "基础法术", + "hexcasting.entry.blockworks": "方块工程", + "hexcasting.entry.nadirs": "天底法术", + "hexcasting.entry.hexcasting_spell": "制作施法物品", + "hexcasting.entry.sentinels": "哨卫", + "hexcasting.entry.flights": "飞行", + "hexcasting.entry.weather_manip": "天气操控", + "hexcasting.entry.zeniths": "天顶法术", + "hexcasting.entry.lore.cardamom1": "卡达蒙的信,#1", + "hexcasting.entry.lore.cardamom2": "卡达蒙的信,#2", + "hexcasting.entry.lore.cardamom3": "卡达蒙的信,#3", + "hexcasting.entry.lore.cardamom4": "卡达蒙的信,#4", + "hexcasting.entry.lore.cardamom5": "卡达蒙的信,#5", + "hexcasting.entry.lore.experiment1": "“毡障”实例笔记", + "hexcasting.entry.lore.experiment2": "“毡障”测试日志", + "hexcasting.entry.lore.inventory": "回收日志 #72", + "hexcasting.entry.interop": "模组联动", + "hexcasting.entry.interop.gravity": "Gravity Changer", + "hexcasting.entry.interop.pehkui": "Pehkui", + "hexcasting.page.creative_items.1": "我发明了些奇妙的物品,只能用极具$(italic)创造/$力的方式获得。", + "hexcasting.page.creative_items.creative_unlocker": "$(#74b3f2)媒质立方/$是近乎无尽的媒质源,能为所有$(hex)咒术/$无限提供$(media)媒质/$。它看上去也挺好吃的。食用后也许会揭示世界的更多秘密,亦有可能触碰到剧透内容……", + "hexcasting.page.creative_items.2": "而且,在铁砧中为$(#74b3f2)媒质立方/$重命名,似乎就能用来测试$(hex)咒术/$,以此加深理解。假使真有一天,我得到了创造的力量,在按照后页所说内容操作之前,最好还是先把它禁用掉。", + "hexcasting.page.creative_items.debug_media.title": "debug media", + "hexcasting.page.creative_items.debug_media.desc": "将$(#74b3f2)媒质立方/$重命名为“debug media”,聊天栏中即会出现所消耗媒质量的反馈信息。", + "hexcasting.page.media.1": "$(media)媒质/$是一种独立于意识的思维能量。所有生物都会在思考时产生痕量的$(media)媒质/$,而在这一思考过程结束后,产生的媒质就会被释放至环境中。$(br2)所谓施放$(hex)咒术/$,就是操纵$(media)媒质/$以产生有效影响的过程。", + "hexcasting.page.media.2": "$(media)媒质/$可以影响其他媒质,而这种影响的强度和种类都可通过将$(media)媒质/$绘制为各式图案来进行控制。$(p)研究这种魔法的学者则会使用接在木棍一端的浓缩的$(media)媒质/$。只要在空中按特定模式挥舞,学者们就能以足够的精度操控足量的$(media)媒质/$来影响世界,也即“$(hex)咒术/$”。", + "hexcasting.page.media.3": "遗憾的是,就算是感知能力较强的生物(也许我自己也算)也只能产生微量的$(media)媒质/$。只凭自己的大脑来施放咒术不太现实。$(br2)但传说地下有种特殊的矿床,$(media)媒质/$会在其中缓慢累积,并生长为晶体。$(p)真希望我能找到一处……", + "hexcasting.page.geodes.1": "啊哈!在地下挖矿时,我找到了一个巨大的、满溢着能量的晶洞。那些能量压迫着我的颅骨和思维。而现在,我手里就有一块那种压迫的来源,一块固体。传说是真的。这块固体$(italic)一定/$就是传说中$(media)媒质/$累积的产物。$(br2)这些$(l:items/amethyst)$(item)紫水晶/$肯定就是$(l:items/amethyst)$(thing)一种便于使用的、固态的$(media)媒质/$。", + "hexcasting.page.geodes.2": "似乎除了我往常碰到的$(l:items/amethyst)$(item)紫水晶碎片/$,这些水晶还会掉落些许粉末状的$(l:items/amethyst)$(item)紫水晶粉/$,也有可能掉落$(l:items/amethyst)$(item)充能紫水晶/$。而且好像附有时运的镐子挖出$(l:items/amethyst)$(item)充能紫水晶/$的概率更大。", + "hexcasting.page.geodes.3": "而在欣赏这些水晶的美时,我能感受到某种连接迅速闪过我的意识。就好像空气中的$(media)媒质/$正在流入我的脑海,正给予我更强的力量,正为我启迪全新知识……这种感觉真不错。$(br2)我总算是入门了!$(p)我要再读几遍那些古老的传说,我总算能理解我在读什么了。", + "hexcasting.page.couldnt_cast.1": "为什么我就是施不了这个法术?!$(br2)我找到的卷轴货真价实。我能$(italic)感受/$到卷轴的嗡鸣——图案是真的,真得不能再真了。法术$(italic)就在里面/$。$(p)但感觉起来它好像处在某种薄膜的另一侧。我试过召唤它——它也想要起效——但它$(italic)做不到/$。", + "hexcasting.page.couldnt_cast.2": "好像那层屏障会因我施法时用的魔力而被缓慢地削弱。但就算我用尽全力——最大程度地专注,最精致的紫水晶,最精确的图案——它$(italic)就是不肯/$跨过那个屏障。真是惹人上火。难道我对魔法的研究就$(p)$(italic)止步于此/$了吗?就因为我无力施法,我就要放弃那些力量了吗?$(br2)深呼吸。我应该仔细回顾我曾学到的知识,就算可能加起来也没多少……", + "hexcasting.page.couldnt_cast.3": "……经过仔细回顾……我发现我自己发生了改变。$(p)似乎……拜$(l:items/amethyst)$(item)紫水晶/$所赐,我能仅凭我自身的意识和生命能量来施放法术,就和传说中说的一样。$(p)我不清楚我为什么做得到。只是……获得真知的代价就在那里,而我现在知道了那个代价是什么。我要去承受它。$(br2)幸运的是,我也清楚我的极限在哪里——我的生命力最旺盛时大概就相当于两个$(l:items/amethyst)$(item)充能紫水晶/$中的$(media)媒质/$。", + "hexcasting.page.couldnt_cast.4": "只是想想都让我打颤——直到现在,我都在研究中保持了自身意识的大体完整。但这样做的结果就是,我只建立了单向而脆弱的连接。$(p)我与屏障的另一侧是相连的,其间的屏障已因我的努力而受了削弱。而在屏障的另一侧,仅是简单的操作,就能带来永恒的荣耀。$(p)我想要拥有那份力量,是否就大错特错?", + "hexcasting.page.start_to_see.1": "文献没有说错。自然出手了。", + "hexcasting.page.start_to_see.2": "那……那是……$(p)……那是我所经历过的$(italic)最糟糕/$的事了。我向自然呈现了我的规划,得来的是一个坚定的笑容和一种被撕裂的感受——我的一部分破碎了,就好像雨中四散的紫水晶粉。$(p)只是$(italic)存活/$下来都是极大的幸事,更不用说有精力写下这些了。这件事该到此为止,我应该在施放$(hex)咒术/$时多算几遍,绝不能再犯这样的错误。", + "hexcasting.page.start_to_see.3": "……但是。$(br2)但是在那最为神圣的一刻,我破碎的那一部分……它$(italic)看见了/$……$(l:greatwork/the_work)$(thing)一些东西/$。一个地方——也许是一件作品?(这种定义对……那种事物来说不值一提)$(p)和一张……一个薄膜-屏障-薄层-界限,将我和单纯的思维-能流-光-能量的领域隔绝开来。我记得——我看见-想到-回忆起-感受到——那个屏障的边缘变得模糊了,略微模糊了。$(p)我想要$(italic)穿过它/$。", + "hexcasting.page.start_to_see.4": "但我不应该。我也$(italic)清楚/$我不应该。那很危险。非常非常危险。跨越屏障需要的力量……我必须仅凭$(italic)一次施法/$就让我自己濒临死亡。$(br2)但我,就是,$(italic)不甘心/$。$(p)$(italic)这/$就是我魔法的集大成之作。这就是我所追求的$(#54398a)启迪/$。$(br2)我还想知道更多。我要再看到那场景。我$(italic)必将/$再见。$(p)我脆弱的意识和永恒的荣耀相比,又算得上什么呢?", + "hexcasting.page.casting.overview.1": "我坚信正确的起步方向非常重要。因此,我编写了一个能在我所看的位置产生中小型爆炸的$(hex)咒术/$。相信研究其内部机理会相当有启迪性。", + "hexcasting.page.casting.grid.1": "我通常会使用$(l:items/staff)$(item)法杖/$为自然提供图案。在手中持有时按下$(thing)$(k:use)/$就会在我面前产生一个六边形格点。之后点击并在点间拖拽,再释放就可绘制图案。$(br2)在我提交图案的同时,其就会被运行(见下一章节)。", + "hexcasting.page.casting.grid.2": "按下$(thing)$(k:escape)/$会保存并关闭网格,下一次使用法杖时,原有的图案和 iota 都会保留。$(br2)如果需要重设施法状态,在潜行时打开网格即可。", + "hexcasting.page.casting.patterns&actions.1": "$(thing)图案/$是沿$(media)媒质/$网格行进的路径。我相信图案的六次对称性就是这种技艺名称的由来。(译注:hex:六;咒术)$(br2)$(thing)操作/$则是图案所$(italic)做/$的事情。", + "hexcasting.page.casting.patterns&actions.2": "两者的区别可类比为$(italic)词语/$和$(italic)意义/$的区别。任意的字母组合都是词语,但其中大部分(例如“xnopyt”)毫无意义。相似地,沿$(media)媒质/$随意画出的任何东西都可称作图案,但其中大部分什么都做不了。", + "hexcasting.page.casting.patterns&actions.3": "操作有点类似统领宇宙的卓伟系统规则的命令。(我曾看过有些文本将这些规则拟人化为“自然”。)它们通常会执行如下其一:$(li)收集有关世界的某些信息,例如获取实体的位置。$(li)操纵收集到的信息,例如计算两位置间的距离。$(li)在世界上产生某些魔法效果,例如召唤闪电和爆炸。$(br)其中最后一种操作又称“法术”,也通常是吸引人们研习这门技艺的原因。", + "hexcasting.page.casting.patterns&actions.4": "$(hex)咒术/$则是依次提供给自然的有效图案序列。自然会依次理解这些图案,如果它能够理解,则会根据我的奇想改变世界。(或者说,根据它印象中我奇想的意义。)", + "hexcasting.page.casting.patterns&actions.5": "尽管某些操作可轻松执行,但某些则需要一种凝结形态的$(media)媒质/$。我相信这种浓缩的意识能量是对自然的某种论据,作为说服其应当依照我的请求做事的报偿。大部分的法术都需要这种报偿,若干非法术操作也需要。$(br2)我已在各操作的介绍页记录了其消耗(若有)。", + "hexcasting.page.casting.iotas.1": "自然的语言中的“名词”称作 $(thing)iota/$。从其最为基础的层面而言,咒法学便是操纵 iota 的技艺。$(br2)Iota 有许多不同类型:$(li)数(某些文献称之为“双精度浮点数”)。$(li)向量,一种可代表世界中位置、运动或方向的,由三个数组成的集合。$(li)布尔值(简称“布尔”),一种代表真和假的抽象概念的 iota。$(li)实体,如我自己、鸡、矿车等。", + "hexcasting.page.casting.iotas.2": "$(li)虚指,代表各类抽象概念的 iota,如数据的缺乏($(thing)Null/$)或杂乱的数据($(thing)垃圾/$)。$(li)图案,用于制作魔法物品,也用在某些烧脑的咒术中,如$(italic)能施放其他法术的法术/$。$(li)由上述若干种组成的列表,相当于一个 iota。", + "hexcasting.page.casting.iotas.3": "通常情况下,我会给操作提供 iota。例如$(l:patterns/spells/basic#hexcasting:explode)$(action)爆炸/$。此法术需要一个表示强度的数 iota,和一个表示位置的向量 iota。$(br2)或者再看$(l:patterns/basic#hexcasting:get_pos)$(action)指南针之纯化/$。它会将一个实体 iota 转换为一个表示该实体位置的向量 iota。", + "hexcasting.page.101.1": "施放$(hex)咒术/$难度颇高,也难怪这门学问早已遗落!我必须要仔细回看我的笔记。$(br2)我可以手持$(l:items/staff)$(item)法杖/$按下$(k:use)来施放$(hex)咒术/$,而后就会浮现一个按六边形网格排列的点阵。然后便可在点阵上单击并拖动以在网格的$(media)媒质/$中绘制图案。绘制完一个图案就会立刻执行其对应的操作(详情见后)。", + "hexcasting.page.101.2": "当我绘制的图案足以施法时,网格就会消失,而累积起来的$(media)媒质/$也会被释放。按住$(k:sneak)时使用$(l:items/staff)$(item)法杖/$也能清空网格。$(br2)所以图案是如何起效的呢?简而言之:$(li)$(italic)图案/$会执行……$(li)$(italic)操作/$,其会操控……$(li)$(l:casting/stack)$(italic)栈/$,也即一列表的……$(li)$(italic)Iota/$,就是以单位计的信息。", + "hexcasting.page.101.3": "首先,$(thing)图案/$。它们是咒术的必需物,可用它们来操控周围的$(media)媒质/$。部分图案在被绘制时,会执行$(thing)操作/$。操作是$(italic)实际产生/$魔法效果的事物。所有图案都会以某种方式影响$(media)媒质/$,而当这些影响实际有用时,我们就称其为操作。$(br2)$(media)媒质/$是易变的,如果我绘制了无效的图案,栈上某处就会出现$(thing)垃圾/$(详情见后)。", + "hexcasting.page.101.4.header": "示例", + "hexcasting.page.101.4": "有意思的是,图案整体的$(italic)方向/$完全不影响图案的功用。例如,上图中的两个图案都会执行名为$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$的操作。", + "hexcasting.page.101.5": "$(hex)咒术/$是通过按顺序绘制(有效的)图案施放的。每个操作都能完成如下几件事中的一件:$(li)获取有关环境的信息,然后将其置于栈顶。$(li)操控获取到的信息(例如加和两个数)。或者$(li)产生魔法效果,例如召唤闪电或产生爆炸。(这些操作被称为“法术”。)$(p)在开始施放$(hex)咒术/$时会自动创建一个空栈。操作会影响栈顶的若干元素。", + "hexcasting.page.101.6": "例如,$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$会创建一个代表$(italic)我/$,即施法者的 iota,并将其置于栈顶。$(l:patterns/basics#hexcasting:entity_pos/eye)$(action)指南针之纯化/$会接受栈顶的 iota(前提是该 iota 代表一个实体),并将其转换为代表该实体位置的 iota。$(br2)所以,依序绘制上述图案就会在栈顶创建一个代表我的位置的 iota。", + "hexcasting.page.101.7": "$(thing)Iota/$ 可以代表诸如我、我的位置等具体事物,也可以代表其他几种能用$(thing)操作/$进行操控的事物。如下是一份全面介绍:$(li)数(某些文献称之为“双精度浮点数”)。$(li)向量,一种可代表世界中位置、运动或方向的,由三个数组成的集合。$(li)布尔值(简称“布尔”),一种代表真和假的抽象概念的 iota。", + "hexcasting.page.101.8": "$(li)实体,如我自己、鸡、矿车等。$(li)虚指,一种代表抽象概念的奇怪的 iota。$(li)图案,用于制作魔法物品,也用在某些烧脑的咒术中,如$(italic)能施放其他法术的法术/$。还有$(li)列表,可由上述任意类型的 iota 构成的列表,其本身相当于一个 iota。", + "hexcasting.page.101.9": "当然,天上不会掉馅饼。一部分操作、还有所有法术都会消耗$(media)媒质/$。$(br2)我个人认为,$(hex)咒术/$有点像呈现给自然的、对各类操作的规划。要这么类比的话,$(media)媒质/$便是用来为这个规划提供各式参数和运行支持的能源,而自然会接受你的规划并付诸实践。", + "hexcasting.page.101.10": "除此之外,似乎没人研究过每块$(l:items/amethyst)$(item)紫水晶/$到底含有$(italic)多少/$媒质。我只能得出,一个$(l:items/amethyst)$(item)紫水晶碎片/$大概和五个$(l:items/amethyst)$(item)紫水晶粉/$相当,而一个$(l:items/amethyst)$(item)充能紫水晶/$大概与十个相当。$(br2)而且奇怪之处在于$(l:items/amethyst)$(item)紫水晶/$的其余形态均不适于施放$(hex)咒术/$。推测是因为紫水晶块和晶簇固化程度过高,导致其无法被轻易拆散为$(media)媒质/$。", + "hexcasting.page.101.11": "还需格外注意的是每次操作会在执行时立刻消耗其所需的$(media)媒质/$,而非在整个咒术结束时消耗。而且,一次操作会消耗一个物品,如只需要一个$(l:items/amethyst)$(item)紫水晶粉/$量的$(media)媒质/$的操作也会消耗一个$(l:items/amethyst)$(item)充能紫水晶/$,前提是物品栏里只有充能紫水晶。$(br2)因此,将紫水晶粉碎是个不错的点子。勤俭节约,吃穿不缺。", + "hexcasting.page.101.12": "还要注意物品栏内一定要有足够的紫水晶。一些古代文献提及,自然也会将施法者的意识用作媒质。文献也有提到那种感觉很糟糕但又奇怪地让人兴奋,“……热烈地溶解入光与能量中……”。也许这就是为何先前的研究者最终都疯了。我完全不觉得为力量而放弃部分意识会对身体有任何$(italic)好处/$。", + "hexcasting.page.101.13": "但也许确实有东西和文献所记述的有所不同了。在我的实验中,我从没遇到过文献中提到的情况。如果$(media)媒质/$不够了,法术只是单纯地施放不了,就好像有什么屏障在防止我被伤到一样。$(br2)对此刨根问底肯定能得出些有意思的结论,但现在就暂时认为它会保护我吧。", + "hexcasting.page.101.14": "我还发现了一则趣闻,主要讲述为何许多魔法研究者都近乎疯癫,是不错的休闲趣味读物,虽然对不上我这里的世界观。$(br2)$(italic)内容警告:部分肉体恐怖与暗示类材料。/$", + "hexcasting.page.101.14.link_text": "Goblin Punch", + "hexcasting.page.101.15": "最后,法术的影响是有距离限制的,最远大约是距离我 32 格处。若试图影响该范围外的事物,法术便不会生效。$(br2)尽管如此,我可以凭借代表玩家的 iota 在任何地方影响他们。当然影响仅限于玩家本身,若玩家周围的环境超出我的影响范围,那些位置便不受影响。$(br)必须谨慎考虑要不要给别人代表我的 iota。友善的$(hex)咒术师/$可凭此助你行事,但那些心怀鬼胎的就不好说了。", + "hexcasting.page.whats_a_hex.1": "从概念上看,$(hex)咒术/$和$(l:casting/101)咒术 101/$ 里描述的完全一致:一系列操作,通常以在世界中产生特定效果为执行目的,并会通过法术实现这一需求。$(br2)对于随写随用的$(hex)咒术/$而言,这么想没有问题;但要是希望为后人留下记录和参考(或者只是方便我自己使用),或许就需要再具体一点的概念了。", + "hexcasting.page.whats_a_hex.2": "通常来说,$(hex)咒术/$是一个图案 iota 列表,和在$(l:patterns/patterns_as_iotas)图案转义/$中提及的一致。而将这种形式的$(hex)咒术/$入栈后,即可用$(l:patterns/meta#hexcasting:eval)赫尔墨斯之策略/$等元运行图案施放,或灌注到$(l:items/hexcasting)施法物品/$中以供后用。$(br2)这个列表和其他的列表 iota 没有本质区别——我可以操作列表本身,或将其保存到$(l:items/thought_knot)永久性/$$(l:items/focus)存储位置/$,甚至可以再嵌入到其他$(hex)咒术/$中去。", + "hexcasting.page.whats_a_hex.3": "需注意,这类列表不需要全由图案组成。虽然直接插入非图案 iota 通常会导致$(hex)咒术/$无法正常运作,但也有$(l:patterns/patterns_as_iotas#iota_embedding)相应的操作/$能规避麻烦。而且,部分$(l:patterns/meta#hexcasting:eval/cc)特殊 iota/$ 可以直接和图案一样运行。$(br2)清楚这一点后,其实$(o)所有/$列表都可以是$(hex)咒术/$——唯一的要求就是能成功施放。", + "hexcasting.page.vectors.1": "要用这门技艺干任何有用的事,似乎都需要掌握向量。向量是一组三个数,可用于代表许多事物,常见的例子有世界中的位置、两位置间的偏移量、空间中的方向。后页是对向量原理的简单总结,以及对有关应用的简要介绍。", + "hexcasting.page.vectors.2": "作为$(hex)咒术师/$,我能接触到的所有向量均是三维,因为我所处的世界就是三维的。$(br2)向量的分量按顺序为 X 分量、Y 分量、Z 分量,分别对应着世界的三个坐标轴:东西向的 X 轴、上下向的 Y 轴,以及南北向的 Z 轴。", + "hexcasting.page.vectors.3": "向量最基础的使用方法是用来代表$(o)位置/$,即代表世界中的某个定点——可以是方块的位置、实体的位置,若是法术需要,甚至能是空气中的某一处。$(br2)位置向量其实只是相应位置三个坐标的集合。不过,不是所有向量都代表着位置。", + "hexcasting.page.vectors.4": "已知某个方块的位置,若要指向它上方的方块,就需要向 Y 分量加 1:可以创建值为 (0, 1, 0) 的第二个向量与原有向量求和。类似地,若要指向它东边两格处,可使用值为 (2, 0, 0) 的向量。例中用到的两个向量都代表着从原有位置指向新位置的$(o)偏移量/$。", + "hexcasting.page.vectors.5": "注意,虽然位置向量和偏移向量含义不同,但它们在本质上没有区别——都只是三个数组成的集合。只要我想,所有向量都可以看作一类:位置不过是从世界原点指向对应位置的偏移,偏移也不过是相对于其他原点的位置。", + "hexcasting.page.vectors.6": "向量有两个重要属性,分别是$(o)模长/$(长度)和$(o)方向/$;把向量看作偏移可能会方便想象。$(br2)选取一个原点,再按照偏移向量直线移动,走过的距离即是向量的长度,走的方向则是向量的方向。", + "hexcasting.page.vectors.7": "向量有许多操作方法。如前例所说,向量可求和,即对 X、Y、Z 分量分别求和。减法也是一样——恰巧,两个位置向量的差正是减向量指向被减向量的偏移。$(br2)向量的乘除则不甚容易;有关这两种运算的介绍可参见$(l:https://www.mathsisfun.com/algebra/vectors-dot-product.html)这里/$和$(l:https://www.mathsisfun.com/algebra/vectors-cross-product.html)这里/$。", + "hexcasting.page.vectors.8": "以数乘或除向量可进行$(o)缩放/$,即同时让三个分量乘以或除以该数。$(br2)只要所用的数是正数,乘除便只会影响长度,不影响方向。若用的是负数,那么长度会和用正数时一样增减,且同时会反转向量的方向。", + "hexcasting.page.vectors.9": "让向量除以其长度会得到单位向量——方向不变,但长度恰变为 1。在只看重向量的方向时,单位向量就很合适。单位向量数乘后,所得向量的长度恰为所用的数,这一性质也很有用。$(br2)许多会计算方向的图案,比如$(l:patterns/basics#hexcasting:get_entity_look)照准仪之纯化/$,返回的就是单位向量。", + "hexcasting.page.vectors.10": "到目前为止提及的所有运算,以及还未提及的那些,都可通过$(l:patterns/math)数学/$章节中的图案实现。$(br2)我可以通过$(l:patterns/basics)基础图案/$将实体的信息获取为新向量,可以使用$(l:patterns/consts)常量/$来创建坐标轴向的单位向量,也可通过$(l:patterns/math#hexcasting:construct_vec)向量之提整/$将三个数组合为向量。", + "hexcasting.page.vectors.11": "对于与向量有关的那些更为高深的概念,我可能会在这本笔记之外再进行些拓展研究。下方的视频则是不错的参考资料。", + "hexcasting.page.vectors.11.link_text": "3blue1brown", + "hexcasting.page.mishaps.1": "不幸的是,我(还)不是一个完美的生物。我经常会在研究中和施放$(hex)咒术/$时犯错。比如说,绘制错图案,或是对错误的 iota 进行操作。而自然一般不会宽容我的错误,从而导致$(italic)事故/$。", + "hexcasting.page.mishaps.2": "导致事故的图案会在网格中发红光。根据事故的类型,我能大致推断出其造成的有害后果。同时会有一簇红色与各色混合的火花四散开去,这主要是处理不当的$(media)媒质/$凝结为某种颜色的光所致。", + "hexcasting.page.mishaps.3": "而幸运的是,虽然所有事故导致的有害效果都$(italic)很烦人/$,但也都不会导致长期毁灭性后果。在哪里跌倒,就要在哪里站起来,然后继续前进……当然也可以换一条更好走的路。$(br2)我整理的所有事故如下所述。", + "hexcasting.page.mishaps.invalid_pattern.title": "无效图案", + "hexcasting.page.mishaps.invalid_pattern": "绘制的图案不对应任何操作。$(br2)产生黄色火花,并向栈顶压入一个$(thing)垃圾/$。", + "hexcasting.page.mishaps.not_enough_iotas.title": "Iota 过少", + "hexcasting.page.mishaps.not_enough_iotas": "该操作需要比当前栈中元素数还多的 iota。$(br2)产生淡灰色火花,并向栈顶压入缺少的参数的数量个$(thing)垃圾/$。", + "hexcasting.page.mishaps.stack_size.title": "Iota 过多", + "hexcasting.page.mishaps.stack_size": "试图施放超出栈大小限制的法术。$(br2)产生黑色火花,我的整个栈变为仅含有单个$(thing)垃圾/$。", + "hexcasting.page.mishaps.incorrect_iota.title": "Iota 错误", + "hexcasting.page.mishaps.incorrect_iota": "该操作需要一种特定类型的 iota 作为参数,而实际 iota 无效。如果有多个 iota 无效,错误信息只会提示最靠近栈底的错误。$(br2)产生深灰色火花,无效的 iota 会被替换为$(thing)垃圾/$。", + "hexcasting.page.mishaps.vector_out_of_range.title": "向量越界", + "hexcasting.page.mishaps.vector_out_of_range": "该操作试图影响在我影响范围之外的某一位置。$(br2)产生品红色火花,我手中的物品将会掉落并飞向对应位置。", + "hexcasting.page.mishaps.entity_out_of_range.title": "实体越界", + "hexcasting.page.mishaps.entity_out_of_range": "该操作试图影响在我影响范围之外的某一实体。$(br2)产生粉红色火花,我手中的物品将会掉落并飞向对应实体。", + "hexcasting.page.mishaps.entity_immune.title": "实体免疫", + "hexcasting.page.mishaps.entity_immune": "该操作试图影响某不会受其影响的实体。$(br2)产生蓝色火花,我手中的物品将会掉落并飞向对应实体。", + "hexcasting.page.mishaps.math_error.title": "数学错误", + "hexcasting.page.mishaps.math_error": "该操作违背了数学规律,例如试图除以零。$(br2)产生红色火花,压入一个$(thing)垃圾/$,并销蚀我的意识,扣去我当时生命力的一半。自然似乎对这种举动深感冒犯,而后便会报复性地惩罚$(italic)我/$。", + "hexcasting.page.mishaps.incorrect_item.title": "物品错误", + "hexcasting.page.mishaps.incorrect_item": "该操作需要某种物品,而我提供的物品不合适。$(br2)产生棕色火花。如果在手中持有对应物品,则该物品会掉落在地。如果对应物品以实体形式存在,则其会被击飞。", + "hexcasting.page.mishaps.incorrect_block.title": "方块错误", + "hexcasting.page.mishaps.incorrect_block": "该操作需在目标位置存在某种方块,而该位置实际存在的方块不合适。$(br2)产生亮绿色火花,并在对应位置产生一次爆炸。这种爆炸似乎不会伤害到我、世界或是任何其他事物。就是挺吓人的。", + "hexcasting.page.mishaps.needs_parens.title": "内省缺失", + "hexcasting.page.mishaps.needs_parens": "试图在绘制$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$之前直接绘制仅能在其中使用的图案。$(br2)产生橙色火花,并将我试图绘制的图案作为 iota 压栈。", + "hexcasting.page.mishaps.too_many_patterns.title": "陷入沉思", + "hexcasting.page.mishaps.too_many_patterns": "试图在单个$(hex)咒术/$内运行过多图案,通常是因为不小心制造了死循环。$(br2)产生暗蓝色火花,并使我窒息。", + "hexcasting.page.mishaps.true_name.title": "违犯他人", + "hexcasting.page.mishaps.true_name": "试图在某种永久性媒介中$(l:patterns/readwrite#hexcasting:write)$(action)存储/$代表另一位玩家的 iota。$(br2)产生黑色火花,并致盲大约一分钟。", + "hexcasting.page.mishaps.disabled.title": "禁用操作", + "hexcasting.page.mishaps.disabled": "试图执行被服务器管理员禁用的操作。$(br2)产生黑色火花。", + "hexcasting.page.mishaps.other.title": "灾难性故障", + "hexcasting.page.mishaps.other": "模组中的漏洞产生的无效类型的 iota 或是其他错误导致法术失效。$(l:https://github.com/gamma-delta/HexMod/issues)请报告该漏洞!/$$(br2)产生黑色火花。", + "hexcasting.page.stack.1": "$(thing)栈/$,又被称为“后进先出表(LIFO)”,是计算机科学中的概念。简而言之,栈是一种只能与最近交互过的事物交互的事物集合。$(br2)想象一摞盘子,新盘子会被放在其顶部。若想要与放在这摞盘子中间的某个盘子交互,你就必须先将它上面的所有盘子拿开才行。", + "hexcasting.page.stack.2": "因为栈非常简单,所以可用的交互种类屈指可数:$(li)$(italic)向其中加入事物/$,称为“入栈”“压栈”/“push”。$(li)$(italic)移除最后加入的元素/$,称为“出栈”“弹栈”/“pop”。$(li)$(italic)校验或修改最后加入的元素/$,称为“检视”/“peek”。$(br)我们将最后加入的元素称为“栈顶元素”,就和盘子的类比差不多。$(p)举个例子,如果向栈压入 1 号元素,然后压入 2 号元素,然后弹出一个元素,这时栈顶元素便是 1 号元素。", + "hexcasting.page.stack.3": "操作(大致)都只能与栈以如上几种方式交互。它们会弹出部分它们所期望的 iota(称为“参数”),对它们进行处理,然后压入一定数目的结果。$(br2)当然,某些操作(例如$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$)可能不会弹出任何元素,而某些操作(尤其是法术)可能不会压入任何元素。", + "hexcasting.page.stack.4": "更复杂的操作都可用若干次入栈、出栈或检视操作实现。例如,$(l:patterns/stackmanip#hexcasting:swap)$(action)弄臣之策略/$交换栈顶两个元素的顺序。这可认为是弹出两个 iota 并以相反顺序重新压入。又例如,$(l:patterns/stackmanip#hexcasting:duplicate)$(action)双子之分解/$会复制栈顶元素,也即其检视栈顶并压入一个一样的元素。", + "hexcasting.page.naming.1": "古人给各类操作命的名确实很奇特,但我认为其中总有某种命名逻辑。$(br2)似乎各式操作均被分入了若干组,组内的操作命名方式类似——以其要移除和加入的 iota 个数命名。", + "hexcasting.page.naming.2": "$(li)$(thing)精思/$不出栈,入栈一个 iota。$(li)$(thing)纯化/$出栈一个,入栈一个。$(li)$(thing)馏化/$出栈两个,入栈一个。$(li)$(thing)提整/$出栈三个或更多,入栈一个。$(li)$(thing)分解/$出栈一个,入栈两个。$(li)$(thing)拆解/$出栈一个,入栈三个或更多。$(li)$(thing)策略/$则对应其余出栈入栈操作(或会以某种方式重新排列栈的操作)。", + "hexcasting.page.naming.3": "法术不受此命名法约束,而是以其效用命名。毕竟,能叫它$(l:patterns/spells/basic#hexcasting:explode)$(action)爆炸/$,为何还要起个像是“$(action)爆破兵之策略/$”的名字呢?", + "hexcasting.page.mishaps2.1": "我发现了若干骇人的新事故。我绝不能向它们屈服。", + "hexcasting.page.mishaps2.bad_mindflay.title": "惰性剥离", + "hexcasting.page.mishaps2.bad_mindflay": "试图剥离已被剥除意识的生物的意识,或是试图剥离不适用于目标方块的生物的意识。$(br2)产生暗绿色火花。已被剥离过的生物会直接死亡,而只是不适用的则仅会遭受轻微伤害。", + "hexcasting.page.mishaps2.no_circle.title": "缺失法术环", + "hexcasting.page.mishaps2.no_circle": "试图直接执行只能在法术环内执行的操作。$(br2)产生淡蓝色火花,并将我物品栏中所有物品散落在地。", + "hexcasting.page.mishaps2.no_record.title": "缺失阿卡夏记录", + "hexcasting.page.mishaps2.no_record": "试图在无对应方块处访问$(l:greatwork/akashiclib)$(item)阿卡夏记录/$。$(br2)产生紫色火花,并消耗部分经验。", + "hexcasting.page.mishaps2.bad_shepherd.title": "不当牧羊", + "hexcasting.page.mishaps2.bad_shepherd": "试图在栈顶无布尔值时激活$(l:greatwork/directrix)$(item)牧羊人导向石/$。$(br2)产生红色和白色火花,并将牧羊人导向石抛出环外。只能说,还好不会伤到它,但这之后需要把它带回到原来的位置。", + "hexcasting.page.amethyst.dust": "破坏晶洞里的紫水晶会产生三种形态的紫水晶。紫水晶量最少的物品是一堆闪着光的粉末,含有较少量的$(media)媒质/$。", + "hexcasting.page.amethyst.shard": "第二种是紫水晶的碎片,也就是不是$(hex)咒术师/$的人们最为熟悉的。这种碎片大约含有 5 个$(l:items/amethyst)$(item)紫水晶粉/$量的$(media)媒质/$。", + "hexcasting.page.amethyst.crystal": "最后,偶尔能发现充盈着能量的大型水晶。它们含有大约 10 个$(l:items/amethyst)$(item)紫水晶粉/$(也即两个$(l:items/amethyst)$(item)紫水晶碎片/$)量的$(media)媒质/$。", + "hexcasting.page.amethyst.lore": "$(italic)老人叹了口气,对着火炉伸出了一只手。他回想起自己对周边山脉的记忆,从那些土地中汲取能量——就像他在泰瑞西亚城从札夫拿、河鼓、主教还有象牙塔中的其它法师身上学到的那样。他集中精神,从柴薪中升起的火焰摇摆扭动,最终形成了一抹温柔的微笑。/$", + "hexcasting.page.staff.1": "$(l:items/staff)$(item)法杖/$是我尝试施放各类$(hex)咒术/$的起点。手持时按下$(thing)$(k:use)/$,就算开始了施放$(hex)咒术/$的过程。然后单击拖动绘制图案就可以了。$(br2)它还是和单纯把一小块$(media)媒质/$放在木棍的一端有所不同,但不管怎么说,能用就行。", + "hexcasting.page.staff.crafting.header": "法杖", + "hexcasting.page.staff.crafting.desc": "$(italic)施法不规范,自己两行泪。/$", + "hexcasting.page.lens.1": "$(media)媒质/$在某些特殊情况下能和任何信息作用而产生奇异效果。而若是在玻璃上覆上薄薄一层媒质,就能……生出些独特的见地。$(br2)手持$(l:items/lens)$(item)探知透镜/$观察某些方块,就能给出一些额外信息。", + "hexcasting.page.lens.2": "例如,看向$(item)红石粉/$会给出其信号强度。我猜测随着研究的深入,还能发现新的额外信息。$(br2)此外,用$(l:items/staff)$(item)法杖/$施法时,在另一只手持有探知透镜就能缩短点与点的间距,从而能在网格上绘制更多图案。$(br2)我还可以把它当单片眼镜戴在头上。", + "hexcasting.page.lens.crafting.desc": "$(italic)你必须学会……探知你所看到的事物。/$", + "hexcasting.page.thought_knot.1": "健忘者常在手指上缠绕丝线以助记忆。我也坚信我的咒法技艺能活用这种做法。以特定方式绑出的绳结应该能稳定存储一个 iota,且能独立于栈存在。$(br2)我将其称为“$(item)结念绳/$”。", + "hexcasting.page.thought_knot.2": "在初合成时,它的存储空间内没有 iota。在另一只手持有$(item)结念绳/$时,绘制$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$就会将栈顶 iota 移除并存入$(item)结念绳/$。绘制$(l:patterns/readwrite#hexcasting:read)$(action)书吏之精思/$则会将$(item)结念绳/$中 iota 复制出来并压入栈顶。$(br2)一旦将 iota 写入$(item)结念绳/$,绳结本身便不再能解开。其中 iota 可被随意读取,但不可被清除或覆写。不过还好,这些绳结十分易得。", + "hexcasting.page.thought_knot.3": "另外,如果我在$(item)结念绳/$中写入一个实体,然后在该实体死亡或消失后尝试复制,则$(l:patterns/readwrite#hexcasting:read)$(action)书吏之精思/$会压入一个 $(thing)Null/$。", + "hexcasting.page.thought_knot.crafting.desc": "$(italic)别人要是看到你带着块牌子,上面写着“本人风度翩翩,品貌非凡”,你又会作何感想?/$", + "hexcasting.page.focus.1": "$(item)核心/$和$(l:items/thought_knot)$(item)结念绳/$类似,也即两者都可用于读写 iota。不过,核心的优势在于它可以$(italic)重复使用/$。如果我在写入$(item)核心/$后发现手误,可以直接再次施放$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$以覆写其中 iota。", + "hexcasting.page.focus.2": "若希望给$(l:items/focus)$(item)核心/$加上防护,避免误操作覆写,可以将其与$(item)蜜脾/$合成进行蜡封。对蜡封的核心使用$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$会失败。$(br2)$(l:patterns/spells/hexcasting#hexcasting:erase)$(action)清除物品/$能同时去除蜡封和其中的内容。", + "hexcasting.page.focus.3": "不过,$(l:items/thought_knot)$(item)结念绳/$对$(item)核心/$也有优势,因为$(item)核心/$相较之下要昂贵许多。我的研究表明,早期的习艺者只使用$(item)核心/$,$(l:items/thought_knot)$(item)结念绳/$则完全是我的原创发明。$(br2)古代人的生活肯定是相当优渥富足了。", + "hexcasting.page.focus.crafting.desc": "$(italic)毒苹果,毒虫子。/$", + "hexcasting.page.abacus.1": "虽然有$(l:patterns/numbers)$(action)对应数的图案/$,但它们确实……过于复杂。$(br2)幸运的是,从前研究这门学问的大师们发明了一个名为“$(l:items/abacus)$(item)算盘/$”的天才般的装置,它们能极为方便地表示数。只需要在其上设定好,然后用$(l:patterns/readwrite#hexcasting:read)$(action)书吏之精思/$把值读出即可,就和读出$(l:items/focus)$(item)核心/$中 iota 的操作一样。", + "hexcasting.page.abacus.2": "操作方法是潜行时手持算盘滚动滚轮。如果是主手持算盘,则其数值会以 1 增加或减少,按住 $(k:sprint) 时则以 10。若是副手持算盘,则其数值会以 0.1 增加或减少,按住 $(k:sprint) 时则以 0.01。$(br2)也可以在潜行时手持算盘右击以重设为 0。", + "hexcasting.page.abacus.crafting.desc": "$(italic)数学?那是给聪明人用的!/$", + "hexcasting.page.spellbook.1": "$(l:items/spellbook)$(item)法术书/$是我研究成果的结晶。它像是一座满是$(l:items/focus)$(item)核心/$的图书馆。准确的说是最多能存放 $(thing)64/$ 个。$(br2)每一页都能存储一个 iota。手持法术书时,可在潜行时用滚轮自由选择当前活动页(存储和复制 iota 的目标页),也可在施放$(hex)咒术/$时副手手持,并直接用滚轮改变活动页。", + "hexcasting.page.spellbook.2": "就像$(l:items/focus)$(item)核心/$一样,法术书也有防覆写机制。将其和$(item)蜜脾/$合成就能给当前页上漆,从而防止$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$改变其内容。而清除也和$(l:items/focus)$(item)核心/$一样,使用$(l:patterns/spells/hexcasting#hexcasting:erase)$(action)清除物品/$就能同时去除漆封和当前页的内容。$(br2)也可在铁砧上改变当前书页的名字,方便查找。", + "hexcasting.page.spellbook.crafting.desc": "$(italic)巫师们喜欢阅读。大多数巫师经常阅读,而且睡前一定要读些什么确实是判断一个人是不是巫师的有效方法。/$", + "hexcasting.page.scroll.1": "$(l:items/scroll)$(item)卷轴/$能让分享图案画法变得十分方便。可用$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$将图案复制上去,然后该图案就会出现在物品提示栏内。$(br2)也可以将其放在墙上用作装饰或用于教学。就和画一样,卷轴也分大小,从 1x1 到 3x3 都有。对挂在墙上的卷轴使用$(l:items/amethyst)$(item)紫水晶粉/$能显示绘制的笔画顺序。", + "hexcasting.page.scroll.2": "此外,我还在地牢和要塞里发现了所谓$(l:items/scroll)$(item)远古卷轴/$。它们记载了一些特殊法术的笔画顺序——$(thing)卓越法术/$,传闻是强大到凡人的意识无法承受的法术……$(br2)但如果那些“凡人”施放不了,那我觉得他们就不应该知道这些法术的存在。", + "hexcasting.page.scroll.crafting.desc": "$(italic)我用锐利的笔和学生的鲜血在洁白的纸上书写,探知着他们的秘密。/$", + "hexcasting.page.slate.1": "$(l:items/slate)$(item)石板/$和$(l:items/scroll)$(item)卷轴/$类似,可以将图案复制上去并放置在世界中以展示该图案。$(br2)然而,我曾读到过某些粗略的故事,它们记述了一种用$(l:items/slate)$(item)石板/$组成的伟大结构,用来施放$(l:items/staff)$(item)法杖/$无法施放的$(l:greatwork/spellcircles)$(thing)伟大仪式/$。", + "hexcasting.page.slate.2": "也许我将来就会碰到这些知识。但就现在而言,我觉得它们非常适合装饰。$(br2)至少它们可以放在方块的任何一面,这点和$(l:items/scroll)$(item)卷轴/$不同。", + "hexcasting.page.slate.crafting.desc": "$(italic)这就是横竖撇捺了。要记牢。/$", + "hexcasting.page.slate.3": "我还发现了其他类型的$(l:items/slate)$(item)石板/$,它们并未刻有图案,但似乎内嵌有某种……奇怪的……异常构造。单单思考它们就让我头脑胀痛,就好像我的思维被它们的结构折弯,随着它们的回路流动,迷失在它们迷宫般的深渊中,迷失在迷失在迷失在导向到处理为——$(br2)……我的思维差点就被搅乱了。还是之后再做相关研究吧。", + "hexcasting.page.hexcasting.1": "虽然用$(l:items/staff)$(item)法杖/$直接施放$(hex)咒术/$确实足够灵活易用,但仅凭法杖重复施放同一种咒术就很烦人了。如果能将某些常用$(hex)咒术/$存储起来后续直接使用,就再方便不过了,同时也方便我与朋友分享这些$(hex)咒术/$。", + "hexcasting.page.hexcasting.2": "以下三种魔法物品就能做到这点:$(l:items/hexcasting)$(item)杂件/$,$(l:items/hexcasting)$(item)缀品/$和$(l:items/hexcasting)$(item)造物/$。所有三种物品都能存储$(hex)咒术/$对应的所有图案,且都有一个用来存储$(media)媒质/$的小储库。$(br2)手持时按下$(thing)$(k:use)/$就会消耗其内含的媒质像用法杖施法那样运行其中图案。", + "hexcasting.page.hexcasting.3": "每种物品都有自己的特点:$(br2)$(l:items/hexcasting)$(item)杂件/$很脆弱,在耗尽其内含的$(media)媒质/$后就会损坏,$(italic)不可/$重新充能。$(br2)$(l:items/hexcasting)$(item)缀品/$则只要还有剩余的$(media)媒质/$就能一直施法,但媒质耗尽后若不重新充能就无法使用。", + "hexcasting.page.hexcasting.4": "$(l:items/hexcasting)$(item)造物/$是三者之中最强力的——其内含的$(media)媒质/$耗尽后,它们还能消耗持有者物品栏内的$(l:items/amethyst)$(item)紫水晶/$来施放$(hex)咒术/$,就和用$(l:items/staff)$(item)法杖/$施法一样。不过这也意味着,一旦$(l:items/amethyst)$(item)紫水晶/$不够,继续施法可能会消耗施法者的意识。$(br2)而在工作台中合成魔法物品后,必须将$(hex)咒术/$以适合对应物品的法术写入其中。(也没什么其他办法。)$(l:patterns/spells/hexcasting)对应的图案详情见此。/$", + "hexcasting.page.hexcasting.5": "每次写入都需要栈上有一个实体和一个 $(l:casting/whats_a_hex)iota 列表/$。这个实体必须是一个含有$(media)媒质/$的物品实体(也即掉落在地上的$(l:items/amethyst)$(item)紫水晶/$)。该实体会变成该魔法物品的内部储库。$(br2)似乎储库中的$(media)媒质/$不会像用$(l:items/staff)$(item)法杖/$施法那样以物品组为单位消耗。其中的$(media)媒质/$实际上会“溶解”入一个连续的能量池。因此,当物品中存有会消耗 1 个$(l:items/amethyst)$(item)紫水晶粉/$中媒质来施放的$(hex)咒术/$时,含有相当于 1 个$(l:items/amethyst)$(item)充能紫水晶/$中媒质的储库能支持施放该咒术 10 次。", + "hexcasting.page.hexcasting.crafting.desc": "$(italic)我们常说一句话,“魔法从不……”。它从不“就是行得通”,它不会随你操控。你不能光靠所谓魔法扔个火球,烧顿晚饭,或是把一帮劫匪变成青蛙和蜗牛。/$", + "hexcasting.page.ancient_cyphers.1": "在四处探险的过程中,我找到了一些$(l:items/hexcasting)$(item)杂件/$,似乎是古代的咒术师们制造后残存至今的。这些$(item)远古杂件/$的功能和我自己制作的基本一致:都不可再充能,其中$(media)媒质/$耗尽后也都会碎掉。两者间的不同点则在于:搜刮到的$(l:items/hexcasting)$(item)杂件/$的结构已经残破,我可以借此窥探其中的$(hex)咒术/$。", + "hexcasting.page.ancient_cyphers.2": "这些物件大概很适合用来学新技巧——若要在授业解惑方面将古代的大师们排第二,就没人能称第一了。$(br2)此外,还可清除其中的$(hex)咒术/$换成我自己写的,如此就得到了能显示自身功能的施法物品。", + "hexcasting.page.ancient_cyphers.3": "这些古物用到的$(l:items/pigments)$(item)染色剂/$是独特的紫橙混色,和它们由铜还有紫水晶构成的外在表现很搭。可用上方的配方再现这种染色剂。", + "hexcasting.page.phials.1": "我觉得……自然不愿意给我的研究留些余量的做法,令人非常不快。如果我手头只有$(l:items/amethyst)$(item)充能紫水晶/$,就算是最为基础的$(l:patterns/basics#hexcasting:raycast)$(action)弓箭手之馏化/$也会消耗一整块水晶,没利用的$(media)媒质/$就被浪费了。$(br2)幸运的是,我找到了一种解决问题的方法。", + "hexcasting.page.phials.2": "我找到了记载着一种注入了$(media)媒质/$的$(item)玻璃瓶/$的卷轴。施放$(hex)咒术/$时,法术会从这种试剂瓶中汲取$(media)媒质/$。液态的$(media)媒质/$便于按量使用,不会有媒质被浪费。它就和$(l:items/hexcasting)$(item)缀品/$的内部储库差不多,也一样可以用$(l:patterns/spells/hexcasting#hexcasting:recharge)$(action)重新充能/$补充媒质。", + "hexcasting.page.phials.3": "而不幸的是,用于$(italic)制作/$这种试剂瓶的技艺已经散佚了。我确实发现了$(l:patterns/great_spells/make_battery#hexcasting:craft/battery)$(thing)对应图案画法的提示/$,但具体绘制方法难以捉摸,怎么都画不对。不过我想只要勤学苦练就能修得真功。现在的话,浪费$(media)媒质/$是没法避免了……$(br2)但我不会一直囿于此处的。", + "hexcasting.page.phials.desc": "$(italic)玉液琼浆。/$", + "hexcasting.page.potions.1": "透过$(l:items/lens)$(item)探知透镜/$观察,就能在咒术网格里塞进更多图案。想让施法变得更紧凑?我想炼金术可能有方法。$(br2)向$(item)粗制的药水/$里放进一撮紫水晶粉,酿成的药水便能像透镜那样增大我的咒术网格。甚至还能两者一起使用,将网格推向极致!", + "hexcasting.page.potions.2": "明晰效果可延长,可增强,也可如同其他药水那样精制。$(br2)还可用$(item)发酵蛛眼/$腐化,以产生效果相反的药水。那些不怀好意的咒术师可以尝尝它的威力。", + "hexcasting.page.potions.effects.header": "明晰与蒙翳", + "hexcasting.page.pigments.1": "咒法学的古代研究者们偶尔会用一种颜色来象征自己和自己的$(hex)咒术/$。他们的名字已不可考,但那些颜色留存至今。倘若直接向自然呈上一种特殊的染色剂,就能“……以自然乐见的方式为某人的思维涂上颜色,并使个人代表色产生奇妙的变化。”", + "hexcasting.page.pigments.2": "我不懂它们的具体原理,但我相信我已琢磨出制造不同颜色染色剂的配方了。若要使用染色剂,可手持之并以另一只手施放$(l:patterns/spells/colorize)$(action)内化染色剂/$,染色剂则会被消耗。$(br2)染色剂似乎会影响我施放$(hex)咒术/$时的$(media)媒质/$火花以及我的$(l:patterns/spells/sentinels)$(thing)哨卫/$的颜色,但影响到其他地方也完全是正常现象。", + "hexcasting.page.pigments.colored.crafting.header": "色彩染色剂", + "hexcasting.page.pigments.colored.crafting.desc": "五彩缤纷的染色剂。", + "hexcasting.page.pigments.special": "最后还有两种特殊的染色剂。$(item)灵魂闪光染色剂/$的颜色为我所独有,而$(item)空无染色剂/$则会重置为初始状态的紫水晶色。$(br2)$(italic)以及许多还没被研究出来的内在颜色。/$", + "hexcasting.page.edified.1": "用$(l:patterns/spells/blockworks#hexcasting:edify)$(action)启迪树苗/$就能将部分$(media)媒质/$注入树苗,从而造出$(l:items/edified)$(thing)启迪树/$。它们又高又尖,树皮上有特殊纹理。树叶则有三种不同颜色。", + "hexcasting.page.edified.2": "我觉得这种木材与$(hex)咒法学/$有着紧密的联系。但就算真有,我也完全找不到这联系在哪。它和普通木头如出一辙,不同只在于颜色不一样。$(br2)就现在而言,它们是很好的装饰用方块。$(br2)当然,也可用斧来去皮。", + "hexcasting.page.edified.crafting.desc": "$(italic)它们那周身洁白的巨大而光滑的树干,仅凭自己支撑起了茂密的树冠,投下绿荫与静谧。/$", + "hexcasting.page.jeweler_hammer.1": "在无数次摧毁$(media)媒质/$来源的惨痛经历后,我设计了一把用于防止手滑的工具。$(br2)将脆弱的晶态$(media)媒质/$用作镐的固定结,就得到了$(l:items/jeweler_hammer)$(item)珠宝匠锤/$。它和$(item)铁镐/$在许多方面完全一致,但珠宝匠锤不会破坏任何完整方块。", + "hexcasting.page.jeweler_hammer.crafting.desc": "$(italic)她小心翼翼地敲开那半块红宝石,让其中的灵体逸散而出。/$", + "hexcasting.page.decoration.1": "我在研究过程中发现了些挺美观的建筑方块的其他装饰品。制作方法整理如下。", + "hexcasting.page.decoration.ancient_scroll.crafting.desc": "棕色染料在仿制$(l:items/scroll)$(item)远古卷轴/$这方面表现非常出色。", + "hexcasting.page.decoration.tiles.crafting.desc": "$(l:items/decoration)$(item)紫水晶瓦/$也可在切石机内制作。$(br2)$(l:items/decoration)$(item)紫水晶粉块/$(见后页)受重力影响。", + "hexcasting.page.decoration.sconce.crafting.desc": "$(l:items/decoration)$(item)紫水晶灯台/$会发出光和粒子,并会产生悦耳的“叮铃”声。", + "hexcasting.page.the_work.1": "我所见甚多。不可言之物。不可数之物。仅三词就能将我的意识从里翻到外然后把我的大脑抹在头颅黑暗的内壁然后腐朽为混沌和虚无。", + "hexcasting.page.the_work.2": "我已见断续的图案与酸蚀的设计图刻入我的眼睑。它们阴燃,它们舞蹈,它们嘲弄,它们$(italic)隐隐作痛/$。我突然有种强烈的$(italic)冲动/$,去绘制它们,创造它们,写就它们。将它们从我脆弱意识的黏糊桎梏中释放,让它们在世上再度闪耀荣光。$(p)众将见。$(p)众必将见。", + "hexcasting.page.brainsweeping.1": "我解开了一个秘密。我得知了真相。我也无法忘记真相带来的恐惧。这种想法掠过我的脑海。$(br2)我曾相信——我曾愚蠢地$(italic)相信/$——$(media)媒质/$只是思维遗留下的剩余能量。但我现在$(italic)知道/$它究竟是什么了:它是思维$(italic)含有的/$能量。", + "hexcasting.page.brainsweeping.2": "媒质是在具有思维能力的生物思考时产生的,它的存在也使这些生物能够思考,就像是回环的绳结。我先前天真地拟人化为“自然”的实体实际上就是一个卓伟的媒质回环,又或许是所有回环的结合体,或者是……我思考它就会痛我有很多突触它们都能思考同时痛它们都能看见它们都能看见$(br2)我撑不住了。记笔记。赶快。", + "hexcasting.page.brainsweeping.3": "这个世界中的村民还留有能被提取的感知力。将这种感知力放在方块中,扭曲它,改变它。由不同的思维模式造就的精密图案,关于他们工作和生活的抽象神经通路,都被投射到无生气的固态物质的原子中。$(br2)这就是$(l:patterns/great_spells/brainsweep)$(action)剥离意识/$的用途,那个提取过程。需将村民实体和目标方块放在栈中。扭曲意识则要消耗 10 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.brainsweeping.budding_amethyst": "如下是一种实际用途。这个剥离过程接受任何职业的村民,前提是他们足够熟练。其他配方则有更具体的要求。我再也不必为$(media)媒质/$亲身沉入地狱了。", + "hexcasting.page.spellcircles.1": "我终于知道$(l:items/slate)$(item)石板/$的用途了。早已遗落的卓伟结构。镌刻其上的图案会按顺序自动运行。思维和能量在其中穿梭,一个接一个接一个接一个接一个穿梭穿梭穿梭——我不能我不能我不能跟着它的思维应该去理解。", + "hexcasting.page.spellcircles.2": "我需要$(l:greatwork/impetus)$(item)促动石/$作为一种自我维持的$(media)媒质/$波源来启动仪式。产生的波会随着$(l:items/slate)$(item)石板/$或是其他合适的方块穿梭,运行它碰到的图案。$(br2)如果波无法回到$(l:greatwork/impetus)$(item)促动石/$处,施法会立即失败。而且,波流出任何方块的方向必须唯一而确定,否则法术环会在分叉处失效。", + "hexcasting.page.spellcircles.3": "因此,法术“环”必须是一个封闭的图形,凹多边形和凸多边形均可,方向也随意。实际上,借助某些其他方块,法术环可在所有三个维度上随意排布。这种性质可能没什么大用,但我必须给大脑一点刺激,好让研究继续下去。", + "hexcasting.page.spellcircles.4": "真是精妙。法术环不会从我的物品栏或我的意识中汲取$(media)媒质/$,而是要通过漏斗(或类似装置)向$(l:greatwork/impetus)$(item)促动石/$提供晶态的$(media)媒质/$。$(br2)$(l:items/lens)$(item)探知透镜/$能以紫水晶粉为单位显示$(l:greatwork/impetus)$(item)促动石/$中的$(media)媒质/$量。", + "hexcasting.page.spellcircles.5": "然而,用法术环施放的法术有一个限制:它无法影响环外的事物。也即,它无法影响到能将整个法术环包起的最小长方体外的事物(有凹进部分的法术环仍能影响凹进部分内的事物)。", + "hexcasting.page.spellcircles.6": "在媒质波减弱前它只能通过有限个方块,但这个值很大,实际不大可能超过这个值。$(br2)相反地,有部分操作只能在法术环上执行,不过它们没有一个是法术。它们似乎都是处理法术环本身性质的操作。相关笔记$(l:patterns/circle)见此/$。", + "hexcasting.page.spellcircles.7": "我还在笔记中找到了一份草稿,是一个古代研究者使用的法术环。另一页上就是它的重绘图(挺抽象的)。$(br2)其中的图案会按逆时针运行,以$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$开始并以$(l:patterns/great_spells/teleport#hexcasting:teleport/great)$(action)卓越传送/$结束。", + "hexcasting.page.spellcircles.teleport_circle.title": "传送环", + "hexcasting.page.impetus.1": "启动法术环需要复杂的$(media)媒质/$波动。就算是眼神最好的、手最稳的的凡人也比不上能将$(media)媒质/$编织为自我维持的衔尾蛇的$(l:greatwork/impetus)$(item)促动石/$那般厉害。$(br2)问题就在于意识里有太多无用的$(italic)垃圾/$。", + "hexcasting.page.impetus.2": "从……形而上学层面上讲——我不能再有这种想法了,我不能让自己的思维被搅乱,我的思维非常重要——流动的$(media)媒质/$会推动意识,意识也必须被推动以使这一过程启动。但是,意识中的许多思维让意识变得十分$(italic)笨重/$,没法灵活行动。$(br2)就和让工匠戴着连指手套去修手表一样。", + "hexcasting.page.impetus.3": "这个难题有许多种解决方案。可以通过冥想或类似手段放空意识,尽管我不清楚放空到能启动法术环的意识还有没有足够的力量去执行那些操作。$(br2)某些不光彩的化合物也能产生类似效果,但我不了解它们也不想了解它们。我绝不能沉沦于给大脑喂化学品。", + "hexcasting.page.impetus.4": "我选择的解决方案,是特种化一个意识。将其从神经的暴政中释放,剪去除$(media)媒质/$操控装置外的一切功用件,烙封除启动信号口外的一切接收端口。$(br2)我现在已较为熟练掌握的$(l:greatwork/brainsweeping)$(action)剥离意识/$过程就能很好地做到这些。村民的意识复杂到足以启动法术环,但也还没复杂到能抵御扭曲。", + "hexcasting.page.impetus.empty_impetus": "第一步,基床。虽然和纯粹的$(l:greatwork/impetus)$(item)促动石/$不大一样,但它能让$(media)媒质/$从箭头所指方向流出。这就提供了一种改变媒质波所在平面的方法。", + "hexcasting.page.impetus.impetus_rightclick": "第二步,转移意识。村民职业的不同意味着$(l:greatwork/impetus)$(item)促动石/$激活条件的不同。$(l:greatwork/impetus)$(item)工具匠促动石/$会在对其按下$(k:use)时启动。", + "hexcasting.page.impetus.impetus_storedplayer.1": "$(l:greatwork/impetus)$(item)牧师促动石/$会在接收到红石信号时启动。也可将其绑定至某一玩家,对其使用存有代表玩家的 iota 的物品(例如$(l:items/focus)$(item)核心/$)即可。", + "hexcasting.page.impetus.impetus_storedplayer.2": "这种$(l:greatwork/impetus)$(item)促动石/$也使得被绑定的玩家和他们周围一小块区域会一直受法术环影响。不管该玩家离法术环多远都会和站在法术环里一样。$(br2)用$(l:items/lens)$(item)探知透镜/$观察$(l:greatwork/impetus)$(item)牧师促动石/$就会显示被绑定的玩家。", + "hexcasting.page.impetus.impetus_look": "$(l:greatwork/impetus)$(item)制箭师促动石/$会在被注视一段时间后启动。", + "hexcasting.page.directrix.1": "引导$(media)媒质/$比产生一个自我维持的媒质波简单许多。一般来说媒质波会在分叉处消散,但如果有一个用来指引的意识,媒质的流向就能被操控了。$(br2)这种操控所需的精度完全不比启动法术环的精度,我自己上都行……但封进一个意识实在是太方便了。", + "hexcasting.page.directrix.2": "$(l:greatwork/directrix)$(item)导向石/$会接受一个$(media)媒质/$波并决定它的流向,具体如何操控主要看其中的村民意识。$(br2)我不清楚是这个想法先找到我的,还是我的意识先产生这种想法的……如果这种想法是我的意识产生的,是我自己想出来的,那还能说是想法找到我吗?大脑是意识的容器意识是想法的容器想法思维容器思维全知思维全知——停,下。", + "hexcasting.page.directrix.empty_directrix": "第一步,基床……用“基底”这个名字会准确些。倘若没有意识引导,媒质的流向是由$(media)媒质/$波的微观涨落和环境决定的,换句话说,随机的。", + "hexcasting.page.directrix.directrix_redstone": "$(l:greatwork/directrix)$(item)石匠导向石/$会根据红石信号改变输出方向。没有信号的话,出口是$(media)媒质/$色的一端;有信号的话,出口是红石色的一端。", + "hexcasting.page.directrix.directrix_boolean": "$(l:greatwork/directrix)$(item)牧羊人导向石/$会从栈中弹出一个布尔值并据此改变输出方向。为 $(thing)True/$ 时,媒质自后方流出;为 $(thing)False/$ 时,媒质自前方流出。未能获取到布尔值则会招致事故。", + "hexcasting.page.akashiclib.1": "我所知甚多,将所知存于某处是唯一正途。信息能用书本存储但徒手书写以眼阅读非常非常非常非常$(italic)缓慢/$。我需要更好的方法。并且我必将找到。$(br2)……我的意识每况愈下……不知道我还有没有时间赶在满溢头脑的知识消散之前记下它们。", + "hexcasting.page.akashiclib.2": "一座图书馆。我的计划,如下。$(br2)就和图案与操作的对应关系一样,我能以我自己的方式将自创的图案与 iota 对应起来。$(l:greatwork/akashiclib)$(item)阿卡夏记录/$是图书馆的控制核心,而每个$(l:greatwork/akashiclib)$(item)阿卡夏书架/$存储一个映射。它们必须互相连接,直接贴在一起,不超过 128 格。$(l:greatwork/akashiclib)$(item)阿卡夏桥接块/$没有存储功能但被视为连接方块,从而增加图书馆的大小。", + "hexcasting.page.akashiclib.akashic_record": "存储和分配图案非常简单但太过磨人,我还有更要紧的事要做。剥离一个精于此道的意识能省很多麻烦。", + "hexcasting.page.akashiclib.3": "图书馆的使用方法很简单,交给图书管理员一个图案,然后他把对应的 iota 交给你。共有两个相关图案,$(l:patterns/akashic_patterns)笔记在此/$。$(br2)对书架使用一张空白的$(l:items/scroll)$(item)卷轴/$就能将图案复制到$(l:items/scroll)$(item)卷轴/$上。潜行时右击书架就能清除其中数据。", + "hexcasting.page.quenching_allays.1": "$(l)它们就是小块媒质。/$我怎么没早点发现呢?它们——我是一堆血肉再加上一小点……是被赐予了一小点的思维,但悦灵是能维持自稳的媒质集群,再被按到一小点血肉上去。所有东西就都说得通了——它们对媒质的趋向性,它们对音乐的种种反应,$(l)我现在理解了/$,$(l)但/$为何前人$(l)没有/$?", + "hexcasting.page.quenching_allays.2": "理解这点后,唯一$(l)正确/$的选择就是去征服它们奇异的意识——它们奇异的自我——也是它们的全部、一个意识、一个自我、一段尾声。它们的性状似乎揭示了某些东西。我能……我能使用它们压缩$(media)媒质/$,将两束思维叠放在一起,形体与认知,多与一。$(br2)这个过程不知怎么的会自行产生$(media)媒质/$。这是怎么回事?也许——也许是$(l)我/$的缘故,是完成这项任务的过程——", + "hexcasting.page.quenching_allays.3": "它不重要。我不重要。它们不重要,重要的只有功用。这就是了。$(br2)这肯定相当痛苦。$(br2)十份$(l:items/amethyst)$(item)紫水晶粉/$,就是启动如此恶劣仪式的代价。", + "hexcasting.page.quenching_allays.4": "所得的产物十分脆弱。直接破坏会将其打碎成碎片,$(thing)时运/$则能增加产量……如果需要获得方块本身,那要有精准采集才行。$(br2)产生的碎片相当于 3 个$(l:items/amethyst)$(item)充能紫水晶/$拼在一起。方块则相当于 4 个这种碎片。", + "hexcasting.page.quenching_allays.5": "它们变幻莫测,好像会在我的手中不断变形闪烁,若是给予它们来自另一种$(media)媒质/$形态的引导,它们便会变成对应的形态,且$(media)媒质/$总量前后不变。", + "hexcasting.page.fanciful_staves.1": "卸去无知的外壳后,更换工具——那些我亲手打磨的法杖——更是理所应当。这些全新的设计并非拥有额外属性——但它们光彩万分,光耀夺目……它们一如我视线边缘的闪烁与光耀。", + "hexcasting.page.readers_guide.1": "我将我找到的所有图案根据作用分为了几类。我也记下了它们的笔画顺序,前提是我在研究中发现了确切顺序。绘制起点标记为一个稍大的红点。$(br2)如果某个操作需要绘制多个图案才能执行,我会将那些图案排在一起。", + "hexcasting.page.readers_guide.2": "我$(italic)没法确定/$某些图案的笔顺,不过它们的形状是确定的。我猜测它们的画法就藏在某些古代的图书馆和地牢里。$(br2)我只会记录这类图案的外形,笔顺不记。", + "hexcasting.page.readers_guide.3": "我也会记下操作接受或修改的 iota 的类型,后接一个“→”,再后接这些操作产生的 iota 的类型。$(p)例如,“$(n)vector, number/$ → $(n)vector/$” 意味着该操作会从栈顶移除一个向量和一个数,然后压入一个向量;或者说,移除一个数,然后修改栈顶的向量。(数需在栈顶,向量则需直接处于数下方。)", + "hexcasting.page.readers_guide.4": "“→ $(n)entity/$”意味着该操作只会压入一个实体。“$(n)entity, vector/$ →”意味着该操作会弹出一个实体和一个向量,而不压入任何 iota。$(br2)再提一句,如果觉得标记笔顺的小点太慢或太难看清楚,可以按下 $(thing)Control 或 Command/$ 以渐变显示图案,起始点最深,结束点最浅。卷轴和咒术网格也能这样!", + "hexcasting.page.basics_pattern.get_caster": "返回我,也就是施法者。", + "hexcasting.page.basics_pattern.entity_pos/eye": "将栈顶的实体变为其眼部位置。这个图案比较适用于我自己。", + "hexcasting.page.basics_pattern.entity_pos/foot": "将栈顶的实体变为其所站位置。这个图案比较适用于其他实体。", + "hexcasting.page.basics_pattern.get_entity_look": "将栈顶的实体变为其视线方向上的单位向量。", + "hexcasting.page.basics_pattern.print": "向我展示栈顶的 iota。", + "hexcasting.page.basics_pattern.raycast.1": "将两个向量组合(分别表示位置和方向)并返回如下问题的答案:若我站在该位置并看向该方向,我会看到什么方块?消耗极少量$(media)媒质/$。", + "hexcasting.page.basics_pattern.raycast.2": "如果视线并未击中任何事物,所提供的向量会变为 $(thing)Null/$。$(br2)有一套常用的图案序列(常称“射线追踪曼怛罗”),由$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$、$(l:patterns/basics#hexcasting:entity_pos/eye)$(action)指南针之纯化/$、$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$、$(l:patterns/basics#hexcasting:get_entity_look)$(action)照准仪之纯化/$、$(l:patterns/basics#hexcasting:raycast)$(action)弓箭手之馏化/$组成。依次绘制就能返回我所看的方块的位置向量。", + "hexcasting.page.basics_pattern.raycast/axis.1": "与$(l:patterns/basics#hexcasting:raycast)$(action)弓箭手之馏化/$类似,但会返回如下问题的答案:我看着的是方块的$(italic)哪一面/$?消耗极少量$(media)媒质/$。", + "hexcasting.page.basics_pattern.raycast/axis.2": "更确切地说,它会返回所看面的$(italic)法向量/$,也即垂直于该面的单位向量。$(li)如果我看着地面,它会返回 (0, 1, 0)。$(li)如果我看着某方块面向南方的侧面,它会返回 (0, 0, 1)。", + "hexcasting.page.basics_pattern.raycast/entity": "与$(l:patterns/basics#hexcasting:raycast)$(action)弓箭手之馏化/$类似,但会返回我所看的$(italic)实体/$。消耗极少量$(media)媒质/$。", + "hexcasting.page.basics_pattern.get_entity_height": "将栈顶的实体变为其高度。", + "hexcasting.page.basics_pattern.get_entity_velocity": "将栈顶的实体变为其移动方向上的向量,其模长为实体的移动速度。", + "hexcasting.page.basics_pattern.get_media": "将当前施法可用的$(media)媒质/$量压栈,以$(l:items/amethyst)$(item)紫水晶粉/$计。", + "hexcasting.page.numbers.1": "没有绘制数字的简单方法,这点挺烦人的。自然屈尊为我们创造的方法如下。", + "hexcasting.page.numbers.2": "首先,绘制左页两图案中的一种,默认数值为 0。然后,每一画的$(italic)方向/$会以对应方式修改该数值。$(li)前方:加 1$(li)左前方:加 5$(li)右前方:加 10$(li)左后方:乘 2$(li)右后方:除以 2$(br)顺时针绘制,也即左页右图,会在绘制完成后取相反数(如左图逆时针绘制则不取)。$(p)绘制完成后会返回对应数。", + "hexcasting.page.numbers.example.10.header": "例图一", + "hexcasting.page.numbers.example.10": "该图案会返回 10。", + "hexcasting.page.numbers.example.7.header": "例图二", + "hexcasting.page.numbers.example.7": "该图案会返回 7:5 + 1 + 1。", + "hexcasting.page.numbers.example.-32.header": "例图三", + "hexcasting.page.numbers.example.-32": "该图案会返回 -32:(1 + 5 + 10) * 2 的相反数。", + "hexcasting.page.numbers.example.4.5.header": "例图四", + "hexcasting.page.numbers.example.4.5": "该图案会返回 4.5:5 / 2 + 1 + 1。", + "hexcasting.page.numbers.3": "某些情况下用$(l:items/abacus)$(item)算盘/$会更方便。但数字的“正确”画法也要了然于心。", + "hexcasting.page.math.numvec": "许多数学操作对数和向量都有效。这类参数记为“num vec”。", + "hexcasting.page.math.add.1": "执行加法。", + "hexcasting.page.math.add.2": "操作如下:$(li)若栈顶为两个数,返回其和。$(li)若为一个数和一个向量,移除该数并将向量的每个分量与其相加。$(li)若为两个向量,将对应分量相加(也即 (1, 2, 3) + (0, 4, -1) = (1, 6, 2))。", + "hexcasting.page.math.sub.1": "执行减法。", + "hexcasting.page.math.sub.2": "操作如下:$(li)若栈顶为两个数,返回其差。$(li)若为一个数和一个向量,移除该数并将向量的每个分量与其相减。$(li)若为两个向量,将对应分量相减。$(br2)栈顶元素或其分量为减数,栈顶往下第二元素或其分量为被减数。", + "hexcasting.page.math.mul.1": "执行乘法或点积。", + "hexcasting.page.math.mul.2": "操作如下:$(li)若栈顶为两个数,返回其积。$(li)若为一个数和一个向量,移除该数并将向量的每个分量与其相乘。$(li)若为两个向量,计算其$(l:https://www.mathsisfun.com/algebra/vectors-dot-product.html)点积/$。", + "hexcasting.page.math.div.1": "执行除法或叉积。", + "hexcasting.page.math.div.2": "操作如下:$(li)若栈顶为两个数,返回其商。$(li)若为一个数和一个向量,移除该数并将向量的每个分量与其相除。$(li)若为两个向量,计算其$(l:https://www.mathsisfun.com/algebra/vectors-cross-product.html)叉积/$。$(br2)第一第二种情况下,栈顶元素或其分量为除数,栈顶往下第二元素或其分量为被除数。$(p)警告:绝对不可除以零!", + "hexcasting.page.math.abs.1": "计算绝对值或模长。", + "hexcasting.page.math.abs.2": "将一个数变为其绝对值,将一个向量变为其模长。", + "hexcasting.page.math.pow.1": "执行乘方或向量射影。", + "hexcasting.page.math.pow.2": "若栈顶为两个数,返回两数的幂。$(li)若为一个数和一个向量,移除该数并计算向量的每个分量与该数的幂。$(li)若为两个向量,计算栈顶往下第二向量对栈顶向量的$(l:https://en.wikipedia.org/wiki/Vector_projection)向量射影/$。$(br2)第一第二种情况下,栈顶元素或其分量为指数,栈顶往下第二元素或其分量为底数。", + "hexcasting.page.math.floor": "对一个数取底,也即去掉小数部分取整。或对向量的每个分量取底。", + "hexcasting.page.math.ceil": "对一个数取顶,也即将小数部分不为零的数换为大于其的最小整数。或对向量的每个分量取顶。", + "hexcasting.page.math.construct_vec": "将三个数作为向量的 X,Y,Z 分量组合(自底向上排列)。", + "hexcasting.page.math.deconstruct_vec": "将一个向量拆分为其 X,Y,Z 分量(自底向上排列)。", + "hexcasting.page.math.modulo": "取两数除法的余数。也即执行除法后$(italic)剩余/$的数。例如,5 %% 2 得 1,5 %% 3 得 2。或对向量的每个分量执行上述操作。", + "hexcasting.page.math.coerce_axial": "若栈顶为向量,则返回与其夹角最小的轴向单位向量;零向量不受影响。若栈顶为数,则返回该数的符号;所给数为正则返回 1,为负则返回 -1,0 不受影响。", + "hexcasting.page.math.random": "返回一个 0 与 1 之间的随机数。", + "hexcasting.page.advanced_math.sin": "计算所给角(弧度制)的正弦,也即该角在单位圆上的纵坐标。与 $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ 和 $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$ 的值有关。", + "hexcasting.page.advanced_math.cos": "计算所给角(弧度制)的余弦,也即该角在单位圆上的横坐标。与 $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ 和 $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$ 的值有关。", + "hexcasting.page.advanced_math.tan": "计算所给角(弧度制)的正切,也即该角在单位圆上的斜率。与 $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ 和 $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$ 的值有关。", + "hexcasting.page.advanced_math.arcsin": "计算所给数(绝对值小于 1)的反正弦,也即正弦为该值的角。与 $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ 和 $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$ 的值有关。", + "hexcasting.page.advanced_math.arccos": "计算所给数(绝对值小于 1)的反余弦,也即余弦为该值的角。与 $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ 和 $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$ 的值有关。", + "hexcasting.page.advanced_math.arctan": "计算所给数的反正切,也即正切为该值的角。与 $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ 和 $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$ 的值有关。", + "hexcasting.page.advanced_math.arctan2": "计算所给纵坐标与横坐标的反正切,也即计算 X 轴正向,与原点至所给坐标的射线间的夹角。", + "hexcasting.page.advanced_math.logarithm": "计算以栈顶元素为底的,栈顶往下第二元素为真数的对数。与 $(l:patterns/consts#hexcasting:const/double/e)$(thing)$(italic)e/$ 的值有关。", + "hexcasting.page.sets.numlist": "集合操作比较奇怪,部分操作只能接受两个数或两个列表,一个数一个列表就不行。这类参数记为“(num, num) (list, list)”。$(br2)当接受的是数时,它们将被视为所谓二进制的“位组”,也就是由 1 和 0、真和假、“开”和“关”组成的列表。", + "hexcasting.page.sets.or.1": "取两集合的并集。", + "hexcasting.page.sets.or.2": "操作如下:$(li)若栈顶为两个数,那么在两个位组中至少有一个为 1 的位置,所得位组也为 1。$(li)若栈顶为两个列表,则创建一个由第一个列表中所有元素和第二个列表独有的元素组成的列表。和$(l:patterns/lists#hexcasting:add)$(action)加法之馏化/$有些类似。", + "hexcasting.page.sets.and.1": "取两集合的交集。", + "hexcasting.page.sets.and.2": "操作如下:$(li)若栈顶为两个数,那么只有在两个位组中$(italic)均/$为 1 的位置,所得位组为 1。$(li)若栈顶为两个列表,则创建一个由第一个和第二个列表共有的元素组成的列表。", + "hexcasting.page.sets.xor.1": "取两集合中每个集合独有的元素集合。", + "hexcasting.page.sets.xor.2": "操作如下:$(li)若栈顶为两个数,那么只有在两个位组中$(italic)仅一个/$为 1 的位置,所得位组为 1。$(li)若栈顶为两个列表,则创建一个在两个列表中$(italic)仅出现一次/$的元素组成的列表。", + "hexcasting.page.sets.not": "对位组执行位非操作,将所有为 1 的比特换为 0,反之亦然。就我经验而言,这会使一个数变为其相反数,然后减 1。例如,0 会变成 -1,而 -100 会变成 99。", + "hexcasting.page.sets.to_set": "去除列表内重复的元素。", + "hexcasting.page.consts.const/null": "返回 $(thing)Null/$ 这一虚指。", + "hexcasting.page.consts.const/true": "返回 $(thing)True/$。", + "hexcasting.page.consts.const/false": "返回 $(thing)False/$。", + "hexcasting.page.consts.const/vec/x": "左图(逆时针绘制)返回 (1, 0, 0);右图(顺时针绘制)返回 (-1, 0, 0)。", + "hexcasting.page.consts.const/vec/y": "左图(逆时针绘制)返回 (0, 1, 0);右图(顺时针绘制)返回 (0, -1, 0)。", + "hexcasting.page.consts.const/vec/z": "左图(逆时针绘制)返回 (0, 0, 1);右图(顺时针绘制)返回 (0, 0, -1)。", + "hexcasting.page.consts.const/vec/0": "返回 (0, 0, 0)。", + "hexcasting.page.consts.const/double/tau": "返回 τ,也即圆的弧度。", + "hexcasting.page.consts.const/double/pi": "返回 π,也即半圆的弧度。", + "hexcasting.page.consts.const/double/e": "返回 $(italic)e/$,也即自然对数的底。", + "hexcasting.page.consts.const/double/phi": "返回 φ,也即黄金比例。得出该比例的两值 A、B 满足 (A+B)/A = A/B。", + "hexcasting.page.stackmanip.pseudo-novice.title": "初学者之策略", + "hexcasting.page.stackmanip.pseudo-novice": "移除栈顶的 iota。$(br2)这似乎是$(l:patterns/stackmanip#hexcasting:mask)$(action)簿记员之策略/$的一种特殊形式。", + "hexcasting.page.stackmanip.swap": "交换栈顶两个 iota 的位置。", + "hexcasting.page.stackmanip.rotate": "将栈顶往下第三元素拉至栈顶。[0, 1, 2] 变为 [1, 2, 0]。", + "hexcasting.page.stackmanip.rotate_reverse": "将栈顶元素沉至栈顶往下第三位处。[0, 1, 2] 变为 [2, 0, 1]。", + "hexcasting.page.stackmanip.duplicate": "复制栈顶的 iota。", + "hexcasting.page.stackmanip.over": "将栈顶往下第二元素复制至栈顶。[0, 1] 变为 [0, 1, 0]。", + "hexcasting.page.stackmanip.tuck": "将栈底元素复制至栈顶往下第二元素下方。[0, 1] 变为 [1, 0, 1]。", + "hexcasting.page.stackmanip.2dup": "复制栈顶的两个 iota。[0, 1] 变为 [0, 1, 0, 1]。", + "hexcasting.page.stackmanip.stack_len": "以数的形式压入栈中元素的个数。(例如,一个形如 [0, 1] 的栈会变为 [0, 1, 2]。)", + "hexcasting.page.stackmanip.duplicate_n": "移除栈顶的数,然后将移除后的栈顶元素复制该数次。(若所给数为 2,则栈顶会有两个同一元素,不是三个。)", + "hexcasting.page.stackmanip.fisherman": "提出下标为所给数的元素并将其置于栈顶。", + "hexcasting.page.stackmanip.fisherman/copy": "与$(l:patterns/stackmanip#hexcasting:fisherman)$(action)渔夫之策略/$类似,但会复制 iota 而非将其提出。", + "hexcasting.page.stackmanip.mask.1": "一组无限个根据凹槽和横线的顺序来移除或保留栈中元素的操作。", + "hexcasting.page.stackmanip.mask.2": "假如从左到右绘制书吏之策略,此操作操控的 iota 个数由其横向长度决定。从靠近栈底的位置开始往栈顶计入,一条横线代表保留该处元素,一个凹槽代表移除该处元素。$(br2)如果栈从靠近栈底处起形如 $(italic)0, 1, 2/$ ,绘制左页例图一,则栈变为 $(italic)1/$;例图二会将栈变为 $(italic)0/$;例图三会将栈变为 $(italic)0, 2/$(栈底方向的 0 不受影响)。", + "hexcasting.page.stackmanip.swizzle.1": "根据所给数字代码重排栈顶若干元素。", + "hexcasting.page.stackmanip.swizzle.2": "我确实不知道数字代码和重排操作的完整对应关系,但我整理了一份对应表格,其中整理了最多六个元素的重排的编码。$(br2)如果要找延伸阅读资料,可以搜索“Lehmer Code”。", + "hexcasting.page.stackmanip.swizzle.link": "编码列表", + "hexcasting.page.logic.bool_coerce": "将参数变换为布尔值。数 $(thing)0/$、$(thing)Null/$、False,以及空列表会变为 False。其余所有则变为 True。", + "hexcasting.page.logic.bool_to_number": "将布尔值变换为数。True 变为 $(thing)1/$, False 变为 $(thing)0/$。", + "hexcasting.page.logic.not": "如果参数是 True,返回 False;如果参数是 False,返回 True。", + "hexcasting.page.logic.or": "如果至少有一个参数是 True,返回 True。否则返回 False。", + "hexcasting.page.logic.and": "如果两个参数都是 True,返回 True。否则返回 False。", + "hexcasting.page.logic.xor": "如果参数中仅一个是 True,返回 True。否则返回 False。", + "hexcasting.page.logic.if": "如果第一个参数是 True,保留第二个参数并移除第三个。否则保留第三个参数并移除第二个。", + "hexcasting.page.logic.equals": "如果第一个参数等于第二个(在较小误差内),返回 True。否则返回 False。", + "hexcasting.page.logic.not_equals": "如果第一个参数不等于第二个(超出较小误差),返回 True。否则返回 False。", + "hexcasting.page.logic.greater": "如果第一个参数大于第二个,返回 True。否则返回 False。", + "hexcasting.page.logic.less": "如果第一个参数小于第二个,返回 True。否则返回 False。", + "hexcasting.page.logic.greater_eq": "如果第一个参数大于或等于第二个,返回 True。否则返回 False。", + "hexcasting.page.logic.less_eq": "如果第一个参数小于或等于第二个,返回 True。否则返回 False。", + "hexcasting.page.entities.get_entity": "将栈顶位置向量变为该处实体(若无则返回 $(thing)Null/$)。", + "hexcasting.page.entities.get_entity/animal": "将栈顶位置向量变为该处动物(若无则返回 $(thing)Null/$)。", + "hexcasting.page.entities.get_entity/monster": "将栈顶位置向量变为该处怪物(若无则返回 $(thing)Null/$)。", + "hexcasting.page.entities.get_entity/item": "将栈顶位置向量变为该处物品实体(若无则返回 $(thing)Null/$)。", + "hexcasting.page.entities.get_entity/player": "将栈顶位置向量变为该处玩家(若无则返回 $(thing)Null/$)。", + "hexcasting.page.entities.get_entity/living": "将栈顶位置向量变为该处生物(若无则返回 $(thing)Null/$)。", + "hexcasting.page.entities.zone_entity": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有实体的列表。", + "hexcasting.page.entities.zone_entity/animal": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有动物的列表。", + "hexcasting.page.entities.zone_entity/not_animal": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有非动物实体的列表。", + "hexcasting.page.entities.zone_entity/monster": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有怪物的列表。", + "hexcasting.page.entities.zone_entity/not_monster": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有非怪物实体的列表。", + "hexcasting.page.entities.zone_entity/item": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有掉落的物品的列表。", + "hexcasting.page.entities.zone_entity/not_item": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有非物品实体的列表。", + "hexcasting.page.entities.zone_entity/player": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有玩家的列表。", + "hexcasting.page.entities.zone_entity/not_player": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有非玩家实体的列表。", + "hexcasting.page.entities.zone_entity/living": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有生物的列表。", + "hexcasting.page.entities.zone_entity/not_living": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有非生物实体的列表。", + "hexcasting.page.types.type_equals": "比较所给 iota,判断它们是否类型相同。", + "hexcasting.page.types.type_not_equals": "比较所给 iota,判断它们是否类型不同。", + "hexcasting.page.types.compare_block/lenient": "比较所给向量处的方块,判断它们是否类型相同。两个$(l:items/edified#hexcasting:cut_edified_plank_variants)$(item)启迪木楼梯/$必然类型相同,无论形态如何,也无论是否含水。", + "hexcasting.page.types.compare_block/strict": "比较所给向量处的方块,判断它们是否一致。只有外观完全一致的两个$(l:items/edified#hexcasting:cut_edified_plank_variants)$(item)启迪木楼梯/$才会被判断为一致。", + "hexcasting.page.types.compare_block/remarks": "自然在判断方块是否一致时比较随性。在自然看来,朝向和含水性相同的两块$(l:items/slate)$(item)石板/$就已经一致,即便刻着的图案不同也不会影响判断。类似地,箱子只要外观一致即一致,即便内容物不同也不影响。", + "hexcasting.page.types.compare_entity": "比较所给实体,判断它们是否类型相同。", + "hexcasting.page.types.compare_item/lenient": "比较所给实体代表或持有的物品,判断它们是否类型相同。两枚$(l:items/focus)$(item)核心/$必然相同。", + "hexcasting.page.types.compare_item/strict": "和$(l:patterns/types#hexcasting:compare_item/lenient)$(action)分拣员之馏化/$类似,但会判断物品是否完全一致。两枚$(l:items/focus)$(item)核心/$只会在其中 iota 相同且$(l:patterns/spells/cyclevariant)$(thing)外观相同/$时判断为一致。", + "hexcasting.page.types.compare_item/remarks.title": "论物品容器", + "hexcasting.page.types.compare_item/remarks": "自然在面对传入$(l:patterns/types#hexcasting:compare_item/lenient)$(action)分拣员之馏化/$和$(l:patterns/types#hexcasting:compare_item/strict)$(action)堆叠之馏化/$的实体时,会按实体的类型分类处理:$(li)物品实体视为它们对应的物品$(li)物品展示框视为放在框中的物品,为空则招致事故$(li)玩家视为其当前手持的物品,优先选取主手", + "hexcasting.page.lists.index": "移除栈顶的数,将栈顶的列表变为其中下标为该数(就是被移除的那个数)的元素。若该数越界,则将列表换为 $(thing)Null/$。", + "hexcasting.page.lists.slice": "移除栈顶的两个数,将栈顶的列表变为其中下标在两个数之间元素的子列表,包含下标下界,不含下标上界。例如,[0, 1, 2, 3, 4] 的 0, 2 子列表是 [0, 1]。", + "hexcasting.page.lists.append": "移除栈顶元素,将其加到栈顶列表的末尾。", + "hexcasting.page.lists.unappend": "移除栈顶列表末尾的元素,将其加到栈顶。", + "hexcasting.page.lists.add": "移除栈顶列表,将其中元素加到当前栈顶列表的末尾。", + "hexcasting.page.lists.empty_list": "压入一个空列表。", + "hexcasting.page.lists.singleton": "移除栈顶元素,而后返回一个仅包含该元素的列表。", + "hexcasting.page.lists.abs": "移除栈顶列表,而后返回该列表中元素的个数。", + "hexcasting.page.lists.reverse": "倒置栈顶列表。", + "hexcasting.page.lists.index_of": "移除栈顶元素,并将栈顶列表变为该元素在其中第一次出现的位置(从 0 开始)。若没有出现过则返回 -1。", + "hexcasting.page.lists.remove_from": "移除栈顶的数,而后移除栈顶列表中下标为该数(就是被移除的那个数)的元素。", + "hexcasting.page.lists.replace": "移除栈顶元素和栈顶的数,而后将栈顶列表中下标为该数(就是被移除的那个数)的位置变为原栈顶元素。数越界则不进行操作。", + "hexcasting.page.lists.last_n_list": "移除$(italic)所给数/$个元素,将这些元素加入列表,并将所得列表压入栈顶。", + "hexcasting.page.lists.splat": "移除栈顶列表,而后将其中元素全部压入栈顶。", + "hexcasting.page.lists.construct": "移除栈顶元素,将其加到栈顶列表的开头。", + "hexcasting.page.lists.deconstruct": "移除栈顶列表中的第一个元素,并将该元素压入栈顶。", + "hexcasting.page.patterns_as_iotas.1": "咒法学中的一个怪异之处就是$(italic)图案本身/$也可被视为 iota——其甚至能在施法时被压到栈中。$(br2)这就产生了一个问题:我怎么把图案用作 iota 呢?如果就只是画一遍,自然大概不会将其理解为“把它加到栈里”,而只会将其与操作对应起来。", + "hexcasting.page.patterns_as_iotas.2": "幸运的是,自然提供了一组专用于和其他图案交互的特殊图案。$(br2)简而言之,$(l:patterns/patterns_as_iotas#hexcasting:runtime_escape)$(action)深思/$和$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$能将一个图案加到栈中,$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$能加入一整个列表,$(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)消解/$则能撤销创建列表途中犯的错误。", + "hexcasting.page.patterns_as_iotas.runtime_escape.1": "要使用$(l:patterns/patterns_as_iotas#hexcasting:runtime_escape)$(action)深思/$,先绘制它,然后绘制任意图案。第二个图案就会被加到栈中。", + "hexcasting.page.patterns_as_iotas.runtime_escape.2": "如果对计算机科学有足够了解的话,你可能能将其与“转义”/“escape”操作联系起来。$(br2)此图案的一大用途是将某一图案复制到$(l:items/scroll)$(item)卷轴/$或$(l:items/slate)$(item)石板/$上,且要和$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$配合使用。这之后卷轴和石板就能拿来装饰了。", + "hexcasting.page.patterns_as_iotas.parens.1": "绘制$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$会让这之后绘制的图案不再与操作联系。而在绘制$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$后,之前绘制的图案就会作为一个列表加到栈中。", + "hexcasting.page.patterns_as_iotas.parens.2": "如果绘制内省后再绘制一个$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)内省/$,则它也将被加到列表中,而且需绘制$(italic)两次/$$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$才能回到正常施法模式。", + "hexcasting.page.patterns_as_iotas.undo": "最后,若在$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$之间有图案绘制错误,可绘制$(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)消解/$以移除图案列表中的最后绘制的图案。", + "hexcasting.page.patterns_as_iotas.escape": "和$(l:patterns/patterns_as_iotas#hexcasting:runtime_escape)$(action)深思/$类似,但在$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$之间也能正常运作。它可以“转义”$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$之间的其他图案,将这些图案压栈,而不产生任何其他效果。", + "hexcasting.page.patterns_as_iotas.further_notes.1": "由于$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$会在$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$间立即生效,如要向列表加入$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$本身,就应绘制两遍。第一个$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$会转义第二个,绕过它的特殊功能。$(br2)$(l:patterns/patterns_as_iotas#hexcasting:runtime_escape)$(action)深思/$则不同,无论嵌套深度如何都只需要绘制一遍。", + "hexcasting.page.patterns_as_iotas.further_notes.2": "如果$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$或者其他元运行图案运行的列表中出现了图案之外的 iota,那么通常来说会招致事故。但是,这种事故也可用本节中写到的图案规避。$(br2)本节中的图案可以“转义”图案 iota,也一样能“转义”$(o)任意一种 iota$()。运行到这些 iota 时,它们只会被压入栈中,而不会招致事故。", + "hexcasting.page.patterns_as_iotas.further_notes.3": "我要是想让$(hex)咒术/$直接引用特定的 iota——比如复杂向量、对实体的引用等——而不在每次运行时都从头开始构造或获取,这一技术会很有用。$(br2)把这类 iota 加入列表的过程可能会比较复杂。可以在创建列表时使用$(l:patterns/advanced_escaping#hexcasting:read_into_parens)$(action)插嵌/$;或也可使用占位图案,再在创建完成后通过$(l:patterns/lists#hexcasting:replace)$(action)外科医师之提整/$替换。", + "hexcasting.page.patterns_as_iotas.further_notes.title": "更多笔记", + "hexcasting.page.advanced_escaping.1": "$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$很有用,但复杂的$(hex)咒术/$可能会需要更高阶的操作。$(br2)本节介绍的就是这种高阶操作:$(l:patterns/advanced_escaping#hexcasting:read_into_parens)$(action)插嵌/$可以直接向运行中的列表插入 iota,$(l:patterns/advanced_escaping#hexcasting:open_n_parens)$(action)冥想/$和$(l:patterns/advanced_escaping#hexcasting:close_all_parens)$(action)回想/$则可分别开始和结束任意嵌套深度的列表创建。", + "hexcasting.page.advanced_escaping.read_into_parens": "只在$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$时可用。从我的副手读取 iota,将其插入正在运行的列表。非图案 iota 可能需要$(l:patterns/patterns_as_iotas#iota_embedding)$(action)特殊措施/$才能在执行列表时规避事故。", + "hexcasting.page.advanced_escaping.open_n_parens": "移除栈顶数,并视为绘制了该数个$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$。在$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$时和普通图案表现一致,在多层嵌套中绘制额外的$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$可能会需要一定的$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)技巧/$。", + "hexcasting.page.advanced_escaping.close_all_parens": "和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$一致,但会一次性关闭$(italic)所有/$$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$。执行后会向栈中加入退出的总层数和编写的整个列表。", + "hexcasting.page.readwrite.1": "这一章节主要记述有关将 $(thing)iota/$ 写入永久性介质中的知识。几乎所有 iota 都可被写入合适的物品中,例如$(l:items/focus)$(item)核心/$和$(l:items/spellbook)$(item)法术书/$,而后可以将它们读出来。而某些物品,例如$(l:items/abacus)$(item)算盘/$,则只能被读取。$(br2)一般可从另一只手中的物品中读取或写入 iota。但若将物品丢出为物品实体,或是放在物品展示框中,则也可读取或写入。", + "hexcasting.page.readwrite.2": "我还能对其他实体执行上述两种操作。例如,可从一张壁挂$(l:items/scroll)$(item)卷轴/$中读出图案。$(br2)然而,貌似写入代表其他玩家的 iota 是不被允许的,只有我自己的能写入。我认为这和“真名”类似。也许是自然在阻止我们的真名落入敌手。如果我想把我的真名交给朋友,做个$(l:items/focus)$(item)核心/$给他们就好了。", + "hexcasting.page.readwrite.read": "复制另一只手所持物品中 iota,并将其压入栈顶。", + "hexcasting.page.readwrite.write": "移除栈顶 iota,并将其写入另一只手中的物品中。", + "hexcasting.page.readwrite.read/entity": "与$(l:patterns/readwrite#hexcasting:read)$(action)书吏之精思/$类似,但会将 iota 从某实体中读出,而非手中物品。", + "hexcasting.page.readwrite.write/entity": "与$(l:patterns/readwrite#hexcasting:read)$(action)书吏之策略/$类似,但会将 iota 写入某实体,而非手中物品。$(br2)有意思的是,我似乎没法以这种手段写入我自己的真名。但我总感觉要是真这么做了我的安全就会受到严重威胁。", + "hexcasting.page.readwrite.readable": "如果另一只手中物品存有可被读取的 iota,返回 True。否则返回 False。", + "hexcasting.page.readwrite.readable/entity": "与$(l:patterns/readwrite#hexcasting:readable)$(action)审计员之精思/$类似,但会检测实体可读性,而非手中物品。", + "hexcasting.page.readwrite.writable": "如果能将 iota 写入另一只手中的物品,返回 True。否则返回 False。", + "hexcasting.page.readwrite.writable/entity": "与$(l:patterns/readwrite#hexcasting:writable)$(action)估价员之精思/$类似,但会检测实体可写性,而非手中物品。", + "hexcasting.page.readwrite.local.title": "渡鸦之思", + "hexcasting.page.readwrite.local": "物品不是唯一一个能写入信息的地方,我也可以将其存到$(hex)咒术/$自身的$(media)媒质/$里,就和栈差不多。文献将其称为$(l:patterns/readwrite#hexcasting:local)$(thing)渡鸦之思/$。它能存有一个 iota,默认为 $(thing)Null/$,和$(l:items/focus)$(item)核心/$差不多。它在每次使用$(l:patterns/meta#hexcasting:for_each)$(action)托特之策略/$后保持不变,但也只能撑到$(hex)咒术/$结束。一旦施法结束,其值就会被清除。", + "hexcasting.page.readwrite.write/local": "移除栈顶 iota,并将其写入$(l:patterns/readwrite#hexcasting:local)$(thing)渡鸦之思/$,在施放$(hex)咒术/$的整个过程结束之前一直存在那里。", + "hexcasting.page.readwrite.read/local": "将$(l:patterns/readwrite#hexcasting:local)$(thing)渡鸦之思/$中的 iota 复制出来。(也许刚刚才用$(l:patterns/readwrite#hexcasting:write/local)$(action)福金之策略/$写进去。)", + "hexcasting.page.meta.eval.1": "移除栈顶的可运行 iota(通常是图案或$(l:casting/whats_a_hex)整条$(hex)咒术/$),然后就像我用$(l:items/staff)$(item)法杖/$绘制施法一样运行。", + "hexcasting.page.meta.eval.2": "若与$(l:items/focus)$(item)核心/$同时使用,它将提供极为强大的操控能力。据我找到的一张晦涩卷轴所称,它还将自然的咒法体系变为了一个“图灵完备”的系统。$(br2)需注意,此时$(hex)咒术/$中的非图案 iota 会招致事故,除非预先进行$(l:patterns/patterns_as_iotas)$(action)转义/$。此外,由于这些图案产生的能量缺乏我的引导,$(o)任何/$失误都会导致$(hex)咒术/$的后续操作立即瓦解。", + "hexcasting.page.meta.for_each.1": "移除栈中的可运行 iota 和一个列表,然后对列表中的每个元素运行所给的可运行 iota。", + "hexcasting.page.meta.for_each.2": "更确切地说,对于列表中的每个元素,它将:$(li)创建一个新栈,其中包括当前栈中的所有元素和后一列表中的一个元素。$(li)施放可运行 iota。$(li)将该栈中剩余的所有元素存进一个列表。$(br)在所有元素都运行一遍后,将该列表压入原本的栈中。$(br2)也难怪精通此操作的人都疯了。", + "hexcasting.page.meta.halt.1": "这个图案将强制停止$(hex)咒术/$的施放。它独自出现可能没什么用,我只要不绘制图案或是放下法杖就行了。", + "hexcasting.page.meta.halt.2": "但当与$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$或$(l:patterns/meta#hexcasting:for_each)$(action)托特之策略/$一起使用时,它就将发挥$(italic)大/$用。那些图案会碰到这个休止符,但$(hex)咒术/$本身不会停止,停止运行的是那些策略。它可以用来防止$(l:patterns/meta#hexcasting:for_each)$(action)托特之策略/$将每个 iota 都运行一遍。这便是逃离疯狂的秘道。", + "hexcasting.page.meta.eval/cc.1": "此图案和$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$类似,也能运行可运行 iota,但会在开始之前将一独特的“跳转” iota 压入栈中。", + "hexcasting.page.meta.eval/cc.2": "当执行至“跳转” iota 时,法术会直接跳至可运行 iota 的尾部,略过剩余的所有操作。$(p)当然因为已经有了$(l:patterns/meta#hexcasting:halt)$(action)卡戎之策略/$,这种性质难免显得有些冗余。不过它能以可控方式退出$(italic)多层嵌套/$调用的$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$,而卡戎之策略只能退出一层。$(p)“跳转”iota 甚至会在所有策略都执行完毕后还留在栈上……真是细思恐极。", + "hexcasting.page.meta.thanatos.1": "单个$(hex)咒术/$能运行的图案数量似乎存在上限。此图案可将仍可运行的图案数压入列表。", + "hexcasting.page.circle_patterns.disclaimer": "这些图案只能在$(l:greatwork/spellcircles)$(item)法术环/$上运行。尝试用$(l:items/staff)$(item)法杖/$绘制它们会招致可怖的事故。", + "hexcasting.page.circle_patterns.circle/impetus_pos": "返回该法术环的$(l:greatwork/impetus)$(item)促动石/$的位置。", + "hexcasting.page.circle_patterns.circle/impetus_dir": "以单位向量返回该法术环的$(l:greatwork/impetus)$(item)促动石/$的面朝方向。", + "hexcasting.page.circle_patterns.circle/bounds/min": "返回该法术环影响范围的西北靠下转角的位置。", + "hexcasting.page.circle_patterns.circle/bounds/max": "返回该法术环影响范围的东南靠上转角的位置。", + "hexcasting.page.akashic_patterns.akashic/read": "在$(l:greatwork/akashiclib)$(item)阿卡夏记录/$处从$(l:greatwork/akashiclib)$(item)阿卡夏图书馆/$中读出所给图案对应的 iota。没有读取距离限制。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.akashic_patterns.akashic/write": "在$(l:greatwork/akashiclib)$(item)阿卡夏图书馆/$的$(l:greatwork/akashiclib)$(item)记录/$处将 iota 和所给图案对应起来。$(italic)有/$存储距离限制。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.itempicking.1": "某些法术,例如$(l:patterns/spells/blockworks#hexcasting:place_block)$(action)放置方块/$,会消耗物品栏内的其他物品。在这种情况下,法术会先检索要用哪个物品,然后就会消耗物品栏内所有同种物品。$(br2)这一过程被称为“挑选物品”。", + "hexcasting.page.itempicking.2": "更具体地说:$(li)首先,法术会在快捷栏内$(l:items/staff)$(item)法杖所处位置的右侧/$依次搜索可用物品,搜到最右侧后便会从最左侧开始向右搜寻。若$(l:items/staff)$(item)法杖/$在副手,则会从快捷栏一号位开始搜索。$(li)然后,法术会从$(italic)物品栏内最靠后的位置/$开始消耗同种物品,且物品栏优先于快捷栏。", + "hexcasting.page.itempicking.3": "如此,我可以在快捷栏里放一些“选择器”用来告诉法术要用哪种方块,并在物品栏内放些同种方块防止供给不足。", + "hexcasting.page.basic_spell.explode.1": "移除栈顶的数和向量,并在所给位置产生一次强度为所给数的爆炸。", + "hexcasting.page.basic_spell.explode.2": "强度为 3 的爆炸与苦力怕的爆炸相当,4 则与 TNT 的相当。自然倒是不让我产生强度大于 10 的爆炸。$(br2)奇怪的是,这种爆炸伤不到我。也许是因为这爆炸是$(italic)我/$引起的?$(br2)强度为 0 时消耗极少量媒质,每加一级强度多消耗 3 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.basic_spell.explode.fire.1": "移除栈顶的数和向量,并在所给位置产生一次强度为所给数的带火焰的爆炸。", + "hexcasting.page.basic_spell.explode.fire.2": "消耗 1 个$(l:items/amethyst)$(item)紫水晶粉/$,每加一级强度多消耗 3 个$(l:items/amethyst)$(item)紫水晶粉/$。就和$(l:patterns/spells/basic#hexcasting:explode)$(action)爆炸/$一模一样,除了带点火。", + "hexcasting.page.basic_spell.add_motion": "移除栈顶的实体和表示方向的向量,然后将所给实体沿所给方向推动出去。驱动力的强度由向量的模长决定。$(br)消耗向量模长的平方个$(l:items/amethyst)$(item)紫水晶粉/$。除对某实体第一次使用外,其他情况额外消耗 1 个。", + "hexcasting.page.basic_spell.blink": "移除栈顶的实体和表示长度的数,然后将所给实体沿其视线方向向前传送所给长度格。$(br)每传送两格消耗大约 1 个$(l:items/amethyst)$(item)紫水晶碎片/$。", + "hexcasting.page.basic_spell.beep.1": "移除栈顶的一个向量和两个数。在指定位置以指定$(thing)乐器/$(由第一个数决定)弹奏$(thing)一个音/$(由第二个数决定)。消耗极少量$(media)媒质/$。", + "hexcasting.page.basic_spell.beep.2": "共有 16 种$(thing)乐器/$和 25 种$(thing)音高/$。两者的下标均从 0 开始。$(br2)这些乐器似乎就是$(item)音符盒/$对应的各种乐器,尽管其具体对应关系不得而知。$(br2)不管怎么说,用$(l:items/lens)$(item)探知透镜/$观察$(item)音符盒/$就能得知其乐器对应的数字。", + "hexcasting.page.blockworks.place_block": "移除一个位置向量,然后挑选一个方块并放在给定位置。$(br)消耗大约 1/8 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.blockworks.break_block": "移除一个位置向量,然后破坏给定位置的方块。此法术能破坏几乎所有钻石镐能破坏的方块。$(br)消耗大约 1/8 个$(l:items/amethyst)$(item)紫水晶粉/$。破坏$(l:patterns/spells/blockworks#hexcasting:conjure_block)$(action)构筑的方块/$或$(l:patterns/spells/blockworks#hexcasting:conjure_light)$(action)构筑的光源/$时仅消耗极少量媒质。", + "hexcasting.page.blockworks.create_water": "在给定位置生成一格水(或给流体容器注入至多一桶水)。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.blockworks.destroy_water": "清空给定位置的流体容器,或是清除给定位置周围的液体。消耗大约 2 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.blockworks.conjure_block": "在给定位置构筑一个空灵缥缈却坚硬可触的,闪着光的方块。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.blockworks.conjure_light": "在给定位置构筑一个发着我染色剂颜色的光的魔法光源。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.blockworks.bonemeal": "使目标位置的植物或树苗更快成长,就像对其施以$(item)骨粉/$一样。消耗略多于 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.blockworks.edify": "将$(media)媒质/$强制注入目标位置的树苗,使其长为$(l:items/edified)$(thing)启迪树/$。消耗大约 1 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.blockworks.ignite": "在给定位置上方生火,或点燃给定实体,就像对其使用$(item)火焰弹/$一样。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.blockworks.extinguish": "熄灭周围较大区域内的火焰。消耗大约 6 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.nadirs.1": "此类法术会给予某一实体一个负面药水效果。它们都接受一个实体作为效果受体,和一两个数。其中第一个数是持续时间,第二个数(若有)是效果强度(以 1 起始)。$(br2)每种法术都有一个“基础消耗”,实际消耗为基础消耗乘以效果强度的平方。", + "hexcasting.page.nadirs.2": "据某些传说所言,这些法术和它们的姊妹法术——$(l:patterns/great_spells/zeniths)$(action)天顶法术/$,都是“……由另一个世界的魔法启发的。在那个世界里,强大的魔法师会从四处收集魔法并决斗至死。不幸的是,许多信息都没翻译过来……”$(br2)也许这就是它们名字怪异的原因。", + "hexcasting.page.nadirs.potion/weakness": "给予$(thing)虚弱/$。每 10 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.nadirs.potion/levitation": "给予$(thing)飘浮/$。每 5 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.nadirs.potion/wither": "给予$(thing)凋零/$。每 1 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.nadirs.potion/poison": "给予$(thing)中毒/$。每 3 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.nadirs.potion/slowness": "给予$(thing)缓慢/$。每 5 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.hexcasting_spell.basics": "这三个法术都能制作$(l:items/hexcasting)$(thing)用于施放$(hex)咒术/$的物品/$。$(br)它们都要求我在另一只手上手持对应的基础物品,并且需提供两个参数:需运行的列表(通常是图案列表)和一个用作储库的$(l:items/amethyst)$(item)紫水晶/$物品实体。$(br2)详情参见$(l:items/hexcasting)此条目/$。", + "hexcasting.page.hexcasting_spell.craft/cypher": "消耗大约 1 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.hexcasting_spell.craft/trinket": "消耗大约 5 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.hexcasting_spell.craft/artifact": "消耗大约 10 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.hexcasting_spell.recharge.1": "给另一只手中能装$(media)媒质/$的物品重新充能。每个物品消耗大约 1 个$(l:items/amethyst)$(item)紫水晶碎片/$。", + "hexcasting.page.hexcasting_spell.recharge.2": "此法术的施放方式和制作施法物品所用法术的类似。提供一个$(l:items/amethyst)$(item)紫水晶/$物品实体,就能给另一只手中物品的$(media)媒质/$储库重新充能。$(br2)此法术$(italic)不能/$充入超过储库大小的媒质。", + "hexcasting.page.hexcasting_spell.erase.1": "清除另一只手中写有$(hex)咒术/$或存有 iota 的物品。每个物品消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.hexcasting_spell.erase.2": "此法术也会清除物品内存储的$(media)媒质/$,将其释放给自然并将物品恢复到其初始状态。如此就能回收利用容易出错的$(l:items/hexcasting)$(item)缀品/$了。$(br2)此法术也能清除$(l:items/focus)$(item)核心/$和$(l:items/spellbook)$(item)法术书/$书页内容,同时去除其上密封。", + "hexcasting.page.sentinels.1": "$(italic)去吧!现在一切都已完成,$(br)只须留着一个人作哨卫。/$$(br2)$(l:patterns/spells/sentinels)$(thing)哨卫/$是一种能被$(hex)咒术/$召唤出的神秘力量,就和亲人或是侍卫一样。对我而言,它是一个旋转着的几何体,而其他人看不见它。", + "hexcasting.page.sentinels.2": "它有些有趣的性质:$(li)它似乎不可被触摸,没人摸得到它。$(li)只有我的$(hex)咒术/$才能与之交互。$(li)一旦召唤,在被驱除前它都将留在原位。$(li)只要我离它足够近,我就能透过方块看见它。", + "hexcasting.page.sentinels.sentinel/create": "在给定位置召唤$(l:patterns/spells/sentinels)$(thing)哨卫/$。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.sentinels.sentinel/destroy": "将我的$(l:patterns/spells/sentinels)$(thing)哨卫/$从世界中驱除出去。消耗极少量$(media)媒质/$。", + "hexcasting.page.sentinels.sentinel/get_pos": "将我的$(l:patterns/spells/sentinels)$(thing)哨卫/$的位置加到栈中,若并未召唤则加入一个 $(thing)Null/$。消耗极少量$(media)媒质/$。", + "hexcasting.page.sentinels.sentinel/wayfind": "将栈顶的位置向量变为从我的位置指向$(l:patterns/spells/sentinels)$(thing)哨卫/$的单位向量,若并未召唤则变为 $(thing)Null/$。消耗极少量$(media)媒质/$。", + "hexcasting.page.colorize": "施法时需要在另一只手中持有$(l:items/pigments)$(item)染色剂/$。施法后,染色剂将被消耗,而我意识的颜色也将永久改变(至少是在再次施法前)。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.cycle_variant": "我制造的一些物品极易受$(media)媒质/$的影响。另一只手持有$(l:items/hexcasting)$(item)杂件/$、$(l:items/hexcasting)$(item)缀品/$、$(l:items/hexcasting)$(item)造物/$、$(l:items/focus)$(item)核心/$、$(l:items/spellbook)$(item)法术书/$时,可以使用此法术更改它们的外表。消耗极少量$(media)媒质/$。", + "hexcasting.page.flights.1": "尽管无法掌握自由飞行的力量,我还是找到了若干能将物体滞空的方法,但各种方法各有缺陷。$(br2)所有种类的飞行法术都会产生微量多余$(media)媒质/$。在法术效果将要结束时,其会产生越来越多红色和黑色的火花。", + "hexcasting.page.flights.2": "当然,也有其他种类的飞行法术。例如,将$(l:patterns/spells/basic#hexcasting:add_motion)$(action)驱动/$和$(l:patterns/spells/nadirs#hexcasting:potion/levitation)$(action)蓝阳西沉/$结合使用的类飞行技术自古代起就多有运用。$(br2)我还听说过一种能给予滑翔能力的,可以穿在背上的薄透翼膜。研究表明,被称为“$(l:patterns/great_spells/altiora)$(action)翱翔/$”的卓越法术也许能模仿这种翼膜的功用。", + "hexcasting.page.flights.range.1": "受范围限制的飞行法术。", + "hexcasting.page.flights.range.2": "第二参数代表水平方向上的半径(以米计),在此范围内,法术能保持稳定。走出该范围就会结束该法术,滞空的物体会直接坠向地面。但只要一直待在这个范围内,法术的效果便会无限持续。此法术还会额外产生微量$(media)媒质/$用以标记安全区域中心点。$(br2)每米安全范围消耗大约 2 个$(l:items/amethyst)$(item)紫水晶粉/$,即便范围半径小于 1 米也仍会消耗 2 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.flights.time.1": "受时间限制的飞行法术。", + "hexcasting.page.flights.time.2": "第二参数代表持续时间(以秒计),在此限制内,法术能保持稳定。持续时间超过限制就会结束该法术,滞空的物体会直接坠向地面。$(br2)每秒持续时间消耗大约 2 个$(l:items/amethyst)$(item)紫水晶粉/$。我觉得它极其适合长途旅行。", + "hexcasting.page.flights.can_fly.1": "检查玩家是否处于$(l:patterns/spells/flight#hexcasting:flight/range)隐士之飞行/$或$(l:patterns/spells/flight#hexcasting:flight/time)旅者之飞行/$的影响之下。", + "hexcasting.page.flights.can_fly.2": "不会检查玩家是否能以其他方式飞行。$(br2)我不太清楚这个图案有什么用途,但我相信,愿意用它的人自会清楚。", + "hexcasting.page.create_lava.1": "在给定位置生成一格熔岩(或给流体容器注入至多一桶熔岩)。消耗大约 1 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.create_lava.2": "建议不要声张自己知道这个法术。某些植物学家对此……比较敏感,至少我听说是这样。$(br2)也罢,确实没人说过探究宇宙最深层的秘密是什么好干的活。", + "hexcasting.page.weather_manip.lightning": "我能命令苍穹!此法术会在我所想之处召唤一道落雷。消耗大约 3 个$(l:items/amethyst)$(item)紫水晶碎片/$。", + "hexcasting.page.weather_manip.summon_rain": "我能控制云彩!此法术会在我所处世界各处召来雨水。消耗大约 1 个$(l:items/amethyst)$(item)充能紫水晶/$。若已在下雨就无效。", + "hexcasting.page.weather_manip.dispel_rain": "召雨的反面。此法术会将我所处世界的雨水驱离。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶碎片/$。若未在下雨就无效。", + "hexcasting.page.altiora.1": "此法术会将一束$(media)媒质/$在我身旁塑成翅膀状,并赋予其足够物质性,从而允许施法者滑翔。", + "hexcasting.page.altiora.2": "这对翅膀的操作方式与$(item)鞘翅/$完全一致。目标(必须是玩家)会被弹起而升空,此时按下$(k:jump)就能张开翅膀。这些翅膀十分脆弱,会在触碰到任意表面时破碎消失。长距飞行则可能需要$(l:patterns/spells/basic#hexcasting:add_motion)$(action)驱动/$或者$(item)烟花火箭/$(可能稍显鲁莽)的协助。$(br2)消耗大约 1 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.teleport/great.1": "此法术比$(l:patterns/spells/basic#hexcasting:blink)$(action)闪现/$更加强大,能将实体传送到世界上几乎任何一处!没有距离限制,它似乎需要消耗大约 10 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.teleport/great.2": "所给向量代表偏移量,而非世界中的绝对位置;比如,使用 (1, 0, 0) 时,目标实体会被传送到原有位置恰好 1 格以东处。$(br2)当然这种传送也不是尽善尽美的,在传送我自己时,我便难以保持十足的专注。这可能会导致我身上的部分物品散落在目的地周围。$(br2)还有,传送的实体将会被强制从其所乘坐的无生命载具中卸下……但我曾读到过动物可以一起被传送,大概吧。", + "hexcasting.page.zeniths.1": "此类法术会给予某一实体一个正面药水效果,与$(l:patterns/spells/nadirs)$(action)天底法术/$类似。然而,它们的$(media)媒质/$消耗会按效果强度的$(italic)立方/$计算。", + "hexcasting.page.zeniths.potion/regeneration": "给予$(thing)生命恢复/$。每 1 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.zeniths.potion/night_vision": "给予$(thing)夜视/$。每 5 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.zeniths.potion/absorption": "给予$(thing)伤害吸收/$。每 1 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.zeniths.potion/haste": "给予$(thing)急迫/$。每 3 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.zeniths.potion/strength": "给予$(thing)力量/$。每 3 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.greater_sentinel.1": "召唤一个比普通$(l:patterns/spells/sentinels)$(thing)哨卫/$要强大的哨卫。消耗大约 2 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.greater_sentinel.2": "卓越$(l:patterns/spells/sentinels)$(thing)哨卫/$除了看上去更奇特外和不用卓越法术召唤的哨卫一样。然而,我法术的生效范围会扩展到卓越$(l:patterns/spells/sentinels)$(thing)哨卫/$周围小范围处,大概是哨卫周围 16 格内。换句话说,不管我在世界上何处,我都能与卓越$(l:patterns/spells/sentinels)$(thing)哨卫/$周围的方块交互(尽管仍会受到“区块加载”这一神秘力量的影响)。", + "hexcasting.page.make_battery.1": "将$(media)媒质/$注入一个玻璃瓶,从而制成$(l:items/phials)$(item)试剂瓶/$。", + "hexcasting.page.make_battery.2": "和用于$(l:patterns/spells/hexcasting)$(action)制作施法物品/$的法术类似,我需要在另一只手中拿着一个$(item)玻璃瓶/$,并提供一个$(l:items/amethyst)$(item)紫水晶/$物品实体作为参数。更多信息参见$(l:items/phials)此页/$。$(br2)消耗大约 1 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.brainsweep_spell.1": "我搞不懂这个法术……说实话,我也不清楚我到底想不想搞懂。", + "hexcasting.page.lore.cardamom1.1": "$(italic)完整标题:卡达蒙·斯蒂勒斯寄给她父亲的信,#1/$$(br2)亲爱的爸爸,$(br)我对你攒钱送我来大图书馆的感激之情与日俱增。在这里学到的知识真是不可思议!我实在没法把我所见所想全部描述出来……能来这里真是太棒了。", + "hexcasting.page.lore.cardamom1.2": "我写这封信时正坐在主穹顶下,它是由咒法学学生联合会维护和保养的。他们在穹顶顶部装设了某种奇特的装置,由此就能捕获从勤奋苦攻的学生的课桌中逸散出来的散在思维能量,至少我了解到的是这样。我的舍友阿曼妮塔就在钻研这门学问,她也非常愿意滔滔不绝地为我解释其中原理,尽管我得承认我听不大懂。", + "hexcasting.page.lore.cardamom1.3": "就我的理解而言,我们思考的过程——也就是驱动我写这封信和你读这封信的无形机制——并不那么有效。一小部分能量会逸散到环境中,就和马车的车轴在长途跋涉后摸起来会有点烫一样。这些散在能量叫做“媒质”。一个人的散在媒质微不足道,但主穹顶下成百上千位思考者加在一起就不得了了,说不定会按几何级数增长呢!再配上某些绝妙的装置,这些媒质就能被固化为某种紫色的水晶。", + "hexcasting.page.lore.cardamom1.4": "有关她所研究的学问就讲这么多了。我今天和地质学学生联合会进行的第一次勘探告一段落啦!出发前没能写封信对不起啦,时间过得太快了。我们去了大图书馆东边的一道裂谷里冒险,还在层层岩石和土壤底下扎营过了夜。当然,我们只探索了洞穴里光照良好且勘探完全的地方。我觉得,在洞穴里过夜比在地表要安全得多,尽管我还是被狠狠地吓到了!", + "hexcasting.page.lore.cardamom1.5": "还好夜里没发生什么坏事,之后我们就往更深的地方去勘探本地矿脉了。我们在找的是一种稀有的紫色水晶矿脉,称作“紫水晶”,它们只以痕量出现在地层中。可惜的是,我们什么都没找到,只能两手空空地返回地表。", + "hexcasting.page.lore.cardamom1.6": "现在再想,这种“紫水晶”的外观描述貌似和阿曼妮塔所讲的媒质水晶极为类似。它们要是会自然形成于地底该怎么样,光是想想都兴奋!不过想来也是不大可能的吧……", + "hexcasting.page.lore.cardamom1.7": "作为一名学生,我每三个月能在阿卡夏邮局免费送一封信。但你也知道,我们并不富裕……恐怕这是唯一一种能和你说上话的方式了。你攒钱回信我再感激不过,但我们之间的联系机会恐怕不会很多。不过我认为,我在这能学到的知识可能远超贷款上写的数字的价值。我大概会是家族中第一个不当农民的人吧!", + "hexcasting.page.lore.cardamom1.8": "我三个月后会再写封信的。$(br2)你亲爱的,$(br)卡达蒙·斯蒂勒斯", + "hexcasting.page.lore.cardamom2.1": "$(italic)完整标题:卡达蒙·斯蒂勒斯寄给她父亲的信,#2/$$(br2)亲爱的爸爸,$(br)……天哪,把过去三个月的经历全写进信里真是件难事。这么难办的事居然是我免费得来的奇迹赐予的!我还真是辛苦。", + "hexcasting.page.lore.cardamom2.2": "我在地质学联合会的研究正稳步推进。我们又进行了一次实地考察,这次范围更深,深达灰色的岩石隐去而硬质的片状板岩出现的地方。那里的岩石会在脚下碎成呛人的粉末……脚下的危险已经需要打起十二分精神,更不用说对付那些藏身于黑暗的生物了。(我之前曾遇到过这种生物一两次,但我知道你会为我经受生死考验而坐立难安,所以就不提了。)", + "hexcasting.page.lore.cardamom2.3": "不过,我们确实发现了一些之前所说的紫水晶。在某次小型勘探中我们发现了个只有丁点水晶的小矿脉。我们需要严格遵守勘探规章,所以找到的紫水晶需全部取走并立刻上交给联合会中的学长。这整条规定不管怎么看都很荒诞。他们把这当做重要至极而绝密的事件,但又把考察交给来这总共还不到六个月的新生去做,还就在那么几巴掌大的地方用足足十二把探矿镐开采总共十克都不到的东西……", + "hexcasting.page.lore.cardamom2.4": "我完全想不明白为什么要这么做。一位图书管理员给我推荐了本宝石百科,其中提到紫水晶的用途接近于零。它主要用于制作某些特种玻璃和镜片,也基本算是没什么用了。$(br2)要是我猜,我会觉得紫水晶和他们口中的媒质是一种东西,就和我上次说的一样。", + "hexcasting.page.lore.cardamom2.5": "假如我的猜想属实,那那些严格的保密措施和学长们对质疑的排斥,也许就是因为这是大图书馆的原创性研究成果,而且不能让某些竞争对手知道。$(br2)然而,这个理论还是有点站不住脚。矿洞中发现的紫水晶和阿曼妮塔给我看的那些媒质水晶确实很相像,但并不完全一致。也许只有把两者放在一起才能看出端倪,不过媒质明显有种奇特的嗡鸣感和振动感,而紫水晶没有。", + "hexcasting.page.lore.cardamom2.6": "也许感受不到紫水晶的嗡鸣和振动只不过是身处地下的心理压力。我唯一一次摸到紫水晶时手一直在抖,而且触感确实很轻盈,不过对我而言两者的触感并不完全一致。两者的折射率也略有不同。$(br2)如果有机会在矿洞外碰见紫水晶,我一定要问下阿曼妮塔她能不能用紫水晶施咒。而且似乎每次我们碰面,她都新学到了些奇妙的技艺。", + "hexcasting.page.lore.cardamom2.7": "就在上周,她把我悬到了空中,而且完全没用支撑物!轻微的刺痛感,体感比空气还轻盈,但衣服又还是原本的重量……这种感觉非常奇怪。不过我确实很庆幸她在效果结束前把我拉到了床的正上方。$(br2)你亲爱的,$(br)卡达蒙·斯蒂勒斯", + "hexcasting.page.lore.cardamom3.1": "$(italic)完整标题:卡达蒙·斯蒂勒斯寄给她父亲的信,#3,第一部分/$$(br2)亲爱的爸爸,$(br)自从上次写信以来发生了两桩怪事。$(br2)第一件,负责管理入门等级咒法学联合会学生的教授失踪了。没人知道他去了哪里。他的办公室和住所都被上了锁,但里面还是那副乱糟糟的样子。", + "hexcasting.page.lore.cardamom3.2": "更奇怪的是,不管大图书馆的学生怎么激那帮冗杂官僚里管行政的人员,送去的信件都还被一一打回。连其他教授都不愿谈及他。$(br2)也正如你可能在担心的,阿曼妮塔十分沮丧。无论大图书馆派来哪位教授接任,都不如原先的教授那样善解人意和乐于助人。", + "hexcasting.page.lore.cardamom3.3": "但是,这还不是最怪的那件事。这件事——我很希望之后不要再碰到比这还骇人的事了——发生在我和地质学联合会的又一次考察中,我们计划前去某个村庄附近。", + "hexcasting.page.lore.cardamom3.4": "通常去居民点附近考察时,我们要与村庄的村长或长老进行长时间的磋商,以确定我们的行为是被允许的,并划定我们能去的地方和能做的事。但这次不一样,这次没有磋商。出发前两天我们才被告知这次要跟着咒法学联合会的一位学长去。", + "hexcasting.page.lore.cardamom3.5": "我们在村庄附近的密林中扎营,不知道为什么不选附近的平原。支帐篷的地方几乎看不到村庄。在刚到那天的晚上,我铺开睡袋时,周围是死一般的寂静。就算我们看不见村庄,我们也应该能听到村庄里的声音。但是在地表待着的整段时间里,我却几乎什么都听不见。", + "hexcasting.page.lore.cardamom3.6": "我听到的为数不多的声音都像是劳作时发出的那种,比如锤子砸到铁砧上的响声和锄头翻土的噪声。我完全没听到说话声。$(br2)第二天早晨我们就备好灯笼进入了地下。", + "hexcasting.page.lore.cardamom3.7": "我们没被告知到底要找什么,但有学生听说我们是来找紫水晶的,这貌似说得通。我早已练出能在矿洞壁上瞄中任何一小点紫色闪光的绝技,但就在灰色岩石和黑色板岩的交界处,我面前却赫然出现了一座奇观。$(br2)那是一整个紫水晶晶洞,快有十个我那么高,并随着灯光闪着紫色光芒,洞壁的每一面都被尖锐的紫色水晶覆盖。那些紫水晶比我来大图书馆之后整个探险组挖到的所有加起来还多。", + "hexcasting.page.lore.cardamom3.8": "我们每人被发了一副手套并被告知加紧开采。和我们同行的一位学长拿出了一个奇特的淡紫色盒子,高层人员会拿这种盒子来装东西,我和其他学生则兢兢业业地把那些玻璃质水晶从墙上砸下,然后放到盒子里去。外层脆性水晶的基座后方似乎有两种更为致密的构造。一种和外层水晶类似,但另一种更为……我词穷了。", + "hexcasting.page.lore.cardamom3.9": "“重要”这词也不合适,但这是我能想到的最贴切的形容词了。它有一种特殊的……庄重感,就好像它上面的 X 形暗色深槽有某种神圣的意味。但出于某种理由,我们被严令禁止触摸它们。偶尔某名学生会不小心敲碎一块,那样的话那名学生就会被严厉责骂。尽管我全身心投入了繁复的开采工作,我还是感觉……格外的清醒。这种感受很混杂:我的思维非常清晰,但同时我感受到,如果我放下手头工作去探究那种感受的话,可能就再也探究不完了。", + "hexcasting.page.lore.cardamom3.10": "就好像每次吸气,我脑袋里就竖起一个路标,我能感受到它正坚定地为我指示正确的道路,然而实际上指向的却是一座陡崖。我甩了甩头又继续开采,甩头似乎有助于无视那些路标。$(br2)不过我成功偷藏了一小块水晶碎片。$(br2)我们采矿采了快一整天,到学长的时间计指示太阳快落山时我们几乎把剩下的水晶都挖完了。", + "hexcasting.page.lore.cardamom3.11": "就在我们要离开的时候,我又留意到先前禁止我们开采的那些水晶,它们暗色的深槽里似乎新出现了晶芽,就好像它们从中长出来了一样。我所知的地质学中有关水晶的所有知识都表明,这些水晶需要成千上万年才能长成,但仅在一天之内,新水晶就在我的眼前凭空出现了。学长们的开采禁令确实有道理,大概吧。", + "hexcasting.page.lore.cardamom3.12": "回到地表的路程中没发生什么事,我们也正好在太阳落山的时候回到了营地。非常抱歉,信纸快用完了。阿卡夏信笺只够写这些字但这故事值得两封信一起寄应该能同时到$(br2)你亲爱的,$(br)卡达蒙·斯蒂勒斯", + "hexcasting.page.lore.cardamom4.1": "$(italic)完整标题:卡达蒙·斯蒂勒斯寄给她父亲的信,#3,第二部分/$$(br2)亲爱的爸爸,$(br)正如我所说,信纸不够了,故事剩余部分就放在这份信里了。我们正好在太阳落山时回到了营地。而那天晚上的经历是整个奇怪考察中最为骇人的。", + "hexcasting.page.lore.cardamom4.2": "我半夜醒来想去方便一下。那时云层完全把月亮遮住了,我在森林中迷了路,找不回营地。但我又害怕夜晚的那些怪物,于是就决定去村庄里找个地方睡觉。至少那里是安全的。", + "hexcasting.page.lore.cardamom4.3": "村庄倒是很好找,尽管村庄里没有哪怕一点声音。就算这么晚了,旅店不说人来人往,也绝不会悄无声息。但无论怎么看旅馆的门缝,我都没能发现任何人的踪影。$(br2)我敲了敲一间房子的门,没有回应。再敲旁边的两间,也都没有回应,甚至感觉就像是房子从来就空着一样。", + "hexcasting.page.lore.cardamom4.4": "我的心跳得越来越快,但又铆足勇气进下一间房里看看。我想不管房里住着什么人,他都会理解的。至少,能听见另一个人的声音,我就安心了,就算他们不让我在房里过夜,起码也能安心。$(br2)房子很小,只够挤下一张床和一个制图台。我看见床上躺了人,就试着安慰我自己村子里的人不过是睡得很熟罢了。然后我转头就要离开。", + "hexcasting.page.lore.cardamom4.5": "但就在这时云层散开了,月光洒到了床上的生物上。$(br2)我忍不住叫了出来,它的眼睛也应声睁开。它……长得很怪异,很明显不是人类,反倒像是某种人类的退化产物。它的额头拔得很高,它的身体矮胖而笨拙,我想拿“它”这个字形容比较合适。那个生物明显没有人类的智慧,虽然它看起来像是人类。", + "hexcasting.page.lore.cardamom4.6": "它的视线直接对准了我——它的眼睛暗淡、了无智慧,就和绵羊的一样!它开了口,但发出的声音仅是对言语的无情亵渎——是一声令人颤栗的哼叫。", + "hexcasting.page.lore.cardamom4.7": "我落荒而逃。在月光的照耀下,我透过道旁的窗户瞥见了其他镇民,他们都已被扭曲到……长得和我先前所见的那个$(italic)怪物/$一模一样。我迅速跑回森林里,一心只想逃离那些扭曲的脸孔和那恐怖的动物般的眼睛。$(br2)多亏有月光,营地好找多了。不过好像没人注意到我失踪了一段时间,还好还好。我躺回了我的睡袋,整晚一直在想方设法忘记那段经历。", + "hexcasting.page.lore.cardamom4.8": "但从这封信里也能看出,我并没能忘掉。那个扭曲的身影仍萦绕在我的梦境里。我只要想到那东西曾经可能是个人类就脊背发凉。$(br2)一回到大图书馆,我就给阿曼妮塔看了偷带回来的水晶碎片。她肯定了我的猜想:这是一块媒质水晶。但她完全无法想象地下居然有满是这种水晶的巨大晶洞。", + "hexcasting.page.lore.cardamom4.9": "她还提到了某些有意思的事情:媒质水晶和真正的紫水晶都能用于制造先前我提过的特种玻璃。媒质水晶和紫水晶的晶体构造和物理性质几乎完全一致,而这和媒质的魔法性质没有关系,她是这么说的。$(br2)我最后没把遭遇满村怪物的经历告诉她。", + "hexcasting.page.lore.cardamom4.10": "我知道我们家生活拮据,也知道从家里送一封信过来有多贵,但我求你,求你能给我一句忠告。我自从那时起一直心慌意乱,能读到你的信就是莫大的安慰。$(br2)你亲爱的,$(br)卡达蒙·斯蒂勒斯", + "hexcasting.page.lore.cardamom5.1": "$(italic)完整标题:卡达蒙·斯蒂勒斯寄给她父亲的信,#4/$$(br2)阿曼妮塔消失了。$(br2)我完全不知道她去了哪里,爸爸。最后一次看到她是在晚饭时,她还在和其他人讨论学生失踪的情况,但那之后——", + "hexcasting.page.lore.cardamom5.2": "之后——之后她也不见了。但没人谈起她。我太害怕了,爸爸,他们是都知道些什么吗?每个人都会有个朋友突然$(italic)消失/$,消失得无影无踪。$(br2)他们都去$(italic)哪里/$了?", + "hexcasting.page.lore.cardamom5.3": "他们还一直在叫停设施和活动——我有好几周没和地质学联合会去考察了,穹顶上所有收集媒质的装置也不见了,药剂学联合会几个月没出现了……就好像大图书馆被白蚁啃到只剩了副空壳。$(br2)我觉得他们也开始审查我们写的信了……", + "hexcasting.page.lore.cardamom5.4": "写下这封信需要很大勇气,但我已没有勇气和其他人说这件事。假如学院里没人能出去的话,我希望你能把消息传出去……传到偏僻如布雷肯法尔的地方只是我的痴心妄想,但求求你了,爸爸,求求你尽你所能。爸爸,一定要记住他们……阿曼妮塔·黎博拉(Amanita Libera)、贾思敏·沃德(Jasmine Ward)、西奥多·查……(Theodore Cha...)求求你了,一定要记住他们……我把责任强加于你,只求你能原谅我的懦弱。", + "hexcasting.page.lore.cardamom5.5": "我写不了字了,手一直在抖,求你救救我们吧。", + "hexcasting.page.lore.inventory.1": "39 号牢房,回收日志 #72,监禁中心 β 座$(br2)囚犯名称:拉斐尔·巴尔$(br)罪行:知晓“毡障”计划$(br)牢房空置原因:死亡$(br)备注:牢房墙壁上大片区域涂写有如下文字。", + "hexcasting.page.lore.inventory.2": "我闭眼时能看见六边形。$(br2)那些图案,它们侵入我的眼睑、我的意识、我的梦境。我的意识在清醒和混乱中反复,就像挂在绳上摇晃的水晶,有时随光闪烁,有时被光吞噬。", + "hexcasting.page.lore.inventory.3": "我今天更清醒了。也许。我不知道。我都不知道我还算不算累。长时间的疲劳早已使我麻木,甚至有东西来刺我眼睛我都感觉不到了。我感受不到疲劳。但疲劳是真实的。$(br2)我的骨头脆弱易折。我的关节粗糙而尖锐。", + "hexcasting.page.lore.inventory.4": "有时我能想起我来这的原因。我记得我对某些我所知的过于张扬了……我记得我在某间很亮的房间中被告知了些什么。我记得我的思维被凝成玻璃,被粉碎,被融化,又重新结晶,然后重复重复重复重复重复就像有人想让我忘记比那还糟是想让我活着同时杀死我,我的自我,我的 iota 没了意义因为没有观察者只有躯体但我瞒过了他们我居然做到了", + "hexcasting.page.lore.inventory.5": "他们觉得他们把我摧毁得能用毛毡盖眼哄骗我但我是清醒的清醒到能感到痛苦$(br2)我不睡觉但我醒来时我不敢把硬壳从我眼睛上搓掉不然会割破皮而且我不想看见紫色闪光", + "hexcasting.page.lore.inventory.6": "他们没杀我,因为我丈夫有我的核心,我死了他会知道。但他不是咒术师所以他没法凭他自己找到我。我走投无$(br2)思考很甬苦。真的很痛苦。思维是累赘累赘印在无数细小水晶上", + "hexcasting.page.lore.inventory.7": "我记得那个明亮房间里的医生强迫我吸入某种类似沙子的东西,但更锐利还非常痛。一开始只是黏膜试图吸住玻璃渣的物理性创伤但之后他们把指甲插到我的刺激反应里他们说几句话就能做到$(br2)我记得去露营时看到联合会成员围着一个村庄铺设法术环然后地面就开始震动", + "hexcasting.page.lore.inventory.8": "没了时间观念。有时我觉得我能看到未来,因为那些场景好像说得通但现在不可能发生因为我知道我余生就待在这了因为亮房里的人这么说了。我能看到我整个人倒了过来我的颅骨裂成两半里面都是长矛样的淌着血的不是紫水晶的东西扎穿一块满是皱纹还幻想自己是蝴蝶的三磅重的脂肪和肉", + "hexcasting.page.lore.inventory.9": "我希望我的学生们还好。我为什么会这么想?累赘。他们告诉我我是累赘,他们不满足于摧毁我,他们还想让我觉得这是我应得的。不用棍棒摧毁身体,而以言语击垮精神。就算他们把我放出去也没人会信我因为我看起来就像一个沉溺于过度施法的瘾君子$(br2)但他们还是把我琐着我不知道这算不算仁慈", + "hexcasting.page.lore.inventory.10": "周围这么多媒质我试过好多次施法逃出去或是至少减轻痛苦但那些扫过我的意识的图案在我试着绘制时不停窃笑溶解。我似乎记得我被迫忘记它们,我记得卓伟的互相连接的知识体系被凿空并在刻意忽视的重压下碎裂但回忆起忘记你曾记得你学过的东西再痛苦不过", + "hexcasting.page.lore.inventory.11": "也许我已在过度施法依赖症的晚期中的晚期了,我听见图案裁进我眼睛和眼睑间的空间,我神经的紫色边缘。强迫自己相信什么是真实的和我没在受折磨有意义吗。我该受折磨。如果我再也不能和其他人谈这件事为什么还要尝试呢", + "hexcasting.page.lore.inventory.12": "他们要吧世界上所有人都杀了不是吗大图书馆要吃东西和我一……我上次乞东西是什么时候$(br2)所有人都要吃东西但他们做不到如果所有农夫都死了并且所有农耕知识都被埋到地底下去他们就做不到也许有人能发现真相并把那窝人沾沾自喜的破脸熔成蜡油", + "hexcasting.page.lore.inventory.13": "也许某天醒来会疑惑我们留给他们的冬西会疑惑为何地底有无数洞穴隧道但没人聪明到去开采$(br2)我能看见他们在读这些东西 。他们 …… 会不屑一顾", + "hexcasting.page.lore.experiment1.1": "$(italic)我只从这份日志中找到了如下五份记录。/$$(br2)质震 #26$(li)位置:北卡彭特镇$(li)人口:174$(li)形成节点数:3$(li)节点距质源距离:垂直距离 55-80 m,水平距离 85-156 m$(li)媒质生成速率:1320 uθ/min", + "hexcasting.page.lore.experiment1.2": "质震 #27$(li)位置:布雷肯法尔$(li)人口:79$(li)形成节点数:1$(li)节点距质源距离:垂直距离 95 m,水平距离 67 m$(li)媒质生成速率:412 uθ/min", + "hexcasting.page.lore.experiment1.3": "质震 #28$(li)位置:格雷斯顿$(li)人口:大约 1000$(li)形成节点数:18$(li)节点距质源距离:垂直距离 47-110 m,水平距离 59-289 m$(li)媒质生成速率:8478 uθ/min", + "hexcasting.page.lore.experiment1.4": "质震 #29$(li)位置:无名村庄,格雷斯顿以西两天路程$(li)人口:35$(li)形成节点数:0$(li)节点距质源距离:N/A$(li)媒质生成速率:N/A$(br2)注:居民仍以正常形式被影响", + "hexcasting.page.lore.experiment1.5": "质震 #30$(li)位置:沸溪镇$(li)人口:231$(li)形成节点数:4$(li)节点距质源距离:垂直距离 61-89 m,水平距离 78-191 m$(li)媒质生成速率:1862 uθ/min", + "hexcasting.page.lore.experiment1.6": "总结:一个节点需要大约 60 单位。数量过少时其仍将被消耗,但不会生成足以形成节点的能量。输入个数与垂直水平距离之间相关性很小。$(br2)对群体居民的影响效果(身体机能尤甚)仍比单目标测试时的强,一如往常。", + "hexcasting.page.lore.experiment2.1": "$(italic)这些文件中许多内容都已被编辑。剩余可读文本如下。/$$(br2)对象 #1 “A.E.”$(br)执行程序后立刻停止挣扎。面部与四肢松弛,但可不受协助站立。当不受看管时,对象会出神地做其先前职业(场地管理员)中常做的动作。", + "hexcasting.page.lore.experiment2.2": "实验程序执行后较短时间内心率极高,但由于对象在此之前处于极度恐慌状态,该现象是非决定性的。所得晶芽生成速率为 35 uθ/min。$(br)……$(br)对象 #4 “P.I.”$(br)对 P.I. 进行心理测试。对象理解物体恒存性,具有空间感知力,有基础数学逻辑推理能力。难以完成全新任务。$(br2)……", + "hexcasting.page.lore.experiment2.3": "对象 #7 “T.C.”$(br)对象同意对其执行程序。程序执行几小时后结果与其他对象类似:能站立,能执行简单任务。$(br2)……$(br2)对象 #11 “R.S.”$(br)执行程序前接受镇定,其剂量控制为能使对象在执行程序时醒来……$(br2)……", + "hexcasting.page.lore.experiment2.4": "对象 #23 “A.L.”$(br)相较其他对象,其保有更强的语言能力。在几小时内,其语言能力退化至只能组织混乱的句子,而后则至仅能说出“卡”这一个字。$(br2)待进一步测试:实验程序分别如何影响咒术师和非咒术师?$(br2)……", + "hexcasting.page.interop.1": "$(hex)咒法学/$是一门多用途的学问。如果世界能被某些其他力量$(italic)改变/$,那么有可能$(hex)咒法学/$可以和它们和谐相处,协同使用。", + "hexcasting.page.interop.2": "应当谨记,自然似乎在这些方面耗费的精力较少,可能会出现奇怪的现象和漏洞。我相信模组制作者们会尽他们所能来纠正这些错误,但也必须理解这只是他们的业余爱好。$(br2)也许我会发现某些协同力量带来的法术在平衡性上表现不佳。我想我应该有足够的自控力不去滥用。", + "hexcasting.page.interop.3": "最后,如果对剧情和故事感兴趣,就应理解试验这些协同力量时所做的笔记只会是些琐事。", + "hexcasting.page.interop.gravity.1": "我发现了获取与改变实体所受引力的操作。挺有趣,也挺让人头晕。$(br2)有趣的是,虽然$(l:patterns/spells/flight)$(action)飞行/$的范围和持续时间有限,且也能操控引力,但这些法术的操控方式似乎有所区别。我不能理解……也许模组制作者们只是想让玩家们玩得开心。", + "hexcasting.page.interop.gravity.get": "获取所给实体的所受引力的主方向上的单位向量。对大多数实体而言,此向量会是向下的:(0, -1, 0)。", + "hexcasting.page.interop.gravity.set": "设置所给实体所受引力的主方向。所给向量会被转换为与其夹角最小的轴向单位向量,如同$(l:patterns/math#hexcasting:coerce_axial)$(action)轴向之纯化/$那样。消耗大约 1 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.interop.pehkui.1": "我发现了改变实体大小,和得知它们相较原本究竟变了多少的方法。", + "hexcasting.page.interop.pehkui.get": "获取实体的大小倍数,也即当前大小和原本大小的比值。对大多数实体而言,此值为 1。", + "hexcasting.page.interop.pehkui.set": "设置实体的大小倍数,需传入一个与其原本大小的比值。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶碎片/$。" +}