renumber book to start with

This commit is contained in:
yrsegal@gmail.com 2022-04-10 21:32:59 -04:00
parent 27e68346c5
commit e14dacc73e
26 changed files with 334 additions and 320 deletions

View file

@ -54,6 +54,8 @@ public class RegisterPatterns {
OpEntityPos.INSTANCE);
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("wa", HexDir.EAST), prefix("get_entity_look"),
OpEntityLook.INSTANCE);
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("awq", HexDir.NORTH_EAST), prefix("get_entity_look"),
OpEntityHeight.INSTANCE);
PatternRegistry.mapPattern(HexPattern.FromAnglesSig("wqaawdd", HexDir.EAST), prefix("raycast"),
OpBlockRaycast.INSTANCE);

View file

@ -282,13 +282,16 @@
"hexcasting.spell.hexcasting:write": "Scribe's Gambit",
"hexcasting.spell.hexcasting:read/akashic": "Akasha's Distillation",
"hexcasting.spell.hexcasting:write/akashic": "Akasha's Gambit",
"hexcasting.spell.hexcasting:read/entity": "Scribe's Distillation",
"hexcasting.spell.hexcasting:read/entity": "Scribe's Purification",
"hexcasting.spell.hexcasting:const/vec/px": "Vector Reflection +X",
"hexcasting.spell.hexcasting:const/vec/py": "Vector Reflection +Y",
"hexcasting.spell.hexcasting:const/vec/pz": "Vector Reflection +Z",
"hexcasting.spell.hexcasting:const/vec/nx": "Vector Reflection -X",
"hexcasting.spell.hexcasting:const/vec/ny": "Vector Reflection -Y",
"hexcasting.spell.hexcasting:const/vec/nz": "Vector Reflection -Z",
"hexcasting.spell.hexcasting:const/vec/x": "Vector Reflection +X/-X",
"hexcasting.spell.hexcasting:const/vec/y": "Vector Reflection +Y/-Y",
"hexcasting.spell.hexcasting:const/vec/z": "Vector Reflection +Z/-Z",
"hexcasting.spell.hexcasting:const/vec/0": "Vector Reflection Zero",
"hexcasting.spell.hexcasting:const/double/pi": "Arc's Reflection",
"hexcasting.spell.hexcasting:const/double/tau": "Circle's Reflection",
@ -388,7 +391,7 @@
"hexcasting.page.geodes.2": "It appears that, in addition to the $(item)Amethyst Shards/$ I usually see, these crystals can also drop $(item)Amethyst Dust/$ and $(item)Charged Amethyst Crystals/$. It looks like I'll have a better chance of finding $(item)Charged Amethyst Crystals/$ by using a Fortune pickaxe.",
"hexcasting.page.geodes.3": "As I take the beauty of the geode in, I can feel connections flashing wildly in my mind. It's like the _media in the air is entering me, empowering me, elucidating me... It feels wonderful.$(br2)Finally, my study into the arcane is starting to make some sense!$(p)Let me reread those old legends again, now that I know what I'm looking at.",
"hexcasting.entry.couldnt_cast": "A Frusturation",
"hexcasting.entry.couldnt_cast": "A Frustration",
"hexcasting.page.couldnt_cast.1": "Argh! Why won't it let me cast the spell?!$(br2)The scroll I found rings with authenticity. I can $(italic)feel/$ it humming in the scroll-- the pattern is true, or as true as it can be. The spell is $(italic)right there/$.$(p)But it feels if it's on the other side of some thin membrane. I called it-- it tried to manifest-- yet it $(italic)COULD NOT/$.",
"hexcasting.page.couldnt_cast.2": "It felt like the barrier may have weakened ever so slightly from the force that I exerted on the spell; yet despite my greatest efforts-- my deepest focus, my finest amethyst, my precisest drawings-- it $(italic)refuses/$ to cross the barrier. It's maddening.$(p)$(italic)This/$ is where my arcane studies? Cursed by impotence, cursed to lose my rightful powers?$(br2)I should take a deep breath. I should meditate on what I have learned, even if it wasn't very much...",
"hexcasting.page.couldnt_cast.3": "...After careful reflection... I have discovered a change in myself.$(p)It seems... in lieu of $(item)amethyst/$, I've unlocked the ability to cast spells using my own mind and life energy-- just as I read of in the legends of old.$(p)I'm not sure why I can now. It's just... the truth-knowledge-burden was always there, and I see it now. I know it. I bear it.$(br2)Fortunately, I feel my limits as well-- I would get approximately two $(item)Charged Amethyst/$'s worth of _media out of my health at its prime.",
@ -536,7 +539,7 @@
"hexcasting.page.brainsweeping.1": "A secret was revealed to me. I saw it. I cannot forget its horror. The idea skitters across my brain.$(br2)I belived-- oh, foolishly, I $(italic)believed/$ --that _Media is the spare energy left over by thought. But now I $(italic)know/$ what it is: the energy $(italic)of/$ thought.",
"hexcasting.page.brainsweeping.2": "It is produced by thinking sentience and allows sentience to think. It is a knot tying that braids into its own string. The Entity I naively anthromorphized as Nature is simply a grand such tangle, or perhaps the set of all tangles, or ... if I think it hurts I have so many synapses and all of them can think pain at once ALL OF THEM CAN SEE$(br2)I am not holding on. My notes. Quickly.",
"hexcasting.page.brainsweeping.3": "The villagers of this world have enough consciousness left to be extracted. Place it into a block, warp it, change it. Intricate patterns caused by different patterns of thought, the abstract neural pathways of their jobs and lives mapped into the cold physic of solid atoms.$(br2)This is what $(l:patterns/great_spells/brainsweep)$(action)Flay Mind/$ does, the extraction. Target the villager entity and the destination block. Ten $(item)Charged Crystals/$ for this perversion of will.",
"hexcasting.page.brainsweeping.4": "And an application. For this flaying, any sort of villager will do, if it has developed enough. Other recipes require more specific types. NO MORE must I descend into the hellish earth for my _media.",
"hexcasting.page.brainsweeping.budding_amethyst": "And an application. For this flaying, any sort of villager will do, if it has developed enough. Other recipes require more specific types. NO MORE must I descend into the hellish earth for my _media.",
"hexcasting.entry.spellcircles": "Spell Circles",
"hexcasting.page.spellcircles.1": "I KNOW what the $(item)slates/$ are for. The grand assemblies lost to time. The patterns scribed on them can be actuated in sequence, automatically. Thought and power ricocheting through, one by one by one by one by one by through and through and THROUGH AND -- I must not I must not I should know better than to think that way.",
@ -546,30 +549,30 @@
"hexcasting.page.spellcircles.5": "However, a spell cast from a circle does have one major limitation: it is unable to affect anything outside of the circle's bounds. That is, it cannot interact with anything outside of the cuboid of minimum size which encloses every block composing it (so a concave spell circle can still affect things in the concavity).",
"hexcasting.page.spellcircles.6": "There is also a limit on the number of blocks the wave can travel through before it disintegrates, but it is large enough I doubt I will have any trouble.$(br2)Conversely, there are some actions that can only be cast from a circle. Fortunately, none of them are spells; they all seem to deal with components of the circle itself. My notes on the subject are $(l:patterns/circle)here/$.",
"hexcasting.page.spellcircles.7": "I also found a sketch of a spell circle used by the ancients buried in my notes. Facing this page is my (admittedly poor) copy of it.$(br2)The patterns there would have been executed counter-clockwise, starting with $(action)Mind's Reflection/$ and ending with $(action)Greater Teleport/$.",
"hexcasting.page.spellcircles.8.title": "Teleportation Circle",
"hexcasting.page.spellcircles.teleport_circle.title": "Teleportation Circle",
"hexcasting.entry.impetus": "Impetuses",
"hexcasting.page.impetus.1": "The fluctuation of _media required to actuate a spell circle is complex. Even the mortal with sharpest eyes and steadiest hands could not serve as an $(item)Impetus/$ and weave _media into the self-sustaining ourobouros required.$(br2)The problem is that the mind is too full of other useless $(italics)garbage/$.",
"hexcasting.page.impetus.2": "At a ... metaphysical level-- I must be careful with these thoughts, I cannot lose myself, I have become too valuable --moving _media moves the mind, and the mind must be moved for the process to work. But, the mind is simply too $(italic)heavy/$ with other thoughts to move nimbly enough.$(br2)It is like an artisan trying to repair a watch while wearing mittens.",
"hexcasting.page.impetus.3": "There are several solutions to this conundrum: through meditative techniques one can learn to blank the mind, although I am not certain a mind free enough to actuate a circle can concentrate hard enough to do the motions.$(br2)Certain unsavory compounds can create a similar effect, but I know nothing of them and do not plan to learn. I must not rely on the chemicals of my brain.",
"hexcasting.page.impetus.4": "The solution I aim for, then, is to specialize a mind. Remove it from the tyranny of nerves, clip all outputs but delicate splays of _media-manipulating apparati, cauterize all inputs but the signal to start its work.$(br2)The process of $(action)mindflaying/$ I am now familiar with will do excellently; the mind of a villager is complex enough to do the work, but not so complex as to resist its reformation.",
"hexcasting.page.impetus.5": "First, the cradle. Although it does not work as an $(item)Impetus/$, the flow of _media in a circle will only exit out the side pointed to by the arrows. This allows me to change the plane in which the wave flows, for example.",
"hexcasting.page.impetus.6": "Then, to transpose the mind. Villagers of different professions will lend different actuation conditions to the resulting $(item)Impetus/$. A Toolsmith's activates on a simple $(k:use).",
"hexcasting.page.impetus.7": "A Cleric Impetus must be bound to a player by using an item with a reference to that player, like a $(item)Focus/$, on the block. Then, it activates when receiving a redstone signal.$(br2)",
"hexcasting.page.impetus.8": "Peculiarly to this Impetus, the bound player, as well as a small region around them, are always accessible to the spell circle. It's as if they were standing within the bounds of the circle, no matter how far away they might stand.$(br2)The bound player is shown when looking at a Cleric Impetus through a $(item)Scrying Lens/$.",
"hexcasting.page.impetus.9": "A Fletcher Impetus activates when looked at for a short time.",
"hexcasting.page.impetus.empty_impetus": "First, the cradle. Although it does not work as an $(item)Impetus/$, the flow of _media in a circle will only exit out the side pointed to by the arrows. This allows me to change the plane in which the wave flows, for example.",
"hexcasting.page.impetus.impetus_rightclick": "Then, to transpose the mind. Villagers of different professions will lend different actuation conditions to the resulting $(item)Impetus/$. A Toolsmith's activates on a simple $(k:use).",
"hexcasting.page.impetus.impetus_storedplayer.1": "A Cleric Impetus must be bound to a player by using an item with a reference to that player, like a $(item)Focus/$, on the block. Then, it activates when receiving a redstone signal.$(br2)",
"hexcasting.page.impetus.impetus_storedplayer.2": "Peculiarly to this Impetus, the bound player, as well as a small region around them, are always accessible to the spell circle. It's as if they were standing within the bounds of the circle, no matter how far away they might stand.$(br2)The bound player is shown when looking at a Cleric Impetus through a $(item)Scrying Lens/$.",
"hexcasting.page.impetus.impetus_look": "A Fletcher Impetus activates when looked at for a short time.",
"hexcasting.entry.directrix": "Directrices",
"hexcasting.page.directrix.1": "Simpler than the task of creating a self-sustaining wave of _media is the task of directing it. Ordinarily the wave disintegrates when coming upon a crossroads, but with a mind to guide it, an exit direction can be controlled.$(br2)This manipulation is not nearly so fine as the delicacy of actuating a spell circle. In fact, it might be possible to do it by hand... but the packaged minds I have access to now would be so very convenient.",
"hexcasting.page.directrix.2": "A Directrix accepts a wave of _media and determines to which of the arrows it will exit from, depending on the villager mind inside.$(br2)I am not certain if this idea was bestowed upon me, or if my mind is bent around the barrier enough to splint off its own ideas now... but if the idea came from my own mind, if I thought it, can it be said it was bestowed? The brain is a vessel for the mind and the mind is a vessel for ideas and the ideas vessel thought and thought sees all and knows all-- I MUST N O T",
"hexcasting.page.directrix.3": "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.",
"hexcasting.page.directrix.4": "A 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.",
"hexcasting.page.directrix.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.",
"hexcasting.page.directrix.directrix_redstone": "A 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.",
"hexcasting.entry.akashiclib": "Akashic Libraries",
"hexcasting.page.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.",
"hexcasting.page.akashiclib.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 $(item)Akashic Record/$ controls the library, and each $(item)Akashic Bookshelf/$ stores one pattern mapped to one iota. These must all be directly connected together, touching. An $(item)Akashic Ligature/$ doesn't do anything but count as a connecting block, to extend the size of my library.",
"hexcasting.page.akashiclib.3": "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.",
"hexcasting.page.akashiclib.4": "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 scroll on a bookshelf copies the pattern there onto the scroll. Sneaking and using an empty hand clears the datum in the shelf.",
"hexcasting.page.akashiclib.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.",
"hexcasting.page.akashiclib.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 scroll on a bookshelf copies the pattern there onto the scroll. Sneaking and using an empty hand clears the datum in the shelf.",
"_comment": "Patterns",
@ -580,106 +583,107 @@
"hexcasting.page.readers_guide.4": "\"\u2192 $(n)entity/$\" means it'll just push an entity. \"$(n)entity, vector/$ \u2192\" means it removes an entity and a vector, and doesn't push anything.$(br2)Finally, if I find the little dot marking the stroke order too slow or confusing, I can press $(thing)Control/Command/$ to display a gradient, where the start of the pattern is darkest and the end is lightest. This works on scrolls and when casting, too!",
"hexcasting.entry.basics_pattern": "Basic Patterns",
"hexcasting.page.basics_pattern.1": "Adds me, the caster, to the stack.",
"hexcasting.page.basics_pattern.2": "Transforms an entity on the stack into its position.",
"hexcasting.page.basics_pattern.3": "Transforms an entity on the stack into the direction it's looking in, as a unit vector.",
"hexcasting.page.basics_pattern.4": "Displays the top iota of the stack to me.",
"hexcasting.page.basics_pattern.5": "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?",
"hexcasting.page.basics_pattern.6": "For example, casting this with my own position and look vectors will return the coordinates of the block I am looking at.$(br2)If it doesn't hit anything, the vectors will combine into Null.",
"hexcasting.page.basics_pattern.7": "Like $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation$(/l), but instead returns a vector representing the answer to the question: Which $(italic)side/$ of the block am I looking at?",
"hexcasting.page.basics_pattern.8": "More specifically, it returns the $(italic)normal vector/$ of the face hit, or a vector with length 1 pointing perpendicular to the face.$(li)If I am looking at a floor, it will return (0, 1, 0).$(li)If I am looking at the south face of a block, it will return (0, 0, 1).$(br)",
"hexcasting.page.basics_pattern.9": "Like $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation$(/l), but instead returns the $(italic)entity/$ I am looking at.",
"hexcasting.page.basics_pattern.get_caster": "Adds me, the caster, to the stack.",
"hexcasting.page.basics_pattern.get_entity_pos": "Transforms an entity on the stack into its position.",
"hexcasting.page.basics_pattern.get_entity_look": "Transforms an entity on the stack into the direction it's looking in, as a unit vector.",
"hexcasting.page.basics_pattern.get_entity_height": "Transforms an entity on the stack into its height.",
"hexcasting.page.basics_pattern.print": "Displays the top iota of the stack to me.",
"hexcasting.page.basics_pattern.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?",
"hexcasting.page.basics_pattern.raycast.2": "For example, casting this with my own position and look vectors will return the coordinates of the block I am looking at.$(br2)If it doesn't hit anything, the vectors will combine into Null.",
"hexcasting.page.basics_pattern.raycast/axis.1": "Like $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation$(/l), but instead returns a vector representing the answer to the question: Which $(italic)side/$ of the block am I looking at?",
"hexcasting.page.basics_pattern.raycast/axis.2": "More specifically, it returns the $(italic)normal vector/$ of the face hit, or a unit vector pointing perpendicular to the face.$(li)If I am looking at a floor, it will return (0, 1, 0).$(li)If I am looking at the south face of a block, it will return (0, 0, 1).$(br)",
"hexcasting.page.basics_pattern.raycast/entity": "Like $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation$(/l), but instead returns the $(italic)entity/$ I am looking at.",
"hexcasting.entry.numbers": "Number Literals",
"hexcasting.page.numbers.1.header": "Numerical Reflection",
"hexcasting.page.numbers.1": "Irritatingly, there is no easy way to draw numbers. Here is the method Nature deigned to give us.",
"hexcasting.page.numbers.2": "First, I draw one of the two shapes shown on the other page. Next, the $(italic)angles/$ following will modify a running count starting at 0.$(li)Forward: Add 1$(li)Left: Add 5$(li)Right: Add 10$(li)Sharp Left: Multiply by 2$(li)Sharp Right: Divide by 2.$(br)The clockwise version of the pattern, on the right of the other page, will negate the value at the very end. (The left-hand counter-clockwise version keeps the number positive).$(p)Once I finish drawing, the number's pushed to the top of the stack.",
"hexcasting.page.numbers.3.header": "Example 1",
"hexcasting.page.numbers.3": "This pattern pushes 10.",
"hexcasting.page.numbers.4.header": "Example 2",
"hexcasting.page.numbers.4": "This pattern pushes 7: 5 + 1 + 1.",
"hexcasting.page.numbers.5.header": "Example 3",
"hexcasting.page.numbers.5": "This pattern pushes -32: negate 1 + 5 + 10 * 2.",
"hexcasting.page.numbers.6.header": "Example 4",
"hexcasting.page.numbers.6": "This pattern pushes 4.5: 5 / 2 + 1 + 1.",
"hexcasting.page.numbers.7": "In certain cases it might be easier to just use an $(l:items/abacus)$(item)Abacus/$. But, it's worth knowing the \"proper\" way to do things.",
"hexcasting.page.numbers.example.10.header": "Example 1",
"hexcasting.page.numbers.example.10": "This pattern pushes 10.",
"hexcasting.page.numbers.example.7.header": "Example 2",
"hexcasting.page.numbers.example.7": "This pattern pushes 7: 5 + 1 + 1.",
"hexcasting.page.numbers.example.-32.header": "Example 3",
"hexcasting.page.numbers.example.-32": "This pattern pushes -32: negate 1 + 5 + 10 * 2.",
"hexcasting.page.numbers.example.4.5.header": "Example 4",
"hexcasting.page.numbers.example.4.5": "This pattern pushes 4.5: 5 / 2 + 1 + 1.",
"hexcasting.page.numbers.3": "In certain cases it might be easier to just use an $(l:items/abacus)$(item)Abacus/$. But, it's worth knowing the \"proper\" way to do things.",
"hexcasting.entry.math": "Mathematics",
"hexcasting.page.math.1": "Many mathematical operations function on both numbers and vectors. Such arguments are written as \"num/vec\".",
"hexcasting.page.math.2": "Perform addition.",
"hexcasting.page.math.3": "As such:$(li)With two numbers at the top of the stack, combines them into their sum.$(li)With a number and a vector, removes the number from the stack and adds it to each element of the vector.$(li)With two vectors, combines them by summing corresponding components into a new vector (i.e. [1, 2, 3] + [0, 4, -1] = [1, 6, 2]).",
"hexcasting.page.math.4": "Perform subtraction.",
"hexcasting.page.math.5": "As such:$(li)With two numbers at the top of the stack, combines them into their difference.$(li)With a number and a vector, removes the number from the stack and subtracts it from each element of the vector.$(li)With two vectors, combines them by subtracting each component.$(br2)In all cases, the top of the stack or its components are subtracted $(italic)from/$ the second-from-the-top.",
"hexcasting.page.math.6": "Perform multiplication or the dot product.",
"hexcasting.page.math.7": "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/$.",
"hexcasting.page.math.8": "Perform division or the cross product.",
"hexcasting.page.math.9": "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!",
"hexcasting.page.math.10": "Compute the absolute value or length.",
"hexcasting.page.math.11": "Replaces a number with its absolute value, or a vector with its length.",
"hexcasting.page.math.12": "Perform exponentiation or vector projection.",
"hexcasting.page.math.13": "$(li)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.",
"hexcasting.page.math.14": "Combine three numbers at the top of the stack into a vector's X, Y, and Z components (top to bottom).",
"hexcasting.page.math.15": "Split a vector into its X, Y, and Z components (top to bottom).",
"hexcasting.page.math.16": "Coerces a vector to its nearest axial direction, a vector of length 1. The zero vector is unaffected.",
"hexcasting.page.math.17": "Take the sine of an angle in radians, the vertical component of that angle drawn on a circle of radius 1.",
"hexcasting.page.math.18": "Take the cosine of an angle in radians, the horizontal component of that angle drawn on a circle of radius 1.",
"hexcasting.page.math.19": "Take the tangent of an angle in radians, the slope of that angle drawn on a circle.",
"hexcasting.page.math.20": "Take the inverse sine of a value with absolute value 1 or less, the angle whose sine is that value.",
"hexcasting.page.math.21": "Take the inverse cosine of a value with absolute value 1 or less, the angle whose sine is that value.",
"hexcasting.page.math.22": "Take the inverse tangent of a value, the angle whose tangent is that value.",
"hexcasting.page.math.numvec": "Many mathematical operations function on both numbers and vectors. Such arguments are written as \"num/vec\".",
"hexcasting.page.math.add.1": "Perform addition.",
"hexcasting.page.math.add.2": "As such:$(li)With two numbers at the top of the stack, combines them into their sum.$(li)With a number and a vector, removes the number from the stack and adds it to each element of the vector.$(li)With two vectors, combines them by summing corresponding components into a new vector (i.e. [1, 2, 3] + [0, 4, -1] = [1, 6, 2]).",
"hexcasting.page.math.sub.1": "Perform subtraction.",
"hexcasting.page.math.sub.2": "As such:$(li)With two numbers at the top of the stack, combines them into their difference.$(li)With a number and a vector, removes the number from the stack and subtracts it from each element of the vector.$(li)With two vectors, combines them by subtracting each component.$(br2)In all cases, the top of the stack or its components are subtracted $(italic)from/$ the second-from-the-top.",
"hexcasting.page.math.mul_dot.1": "Perform multiplication or the dot product.",
"hexcasting.page.math.mul_dot.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/$.",
"hexcasting.page.math.div_cross.1": "Perform division or the cross product.",
"hexcasting.page.math.div_cross.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!",
"hexcasting.page.math.abs_len.1": "Compute the absolute value or length.",
"hexcasting.page.math.abs_len.2": "Replaces a number with its absolute value, or a vector with its length.",
"hexcasting.page.math.pow_proj.1": "Perform exponentiation or vector projection.",
"hexcasting.page.math.pow_proj.2": "$(li)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.",
"hexcasting.page.math.construct_vec": "Combine three numbers at the top of the stack into a vector's X, Y, and Z components (top to bottom).",
"hexcasting.page.math.deconstruct_vec": "Split a vector into its X, Y, and Z components (top to bottom).",
"hexcasting.page.math.coerce_axial": "Coerces a vector to its nearest axial direction, a unit vector. The zero vector is unaffected.",
"hexcasting.page.math.sin": "Take the sine of an angle in radians, the vertical component of that angle drawn on a circle of radius 1.",
"hexcasting.page.math.cos": "Take the cosine of an angle in radians, the horizontal component of that angle drawn on a circle of radius 1.",
"hexcasting.page.math.tan": "Take the tangent of an angle in radians, the slope of that angle drawn on a circle.",
"hexcasting.page.math.arcsin": "Take the inverse sine of a value with absolute value 1 or less, the angle whose sine is that value.",
"hexcasting.page.math.arccos": "Take the inverse cosine of a value with absolute value 1 or less, the angle whose sine is that value.",
"hexcasting.page.math.arctan": "Take the inverse tangent of a value, the angle whose tangent is that value.",
"hexcasting.entry.consts": "Constants",
"hexcasting.page.consts.1": "The left-hand counter-clockwise pattern adds [1, 0, 0] to the stack; the right-hand clockwise pattern adds [-1, 0, 0].",
"hexcasting.page.consts.2": "The left-hand counter-clockwise pattern adds [0, 1, 0] to the stack; the right-hand clockwise pattern adds [0, -1, 0].",
"hexcasting.page.consts.3": "The left-hand counter-clockwise pattern adds [0, 0, 1]; the right-hand clockwise pattern adds [0, 0, -1].",
"hexcasting.page.consts.4": "Adds [0, 0, 0] to the stack.",
"hexcasting.page.consts.5": "Adds τ, the radial representation of a complete circle, to the stack.",
"hexcasting.page.consts.6": "Adds π, the radial representation of half a circle, to the stack.",
"hexcasting.page.consts.7": "Adds the Null influence to the top of the stack.",
"hexcasting.page.consts.const/vec/x": "The left-hand counter-clockwise pattern adds [1, 0, 0] to the stack; the right-hand clockwise pattern adds [-1, 0, 0].",
"hexcasting.page.consts.const/vec/y": "The left-hand counter-clockwise pattern adds [0, 1, 0] to the stack; the right-hand clockwise pattern adds [0, -1, 0].",
"hexcasting.page.consts.const/vec/z": "The left-hand counter-clockwise pattern adds [0, 0, 1]; the right-hand clockwise pattern adds [0, 0, -1].",
"hexcasting.page.consts.const/vec/0": "Adds [0, 0, 0] to the stack.",
"hexcasting.page.consts.const/double/tau": "Adds τ, the radial representation of a complete circle, to the stack.",
"hexcasting.page.consts.const/double/pi": "Adds π, the radial representation of half a circle, to the stack.",
"hexcasting.page.consts.const/null": "Adds the Null influence to the top of the stack.",
"hexcasting.entry.stackmanip": "Stack Manipulation",
"hexcasting.page.stackmanip.1": "Swaps the top two iotas of the stack.",
"hexcasting.page.stackmanip.2": "Grabs the element in the stack indexed by the number and brings it to the top.",
"hexcasting.page.stackmanip.3": "Duplicates the top iota of the stack.",
"hexcasting.page.stackmanip.4": "Copies the top iota of the stack the given number of times. (A count of 2 results in two of the iota on the stack, not three.)",
"hexcasting.page.stackmanip.5.header": "Bookkeeper's Gambits",
"hexcasting.page.stackmanip.5": "An infinite family of actions that keep or remove elements at the top of the stack based on the sequence of dips and lines.",
"hexcasting.page.stackmanip.6": "Assuming that I draw a Bookkeeper's Gambit pattern left-to-right, the number of iotas the action will require is determined by the horizontal distance covered by the pattern. From deepest in the stack to shallowest, a flat line will keep the iota, whereas a triangle dipping down will remove it.$(br2)If my stack contains $(italic)0, 1, 2/$ from deepest to shallowest, drawing the first pattern opposite will give me $(italic)1/$, the second will give me $(italic)0/$, and the third will give me $(italic)0, 2/$ (the 0 at the bottom is left untouched).",
"hexcasting.page.stackmanip.7": "Rearranges the top elements of the stack based on the given numerical code, which is the index of the permutation wanted.",
"hexcasting.page.stackmanip.8": "Although I can't pretend to know the mathematics behind calculating this permutation code, I have managed to dig up an extensive chart of them, enumerating all permutations of up to six elements.$(br2)If I wish to do further study, the key word is \"Lehmer Code.\"",
"hexcasting.page.stackmanip.8.link": "Table of Codes",
"hexcasting.page.stackmanip.swap": "Swaps the top two iotas of the stack.",
"hexcasting.page.stackmanip.fisherman": "Grabs the element in the stack indexed by the number and brings it to the top.",
"hexcasting.page.stackmanip.duplicate": "Duplicates the top iota of the stack.",
"hexcasting.page.stackmanip.duplicate_n": "Copies the top iota of the stack the given number of times. (A count of 2 results in two of the iota on the stack, not three.)",
"hexcasting.page.stackmanip.mask.header": "Bookkeeper's Gambits",
"hexcasting.page.stackmanip.mask.1": "An infinite family of actions that keep or remove elements at the top of the stack based on the sequence of dips and lines.",
"hexcasting.page.stackmanip.mask.2": "Assuming that I draw a Bookkeeper's Gambit pattern left-to-right, the number of iotas the action will require is determined by the horizontal distance covered by the pattern. From deepest in the stack to shallowest, a flat line will keep the iota, whereas a triangle dipping down will remove it.$(br2)If my stack contains $(italic)0, 1, 2/$ from deepest to shallowest, drawing the first pattern opposite will give me $(italic)1/$, the second will give me $(italic)0/$, and the third will give me $(italic)0, 2/$ (the 0 at the bottom is left untouched).",
"hexcasting.page.stackmanip.swizzle.1": "Rearranges the top elements of the stack based on the given numerical code, which is the index of the permutation wanted.",
"hexcasting.page.stackmanip.swizzle.2": "Although I can't pretend to know the mathematics behind calculating this permutation code, I have managed to dig up an extensive chart of them, enumerating all permutations of up to six elements.$(br2)If I wish to do further study, the key word is \"Lehmer Code.\"",
"hexcasting.page.stackmanip.swizzle.link": "Table of Codes",
"hexcasting.entry.logic": "Logical Operators",
"hexcasting.page.logic.1": "If the first argument is greater than the second, return 1. Otherwise, return 0.",
"hexcasting.page.logic.2": "If the first argument is less than the second, return 1. Otherwise, return 0.",
"hexcasting.page.logic.3": "If the first argument is greater than or equal to the second, return 1. Otherwise, return 0.",
"hexcasting.page.logic.4": "If the first argument is less than or equal to the second, return 1. Otherwise, return 0.",
"hexcasting.page.logic.5": "If the first argument equals the second (within a small tolerance), return 1. Otherwise, return 0.",
"hexcasting.page.logic.6": "If the first argument does not equal the second (outside a small tolerance), return 1. Otherwise, return 0.",
"hexcasting.page.logic.7": "If the argument is 0 or Null, return 1. Otherwise, return 0.",
"hexcasting.page.logic.8": "If the argument is 0, return Null. If it's Null, return 0. Otherwise, return the argument",
"hexcasting.page.logic.9": "If the first argument is not Null, return it. Otherwise, return the second argument.",
"hexcasting.page.logic.10": "If the first argument is Null, return Null. Otherwise, return the second argument.",
"hexcasting.page.logic.11": "If either argument (but not both) is Null, return the non-Null argument. Otherwise, return Null.",
"hexcasting.page.logic.greater": "If the first argument is greater than the second, return 1. Otherwise, return 0.",
"hexcasting.page.logic.less": "If the first argument is less than the second, return 1. Otherwise, return 0.",
"hexcasting.page.logic.greater_eq": "If the first argument is greater than or equal to the second, return 1. Otherwise, return 0.",
"hexcasting.page.logic.less_eq": "If the first argument is less than or equal to the second, return 1. Otherwise, return 0.",
"hexcasting.page.logic.equals": "If the first argument equals the second (within a small tolerance), return 1. Otherwise, return 0.",
"hexcasting.page.logic.not_equals": "If the first argument does not equal the second (outside a small tolerance), return 1. Otherwise, return 0.",
"hexcasting.page.logic.not": "If the argument is 0 or Null, return 1. Otherwise, return 0.",
"hexcasting.page.logic.identity": "If the argument is 0, return Null. If it's Null, return 0. Otherwise, return the argument",
"hexcasting.page.logic.or": "If the first argument is not Null, return it. Otherwise, return the second argument.",
"hexcasting.page.logic.and": "If the first argument is Null, return Null. Otherwise, return the second argument.",
"hexcasting.page.logic.xor": "If either argument (but not both) is Null, return the non-Null argument. Otherwise, return Null.",
"hexcasting.entry.entities": "Entities",
"hexcasting.page.entities.1": "Transform the position on the stack into the entity at that location (or null if there isn't one).",
"hexcasting.page.entities.2": "Transform the position on the stack into the animal at that location (or null if there isn't one).",
"hexcasting.page.entities.3": "Transform the position on the stack into the monster at that location (or null if there isn't one).",
"hexcasting.page.entities.4": "Transform the position on the stack into the dropped item at that location (or null if there isn't one).",
"hexcasting.page.entities.5": "Transform the position on the stack into the player at that location (or null if there isn't one).",
"hexcasting.page.entities.6": "Transform the position on the stack into the living creature at that location (or null if there isn't one).",
"hexcasting.page.entities.7": "$(br)Take a position and maximum distance on the stack, and combine them into a list of animals near the position.",
"hexcasting.page.entities.8": "$(br)Take a position and maximum distance on the stack, and combine them into a list of non-animal entities near the position.",
"hexcasting.page.entities.9": "$(br)Take a position and maximum distance on the stack, and combine them into a list of monsters near the position.",
"hexcasting.page.entities.10": "$(br)Take a position and maximum distance on the stack, and combine them into a list of non-monster entities near the position.",
"hexcasting.page.entities.11": "$(br)Take a position and maximum distance on the stack, and combine them into a list of dropped items near the position.",
"hexcasting.page.entities.12": "$(br)Take a position and maximum distance on the stack, and combine them into a list of non-dropped-item entities near the position.",
"hexcasting.page.entities.13": "$(br)Take a position and maximum distance on the stack, and combine them into a list of players near the position.",
"hexcasting.page.entities.14": "$(br)Take a position and maximum distance on the stack, and combine them into a list of non-player characters near the position.",
"hexcasting.page.entities.15": "$(br)Take a position and maximum distance on the stack, and combine them into a list of living creatures near the position.",
"hexcasting.page.entities.16": "$(br)Take a position and maximum distance on the stack, and combine them into a list of non-living entities near the position.",
"hexcasting.page.entities.17": "$(br)Take a position and maximum distance on the stack, and combine them into a list of all entities near the position.",
"hexcasting.page.entities.get_entity": "Transform the position on the stack into the entity at that location (or null if there isn't one).",
"hexcasting.page.entities.get_entity/animal": "Transform the position on the stack into the animal at that location (or null if there isn't one).",
"hexcasting.page.entities.get_entity/monster": "Transform the position on the stack into the monster at that location (or null if there isn't one).",
"hexcasting.page.entities.get_entity/item": "Transform the position on the stack into the dropped item at that location (or null if there isn't one).",
"hexcasting.page.entities.get_entity/player": "Transform the position on the stack into the player at that location (or null if there isn't one).",
"hexcasting.page.entities.get_entity/living": "Transform the position on the stack into the living creature at that location (or null if there isn't one).",
"hexcasting.page.entities.zone_entity/animal": "$(br)Take a position and maximum distance on the stack, and combine them into a list of animals near the position.",
"hexcasting.page.entities.zone_entity/not_animal": "$(br)Take a position and maximum distance on the stack, and combine them into a list of non-animal entities near the position.",
"hexcasting.page.entities.zone_entity/monster": "$(br)Take a position and maximum distance on the stack, and combine them into a list of monsters near the position.",
"hexcasting.page.entities.zone_entity/not_monster": "$(br)Take a position and maximum distance on the stack, and combine them into a list of non-monster entities near the position.",
"hexcasting.page.entities.zone_entity/item": "$(br)Take a position and maximum distance on the stack, and combine them into a list of dropped items near the position.",
"hexcasting.page.entities.zone_entity/not_item": "$(br)Take a position and maximum distance on the stack, and combine them into a list of non-dropped-item entities near the position.",
"hexcasting.page.entities.zone_entity/player": "$(br)Take a position and maximum distance on the stack, and combine them into a list of players near the position.",
"hexcasting.page.entities.zone_entity/not_player": "$(br)Take a position and maximum distance on the stack, and combine them into a list of non-player characters near the position.",
"hexcasting.page.entities.zone_entity/living": "$(br)Take a position and maximum distance on the stack, and combine them into a list of living creatures near the position.",
"hexcasting.page.entities.zone_entity/not_living": "$(br)Take a position and maximum distance on the stack, and combine them into a list of non-living entities near the position.",
"hexcasting.page.entities.zone_entity": "$(br)Take a position and maximum distance on the stack, and combine them into a list of all entities near the position.",
"hexcasting.entry.lists": "List Manipulation",
"hexcasting.page.lists.1": "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 Null if the number is out of bounds.",
@ -704,27 +708,27 @@
"hexcasting.page.patterns_as_iotas.7": "Also, I can escape the special behavior of $(action)Intro-/$ and $(action)Retrospection/$ by drawing a $(action)Consideration/$ before them, which will simply add them to the list without affecting which the number of Retrospections I need to return to casting.$(br2)If I draw two $(action)Consideration/$s in a row while introspecting, it will add a single $(action)Consideration/$ to the list.",
"hexcasting.entry.readwrite": "Reading and Writing",
"hexcasting.page.readwrite.1": "Copy the iota stored in the item (such as a $(l:items/focus)$(item)Focus/$, $(l:items/abacus)$(item)Abacus/$ or $(l:items/spellbook)$(item)Spellbook/$) in my other hand, and add it to the stack.",
"hexcasting.page.readwrite.2": "Like $(action)Scribe's Reflection/$, but the iota is read out of an item entity instead of my other hand.",
"hexcasting.page.readwrite.3": "Remove the top iota from the stack, and save it into the item in my other hand.",
"hexcasting.page.readwrite.4": "I can use this spell to save iotas into an (unsealed) $(l:items/focus)$(item)Focus/$ or $(l:items/spellbook)$(item)Spellbook/$, or I can copy patterns onto $(l:items/scroll)$(item)Scroll/$s or $(l:items/slate)$(item)Slate/$s with the help of $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$.$(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 $(item)Focus/$ for them.",
"hexcasting.page.readwrite.read": "Copy the iota stored in the item (such as a $(l:items/focus)$(item)Focus/$, $(l:items/abacus)$(item)Abacus/$ or $(l:items/spellbook)$(item)Spellbook/$) in my other hand, and add it to the stack.",
"hexcasting.page.readwrite.read/entity": "Like $(action)Scribe's Reflection/$, but the iota is read out of an item entity instead of my other hand.",
"hexcasting.page.readwrite.write.1": "Remove the top iota from the stack, and save it into the item in my other hand.",
"hexcasting.page.readwrite.write.2": "I can use this spell to save iotas into an (unsealed) $(l:items/focus)$(item)Focus/$ or $(l:items/spellbook)$(item)Spellbook/$, or I can copy patterns onto $(l:items/scroll)$(item)Scroll/$s or $(l:items/slate)$(item)Slate/$s with the help of $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$.$(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 $(item)Focus/$ for them.",
"hexcasting.entry.meta": "Meta-evaluation",
"hexcasting.page.meta.1": "Remove a list of patterns from the stack, then cast them sequentially, as if I had drawn them myself with my $(item)Staff/$.$(br)Costs about one $(item)Amethyst Shard/$.",
"hexcasting.page.meta.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 occuring without me to guide them, any mishap will cause the remaining actions to become too unstable and immediately unravel.",
"hexcasting.page.meta.3": "Remove a list of patterns and a list from the stack, then cast the given pattern over each element of the second list.$(br)Costs about one $(item)Charged Amethyst/$.",
"hexcasting.page.meta.4": "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.",
"hexcasting.page.meta.eval.1": "Remove a list of patterns from the stack, then cast them sequentially, as if I had drawn them myself with my $(item)Staff/$.$(br)Costs about one $(item)Amethyst Shard/$.",
"hexcasting.page.meta.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 occuring without me to guide them, any mishap will cause the remaining actions to become too unstable and immediately unravel.",
"hexcasting.page.meta.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.$(br)Costs about one $(item)Charged Amethyst/$.",
"hexcasting.page.meta.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.",
"hexcasting.entry.circle_patterns": "Spell Circle Patterns",
"hexcasting.page.circle_patterns.1": "These patterns must be cast from a $(item)Spell Circle/$; trying to cast them through a $(item)Staff/$ will fail.",
"hexcasting.page.circle_patterns.2": "Returns the position of the $(item)Impetus/$ of this spell circle.",
"hexcasting.page.circle_patterns.3": "Returns the direction the $(item)Impetus/$ of this spell circle is facing as a unit vector.",
"hexcasting.page.circle_patterns.4": "Returns the position of the lower-north-west corner of the bounds of this spell circle.",
"hexcasting.page.circle_patterns.5": "Returns the position of the upper-south-east corner of the bounds of this spell circle.",
"hexcasting.page.circle_patterns.disclaimer": "These patterns must be cast from a $(item)Spell Circle/$; trying to cast them through a $(item)Staff/$ will fail rather spectacularly.",
"hexcasting.page.circle_patterns.circle/impetus_pos": "Returns the position of the $(item)Impetus/$ of this spell circle.",
"hexcasting.page.circle_patterns.circle/impetus_dir": "Returns the direction the $(item)Impetus/$ of this spell circle is facing as a unit vector.",
"hexcasting.page.circle_patterns.circle/bounds/min": "Returns the position of the lower-north-west corner of the bounds of this spell circle.",
"hexcasting.page.circle_patterns.circle/bounds/max": "Returns the position of the upper-south-east corner of the bounds of this spell circle.",
"hexcasting.entry.akashic_patterns": "Akashic Patterns",
"hexcasting.page.akashic_patterns.1": "Read the iota associated with the given pattern out of the akashic library with its record at the given position. This has no range limit. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.akashic_patterns.2": "Associate the iota with the given pattern in the akashic library with its record at the given position. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.akashic_patterns.read/akashic": "Read the iota associated with the given pattern out of the akashic library with its record at the given position. This has no range limit. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.akashic_patterns.write/akashic": "Associate the iota with the given pattern in the akashic library with its record at the given position. Costs about one $(item)Amethyst Dust/$.",
"_comment": "Normal Spells",
@ -734,61 +738,61 @@
"hexcasting.page.itempicking.3": "This way, I can keep a \"chooser\" item on my hotbar to tell the spell what to use, and fill the rest of my inventory with that item to keep the spell well-stocked.",
"hexcasting.entry.basic_spell": "Basic Spells",
"hexcasting.page.basic_spell.1": "Remove a number and vector from the stack, then create an explosion at the given location with the given power.",
"hexcasting.page.basic_spell.2": "A power of 3 is about as much as a Creeper's blast; 4 is about as much as a TNT blast. Nature refuses to give me a blast of more than 10 power, though.$(br2)Costs about one $(item)Amethyst Shard/$, plus an extra $(item)Amethyst Shard/$ per point of explosion power.",
"hexcasting.page.basic_spell.3": "Remove a number and vector from the stack, then create a fiery explosion at the given location with the given power.",
"hexcasting.page.basic_spell.4": "Costs three $(item)Amethyst Shards/$, plus about one extra $(item)Amethyst Shard/$ per point of explosion power. Otherwise, the same as $(l:patterns/spells/basic_spell#hexcasting:explosion)$(action)Explosion/$, except with fire.",
"hexcasting.page.basic_spell.5": "Remove an entity and direction from the stack, then give a shove to the given entity in the given direction. The strength of the impulse is determined by the length of the vector.$(br)Costs units of $(item)Amethyst Dust/$ equal to the square of the length of the vector.",
"hexcasting.page.basic_spell.6": "Remove an entity and length from the stack, then teleport the given entity along its look vector by the given length.$(br)Costs about 1 $(item)Amethyst Shard/$ per block travelled.",
"hexcasting.page.basic_spell.explode.1": "Remove a number and vector from the stack, then create an explosion at the given location with the given power.",
"hexcasting.page.basic_spell.explode.2": "A power of 3 is about as much as a Creeper's blast; 4 is about as much as a TNT blast. Nature refuses to give me a blast of more than 10 power, though.$(br2)Costs about one $(item)Amethyst Shard/$, plus an extra $(item)Amethyst Shard/$ per point of explosion power.",
"hexcasting.page.basic_spell.explode.fire.1": "Remove a number and vector from the stack, then create a fiery explosion at the given location with the given power.",
"hexcasting.page.basic_spell.explode.fire.2": "Costs three $(item)Amethyst Shards/$, plus about one extra $(item)Amethyst Shard/$ per point of explosion power. Otherwise, the same as $(l:patterns/spells/basic_spell#hexcasting:explosion)$(action)Explosion/$, except with fire.",
"hexcasting.page.basic_spell.add_motion": "Remove an entity and direction from the stack, then give a shove to the given entity in the given direction. The strength of the impulse is determined by the length of the vector.$(br)Costs units of $(item)Amethyst Dust/$ equal to the square of the length of the vector.",
"hexcasting.page.basic_spell.blink": "Remove an entity and length from the stack, then teleport the given entity along its look vector by the given length.$(br)Costs about 1 $(item)Amethyst Shard/$ per block travelled.",
"hexcasting.entry.blockworks": "Blockworks",
"hexcasting.page.blockworks.1": "Remove a location from the stack, then pick a block item and place it at the given location.$(br)Costs about 1 $(item)Amethyst Dust/$.",
"hexcasting.page.blockworks.2": "Remove a location from the stack, then break the block at the given location. This spell can break nearly anything a Diamond Pickaxe can break.$(br)Costs about 3 $(item)Amethyst Dust/$s.",
"hexcasting.page.blockworks.3": "Summon a block of water (or insert a bucket's worth) into a block at the given position. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.blockworks.4": "Destroy a great deal of liquid (not just water) around the given position. Costs about two $(item)Amethyst Crystal/$s.",
"hexcasting.page.blockworks.5": "Conjure an ethereal, but solid, block that sparkles with my pigment at the given position. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.blockworks.6": "Conjure a magical light that softly glows with my pigment at the given position. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.blockworks.7": "Encourage a plant or sapling at the target position to grow, as if $(item)Bonemeal/$ was applied. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.blockworks.8": "Forcibly infuse _media into the sapling at the target position, causing it to grow into an $(thing)Edified Tree/$. Costs about one $(item)Charged Crystal/$.",
"hexcasting.page.blockworks.9": "Start a fire on top of the given location, as if a $(item)Fire Charge/$ was applied. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.blockworks.10": "Extinguish blocks in a large area. Costs about two $(item)Charged Crystal/$s.",
"hexcasting.page.blockworks.place_block": "Remove a location from the stack, then pick a block item and place it at the given location.$(br)Costs about 1 $(item)Amethyst Dust/$.",
"hexcasting.page.blockworks.break_block": "Remove a location from the stack, then break the block at the given location. This spell can break nearly anything a Diamond Pickaxe can break.$(br)Costs about 3 $(item)Amethyst Dust/$s.",
"hexcasting.page.blockworks.create_water": "Summon a block of water (or insert a bucket's worth) into a block at the given position. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.blockworks.destroy_water": "Destroy a great deal of liquid (not just water) around the given position. Costs about two $(item)Amethyst Crystal/$s.",
"hexcasting.page.blockworks.conjure_block": "Conjure an ethereal, but solid, block that sparkles with my pigment at the given position. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.blockworks.conjure_light": "Conjure a magical light that softly glows with my pigment at the given position. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.blockworks.bonemeal": "Encourage a plant or sapling at the target position to grow, as if $(item)Bonemeal/$ was applied. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.blockworks.edify": "Forcibly infuse _media into the sapling at the target position, causing it to grow into an $(thing)Edified Tree/$. Costs about one $(item)Charged Crystal/$.",
"hexcasting.page.blockworks.ignite": "Start a fire on top of the given location, as if a $(item)Fire Charge/$ was applied. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.blockworks.extinguish": "Extinguish blocks in a large area. Costs about two $(item)Charged Crystal/$s.",
"hexcasting.entry.nadirs": "Nadirs",
"hexcasting.page.nadirs.1": "This family of spells all impart a negative potion effect upon an entity. They all take an entity, the recipient, and one or two numbers, the first being the duration and the second, if present, being the potency (starting at 1).$(br2)Each one has a \"base cost;\" the actual cost is equal to that base cost, multiplied by the potency squared.",
"hexcasting.page.nadirs.2": "According to certain legends, these spells and their sisters, the $(l:patterns/great_spells/zeniths)$(action)Zeniths/$, were \"[...] inspired by a world near to this one, where powerful wizards would gather magic from the land and hold duels to the death. Unfortunately, much was lost in translation...\"$(br2)Perhaps that is the reason for their peculiar names.",
"hexcasting.page.nadirs.3": "Bestows weakness. Base cost is one $(item)Amethyst Dust/$ per 10 seconds.",
"hexcasting.page.nadirs.4": "Bestows levitation. Base cost is one $(item)Amethyst Dust/$ per 5 seconds.",
"hexcasting.page.nadirs.5": "Bestows withering. Base cost is one $(item)Amethyst Dust/$ per second.",
"hexcasting.page.nadirs.6": "Bestows poison. Base cost is one $(item)Amethyst Dust/$ per 3 seconds.",
"hexcasting.page.nadirs.7": "Bestows slowness. Base cost is one $(item)Amethyst Dust/$ per 5 seconds.",
"hexcasting.page.nadirs.potion/weakness": "Inflicts weakness. Base cost is one $(item)Amethyst Dust/$ per 10 seconds.",
"hexcasting.page.nadirs.potion/levitation": "Inflicts levitation. Base cost is one $(item)Amethyst Dust/$ per 5 seconds.",
"hexcasting.page.nadirs.potion/wither": "Inflicts withering. Base cost is one $(item)Amethyst Dust/$ per second.",
"hexcasting.page.nadirs.potion/poison": "Inflicts poison. Base cost is one $(item)Amethyst Dust/$ per 3 seconds.",
"hexcasting.page.nadirs.potion/slowness": "Inflicts slowness. Base cost is one $(item)Amethyst Dust/$ per 5 seconds.",
"hexcasting.entry.hexcasting_spell": "Crafting Hexcasting Items",
"hexcasting.page.hexcasting_spell.1": "These three spells each create an 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 $(item)Amethyst/$ to form the item's battery.$(br2)See $(l:items/hexcasting)this entry/$ for more information.",
"hexcasting.page.hexcasting_spell.2": "Costs about one $(item)Charged Amethyst/$.",
"hexcasting.page.hexcasting_spell.3": "Costs about five $(item)Charged Amethyst/$s.",
"hexcasting.page.hexcasting_spell.4": "Costs about ten $(item)Charged Amethyst/$s.",
"hexcasting.page.hexcasting_spell.5": "Recharge a _media-containing item in my other hand. Costs about one $(item)Charged Amethyst/$.",
"hexcasting.page.hexcasting_spell.6": "This spell is cast in a similar method to the crafting spells; an entity representing a dropped stack of $(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.",
"hexcasting.page.hexcasting_spell.7": "Clear a _Hex-containing item in my other hand. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.hexcasting_spell.8": "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 $(item)Trinket/$s I have put an erroneous spell into, for example.",
"hexcasting.page.hexcasting_spell.basics": "These three spells each create an 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 $(item)Amethyst/$ to form the item's battery.$(br2)See $(l:items/hexcasting)this entry/$ for more information.",
"hexcasting.page.hexcasting_spell.craft/cypher": "Costs about one $(item)Charged Amethyst/$.",
"hexcasting.page.hexcasting_spell.craft/trinket": "Costs about five $(item)Charged Amethyst/$s.",
"hexcasting.page.hexcasting_spell.craft/artifact": "Costs about ten $(item)Charged Amethyst/$s.",
"hexcasting.page.hexcasting_spell.recharge.1": "Recharge a _media-containing item in my other hand. Costs about one $(item)Charged Amethyst/$.",
"hexcasting.page.hexcasting_spell.recharge.2": "This spell is cast in a similar method to the crafting spells; an entity representing a dropped stack of $(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.",
"hexcasting.page.hexcasting_spell.erase.1": "Clear a _Hex-containing item in my other hand. Costs about one $(item)Amethyst Dust/$.",
"hexcasting.page.hexcasting_spell.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 $(item)Trinket/$s I have put an erroneous spell into, for example.",
"hexcasting.entry.sentinels": "Sentinels",
"hexcasting.page.sentinels.1": "$(italic)Hence, away! Now all is well,$(br)One aloof stand sentinel./$$(br2)A $(thing)Sentinel/$ is a mysterious force I can summon to assist in the casting of _Hexes, like a familiar or guardian spirit. It appears as a spinning geometric shape to my eyes, but is invisible to everyone else.",
"hexcasting.page.sentinels.2": "It has several interesting properties:$(li)It does not appear to be tangible; no one else can interact with it.$(li)Once summoned, it stays in place until banished.$(li)I am always able to see it, even through solid objects.",
"hexcasting.page.sentinels.3": "Summon my sentinel at the given position. Costs about 1 $(item)Amethyst Dust/$.",
"hexcasting.page.sentinels.4": "Banish my sentinel, and remove it from the world. Costs a negligible amount of _media.",
"hexcasting.page.sentinels.5": "Add the position of my sentinel to the stack, or Null if it isn't summoned. Costs a negligible amount of _media.",
"hexcasting.page.sentinels.6": "Transform the position vector on the top of the stack into a unit vector pointing from that position to my sentinel, or Null if it isn't summoned. Costs a negligible amount of _media.",
"hexcasting.page.sentinels.sentinel/create": "Summon my sentinel at the given position. Costs about 1 $(item)Amethyst Dust/$.",
"hexcasting.page.sentinels.sentinel/destroy": "Banish my sentinel, and remove it from the world. Costs a negligible amount of _media.",
"hexcasting.page.sentinels.sentinel/get_pos": "Add the position of my sentinel to the stack, or Null if it isn't summoned. Costs a negligible amount of _media.",
"hexcasting.page.sentinels.sentinel/wayfind": "Transform the position vector on the top of the stack into a unit vector pointing from that position to my sentinel, or Null if it isn't summoned. Costs a negligible amount of _media.",
"hexcasting.page.colorize.1": "I must be holding a $(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 1 $(item)Amethyst Dust/$.",
"hexcasting.page.colorize": "I must be holding a $(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 1 $(item)Amethyst Dust/$.",
"hexcasting.page.create_lava.1": "Summon a block of lava or insert a bucket's worth into a block at the given position. Costs about one $(item)Charged Amethyst/$.",
"hexcasting.page.create_lava.2": "It may be advisable to keep my knowledge of this spell secret. A certain faction of botanists get... touchy about it, or so I've heard.$(br2)Well, no one said tracing the deep secrets of the universe was going to be an easy time.",
"hexcasting.entry.weather_manip": "Weather Manipulation",
"hexcasting.page.weather_manip.1": "I command the heavens! This spell will summon a bolt of lightning to strike the earth where I direct it. Costs about 3 $(item)Amethyst Shard/$s.",
"hexcasting.page.weather_manip.2": "I control the clouds! This spell will summon rain across the world I cast it upon. Costs about 2 $(item)Amethyst Shard/$s. Does nothing if it is already raining.",
"hexcasting.page.weather_manip.3": "A counterpart to summoning rain. This spell will dispel rain across the world I cast it upon. Costs about 1 $(item)Amethyst Shard/$. Does nothing if the skies are already clear.",
"hexcasting.page.weather_manip.lightning": "I command the heavens! This spell will summon a bolt of lightning to strike the earth where I direct it. Costs about 3 $(item)Amethyst Shard/$s.",
"hexcasting.page.weather_manip.summon_rain": "I control the clouds! This spell will summon rain across the world I cast it upon. Costs about 2 $(item)Amethyst Shard/$s. Does nothing if it is already raining.",
"hexcasting.page.weather_manip.dispel_rain": "A counterpart to summoning rain. This spell will dispel rain across the world I cast it upon. Costs about 1 $(item)Amethyst Shard/$. Does nothing if the skies are already clear.",
"hexcasting.page.flight.1": "The power of flight! I have wrestled Nature to its knees. But Nature is vengeful, and itches for me to break its contract so it may break my shins.",
"hexcasting.page.flight.2": "The entity (which must be a player) will be endowed with flight. The first number is the number of seconds they may fly for, and the second number is the radius of the zone they may fly in. If the recipient exits that zone, or their timer runs out while midair, the gravity that they spurned will get its revenge. Painfully.$(br2)It costs approximately 1 $(item)Amethyst Dust/$ multiplied by the radius, per second of flight.",
@ -798,11 +802,11 @@
"hexcasting.entry.zeniths": "Zeniths",
"hexcasting.page.zeniths.1": "This family of spells all impart a positive potion effect upon an entity, similar to the $(l:patterns/spells/nadirs)$(action)Nadirs/$. However, these have their _media costs increase with the $(italic)cube/$ of the potency.",
"hexcasting.page.zeniths.2": "Bestows regeneration. Base cost is one $(item)Amethyst Dust/$ per second.",
"hexcasting.page.zeniths.3": "Bestows night vision. Base cost is one $(item)Amethyst Dust/$ per 5 seconds.",
"hexcasting.page.zeniths.4": "Bestows absorption. Base cost is one $(item)Amethyst Dust/$ per second.",
"hexcasting.page.zeniths.5": "Bestows haste. Base cost is one $(item)Amethyst Dust/$ per 3 seconds.",
"hexcasting.page.zeniths.6": "Bestows strength. Base cost is one $(item)Amethyst Dust/$ per 3 seconds.",
"hexcasting.page.zeniths.potion/regeneration": "Bestows regeneration. Base cost is one $(item)Amethyst Dust/$ per second.",
"hexcasting.page.zeniths.potion/night_vision": "Bestows night vision. Base cost is one $(item)Amethyst Dust/$ per 5 seconds.",
"hexcasting.page.zeniths.potion/absorption": "Bestows absorption. Base cost is one $(item)Amethyst Dust/$ per second.",
"hexcasting.page.zeniths.potion/haste": "Bestows haste. Base cost is one $(item)Amethyst Dust/$ per 3 seconds.",
"hexcasting.page.zeniths.potion/strength": "Bestows strength. Base cost is one $(item)Amethyst Dust/$ per 3 seconds.",
"hexcasting.page.greater_sentinel.1": "Summon a greater version of my $(l:patterns/sentinels)$(thing)Sentinel/$. Costs about 2 $(item)Amethyst Dust/$s.",
"hexcasting.page.greater_sentinel.2": "The stronger sentinel acts like the normal one I can summon without the use of a Great Spell, if a little more visually interesting. However, the range in which my spells can work is extended to a small region around my greater sentinel, about 16 blocks. In other words, no matter where in the world I am, I can interact with things around my sentinel (the mysterious forces of chunkloading notwithstanding).",

