Merge branch 'main' into arbitrary-brainsweeps

Keep up to date with main
This commit is contained in:
petrak@ 2022-12-28 13:33:15 -05:00
commit 2acf7920b5
6 changed files with 79 additions and 42 deletions

View file

@ -113,7 +113,11 @@ class CastingHarness private constructor(
next.evaluate(continuation.next, world, this) next.evaluate(continuation.next, world, this)
} catch (mishap: Mishap) { } catch (mishap: Mishap) {
val pattern = getPatternForFrame(next) val pattern = getPatternForFrame(next)
val operator = getOperatorForFrame(next, world) val operator = try {
getOperatorForFrame(next, world)
} catch (e: Throwable) {
null
}
CastResult( CastResult(
continuation, continuation,
null, null,
@ -192,6 +196,11 @@ class CastingHarness private constructor(
) )
} }
} catch (mishap: Mishap) { } catch (mishap: Mishap) {
val operator = try {
getOperatorForPattern(iota, world)
} catch (e: Throwable) {
null
}
return CastResult( return CastResult(
continuation, continuation,
null, null,
@ -201,7 +210,7 @@ class CastingHarness private constructor(
mishap, mishap,
Mishap.Context( Mishap.Context(
(iota as? PatternIota)?.pattern ?: HexPattern(HexDir.WEST), (iota as? PatternIota)?.pattern ?: HexPattern(HexDir.WEST),
getOperatorForPattern(iota, world) operator
) )
) )
), ),
@ -210,6 +219,11 @@ class CastingHarness private constructor(
} catch (exception: Exception) { } catch (exception: Exception) {
// This means something very bad has happened // This means something very bad has happened
exception.printStackTrace() exception.printStackTrace()
val operator = try {
getOperatorForPattern(iota, world)
} catch (e: Throwable) {
null
}
return CastResult( return CastResult(
continuation, continuation,
null, null,
@ -219,7 +233,7 @@ class CastingHarness private constructor(
MishapError(exception), MishapError(exception),
Mishap.Context( Mishap.Context(
(iota as? PatternIota)?.pattern ?: HexPattern(HexDir.WEST), (iota as? PatternIota)?.pattern ?: HexPattern(HexDir.WEST),
getOperatorForPattern(iota, world) operator
) )
) )
), ),

View file

