{
  "item.hexcasting.book": "Hex Notebook",
  "item.hexcasting.wand_oak": "Oak Staff",
  "item.hexcasting.wand_spruce": "Spruce Staff",
  "item.hexcasting.wand_birch": "Birch Staff",
  "item.hexcasting.wand_jungle": "Jungle Staff",
  "item.hexcasting.wand_acacia": "Acacia Staff",
  "item.hexcasting.wand_dark_oak": "Dark Oak Staff",
  "item.hexcasting.wand_crimson": "Crimson Staff",
  "item.hexcasting.wand_warped": "Warped Staff",
  "item.hexcasting.wand_akashic": "Edified Staff",
  "item.hexcasting.focus": "Focus",
  "item.hexcasting.focus.sealed": "Sealed Focus",
  "item.hexcasting.spellbook": "Spellbook",
  "item.hexcasting.cypher": "Cypher",
  "item.hexcasting.trinket": "Trinket",
  "item.hexcasting.artifact": "Artifact",
  "item.hexcasting.battery": "Phial of Media",
  "item.hexcasting.amethyst_dust": "Amethyst Dust",
  "item.hexcasting.charged_amethyst": "Charged Amethyst",
  "item.hexcasting.lens": "Scrying Lens",
  "item.hexcasting.scroll_small": "Small Scroll",
  "item.hexcasting.scroll_small.of": "How did you get this item of %s",
  "item.hexcasting.scroll_small.empty": "Empty Small Scroll",
  "item.hexcasting.scroll_medium": "Medium Scroll",
  "item.hexcasting.scroll_medium.of": "How did you get this item of %s",
  "item.hexcasting.scroll_medium.empty": "Empty Medium Scroll",
  "item.hexcasting.scroll": "Large Scroll",
  "item.hexcasting.scroll.of": "Ancient Scroll of %s",
  "item.hexcasting.scroll.empty": "Empty Large Scroll",
  "item.hexcasting.abacus": "Abacus",
  "item.hexcasting.jeweler_hammer": "Jeweler's Hammer",
  "item.hexcasting.sub_sandwich": "Submarine Sandwich",
  "item.hexcasting.dye_colorizer_white": "White Pigment",
  "item.hexcasting.dye_colorizer_orange": "Orange Pigment",
  "item.hexcasting.dye_colorizer_magenta": "Magenta Pigment",
  "item.hexcasting.dye_colorizer_light_blue": "Light Blue Pigment",
  "item.hexcasting.dye_colorizer_yellow": "Yellow Pigment",
  "item.hexcasting.dye_colorizer_lime": "Lime Pigment",
  "item.hexcasting.dye_colorizer_pink": "Pink Pigment",
  "item.hexcasting.dye_colorizer_gray": "Gray Pigment",
  "item.hexcasting.dye_colorizer_light_gray": "Light Gray Pigment",
  "item.hexcasting.dye_colorizer_cyan": "Cyan Pigment",
  "item.hexcasting.dye_colorizer_purple": "Purple Pigment",
  "item.hexcasting.dye_colorizer_blue": "Blue Pigment",
  "item.hexcasting.dye_colorizer_brown": "Brown Pigment",
  "item.hexcasting.dye_colorizer_green": "Green Pigment",
  "item.hexcasting.dye_colorizer_red": "Red Pigment",
  "item.hexcasting.dye_colorizer_black": "Black Pigment",
  "item.hexcasting.pride_colorizer_agender": "Agender Pigment",
  "item.hexcasting.pride_colorizer_aroace": "Aroace Pigment",
  "item.hexcasting.pride_colorizer_aromantic": "Aromantic Pigment",
  "item.hexcasting.pride_colorizer_asexual": "Asexual Pigment",
  "item.hexcasting.pride_colorizer_bisexual": "Bisexual Pigment",
  "item.hexcasting.pride_colorizer_demiboy": "Demiboy Pigment",
  "item.hexcasting.pride_colorizer_demigirl": "Demigirl Pigment",
  "item.hexcasting.pride_colorizer_gay": "Gay Pigment",
  "item.hexcasting.pride_colorizer_genderfluid": "Genderfluid Pigment",
  "item.hexcasting.pride_colorizer_genderqueer": "Genderqueer Pigment",
  "item.hexcasting.pride_colorizer_intersex": "Intersex Pigment",
  "item.hexcasting.pride_colorizer_lesbian": "Lesbian Pigment",
  "item.hexcasting.pride_colorizer_nonbinary": "Non-Binary Pigment",
  "item.hexcasting.pride_colorizer_pansexual": "Pansexual Pigment",
  "item.hexcasting.pride_colorizer_plural": "Plural Pigment",
  "item.hexcasting.pride_colorizer_transgender": "Transgender Pigment",
  "item.hexcasting.uuid_colorizer": "Soulglimmer Pigment",
  "item.hexcasting.creative_unlocker": "The Media Cube",
  "item.hexcasting.creative_unlocker.for_emphasis": "INFINITE MEDIA",
  "item.hexcasting.creative_unlocker.tooltip": "Consume to unlock all %s knowledge.",
  "item.hexcasting.creative_unlocker.mod_name": "Hexcasting",


  "block.hexcasting.conjured": "Conjured Block",
  "block.hexcasting.slate.blank": "Blank Slate",
  "block.hexcasting.slate.written": "Patterned Slate",
  "block.hexcasting.empty_impetus": "Empty Impetus",
  "block.hexcasting.directrix_redstone": "Mason Directrix",
  "block.hexcasting.empty_directrix": "Empty Directrix",
  "block.hexcasting.impetus_rightclick": "Toolsmith Impetus",
  "block.hexcasting.impetus_look": "Fletcher Impetus",
  "block.hexcasting.impetus_storedplayer": "Cleric Impetus",
  "block.hexcasting.akashic_record": "Akashic Record",
  "block.hexcasting.akashic_bookshelf": "Akashic Bookshelf",
  "block.hexcasting.akashic_connector": "Akashic Ligature",

  "block.hexcasting.slate_block": "Block of Slate",
  "block.hexcasting.amethyst_dust_block": "Block of Amethyst Dust",
  "block.hexcasting.amethyst_tiles": "Amethyst Tiles",
  "block.hexcasting.scroll_paper": "Scroll Paper",
  "block.hexcasting.ancient_scroll_paper": "Ancient Scroll Paper",
  "block.hexcasting.scroll_paper_lantern": "Paper Lantern",
  "block.hexcasting.ancient_scroll_paper_lantern": "Ancient Paper Lantern",
  "block.hexcasting.amethyst_sconce": "Amethyst Sconce",
  "block.hexcasting.akashic_log": "Edified Log",
  "block.hexcasting.akashic_log_stripped": "Stripped Edified Log",
  "block.hexcasting.akashic_wood": "Edified Wood",
  "block.hexcasting.akashic_wood_stripped": "Stripped Edified Wood",
  "block.hexcasting.akashic_planks": "Edified Planks",
  "block.hexcasting.akashic_panel": "Edified Panel",
  "block.hexcasting.akashic_tile": "Edified Tile",
  "block.hexcasting.akashic_door": "Edified Door",
  "block.hexcasting.akashic_trapdoor": "Edified Trapdoor",
  "block.hexcasting.akashic_stairs": "Edified Stairs",
  "block.hexcasting.akashic_slab": "Edified Slab",
  "block.hexcasting.akashic_button": "Edified Button",
  "block.hexcasting.akashic_pressure_plate": "Edified Pressure Plate",
  "block.hexcasting.akashic_leaves1": "Amethyst Edified Leaves",
  "block.hexcasting.akashic_leaves2": "Aventurine Edified Leaves",
  "block.hexcasting.akashic_leaves3": "Citrine Edified Leaves",

  "itemGroup.hexcasting": "Hexcasting",
  "itemGroup.hexcasting.creative_tab": "Hexcasting",

  "hexcasting.tooltip.spellbook.page": "Selected Page %d/%d",
  "hexcasting.tooltip.spellbook.page.sealed": "Selected Page %d/%d (%s)",
  "hexcasting.tooltip.spellbook.page_with_name": "Selected Page %d/%d (\"%s\")",
  "hexcasting.tooltip.spellbook.page_with_name.sealed": "Selected Page %d/%d (\"%s\") (%s)",
  "hexcasting.tooltip.spellbook.sealed": "Sealed",
  "hexcasting.tooltip.spellbook.empty": "Empty",
  "hexcasting.tooltip.spellbook.empty.sealed": "Empty (%s)",
  "hexcasting.tooltip.abacus": "%d",
  "hexcasting.tooltip.abacus.reset": "Reset to 0",
  "hexcasting.tooltip.abacus.reset.nice": "nice",
  "hexcasting.tooltip.lens.impetus.storedplayer": "Bound to %s",
  "hexcasting.tooltip.lens.impetus.storedplayer.none": "Unbound",
  "hexcasting.tooltip.lens.pattern.invalid": "Invalid Pattern",
  "hexcasting.tooltip.lens.akashic.bookshelf.location": "Record at %s",
  "hexcasting.tooltip.lens.akashic.record.count": "%s iotas stored",
  "hexcasting.tooltip.lens.akashic.record.count.single": "%s iota stored",
  "hexcasting.tooltip.lens.bee": "%s bees",
  "hexcasting.tooltip.lens.bee.single": "%s bee",
  "hexcasting.tooltip.brainsweep.min_level": "Level %s or higher",
  "hexcasting.tooltip.brainsweep.level": "Level %s",
  "hexcasting.tooltip.brainsweep.product": "Mindless Body",
  "hexcasting.spelldata.onitem": "Contains: %s",
  "hexcasting.spelldata.anything": "Anything",
  "hexcasting.spelldata.unknown": "Unknown data (this is a bug)",
  "hexcasting.spelldata.entity.whoknows": "An Entity (this should only show up if this was stored before the 0.5.0 update, use Scribe's Reflection, Scribe's Gambit to fix)",
  "hexcasting.spelldata.akashic.nopos": "The owning record does not know of any iota here (this is a bug)",

  "hexcasting.tooltip.mana": "%s dust",
  "hexcasting.tooltip.mana_amount": "Contains: %s (%s)",
  "hexcasting.tooltip.mana_amount.advanced": "Contains: %s/%s (%s)",

  "gui.hexcasting.spellcasting": "Hex Grid",
  "tag.hexcasting.wands": "Hex Staves",
  "tag.hexcasting.akashic_logs": "Edified Logs",
  "tag.hexcasting.akashic_planks": "Edified Planks",
  "tag.hexcasting.phial_base": "Empty Phials",
  "emi.category.hexcasting.brainsweep": "Flay Mind",
  "emi.category.hexcasting.craft.battery": "Craft Phial",
  "emi.category.hexcasting.edify": "Edify Sapling",
  "emi.category.hexcasting.villager_leveling": "Trade Leveling",
  "emi.category.hexcasting.villager_profession": "Villager Profession",

  "advancement.hexcasting:root": "Hexcasting Research",
  "advancement.hexcasting:root.desc": "Find and mine a concentrated form of media growing deep beneath the earth.",
  "advancement.hexcasting:enlightenment": "Achieve Enlightenment",
  "advancement.hexcasting:enlightenment.desc": "Shatter a barrier by casting a hex using almost all of your health.",
  "advancement.hexcasting:wasteful_cast": "Waste Not...",
  "advancement.hexcasting:wasteful_cast.desc": "Waste a large amount of media when casting a hex.",
  "advancement.hexcasting:big_cast": "... Want Not",
  "advancement.hexcasting:big_cast.desc": "Cast a single spell requiring a truly huge amount of media.",
  "advancement.hexcasting:y_u_no_cast_angy": "Blind Diversion",
  "advancement.hexcasting:y_u_no_cast_angy.desc": "Try to cast a spell from a scroll, but fail.",
  "advancement.hexcasting:opened_eyes": "Opened Eyes",
  "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?",

  "stat.hexcasting.mana_used": "Media Consumed (in dust)",
  "stat.hexcasting.mana_overcasted": "Media Overcast (in dust)",
  "stat.hexcasting.patterns_drawn": "Patterns Drawn",
  "stat.hexcasting.spells_cast": "Spells Cast",

  "death.attack.hexcasting.overcast": "%s's mind was subsumed into energy",

  "command.hexcasting.pats.listing": "Patterns in this world:",
  "command.hexcasting.pats.all": "Gave you all %d scrolls",
  "command.hexcasting.pats.specific.success": "Gave you %s with id %s",
  "command.hexcasting.recalc": "Recalculated patterns",
  "command.hexcasting.brainsweep": "Brainswept %s",
  "command.hexcasting.brainsweep.fail.badtype": "%s is not a villager",
  "command.hexcasting.brainsweep.fail.already": "%s is already empty",
  "hexcasting.pattern.unknown": "Unknown pattern resource location %s",
  "hexcasting.debug.mana_withdrawn": "%s - Mana withdrawn: %s",
  "hexcasting.debug.mana_withdrawn.with_dust": "%s - Mana withdrawn: %s (%s in dust)",
  "hexcasting.debug.mana_inserted": "%s - Mana inserted: %s",
  "hexcasting.debug.mana_inserted.with_dust": "%s - Mana inserted: %s (%s in dust)",
  "hexcasting.debug.all_mana": "Entire contents",
  "hexcasting.debug.infinite_mana": "Infinite",

  "hexcasting.message.cant_overcast": "That Hex needed more media than I had... I should double-check my math.",
  "hexcasting.message.cant_great_spell": "The spell failed, somehow... am I not skilled enough?",

  "hexcasting.subtitles.start_pattern": "Starting pattern",
  "hexcasting.subtitles.add_line": "Adding line",
  "hexcasting.subtitles.add_pattern": "Adding pattern",
  "hexcasting.subtitles.fail_pattern": "Pattern fails",
  "hexcasting.subtitles.ambiance": "Hex grid hums",
  "hexcasting.subtitles.cast": "Hex casts",
  "hexcasting.subtitles.abacus": "Abacus clicks",
  "hexcasting.subtitles.abacus.shake": "Abacus shakes",
  "hexcasting.subtitles.spellcircle.add_pattern": "Spell circle crackles",
  "hexcasting.subtitles.spellcircle.fail": "Spell circle fizzles out",
  "hexcasting.subtitles.spellcircle.cast": "Spell circle casts",
  "hexcasting.subtitles.scroll.dust": "Scroll covers with dust",
  "hexcasting.subtitles.scroll.scribble": "Scroll is scribbled",
  "hexcasting.subtitles.impetus.fletcher.tick": "Fletcher Impetus ticks",
  "hexcasting.subtitles.impetus.cleric.register": "Cleric Impetus dings",

  "_comment": "hexcasting.spell.book keys override the name of a pattern in the patchouli book if present",

  "hexcasting.spell.book.hexcasting:get_entity_height": "Stadiometer's Prfn.",
  "hexcasting.spell.book.hexcasting:get_entity/animal": "Entity Prfn.: Animal",
  "hexcasting.spell.book.hexcasting:get_entity/monster": "Entity Prfn.: Monster",
  "hexcasting.spell.book.hexcasting:get_entity/item": "Entity Prfn.: Item",
  "hexcasting.spell.book.hexcasting:get_entity/player": "Entity Prfn.: Player",
  "hexcasting.spell.book.hexcasting:get_entity/living": "Entity Prfn.: Living",
  "hexcasting.spell.book.hexcasting:zone_entity": "Zone Dstl.: Any",
  "hexcasting.spell.book.hexcasting:zone_entity/animal": "Zone Dstl.: Animal",
  "hexcasting.spell.book.hexcasting:zone_entity/monster": "Zone Dstl.: Monster",
  "hexcasting.spell.book.hexcasting:zone_entity/item": "Zone Dstl.: Item",
  "hexcasting.spell.book.hexcasting:zone_entity/player": "Zone Dstl.: Player",
  "hexcasting.spell.book.hexcasting:zone_entity/living": "Zone Dstl.: Living",
  "hexcasting.spell.book.hexcasting:zone_entity/not_animal": "Zone Dstl.: Non-Animal",
  "hexcasting.spell.book.hexcasting:zone_entity/not_monster": "Zone Dstl.: Non-Monster",
  "hexcasting.spell.book.hexcasting:zone_entity/not_item": "Zone Dstl.: Non-Item",
  "hexcasting.spell.book.hexcasting:zone_entity/not_player": "Zone Dstl.: Non-Player",
  "hexcasting.spell.book.hexcasting:zone_entity/not_living": "Zone Dstl.: Non-Living",
  "hexcasting.spell.book.hexcasting:mul_dot": "Multiplicative Dstl.",
  "hexcasting.spell.book.hexcasting:div_cross": "Division Dstl.",
  "hexcasting.spell.book.hexcasting:arcsin": "Inverse Sine Prfn.",
  "hexcasting.spell.book.hexcasting:arccos": "Inverse Cosine Prfn.",
  "hexcasting.spell.book.hexcasting:arctan": "Inverse Tangent Prfn.",
  "hexcasting.spell.book.hexcasting:const/vec/x": "Vector Rfln. +X/-X",
  "hexcasting.spell.book.hexcasting:const/vec/y": "Vector Rfln. +Y/-Y",
  "hexcasting.spell.book.hexcasting:const/vec/z": "Vector Rfln. +Z/-Z",
  "hexcasting.spell.book.hexcasting:number": "Numerical Reflection",
  "hexcasting.spell.book.hexcasting:mask": "Bookkeeper's Gambit",

  "hexcasting.spell.hexcasting:get_caster": "Mind's Reflection",
  "hexcasting.spell.hexcasting:get_entity_pos": "Compass' Purification",
  "hexcasting.spell.hexcasting:get_entity_look": "Alidade's Purification",
  "hexcasting.spell.hexcasting:get_entity_height": "Stadiometer's Purification",
  "hexcasting.spell.hexcasting:get_entity_velocity": "Pace Purification",
  "hexcasting.spell.hexcasting:raycast": "Archer's Distillation",
  "hexcasting.spell.hexcasting:raycast/axis": "Architect's Distillation",
  "hexcasting.spell.hexcasting:raycast/entity": "Scout's Distillation",
  "hexcasting.spell.hexcasting:circle/impetus_pos": "Waystone Reflection",
  "hexcasting.spell.hexcasting:circle/impetus_dir": "Lodestone Reflection",
  "hexcasting.spell.hexcasting:circle/bounds/min": "Lesser Fold Reflection",
  "hexcasting.spell.hexcasting:circle/bounds/max": "Greater Fold Reflection",
  "hexcasting.spell.hexcasting:append": "Integration Distillation",
  "hexcasting.spell.hexcasting:concat": "Combination Distillation",
  "hexcasting.spell.hexcasting:index": "Selection Distillation",
  "hexcasting.spell.hexcasting:for_each": "Thoth's Gambit",
  "hexcasting.spell.hexcasting:list_size": "Abacus Purification",
  "hexcasting.spell.hexcasting:singleton": "Single's Purification",
  "hexcasting.spell.hexcasting:empty_list": "Vacant Reflection",
  "hexcasting.spell.hexcasting:reverse_list": "Retrograde Purification",
  "hexcasting.spell.hexcasting:last_n_list": "Flock's Gambit",
  "hexcasting.spell.hexcasting:splat": "Flock's Disintegration",
  "hexcasting.spell.hexcasting:index_of": "Locator's Distillation",
  "hexcasting.spell.hexcasting:list_remove": "Excisor's Distillation",
  "hexcasting.spell.hexcasting:slice": "Selection Exaltation",
  "hexcasting.spell.hexcasting:modify_in_place": "Surgeon's Exaltation",
  "hexcasting.spell.hexcasting:construct": "Speaker's Distillation",
  "hexcasting.spell.hexcasting:deconstruct": "Speaker's Decomposition",
  "hexcasting.spell.hexcasting:get_entity": "Entity Purification",
  "hexcasting.spell.hexcasting:get_entity/animal": "Entity Purification: Animal",
  "hexcasting.spell.hexcasting:get_entity/monster": "Entity Purification: Monster",
  "hexcasting.spell.hexcasting:get_entity/item": "Entity Purification: Item",
  "hexcasting.spell.hexcasting:get_entity/player": "Entity Purification: Player",
  "hexcasting.spell.hexcasting:get_entity/living": "Entity Purification: Living",
  "hexcasting.spell.hexcasting:zone_entity": "Zone Distillation: Any",
  "hexcasting.spell.hexcasting:zone_entity/animal": "Zone Distillation: Animal",
  "hexcasting.spell.hexcasting:zone_entity/monster": "Zone Distillation: Monster",
  "hexcasting.spell.hexcasting:zone_entity/item": "Zone Distillation: Item",
  "hexcasting.spell.hexcasting:zone_entity/player": "Zone Distillation: Player",
  "hexcasting.spell.hexcasting:zone_entity/living": "Zone Distillation: Living",
  "hexcasting.spell.hexcasting:zone_entity/not_animal": "Zone Distillation: Non-Animal",
  "hexcasting.spell.hexcasting:zone_entity/not_monster": "Zone Distillation: Non-Monster",
  "hexcasting.spell.hexcasting:zone_entity/not_item": "Zone Distillation: Non-Item",
  "hexcasting.spell.hexcasting:zone_entity/not_player": "Zone Distillation: Non-Player",
  "hexcasting.spell.hexcasting:zone_entity/not_living": "Zone Distillation: Non-Living",
  "hexcasting.spell.hexcasting:const/null": "Nullary Reflection",
  "hexcasting.spell.hexcasting:duplicate": "Gemini Decomposition",
  "hexcasting.spell.hexcasting:duplicate_n": "Gemini's Gambit",
  "hexcasting.spell.hexcasting:stack_len": "Flock's Reflection",
  "hexcasting.spell.hexcasting:swap": "Jester's Gambit",
  "hexcasting.spell.hexcasting:fisherman": "Fisherman's Gambit",
  "hexcasting.spell.hexcasting:swizzle": "Swindler's Gambit",
  "hexcasting.spell.hexcasting:add": "Additive Distillation",
  "hexcasting.spell.hexcasting:sub": "Subtractive Distillation",
  "hexcasting.spell.hexcasting:mul_dot": "Multiplicative Distillation",
  "hexcasting.spell.hexcasting:div_cross": "Division Distillation",
  "hexcasting.spell.hexcasting:abs_len": "Length Purification",
  "hexcasting.spell.hexcasting:pow_proj": "Power Distillation",
  "hexcasting.spell.hexcasting:construct_vec": "Vector Exaltation",
  "hexcasting.spell.hexcasting:deconstruct_vec": "Vector Disintegration",
  "hexcasting.spell.hexcasting:and_bit": "Intersection Distillation",
  "hexcasting.spell.hexcasting:or_bit": "Unifying Distillation",
  "hexcasting.spell.hexcasting:xor_bit": "Exclusionary Distillation",
  "hexcasting.spell.hexcasting:not_bit": "Inversion Purification",
  "hexcasting.spell.hexcasting:to_set": "Uniqueness Purification",
  "hexcasting.spell.hexcasting:and": "Conjunction Distillation",
  "hexcasting.spell.hexcasting:or": "Disjunction Distillation",
  "hexcasting.spell.hexcasting:xor": "Exclusion Distillation",
  "hexcasting.spell.hexcasting:floor": "Floor Purification",
  "hexcasting.spell.hexcasting:ceil": "Ceiling Purification",
  "hexcasting.spell.hexcasting:modulo": "Modulus Distillation",
  "hexcasting.spell.hexcasting:greater": "Maximus Distillation",
  "hexcasting.spell.hexcasting:less": "Minimus Distillation",
  "hexcasting.spell.hexcasting:greater_eq": "Maximus Distillation II",
  "hexcasting.spell.hexcasting:less_eq": "Minimus Distillation II",
  "hexcasting.spell.hexcasting:equals": "Equality Distillation",
  "hexcasting.spell.hexcasting:not_equals": "Inequality Distillation",
  "hexcasting.spell.hexcasting:not": "Negation Purification",
  "hexcasting.spell.hexcasting:identity": "Identity Purification",
  "hexcasting.spell.hexcasting:sin": "Sine Purification",
  "hexcasting.spell.hexcasting:cos": "Cosine Purification",
  "hexcasting.spell.hexcasting:tan": "Tangent Purification",
  "hexcasting.spell.hexcasting:arcsin": "Inverse Sine Purification",
  "hexcasting.spell.hexcasting:arccos": "Inverse Cosine Purification",
  "hexcasting.spell.hexcasting:arctan": "Inverse Tangent Purification",
  "hexcasting.spell.hexcasting:random": "Entropy Reflection",
  "hexcasting.spell.hexcasting:logarithm": "Logarithmic Distillation",
  "hexcasting.spell.hexcasting:coerce_axial": "Axial Purification",
  "hexcasting.spell.hexcasting:print": "Reveal",
  "hexcasting.spell.hexcasting:beep": "Make Note",
  "hexcasting.spell.hexcasting:explode": "Explosion",
  "hexcasting.spell.hexcasting:explode/fire": "Fireball",
  "hexcasting.spell.hexcasting:add_motion": "Impulse",
  "hexcasting.spell.hexcasting:blink": "Blink",
  "hexcasting.spell.hexcasting:break_block": "Break Block",
  "hexcasting.spell.hexcasting:place_block": "Place Block",
  "hexcasting.spell.hexcasting:craft/cypher": "Craft Cypher",
  "hexcasting.spell.hexcasting:craft/trinket": "Craft Trinket",
  "hexcasting.spell.hexcasting:craft/artifact": "Craft Artifact",
  "hexcasting.spell.hexcasting:craft/battery": "Craft Phial",
  "hexcasting.spell.hexcasting:recharge": "Recharge Item",
  "hexcasting.spell.hexcasting:erase": "Erase Item",
  "hexcasting.spell.hexcasting:create_water": "Create Water",
  "hexcasting.spell.hexcasting:destroy_water": "Destroy Liquid",
  "hexcasting.spell.hexcasting:ignite": "Ignite Block",
  "hexcasting.spell.hexcasting:extinguish": "Extinguish Area",
  "hexcasting.spell.hexcasting:conjure_block": "Conjure Block",
  "hexcasting.spell.hexcasting:conjure_light": "Conjure Light",
  "hexcasting.spell.hexcasting:bonemeal": "Overgrow",
  "hexcasting.spell.hexcasting:edify": "Edify Sapling",
  "hexcasting.spell.hexcasting:colorize": "Internalize Pigment",
  "hexcasting.spell.hexcasting:sentinel/create": "Summon Sentinel",
  "hexcasting.spell.hexcasting:sentinel/destroy": "Banish Sentinel",
  "hexcasting.spell.hexcasting:sentinel/get_pos": "Locate Sentinel",
  "hexcasting.spell.hexcasting:sentinel/wayfind": "Wayfind Sentinel",
  "hexcasting.spell.hexcasting:potion/weakness": "White Sun's Nadir",
  "hexcasting.spell.hexcasting:potion/levitation": "Blue Sun's Nadir",
  "hexcasting.spell.hexcasting:potion/wither": "Black Sun's Nadir",
  "hexcasting.spell.hexcasting:potion/poison": "Red Sun's Nadir",
  "hexcasting.spell.hexcasting:potion/slowness": "Green Sun's Nadir",
  "hexcasting.spell.hexcasting:potion/regeneration": "White Sun's Zenith",
  "hexcasting.spell.hexcasting:potion/night_vision": "Blue Sun's Zenith",
  "hexcasting.spell.hexcasting:potion/absorption": "Black Sun's Zenith",
  "hexcasting.spell.hexcasting:potion/haste": "Red Sun's Zenith",
  "hexcasting.spell.hexcasting:potion/strength": "Green Sun's Zenith",
  "hexcasting.spell.hexcasting:flight": "Flight",
  "hexcasting.spell.hexcasting:lightning": "Summon Lightning",
  "hexcasting.spell.hexcasting:summon_rain": "Summon Rain",
  "hexcasting.spell.hexcasting:dispel_rain": "Dispel Rain",
  "hexcasting.spell.hexcasting:create_lava": "Create Lava",
  "hexcasting.spell.hexcasting:teleport": "Greater Teleport",
  "hexcasting.spell.hexcasting:brainsweep": "Flay Mind",
  "hexcasting.spell.hexcasting:sentinel/create/great": "Summon Greater Sentinel",
  "hexcasting.spell.hexcasting:open_paren": "Introspection",
  "hexcasting.spell.hexcasting:close_paren": "Retrospection",
  "hexcasting.spell.hexcasting:escape": "Consideration",
  "hexcasting.spell.hexcasting:eval": "Hermes' Gambit",
  "hexcasting.spell.hexcasting:halt": "Charon's Gambit",
  "hexcasting.spell.hexcasting:read/local": "Muninn's Reflection",
  "hexcasting.spell.hexcasting:write/local": "Huginn's Gambit",
  "hexcasting.spell.hexcasting:read": "Scribe's Reflection",
  "hexcasting.spell.hexcasting:write": "Scribe's Gambit",
  "hexcasting.spell.hexcasting:readable": "Auditor's Reflection",
  "hexcasting.spell.hexcasting:readable/entity": "Auditor's Purification",
  "hexcasting.spell.hexcasting:writable": "Auditor's Purification II",
  "hexcasting.spell.hexcasting:akashic/read": "Akasha's Distillation",
  "hexcasting.spell.hexcasting:akashic/write": "Akasha's Gambit",
  "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/0": "Vector Reflection Zero",
  "hexcasting.spell.hexcasting:const/double/pi": "Arc's Reflection",
  "hexcasting.spell.hexcasting:const/double/tau": "Circle's Reflection",
  "hexcasting.spell.hexcasting:const/double/e": "Euler's Reflection",
  "hexcasting.spell.hexcasting:number": "Numerical Reflection: %s",
  "hexcasting.spell.hexcasting:mask": "Bookkeeper's Gambit: %s",
  "hexcasting.spell.null": "Unknown Pattern",

  "hexcasting.spell.hexcasting:interop/gravity/get": "Gravitational Purification",
  "hexcasting.spell.hexcasting:interop/gravity/set": "Alter Gravity",
  "hexcasting.spell.hexcasting:interop/pehkui/get": "Gulliver's Purification",
  "hexcasting.spell.hexcasting:interop/pehkui/set": "Alter Scale",

  "hexcasting.mishap.invalid_pattern": "That pattern isn't associated with any action",
  "hexcasting.mishap.unescaped": "Expected to evaluate a pattern, but evaluated %s instead",
  "hexcasting.mishap.invalid_value": "%s expected %s at index %s of the stack, but got %s",
  "hexcasting.mishap.invalid_value.class.double": "a number",
  "hexcasting.mishap.invalid_value.class.vector": "a vector",
  "hexcasting.mishap.invalid_value.class.list": "a list",
  "hexcasting.mishap.invalid_value.class.widget": "an influence",
  "hexcasting.mishap.invalid_value.class.pattern": "a pattern",
  "hexcasting.mishap.invalid_value.class.entity.item": "an item entity",
  "hexcasting.mishap.invalid_value.class.entity.player": "a player",
  "hexcasting.mishap.invalid_value.class.entity.villager": "a villager",
  "hexcasting.mishap.invalid_value.class.entity.living": "a living entity",
  "hexcasting.mishap.invalid_value.class.entity": "an entity",
  "hexcasting.mishap.invalid_value.class.unknown": "(unknown, uh-oh, this is a bug)",
  "hexcasting.mishap.invalid_value.numvec": "a number or vector",
  "hexcasting.mishap.invalid_value.numlist": "a number or list",
  "hexcasting.mishap.invalid_value.list.pattern": "a list of patterns",
  "hexcasting.mishap.invalid_value.int": "an integer",
  "hexcasting.mishap.invalid_value.double.between": "a number between %d and %d",
  "hexcasting.mishap.invalid_value.int.between": "an integer between %d and %d",
  "hexcasting.mishap.invalid_value.evaluatable": "something evaluatable",
  "hexcasting.mishap.not_enough_args": "%s expected %s or more arguments but the stack was only %s tall",
  "hexcasting.mishap.too_many_close_parens": "Used Retrospection without first using Introspection",
  "hexcasting.mishap.location_too_far": "%s is out of range for %s",
  "hexcasting.mishap.location_out_of_world": "%s is not within the world",
  "hexcasting.mishap.location_too_close_to_out": "%s is too close to the boundary of the world",
  "hexcasting.mishap.wrong_dimension": "%s cannot see %s from %s",
  "hexcasting.mishap.entity_too_far": "%s is out of range for %s",
  "hexcasting.mishap.immune_entity": "%s cannot alter %s",
  "hexcasting.mishap.eval_too_deep": "Recursively evaluated too deep",
  "hexcasting.mishap.no_item": "%s needs %s but got nothing",
  "hexcasting.mishap.no_item.offhand": "%s needs %s in the other hand but got nothing",
  "hexcasting.mishap.bad_item": "%s needs %s but got %dx %s",
  "hexcasting.mishap.bad_item.offhand": "%s needs %s in the other hand but got %dx %s",
  "hexcasting.mishap.bad_item.iota": "a place to store iotas",
  "hexcasting.mishap.bad_item.iota.read": "a place to read iotas from",
  "hexcasting.mishap.bad_item.iota.write": "a place to write iotas to",
  "hexcasting.mishap.bad_item.iota.readonly": "a place that will accept %s",
  "hexcasting.mishap.bad_item.mana": "a media-containing item",
  "hexcasting.mishap.bad_item.mana_for_battery": "a raw media item",
  "hexcasting.mishap.bad_item.only_one": "exactly one item",
  "hexcasting.mishap.bad_item.eraseable": "an eraseable item",
  "hexcasting.mishap.bad_item.bottle": "a glass bottle",
  "hexcasting.mishap.bad_item.rechargable": "a rechargable item",
  "hexcasting.mishap.bad_item.colorizer": "a pigment",
  "hexcasting.mishap.bad_block": "Expected %s at %s, but got %s",
  "hexcasting.mishap.bad_block.sapling": "a sapling",
  "hexcasting.mishap.bad_block.replaceable": "somewhere to place a block",
  "hexcasting.mishap.bad_brainsweep": "The %s rejected the villager's mind",
  "hexcasting.mishap.already_brainswept": "The villager has already been used",
  "hexcasting.mishap.no_spell_circle": "%s requires a spell circle",
  "hexcasting.mishap.others_name": "Tried to invade the privacy of %s's soul",
  "hexcasting.mishap.divide_by_zero.divide": "Attempted to divide %s by %s",
  "hexcasting.mishap.divide_by_zero.project": "Attempted to project %s onto %s",
  "hexcasting.mishap.divide_by_zero.exponent": "Attempted to raise %s to the %s",
  "hexcasting.mishap.divide_by_zero.logarithm": "Attempted to get the logarithm of %s in base %s",
  "hexcasting.mishap.divide_by_zero.zero": "zero",
  "hexcasting.mishap.divide_by_zero.zero.power": "zeroth power",
  "hexcasting.mishap.divide_by_zero.zero.vec": "the zero vector",
  "hexcasting.mishap.divide_by_zero.power": "power of %s",
  "hexcasting.mishap.divide_by_zero.sin": "the sine of %s",
  "hexcasting.mishap.divide_by_zero.cos": "the cosine of %s",
  "hexcasting.mishap.no_akashic_record": "No Akashic Record at %s",
  "hexcasting.mishap.disallowed": "%s has been disallowed by the server admins",
  "hexcasting.mishap.disallowed_circle": "%s has been disallowed in spell circles by the server admins",
  "hexcasting.mishap.invalid_spell_datum_type": "Tried to use a value of invalid type as a SpellDatum: %s (class %s). This is a bug in the mod.",
  "hexcasting.mishap.unknown": "%s threw an exception (%s). This is a bug in the mod.",

  "hexcasting.landing": "I seem to have discovered a new method of magical arts, in which one draws patterns strange and wild onto a hexagonal grid. It fascinates me. I've decided to start a journal of my thoughts and findings.$(br2)$(l:https://discord.gg/4xxHGYteWk)Discord Server Link/$",


  "hexcasting.entry.basics": "Getting Started",
  "hexcasting.entry.basics.desc": "The practitioners of this art would cast their so-called _Hexes by drawing strange patterns in the air with a $(l:items/staff)$(item)staff/$-- or craft $(l:items/hexcasting)$(item)powerful magical items/$ to do the casting for them. How might I do the same?",

  "hexcasting.entry.casting": "Hex Casting",
  "hexcasting.entry.casting.desc": "I've started to understand how the old masters cast their _Hexes! It's a bit complicated, but I'm sure I can figure it out. Let's see...",

  "hexcasting.entry.items": "Items",
  "hexcasting.entry.items.desc": "I devote this section to the magical and mysterious items I might encounter in my studies.$(br2)It seems like many of these items have uses when held alongside my $(l:items/staff)$(item)staff/$. I suppose I will have to choose what goes in my other hand carefully.",

  "hexcasting.entry.greatwork": "The Great Work",
  "hexcasting.entry.greatwork.desc": "I have seen... so much. I have... experienced... annihilation and deconstruction and reconstruction. I have seen the atoms of the world screaming as they were inverted and subverted and demoted to energy. I have seen I have seen I have s$(k)get stick bugged lmao/$",

  "hexcasting.entry.patterns": "Patterns",
  "hexcasting.entry.patterns.desc": "A list of all the patterns I've discovered, as well as what they do.",

  "hexcasting.entry.spells": "Spells",
  "hexcasting.entry.spells.desc": "Patterns and actions that perform a magical effect on the world.",

  "hexcasting.entry.great_spells": "Great Spells",
  "hexcasting.entry.great_spells.desc": "The spells catalogued here are purported to be of legendary difficulty and power. They seem to have been recorded only sparsely (for good reason, the texts claim). It's probably just the hogwash of extinct traditionalists, though-- a pattern's a pattern. What could possibly go wrong?",


  "_comment": "Basics",

  "hexcasting.entry.media": "Media",
  "hexcasting.page.media.1": "_Media is a form of mental energy external to a mind. All living creatures generate trace amounts of _media when thinking about anything; after the thought is finished, the media is released into the environment.$(br2)The art of casting _Hexes is all about manipulating _media to do your bidding.",
  "hexcasting.page.media.2": "_Media can exert influences on other media-- the strength and type of influence can be manipulated by drawing _media out into patterns.$(p)Scholars of the art used a concentrated blob of _media on the end of a stick: by waving it in the air in precise configurations, they were able to manipulate enough _media with enough precision to influence the world itself, in the form of a _Hex.",
  "hexcasting.page.media.3": "Sadly, even a fully sentient being (like myself, presumably) can only generate miniscule amounts of _media. It would be quite impractical to try and use my own brainpower to cast Hexes.$(br2)But legend has it that there are underground deposits where _media slowly accumulates, growing into crystalline forms.$(p)If I could just find one of those...",

  "hexcasting.entry.geodes": "Geodes",
  "hexcasting.page.geodes.1": "Aha! While mining deep underground, I found an enormous geode resonating with energy-- energy which pressed against my skull and my thoughts. And now, I hold that pressure in my hand, in solid form. That proves it. This $(italic)must/$ be the place spoken about in legends where _media accumulates.$(br2)These $(l:items/amethyst)$(item)amethyst crystals/$ must be a $(l:items/amethyst)$(thing)convenient, solidified form of _Media/$.",
  "hexcasting.page.geodes.2": "It appears that, in addition to the $(l:items/amethyst)$(item)Amethyst Shards/$ I have seen in the past, these crystals can also drop bits of powdered $(l:items/amethyst)$(item)Amethyst Dust/$, as well as these $(l:items/amethyst)$(item)Charged Amethyst Crystals/$. It looks like I'll have a better chance of finding the $(l:items/amethyst)$(item)Charged Amethyst Crystals/$ by using a Fortune pickaxe.",
  "hexcasting.page.geodes.3": "As I take the beauty of the crystal 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 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 as 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 end? 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 $(l:items/amethyst)$(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 $(l:items/amethyst)$(item)Charged Amethyst/$'s worth of _media out of my health at its prime.",
  "hexcasting.page.couldnt_cast.4": "I shudder to even consider it-- I've kept my mind mostly intact so far, in my studies. But the fact is-- I form one side of a tenuous link.$(p)I'm connected to some other side-- a side whose boundary has thinned from that trauma. A place where simple actions spell out eternal glory.$(p)Is it so wrong, to want it for myself?",

  "hexcasting.entry.start_to_see": "WHAT DID I SEE",
  "hexcasting.page.start_to_see.1": "The texts weren't lying. Nature took its due.",
  "hexcasting.page.start_to_see.2": "That... that was...$(p)...that was one of the $(italic)worst/$ things I've $(italic)ever/$ experienced. I offered my plan to Nature, and got a firm smile and a tearing sensation in return-- a piece of myself breaking away, like amethyst dust in the rain.$(p)I feel lucky to have $(italic)survived/$, much less have the sagacity to write this-- I should declare the matter closed, double-check my math before I cast any more _Hexes, and never make such a mistake again.",
  "hexcasting.page.start_to_see.3": "...But.$(br2)But for the scarcest instant, that part of myself... it $(italic)saw/$... $(l:greatwork/the_work)$(thing)something/$. A place-- a design, perhaps? (Such distinctions didn't seem to matter in the face of... that.)$(p)And a... a membrane-barrier-skin-border, separating myself from a realm of raw thought-flow-light-energy. I remember-- I saw-thought-recalled-felt-- the barrier fuzzing at its edges, just so slightly.$(p)I wanted $(italic)through./$",
  "hexcasting.page.start_to_see.4": "I shouldn't. I $(italic)know/$ I shouldn't. It's dangerous. It's too dangerous. The force required... I'd have to bring myself within a hair's breadth of Death itself with a $(italic)single stroke/$.$(br2)But I'm. So. $(italic)Close/$.$(p)$(italic)This/$ is the culmination of my art. This is the $(#54398a)Enlightenment/$ I've been seeking. $(br2)I want more. I need to see it again. I $(italic)will/$ see it.$(p)What is my mortal mind against immortal glory?",


  "_comment": "Casting",

  "hexcasting.entry.101": "Hexing 101",
  "hexcasting.page.101.1": "Casting a _Hex is quite difficult-- no wonder this art was lost to time! I'll have to re-read my notes carefully.$(br2)I can start a _Hex by pressing $(k:use) with a $(l:items/staff)$(item)Staff/$ in my hand-- this will cause a hexagonal grid of dots to appear in front of me. Then I can click and drag from dot to dot to draw patterns in the _media of the grid; finishing a pattern will run its corresponding action (more on that later).",
  "hexcasting.page.101.2": "Once I've drawn enough patterns to cast a spell, the grid will disappear as the _media I've stored up is released. Holding $(k:sneak) while using my $(l:items/staff)$(item)staff/$ will also clear the grid, if I don't mind the chance of mishap. (It seems that the more _media I've built up, the more likely I'll meet misfortune.)$(br2)So how do patterns work? In short:$(li)$(italic)Patterns/$ will execute...$(li)$(italic)Actions/$, which manipulate...$(li)$(l:casting/stack)$(italic)The Stack/$, which is a list of...$(li)$(italic)Iotas/$, which are simply units of information.",
  "hexcasting.page.101.3": "First, $(thing)patterns/$. These are essential-- they're what I use to manipulate the _media around me. Certain patterns, when drawn, will cause $(thing)actions/$ to happen. Actions are what actually $(italic)do/$ the magic; all patterns influence _media in particular ways, and when those influences end up doing something useful, we call it an action.$(br2)_Media can be fickle: if I draw an invalid pattern, I'll get some $(l:casting/influences)$(action)garbage/$ result somewhere on my stack (read on...)",
  "hexcasting.page.101.4.header": "An Example",
  "hexcasting.page.101.4": "It's interesting to note that the $(italic)rotation/$ of a pattern doesn't seem to matter at all. These two patterns both perform an action called $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$, for example.",
  "hexcasting.page.101.5": "A _Hex is cast by drawing (valid) actions in sequence. Each action might do one of a few things:$(li)Gather some information about the environment, leaving it on the top of the stack;$(li)manipulate the info gathered (e.g. adding two numbers); or$(li)perform some magical effect, like summoning lightning or an explosion. (These actions are called \"spells.\")$(p)When I start casting a _Hex, it creates an empty stack. Actions manipulate the top of that stack.",
  "hexcasting.page.101.6": "For example, $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$ will create an iota representing $(italic)me/$, the caster, and add it to the top of the stack. $(l:patterns/basics#hexcasting:get_entity_pos)$(action)Compass Purification/$ will take the iota at the top the stack, if it represents an entity, and transform it into an iota representing that entity's location.$(br2)So, drawing those patterns in that order would result in an iota on the stack representing my position.",
  "hexcasting.page.101.7": "$(thing)Iotas/$ can represent things like myself or my position, but there are several other types I can manipulate with $(thing)Actions$(0). Here's a comprehensive list:$(li)Numbers (which some legends called \"doubles\");$(li)Vectors, a collection of three numbers representing a position, movement, or direction in the world;",
  "hexcasting.page.101.8": "$(li)Entities, like myself, chickens, and minecarts;$(li)Influences, peculiar types of iota that seem to represent abstract ideas;$(li)Patterns themselves, used for crafting magic items and truly mind-boggling feats like $(italic)spells that cast other spells/$; and$(li)A list of several of the above, gathered into a single iota.",
  "hexcasting.page.101.9": "Of course, there's no such thing as a free lunch. All spells, and certain other actions, require _media as payment.$(br2)The best I can figure, a _Hex is a little bit like a plan of action presented to Nature-- in this analogy, the _media is used to provide the arguments to back it up, so Nature will accept your plan and carry it out.",
  "hexcasting.page.101.10": "That aside, it doesn't seem like anyone has done much research on exactly how $(italic)much/$ any particular piece of $(l:items/amethyst)$(item)amethyst/$ is valued. The best I can tell, an $(l:items/amethyst)$(item)Amethyst Shard/$ is worth about five pieces of $(l:items/amethyst)$(item)Amethyst Dust/$, and a $(l:items/amethyst)$(item)Charged Amethyst Crystal/$ is worth about ten.$(br2)Strangely enough, it seems like no other form of $(l:items/amethyst)$(item)amethyst/$ is suitable to be used in the casting of a _Hex. I suspect that whole blocks or crystals are too solid to be easily unraveled into _media.",
  "hexcasting.page.101.11": "It's also worth noting that each action will consume the _media it needs immediately, rather than all at once when the Hex finishes. Also, an action will always consume entire items-- an action that only requires one $(l:items/amethyst)$(item)Amethyst Dust/$'s worth of _media will consume an entire $(l:items/amethyst)$(item)Charged Amethyst Crystal/$, if that's all that's present in my inventory.$(br2)Thus, it might be a good idea to bring dust for spellcasting too-- waste not, want not...",
  "hexcasting.page.101.12": "I should also be careful to make sure I actually have enough Amethyst in my inventory-- some old texts say that Nature is happy to use one's own mind as payment instead. They describe the feeling as awful but strangely euphoric, \"[...] an effervescent dissolution into light and energy...\" Perhaps that's why all the old practitioners of the art went mad. I can't imagine burning pieces of my mind for power is $(italic)healthy/$.",
  "hexcasting.page.101.13": "Maybe something's changed, though. In my experiments, I've never managed to do it; if I run out of _media, the spell will simply fail to cast, as if some barrier is blocking it from harming me. $(br2)It would be interesting to get to the bottom of that mystery, but for now I suppose it'll keep me safe.",
  "hexcasting.page.101.14": "I have also found an amusing tidbit on why so many practitioners of magic in general seem to go mad, which I may like as some light and flavorful reading not canonical to my world.$(br2)$(italic)Content Warning: some body horror and suggestive elements./$",
  "hexcasting.page.101.14.link_text": "Goblin Punch",
  "hexcasting.page.101.15": "Finally, it seems spells have a maximum range of influence, about 32 blocks from my position. Trying to affect anything outside of that will cause the spell to fail.$(br2)Despite this, if I have a player's reference, I can affect them from anywhere. This only applies to affecting them directly, though; I cannot use this to affect the world around them if they're outside of my range.$(br)I ought to be careful when giving out a reference like that. While friendly _Hexcasters could use them to great effect and utility, I shudder to think of what someone malicious might do with this.",

  "hexcasting.entry.vectors": "A Primer on Vectors",
  "hexcasting.page.vectors.1": "It seems I will need to be adroit with vectors if I am to get anywhere in my studies. I have compiled some resources here on vectors if I find I do not know how to work with them.$(br2)First off, an enlightening video on the topic.",
  "hexcasting.page.vectors.1.link_text": "3blue1brown",
  "hexcasting.page.vectors.2": "Additionally, it seems that the mages who manipulated $(thing)Psi energy/$ (the so-called \"spellslingers\"), despite their poor naming sense, had some quite-effective lessons on vectors to teach their acolytes. I've taken the liberty of linking to one of their texts on the next page.$(br2)They seem to have used different language for their spellcasting:$(li)A \"Spell Piece\" was their name for an action;$(li)a \"Trick\" was their name for a spell; and$(li)an \"Operator\" was their name for a non-spell action.",
  "hexcasting.page.vectors.3": "Link here.",
  "hexcasting.page.vectors.3.link_text": "Psi Codex",

  "hexcasting.entry.mishaps": "Mishaps",
  "hexcasting.page.mishaps.1": "Unfortunately, I am not (yet) a perfect being. I make mistakes from time to time in my study and casting of _Hexes; for example, misdrawing a pattern, or trying to an invoke an action with the wrong iotas. And Nature usually doesn't look too kindly on my mistakes-- causing what is called a $(italic)mishap/$.",
  "hexcasting.page.mishaps.2": "A pattern that causes a mishap will glow red in my grid. Depending on the type of mistake, I can also expect a certain deleterious effect and a spray of red and colorful sparks as the mishandled _media curdles into light of a given color.$(br2)I also get a helpful error message in my chat, but a nagging feeling tells that will change once the \"mod updates,\" whatever that means. I shouldn't rely on always having it.",
  "hexcasting.page.mishaps.3": "Fortunately, although the bad effects of mishaps are certainly $(italic)annoying/$, none of them are especially destructive in the long term. Nothing better to do than dust myself off and try again ... but I should strive for better anyways.$(br2)Following is a list of mishaps I have compiled.",
  "hexcasting.page.mishaps.invalid_pattern.title": "Invalid Pattern",
  "hexcasting.page.mishaps.invalid_pattern": "The pattern drawn is not associated with any action.$(br2)Causes yellow sparks, and a $(l:casting/influences)$(action)Garbage/$ will be pushed to the top of my stack.",
  "hexcasting.page.mishaps.not_enough_iotas.title": "Not Enough Iotas",
  "hexcasting.page.mishaps.not_enough_iotas": "The action required more iotas than were on the stack.$(br2)Causes light gray sparks, and as many $(l:casting/influences)$(action)Garbages/$ as would be required to fill up the argument count will be pushed.",
  "hexcasting.page.mishaps.incorrect_iota.title": "Incorrect Iota",
  "hexcasting.page.mishaps.incorrect_iota": "The action that was executed expected an iota of a certain type for an argument, but it got something invalid. If multiple iotas are invalid, the error message will only tell me about the error deepest in the stack.$(br2)Causes dark gray sparks, and the invalid iota will be replaced with $(l:casting/influences)$(action)Garbage/$.",
  "hexcasting.page.mishaps.vector_out_of_range.title": "Vector Out of Ambit",
  "hexcasting.page.mishaps.vector_out_of_range": "The action tried to affect the world at a point that was out of my range.$(br2)Causes magenta sparks, and the items in my hands will be yanked out and flung towards the offending location.",
  "hexcasting.page.mishaps.entity_out_of_range.title": "Entity Out of Ambit",
  "hexcasting.page.mishaps.entity_out_of_range": "The action tried to affect an entity that was out of my range.$(br2)Causes pink sparks, and the items in my hands will be yanked out and flung towards the offending entity.",
  "hexcasting.page.mishaps.entity_immune.title": "Entity is Immune",
  "hexcasting.page.mishaps.entity_immune": "The action tried to affect an entity that cannot be altered by it.$(br2)Causes blue sparks, and the items in my hands will be yanked out and flung towards the offending entity.",
  "hexcasting.page.mishaps.math_error.title": "Mathematical Error",
  "hexcasting.page.mishaps.math_error": "The action did something offensive to the laws of mathematics, such as dividing by zero.$(br2)Causes red sparks, pushes a $(l:casting/influences)$(action)Garbage/$ to my stack, and my mind will be ablated, stealing half the vigor I have remaining. It seems that Nature takes offense to such operations, and divides $(italic)me/$ in retaliation.",
  "hexcasting.page.mishaps.incorrect_item.title": "Incorrect Item",
  "hexcasting.page.mishaps.incorrect_item": "The action requires some sort of item, but the item I supplied was not suitable.$(br2)Causes brown sparks. If the offending item was in my hand, it will be flung to the floor. If it was in entity form, it will be flung in the air.",
  "hexcasting.page.mishaps.incorrect_block.title": "Incorrect Block",
  "hexcasting.page.mishaps.incorrect_block": "The action requires some sort of block at a target location, but the block supplied was not suitable.$(br2)Causes bright green sparks, and causes an ephemeral explosion at the given location. The explosion doesn't seem to harm me, the world, or anything else though; it's just startling.",
  "hexcasting.page.mishaps.retrospection.title": "Hasty Retrospection",
  "hexcasting.page.mishaps.retrospection": "I attempted to draw $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ without first drawing $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$.$(br2)Causes orange sparks, and pushes the pattern for $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ to the stack as a pattern iota.",
  "hexcasting.page.mishaps.too_deep.title": "Delve Too Deep",
  "hexcasting.page.mishaps.too_deep": "Evaluated too many spells with meta-evaluation from one spell.$(br2)Causes dark blue sparks, and chokes all the air out of me.",
  "hexcasting.page.mishaps.true_name.title": "Transgress Other",
  "hexcasting.page.mishaps.true_name": "I attempted to $(l:patterns/readwrite#hexcasting:write)$(action)save a reference/$ to another player to a permanent medium.$(br2)Causes black sparks, and robs me of my sight for approximately one minute.",
  "hexcasting.page.mishaps.disabled.title": "Disallowed Action",
  "hexcasting.page.mishaps.disabled": "I tried to cast an action that has been disallowed by a server administrator.$(br2)Causes black sparks.",
  "hexcasting.page.mishaps.other.title": "Catastrophic Failure",
  "hexcasting.page.mishaps.other": "A bug in the mod caused an iota of an invalid type or otherwise caused the spell to crash. $(l:https://https://github.com/gamma-delta/HexMod/issues)Please open a bug report!/$$(br2)Causes black sparks.",

  "hexcasting.entry.stack": "Stacks",
  "hexcasting.page.stack.1": "A $(thing)Stack/$, also known as a \"LIFO\", is a concept borrowed from computer science. In short, it's a collection of things designed so that you can only interact with the most recently used thing.$(br2)Think of a stack of plates, where new plates are added to the top: if you want to interact with a plate halfway down the stack, you have to remove the plates above it in order to get ahold of it.",
  "hexcasting.page.stack.2": "Because a stack is so simple, there's only so many things you can do with it:$(li)$(italic)Adding something to it/$, known formally as pushing,$(li)$(italic)Removing the last added element/$, known as popping, or$(li)$(italic)Examining or modifying the last added element/$, known as peeking.$(br)We call the last-added element the \"top\" of the stack, in accordance with the dinner plate analogy.$(p)As an example, if we push 1 to a stack, then push 2, then pop, the top of the stack is now 1.",
  "hexcasting.page.stack.3": "Actions are (on the most part) restricted to interacting with the casting stack in these ways. They will pop some iotas they're interested in (known as \"arguments\" or \"parameters\"), process them, and push some number of results.$(br2)Of course, some actions (e.g. $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$) might pop no arguments, and some actions (particularly spells) might push nothing afterwards.",
  "hexcasting.page.stack.4": "Even more complicated actions can be expressed in terms of pushing, popping, and peeking. For example, $(l:patterns/stackmanip#hexcasting:swap)$(action)Jester's Gambit/$ swaps the top two items of the stack. This can be thought of as popping two items and pushing them in opposite order. For another, $(l:patterns/stackmanip#hexcasting:duplicate)$(action)Gemini Decomposition/$ duplicates the top of the stack-- in other words, it peeks the stack and pushes a copy of what it finds.",

  "hexcasting.entry.naming": "Naming Actions",
  "hexcasting.page.naming.1": "The names given to actions by the ancients were certainly peculiar, but I think there's a certain kind of logic to them.$(br2)There seem to be certain groups of actions with common names, named for the number of iotas they remove from and add to the stack.",
  "hexcasting.page.naming.2": "$(li)A $(thing)Reflection/$ pops nothing and pushes one iota.$(li)A $(thing)Purification/$ pops one and pushes one.$(li)A $(thing)Distillation/$ pops two and pushes one.$(li)An $(thing)Exaltation/$ pops three or more and pushes one.$(li)A $(thing)Decomposition/$ pops one argument and pushes two.$(li)A $(thing)Disintegration/$ pops one and pushes three or more.$(li)Finally, a $(thing)Gambit/$ pushes or pops some other number (or rearranges the stack in some other manner).",
  "hexcasting.page.naming.3": "Spells seem to be exempt from this nomenclature and are more or less named after what they do-- after all, why call it a $(action)Demoman's Gambit/$ when you could just say $(l:patterns/spells/basic#hexcasting:explode)$(action)Explosion/$?",

  "hexcasting.entry.influences": "Influences",
  "hexcasting.page.influences.1": "Influences are ... strange, to say the least. Whereas most iotas seem to represent something about the world, influences represent something more... abstract, or formless.$(br2)For example, one influence I've named $(l:casting/influences)$(thing)Null/$ seems to represent nothing at all. It's created when there isn't a suitable answer to a question asked, such as an $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation/$ facing the sky.",
  "hexcasting.page.influences.2": "In addition, I've discovered a curious triplet of influences I've named $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$, $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$, and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$. They seem to have properties of both patterns and other influences, yet act very differently. I can use these to add patterns to my stack as iotas, instead of matching them to actions. $(l:patterns/patterns_as_iotas)My notes on the subject are here/$.",
  "hexcasting.page.influences.3": "Finally, there seems to be an infinite family of influences that just seem to be a tangled mess of _media. I've named them $(l:casting/influences)$(action)Garbage/$, as they are completely useless. They seem to appear in my stack at various places in response to $(l:casting/mishaps)$(thing)mishaps/$, and appear to my senses as a nonsense jumble.",

  "hexcasting.entry.mishaps2": "Enlightened Mishaps",
  "hexcasting.page.mishaps2.1": "I have discovered new and horrifying modes of failure. I must not succumb to them.",
  "hexcasting.page.mishaps2.bad_mindflay.title": "Inert Mindflay",
  "hexcasting.page.mishaps2.bad_mindflay": "Attempted to flay the mind of a villager that I have either already used, or of a character not suitable for the target block.$(br2)Causes dark green sparks, and kills the subject. If another villager sees that, I doubt they would look on it favorably.",
  "hexcasting.page.mishaps2.no_circle.title": "Lack Spell Circle",
  "hexcasting.page.mishaps2.no_circle": "Tried to cast an action requiring a spell circle without a spell circle.$(br2)Causes light blue sparks, and upends my inventory onto the ground.",
  "hexcasting.page.mishaps2.no_record.title": "Lack Akashic Record",
  "hexcasting.page.mishaps2.no_record": "Tried to access an $(l:greatwork/akashiclib)$(item)Akashic Record/$ at a location where there isn't one.$(br2)Causes purple sparks, and steals away some of my experience.",


  "_comment": "Items",

  "hexcasting.entry.amethyst": "Amethyst",
  "hexcasting.page.amethyst.dust": "It seems that I'll find three different forms of amethyst when breaking a crystal inside a geode. The smallest denomination seems to be a small pile of shimmering dust, worth a relatively small amount of _media.",
  "hexcasting.page.amethyst.shard": "The second is a whole shard of amethyst, of the type non-_Hexcasters might be used to. This has about as much _media inside as five $(l:items/amethyst)$(item)Amethyst Dust/$.",
  "hexcasting.page.amethyst.crystal": "Finally, I'll rarely find a large crystal crackling with energy. This has about as much _media inside as ten units of $(l:items/amethyst)$(item)Amethyst Dust/$ (or two $(l:items/amethyst)$(item)Amethyst Shards/$).",
  "hexcasting.page.amethyst.lore": "$(italic)The old man sighed and raised a hand toward the fire. He unlocked a part of his brain that held the memories of the mountains around them. He pulled the energies from those lands, as he learned to do in Terisia City with Drafna, Hurkyl, the archimandrite, and the other mages of the Ivory Towers. He concentrated, and the flames writhed as they rose from the logs, twisting upon themselves until they finally formed a soft smile./$",

  "hexcasting.entry.staff": "Staff",
  "hexcasting.page.staff.1": "A $(l:items/staff)$(item)Staff/$ is my entry point into casting all _Hexes, large and small. By holding it and pressing $(thing)$(k:use)/$, I begin casting a _Hex; then I can click and drag to draw patterns.$(br2)It's little more than a chunk of _media on the end of a stick; that's all that's needed, after all.",
  "hexcasting.page.staff.crafting.header": "Staves",
  "hexcasting.page.staff.crafting.desc": "$(italic)Don't fight; flame, light; ignite; burn bright./$",

  "hexcasting.entry.lens": "Scrying Lens",
  "hexcasting.page.lens.1": "_Media can have peculiar effects on any type of information, in specific circumstances. Coating a glass in a thin film of it can lead to ... elucidating insights.$(br2)By holding a $(l:items/lens)$(item)Scrying Lens/$ in my hand, certain blocks will display additional information when I look at them.",
  "hexcasting.page.lens.2": "For example, looking at a piece of $(item)Redstone/$ will display its signal strength. I suspect I will discover other blocks with additional insight as my studies into my art progress.$(br2)In addition, holding it while casting using a $(l:items/staff)$(item)Staff/$ will shrink the spacing between dots, allowing me to draw more on my grid.$(br2)I can also wear it on my head as a strange sort of monocle. This reveals information, but won't shrink my grid. No matter. There must be a way to have both...",
  "hexcasting.page.lens.crafting.desc": "$(italic)You must learn... to see what you are looking at./$",

  "hexcasting.entry.focus": "Focus",
  "hexcasting.page.focus.1": "A $(l:items/focus)$(item)Focus/$ can store a single iota.$(br2)When I craft it, it holds the $(l:casting/influences)$(thing)Null/$ influence by default. Using $(l:patterns/readwrite#hexcasting:write)$(action)Scribe's Gambit/$ while holding a $(l:items/focus)$(item)Focus/$ in my other hand will remove the top of the stack and save it into the $(l:items/focus)$(item)Focus/$. Using $(l:patterns/readwrite#hexcasting:read)$(action)Scribe's Reflection/$ will copy whatever iota's in the $(l:items/focus)$(item)Focus/$ and add it to the stack.",
  "hexcasting.page.focus.2": "It occurs to me that I could conceivably store a whole list of patterns in a $(l:items/focus)$(item)Focus/$, then recall them and evaluate them with $(l:patterns/meta#hexcasting:eval)$(action)Hermes' Gambit/$. This way I can cast complex spells, or parts of spells, without having to draw them over and over.$(br2)I could use this like a slightly less convenient $(l:items/hexcasting#artifact)$(item)Artifact/$, but I think I could get much better dividends by putting common \"phrases\" in a $(l:items/focus)$(item)Focus/$, like the patterns for figuring out where I'm looking.",
  "hexcasting.page.focus.3": "Also, if I store an entity in a $(l:items/focus)$(item)Focus/$ and try to recall it after the referenced entity has died or otherwise disappeared, the $(l:patterns/readwrite#hexcasting:read)$(action)Scribe's Reflection/$ will add $(l:casting/influences)$(thing)Null/$ to the stack instead.$(br2)Finally, it seems if I wish to protect a $(l:items/focus)$(item)focus/$ from accidentally being overwritten, I can seal it with wax by crafting it with a $(item)Honeycomb/$. Attempting to use $(l:patterns/readwrite#hexcasting:write)$(action)Scribe's Gambit/$ on a sealed focus will fail. $(l:patterns/spells/hexcasting#hexcasting:erase)$(action)Erase Item/$ will remove this seal along with the contents.",
  "hexcasting.page.focus.crafting.desc": "$(italic)Poison apples, poison worms./$",

  "hexcasting.entry.abacus": "Abacus",
  "hexcasting.page.abacus.1": "Although there are $(l:patterns/numbers)$(action)patterns for drawing numbers/$, I find them ... cumbersome, to say the least.$(br2)Fortunately, the old masters of my craft invented an ingenious device called an $(l:items/abacus)$(item)Abacus/$ to provide numbers to my casting. I simply set the number to what I want, then read the value using $(l:patterns/readwrite#hexcasting:read)$(action)Scribe's Reflection/$, just like I would read a $(l:items/focus)$(item)Focus/$.",
  "hexcasting.page.abacus.2": "To operate one, I simply hold it, sneak, and scroll. If in my main hand, the number will increment or decrement by 1, or 10 if I am also holding Control/Command. If in my off hand, the number will increment or decrement by 0.1, or 0.001 if I am also holding Control/Command.$(br2)I can shake the abacus to reset it to zero by sneak-right-clicking.",
  "hexcasting.page.abacus.crafting.desc": "$(italic)Mathematics? That's for eggheads!/$",

  "hexcasting.entry.spellbook": "Spellbook",
  "hexcasting.page.spellbook.1": "A $(l:items/spellbook)$(item)Spellbook/$ is the culmination of my art-- it acts like an entire library of $(l:items/focus)$(item)Foci/$. Up to $(thing)sixty-four/$ of them, to be exact.$(br2)Each page can hold a single iota, and I can select the active page (the page that iotas are saved to and copied from) by sneak-scrolling while holding it, or simply holding it in my off-hand and scrolling while casting a _Hex.",
  "hexcasting.page.spellbook.2": "Like a $(l:items/focus)$(item)Focus/$, there exists a simple method to prevent accidental overwriting. Crafting it with a $(item)Honeycomb/$ will lacquer the current page, preventing $(l:patterns/readwrite#hexcasting:write)$(action)Scribe's Gambit/$ from modifying its contents. Also like a $(l:items/focus)$(item)Focus/$, using $(l:patterns/spells/hexcasting#hexcasting:erase)$(action)Erase Item/$ will remove the lacquer along with the page's contents.$(br2)I can also name each page individually in an anvil. Naming it will change only the name of the currently selected page, for easy browsing.",
  "hexcasting.page.spellbook.crafting.desc": "$(italic)Wizards love words. Most of them read a great deal, and indeed one strong sign of a potential wizard is the inability to get to sleep without reading something first.",

  "hexcasting.entry.scroll": "Scrolls",
  "hexcasting.page.scroll.1": "A $(l:items/scroll)$(item)Scroll/$ is a convenient method of sharing a pattern with others. I can copy a pattern onto one with $(l:patterns/readwrite#hexcasting:write)$(action)Scribe's Gambit/$, after which it will display in a tooltip.$(br2)I can also place them on the wall as decoration or edification, like a painting, in sizes from 1x1 to 3x3 blocks. Using $(l:items/amethyst)$(item)Amethyst Dust/$ on such a scroll will have it display the stroke order.",
  "hexcasting.page.scroll.2": "In addition, I can also find so-called $(l:items/scroll)$(item)Ancient Scrolls/$ in the dungeons and strongholds of the world. These contain the stroke order of $(thing)Great Spells/$, powerful magicks rumored to be too powerful for the hands and minds of mortals...$(br2)If those \"mortals\" couldn't cast them, I'm not sure they deserve to know them.",
  "hexcasting.page.scroll.crafting.desc": "$(italic)I write upon clean white parchment with a sharp quill and the blood of my students, divining their secrets./$",

  "hexcasting.entry.slate": "Slates",
  "hexcasting.page.slate.1": "$(l:items/slate)$(item)Slates/$ are similar to $(l:items/scroll)$(item)Scrolls/$; I can copy a pattern to them and place them in the world to display the pattern.$(br2)However, I have read vague tales of grand assemblies of $(l:items/slate)$(item)Slates/$, used to cast $(l:greatwork/spellcircles)$(thing)great rituals/$ more powerful than can be handled by a $(l:items/staff)$(item)Staff/$.",
  "hexcasting.page.slate.2": "Perhaps this knowledge will be revealed to me with time. But for now, I suppose they make a quaint piece of decor.$(br2)At the least, they can be placed on any side of a block, unlike $(l:items/scroll)$(item)Scrolls/$.",
  "hexcasting.page.slate.crafting.desc": "$(italic)This is the letter \"a.\" Learn it./$",
  "hexcasting.page.slate.3": "I'm also aware of other types of $(l:items/slate)$(item)Slates/$, slates that do not contain patterns but seem to be inlaid with other ... strange ... oddities. It hurts my brain to think about them, as if my thoughts get bent around their designs, following their pathways, bending and wefting through their labyrinthine depths, through and through and through channeled through and processed and--$(br2)... I almost lost myself. Maybe I should postpone my studies of those.",

  "hexcasting.entry.hexcasting": "Casting Items",
  "hexcasting.page.hexcasting.1": "Although the flexibility of casting _Hexes \"on the go\" with my $(l:items/staff)$(item)Staff/$ is quite helpful, it's a huge pain to have to wave it around repeatedly just to accomplish a basic task. If I could save a common spell for later reuse, it would simplify things a lot-- and allow me to share my _Hexes with friends, too.",
  "hexcasting.page.hexcasting.2": "To do this, I can craft one of three types of magic items: $(l:items/hexcasting)$(item)Cyphers/$, $(l:items/hexcasting)$(item)Trinkets/$, or $(l:items/hexcasting)$(item)Artifacts/$. All of them hold the patterns of a given _Hex inside, along with a small battery containing _media.$(br2)Simply holding one and pressing $(thing)$(k:use)/$ will cast the patterns inside, as if the holder had cast them out of a staff, using its internal battery.",
  "hexcasting.page.hexcasting.3": "Each item has its own quirks:$(br2)$(l:items/hexcasting)$(item)Cyphers/$ are fragile, destroyed after their internal _media reserves are gone, and $(italic)cannot/$ be recharged;$(br2)$(l:items/hexcasting)$(item)Trinkets/$ can be cast as much as the holder likes, as long as there's enough _media left, but become useless afterwards until recharged;",
  "hexcasting.page.hexcasting.4": "$(l:items/hexcasting)$(item)Artifacts/$ are the most powerful of all-- after their _media is depleted, they can use $(l:items/amethyst)$(item)Amethyst/$ from the holder's inventory to pay for the _Hex, just as I do when casting with a $(l:items/staff)$(item)Staff/$. Of course, this also means the spell might consume their mind if there's not enough $(l:items/amethyst)$(item)Amethyst/$.$(br2)Once I've made an empty magic item in a mundane crafting bench, I infuse the _Hex into it using (what else but) a spell appropriate to the item. $(l:patterns/spells/hexcasting)I've catalogued the patterns here./$",
  "hexcasting.page.hexcasting.5": "Each infusion spell requires an entity and a list of patterns on the stack. The entity must be a _media-holding item entity (i.e. $(l:items/amethyst)$(item)amethyst/$ crystals, dropped on the ground); the entity is consumed and forms the battery.$(br2)Usefully, it seems that the _media in the battery is not consumed in chunks as it is when casting with a $(l:items/staff)$(item)Staff/$-- rather, the _media \"melts down\" into one continuous pool. Thus, if I store a _Hex that only costs one $(l:items/amethyst)$(item)Amethyst Dust/$'s worth of media, a $(l:items/amethyst)$(item)Charged Crystal/$ used as the battery will allow me to cast it 10 times.",
  "hexcasting.page.hexcasting.crafting.desc": "$(italic)We have a saying in our field: \"Magic isn't\". It doesn't \"just work,\" it doesn't respond to your thoughts, you can't throw fireballs or create a roast dinner from thin air or turn a bunch of muggers into frogs and snails./$",

  "hexcasting.entry.phials": "Phials of Media",
  "hexcasting.page.phials.1": "I find it quite ... irritating, how Nature refuses to give me change for my work. If all I have on hand is $(l:items/amethyst)$(item)Charged Amethyst/$, even the tiniest $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Purification/$ will consume the entire crystal, wasting the remaining _media.$(br2)Fortunately, it seems I've found a way to somewhat allay this problem.",
  "hexcasting.page.phials.2": "I've found old scrolls describing a $(item)Glass Bottle/$ infused with _media. When casting _Hexes, my spells would then draw _media out of the phial. The liquid form of the _media would let me take exact change, so to speak; nothing would be wasted. It's quite like the internal battery of a $(l:items/hexcasting)$(item)Trinket/$, or similar; I can even $(l:patterns/spells/hexcasting#hexcasting:recharge)$(action)Recharge/$ them in the same manner.",
  "hexcasting.page.phials.3": "Unfortunately, the art of actually $(italic)making/$ the things seems to have been lost to time. I've found a $(l:patterns/great_spells/make_battery#hexcasting:craft/battery)$(thing)hint at the pattern used to craft it/$, but the technique is irritatingly elusive, and I can't seem to do it successfully. I suspect I will figure it out with study and practice, though. For now, I will simply deal with the wasted _media...$(br2)But I won't settle for it forever.",
  "hexcasting.page.phials.desc": "$(italic)Drink the milk./$",

  "hexcasting.entry.pigments": "Pigments",
  "hexcasting.page.pigments.1": "Although their names were lost to time, the old practitioners of my art seem to have identified themselves by a color, emblematic of them and their spells. It seems a special kind of pigment, offered to Nature in the right way, would \"[...] paint one's thoughts in a manner pleasing to Nature, inducing a miraculous change in personal colour.\"",
  "hexcasting.page.pigments.2": "I'm not certain on the specifics of how it works, but I believe I have isolated the formulae for many different colors of pigments. To use a pigment, I hold it in one hand while casting $(l:patterns/spells/colorize)$(action)Internalize Pigment/$ with the other, consuming the pigment and marking my mind with its color.$(br2)The pigments seem to affect the color of the sparks of media emitted out of a staff when I cast a _Hex, as well as my $(l:patterns/spells/sentinels)$(thing)sentinel/$.",
  "hexcasting.page.pigments.colored.crafting.header": "Chromatic Pigments",
  "hexcasting.page.pigments.colored.crafting.desc": "Pigments in all the colors of the rainbow.",
  "hexcasting.page.pigments.uuid.crafting.desc": "And finally, a pigment with a color wholly unique to me.$(br2)$(italic)And all the colors I am inside have not been invented yet./$",

  "hexcasting.entry.edified": "Edified Trees",
  "hexcasting.page.edified.1": "By infusing _media into a sapling via the use of $(l:patterns/spells/blockworks#hexcasting:edify)$(action)Edify Sapling/$, I can create what is called an $(l:items/edified)$(thing)Edified Tree/$. They tend to be tall and pointy, with ridged bark and wood that grows in a strange spiral pattern. Their leaves come in three pretty colors.",
  "hexcasting.page.edified.2": "I would assume the wood would have some properties relevant to _Hexcasting. But, if it does, I cannot seem to find them. For all intents and purposes it appears to be just wood, albeit of a very strange color.$(br2)I suppose for now I will use it for decoration; the full suite of standard wood blocks can be crafted from them.$(br2)Of course, I can strip them with an axe as well.",
  "hexcasting.page.edified.crafting.desc": "$(italic)Their smooth trunks, with white bark, gave the effect of enormous columns sustaining the weight of an immense foliage, full of shade and silence./$",

  "hexcasting.entry.jeweler_hammer": "Jeweler's Hammer",
  "hexcasting.page.jeweler_hammer.1": "After being careless with the sources of my _media one too many times, I have devised a tool to work around my clumsiness.$(br2)Using the delicate nature of crystallized _media as a fixture for a pickaxe, I can create the $(l:items/jeweler_hammer)$(item)Jeweler's Hammer/$. It acts like an $(item)Iron Pickaxe/$, for the most part, but can't break anything that takes up an entire block's space.",
  "hexcasting.page.jeweler_hammer.crafting.desc": "$(italic)Carefully, she cracked the half ruby, letting the spren escape./$",

  "hexcasting.entry.decoration": "Decorative Blocks",
  "hexcasting.page.decoration.1": "In the course of my studies I have discovered some building blocks and trifles that I may find aesthetically pleasing. I've compiled the methods of making them here.",
  "hexcasting.page.decoration.ancient_scroll.crafting.desc": "Brown dye works well enough to simulate the look of an $(l:items/scroll)$(item)ancient scroll/$.",
  "hexcasting.page.decoration.tiles.crafting.desc": "$(l:items/decoration)$(item)Amethyst Tiles/$ can also be made in a Stonecutter.$(br2)$(l:items/decoration)$(item)Blocks of Amethyst Dust/$ (next page) will fall like sand.",
  "hexcasting.page.decoration.sconce.crafting.desc": "$(l:items/decoration)$(item)Amethyst Sconces/$ emit light and particles, as well as a pleasing chiming sound.",


  "_comment": "The Work",

  "hexcasting.entry.the_work": "The Work",
  "hexcasting.page.the_work.1": "I have seen so many things. Unspeakable things. Innumerable things. I could write three words and turn my mind inside-out and smear my brains across the shadowed walls of my skull to decay into fluff and nothing.",
  "hexcasting.page.the_work.2": "I have seen staccato-needle patterns and acid-etched schematics written on the inside of my eyelids. They smolder there-- they dance, they taunt, they $(italic)ache/$. I'm possessed by an intense $(italic)need/$ to draw them, create them. Form them. Liberate them from the gluey shackles of my mortal mind-- present them in their Glory to the world for all to see.$(p)All shall see.$(p)All will see.",

  "hexcasting.entry.brainsweeping": "On the Flaying of Minds",
  "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 believed-- 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 $(l:items/amethyst)$(item)Charged Amethyst/$ for this perversion of will.",
  "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 $(l:items/slate)$(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.",
  "hexcasting.page.spellcircles.2": "To start the ritual I need an $(l:greatwork/impetus)$(item)Impetus/$ to create a self-sustaining wave of _media. That wave travels along a track of $(l:items/slate)$(item)slates/$ or other blocks suitable for the energies, one by one, collecting any patterns it finds. Once the wave circles back around to the $(l:greatwork/impetus)$(item)Impetus/$, all the patterns encountered are cast in order.$(br2)The direction the _media exits any given block MUST be unambiguous, or the casting will fail at the block with too many neighbors.",
  "hexcasting.page.spellcircles.3": "As a result, the outline of the spell \"circle\" may be any closed shape, concave or convex, and it may face any direction. In fact, with the application of certain other blocks it is possible to make a spell circle that spans all three dimensions. I doubt such an oddity has very much use, but I must allocate myself a bit of vapid levity to encourage my crude mind to continue my work.",
  "hexcasting.page.spellcircles.4": "Miracle of miracles, the circle will withdraw _media neither from my inventory nor my mind. Instead, crystallized shards of _media must be provided to the $(l:greatwork/impetus)$(item)Impetus/$ via hopper, or other such artifice.$(br2)The application of a $(l:items/lens)$(item)Scrying Lens/$ will show how much _media is inside an $(l:greatwork/impetus)$(item)Impetus/$, in units of dust.",
  "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 $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$ and ending with $(l:patterns/great_spells/teleport#hexcasting:teleport)$(action)Greater Teleport/$.",
  "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 $(l:greatwork/impetus)$(item)Impetus/$ and weave _media into the self-sustaining oroboros 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 $(l:greatwork/brainsweeping)$(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.empty_impetus": "First, the cradle. Although it does not work as an $(l:greatwork/impetus)$(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 $(l:greatwork/impetus)$(item)Impetus/$. A $(l:greatwork/impetus)$(item)Toolsmith Impetus/$ activates on a simple $(k:use).",
  "hexcasting.page.impetus.impetus_storedplayer.1": "A $(l:greatwork/impetus)$(item)Cleric Impetus/$ must be bound to a player by using an item with a reference to that player, like a $(l:items/focus)$(item)Focus/$, on the block. Then, it activates when receiving a redstone signal.",
  "hexcasting.page.impetus.impetus_storedplayer.2": "Peculiarly to this $(l:greatwork/impetus)$(item)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 $(l:greatwork/impetus)$(item)Cleric Impetus/$ through a $(l:items/lens)$(item)Scrying Lens/$.",
  "hexcasting.page.impetus.impetus_look": "A $(l:greatwork/impetus)$(item)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 $(l:greatwork/directrix)$(item)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.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 $(l:greatwork/directrix)$(item)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 $(l:greatwork/akashiclib)$(item)Akashic Record/$ controls the library, and each $(l:greatwork/akashiclib)$(item)Akashic Bookshelf/$ stores one pattern mapped to one iota. These must all be directly connected together, touching, within 32 blocks. An $(l:greatwork/akashiclib)$(item)Akashic Ligature/$ doesn't do anything but count as a connecting block, to extend the size of my library.",
  "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 $(l:items/scroll)$(item)scroll/$ on a bookshelf copies the pattern there onto the $(l:items/scroll)$(item)scroll/$. Sneaking and using an empty hand clears the datum in the shelf.",

  "_comment": "Patterns",

  "hexcasting.entry.readers_guide": "How to Read this Section",
  "hexcasting.page.readers_guide.1": "I've divided all the valid patterns I've found into sections based on what they do, more or less. I've written down the stroke order of the patterns as well, if I managed to find it in my studies, with the start of the pattern marked with a red dot.$(br2)If an action is cast by multiple patterns, as is the case with some, I'll write them all side-by-side.",
  "hexcasting.page.readers_guide.2": "For a few patterns, however, I was $(italic)not/$ able to find the stroke order, just the shape. I suspect the order to draw them in are out there, locked away in the ancient libraries and dungeons of the world.$(br2)In such cases I just draw the pattern without any information on the order to draw it in.",
  "hexcasting.page.readers_guide.3": "I also write the types of iota that the action will consume or modify, a \"\u2192\", and the types of iota the action will create.$(p)For example, \"$(n)vector, number/$ \u2192 $(n)vector/$\" means the action will remove a vector and a number from the top of the stack, and then add a vector; or, put another way, will remove a number from the stack, and then modify the vector at the top of the stack. (The number needs to be on the top of the stack, with the vector right below it.)",
  "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.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.get_entity_velocity": "Transforms an entity on the stack into the direction in which it's moving, with the speed of that movement as that direction's magnitude.",
  "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? Costs a negligible amount of _media.",
  "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 $(l:casting/influences)$(thing)Null/$.",
  "hexcasting.page.basics_pattern.raycast/axis.1": "Like $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation/$, but instead returns a vector representing the answer to the question: Which $(italic)side/$ of the block am I looking at? Costs a negligible amount of _media.",
  "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).",
  "hexcasting.page.basics_pattern.raycast/entity": "Like $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation/$, but instead returns the $(italic)entity/$ I am looking at. Costs a negligible amount of _media.",

  "hexcasting.entry.numbers": "Number Literals",
  "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.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.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": "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.floor": "\"Floors\" a number, cutting off the fractional component and leaving an integer value.",
  "hexcasting.page.math.ceil": "\"Ceilings\" a number, raising it to the next integer value if it has a fractional component.",
  "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.modulo": "Takes the modulus of two numbers. This is the amount $(italics)remaining/$ after division - for example, 5 %% 2 is 1, and 5 %% 3 is 2.",
  "hexcasting.page.math.coerce_axial": "Coerces a vector to its nearest axial direction, a unit vector. The zero vector is unaffected.",
  "hexcasting.page.math.random": "Creates a random number between 0 and 1.",

  "hexcasting.entry.advanced_math": "Advanced Mathematics",
  "hexcasting.page.advanced_math.sin": "Takes the sine of an angle in radians, yielding the vertical component of that angle drawn on a unit circle. Related to the values of $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ and $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$.",
  "hexcasting.page.advanced_math.cos": "Takes the cosine of an angle in radians, yielding the horizontal component of that angle drawn on a unit circle. Related to the values of $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ and $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$.",
  "hexcasting.page.advanced_math.tan": "Takes the tangent of an angle in radians, yielding the slope of that angle drawn on a circle. Related to the values of $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ and $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$.",
  "hexcasting.page.advanced_math.arcsin": "Takes the inverse sine of a value with absolute value 1 or less, yielding the angle whose sine is that value. Related to the values of $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ and $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$.",
  "hexcasting.page.advanced_math.arccos": "Takes the inverse cosine of a value with absolute value 1 or less, yielding the angle whose cosine is that value. Related to the values of $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ and $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$.",
  "hexcasting.page.advanced_math.arctan": "Takes the inverse tangent of a value, yielding the angle whose tangent is that value. Related to the values of $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ and $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$.",
  "hexcasting.page.advanced_math.logarithm": "Removes the number at the top of the stack, then takes the logarithm of the number at the top using the other number as its base. Related to the value of $(l:patterns/consts#hexcasting:const/double/e)$(thing)$(italic)e/$.",

  "hexcasting.entry.sets": "Sets",
  "hexcasting.page.sets.numlist": "Set operations are odd, in that some of them can accept two numbers or two lists, but not a combination thereof. Such arguments will be written as \"num, num/list, list\".$(br2)When numbers are used in those operations, they are being used as so-called binary \"bitsets\", lists of 1 and 0, true and false, \"on\" and \"off\".",
  "hexcasting.page.sets.or.1": "Unifies two sets.",
  "hexcasting.page.sets.or.2": "As such:$(li)With two numbers at the top of the stack, combines them into a bitset containing every \"on\" bit in either bitset.$(li)With two lists, this creates a list of every element from the first list, plus every element from the second list that is not in the first list. This is similar to $(l:patterns/lists#hexcasting:concat)$(action)Combination Distillation/$.",
  "hexcasting.page.sets.and.1": "Takes the intersection of two sets.",
  "hexcasting.page.sets.and.2": "As such:$(li)With two numbers at the top of the stack, combines them into a bitset containing every \"on\" bit present in $(italics)both/$ bitsets.$(li)With two lists, this creates a list of every element from the first list that is also in the second list.",
  "hexcasting.page.sets.xor.1": "Takes the exclusive disjunction of two sets.",
  "hexcasting.page.sets.xor.2": "As such:$(li)With two numbers at the top of the stack, combines them into a bitset containing every \"on\" bit present in $(italics)exactly one/$ of the bitsets.$(li)With two lists, this creates a list of every element in both lists that is $(italics)not/$ in the other list.",
  "hexcasting.page.sets.not": "Takes the inversion of a bitset, changing all \"on\" bits to \"off\" and vice versa. In my experience, this will take the form of that number negated and decreased by one. For example, 0 will become -1, and -100 will become 99.",
  "hexcasting.page.sets.to_set": "Removes duplicate entries from a list.",

  "hexcasting.entry.consts": "Constants",
  "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/double/e": "Adds $(italic)e/$, the base of natural logarithms, to the stack.",
  "hexcasting.page.consts.const/null": "Adds the $(l:casting/influences)$(thing)Null/$ influence to the top of the stack.",

  "hexcasting.entry.stackmanip": "Stack Manipulation",
  "hexcasting.page.stackmanip.stack": "These patterns concern the $(l:casting/stack)$(thing)Stack/$ itself. Many of them pop different numbers of arguments and push different numbers of outputs depending on the inputs you give them. Such occurrences are written as \"many\".",
  "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.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.last_n_list": "Remove $(italic)num/$ elements from the stack, then add them to a list at the top of the stack.",
  "hexcasting.page.stackmanip.splat": "Remove the list at the top of the stack, then push its contents to the stack.",
  "hexcasting.page.stackmanip.duplicate": "Duplicates the top iota of the stack.",
  "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.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. Costs an amount of media that starts negligible and scales up as the numerical code does.",
  "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.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 $(l:casting/influences)$(thing)Null/$, return 1. Otherwise, return 0.",
  "hexcasting.page.logic.identity": "If the argument is 0, return $(l:casting/influences)$(thing)Null/$. If it's $(l:casting/influences)$(thing)Null/$, return 0. Otherwise, return the argument",
  "hexcasting.page.logic.or": "If the first argument is not $(l:casting/influences)$(thing)Null/$, return it. Otherwise, return the second argument.",
  "hexcasting.page.logic.and": "If the first argument is $(l:casting/influences)$(thing)Null/$, return $(l:casting/influences)$(thing)Null/$. Otherwise, return the second argument.",
  "hexcasting.page.logic.xor": "If either argument (but not both) is $(l:casting/influences)$(thing)Null/$, return the non-$(l:casting/influences)$(thing)Null/$ argument. Otherwise, return $(l:casting/influences)$(thing)Null/$.",

  "hexcasting.entry.entities": "Entities",
  "hexcasting.page.entities.get_entity": "Transform the position on the stack into the entity at that location (or $(l:casting/influences)$(thing)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 $(l:casting/influences)$(thing)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 $(l:casting/influences)$(thing)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 $(l:casting/influences)$(thing)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 $(l:casting/influences)$(thing)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 $(l:casting/influences)$(thing)Null/$ if there isn't one).",
  "hexcasting.page.entities.zone_entity/animal": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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.index": "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 $(l:casting/influences)$(thing)Null/$ if the number is out of bounds.",
  "hexcasting.page.lists.slice": "Remove the two numbers at the top of the stack, then take a sublist of the list at the top of the stack between those indices, lower bound inclusive, upper bound exclusive. For example, the 0, 2 sublist of [0, 1, 2, 3, 4] would be [0, 1].",
  "hexcasting.page.lists.append": "Remove the top of the stack, then add it to the end of the list at the top of the stack.",
  "hexcasting.page.lists.concat": "Remove the list at the top of the stack, then add all its elements to the end of the list at the top of the stack.",
  "hexcasting.page.lists.empty_list": "Push an empty list to the top of the stack.",
  "hexcasting.page.lists.singleton": "Remove the top of the stack, then push a list containing only that element.",
  "hexcasting.page.lists.list_size": "Remove the list at the top of the stack, then push the number of elements in the list to the stack.",
  "hexcasting.page.lists.reverse_list": "Reverse the list at the top of the stack.",
  "hexcasting.page.lists.index_of": "Remove the iota at the top of the stack, then replace the list at the top with the first index of that iota within the list (starting from 0). Replaces the list with -1 if the iota doesn't exist in the list.",
  "hexcasting.page.lists.list_remove": "Remove the number at the top of the stack, then remove the nth element of the list at the top of the stack (where n is the number you removed).",
  "hexcasting.page.lists.modify_in_place": "Remove the top iota of the stack and the number at the top, then set the nth element of the list at the top of the stack to that iota (where n is the number you removed). Does nothing if the number is out of bounds.",
  "hexcasting.page.lists.construct": "Remove the top iota, then add it as the first element to the list at the top of the stack.",
  "hexcasting.page.lists.deconstruct": "Remove the first iota from the list at the top of the stack, then push that iota to the stack.",

  "hexcasting.entry.patterns_as_iotas": "Patterns as Iotas",
  "hexcasting.page.patterns_as_iotas.1": "One of the many peculiarities of this art is that $(italic)patterns themselves/$ can act as iotas-- I can even put them onto my stack when casting.$(br2)This raises a fairly obvious question: how do I express them? If I simply drew a pattern, it would hardly tell Nature to add it to my stack-- rather, it would simply be matched to an action.",
  "hexcasting.page.patterns_as_iotas.2": "Fortunately, Nature has provided me with a set of $(l:casting/influences)influences/$ that I can use to work with patterns directly.$(br2)In short, $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ lets me add one pattern to the stack, and $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ let me add a whole list.",
  "hexcasting.page.patterns_as_iotas.escape.1": "To use $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$, I draw it, then another arbitrary pattern. That second pattern is added to the stack.",
  "hexcasting.page.patterns_as_iotas.escape.2": "One may find it helpful to think of this as \"escaping\" the pattern onto the stack, if they happen to be familiar with the science of computers.$(br2)The usual use for this is to copy the pattern to a $(l:items/scroll)$(item)Scroll/$ or $(l:items/slate)$(item)Slate/$ using $(l:patterns/readwrite#hexcasting:write)$(action)Scribe's Gambit/$, and then perhaps decorating with them.",
  "hexcasting.page.patterns_as_iotas.parens.1": "Drawing $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$ makes my drawing of patterns act differently, for a time. Until I draw $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Retrospection/$, the patterns I draw are saved. Then, when I draw $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, they are added to the stack as a list iota.",
  "hexcasting.page.patterns_as_iotas.parens.2": "If I draw another $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Introspection/$, it'll still be saved to the list, but I'll then have to draw $(italic)two/$ $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospections/$ to get back to normal casting.",
  "hexcasting.page.patterns_as_iotas.parens.3": "Also, I can escape the special behavior of $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Intro-/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ by drawing a $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ before them, which will simply add them to the list without affecting which the number of $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospections/$ I need to return to casting.$(br2)If I draw two $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Considerations/$ in a row while $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)introspecting/$, it will add a single $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ to the list.",

  "hexcasting.entry.readwrite": "Reading and Writing",
  "hexcasting.page.readwrite.read": "Copy the iota stored in the item (such as a $(l:items/scroll)$(item)Scroll/$, $(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.readable": "If the item in my other hand holds an iota I can read, returns 1. Otherwise, returns 0.",
  "hexcasting.page.readwrite.read/entity": "Like $(l:patterns/readwrite#hexcasting:read)$(action)Scribe's Reflection/$, but the iota is read out of an item entity instead of my other hand.",
  "hexcasting.page.readwrite.readable/entity": "Also like $(l:patterns/readwrite#hexcasting:readable)$(action)Auditor's Reflection/$, but the status is once again 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)Scrolls/$ or $(l:items/slate)$(item)Slates/$ 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 $(l:items/focus)$(item)Focus/$ for them.",
  "hexcasting.page.readwrite.writable": "If I could save the given iota into the item in my other hand, returns 1. Otherwise, returns 0.",
  "hexcasting.page.readwrite.local.title": "The Ravenmind",
  "hexcasting.page.readwrite.local": "Items are not the only places I can store information, however. I am also able to store that information in the _media of the _Hex itself, much like the stack, but separate. Texts refer to this as the $(l:patterns/readwrite#hexcasting:local)$(thing)ravenmind/$. It holds a single iota, much like a $(l:items/focus)$(item)Focus/$, and begins with $(l:casting/influences)$(thing)Null/$ like the same. It is preserved between iterations of $(l:patterns/meta#hexcasting:for_each)$(action)Thoth's Gambit/$, but only lasts as long as the _Hex it's a part of. Once I stop casting, the value will be lost.",
  "hexcasting.page.readwrite.write/local": "Removes the top iota from the stack, and saves it to my $(l:patterns/readwrite#hexcasting:local)$(thing)ravenmind/$, storing it there until I stop casting the _Hex.",
  "hexcasting.page.readwrite.read/local": "Copy the iota out of my $(l:patterns/readwrite#hexcasting:local)$(thing)ravenmind/$, which I likely just wrote with $(l:patterns/readwrite#hexcasting:write/local)$(action)Huginn's Gambit/$.",

  "hexcasting.entry.meta": "Meta-evaluation",
  "hexcasting.page.meta.eval.1": "Remove a pattern or list of patterns from the stack, then cast them as if I had drawn them myself with my $(l:items/staff)$(item)Staff/$ (until a $(l:patterns/meta#hexcasting:halt)$(action)Charon's Gambit/$ is encountered). If an iota is escaped with $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$ or $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)its ilk/$, it will be pushed to the stack. Otherwise, non-patterns will fail.",
  "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 occurring 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.",
  "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.page.meta.halt.1": "This pattern forcibly halts a _Hex. This is mostly useless on its own, as I could simply just stop writing patterns, or put down my staff.",
  "hexcasting.page.meta.halt.2": "But when combined with $(l:patterns/meta#hexcasting:eval)$(action)Hermes'/$ or $(l:patterns/meta#hexcasting:for_each)$(action)Thoth's Gambits/$, it becomes $(italics)far/$ more interesting. Those patterns serve to 'contain' that halting, and rather than ending the entire _Hex, those gambits end instead. This can be used to cause $(l:patterns/meta#hexcasting:for_each)$(action)Thoth's Gambit/$ not to operate on every iota it's given. An escape from the madness, as it were.",

  "hexcasting.entry.circle_patterns": "Spell Circle Patterns",
  "hexcasting.page.circle_patterns.disclaimer": "These patterns must be cast from a $(l:greatwork/spellcircles)$(item)Spell Circle/$; trying to cast them through a $(l:items/staff)$(item)Staff/$ will fail rather spectacularly.",
  "hexcasting.page.circle_patterns.circle/impetus_pos": "Returns the position of the $(l:greatwork/impetus)$(item)Impetus/$ of this spell circle.",
  "hexcasting.page.circle_patterns.circle/impetus_dir": "Returns the direction the $(l:greatwork/impetus)$(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.akashic/read": "Read the iota associated with the given pattern out of the $(l:greatwork/akashiclib)$(item)Akashic Library/$ with its $(l:greatwork/akashiclib)$(item)Record/$ at the given position. This has no range limit. Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$.",
  "hexcasting.page.akashic_patterns.akashic/write": "Associate the iota with the given pattern in the $(l:greatwork/akashiclib)$(item)Akashic Library/$ with its $(l:greatwork/akashiclib)$(item)Record/$ at the given position. This $(italic)does/$ have a range limit. Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$.",

  "_comment": "Normal Spells",

  "hexcasting.entry.itempicking": "Working with Items",
  "hexcasting.page.itempicking.1": "Certain spells, such as $(l:patterns/spells/blockworks#hexcasting:place_block)$(action)Place Block/$, will consume additional items from my inventory. When this happens, the spell will first look for the item to use, and then draw from all such items in my inventory.$(br2)This process is called \"picking an item.\"",
  "hexcasting.page.itempicking.2": "More specifically:$(li)First, the spell will search for the first valid item in my hotbar to the $(italic)right of my $(l:items/staff)$(item)staff/$, wrapping around at the right-hand side, and starting at the first slot if my $(l:items/staff)$(item)staff/$ is in my off-hand.$(li)Second, the spell will draw that item from as $(italic)far back in my inventory/$ as possible, prioritizing the main inventory over the hotbar.",
  "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.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)Strangely, this explosion doesn't seem to harm me. Perhaps it's because $(italic)I/$ am the one exploding?$(br2)Costs a negligible amount at power 0, plus 3 extra $(l:items/amethyst)$(item)Amethyst Dust/$ 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 one $(l:items/amethyst)$(item)Amethyst Dust/$, plus about 3 extra $(l:items/amethyst)$(item)Amethyst Dust/$s per point of explosion power. Otherwise, the same as $(l:patterns/spells/basic#hexcasting:explode)$(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 $(l:items/amethyst)$(item)Amethyst Dust/$ equal to the square of the length of the vector, plus one for every Impulse except the first targeting an entity.",
  "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 one $(l:items/amethyst)$(item)Amethyst Shard/$ per two blocks travelled.",
  "hexcasting.page.basic_spell.beep.1": "Remove a vector and two numbers from the stack. Plays an $(thing)instrument/$ defined by the first number at the given location, with a $(thing)note/$ defined by the second number. Costs a negligible amount of _media.",
  "hexcasting.page.basic_spell.beep.2": "There appear to be 16 different $(thing)instruments/$ and 25 different $(thing)notes/$. Both are indexed by zero.$(br2)These seem to be the same instruments I can produce with a $(item)Note Block/$, though the reason for each instrument's number being what it is eludes me.$(br2)Either way, I can find the numbers I need to use by inspecting a $(item)Note Block/$ through a $(l:items/lens)$(item)Scrying Lens/$.",

  "hexcasting.entry.blockworks": "Blockworks",
  "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 a negligible amount of _media.",
  "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 a bit more than one $(l:items/amethyst)$(item)Amethyst Dust/$.",
  "hexcasting.page.blockworks.create_water": "Summon a block of water (or insert up to a bucket's worth) into a block at the given position. Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$.",
  "hexcasting.page.blockworks.destroy_water": "Drains either a liquid container at, or a body of liquid around, the given position. Costs about two $(l:items/amethyst)$(item)Charged Amethyst/$.",
  "hexcasting.page.blockworks.conjure_block": "Conjure an ethereal, but solid, block that sparkles with my pigment at the given position. Costs about one $(l:items/amethyst)$(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 $(l:items/amethyst)$(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 a bit more than one $(l:items/amethyst)$(item)Amethyst Dust/$.",
  "hexcasting.page.blockworks.edify": "Forcibly infuse _media into the sapling at the target position, causing it to grow into an $(l:items/edified)$(thing)Edified Tree/$. Costs about one $(l:items/amethyst)$(item)Charged Amethyst/$.",
  "hexcasting.page.blockworks.ignite": "Start a fire on top of the given location, as if a $(item)Fire Charge/$ was applied. Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$.",
  "hexcasting.page.blockworks.extinguish": "Extinguish blocks in a large area. Costs about six $(l:items/amethyst)$(item)Amethyst Dust/$.",

  "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.potion/weakness": "Inflicts $(thing)weakness/$. Base cost is one $(l:items/amethyst)$(item)Amethyst Dust/$ per 10 seconds.",
  "hexcasting.page.nadirs.potion/levitation": "Inflicts $(thing)levitation/$. Base cost is one $(l:items/amethyst)$(item)Amethyst Dust/$ per 5 seconds.",
  "hexcasting.page.nadirs.potion/wither": "Inflicts $(thing)withering/$. Base cost is one $(l:items/amethyst)$(item)Amethyst Dust/$ per second.",
  "hexcasting.page.nadirs.potion/poison": "Inflicts $(thing)poison/$. Base cost is one $(l:items/amethyst)$(item)Amethyst Dust/$ per 3 seconds.",
  "hexcasting.page.nadirs.potion/slowness": "Inflicts $(thing)slowness/$. Base cost is one $(l:items/amethyst)$(item)Amethyst Dust/$ per 5 seconds.",

  "hexcasting.entry.hexcasting_spell": "Crafting Casting Items",
  "hexcasting.page.hexcasting_spell.basics": "These three spells each create an $(l:items/hexcasting)$(thing)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 $(l:items/amethyst)$(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 $(l:items/amethyst)$(item)Charged Amethyst/$.",
  "hexcasting.page.hexcasting_spell.craft/trinket": "Costs about five $(l:items/amethyst)$(item)Charged Amethysts/$.",
  "hexcasting.page.hexcasting_spell.craft/artifact": "Costs about ten $(l:items/amethyst)$(item)Charged Amethysts/$.",
  "hexcasting.page.hexcasting_spell.recharge.1": "Recharge a _media-containing item in my other hand. Costs about one $(l:items/amethyst)$(item)Amethyst Shard/$.",
  "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 $(l:items/amethyst)$(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 $(l:items/amethyst)$(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 $(l:items/hexcasting)$(item)Trinkets/$ I have put an erroneous spell into, for example.$(br2)This also works to clear a $(l:items/focus)$(item)Focus/$ or $(l:items/spellbook)$(item)Spellbook/$ page, unsealing them in the process.",

  "hexcasting.entry.sentinels": "Sentinels",
  "hexcasting.page.sentinels.1": "$(italic)Hence, away! Now all is well,$(br)One aloof stand sentinel./$$(br2)A $(l:patterns/spells/sentinels)$(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 can touch it.$(li)Only my _Hexes can interact with it.$(li)Once summoned, it stays in place until banished.$(li)I am always able to see it if I'm close enough, even through solid objects.",
  "hexcasting.page.sentinels.sentinel/create": "Summons my $(l:patterns/spells/sentinels)$(thing)sentinel/$ at the given position. Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$.",
  "hexcasting.page.sentinels.sentinel/destroy": "Banish my $(l:patterns/spells/sentinels)$(thing)sentinel/$, and remove it from the world. Costs a negligible amount of _media.",
  "hexcasting.page.sentinels.sentinel/get_pos": "Add the position of my $(l:patterns/spells/sentinels)$(thing)sentinel/$ to the stack, or $(l:casting/influences)$(thing)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 $(l:patterns/spells/sentinels)$(thing)sentinel/$, or $(l:casting/influences)$(thing)Null/$ if it isn't summoned. Costs a negligible amount of _media.",

  "hexcasting.page.colorize": "I must be holding a $(l:items/pigments)$(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 one $(l:items/amethyst)$(item)Amethyst Dust/$.",

  "hexcasting.page.create_lava.1": "Summon a block of lava (or insert up to a bucket's worth) into a block at the given position. Costs about one $(l:items/amethyst)$(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.lightning": "I command the heavens! This spell will summon a bolt of lightning to strike the earth where I direct it. Costs about three $(l:items/amethyst)$(item)Amethyst Shards/$.",
  "hexcasting.page.weather_manip.summon_rain": "I control the clouds! This spell will summon rain across the world I cast it upon. Costs about one $(l:items/amethyst)$(item)Charged Amethyst/$. 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 one $(l:items/amethyst)$(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 one quarter of an $(l:items/amethyst)$(item)Amethyst Dust/$, per meter of radius, per second in flight.",

  "hexcasting.page.teleport.1": "Far more powerful than $(l:patterns/spells/basic#hexcasting:blink)$(action)Blink/$, this spell lets me teleport nearly anywhere in the entire world! There does seem to be a limit, but it is $(italic)much/$ greater than the normal radius of influence I am used to.",
  "hexcasting.page.teleport.2": "The entity will be teleported by the given vector, which is an offset from its given position. No matter the distance, it always seems to cost about ten $(l:items/amethyst)$(item)Charged Amethyst/$.$(br2)The transference is not perfect, and it seems when teleporting something as complex as a player, their inventory doesn't $(italic)quite/$ stay attached, and tends to splatter everywhere at the destination. In addition, the target will be forcibly removed from anything inanimate they are riding or sitting on ... but I've read scraps that suggest animals can come along for the ride, so to speak.",

  "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.potion/regeneration": "Bestows $(thing)regeneration/$. Base cost is one $(l:items/amethyst)$(item)Amethyst Dust/$ per second.",
  "hexcasting.page.zeniths.potion/night_vision": "Bestows $(thing)night vision/$. Base cost is one $(l:items/amethyst)$(item)Amethyst Dust/$ per 5 seconds.",
  "hexcasting.page.zeniths.potion/absorption": "Bestows $(thing)absorption/$. Base cost is one $(l:items/amethyst)$(item)Amethyst Dust/$ per second.",
  "hexcasting.page.zeniths.potion/haste": "Bestows $(thing)haste/$. Base cost is one $(l:items/amethyst)$(item)Amethyst Dust/$ per 3 seconds.",
  "hexcasting.page.zeniths.potion/strength": "Bestows $(thing)strength/$. Base cost is one $(l:items/amethyst)$(item)Amethyst Dust/$ per 3 seconds.",

  "hexcasting.page.greater_sentinel.1": "Summon a greater version of my $(l:patterns/spells/sentinels)$(thing)Sentinel/$. Costs about two $(l:items/amethyst)$(item)Amethyst Dust/$.",
  "hexcasting.page.greater_sentinel.2": "The stronger $(l:patterns/spells/sentinels)$(thing)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 $(l:patterns/spells/sentinels)$(thing)sentinel/$, about 16 blocks. In other words, no matter where in the world I am, I can interact with things around my $(l:patterns/spells/sentinels)$(thing)sentinel/$ (the mysterious forces of chunkloading notwithstanding).",

  "hexcasting.page.make_battery.1": "Infuse a bottle with _media to form a $(l:items/phials)$(item)Phial./$",
  "hexcasting.page.make_battery.2": "Similarly to the spells for $(l:patterns/spells/hexcasting)$(action)Crafting Casting Items/$, I must hold a $(item)Glass Bottle/$ in my other hand, and provide the spell with a dropped stack of $(l:items/amethyst)$(item)Amethyst/$. See $(l:items/phials)this page/$ for more information.$(br2)Costs about one $(l:items/amethyst)$(item)Charged Amethyst/$.",

  "hexcasting.page.brainsweep_spell.1": "I cannot make heads or tails of this spell... To be honest, I'm not sure I want to know what it does.",

  "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.page.interop.1": "The art of _Hexcasting is versatile. If I find that my world has been $(italic)modified/$ by certain other powers, it's possible that I may use _Hexcasting in harmony and combination with them.",
  "hexcasting.page.interop.2": "I should keep in mind, however, that Nature seems to have paid less attention in crafting these aspects of my art; strange behavior and bugs are to be expected. I'm sure the mod developer will do her best to correct them, but I must remember this is a less important pastime to her.$(br2)I may also find that there are sharp disregards to balance in the costs and effects of the interoperating powers. In such a case I suppose I will have to be responsible and restrain myself from using them.",
  "hexcasting.page.interop.3": "Finally, if I find myself interested in the lore and stories of this world, I do not think any notes compiled while examining these interoperations should be considered as anything more than light trifles.",

  "hexcasting.entry.interop.gravity": "Gravity Changer",
  "hexcasting.page.interop.gravity.1": "I have discovered actions to get and set an entity's gravity. I find them interesting, if slightly nauseating.$(br2)Interestingly, although $(l:patterns/great_spells/flight)$(action)Flight/$ is a great spell, and manipulates gravity similarly, these are not. It baffles me why... Perhaps the mod developer wanted players to have fun, for once.",
  "hexcasting.page.interop.gravity.get": "Get the main direction gravity pulls the given entity in, as a unit vector. For most entities, this will be down, <0, -1, 0>.",
  "hexcasting.page.interop.gravity.set": "Set the main direction gravity pulls the given entity in. The given vector will be coerced into the nearest axis, as per $(l:patterns/math#hexcasting:coerce_axial)$(action)Axial Purification/$. Costs about one $(l:items/amethyst)$(item)Charged Amethyst/$.",

  "hexcasting.entry.interop.pehkui": "Pehkui",
  "hexcasting.page.interop.pehkui.1": "I have discovered methods of changing the size of entities, and querying how much larger or smaller they are than normal.",
  "hexcasting.page.interop.pehkui.get": "Get the scale of the entity, as a proportion of their normal size. For most entities, this will be 1.",
  "hexcasting.page.interop.pehkui.set": "Set the scale of the entity, passing in a proportion of their normal size. Costs about one $(l:items/amethyst)$(item)Amethyst Shard/$.",

  "": ""
}