View file

@ -17,7 +17,7 @@
{
"type": "hexcasting:brainsweep",
"recipe": "hexcasting:brainsweep/akashic_record",
"text": "hexcasting.page.akashiclib.3"
"text": "hexcasting.page.akashiclib.akashic_record"
},
{
"type": "patchouli:crafting",
@ -26,7 +26,7 @@
},
{
"type": "patchouli:text",
"text": "hexcasting.page.akashiclib.4"
"text": "hexcasting.page.akashiclib.3"
}
]
}

View file

@ -21,7 +21,7 @@
{
"type": "hexcasting:brainsweep",
"recipe": "hexcasting:brainsweep/budding_amethyst",
"text": "hexcasting.page.brainsweeping.4"
"text": "hexcasting.page.brainsweeping.budding_amethyst"
}
]
}

View file

@ -17,12 +17,12 @@
{
"type": "patchouli:crafting",
"recipe": "hexcasting:empty_directrix",
"text": "hexcasting.page.directrix.3"
"text": "hexcasting.page.directrix.empty_directrix"
},
{
"type": "hexcasting:brainsweep",
"recipe": "hexcasting:brainsweep/directrix_redstone",
"text": "hexcasting.page.directrix.4"
"text": "hexcasting.page.directrix.directrix_redstone"
}
]
}

