Asynchronous Hexes
As part of their nature, Hexes evaluate in their entirety instantly. To delay Hexes, Nature has devised a quite the whimsical solution: a cassette tape that must be crafted and then "consumed". Each Hex I request to delay takes up one cassette "slot" until it fires. These cassettes slots can be viewed when casting with a staff and I can simply click them to abort the Hex.
Click to show recipes Click to hide recipes
Cassette






After crafting it by plating a music disc with a hefty amount of charged amethyst to facilitate the assimilation, I can consume it to add it to my mind's collection. I can only have six cassettes at a time and any more eaten will simply be wasted.
Enqueue (list, number, any →)
Enqueues a Hex to cast after that many twentieths of a second. It takes an iota to use as the label for the cassette.
The label iota is used to distinguish cassettes from each other and only the first 32 characters are kept. Enqueuing two Hexes with the same label overwrites the older one. If I attempt to enqueue more Hexes than I have cassettes, I incur the Parallel Processing mishap which kills all my currently active cassettes.
Ibra oniki ra. QUINIO QUINIO QUINIO QUINIO alef a ra.
Once a Hex has been enqueued, I can use my staff to see all the cassettes I have eaten. Queued Hexes are represented as inserted cassettes with their label rendered to the side, and by pressing an cassette, I can cancel the corresponding Hex.
Dying also forcibly kills all of my cassettes so I can rest easy that I will not trap myself in an endless death cycle.
If a Hex casts a near-identical copy of itself, a phenomenon emerges that ancient Hexcasters call a daemon, which allow for passive Hexcasting. Study into this branch of Hexcasting seems limited and I shall be careful if I want to delve in: this type of casting uses exclusively the media from my inventory and if left unchecked, rapid automated casting can easily drain all my media and with nothing else to consume, my life.
Dequeue (any →)
I can also automate killing cassettes with this pattern. It takes an iota and dequeues the cassette with that label if it exists.
Threading Reflection II (→ number)
Pushes the number of non-busy cassette slots that I currently have.
Program Purification (any → null/list of patterns)
Pushes null if I do not have an active cassette with that label, or the cassette's Hex if I do. I hear rumors of this being used for iota storage and passing information between Hexes.
Program Purification II (any → null/number)
Pushes null if I do not have an active cassette with that label, or how many twentieths of a second until that cassette fires if I do.
I shall also note that rapidly changing cassette names (for example a cassette that enqueues itself with a different name) may be difficult to terminate. I can always resort to Disqueue in such cases.