@ -19,7 +19,7 @@ object OpEval : Action {
ravenmind: Iota?, ravenmind: Iota?,
ctx: CastingContext ctx: CastingContext
): OperationResult { ): OperationResult {
val datum = stack.getOrElse(0) { throw MishapNotEnoughArgs(1, 0) } val datum = stack.removeLastOrNull() ?: throw MishapNotEnoughArgs(1, 0)
val instrs = evaluatable(datum, 0) val instrs = evaluatable(datum, 0)
instrs.ifRight { instrs.ifRight {

View file

@ -4,9 +4,12 @@ import at.petrak.hexcasting.api.spell.Action
import at.petrak.hexcasting.api.spell.OperationResult import at.petrak.hexcasting.api.spell.OperationResult
import at.petrak.hexcasting.api.spell.casting.CastingContext import at.petrak.hexcasting.api.spell.casting.CastingContext
import at.petrak.hexcasting.api.spell.casting.eval.SpellContinuation import at.petrak.hexcasting.api.spell.casting.eval.SpellContinuation
import at.petrak.hexcasting.api.spell.getPositiveIntUnderInclusive import at.petrak.hexcasting.api.spell.iota.DoubleIota
import at.petrak.hexcasting.api.spell.iota.Iota import at.petrak.hexcasting.api.spell.iota.Iota
import at.petrak.hexcasting.api.spell.mishaps.MishapInvalidIota
import at.petrak.hexcasting.api.spell.mishaps.MishapNotEnoughArgs import at.petrak.hexcasting.api.spell.mishaps.MishapNotEnoughArgs
import kotlin.math.abs
import kotlin.math.roundToInt
object OpFisherman : Action { object OpFisherman : Action {
override fun operate( override fun operate(
@ -18,9 +21,21 @@ object OpFisherman : Action {
if (stack.size < 2) if (stack.size < 2)
throw MishapNotEnoughArgs(2, stack.size) throw MishapNotEnoughArgs(2, stack.size)
val depth = stack.getPositiveIntUnderInclusive(stack.lastIndex, stack.size - 1) val depth = let {
val x = stack.last()
val maxIdx = stack.size - 1
if (x is DoubleIota) {
val double = x.double
val rounded = double.roundToInt()
if (abs(double - rounded) <= DoubleIota.TOLERANCE && rounded in 1..maxIdx) {
return@let rounded
}
}
throw MishapInvalidIota.of(x, 0, "double.between", 1, maxIdx)
}
stack.removeLast() stack.removeLast()
val fish = stack.removeAt(stack.size - 1 - depth) val fish = stack.removeAt(stack.size - depth)
stack.add(fish) stack.add(fish)
return OperationResult(continuation, stack, ravenmind, listOf()) return OperationResult(continuation, stack, ravenmind, listOf())

View file

@ -226,16 +226,16 @@
"advancement.hexcasting:opened_eyes.desc": "Have nature take a piece of your mind in payment for a hex. What might happen if you let it have more?", "advancement.hexcasting:opened_eyes.desc": "Have nature take a piece of your mind in payment for a hex. What might happen if you let it have more?",
"advancement.hexcasting:lore": "Hexcasting Lore", "advancement.hexcasting:lore": "Hexcasting Lore",
"advancement.hexcasting:lore.desc": "Read a Lore Fragment", "advancement.hexcasting:lore.desc": "Read a Lore Fragment",
"advancement.hexcasting:lore/terabithia1": "Terabithia Steles", "advancement.hexcasting:lore/terabithia1": "Cardamom Steles #1",
"advancement.hexcasting:lore/terabithia1.desc": "Letter from Terabithia Steles to Her Father, #1", "advancement.hexcasting:lore/terabithia1.desc": "Letter from Cardamom Steles to Her Father, #1",
"advancement.hexcasting:lore/terabithia2": "Terabithia Steles", "advancement.hexcasting:lore/terabithia2": "Cardamom Steles #2",
"advancement.hexcasting:lore/terabithia2.desc": "Letter from Terabithia Steles to Her Father, #2", "advancement.hexcasting:lore/terabithia2.desc": "Letter from Cardamom Steles to Her Father, #2",
"advancement.hexcasting:lore/terabithia3": "Terabithia Steles", "advancement.hexcasting:lore/terabithia3": "Cardamom Steles #3",
"advancement.hexcasting:lore/terabithia3.desc": "Letter from Terabithia Steles to Her Father, #3, 1/2", "advancement.hexcasting:lore/terabithia3.desc": "Letter from Cardamom Steles to Her Father, #3, 1/2",
"advancement.hexcasting:lore/terabithia4": "Terabithia Steles", "advancement.hexcasting:lore/terabithia4": "Cardamom Steles #3 pt2",
"advancement.hexcasting:lore/terabithia4.desc": "Letter from Terabithia Steles to Her Father, #3, 2/2", "advancement.hexcasting:lore/terabithia4.desc": "Letter from Cardamom Steles to Her Father, #3, 2/2",
"advancement.hexcasting:lore/terabithia5": "Terabithia Steles", "advancement.hexcasting:lore/terabithia5": "Cardamom Steles #4",
"advancement.hexcasting:lore/terabithia5.desc": "Letter from Terabithia Steles to Her Father, #4", "advancement.hexcasting:lore/terabithia5.desc": "Letter from Cardamom Steles to Her Father, #4",
"advancement.hexcasting:lore/experiment1": "Wooleye Instance Notes", "advancement.hexcasting:lore/experiment1": "Wooleye Instance Notes",
"advancement.hexcasting:lore/experiment2": "Wooleye Interview Logs", "advancement.hexcasting:lore/experiment2": "Wooleye Interview Logs",
"advancement.hexcasting:lore/inventory": "Restoration Log 72", "advancement.hexcasting:lore/inventory": "Restoration Log 72",
@ -948,6 +948,7 @@
"hexcasting.page.stackmanip.over": "Copy the second-to-last iota of the stack to the top. [0, 1] becomes [0, 1, 0].", "hexcasting.page.stackmanip.over": "Copy the second-to-last iota of the stack to the top. [0, 1] becomes [0, 1, 0].",
"hexcasting.page.stackmanip.tuck": "Copy the top iota of the stack, then put it under the second iota. [0, 1] becomes [1, 0, 1].", "hexcasting.page.stackmanip.tuck": "Copy the top iota of the stack, then put it under the second iota. [0, 1] becomes [1, 0, 1].",
"hexcasting.page.stackmanip.2dup": "Copy the top two iotas of the stack. [0, 1] becomes [0, 1, 0, 1].", "hexcasting.page.stackmanip.2dup": "Copy the top two iotas of the stack. [0, 1] becomes [0, 1, 0, 1].",
"hexcasting.page.stackmanip.stack_len": "Pushes the size of the stack as a number to the top of the stack. (For example, a stack of [0, 1] will become [0, 1, 2].)",
"hexcasting.page.stackmanip.duplicate_n": "Removes the number at the top of the stack, then copies the top iota of the stack that number of times. (A count of 2 results in two of the iota on the stack, not three.)", "hexcasting.page.stackmanip.duplicate_n": "Removes the number at the top of the stack, then copies the top iota of the stack that number of times. (A count of 2 results in two of the iota on the stack, not three.)",
"hexcasting.page.stackmanip.fisherman": "Grabs the element in the stack indexed by the number and brings it to the top.", "hexcasting.page.stackmanip.fisherman": "Grabs the element in the stack indexed by the number and brings it to the top.",
"hexcasting.page.stackmanip.fisherman/copy": "Like $(action)Fisherman's Gambit/$, but instead of moving the iota, copies it.", "hexcasting.page.stackmanip.fisherman/copy": "Like $(action)Fisherman's Gambit/$, but instead of moving the iota, copies it.",
@ -1142,27 +1143,27 @@
"hexcasting.entry.lore": "Lore", "hexcasting.entry.lore": "Lore",
"hexcasting.entry.lore.desc": "I have uncovered some letters and text not of direct relevance to my art. But, I think I may be able to divine some of the history of the world from these. Let me see...", "hexcasting.entry.lore.desc": "I have uncovered some letters and text not of direct relevance to my art. But, I think I may be able to divine some of the history of the world from these. Let me see...",
"hexcasting.entry.lore.terabithia1": "Terabithia Steles, #1", "hexcasting.entry.lore.terabithia1": "Cardamom Steles, #1",
"hexcasting.page.lore.terabithia1.1": "$(italic)Full title: Letter from Terabithia Steles to Her Father, #1/$$(br2)Dear Papa,$(br)Every day it seems I have more reason to thank you for saving up to send me to the Grand Library. The amount I am learning is incredible! I feel I don't have the skill with words needed to express myself fully... it is wonderful to be here.", "hexcasting.page.lore.terabithia1.1": "$(italic)Full title: Letter from Cardamom Steles to Her Father, #1/$$(br2)Dear Papa,$(br)Every day it seems I have more reason to thank you for saving up to send me to the Grand Library. The amount I am learning is incredible! I feel I don't have the skill with words needed to express myself fully... it is wonderful to be here.",
"hexcasting.page.lore.terabithia1.2": "I sit in the main dome as I write this. It's maintained by the Hexcasting Corps; they have some sort of peculiar mechanism at the top that captures the stray thought energy as it leaks out from the desks and desks of hard-working students, as I understand it. One of my friends in the dormitory, Amanita, is studying the subject, and oh how she loves to explain it to me at length, although I confess I do not understand it very well.", "hexcasting.page.lore.terabithia1.2": "I sit in the main dome as I write this. It's maintained by the Hexcasting Corps; they have some sort of peculiar mechanism at the top that captures the stray thought energy as it leaks out from the desks and desks of hard-working students, as I understand it. One of my friends in the dormitory, Amanita, is studying the subject, and oh how she loves to explain it to me at length, although I confess I do not understand it very well.",
"hexcasting.page.lore.terabithia1.3": "The way I understand it, our processes of thought--the intangible mechanisms by which I move my pen and by which you read this letter--are not completely efficient. A small amount of that energy is released into the environment, like how a wagon's axle is hot to the touch after it has been turning for a while. This spare energy is called \"media.\" One person's spare media is trifiling, but the hundreds of thinking people in the main dome have a sort of multiplicative effect, and combined with some sort of ingenious mechanism, it can be solidified into a sort of purple crystal.", "hexcasting.page.lore.terabithia1.3": "The way I understand it, our processes of thought--the intangible mechanisms by which I move my pen and by which you read this letter--are not completely efficient. A small amount of that energy is released into the environment, like how a wagon's axle is hot to the touch after it has been turning for a while. This spare energy is called \"media.\" One person's spare media is trifiling, but the hundreds of thinking people in the main dome have a sort of multiplicative effect, and combined with some sort of ingenious mechanism, it can be solidified into a sort of purple crystal.",
"hexcasting.page.lore.terabithia1.4": "But that's enough about her studies. I returned from my first expedition with the Geology Corps today! My apologies for not sending a letter before I left; the date crept up on me. We ventured into a crack in the earth to the east of the Grand and spent the night camping under the rock and soil. We kept to well-lit and well-traveled areas of the cave, of course, and in all honesty it was likely safer in there than the night surface, but oh how I was scared!", "hexcasting.page.lore.terabithia1.4": "But that's enough about her studies. I returned from my first expedition with the Geology Corps today! My apologies for not sending a letter before I left; the date crept up on me. We ventured into a crack in the earth to the east of the Grand and spent the night camping under the rock and soil. We kept to well-lit and well-traveled areas of the cave, of course, and in all honesty it was likely safer in there than the night surface, but oh how I was scared!",
"hexcasting.page.lore.terabithia1.5": "Fortunately the night passed without mishap, and we proceeded deeper into the cave for our examination of the local veins of ore. We were looking for trace veins of a purple crystal called \"amethyst,\" which supposedly occurs in small amounts deep in the rock. We did not find anything, sadly, and returned to the sunlit surface empty-handed.", "hexcasting.page.lore.terabithia1.5": "Fortunately the night passed without mishap, and we proceeded deeper into the cave for our examination of the local veins of ore. We were looking for trace veins of a purple crystal called \"amethyst,\" which supposedly occurs in small amounts deep in the rock. We did not find anything, sadly, and returned to the sunlit surface empty-handed.",
"hexcasting.page.lore.terabithia1.6": "Come to think of it, the description of this \"amethyst\" I now realize closely matches those crystals of media Amanita speaks of. Imagine if these nuggets of thought occurred naturally under the ground! I can't imagine why that might happen, though... ", "hexcasting.page.lore.terabithia1.6": "Come to think of it, the description of this \"amethyst\" I now realize closely matches those crystals of media Amanita speaks of. Imagine if these nuggets of thought occurred naturally under the ground! I can't imagine why that might happen, though... ",
"hexcasting.page.lore.terabithia1.7": "As a student, I am entitled to send one letter by Akashic post every three months, free of charge. Unfortunately, you know how thin my moneybags are ... so I am afraid this offer is the only method I may communicate with you. I will of course appreciate immensely if you manage to scrounge together the money to send a letter back, but it seems our communications may be limited. I hate to be cut off from you so, but the skills I gain here will be more than repayment. Imagine, I will be the first member of our family to be anything other than a farmer!", "hexcasting.page.lore.terabithia1.7": "As a student, I am entitled to send one letter by Akashic post every three months, free of charge. Unfortunately, you know how thin my moneybags are ... so I am afraid this offer is the only method I may communicate with you. I will of course appreciate immensely if you manage to scrounge together the money to send a letter back, but it seems our communications may be limited. I hate to be cut off from you so, but the skills I gain here will be more than repayment. Imagine, I will be the first member of our family to be anything other than a farmer!",
"hexcasting.page.lore.terabithia1.8": "So, I suppose I will write again in three months' time.$(br2)Yours,$(br)-- Terabithia Steles", "hexcasting.page.lore.terabithia1.8": "So, I suppose I will write again in three months' time.$(br2)Yours,$(br)-- Cardamom Steles",
"hexcasting.entry.lore.terabithia2": "Terabithia Steles, #2", "hexcasting.entry.lore.terabithia2": "Cardamom Steles, #2",
"hexcasting.page.lore.terabithia2.1": "$(italic)Full title: Letter from Terabithia Steles to Her Father, #2/$$(br2)Dear Papa,$(br)... Goodness, what an ordeal it is to try to summarize the last three months into a short letter. Such a cruel task set before me by this miracle I receive entirely for free! Woe is me.", "hexcasting.page.lore.terabithia2.1": "$(italic)Full title: Letter from Cardamom Steles to Her Father, #2/$$(br2)Dear Papa,$(br)... Goodness, what an ordeal it is to try to summarize the last three months into a short letter. Such a cruel task set before me by this miracle I receive entirely for free! Woe is me.",
"hexcasting.page.lore.terabithia2.2": "My studies with the Geology Corps have been progressing smoothly. We have gone on more expeditions, deeper into the earth, to where the smooth gray stone makes way to a hard, flaky slate. It creates such an awful, choking dust under your feet... it's incredible what hostility there is below all of our feet all the time, even disregarding the creatures of the dark. (I have had one or two encounters with them, but I know how you shudder to think of me having to fight for my life, so I will not write of them.)", "hexcasting.page.lore.terabithia2.2": "My studies with the Geology Corps have been progressing smoothly. We have gone on more expeditions, deeper into the earth, to where the smooth gray stone makes way to a hard, flaky slate. It creates such an awful, choking dust under your feet... it's incredible what hostility there is below all of our feet all the time, even disregarding the creatures of the dark. (I have had one or two encounters with them, but I know how you shudder to think of me having to fight for my life, so I will not write of them.)",
"hexcasting.page.lore.terabithia2.3": "We did manage to find some of this amethyst, however. There was a small vein with a few trace crystals on one of our expeditions. We were under strict instructions to keep none of them and turn them in to our Corps prefect immediately. I find the whole affair rather ridiculous; they treat it like some matter of enormous importance and secrecy, and yet have a group of a dozen students, all barely six months at the Grand Library, trying to excavate barely ten drams of the stuff with twelve prospector's picks in a square foot...", "hexcasting.page.lore.terabithia2.3": "We did manage to find some of this amethyst, however. There was a small vein with a few trace crystals on one of our expeditions. We were under strict instructions to keep none of them and turn them in to our Corps prefect immediately. I find the whole affair rather ridiculous; they treat it like some matter of enormous importance and secrecy, and yet have a group of a dozen students, all barely six months at the Grand Library, trying to excavate barely ten drams of the stuff with twelve prospector's picks in a square foot...",
"hexcasting.page.lore.terabithia2.4": "I cannot imagine for what purpose, either. A librarian pointed me to an encyclopedia of gems, and amethyst seems to have next to no purpose; it's used for certain specialty types of glass and lenses, of all things.$(br2)If I were to speculate, I would guess that these amethyst crystals and the media they so resemble are one and the same, as I wrote of last time.", "hexcasting.page.lore.terabithia2.4": "I cannot imagine for what purpose, either. A librarian pointed me to an encyclopedia of gems, and amethyst seems to have next to no purpose; it's used for certain specialty types of glass and lenses, of all things.$(br2)If I were to speculate, I would guess that these amethyst crystals and the media they so resemble are one and the same, as I wrote of last time.",
"hexcasting.page.lore.terabithia2.5": "If this is true, the secrecy, not to mention the prefect's aversion to questioning, may be because this is an original piece of research the Grand Library is not eager to let into the hands of enemy factions.$(br2)However, this theory does not sit quite right with me. The amethyst I handled in the cave and the crystals of media Amanita has shown to me do seem quite similar, but not identical. I would like to see them side-by-side to be sure, but media has a peculiar buzzing or rumbling feel beneath the fingers that amethyst does not.", "hexcasting.page.lore.terabithia2.5": "If this is true, the secrecy, not to mention the prefect's aversion to questioning, may be because this is an original piece of research the Grand Library is not eager to let into the hands of enemy factions.$(br2)However, this theory does not sit quite right with me. The amethyst I handled in the cave and the crystals of media Amanita has shown to me do seem quite similar, but not identical. I would like to see them side-by-side to be sure, but media has a peculiar buzzing or rumbling feel beneath the fingers that amethyst does not.",
"hexcasting.page.lore.terabithia2.6": "It is quite possible I was unable to sense it on the amethyst in the cave due to the stress of being undergound-- my hands were shaking the one time I managed to touch some, and the feeling is very light --but it does not seem the same to me. The light reflects slightly differently.$(br2)I suppose if I ever manage to get my hands on a crystal of amethyst outside of a cave, I will ask Amanita to see if she can cast a spell with it. Every time we meet she seems to have some new fantastic trick.", "hexcasting.page.lore.terabithia2.6": "It is quite possible I was unable to sense it on the amethyst in the cave due to the stress of being undergound-- my hands were shaking the one time I managed to touch some, and the feeling is very light --but it does not seem the same to me. The light reflects slightly differently.$(br2)I suppose if I ever manage to get my hands on a crystal of amethyst outside of a cave, I will ask Amanita to see if she can cast a spell with it. Every time we meet she seems to have some new fantastic trick.",
"hexcasting.page.lore.terabithia2.7": "Just last week she suspended me in the air supported by nothing at all! It is an immensely strange feeling to have your body tingling and lighter than air with your clothing still the same weight... I am just glad she tugged me over my bed before the effect ran out.$(br2)Yours,$(br)-- Terabithia Steles", "hexcasting.page.lore.terabithia2.7": "Just last week she suspended me in the air supported by nothing at all! It is an immensely strange feeling to have your body tingling and lighter than air with your clothing still the same weight... I am just glad she tugged me over my bed before the effect ran out.$(br2)Yours,$(br)-- Cardamom Steles",
"hexcasting.entry.lore.terabithia3": "Terabithia Steles, #3, 1/2", "hexcasting.entry.lore.terabithia3": "Cardamom Steles, #3, 1/2",
"hexcasting.page.lore.terabithia3.1": "$(italic)Full title: Letter from Terabithia Steles to her father, #3, part 1/2/$$(br2)Dear Papa,$(br)Two very peculiar things have happened since I last wrote.$(br2)Firstly, the professor in charge of the entry-level Hexcasting Corps students has disappeared. Nobody knows where he has gone. His office and living quarters were found locked, but still in their usual state of disarray.", "hexcasting.page.lore.terabithia3.1": "$(italic)Full title: Letter from Cardamom Steles to her father, #3, part 1/2/$$(br2)Dear Papa,$(br)Two very peculiar things have happened since I last wrote.$(br2)Firstly, the professor in charge of the entry-level Hexcasting Corps students has disappeared. Nobody knows where he has gone. His office and living quarters were found locked, but still in their usual state of disarray.",
"hexcasting.page.lore.terabithia3.2": "Even more peculiarly, any attempts by the students of the Grand to rouse the administrative portions of the gnarled bureaucracy have been very firmly rejected. Even other professors seem reluctant to talk about him.$(br2)As you might imagine, Amanita is sorely distressed. Whatever replacement professors the Grand managed to dredge up have none of the old professor's tact or skill with beginners.", "hexcasting.page.lore.terabithia3.2": "Even more peculiarly, any attempts by the students of the Grand to rouse the administrative portions of the gnarled bureaucracy have been very firmly rejected. Even other professors seem reluctant to talk about him.$(br2)As you might imagine, Amanita is sorely distressed. Whatever replacement professors the Grand managed to dredge up have none of the old professor's tact or skill with beginners.",
"hexcasting.page.lore.terabithia3.3": "But amazingly, that is not the stranger of the two things I have to tell you. The most horrendous thing I hope to ever experience happened on another trip out with the Geology Corps. This time, we were due for an expedition near a village.", "hexcasting.page.lore.terabithia3.3": "But amazingly, that is not the stranger of the two things I have to tell you. The most horrendous thing I hope to ever experience happened on another trip out with the Geology Corps. This time, we were due for an expedition near a village.",
"hexcasting.page.lore.terabithia3.4": "Usually when we do such a thing, there is a long process of communication with the mayor or elder of the village to ensure we have permission and establish boundaries on where we are allowed to go and what we are allowed to do. But on this expedition, there was very little of that; we were notified where we were going by a prefect of the Hexcasting Corps scarcely two days before we left.", "hexcasting.page.lore.terabithia3.4": "Usually when we do such a thing, there is a long process of communication with the mayor or elder of the village to ensure we have permission and establish boundaries on where we are allowed to go and what we are allowed to do. But on this expedition, there was very little of that; we were notified where we were going by a prefect of the Hexcasting Corps scarcely two days before we left.",
@ -1173,10 +1174,10 @@
"hexcasting.page.lore.terabithia3.9": "I hesitate to say \"important,\" but that's the best I can think of. It had a certain ... gravitas, like the dark, sunken X in its surface held some sacred meaning. Whatever the reason we were under strict instructions not to touch them. Occasionally a misplaced pickaxe would shatter one, and the student responsible would get quite the earful. Although the labor was hard and took most of my attention, I couldn't help but notice how ... lucid I felt. It was a strange mix of feelings: I felt incredibly clear-headed, but I also felt if I stopped to examine the feeling I might never stop.", "hexcasting.page.lore.terabithia3.9": "I hesitate to say \"important,\" but that's the best I can think of. It had a certain ... gravitas, like the dark, sunken X in its surface held some sacred meaning. Whatever the reason we were under strict instructions not to touch them. Occasionally a misplaced pickaxe would shatter one, and the student responsible would get quite the earful. Although the labor was hard and took most of my attention, I couldn't help but notice how ... lucid I felt. It was a strange mix of feelings: I felt incredibly clear-headed, but I also felt if I stopped to examine the feeling I might never stop.",
"hexcasting.page.lore.terabithia3.10": "It was like each breath in erected a friendly signpost in my head promising the way forward, pointing directly down a steep cliff. I shook my head and immersed myself in the work of mining, which seemed to stave off the signposts.$(br2)I did manage, however, to hide a shard of the crystal in my knapsack.$(br2)We spent nearly the whole day mining, excavating most of the crystal by the time the prefects' chronometer said the sun would set soon.", "hexcasting.page.lore.terabithia3.10": "It was like each breath in erected a friendly signpost in my head promising the way forward, pointing directly down a steep cliff. I shook my head and immersed myself in the work of mining, which seemed to stave off the signposts.$(br2)I did manage, however, to hide a shard of the crystal in my knapsack.$(br2)We spent nearly the whole day mining, excavating most of the crystal by the time the prefects' chronometer said the sun would set soon.",
"hexcasting.page.lore.terabithia3.11": "As we left, I couldn't help but notice that on the surfaces of those dark, scored places we left unmined, there seemed to be the faintest buds of new crystal, like they were somehow growing out of them. Everything I had learned about the geology of crystals said they took thousands of years to grow, but here there was new growth in less than a day. I suppose the prefects' warnings against breaking those spots were warranted, at least.", "hexcasting.page.lore.terabithia3.11": "As we left, I couldn't help but notice that on the surfaces of those dark, scored places we left unmined, there seemed to be the faintest buds of new crystal, like they were somehow growing out of them. Everything I had learned about the geology of crystals said they took thousands of years to grow, but here there was new growth in less than a day. I suppose the prefects' warnings against breaking those spots were warranted, at least.",
"hexcasting.page.lore.terabithia3.12": "Our journey back to the surface was uneventful, and we got back to our tents just as the sun was setting-- My apologies, I am nearly out of paper for this letter. There's only so much you can write on one Akashic letter ... This tale is worth purchasing another letter for. I'll send them both at once, so they should arrive together.$(br2)Yours,$(br)-- Terabithia Steles", "hexcasting.page.lore.terabithia3.12": "Our journey back to the surface was uneventful, and we got back to our tents just as the sun was setting-- My apologies, I am nearly out of paper for this letter. There's only so much you can write on one Akashic letter ... This tale is worth purchasing another letter for. I'll send them both at once, so they should arrive together.$(br2)Yours,$(br)-- Cardamom Steles",
"hexcasting.entry.lore.terabithia4": "Terabithia Steles, #3, 2/2", "hexcasting.entry.lore.terabithia4": "Cardamom Steles, #3, 2/2",
"hexcasting.page.lore.terabithia4.1": "$(italic)Full title: Letter from Terabithia Steles to her father, #3, part 2/2/$$(br2)Dear Papa,$(br)As I was saying, I was running out of paper to write my story, so the rest of it is in this letter. We made it back to camp just as the sun was setting. And that night was the most horrible event of the whole strange outing.", "hexcasting.page.lore.terabithia4.1": "$(italic)Full title: Letter from Cardamom Steles to her father, #3, part 2/2/$$(br2)Dear Papa,$(br)As I was saying, I was running out of paper to write my story, so the rest of it is in this letter. We made it back to camp just as the sun was setting. And that night was the most horrible event of the whole strange outing.",
"hexcasting.page.lore.terabithia4.2": "I had gotten up in the middle of the night to relieve myself. The moon was covered with clouds, and I confess I got lost in the winds of the forest and could not find the way back to the camp. Fearing the monsters of the night, I decided I would find my way to the village and see if I could find a bed there. At the least, I would be protected there.", "hexcasting.page.lore.terabithia4.2": "I had gotten up in the middle of the night to relieve myself. The moon was covered with clouds, and I confess I got lost in the winds of the forest and could not find the way back to the camp. Fearing the monsters of the night, I decided I would find my way to the village and see if I could find a bed there. At the least, I would be protected there.",
"hexcasting.page.lore.terabithia4.3": "The village was easy enough to find, though there was very little sound. Even this late at night I would expect the inn to be, if not bustling, at least not silent. But peeking through the inn door I saw absolutely nobody.$(br2)I knocked on the door of one of the houses to no response. The next two houses, too, seemed completely empty.", "hexcasting.page.lore.terabithia4.3": "The village was easy enough to find, though there was very little sound. Even this late at night I would expect the inn to be, if not bustling, at least not silent. But peeking through the inn door I saw absolutely nobody.$(br2)I knocked on the door of one of the houses to no response. The next two houses, too, seemed completely empty.",
"hexcasting.page.lore.terabithia4.4": "My pulse started to rise, and I resolved to enter the next house. I figured whoever might be inside would be understanding of their rest being disturbed. At the least, hearing another voice would have been reassuring, even if they didn't let me stay the night under their roof.$(br2)The house was very small, barely more than a cartographer's table and a bed. I could see there was someone in the bed, and I tried to reassure myself that everyone in the village was just deeply asleep as I turned to leave.", "hexcasting.page.lore.terabithia4.4": "My pulse started to rise, and I resolved to enter the next house. I figured whoever might be inside would be understanding of their rest being disturbed. At the least, hearing another voice would have been reassuring, even if they didn't let me stay the night under their roof.$(br2)The house was very small, barely more than a cartographer's table and a bed. I could see there was someone in the bed, and I tried to reassure myself that everyone in the village was just deeply asleep as I turned to leave.",
@ -1185,10 +1186,10 @@
"hexcasting.page.lore.terabithia4.7": "I ran. In the light of the newly-revealed moon I caught glimpses of other townspeople through windows, and they were all warped and simplified as the first $(italic)thing/$ I had seen. I sprinted into the darkness of the forest, away from those terrible, terrible animal eyes in those distorted faces.$(br2)The camp was easier to find now that I could see in the moonlight. No-one seemed to have noticed my prolonged absence, thankfully. I crawled back into my bedroll and did my very best to forget the whole night.", "hexcasting.page.lore.terabithia4.7": "I ran. In the light of the newly-revealed moon I caught glimpses of other townspeople through windows, and they were all warped and simplified as the first $(italic)thing/$ I had seen. I sprinted into the darkness of the forest, away from those terrible, terrible animal eyes in those distorted faces.$(br2)The camp was easier to find now that I could see in the moonlight. No-one seemed to have noticed my prolonged absence, thankfully. I crawled back into my bedroll and did my very best to forget the whole night.",
"hexcasting.page.lore.terabithia4.8": "As you can tell from this letter, I did not do a very good job. That warped visage still haunts my dreams. I shudder to think that it once might have been human.$(br2)After we got back to the Grand I showed the shard of crystal I had smuggled out to Amanita. She confirmed my suspicions: it is definitely a crystal of media. What an enormous geode full of it is doing underground, though, is beyond her.", "hexcasting.page.lore.terabithia4.8": "As you can tell from this letter, I did not do a very good job. That warped visage still haunts my dreams. I shudder to think that it once might have been human.$(br2)After we got back to the Grand I showed the shard of crystal I had smuggled out to Amanita. She confirmed my suspicions: it is definitely a crystal of media. What an enormous geode full of it is doing underground, though, is beyond her.",
"hexcasting.page.lore.terabithia4.9": "She also mentioned something interesting: apparently media can be used in a similar way to true amethyst in those niche glasses I mentioned a few letters ago. The physical manner in which they both crystallise happens to be nearly identical, and it has nothing to do with media's magical properties, or so she says.$(br2)I chose not to tell her of the village full of monsters.", "hexcasting.page.lore.terabithia4.9": "She also mentioned something interesting: apparently media can be used in a similar way to true amethyst in those niche glasses I mentioned a few letters ago. The physical manner in which they both crystallise happens to be nearly identical, and it has nothing to do with media's magical properties, or so she says.$(br2)I chose not to tell her of the village full of monsters.",
"hexcasting.page.lore.terabithia4.10": "I know how tight money is for you, and how expensive it is to send a letter all the way back to the Grand, but I beg of you, please send a word of advice back. I am greatly distraught, and reading your words would do me much good.$(br2)Yours,$(br)-- Terabithia Steles", "hexcasting.page.lore.terabithia4.10": "I know how tight money is for you, and how expensive it is to send a letter all the way back to the Grand, but I beg of you, please send a word of advice back. I am greatly distraught, and reading your words would do me much good.$(br2)Yours,$(br)-- Cardamom Steles",
"hexcasting.entry.lore.terabithia5": "Terabithia Steles, #4", "hexcasting.entry.lore.terabithia5": "Cardamom Steles, #4",
"hexcasting.page.lore.terabithia5.1": "$(italic)Full title: Letter from Terabithia Steles to her father, #4/$$(br2)Amanita has disappeared.$(br2)I don't know where she has gone, Papa. The last I saw her was over dinner, and she had just spoken to someone about the disappearances, and then--", "hexcasting.page.lore.terabithia5.1": "$(italic)Full title: Letter from Cardamom Steles to her father, #4/$$(br2)Amanita has disappeared.$(br2)I don't know where she has gone, Papa. The last I saw her was over dinner, and she had just spoken to someone about the disappearances, and then--",
"hexcasting.page.lore.terabithia5.2": "then-- then she was gone too. And no one speaks of her, and I am so so scared, Papa, do they all know? Everyone must have a friend who's just $(italic)vanished/$, into thin air, into non-being.$(br2)Where did they $(italic)go/$?", "hexcasting.page.lore.terabithia5.2": "then-- then she was gone too. And no one speaks of her, and I am so so scared, Papa, do they all know? Everyone must have a friend who's just $(italic)vanished/$, into thin air, into non-being.$(br2)Where did they $(italic)go/$?",
"hexcasting.page.lore.terabithia5.3": "They keep shutting things down, too-- we haven't been on a trip for the Geology Corps in weeks, all the apparati that collect media in the main dome are gone, the Apothecary Corps haven't been open for months... it's like termites are eating the Grand from the inside, leaving a hollow shell.$(br2)I think they've started scanning the letters, we write too...", "hexcasting.page.lore.terabithia5.3": "They keep shutting things down, too-- we haven't been on a trip for the Geology Corps in weeks, all the apparati that collect media in the main dome are gone, the Apothecary Corps haven't been open for months... it's like termites are eating the Grand from the inside, leaving a hollow shell.$(br2)I think they've started scanning the letters, we write too...",
"hexcasting.page.lore.terabithia5.4": "This letter has taken so much courage to write, and I don't have the courage to tell people myself, but if no one here can hold the knowledge I hope and pray you can send the word out... it's a vain hope for this to spread from somewhere as backwater as Brackenfalls, but please, please, do your best. Remember them, Papa... Amanita Libera, Jasmine Ward, Theodore Cha... please, remember them... and please forgive my cowardice, that I foist the responsibility onto you.", "hexcasting.page.lore.terabithia5.4": "This letter has taken so much courage to write, and I don't have the courage to tell people myself, but if no one here can hold the knowledge I hope and pray you can send the word out... it's a vain hope for this to spread from somewhere as backwater as Brackenfalls, but please, please, do your best. Remember them, Papa... Amanita Libera, Jasmine Ward, Theodore Cha... please, remember them... and please forgive my cowardice, that I foist the responsibility onto you.",
@ -1221,7 +1222,7 @@
"hexcasting.page.lore.experiment2.1": "$(italic)These documents were heavily redacted. I have copied the readable text from them here./$$(br2)Subject #1 \"A.E.\"$(br)Stopped struggling immediately after procedure. Facial expression and limbs slack, but can stand unassisted. When left unattended, absently pantomimes actions commonly done in previous profession (groundskeeping).", "hexcasting.page.lore.experiment2.1": "$(italic)These documents were heavily redacted. I have copied the readable text from them here./$$(br2)Subject #1 \"A.E.\"$(br)Stopped struggling immediately after procedure. Facial expression and limbs slack, but can stand unassisted. When left unattended, absently pantomimes actions commonly done in previous profession (groundskeeping).",
"hexcasting.page.lore.experiment2.2": "Heartrate was very high immediately after procedure, but this is inconclusive due to state of fear immediately before. Resulting bud produced 35 uθ/min.$(br)...$(br)Subject #4 \"P.I.\"$(br)Psychological tests run on P.I. Subject has object permanence, spatial awareness, basic numerical reasoning. Difficulty learning new tasks. $(br2) ...", "hexcasting.page.lore.experiment2.2": "Heartrate was very high immediately after procedure, but this is inconclusive due to state of fear immediately before. Resulting bud produced 35 uθ/min.$(br)...$(br)Subject #4 \"P.I.\"$(br)Psychological tests run on P.I. Subject has object permanence, spatial awareness, basic numerical reasoning. Difficulty learning new tasks. $(br2) ...",
"hexcasting.page.lore.experiment2.3": "Subject #7 \"T.C.\"$(br)Consented to procedure. Similar results several hours after the procedure to other subjects: able to stand, perform simple tasks. $(br2) ...$(br2)Subject #11 \"R.S.\"$(br)Sedated before procedure; dosage such that subject would wake up as procedure occurred...$(br2) ...", "hexcasting.page.lore.experiment2.3": "Subject #7 \"T.C.\"$(br)Consented to procedure. Similar results several hours after the procedure to other subjects: able to stand, perform simple tasks. $(br2) ...$(br2)Subject #11 \"R.S.\"$(br)Sedated before procedure; dosage such that subject would wake up as procedure occurred...$(br2) ...",
"hexcasting.page.lore.experiment2.4": "Subject #23 \"A.L.\"$(br)Ability to speak retained to a greater degree than most subjects; dwindled to broken sentences, then a single word \"tera\" over the course of several hours.$(br2)For further testing: how does the procedure affect previous Hexcasters vs. non-Hexcasters?$(br2) ...", "hexcasting.page.lore.experiment2.4": "Subject #23 \"A.L.\"$(br)Ability to speak retained to a greater degree than most subjects; dwindled to broken sentences, then a single word \"card\" over the course of several hours.$(br2)For further testing: how does the procedure affect previous Hexcasters vs. non-Hexcasters?$(br2) ...",
"hexcasting.entry.interop": "Cross-Mod Compatibility", "hexcasting.entry.interop": "Cross-Mod Compatibility",
"hexcasting.entry.interop.desc": "It appears I have installed some mods Hexcasting interoperates with! I've detailed them here.", "hexcasting.entry.interop.desc": "It appears I have installed some mods Hexcasting interoperates with! I've detailed them here.",

View file

@ -78,6 +78,22 @@
"output": "many", "output": "many",
"text": "hexcasting.page.stackmanip.duplicate_n" "text": "hexcasting.page.stackmanip.duplicate_n"
}, },
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:2dup",
"anchor": "hexcasting:2dup",
"input": "any, any",
"output": "any, any, any, any",
"text": "hexcasting.page.stackmanip.2dup"
},
{
"type": "hexcasting:pattern",
"op_id": "hexcasting:stack_len",
"anchor": "hexcasting:stack_len",
"input": "",
"output": "number",
"text": "hexcasting.page.stackmanip.stack_len"
},
{ {
"type": "hexcasting:pattern", "type": "hexcasting:pattern",
"op_id": "hexcasting:fisherman", "op_id": "hexcasting:fisherman",
@ -137,15 +153,6 @@
"text": "hexcasting.page.stackmanip.swizzle.2", "text": "hexcasting.page.stackmanip.swizzle.2",
"link_text": "hexcasting.page.stackmanip.swizzle.link", "link_text": "hexcasting.page.stackmanip.swizzle.link",
"url": "https://github.com/gamma-delta/HexMod/wiki/Table-of-Lehmer-Codes-for-Swindler's-Gambit" "url": "https://github.com/gamma-delta/HexMod/wiki/Table-of-Lehmer-Codes-for-Swindler's-Gambit"
},
{
"_comment": "i hate that I have to put this here at the end. two-page design bad",
"type": "hexcasting:pattern",
"op_id": "hexcasting:2dup",
"anchor": "hexcasting:2dup",
"input": "any, any",
"output": "any, any, any, any",
"text": "hexcasting.page.stackmanip.2dup"
} }
] ]
} }

View file

@ -10,7 +10,7 @@ jetbrainsAnnotationsVersion=23.0.0
minecraftVersion=1.19.2 minecraftVersion=1.19.2
kotlinVersion=1.7.20 kotlinVersion=1.7.20
modVersion=0.10.2 modVersion=0.10.3
paucalVersion=0.5.0 paucalVersion=0.5.0
patchouliVersion=77 patchouliVersion=77