View file

@ -25,26 +25,26 @@
{
"type": "patchouli:crafting",
"recipe": "hexcasting:empty_impetus",
"text": "hexcasting.page.impetus.5"
"text": "hexcasting.page.impetus.empty_impetus"
},
{
"type": "hexcasting:brainsweep",
"recipe": "hexcasting:brainsweep/impetus_rightclick",
"text": "hexcasting.page.impetus.6"
"text": "hexcasting.page.impetus.impetus_rightclick"
},
{
"type": "hexcasting:brainsweep",
"recipe": "hexcasting:brainsweep/impetus_storedplayer",
"text": "hexcasting.page.impetus.7"
"text": "hexcasting.page.impetus.impetus_storedplayer.1"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.impetus.8"
"text": "hexcasting.page.impetus.impetus_storedplayer.2"
},
{
"type": "hexcasting:brainsweep",
"recipe": "hexcasting:brainsweep/impetus_look",
"text": "hexcasting.page.impetus.9"
"text": "hexcasting.page.impetus.impetus_look"
}
]
}

View file

@ -38,7 +38,7 @@
"type": "patchouli:image",
"images": ["hexcasting:textures/gui/entries/spell_circle.png"],
"border": true,
"title": "hexcasting.page.spellcircles.8.title"
"title": "hexcasting.page.spellcircles.teleport_circle.title"
}
]
}

