This is the online version of the Hexic documentation.

Entries which are blurred are spoilers. Click to reveal them, but be aware that they may spoil endgame progression. Alternatively, click here to get a version with all spoilers showing.

I devote this section to the magical and mysterious items I might encounter in my studies.

Echo ShardEcho Shards

Ever since acquiring a few 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 Echo Shard are cast against my staff stack, letting me use the newly-found entity by hand.


item.hexic.preferred_mediaweaveMediaweave

A perversion of Edify Sapling lets me knit a fabric out of wool and media. It acts similar to a 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.


item.hexic.preferred_stringwormStringworms

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.


item.hexic.small_preferred_bundleMedia Pouches

Though a Phial is my ultimate goal for media storage, knitting a pouch out of 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 Recharge a pouch, the inserted media will form a 'cloud' of sorts inside, which will settle into any trinket or similar within.


Something strange about these pouches I have noticed. I can feel the media hesitantresistant, 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, trapped in the walls until it evaporates. A battery within— my beloved Phial, or an Artifact of mine, could grab bits of this cloud, with none of the costs directing the clouds myself incurs.


A list of all the patterns I've discovered, as well as what they do.

Birch SignAdvanced Lists

These patterns seem to represent common operations I perform on lists. Though these are perfectly possible to do with normal 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?


Ferris Distillation ([a], int → [a])

Your browser does not support visualizing patterns. Pattern code: qaeaqweeee

Rotates the array leftward: an argument of 1 moves the first item of the list to the end. Negative numbers allow rotating the list rightward.


Retention Distillation ([a], int → [a])

Your browser does not support visualizing patterns. Pattern code: qaeaqwd

Selects the first few elements from the input list. If the number is negative, selects the last few elements instead.


Rejection Distillation ([a], int → [a])

Your browser does not support visualizing patterns. Pattern code: qaeaqda

Drops the first few elements from the input list; the dual to Retention Distillation.


Retention Distillation ([a], [int] → [a])

Your browser does not support visualizing patterns. Pattern code: qaeaqwd

Selects from the list only elements corresponding to the given indices. Unlike Selection Distillation, this cannot reorder or duplicate iotas.


Rejection Distillation ([a], [int] → [a])

Your browser does not support visualizing patterns. Pattern code: qaeaqda

Drops from the list iotas at the given indices. All other iotas are kept in the same order as the input.


BellGreater Reveal

Though my Hexes can use 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 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.


Greater Reveal ([iota] | iota →)

Your browser does not support visualizing patterns. Pattern code: deqed

Takes a list of iotas (or a single non-iota, which is treated as a list with one element) and displays them permanently to the caster. Displayed iotas survive all methods that would clear a normal Reveal, and can only be cleared by another casting of Greater Reveal.


To be a Hexcaster is to glimpse a truth that might best be hidden.


Calibrated Sculk SensorIota Patching

I've discovered a way to create a new type of iota — an abhorrence against Nature of my own doing. This pattern weaves a 'sheath' of media out of some iota, letting me customize several attributes of the new iota. Though this can make my spells more expressive, this ability is not to be taken lightly — I cannot imagine the mischief others would do with these 'patchwork' iotas.


To assemble a patchwork iota, I must provide four source iotas:

The 'userdata' iota, passed to my overload Hexes.

The 'display' iota, visible to my eyes.

A color for the iota, as an RGB vector in the 0-1 range.

A pointer to an overload map.


Such an 'overload map' is merely a regular Map iota (mapping patterns to the Hexes they should be replaced with), but stored within a Property. I assume that Nature's reason for boxing like this is to save space: it's likely I'll have many patched iotas all using the same overloads. This also gives me the convenience of updating every instance with merely Schrödinger's Gambit, rather than finding and updating them all by hand.


Patchwork Exaltation (iota, iota, vec, property → patchwork)

Your browser does not support visualizing patterns. Pattern code: deaqqwqqqeaeqqqeadedaqaaee


Constructs a Patchwork iota from the userdata (iota stored inside), display iota (visible to my eyes), color, and an overload map.


These overload maps resemble a technique I've seen before — the concept of redefining patterns on a fundamental level resembles the moon cultists' (little time to explain) metatables, which allow associating a table with another table to redefine its operations. When my 'metamethods' are invoked, the userdata iota is pushed to the top of the stack. All other information about the patchwork disintegrates: I'll need to recreate it from scratch (maybe I should use a 'constructor' macro?) if I want to return a new iota of the same type.


