Skip to content
Open

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
{
"name": "Advanced Lists",
"category": "hexcasting:patterns",
"icon": "minecraft:birch_sign",
"advancement": "hexcasting:root",
"pages": [
"These patterns seem to represent common operations I perform on lists. Though these are perfectly possible to do with normal $(l:patterns/lists)List Manipulation/$, it often requires more effort. Perhaps Nature willed them into existence to better understand what I'm doing... or perhaps they are my own invention?",
{
"type": "hexcasting:pattern",
"op_id": "hexic:rotate",
"anchor": "hexic:rotate",
"input": "[a], int",
"output": "[a]",
"text": "Rotates the list leftward: an argument of 1 moves the first item of the list to the end. Negative numbers allow rotating the list rightward."
},
{
"type": "hexcasting:pattern",
"op_id": "hexic:take",
"anchor": "hexic:take/count",
"input": "[a], int",
"output": "[a]",
"text": "Selects the first few elements from the input list. If the number is negative, selects the last few elements instead."
},
{
"type": "hexcasting:pattern",
"op_id": "hexic:drop",
"anchor": "hexic:drop/count",
"input": "[a], int",
"output": "[a]",
"text": "Drops the first few elements from the input list; the dual to $(l:addon/hexic/lists2#hexic:take/count)$(action)Retention Distillation/$."
},
{
"type": "hexcasting:pattern",
"op_id": "hexic:take",
"anchor": "hexic:take/list",
"input": "[a], [int]",
"output": "[a]",
"text": "Selects from the list only elements corresponding to the given indices. Unlike $(l:patterns/lists#hexcasting:index)$(action)Selection Distillation/$, this cannot reorder or duplicate iotas."
},
{
"type": "hexcasting:pattern",
"op_id": "hexic:drop",
"anchor": "hexic:drop/list",
"input": "[a], [int]",
"output": "[a]",
"text": "Drops from the list iotas at the given indices. All other iotas are kept in the same order as the input."
},
{
"type": "hexcasting:pattern",
"op_id": "hexic:where",
"anchor": "hexic:where/bool",
"input": "[bool]",
"output": "[int]",
"text": "Creates a list of the indices for which True is present. For example, [True, False, True] becomes [0, 2]. I can also mix bools and ints in the input list."
},
{
"type": "hexcasting:pattern",
"op_id": "hexic:where",
"anchor": "hexic:where/num",
"input": "[num]",
"output": "[int]",
"text": "Adds each index to the list based on the value. For example, [1, 2, 3] becomes [0, 1, 1, 2, 2, 2]. Zero or negative numbers do not appear at all."
},
{
"type": "hexcasting:pattern",
"header": "Exterior Distillation",
"op_id": "hexcasting:mul",
"anchor": "hexcasting:mul",
"input": "[a], [b]",
"output": "[[a, b]]",
"text": "Calculates the outer product of two lists. The resulting list has an entry for every possible pairing between the input lists."
},
{
"type": "hexcasting:pattern",
"header": "Interior Distillation",
"op_id": "hexcasting:div",
"anchor": "hexcasting:div",
"input": "[a], [b]",
"output": "[[a, b]]",
"text": "Calculates the inner product of two lists. If the two lists were arranged side-by-side, the resulting list has one entry for every row (unpaired elements are skipped)."
},
{
"type": "hexcasting:pattern",
"op_id": "hexic:extract",
"anchor": "hexic:extract",
"input": "[a], int",
"output": "[a], [a], a",
"text": "Extracts an iota from the given list, and breaks the list apart around it. Returns all items before the iota, all items after the iota, and finally the iota itself."
},
{
"type": "hexcasting:pattern",
"op_id": "hexic:grep",
"anchor": "hexic:grep",
"input": "[a], [a → bool]",
"output": "[a]",
"text": "Discards iotas from the given list unless they satisfy the given predicate. Using $(l:patterns/meta#hexcasting:halt)$(action)Charon's Gambit/$ discards the current and all remaining iotas."
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@

{
"name": "Media Pouches",
"category": "hexcasting:items",
"icon": "hexic:small_preferred_bundle",
"sortnum": 1,
"pages": [
"Though a $(l:items/phials)$(item)Phial/$ is my ultimate goal for _media storage, knitting a pouch out of $(l:addon/hexic/mediaweave)$(item)mediaweave/$ may help me manage my amethyst better. Only a few cloths are needed to give me some decent capacity. Each pouch holds six slots, and I can extend their capacity to twelve with a bit more weave. A small pouch may go within a large pouch, but neither size can be placed within itself.",
"Upon Nature's request for _media, my pouches will offer themselves and their contents first of all; similarly, if I attempt to $(l:patterns/spells/hexcasting#hexcasting:recharge)$(action)Recharge/$ a pouch, the inserted _media will form a 'cloud' of sorts inside, which will settle into any $(l:items/hexcasting)$(item)trinket/$ or similar within.",
{
"type": "patchouli:text",
"advancement": "hexcasting:enlightenment",
"text": "Something strange about these pouches I have noticed. I can feel the _media $(o)hesitant/$— $(o)resistant/$, even— to leave the pouch. Only the media Nature— no, I— ask for is pulled from the pouch. As amethyst shatters inside, I feel the leftover _media bouncing, ping-ponging, $(o)trapped/$ in the walls until it evaporates. A battery within— my beloved $(l:items/phials)$(item)Phial/$, or an $(l:items/hexcasting)$(item)Artifact/$ of mine, could grab bits of this cloud, with none of the costs $(l:patterns/spells/hexcasting#hexcasting:recharge)$(action)directing the clouds myself/$ incurs."
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"name": "Mediaweave",
"category": "hexcasting:items",
"icon": "hexic:preferred_mediaweave",
"advancement": "hexcasting:root",
"pages": [
"A perversion of $(l:hexcasting:patterns/spells/blockworks#hexcasting:edify)$(action)Edify Sapling/$ lets me knit a fabric out of wool and _media. It acts similar to a $(l:hexcasting:items/thought_knot)$(item)Thought-Knot/$, but can only hold _Hexes — standard iotas fizzle instead of embedding themselves in the fabric. Additionally, the weave, radiating with raw energy, can passively exert force on nearby _media, with no mind involved — nothing as powerful as a _Hex, but still useful nonetheless."
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{
"name": "Nature's Records",
"category": "hexcasting:patterns",
"icon": "minecraft:glow_ink_sac",
"advancement": "hexcasting:enlightenment",
"pages": [
"My studies have led me to understand the fabric undermining every facet of this world. Nature's memory manifests itself as a recursive structure of 'tags' of several types. I've documented these over the next few pages. Though many types of tag appear to be redundant with each other, I must keep in mind that they are not freely interchangeable — and since I am dealing directly with Nature's memories, such a mistake could be worse than fatal.",
"If everything in the world is merely reduced to a tag... what am I? Is my entire existence reducible to a pile of bytes? At least this gives me some comfort, knowing that the villagers I've sacrificed in my journey truly had no life of their own... what about mine? What am I? Were the words I am writing in this very book, just a manifestation of random ones and zeroes?$(2br)I best not ponder too much. Though I may pry into everything I wish in detail, doing so would suck the joy from this illusion.",
{
"type": "hexcasting:pattern",
"anchor": "hexic:nbt/lift1",
"op_id": "hexic:nbt/lift1",
"input": "number",
"output": "nbt",
"text": "Converts a number into a Byte tag: an integer between -128 and 127, inclusive."
},
{
"type": "hexcasting:pattern",
"anchor": "hexic:nbt/lift2",
"op_id": "hexic:nbt/lift2",
"input": "number",
"output": "nbt",
"text": "Converts a number into a Short tag, between -65536 and 65535."
},
{
"type": "hexcasting:pattern",
"anchor": "hexic:nbt/lift4",
"op_id": "hexic:nbt/lift4",
"input": "number",
"output": "nbt",
"text": "Converts a number into an Int tag, between roughly negative 2 billion and positive 2 billion."
},
{
"type": "hexcasting:pattern",
"anchor": "hexic:nbt/lift8",
"op_id": "hexic:nbt/lift8",
"input": "number",
"output": "nbt",
"text": "Converts a number into a Long tag: bounded to 9 quintillion, which I will likely never reach."
},
{
"type": "hexcasting:pattern",
"anchor": "hexic:nbt/liftd",
"op_id": "hexic:nbt/liftd",
"input": "number",
"output": "nbt",
"text": "Converts a number into a Double tag. Oddly, doubles seem to perfectly correspond to my knowledge of numbers, plus the ability to represent infinities and non-numbers."
},
{
"type": "hexcasting:pattern",
"anchor": "hexic:nbt/liftf",
"op_id": "hexic:nbt/liftf",
"input": "number",
"output": "nbt",
"text": "Converts a number into a Float tag. These seem similar to Doubles, albeit with less precision."
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "Nature's Revenge",
"advancement": "hexcasting:enlightenment",
"category": "hexcasting:patterns",
"icon": "arrow",
"pages": [
"No. No. No. I— I thought Horrible was bad— etched into every waking moment— no— no— it hurts— must draw— can't draw— what have I done— why must Nature be like this— ",
{
"type": "hexcasting:pattern",
"op_id": "hexic:whatthefuck",
"anchor": "hexic:whatthefuck",
"input": "???",
"output": "???",
"text": "How could one even begin to draw this?"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"name": "Crystal Pens",
"icon": "hexic:preferred_pen",
"advancement": "hexcasting:root",
"category": "hexcasting:items",
"pages": [
"A pen made of amethyst allows me to sketch patterns in midair as input to my spells. Though I use my pen like a normal staff, patterns I draw with it are merely stored in an internal list rather than executed."
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"name": "Echo Shards",
"category": "hexcasting:items",
"icon": "minecraft:echo_shard",
"advancement": "hexcasting:root",
"pages": [
"Ever since acquiring a few $(item)Echo Shards/$ from one of those ancient cities, my _Hexes have felt... restrained in a way, as if the shards were trying to absorb them. Holding a shard in my other hand would let it do so, and would let me release all of the patterns I've drawn at once.",
"This behavior seems rather useful for quickly casting prepared spells. For example, if I let my shard absorb a simple raycast Hex, I could release it all-at-once against an entity rather than having to catch it off-guard standing still. Patterns released from an $(item)Echo Shard/$ are cast against my staff stack, letting me use the newly-found entity by hand."
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"name": "Staffcasting Patterns",
"category": "hexcasting:patterns",
"icon": "hexcasting:staff/mindsplice",
"pages": [
"These patterns force me to cast a _Hex as if I drew it by hand. There are two variants of this pattern: the Greater version keeps the stack from the outside, while the Lesser version uses my staff's stack. My ravenmind is preserved in both cases.",
{
"type": "hexcasting:pattern",
"anchor": "hexic:staffcast_factory",
"op_id": "hexic:staffcast_factory",
"input": "∀αβ. α, [α → β]",
"output": "β",
"text": "Coerces my staff to cast a _Hex. The hex uses the stack of the outer casting environment."
},
"Something's odd about how these patterns are named. I can simulate the Greater variant with merely a wrapper around the Lesser variant, but accessing the staff's stack itself is impossible with purely Greater. Does this not make Lesser strictly more powerful than Greater?",
{
"type": "hexcasting:pattern",
"anchor": "hexic:staffcast_factory/lazy",
"op_id": "hexic:staffcast_factory/lazy",
"input": "[? → ?]",
"output": "",
"text": "Coerces my staff to cast a _Hex. The hex uses the stack of the staff itself, but keeps the outer environment's ravenmind."
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"name": "Stringworms",
"category": "hexcasting:items",
"advancement": "hexcasting:root",
"icon": "hexic:preferred_stringworm",
"pages": [
"A strange object I've discovered, stringworms are worm imitations made from fuzz. I'd imagine some people would have fun playing with them, but they have no use in my studies."
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "Greater Reveal",
"category": "hexcasting:patterns",
"icon": "minecraft:bell",
"pages": [
"Though my _Hexes can use $(l:hexcasting:patterns/basics#hexcasting:print)$(action)Reveal/$ to transmit information to my mind, the resulting message is ephemeral — unless I stand still and reflect on what I've heard recently, it will slip away like anything else someone says. Additionally, constantly hammering my mind with iotas distracts me from more important things.",
"Thus, I've devised a new pattern of my own. It's similar to $(l:hexcasting:patterns/basics#hexcasting:print)$(action)Reveal/$, but the message is lodged well within my mind, and I forget it instantly if I replace it with something else. It can also take a list of messages, for convenience.",
{
"type": "hexcasting:pattern",
"anchor": "hexxytounge:reveal",
"op_id": "hexxytounge:reveal",
"input": "[iota] | iota",
"output": "",
"text": "Takes a list of iotas (or a single non-iota, which is treated as a list with one element) and embeds them in my mind persistently. Displayed iotas survive all methods that would clear a normal Reveal, and can only be cleared by another casting of Greater Reveal or my untimely demise."
},
"$(o)To be a Hexcaster is to glimpse a truth that might best be hidden./$"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
{
"name": "Maps",
"category": "hexcasting:patterns",
"icon": "minecraft:filled_map",
"advancement": "hexcasting:root",
"pages": [
"Maps are an efficient structure holding pairings of some iota to some other iota. While this is perfectly possible using merely list operations, dedicated map iotas use some arcane substance called a '$(thing)Hash/$'. While this doesn't reduce the $(o)operations/$ required to access a map, it desperately reduces the load on Nature, nearing O(1) for most access.",
{
"type": "hexcasting:pattern",
"op_id": "phlib:empty_map",
"anchor": "phlib:empty_map",
"input": "",
"output": "map<⊥, ⊥>",
"text": "Creates a new empty map for my usage."
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:add",
"anchor": "hexcasting:add",
"input": "map<k, v>, map<k, v>",
"output": "map<k, v>",
"text": "Merges two maps together. Maps cannot have duplicate items: any entry in the latter map will override that in the first map."
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:sub",
"anchor": "hexcasting:sub",
"input": "map<k, v>, map<t, *>",
"output": "map<k, v>",
"text": "Removes every entry in the first map that is found in the second map. The values in the second map are ignored."
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:index",
"anchor": "hexcasting:index",
"input": "map<k, v>, k",
"output": "v?",
"text": "Disintegrates the map, returning only the value associated with the given key. O(1), unlike scanning a list."
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:unappend",
"anchor": "hexcasting:unappend",
"input": "map<k, v>",
"output": "map<k, v>, (k, v)?",
"text": "Shaves off one element of a map. Which element gets shaved off is undefined and subject to Nature's whims. If used on an empty map, returns two nulls."
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:replace",
"anchor": "hexcasting:replace",
"input": "map<k, v>, k, v",
"output": "map<k, v>",
"text": "Replaces the element associated with $(n)k/$ with $(n)v/$. If $(n)k/$ is not present in the map, the entry is created."
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:remove_from",
"anchor": "hexcasting:remove_from",
"input": "map<k, v>, k",
"output": "map<k, v>",
"text": "Throws out the map's association for the given key. If there is no matching association, the map is returned unchanged."
}
]
}
Loading
Loading