View file

@ -12,7 +12,7 @@
"anchor": "hexcasting:read/akashic",
"input": "vector, pattern",
"output": "any",
"text": "hexcasting.page.akashic_patterns.1"
"text": "hexcasting.page.akashic_patterns.read/akashic"
},
{
"type": "hexcasting:pattern",
@ -20,7 +20,7 @@
"anchor": "hexcasting:write/akashic",
"input": "vector, pattern, any",
"output": "",
"text": "hexcasting.page.akashic_patterns.2"
"text": "hexcasting.page.akashic_patterns.write/akashic"
}
]
}

View file

@ -12,16 +12,15 @@
"anchor": "hexcasting:get_caster",
"input": "",
"output": "entity",
"text": "hexcasting.page.basics_pattern.1"
"text": "hexcasting.page.basics_pattern.get_caster"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:get_entity_pos",
"header": "hexcasting:get_entity_pos",
"anchor": "OpEntityPos",
"anchor": "hexcasting:get_entity_pos",
"input": "entity",
"output": "vector",
"text": "hexcasting.page.basics_pattern.2"
"text": "hexcasting.page.basics_pattern.get_entity_pos"
},
{
"type": "hexcasting:pattern",
@ -29,15 +28,15 @@
"anchor": "hexcasting:get_entity_look",
"input": "entity",
"output": "vector",
"text": "hexcasting.page.basics_pattern.3"
"text": "hexcasting.page.basics_pattern.get_entity_look"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:print",
"anchor": "hexcasting:print",
"input": "any",
"output": "any",
"text": "hexcasting.page.basics_pattern.4"
"op_id": "hexcasting:get_entity_height",
"anchor": "hexcasting:get_entity_height",
"input": "entity",
"output": "num",
"text": "hexcasting.page.basics_pattern.get_entity_height"
},
{
"type": "hexcasting:pattern",
@ -45,11 +44,11 @@
"anchor": "hexcasting:raycast",
"input": "vector, vector",
"output": "vector",
"text": "hexcasting.page.basics_pattern.5"
"text": "hexcasting.page.basics_pattern.raycast.1"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.basics_pattern.6"
"text": "hexcasting.page.basics_pattern.raycast.2"
},
{
"type": "hexcasting:pattern",
@ -57,11 +56,11 @@
"anchor": "hexcasting:raycast/axis",
"input": "vector, vector",
"output": "vector",
"text": "hexcasting.page.basics_pattern.7"
"text": "hexcasting.page.basics_pattern.raycast/axis.1"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.basics_pattern.8"
"text": "hexcasting.page.basics_pattern.raycast/axis.2"
},
{
"type": "hexcasting:pattern",
@ -69,7 +68,15 @@
"anchor": "hexcasting:raycast/entity",
"input": "vector, vector",
"output": "entity",
"text": "hexcasting.page.basics_pattern.9"
"text": "hexcasting.page.basics_pattern.raycast/entity"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:print",
"anchor": "hexcasting:print",
"input": "any",
"output": "any",
"text": "hexcasting.page.basics_pattern.print"
}
]
}