Important note: unlike these 'metatables' I've heard about, patchwork replaces the behavior of the underlying iota. For example, operators such as <ne,waaw> won't work on two patchwork numbers unless I define it myself. However, I feel uneasy relying on this behavior — Nature will be perfectly happy to change this at any moment.


MapMaps

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 'Hash'. While this doesn't reduce the operations required to access a map, it desperately reduces the load on Nature, nearing O(1) for most access.


Vacant Reflection: Map (→ map<⊥, ⊥>)

Your browser does not support visualizing patterns. Pattern code: dqdwdqd

Creates a new empty map for my usage.


Additive Distillation (map<k, v>, map<k, v> → map<k, v>)

Your browser does not support visualizing patterns. Pattern code: waaw

Merges two maps together. Maps cannot have duplicate items: any entry in the latter map will override that in the first map.


Subtractive Distillation (map<k, v>, map<t, *> → map<k, v>)

Your browser does not support visualizing patterns. Pattern code: wddw

Removes every entry in the first map that is found in the second map. The values in the second map are ignored.


Selection Distillation (map<k, v>, k → v?)

Your browser does not support visualizing patterns. Pattern code: deeed

Disintegrates the map, returning only the value associated with the given key. O(1), unlike scanning a list.


Derivation Decomposition (map<k, v> → map<k, v>, (k, v)?)

Your browser does not support visualizing patterns. Pattern code: qaeaq

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.


Surgeon's Exaltation (map<k, v>, k, v → map<k, v>)

Your browser does not support visualizing patterns. Pattern code: wqaeaqw

Replaces the element associated with k with v. If k is not present in the map, the entry is created.


Excisor's Distillation (map<k, v>, k → map<k, v>)

Your browser does not support visualizing patterns. Pattern code: edqdewaqa

Throws out the map's association for the given key. If there is no matching association, the map is returned unchanged.


Glow Ink SacNature's Records

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?

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.


Secretary's Purification: Byte (number → nbt)

Your browser does not support visualizing patterns. Pattern code: edwaqw

Converts a number into a Byte tag: an integer between -128 and 127, inclusive.


Secretary's Purification: Short (number → nbt)

Your browser does not support visualizing patterns. Pattern code: edwaqww

Converts a number into a Short tag, between -65536 and 65535.


Secretary's Purification: Integer (number → nbt)

Your browser does not support visualizing patterns. Pattern code: edwaqwww

Converts a number into an Int tag, between roughly negative 2 billion and positive 2 billion.


Secretary's Purification: Long (number → nbt)

Your browser does not support visualizing patterns. Pattern code: edwaqwwww

Converts a number into a Long tag: bounded to 9 quintillion, which I will likely never reach.


Secretary's Purification: Double (number → nbt)

Your browser does not support visualizing patterns. Pattern code: edwaqwaawaa

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.


Secretary's Purification: Float (number → nbt)

Your browser does not support visualizing patterns. Pattern code: edwaqwaa

Converts a number into a Float tag. These seem similar to Doubles, albeit with less precision.


ArrowNature's Revenge

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—


Suffering (??? → ???)

Your browser does not support visualizing patterns. Pattern code: daadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaadaadaddaddaadaddaadaadaddaddaadaddaddaadaddaadaadadda

How could one even begin to draw this?


Mindsplice StaffStaffcasting Patterns

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.


Lani's Greater Gambit (∀αβ. α, [α → β] → β)

Your browser does not support visualizing patterns. Pattern code: wwwwwaqqqqqeaqeaeaeaeaeq

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?


Lani's Lesser Gambit ([? → ?] →)

Your browser does not support visualizing patterns. Pattern code: wwwaqqqqqeaqeaeaeaeaeq

Coerces my staff to cast a Hex. The hex uses the stack of the staff itself, but keeps the outer environment's ravenmind.


StringStrings: An Addendum

For some strange reason, I feel the need to document this pattern in a separate chapter, despite its resemblance to Whisper Reflection — something about "mods shouldn't modify other mods' entries" and all that.


Murmur Reflection (→ str)

Your browser does not support visualizing patterns. Pattern code: wwaqwa

Adds the phrase on the tip of my tongue to the stack, regardless of whether I intend to say it.