View file

@ -8,7 +8,7 @@
"pages": [
{
"type": "patchouli:text",
"text": "hexcasting.page.circle_patterns.1"
"text": "hexcasting.page.circle_patterns.disclaimer"
},
{
"type": "hexcasting:pattern",
@ -16,7 +16,7 @@
"anchor": "hexcasting:circle/impetus_pos",
"input": "",
"output": "vector",
"text": "hexcasting.page.circle_patterns.2"
"text": "hexcasting.page.circle_patterns.circle/impetus_pos"
},
{
"type": "hexcasting:pattern",
@ -24,7 +24,7 @@
"anchor": "hexcasting:circle/impetus_dir",
"input": "",
"output": "vector",
"text": "hexcasting.page.circle_patterns.3"
"text": "hexcasting.page.circle_patterns.circle/impetus_dir"
},
{
"type": "hexcasting:pattern",
@ -32,7 +32,7 @@
"anchor": "hexcasting:circle/bounds/min",
"input": "",
"output": "vector",
"text": "hexcasting.page.circle_patterns.4"
"text": "hexcasting.page.circle_patterns.circle/bounds/min"
},
{
"type": "hexcasting:pattern",
@ -40,7 +40,7 @@
"anchor": "hexcasting:circle/bounds/max",
"input": "",
"output": "vector",
"text": "hexcasting.page.circle_patterns.5"
"text": "hexcasting.page.circle_patterns.circle/bounds/max"
}
]
}

View file

@ -8,10 +8,10 @@
"pages": [
{
"type": "hexcasting:manual_pattern",
"header": "Axial Reflection +X/-X",
"header": "hexcasting.spell.hexcasting:const/vec/x",
"input": "",
"output": "vector",
"text": "hexcasting.page.consts.1",
"text": "hexcasting.page.consts.const/vec/x",
"patterns": [
{
"startdir": "NORTH_WEST",
@ -27,10 +27,10 @@
},
{
"type": "hexcasting:manual_pattern",
"header": "Axial Reflection +Y/-Y",
"header": "hexcasting.spell.hexcasting:const/vec/y",
"input": "",
"output": "vector",
"text": "hexcasting.page.consts.2",
"text": "hexcasting.page.consts.const/vec/y",
"patterns": [
{
"startdir": "NORTH_WEST",
@ -46,10 +46,10 @@
},
{
"type": "hexcasting:manual_pattern",
"header": "Axial Reflection +Z/-Z",
"header": "hexcasting.spell.hexcasting:const/vec/z",
"input": "",
"output": "vector",
"text": "hexcasting.page.consts.3",
"text": "hexcasting.page.consts.const/vec/z",
"patterns": [
{
"startdir": "NORTH_WEST",
@ -68,28 +68,28 @@
"op_id": "hexcasting:const/vec/0",
"input": "",
"output": "vector",
"text": "hexcasting.page.consts.4"
"text": "hexcasting.page.consts.const/vec/0"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:const/double/tau",
"input": "",
"output": "num",
"text": "hexcasting.page.consts.5"
"text": "hexcasting.page.consts.const/double/tau"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:const/double/pi",
"input": "",
"output": "num",
"text": "hexcasting.page.consts.6"
"text": "hexcasting.page.consts.const/double/pi"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:const/null",
"input": "",
"output": "influence",
"text": "hexcasting.page.consts.7"
"text": "hexcasting.page.consts.const/null"
}
]
}

View file

@ -12,7 +12,7 @@
"anchor": "hexcasting:get_entity",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities.1"
"text": "hexcasting.page.entities.get_entity"
},
{
"type": "hexcasting:pattern",
@ -20,7 +20,7 @@
"anchor": "hexcasting:get_entity/animal",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities.2"
"text": "hexcasting.page.entities.get_entity/animal"
},
{
"type": "hexcasting:pattern",
@ -28,7 +28,7 @@
"anchor": "hexcasting:get_entity/monster",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities.3"
"text": "hexcasting.page.entities.get_entity/monster"
},
{
"type": "hexcasting:pattern",
@ -36,7 +36,7 @@
"anchor": "hexcasting:get_entity/item",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities.4"
"text": "hexcasting.page.entities.get_entity/item"
},
{
"type": "hexcasting:pattern",
@ -44,7 +44,7 @@
"anchor": "hexcasting:get_entity/player",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities.5"
"text": "hexcasting.page.entities.get_entity/player"
},
{
"type": "hexcasting:pattern",
@ -52,7 +52,7 @@
"anchor": "hexcasting:get_entity/living",
"input": "vector",
"output": "entity or null",
"text": "hexcasting.page.entities.6"
"text": "hexcasting.page.entities.get_entity/living"
},
{
"type": "hexcasting:pattern",
@ -60,7 +60,7 @@
"anchor": "hexcasting:zone_entity/animal",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities.7"
"text": "hexcasting.page.entities.zone_entity/animal"
},
{
"type": "hexcasting:pattern",
@ -68,7 +68,7 @@
"anchor": "hexcasting:zone_entity/not_animal",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities.8"
"text": "hexcasting.page.entities.zone_entity/not_animal"
},
{
"type": "hexcasting:pattern",
@ -76,7 +76,7 @@
"anchor": "hexcasting:zone_entity/monster",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities.9"
"text": "hexcasting.page.entities.zone_entity/monster"
},
{
"type": "hexcasting:pattern",
@ -84,7 +84,7 @@
"anchor": "hexcasting:zone_entity/not_monster",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities.10"
"text": "hexcasting.page.entities.zone_entity/not_monster"
},
{
"type": "hexcasting:pattern",
@ -92,7 +92,7 @@
"anchor": "hexcasting:zone_entity/item",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities.11"
"text": "hexcasting.page.entities.zone_entity/item"
},
{
"type": "hexcasting:pattern",
@ -100,7 +100,7 @@
"anchor": "hexcasting:zone_entity/not_item",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities.12"
"text": "hexcasting.page.entities.zone_entity/not_item"
},
{
"type": "hexcasting:pattern",
@ -108,7 +108,7 @@
"anchor": "hexcasting:zone_entity/player",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities.13"
"text": "hexcasting.page.entities.zone_entity/player"
},
{
"type": "hexcasting:pattern",
@ -116,7 +116,7 @@
"anchor": "hexcasting:zone_entity/not_player",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities.14"
"text": "hexcasting.page.entities.zone_entity/not_player"
},
{
"type": "hexcasting:pattern",
@ -124,7 +124,7 @@
"anchor": "hexcasting:zone_entity/living",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities.15"
"text": "hexcasting.page.entities.zone_entity/living"
},
{
"type": "hexcasting:pattern",
@ -132,7 +132,7 @@
"anchor": "hexcasting:zone_entity/not_living",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities.16"
"text": "hexcasting.page.entities.zone_entity/not_living"
},
{
"type": "hexcasting:pattern",
@ -140,7 +140,7 @@
"anchor": "hexcasting:zone_entity",
"input": "vector, number",
"output": "list of entities",
"text": "hexcasting.page.entities.17"
"text": "hexcasting.page.entities.zone_entity"
}
]
}

View file

@ -13,7 +13,7 @@
"input": "vector",
"output": "",
"hex_size": 6,
"text": "hexcasting.page.weather_manip.1"
"text": "hexcasting.page.weather_manip.lightning"
},
{
"type": "hexcasting:pattern",
@ -22,7 +22,7 @@
"input": "",
"output": "",
"hex_size": 6,
"text": "hexcasting.page.weather_manip.2"
"text": "hexcasting.page.weather_manip.summon_rain"
},
{
"type": "hexcasting:pattern",
@ -31,7 +31,7 @@
"input": "",
"output": "",
"hex_size": 6,
"text": "hexcasting.page.weather_manip.3"
"text": "hexcasting.page.weather_manip.dispel_rain"
}
]
}

View file

@ -16,7 +16,7 @@
"anchor": "hexcasting:potion/regeneration",
"input": "entity, number, number",
"output": "",
"text": "hexcasting.page.zeniths.2"
"text": "hexcasting.page.zeniths.potion/regeneration"
},
{
"type": "hexcasting:pattern",
@ -24,7 +24,7 @@
"anchor": "hexcasting:potion/night_vision",
"input": "entity, number",
"output": "",
"text": "hexcasting.page.zeniths.3"
"text": "hexcasting.page.zeniths.potion/night_vision"
},
{
"type": "hexcasting:pattern",
@ -32,7 +32,7 @@
"anchor": "hexcasting:potion/absorption",
"input": "entity, number, number",
"output": "",
"text": "hexcasting.page.zeniths.4"
"text": "hexcasting.page.zeniths.potion/absorption"
},
{
"type": "hexcasting:pattern",
@ -40,7 +40,7 @@
"anchor": "hexcasting:potion/haste",
"input": "entity, number, number",
"output": "",
"text": "hexcasting.page.zeniths.5"
"text": "hexcasting.page.zeniths.potion/haste"
},
{
"type": "hexcasting:pattern",
@ -48,7 +48,7 @@
"anchor": "hexcasting:potion/strength",
"input": "entity, number, number",
"output": "",
"text": "hexcasting.page.zeniths.6"
"text": "hexcasting.page.zeniths.potion/strength"
}
]
}

View file

@ -12,7 +12,7 @@
"anchor": "hexcasting:greater",
"input": "number, number",
"output": "number",
"text": "hexcasting.page.logic.1"
"text": "hexcasting.page.logic.greater"
},
{
"type": "hexcasting:pattern",
@ -20,7 +20,7 @@
"anchor": "hexcasting:less",
"input": "number, number",
"output": "number",
"text": "hexcasting.page.logic.2"
"text": "hexcasting.page.logic.less"
},
{
"type": "hexcasting:pattern",
@ -28,7 +28,7 @@
"anchor": "hexcasting:greater_eq",
"input": "number, number",
"output": "number",
"text": "hexcasting.page.logic.3"
"text": "hexcasting.page.logic.greater_eq"
},
{
"type": "hexcasting:pattern",
@ -36,7 +36,7 @@
"anchor": "hexcasting:less_eq",
"input": "number, number",
"output": "number",
"text": "hexcasting.page.logic.4"
"text": "hexcasting.page.logic.less_eq"
},
{
"type": "hexcasting:pattern",
@ -44,7 +44,7 @@
"anchor": "hexcasting:equals",
"input": "number, number",
"output": "number",
"text": "hexcasting.page.logic.5"
"text": "hexcasting.page.logic.equals"
},
{
"type": "hexcasting:pattern",
@ -52,7 +52,7 @@
"anchor": "hexcasting:not_equals",
"input": "number, number",
"output": "number",
"text": "hexcasting.page.logic.6"
"text": "hexcasting.page.logic.not_equals"
},
{
"type": "hexcasting:pattern",
@ -60,7 +60,7 @@
"anchor": "hexcasting:not",
"input": "any",
"output": "number",
"text": "hexcasting.page.logic.7"
"text": "hexcasting.page.logic.not"
},
{
"type": "hexcasting:pattern",
@ -68,7 +68,7 @@
"anchor": "hexcasting:identity",
"input": "any",
"output": "any",
"text": "hexcasting.page.logic.8"
"text": "hexcasting.page.logic.identity"
},
{
"type": "hexcasting:pattern",
@ -76,7 +76,7 @@
"anchor": "hexcasting:or",
"input": "any, any",
"output": "any",
"text": "hexcasting.page.logic.9"
"text": "hexcasting.page.logic.or"
},
{
"type": "hexcasting:pattern",
@ -84,7 +84,7 @@
"anchor": "hexcasting:and",
"input": "any, any",
"output": "any",
"text": "hexcasting.page.logic.10"
"text": "hexcasting.page.logic.and"
},
{
"type": "hexcasting:pattern",
@ -92,7 +92,7 @@
"anchor": "hexcasting:xor",
"input": "any, any",
"output": "any",
"text": "hexcasting.page.logic.11"
"text": "hexcasting.page.logic.xor"
}
]
}

View file

@ -8,7 +8,7 @@
"pages": [
{
"type": "patchouli:text",
"text": "hexcasting.page.math.1"
"text": "hexcasting.page.math.numvec"
},
{
"type": "patchouli:empty"
@ -19,11 +19,11 @@
"anchor": "hexcasting:add",
"input": "num/vec, num/vec",
"output": "num/vec",
"text": "hexcasting.page.math.2"
"text": "hexcasting.page.math.add.1"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math.3"
"text": "hexcasting.page.math.add.2"
},
{
"type": "hexcasting:pattern",
@ -31,11 +31,11 @@
"anchor": "hexcasting:sub",
"input": "num/vec, num/vec",
"output": "num/vec",
"text": "hexcasting.page.math.4"
"text": "hexcasting.page.math.sub.1"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math.5"
"text": "hexcasting.page.math.sub.2"
},
{
"type": "hexcasting:pattern",
@ -43,11 +43,11 @@
"anchor": "hexcasting:mul_dot",
"input": "num/vec, num/vec",
"output": "num/vec",
"text": "hexcasting.page.math.6"
"text": "hexcasting.page.math.mul_dot.1"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math.7"
"text": "hexcasting.page.math.mul_dot.2"
},
{
"type": "hexcasting:pattern",
@ -55,11 +55,11 @@
"anchor": "hexcasting:div_cross",
"input": "num/vec, num/vec",
"output": "num/vec",
"text": "hexcasting.page.math.8"
"text": "hexcasting.page.math.div_cross.1"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math.9"
"text": "hexcasting.page.math.div_cross.2"
},
{
"type": "hexcasting:pattern",
@ -67,11 +67,11 @@
"anchor": "hexcasting:abs_len",
"input": "num/vec",
"output": "number",
"text": "hexcasting.page.math.10"
"text": "hexcasting.page.math.abs_len.1"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math.11"
"text": "hexcasting.page.math.abs_len.2"
},
{
"type": "hexcasting:pattern",
@ -79,11 +79,11 @@
"anchor": "hexcasting:pow_proj",
"input": "num/vec, num/vec",
"output": "num/vec",
"text": "hexcasting.page.math.12"
"text": "hexcasting.page.math.pow_proj.1"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.math.13"
"text": "hexcasting.page.math.pow_proj.2"
},
{
"type": "hexcasting:pattern",
@ -91,7 +91,7 @@
"anchor": "hexcasting:construct_vec",
"input": "num, num, num",
"output": "vector",
"text": "hexcasting.page.math.14"
"text": "hexcasting.page.math.construct_vec"
},
{
"type": "hexcasting:pattern",
@ -99,7 +99,7 @@
"anchor": "hexcasting:deconstruct_vec",
"input": "vector",
"output": "num, num, num",
"text": "hexcasting.page.math.15"
"text": "hexcasting.page.math.deconstruct_vec"
},
{
"type": "hexcasting:pattern",
@ -107,7 +107,7 @@
"anchor": "hexcasting:coerce_axial",
"input": "vec",
"output": "vec",
"text": "hexcasting.page.math.16"
"text": "hexcasting.page.math.coerce_axial"
},
{
"type": "hexcasting:pattern",
@ -115,7 +115,7 @@
"anchor": "hexcasting:sin",
"input": "num",
"output": "num",
"text": "hexcasting.page.math.17"
"text": "hexcasting.page.math.sin"
},
{
"type": "hexcasting:pattern",
@ -123,7 +123,7 @@
"anchor": "hexcasting:cos",
"input": "num",
"output": "num",
"text": "hexcasting.page.math.18"
"text": "hexcasting.page.math.cos"
},
{
"type": "hexcasting:pattern",
@ -131,7 +131,7 @@
"anchor": "hexcasting:tan",
"input": "num",
"output": "num",
"text": "hexcasting.page.math.19"
"text": "hexcasting.page.math.tan"
},
{
"type": "hexcasting:pattern",
@ -139,7 +139,7 @@
"anchor": "hexcasting:arcsin",
"input": "num",
"output": "num",
"text": "hexcasting.page.math.20"
"text": "hexcasting.page.math.arcsin"
},
{
"type": "hexcasting:pattern",
@ -147,7 +147,7 @@
"anchor": "hexcasting:arccos",
"input": "num",
"output": "num",
"text": "hexcasting.page.math.21"
"text": "hexcasting.page.math.arccos"
},
{
"type": "hexcasting:pattern",
@ -155,7 +155,7 @@
"anchor": "hexcasting:arctan",
"input": "num",
"output": "num",
"text": "hexcasting.page.math.22"
"text": "hexcasting.page.math.arctan"
}
]
}

View file

@ -12,11 +12,11 @@
"anchor": "hexcasting:eval",
"input": "list of patterns",
"output": "many",
"text": "hexcasting.page.meta.1"
"text": "hexcasting.page.meta.eval.1"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.meta.2"
"text": "hexcasting.page.meta.eval.2"
},
{
"type": "hexcasting:pattern",
@ -24,11 +24,11 @@
"anchor": "hexcasting:for_each",
"input": "list of patterns, list",
"output": "many",
"text": "hexcasting.page.meta.3"
"text": "hexcasting.page.meta.for_each.1"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.meta.4"
"text": "hexcasting.page.meta.for_each.2"
}
]
}

View file

@ -30,8 +30,8 @@
},
{
"type": "hexcasting:manual_pattern_nosig",
"header": "hexcasting.page.numbers.3.header",
"text": "hexcasting.page.numbers.3",
"header": "hexcasting.page.numbers.example.10.header",
"text": "hexcasting.page.numbers.example.10",
"patterns": {
"startdir": "SOUTH_EAST",
"signature": "aqaae"
@ -39,8 +39,8 @@
},
{
"type": "hexcasting:manual_pattern_nosig",
"header": "hexcasting.page.numbers.4.header",
"text": "hexcasting.page.numbers.4",
"header": "hexcasting.page.numbers.example.7.header",
"text": "hexcasting.page.numbers.example.7",
"patterns": {
"startdir": "SOUTH_WEST",
"signature": "aqaaqww"
@ -48,8 +48,8 @@
},
{
"type": "hexcasting:manual_pattern_nosig",
"header": "hexcasting.page.numbers.5.header",
"text": "hexcasting.page.numbers.5",
"header": "hexcasting.page.numbers.example.-32.header",
"text": "hexcasting.page.numbers.example.-32",
"patterns": {
"startdir": "NORTH_EAST",
"signature": "deddwqea"
@ -57,8 +57,8 @@
},
{
"type": "hexcasting:manual_pattern_nosig",
"header": "hexcasting.page.numbers.6.header",
"text": "hexcasting.page.numbers.6",
"header": "hexcasting.page.numbers.example.4.5.header",
"text": "hexcasting.page.numbers.example.4.5",
"patterns": {
"startdir": "SOUTH_EAST",
"signature": "aqaaqdww"
@ -66,7 +66,7 @@
},
{
"type": "patchouli:text",
"text": "hexcasting.page.numbers.7"
"text": "hexcasting.page.numbers.3"
}
]
}

View file

@ -12,7 +12,7 @@
"anchor": "hexcasting:read",
"input": "",
"output": "any",
"text": "hexcasting.page.readwrite.1"
"text": "hexcasting.page.readwrite.read"
},
{
"type": "hexcasting:pattern",
@ -20,7 +20,7 @@
"anchor": "hexcasting:read/entity",
"input": "entity",
"output": "any",
"text": "hexcasting.page.readwrite.2"
"text": "hexcasting.page.readwrite.read/entity"
},
{
"type": "hexcasting:pattern",
@ -28,11 +28,11 @@
"anchor": "hexcasting:write",
"input": "any",
"output": "",
"text": "hexcasting.page.readwrite.3"
"text": "hexcasting.page.readwrite.write.1"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.readwrite.4"
"text": "hexcasting.page.readwrite.write.2"
}
]
}

View file

@ -12,11 +12,11 @@
"anchor": "hexcasting:explode",
"input": "vector, number",
"output": "",
"text": "hexcasting.page.basic_spell.1"
"text": "hexcasting.page.basic_spell.explode.1"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.basic_spell.2"
"text": "hexcasting.page.basic_spell.explode.2"
},
{
"type": "hexcasting:pattern",
@ -24,11 +24,11 @@
"anchor": "hexcasting:explode/fire",
"input": "vector, number",
"output": "",
"text": "hexcasting.page.basic_spell.3"
"text": "hexcasting.page.basic_spell.explode.fire.1"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.basic_spell.4"
"text": "hexcasting.page.basic_spell.explode.fire.2"
},
{
"type": "hexcasting:pattern",
@ -36,7 +36,7 @@
"anchor": "hexcasting:add_motion",
"input": "entity, vector",
"output": "",
"text": "hexcasting.page.basic_spell.5"
"text": "hexcasting.page.basic_spell.add_motion"
},
{
"type": "hexcasting:pattern",
@ -44,7 +44,7 @@
"anchor": "hexcasting:blink",
"input": "entity, number",
"output": "",
"text": "hexcasting.page.basic_spell.6"
"text": "hexcasting.page.basic_spell.blink"
}
]
}

View file

@ -12,7 +12,7 @@
"anchor": "hexcasting:place_block",
"input": "vector",
"output": "",
"text": "hexcasting.page.blockworks.1"
"text": "hexcasting.page.blockworks.place_block"
},
{
"type": "hexcasting:pattern",
@ -20,7 +20,7 @@
"anchor": "hexcasting:break_block",
"input": "vector",
"output": "",
"text": "hexcasting.page.blockworks.2"
"text": "hexcasting.page.blockworks.break_block"
},
{
"type": "hexcasting:pattern",
@ -28,7 +28,7 @@
"anchor": "hexcasting:create_water",
"input": "vector",
"output": "",
"text": "hexcasting.page.blockworks.3"
"text": "hexcasting.page.blockworks.create_water"
},
{
"type": "hexcasting:pattern",
@ -36,7 +36,7 @@
"anchor": "hexcasting:destroy_water",
"input": "vector",
"output": "",
"text": "hexcasting.page.blockworks.4"
"text": "hexcasting.page.blockworks.destroy_water"
},
{
"type": "hexcasting:pattern",
@ -44,7 +44,7 @@
"anchor": "hexcasting:conjure_block",
"input": "vector",
"output": "",
"text": "hexcasting.page.blockworks.5"
"text": "hexcasting.page.blockworks.conjure_block"
},
{
"type": "hexcasting:pattern",
@ -52,7 +52,7 @@
"anchor": "hexcasting:conjure_light",
"input": "vector",
"output": "",
"text": "hexcasting.page.blockworks.6"
"text": "hexcasting.page.blockworks.conjure_light"
},
{
"type": "hexcasting:pattern",
@ -60,7 +60,7 @@
"anchor": "hexcasting:bonemeal",
"input": "vector",
"output": "",
"text": "hexcasting.page.blockworks.7"
"text": "hexcasting.page.blockworks.bonemeal"
},
{
"type": "hexcasting:pattern",
@ -68,7 +68,7 @@
"anchor": "hexcasting:edify",
"input": "vector",
"output": "",
"text": "hexcasting.page.blockworks.8"
"text": "hexcasting.page.blockworks.edify"
},
{
"type": "hexcasting:pattern",
@ -76,7 +76,7 @@
"anchor": "hexcasting:ignite",
"input": "vector",
"output": "",
"text": "hexcasting.page.blockworks.9"
"text": "hexcasting.page.blockworks.ignite"
},
{
"type": "hexcasting:pattern",
@ -84,10 +84,11 @@
"anchor": "hexcasting:extinguish",
"input": "vector",
"output": "",
"text": "hexcasting.page.blockworks.10"
"text": "hexcasting.page.blockworks.extinguish"
}
],
"extra_recipe_mappings": {
"hexcasting:conjured": 4
"hexcasting:conjured": 5,
"hexcasting:conjured_block": 4
}
}

View file

@ -12,7 +12,7 @@
"anchor": "hexcasting:colorize",
"input": "",
"output": "",
"text": "hexcasting.page.colorize.1"
"text": "hexcasting.page.colorize"
}
]
}

View file

@ -8,7 +8,7 @@
"pages": [
{
"type": "patchouli:text",
"text": "hexcasting.page.hexcasting_spell.1"
"text": "hexcasting.page.hexcasting_spell.basics"
},
{
"type": "hexcasting:pattern",
@ -16,7 +16,7 @@
"anchor": "hexcasting:craft/cypher",
"input": "entity, list of patterns",
"output": "",
"text": "hexcasting.page.hexcasting_spell.2"
"text": "hexcasting.page.hexcasting_spell.craft/cypher"
},
{
"type": "hexcasting:pattern",
@ -24,7 +24,7 @@
"anchor": "hexcasting:craft/trinket",
"input": "entity, list of patterns",
"output": "",
"text": "hexcasting.page.hexcasting_spell.3",
"text": "hexcasting.page.hexcasting_spell.craft/trinket",
"hex_size": 8
},
{
@ -33,7 +33,7 @@
"anchor": "hexcasting:craft/artifact",
"input": "entity, list of patterns",
"output": "",
"text": "hexcasting.page.hexcasting_spell.4",
"text": "hexcasting.page.hexcasting_spell.craft/artifact",
"hex_size": 5
},
{
@ -42,11 +42,11 @@
"anchor": "hexcasting:recharge",
"input": "entity",
"output": "",
"text": "hexcasting.page.hexcasting_spell.5"
"text": "hexcasting.page.hexcasting_spell.recharge.1"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.hexcasting_spell.6"
"text": "hexcasting.page.hexcasting_spell.recharge.2"
},
{
"type": "hexcasting:pattern",
@ -54,11 +54,11 @@
"anchor": "hexcasting:erase",
"input": "",
"output": "",
"text": "hexcasting.page.hexcasting_spell.7"
"text": "hexcasting.page.hexcasting_spell.erase.1"
},
{
"type": "patchouli:text",
"text": "hexcasting.page.hexcasting_spell.8"
"text": "hexcasting.page.hexcasting_spell.erase.2"
}
]
}

View file

@ -20,7 +20,7 @@
"anchor": "hexcasting:potion/weakness",
"input": "entity, number, number",
"output": "",
"text": "hexcasting.page.nadirs.3"
"text": "hexcasting.page.nadirs.potion/weakness"
},
{
"type": "hexcasting:pattern",
@ -28,7 +28,7 @@
"anchor": "hexcasting:potion/levitation",
"input": "entity, number",
"output": "",
"text": "hexcasting.page.nadirs.4"
"text": "hexcasting.page.nadirs.potion/levitation"
},
{
"type": "hexcasting:pattern",
@ -36,7 +36,7 @@
"anchor": "hexcasting:potion/wither",
"input": "entity, number, number",
"output": "",
"text": "hexcasting.page.nadirs.5"
"text": "hexcasting.page.nadirs.potion/wither"
},
{
"type": "hexcasting:pattern",
@ -44,7 +44,7 @@
"anchor": "hexcasting:potion/poison",
"input": "entity, number, number",
"output": "",
"text": "hexcasting.page.nadirs.6"
"text": "hexcasting.page.nadirs.potion/poison"
},
{
"type": "hexcasting:pattern",
@ -52,7 +52,7 @@
"anchor": "hexcasting:potion/slowness",
"input": "entity, number, number",
"output": "",
"text": "hexcasting.page.nadirs.7"
"text": "hexcasting.page.nadirs.potion/slowness"
}
]
}

View file

@ -20,7 +20,7 @@
"anchor": "hexcasting:sentinel/create",
"input": "vector",
"output": "",
"text": "hexcasting.page.sentinels.3"
"text": "hexcasting.page.sentinels.sentinel/create"
},
{
"type": "hexcasting:pattern",
@ -28,7 +28,7 @@
"anchor": "hexcasting:sentinel/destroy",
"input": "",
"output": "",
"text": "hexcasting.page.sentinels.4"
"text": "hexcasting.page.sentinels.sentinel/destroy"
},
{
"type": "hexcasting:pattern",
@ -36,7 +36,7 @@
"anchor": "hexcasting:sentinel/get_pos",
"input": "",
"output": "vector",
"text": "hexcasting.page.sentinels.5"
"text": "hexcasting.page.sentinels.sentinel/get_pos"
},
{
"type": "hexcasting:pattern",
@ -44,7 +44,7 @@
"anchor": "hexcasting:sentinel/wayfind",
"input": "vector",
"output": "vector",
"text": "hexcasting.page.sentinels.6"
"text": "hexcasting.page.sentinels.sentinel/wayfind"
}
]
}

View file

@ -40,11 +40,11 @@
},
{
"type": "hexcasting:manual_pattern",
"header": "hexcasting.page.stackmanip.5.header",
"header": "hexcasting.page.stackmanip.mask.header",
"anchor": "Numbers",
"input": "many",
"output": "many",
"text": "hexcasting.page.stackmanip.5",
"text": "hexcasting.page.stackmanip.mask.1",
"patterns": [
{
"startdir": "SOUTH_EAST",
@ -64,7 +64,7 @@
},
{
"type": "patchouli:text",
"text": "hexcasting.page.stackmanip.6"
"text": "hexcasting.page.stackmanip.mask.2"
},
{
"type": "hexcasting:pattern",
@ -72,12 +72,12 @@
"anchor": "hexcasting:swizzle",
"input": "number, any",
"output": "many",
"text": "hexcasting.page.stackmanip.7"
"text": "hexcasting.page.stackmanip.swizzle.1"
},
{
"type": "patchouli:link",
"text": "hexcasting.page.stackmanip.8",
"link_text": "hexcasting.page.stackmanip.8.link",
"text": "hexcasting.page.stackmanip.swizzle.2",
"link_text": "hexcasting.page.stackmanip.swizzle.link",
"url": "https://github.com/gamma-delta/HexMod/wiki/Table-of-Lehmer-Codes-for-Swindler's-Gambit"
}
]