From 76449b7482b6dfda07bfb1dd024d5175709576d6 Mon Sep 17 00:00:00 2001 From: afsol Date: Thu, 4 Jun 2026 12:55:03 +0300 Subject: [PATCH 1/3] Stabilize NeoForge 1.21.1 dependency bootstrap --- .gitignore | 1 + Common/build.gradle | 2 +- Fabric/build.gradle | 39 +- Fabric/gradle.properties | 2 +- Neoforge/build.gradle | 21 +- build.gradle | 61 +-- gradle.properties | 7 +- gradle/wrapper/gradle-wrapper.properties | 2 +- scripts/check-maven-endpoints.ps1 | 76 ++++ scripts/fetch-maven-via-ssh.ps1 | 456 +++++++++++++++++++++++ settings.gradle | 1 + 11 files changed, 566 insertions(+), 102 deletions(-) create mode 100644 scripts/check-maven-endpoints.ps1 create mode 100644 scripts/fetch-maven-via-ssh.ps1 diff --git a/.gitignore b/.gitignore index 6cd3f2bc8..feb2e6394 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ build # other eclipse run +test-modpack/ .DS_Store # Idk what prompted gradle to create this folder diff --git a/Common/build.gradle b/Common/build.gradle index 1f2de764e..56aa8336f 100644 --- a/Common/build.gradle +++ b/Common/build.gradle @@ -39,7 +39,7 @@ dependencies { modCompileOnly "libs:paucal:$paucalVersion+$minecraftVersion-common" // i do not know why the xplat and mod jars are in different coordinates - modCompileOnly "vazkii.patchouli:Patchouli-xplat:1.21-$patchouliVersion-SNAPSHOT" + modCompileOnly "vazkii.patchouli:Patchouli-xplat:1.21.1-$patchouliVersion" modCompileOnly "com.samsthenerd.inline:inline-common:1.21.1-1.2.2-74" // === OPTIONAL DEPS === diff --git a/Fabric/build.gradle b/Fabric/build.gradle index b688e9fd7..3fbc11998 100644 --- a/Fabric/build.gradle +++ b/Fabric/build.gradle @@ -3,37 +3,18 @@ plugins { id 'com.gradleup.shadow' } +def isNeoForgeOnlyInvocation = gradle.startParameter.taskNames + && gradle.startParameter.taskNames.every { it == ":Neoforge" || it.startsWith(":Neoforge:") || it == "Neoforge" || it.startsWith("Neoforge:") } + +if (isNeoForgeOnlyInvocation) { + return +} + architectury { platformSetupLoomIde() fabric() } -// FIXME: update dependencies/versions before releasing 0.12 -pkSubproj { - pkPublish = true - curseforgeJar = remapJar.archiveFile - curseforgeDependencies([ - "paucal", - "patchouli", - "fabric-language-kotlin", - "inline", - "cloth-config", - "cardinal-components-api", - "fabric-api", - ]) - modrinthJar = remapJar.archiveFile - modrinthDependencies([ - "paucal:dabyDTwJ", // 0.6.0-fabric - "patchouli:1.20.1-80-fabric", - "fabric-language-kotlin:1.9.4+kotlin.1.8.21", - "inline:1.20.1-1.0.1-fabric", - "cloth-config:11.1.106+fabric", - "cardinal-components-api:5.2.1", - "fabric-api:0.84.0+1.20.1", - ]) -} - - loom { mixin.defaultRefmapName = "hexcasting.mixins.refmap.json" @@ -130,7 +111,7 @@ dependencies { // === MANDATORY DEPS === modImplementation("libs:paucal:$paucalVersion+$minecraftVersion-fabric") // dear mod devs, don't put the platform in the middle of your version code - modImplementation "vazkii.patchouli:Patchouli:1.21-$patchouliVersion-FABRIC-SNAPSHOT" + modImplementation "vazkii.patchouli:Patchouli:1.21.1-$patchouliVersion-FABRIC" modImplementation "com.samsthenerd.inline:inline-fabric:$minecraftVersion-$inlineVersion" modImplementation "io.wispforest:accessories-fabric:$accessoriesVersion" @@ -166,7 +147,7 @@ dependencies { // i am speed // sodium is causing frustum mixin errors so don't use it // modImplementation "maven.modrinth:sodium:${sodiumVersion}" - modImplementation "maven.modrinth:lithium:${lithiumVersion}-fabric" +// modImplementation "maven.modrinth:lithium:${lithiumVersion}" // modImplementation "maven.modrinth:phosphor:${phosphorVersion}" @@ -211,4 +192,4 @@ tasks.named('sourcesJar') { duplicatesStrategy = DuplicatesStrategy.EXCLUDE } -jar.finalizedBy(remapJar) \ No newline at end of file +jar.finalizedBy(remapJar) diff --git a/Fabric/gradle.properties b/Fabric/gradle.properties index 3e4e03d1c..e57f17757 100644 --- a/Fabric/gradle.properties +++ b/Fabric/gradle.properties @@ -18,7 +18,7 @@ modmenuVersion=7.0.1 # Optimizations sodiumVersion=mc1.20-0.4.10+build.27 -lithiumVersion=mc1.21.1-0.15.1 +lithiumVersion=E5eJVp4O #phosphorVersion=mc1.19.x-0.8.1 diff --git a/Neoforge/build.gradle b/Neoforge/build.gradle index 9403d9e76..1b046b436 100644 --- a/Neoforge/build.gradle +++ b/Neoforge/build.gradle @@ -8,25 +8,6 @@ architectury { neoForge() } -// FIXME: update dependencies/versions before releasing 0.12 -pkSubproj { - pkPublish = true - curseforgeJar = jar.archiveFile - curseforgeDependencies([ - "paucal", - "patchouli", - "caelus", - "inline", - ]) - modrinthJar = jar.archiveFile - modrinthDependencies([ - "paucal:HyBiJPtT", // 0.6.0-forge - "patchouli:1.20.1-80-forge", - "caelus:3.1.0+1.20", - "inline:1.20.1-1.0.1-forge", - ]) -} - configurations { common { canBeResolved = true @@ -100,7 +81,7 @@ dependencies { runtimeOnly("top.theillusivec4.curios:curios-neoforge:$curiosVersion+$minecraftVersion") modImplementation "libs:paucal:$paucalVersion+$minecraftVersion-neoforge" - modImplementation "vazkii.patchouli:Patchouli:1.21-$patchouliVersion-NEOFORGE-SNAPSHOT" + modImplementation "vazkii.patchouli:Patchouli:1.21.1-$patchouliVersion-NEOFORGE" modImplementation "com.illusivesoulworks.caelus:caelus-neoforge:$caelusVersion" modImplementation "com.samsthenerd.inline:inline-neoforge:1.21.1-1.2.2-74" // needed for inline to run diff --git a/build.gradle b/build.gradle index a95e19637..01a2393a9 100644 --- a/build.gradle +++ b/build.gradle @@ -1,78 +1,43 @@ -import at.petrak.pkpcpbp.MiscUtil +buildscript { + repositories { + mavenLocal() + maven { url "https://maven.architectury.dev/" } + } + dependencies { + classpath "architectury-plugin:architectury-plugin.gradle.plugin:3.4.160" + } +} plugins { // used for something?? - id 'dev.architectury.loom' version '1.13-SNAPSHOT' apply false - // used for multi-loader stuff, NOT for the archi API - id 'architectury-plugin' version '3.4-SNAPSHOT' + id 'dev.architectury.loom' version '1.13.469' apply false id 'com.gradleup.shadow' version '8.3.6' apply false id "org.jetbrains.kotlin.jvm" - - id("at.petra-k.pkpcpbp.PKPlugin") version "0.2.0-pre-104" - id("at.petra-k.pkpcpbp.PKSubprojPlugin") version "0.2.0-pre-104" apply false - id("at.petra-k.pkpcpbp.PKJson5Plugin") version "0.2.0-pre-104" apply false } +apply plugin: "architectury-plugin" + architectury { minecraft = project.minecraftVersion } -pkpcpbp { - // if something goes wrong in CI, make sure we can see the logs to figure out why - superDebugInfo = System.getenv("CI") != null - // we set the maven coordinates manually in the subprojects block - doProjectMetadata = false - setupJarMetadata = true - setupMavenMetadata = true - javaVersion = 21 - modInfo { - modID = project.modID - mcVersion = project.minecraftVersion - modVersion = project.modVersion - } - curseforgeInfo { - id = 569849 - stability = "beta" - token = System.getenv("CURSEFORGE_TOKEN") - } - modrinthInfo { - id = "nTW3yKrm" - stability = "beta" - token = System.getenv("MODRINTH_TOKEN") - } -} - subprojects { apply plugin: 'dev.architectury.loom' apply plugin: 'architectury-plugin' apply plugin: 'java' apply plugin: 'kotlin' apply plugin: 'maven-publish' - apply plugin: 'at.petra-k.pkpcpbp.PKSubprojPlugin' - apply plugin: 'at.petra-k.pkpcpbp.PKJson5Plugin' group = "at.petra-k.$modID" base.archivesName = "$modID-$platform-$minecraftVersion" version = modVersion - def isRelease = MiscUtil.isRelease(MiscUtil.getMostRecentPush(project)) def buildNumber = System.getenv("BUILD_NUMBER") - if (!isRelease && buildNumber != null) { + if (buildNumber != null) { version += "-pre-$buildNumber" } - pkSubproj { - platform = project.platform - artifactId = base.archivesName.get() - versionDisplayName = "$platform-$minecraftVersion-$modVersion" - } - - pkJson5 { - autoProcessJson5 = true - autoProcessJson5Flattening = true - } - loom { silentMojangMappingsLicense() // heroes in a half-shell } diff --git a/gradle.properties b/gradle.properties index 2d20178f0..9b95fff10 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,6 +2,9 @@ # This is required to provide enough memory for the Minecraft decompilation process. org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false +org.gradle.workers.max=1 +systemProp.org.gradle.internal.http.connectionTimeout=120000 +systemProp.org.gradle.internal.http.socketTimeout=120000 modID=hexcasting modName=Hex Casting @@ -17,7 +20,7 @@ fabric_loader_version=0.16.14 # this is the version published to modrinth/cf i swear # haha not anymore it's from mavenLocal paucalVersion=0.7.1-noelle -patchouliVersion=88 +patchouliVersion=93 accessoriesVersion=1.1.0-beta.16+1.21.1 emiVersion=1.1.18+1.21.1 @@ -28,4 +31,4 @@ inlineVersion=1.2.2-74 clothConfigVersion=15.0.140 # Runtime only -architecturyVersion=13.0.2 \ No newline at end of file +architecturyVersion=13.0.2 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ca025c83a..c06f5fd41 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip -networkTimeout=10000 +networkTimeout=120000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/scripts/check-maven-endpoints.ps1 b/scripts/check-maven-endpoints.ps1 new file mode 100644 index 000000000..0561d03c4 --- /dev/null +++ b/scripts/check-maven-endpoints.ps1 @@ -0,0 +1,76 @@ +param( + [int]$ConnectTimeoutSeconds = 10, + [int]$MaxTimeSeconds = 20 +) + +$ErrorActionPreference = "Continue" + +$checks = @( + @{ + Name = "Architectury plugin" + Url = "https://maven.architectury.dev/architectury-plugin/architectury-plugin.gradle.plugin/3.4.160/architectury-plugin.gradle.plugin-3.4.160.jar" + }, + @{ + Name = "Architectury Loom" + Url = "https://maven.architectury.dev/dev/architectury/architectury-loom/1.13.469/architectury-loom-1.13.469.jar" + }, + @{ + Name = "Tiny Remapper" + Url = "https://maven.architectury.dev/dev/architectury/tiny-remapper/1.1.0/tiny-remapper-1.1.0.jar" + }, + @{ + Name = "Mercury" + Url = "https://maven.architectury.dev/dev/architectury/mercury/0.4.3.18/mercury-0.4.3.18.jar" + }, + @{ + Name = "MCP Injector" + Url = "https://repo.spongepowered.org/repository/maven-public/de/oceanlabs/mcp/mcinjector/3.8.0/mcinjector-3.8.0.jar" + }, + @{ + Name = "DiffPatch" + Url = "https://repo.spongepowered.org/repository/maven-public/net/minecraftforge/DiffPatch/2.0.7/DiffPatch-2.0.7.jar" + }, + @{ + Name = "FastUtil" + Url = "https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil/8.5.12/fastutil-8.5.12.jar" + }, + @{ + Name = "Guava" + Url = "https://repo.maven.apache.org/maven2/com/google/guava/guava/32.1.2-jre/guava-32.1.2-jre.jar" + }, + @{ + Name = "Gson" + Url = "https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar" + }, + @{ + Name = "Jankson" + Url = "https://repo.maven.apache.org/maven2/blue/endless/jankson/1.2.2/jankson-1.2.2.jar" + }, + @{ + Name = "Fabric API" + Url = "https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api/0.100.1+1.21/fabric-api-0.100.1+1.21.jar" + } +) + +foreach ($check in $checks) { + Write-Host "== $($check.Name) ==" + Write-Host $check.Url + + $head = & curl.exe -I -L --connect-timeout $ConnectTimeoutSeconds --max-time $MaxTimeSeconds --silent --show-error $check.Url 2>&1 + if ($LASTEXITCODE -ne 0) { + Write-Host "HEAD failed: $head" -ForegroundColor Red + continue + } + + $status = ($head | Select-String -Pattern "^HTTP/" | Select-Object -Last 1).Line + $length = ($head | Select-String -Pattern "^Content-Length:" | Select-Object -Last 1).Line + Write-Host $status + if ($length) { Write-Host $length } + + $probe = & curl.exe -L --range 0-65535 --connect-timeout $ConnectTimeoutSeconds --max-time $MaxTimeSeconds --output NUL --silent --show-error --write-out "probe=%{http_code} speed=%{speed_download}Bps time=%{time_total}s" $check.Url 2>&1 + if ($LASTEXITCODE -ne 0) { + Write-Host "Probe failed: $probe" -ForegroundColor Red + } else { + Write-Host $probe + } +} diff --git a/scripts/fetch-maven-via-ssh.ps1 b/scripts/fetch-maven-via-ssh.ps1 new file mode 100644 index 000000000..0abf9e6b7 --- /dev/null +++ b/scripts/fetch-maven-via-ssh.ps1 @@ -0,0 +1,456 @@ +param( + [string]$SshFile = "D:\project\bots\ssh\ssh.txt" +) + +$ErrorActionPreference = "Stop" + +$python = "C:\Users\artem\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe" +if (!(Test-Path $python)) { + $python = "python" +} + +$script = @' +import pathlib +import posixpath +import shlex +import hashlib +import json +import sys +import xml.etree.ElementTree as ET +import zipfile + +import paramiko + +ssh_file = pathlib.Path(sys.argv[1]) +parts = ssh_file.read_text(encoding="utf-8").strip().split(None, 1) +if len(parts) != 2: + raise SystemExit("SSH file must contain ' '") + +target, password = parts +user, host = target.split("@", 1) if "@" in target else ("root", target) + +artifacts = [ + ("architectury-plugin", "architectury-plugin.gradle.plugin", "3.4.160", "https://maven.architectury.dev"), + ("org.jetbrains.kotlin", "kotlin-stdlib-jdk8", "1.3.72", "https://repo.maven.apache.org/maven2"), + ("org.jetbrains.kotlin.jvm", "org.jetbrains.kotlin.jvm.gradle.plugin", "2.0.21", "https://plugins.gradle.org/m2"), + ("org.jetbrains.kotlin", "kotlin-gradle-plugin", "2.0.21", "https://repo.maven.apache.org/maven2"), + ("org.jetbrains.kotlin", "kotlin-reflect", "1.3.72", "https://repo.maven.apache.org/maven2"), + ("gradle.plugin.org.jetbrains.gradle.plugin.idea-ext", "gradle-idea-ext", "0.10", "https://plugins.gradle.org/m2"), + ("com.gradleup.shadow", "com.gradleup.shadow.gradle.plugin", "8.3.6", "https://plugins.gradle.org/m2"), + ("com.gradleup.shadow", "shadow-gradle-plugin", "8.3.6", "https://plugins.gradle.org/m2"), + ("dev.architectury", "architectury-transformer", "5.2.87", "https://maven.architectury.dev"), + ("dev.architectury.loom", "dev.architectury.loom.gradle.plugin", "1.13.469", "https://maven.architectury.dev"), + ("dev.architectury", "architectury-loom", "1.13.469", "https://maven.architectury.dev"), + ("dev.architectury", "tiny-remapper", "1.1.0", "https://maven.architectury.dev"), + ("dev.architectury", "mercury", "0.4.3.18", "https://maven.architectury.dev"), + ("com.google.code.gson", "gson", "2.8.5", "https://repo.maven.apache.org/maven2"), + ("com.google.code.gson", "gson", "2.10.1", "https://repo.maven.apache.org/maven2"), + ("com.google.guava", "guava", "32.1.2-jre", "https://repo.maven.apache.org/maven2"), + ("com.google.code.findbugs", "jsr305", "3.0.2", "https://repo.maven.apache.org/maven2"), + ("org.apache.groovy", "groovy-bom", "4.0.22", "https://repo.maven.apache.org/maven2"), + ("org.jetbrains.kotlin", "kotlin-gradle-plugins-bom", "2.0.21", "https://repo.maven.apache.org/maven2"), + ("org.junit", "junit-bom", "5.11.0", "https://repo.maven.apache.org/maven2"), + ("org.junit", "junit-bom", "5.10.2", "https://repo.maven.apache.org/maven2"), + ("org.junit", "junit-bom", "5.10.1", "https://repo.maven.apache.org/maven2"), + ("org.junit", "junit-bom", "5.7.1", "https://repo.maven.apache.org/maven2"), + ("org.checkerframework", "checker-qual", "3.12.0", "https://repo.maven.apache.org/maven2"), + ("org.checkerframework", "checker-qual", "3.33.0", "https://repo.maven.apache.org/maven2"), + ("com.google.errorprone", "error_prone_annotations", "2.7.1", "https://repo.maven.apache.org/maven2"), + ("com.google.errorprone", "error_prone_annotations", "2.18.0", "https://repo.maven.apache.org/maven2"), + ("com.google.j2objc", "j2objc-annotations", "1.3", "https://repo.maven.apache.org/maven2"), + ("com.google.j2objc", "j2objc-annotations", "2.8", "https://repo.maven.apache.org/maven2"), + ("com.fasterxml.jackson", "jackson-bom", "2.17.2", "https://repo.maven.apache.org/maven2"), + ("com.fasterxml.woodstox", "woodstox-core", "6.5.1", "https://repo.maven.apache.org/maven2"), + ("jakarta.platform", "jakarta.jakartaee-bom", "9.1.0", "https://repo.maven.apache.org/maven2"), + ("org.apache.maven", "maven-bom", "4.0.0-alpha-9", "https://repo.maven.apache.org/maven2"), + ("org.apache.maven", "maven-api-meta", "4.0.0-alpha-9", "https://repo.maven.apache.org/maven2"), + ("org.jetbrains.kotlinx", "kotlinx-coroutines-bom", "1.6.4", "https://repo.maven.apache.org/maven2"), + ("it.unimi.dsi", "fastutil", "8.5.12", "https://repo.maven.apache.org/maven2"), + ("blue.endless", "jankson", "1.2.2", "https://repo.maven.apache.org/maven2"), + ("vazkii.patchouli", "Patchouli-xplat", "1.21.1-93", "https://maven.blamejared.com"), + ("vazkii.patchouli", "Patchouli", "1.21.1-93-NEOFORGE", "https://maven.blamejared.com"), + ("vazkii.patchouli", "Patchouli", "1.21.1-93-FABRIC", "https://maven.blamejared.com"), + ("com.samsthenerd.inline", "inline-common", "1.21.1-1.2.2-74", "https://maven.blamejared.com"), + ("com.samsthenerd.inline", "inline-fabric", "1.21.1-1.2.2-74", "https://maven.blamejared.com"), + ("dev.emi", "emi-xplat-intermediary", "1.1.18+1.21.1", "https://maven.terraformersmc.com/releases", ["api"]), + ("io.wispforest", "accessories-common", "1.1.0-beta.16+1.21.1", "https://maven.wispforest.io/releases"), + ("io.wispforest", "accessories-fabric", "1.1.0-beta.16+1.21.1", "https://maven.wispforest.io/releases"), + ("net.fabricmc", "fabric-language-kotlin", "1.12.3+kotlin.2.0.21", "https://maven.fabricmc.net"), + ("org.ladysnake.cardinal-components-api", "cardinal-components-base", "6.1.3", "https://maven.ladysnake.org/releases"), + ("org.ladysnake.cardinal-components-api", "cardinal-components-entity", "6.1.3", "https://maven.ladysnake.org/releases"), + ("org.ladysnake.cardinal-components-api", "cardinal-components-item", "6.1.3", "https://maven.ladysnake.org/releases"), + ("org.ladysnake.cardinal-components-api", "cardinal-components-block", "6.1.3", "https://maven.ladysnake.org/releases"), + ("com.terraformersmc", "modmenu", "7.0.1", "https://maven.terraformersmc.com/releases"), + ("maven.modrinth", "lithium", "E5eJVp4O", "https://api.modrinth.com/maven"), + ("dev.emi", "emi-fabric", "1.1.18+1.21.1", "https://maven.terraformersmc.com/releases", ["api"]), + ("me.shedaniel.cloth", "cloth-config", "15.0.130", "https://maven.shedaniel.me"), + ("net.fabricmc.fabric-api", "fabric-api", "0.100.1+1.21", "https://maven.fabricmc.net"), + ("net.fabricmc", "intermediary", "1.21.1", "https://maven.fabricmc.net", ["v2"]), + ("io.wispforest", "endec", "0.1.8", "https://maven.wispforest.io/releases"), + ("io.wispforest.endec", "gson", "0.1.5", "https://maven.wispforest.io/releases"), + ("io.wispforest.endec", "jankson", "0.1.5", "https://maven.wispforest.io/releases"), + ("io.wispforest.endec", "netty", "0.1.4", "https://maven.wispforest.io/releases"), + ("io.wispforest", "owo-lib", "0.12.15+1.21", "https://maven.wispforest.io/releases"), + ("me.shedaniel.cloth", "basic-math", "0.6.1", "https://maven.shedaniel.me"), + ("me.shedaniel.cloth", "cloth-config-fabric", "15.0.140", "https://maven.shedaniel.me"), + ("com.github.Virtuoel", "Pehkui", "3.8.3", "https://jitpack.io"), + ("net.neoforged", "neoforge", "21.1.172", "https://maven.neoforged.net/releases", ["userdev"]), + ("net.fabricmc", "fabric-loader", "0.16.14", "https://maven.fabricmc.net"), + ("de.oceanlabs.mcp", "mcinjector", "3.8.0", "https://repo.spongepowered.org/repository/maven-public"), + ("net.minecraftforge", "DiffPatch", "2.0.7", "https://repo.spongepowered.org/repository/maven-public"), + ("org.apache.logging.log4j", "log4j-api", "2.24.1", "https://repo.maven.apache.org/maven2"), + ("com.mojang", "logging", "1.2.7", "https://libraries.minecraft.net"), + ("org.apache.logging.log4j", "log4j-api", "2.22.1", "https://repo.maven.apache.org/maven2"), + ("org.apache.logging.log4j", "log4j-core", "2.22.1", "https://repo.maven.apache.org/maven2"), + ("org.apache.logging.log4j", "log4j-slf4j2-impl", "2.22.1", "https://repo.maven.apache.org/maven2"), + ("org.jline", "jline-reader", "3.20.0", "https://repo.maven.apache.org/maven2"), + ("org.jline", "jline-terminal", "3.20.0", "https://repo.maven.apache.org/maven2"), + ("commons-io", "commons-io", "2.15.1", "https://repo.maven.apache.org/maven2"), + ("org.codehaus.plexus", "plexus-utils", "3.3.0", "https://repo.maven.apache.org/maven2"), + ("net.sf.jopt-simple", "jopt-simple", "5.0.4", "https://repo.maven.apache.org/maven2"), + ("com.electronwill.night-config", "core", "3.8.2", "https://repo.maven.apache.org/maven2"), + ("com.electronwill.night-config", "toml", "3.8.2", "https://repo.maven.apache.org/maven2"), + ("com.machinezoo.noexception", "noexception", "1.7.1", "https://repo.maven.apache.org/maven2"), + ("cpw.mods", "bootstraplauncher", "2.0.2", "https://maven.neoforged.net/releases"), + ("cpw.mods", "modlauncher", "11.0.4", "https://maven.neoforged.net/releases"), + ("cpw.mods", "securejarhandler", "3.0.8", "https://maven.neoforged.net/releases"), + ("net.fabricmc", "sponge-mixin", "0.15.2+mixin.0.8.7", "https://maven.fabricmc.net"), + ("net.jodah", "typetools", "0.6.3", "https://repo.maven.apache.org/maven2"), + ("net.minecrell", "terminalconsoleappender", "1.3.0", "https://repo.maven.apache.org/maven2"), + ("net.neoforged.accesstransformers", "at-modlauncher", "10.0.1", "https://maven.neoforged.net/releases"), + ("net.neoforged.fancymodloader", "earlydisplay", "4.0.39", "https://maven.neoforged.net/releases"), + ("net.neoforged.fancymodloader", "loader", "4.0.39", "https://maven.neoforged.net/releases"), + ("net.neoforged", "JarJarFileSystems", "0.4.1", "https://maven.neoforged.net/releases"), + ("net.neoforged", "JarJarMetadata", "0.4.1", "https://maven.neoforged.net/releases"), + ("net.neoforged", "JarJarSelector", "0.4.1", "https://maven.neoforged.net/releases"), + ("net.neoforged", "accesstransformers", "10.0.1", "https://maven.neoforged.net/releases"), + ("net.neoforged", "bus", "8.0.2", "https://maven.neoforged.net/releases"), + ("net.neoforged", "coremods", "7.0.3", "https://maven.neoforged.net/releases"), + ("net.neoforged", "mergetool", "2.0.0", "https://maven.neoforged.net/releases", ["api"]), + ("org.antlr", "antlr4-runtime", "4.13.1", "https://repo.maven.apache.org/maven2"), + ("org.apache.commons", "commons-lang3", "3.14.0", "https://repo.maven.apache.org/maven2"), + ("org.openjdk.nashorn", "nashorn-core", "15.4", "https://repo.maven.apache.org/maven2"), + ("org.slf4j", "slf4j-api", "2.0.9", "https://repo.maven.apache.org/maven2"), + ("commons-beanutils", "commons-beanutils", "1.9.3", "https://repo.maven.apache.org/maven2"), + ("commons-collections", "commons-collections", "3.2.2", "https://repo.maven.apache.org/maven2"), + ("commons-logging", "commons-logging", "1.2", "https://repo.maven.apache.org/maven2"), + ("com.opencsv", "opencsv", "4.4", "https://repo.maven.apache.org/maven2"), + ("de.siegmar", "fastcsv", "2.0.0", "https://repo.maven.apache.org/maven2"), + ("net.neoforged.installertools", "cli-utils", "2.1.2", "https://maven.neoforged.net/releases"), + ("net.neoforged.installertools", "installertools", "2.1.2", "https://maven.neoforged.net/releases"), + ("net.neoforged.installertools", "jarsplitter", "2.1.2", "https://maven.neoforged.net/releases"), + ("org.apache.commons", "commons-collections4", "4.2", "https://repo.maven.apache.org/maven2"), + ("org.apache.commons", "commons-lang3", "3.8.1", "https://repo.maven.apache.org/maven2"), + ("org.apache.commons", "commons-text", "1.3", "https://repo.maven.apache.org/maven2"), +] + +extra_files = [ + ("net.neoforged", "neoform", "1.21.1-20240808.144430", "https://maven.neoforged.net/releases", "zip", None), + ("net.neoforged", "neoforge", "21.1.172", "https://maven.neoforged.net/releases", "jar", "installer"), + ("net.neoforged", "neoforge", "21.1.172", "https://maven.neoforged.net/releases", "jar", "universal"), + ("net.neoforged", "mergetool", "2.0.3", "https://maven.neoforged.net/releases", "jar", "fatjar"), + ("net.neoforged", "AutoRenamingTool", "2.0.3", "https://maven.neoforged.net/releases", "jar", "all"), + ("net.neoforged.installertools", "installertools", "2.1.2", "https://maven.neoforged.net/releases", "jar", "fatjar"), + ("net.neoforged.installertools", "binarypatcher", "2.1.2", "https://maven.neoforged.net/releases", "jar", "fatjar"), +] + +repo_by_group = [ + ("architectury-plugin", "https://maven.architectury.dev"), + ("dev.architectury", "https://maven.architectury.dev"), + ("net.fabricmc", "https://maven.fabricmc.net"), + ("net.fabricmc.fabric-api", "https://maven.fabricmc.net"), + ("me.zeroeightsix", "https://maven.fabricmc.net"), + ("io.wispforest", "https://maven.wispforest.io/releases"), + ("io.wispforest.endec", "https://maven.wispforest.io/releases"), + ("me.shedaniel", "https://maven.shedaniel.me"), + ("com.github.Virtuoel", "https://jitpack.io"), + ("net.neoforged", "https://maven.neoforged.net/releases"), + ("cpw.mods", "https://maven.neoforged.net/releases"), + ("org.ladysnake.cardinal-components-api", "https://maven.ladysnake.org/releases"), + ("com.terraformersmc", "https://maven.terraformersmc.com/releases"), + ("maven.modrinth", "https://api.modrinth.com/maven"), + ("de.oceanlabs.mcp", "https://repo.spongepowered.org/repository/maven-public"), + ("net.minecraftforge", "https://repo.spongepowered.org/repository/maven-public"), + ("com.mojang", "https://libraries.minecraft.net"), + ("vazkii.patchouli", "https://maven.blamejared.com"), + ("com.samsthenerd.inline", "https://maven.blamejared.com"), + ("dev.emi", "https://maven.terraformersmc.com/releases"), + ("dev.architectury.loom", "https://maven.architectury.dev"), +] + +local_m2 = pathlib.Path.home() / ".m2" / "repository" +gradle_file_cache = pathlib.Path.home() / ".gradle" / "caches" / "modules-2" / "files-2.1" +remote_root = "/tmp/hexcasting-maven-prefetch" + +client = paramiko.SSHClient() +client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) +client.connect(host, username=user, password=password, timeout=15, banner_timeout=15, auth_timeout=15) +sftp = client.open_sftp() + +def run(command: str) -> str: + stdin, stdout, stderr = client.exec_command(command, timeout=120) + out = stdout.read().decode(errors="replace") + err = stderr.read().decode(errors="replace") + code = stdout.channel.recv_exit_status() + if code != 0: + raise RuntimeError(f"remote command failed ({code}): {command}\n{err}") + return out + +def repo_for(group: str, fallback: str) -> str: + for prefix, repo in repo_by_group: + if group == prefix or group.startswith(prefix + "."): + return repo + return "https://repo.maven.apache.org/maven2" + +def relpath(group: str, artifact: str, version: str) -> str: + return "/".join(group.split(".")) + f"/{artifact}/{version}" + +def valid_jar(path: pathlib.Path) -> bool: + try: + with zipfile.ZipFile(path) as jar: + jar.testzip() + return True + except zipfile.BadZipFile: + return False + +def cache_in_gradle(group: str, artifact: str, version: str, path: pathlib.Path) -> None: + digest = hashlib.sha1(path.read_bytes()).hexdigest() + target = gradle_file_cache / group / artifact / version / digest / path.name + target.parent.mkdir(parents=True, exist_ok=True) + if not target.exists() or target.stat().st_size != path.stat().st_size: + target.write_bytes(path.read_bytes()) + print(f"gradle cached {target}") + +def snapshot_remote_name(group: str, artifact: str, version: str, repo: str, ext: str, classifier: str | None) -> str | None: + if not version.endswith("SNAPSHOT"): + return None + rel = relpath(group, artifact, version) + metadata_name = "maven-metadata.xml" + metadata_file = fetch_raw(repo, rel, metadata_name) + root = ET.parse(metadata_file).getroot() + classifier_text = classifier or "" + for snap in root.findall(".//snapshotVersion"): + extension = snap.findtext("extension") + snap_classifier = snap.findtext("classifier") or "" + value = snap.findtext("value") + if extension == ext and snap_classifier == classifier_text and value: + suffix = f"-{classifier}" if classifier else "" + return f"{artifact}-{value}{suffix}.{ext}" + timestamp = root.findtext(".//timestamp") + build = root.findtext(".//buildNumber") + if timestamp and build: + base = version[:-len("-SNAPSHOT")] + suffix = f"-{classifier}" if classifier else "" + return f"{artifact}-{base}-{timestamp}-{build}{suffix}.{ext}" + return None + +def fetch_raw(repo: str, rel: str, filename: str) -> pathlib.Path: + local_dir = local_m2 / pathlib.Path(rel) + local_dir.mkdir(parents=True, exist_ok=True) + local_file = local_dir / filename + if local_file.exists() and local_file.stat().st_size > 0: + print(f"local ok {rel}/{filename}") + return local_file + + remote_dir = posixpath.join(remote_root, rel) + run(f"mkdir -p {shlex.quote(remote_dir)}") + url = f"{repo}/{rel}/{filename}" + remote_file = posixpath.join(remote_dir, filename) + curl = ( + "curl -L --fail --retry 3 --retry-all-errors " + "--connect-timeout 15 --max-time 90 " + f"-o {shlex.quote(remote_file)} {shlex.quote(url)}" + ) + print(f"remote download {url}") + run(curl) + sftp.get(remote_file, str(local_file)) + print(f"stored {local_file} ({local_file.stat().st_size} bytes)") + return local_file + +def fetch_file(group: str, artifact: str, version: str, repo: str, ext: str, classifier: str | None = None) -> pathlib.Path | None: + rel = relpath(group, artifact, version) + local_dir = local_m2 / pathlib.Path(rel) + local_dir.mkdir(parents=True, exist_ok=True) + classifier_suffix = f"-{classifier}" if classifier else "" + local_file = local_dir / f"{artifact}-{version}{classifier_suffix}.{ext}" + + if local_file.exists() and local_file.stat().st_size > 0: + if ext != "jar" or valid_jar(local_file): + print(f"local ok {rel}/{local_file.name}") + cache_in_gradle(group, artifact, version, local_file) + return local_file + print(f"local corrupt {rel}/{local_file.name}; refetching") + local_file.unlink() + + remote_dir = posixpath.join(remote_root, rel) + run(f"mkdir -p {shlex.quote(remote_dir)}") + remote_name = snapshot_remote_name(group, artifact, version, repo, ext, classifier) or local_file.name + url = f"{repo}/{rel}/{remote_name}" + remote_file = posixpath.join(remote_dir, remote_name) + curl = ( + "curl -L --fail --retry 3 --retry-all-errors " + "--connect-timeout 15 --max-time 90 " + f"-o {shlex.quote(remote_file)} {shlex.quote(url)}" + ) + print(f"remote download {url}") + try: + run(curl) + except RuntimeError as exc: + if ext == "jar": + print(f"jar unavailable {group}:{artifact}:{version}; treating as pom-only") + return None + raise exc + sftp.get(remote_file, str(local_file)) + print(f"stored {local_file} ({local_file.stat().st_size} bytes)") + cache_in_gradle(group, artifact, version, local_file) + return local_file + +def text_of(node, name: str) -> str | None: + child = node.find(f"m:{name}", NS) + return child.text.strip() if child is not None and child.text else None + +def resolve(value: str | None, props: dict[str, str]) -> str | None: + if not value: + return value + previous = None + while previous != value: + previous = value + for key, prop_value in props.items(): + value = value.replace("${" + key + "}", prop_value) + return value + +NS = {"m": "http://maven.apache.org/POM/4.0.0"} +seen = set() + +def fetch_artifact(group: str, artifact: str, version: str, repo: str, want_jar: bool = True, depth: int = 0, classifiers: list[str] | None = None) -> None: + group = resolve(group, {}) or group + artifact = resolve(artifact, {}) or artifact + version = resolve(version, {}) or version + repo = repo_for(group, repo) + key = (group, artifact, version, want_jar) + if key in seen: + return + seen.add(key) + + pom_file = fetch_file(group, artifact, version, repo, "pom") + if want_jar: + fetch_file(group, artifact, version, repo, "jar") + for classifier in classifiers or []: + fetch_file(group, artifact, version, repo, "jar", classifier) + + try: + root = ET.parse(pom_file).getroot() + except ET.ParseError as exc: + print(f"pom parse skipped {group}:{artifact}:{version}: {exc}") + return + + parent = root.find("m:parent", NS) + props = { + "project.groupId": group, + "pom.groupId": group, + "project.artifactId": artifact, + "pom.artifactId": artifact, + "project.version": version, + "pom.version": version, + } + + if parent is not None: + parent_group = text_of(parent, "groupId") + parent_artifact = text_of(parent, "artifactId") + parent_version = text_of(parent, "version") + if parent_group and parent_artifact and parent_version: + parent_repo = repo_for(parent_group, repo) + fetch_artifact(parent_group, parent_artifact, parent_version, parent_repo, want_jar=False, depth=depth + 1) + props["project.parent.groupId"] = parent_group + props["pom.parent.groupId"] = parent_group + props["project.parent.version"] = parent_version + props["pom.parent.version"] = parent_version + + properties = root.find("m:properties", NS) + if properties is not None: + for child in list(properties): + tag = child.tag.rsplit("}", 1)[-1] + if child.text: + props[tag] = resolve(child.text.strip(), props) or child.text.strip() + + dependency_management = root.find("m:dependencyManagement/m:dependencies", NS) + if dependency_management is not None and depth < 6: + for dep in dependency_management.findall("m:dependency", NS): + scope = text_of(dep, "scope") or "compile" + dep_type = text_of(dep, "type") or "jar" + if scope != "import" or dep_type != "pom": + continue + dep_group = resolve(text_of(dep, "groupId"), props) + dep_artifact = resolve(text_of(dep, "artifactId"), props) + dep_version = resolve(text_of(dep, "version"), props) + if not dep_group or not dep_artifact or not dep_version or dep_version.startswith("${"): + print(f"import skipped {group}:{artifact}:{version} -> {dep_group}:{dep_artifact}:{dep_version}") + continue + fetch_artifact(dep_group, dep_artifact, dep_version, repo_for(dep_group, repo), want_jar=False, depth=depth + 1) + + dependencies = root.find("m:dependencies", NS) + if dependencies is None or depth >= 4: + return + + for dep in dependencies.findall("m:dependency", NS): + scope = text_of(dep, "scope") or "compile" + optional = text_of(dep, "optional") + if scope in ("test", "provided", "system", "import") or optional == "true": + continue + dep_group = resolve(text_of(dep, "groupId"), props) + dep_artifact = resolve(text_of(dep, "artifactId"), props) + dep_version = resolve(text_of(dep, "version"), props) + if not dep_group or not dep_artifact or not dep_version or dep_version.startswith("${"): + print(f"dependency skipped {group}:{artifact}:{version} -> {dep_group}:{dep_artifact}:{dep_version}") + continue + if dep_group == "net.neoforged" and dep_artifact == "minecraft-dependencies": + print(f"dependency skipped {group}:{artifact}:{version} -> {dep_group}:{dep_artifact}:{dep_version} (virtual NeoForge metadata)") + continue + fetch_artifact(dep_group, dep_artifact, dep_version, repo_for(dep_group, repo), want_jar=True, depth=depth + 1) + +def fetch_coordinate_name(name: str) -> None: + parts = name.split(":") + if len(parts) < 3: + print(f"coordinate skipped {name}") + return + group, artifact, version = parts[:3] + classifier = parts[3] if len(parts) > 3 else None + classifiers = [classifier] if classifier else None + fetch_artifact(group, artifact, version, repo_for(group, "https://repo.maven.apache.org/maven2"), classifiers=classifiers) + +def fetch_minecraft_libraries() -> None: + minecraft_info = pathlib.Path.home() / ".gradle" / "caches" / "fabric-loom" / "1.21.1" / "mojang_minecraft_info.json" + if not minecraft_info.exists(): + print(f"minecraft libraries skipped; missing {minecraft_info}") + return + + data = json.loads(minecraft_info.read_text(encoding="utf-8")) + names = set() + for library in data.get("libraries", []): + name = library.get("name") + if name: + names.add(name) + for name in sorted(names): + fetch_coordinate_name(name) + +try: + run(f"mkdir -p {shlex.quote(remote_root)}") + for group, artifact, version, repo, ext, classifier in extra_files: + fetch_file(group, artifact, version, repo_for(group, repo), ext, classifier) + for artifact_spec in artifacts: + group, artifact, version, repo, *rest = artifact_spec + classifiers = rest[0] if rest else None + fetch_artifact(group, artifact, version, repo, classifiers=classifiers) + fetch_minecraft_libraries() +finally: + sftp.close() + client.close() +'@ + +$tmp = New-TemporaryFile +Set-Content -Path $tmp -Value $script -Encoding UTF8 +try { + & $python $tmp $SshFile +} finally { + Remove-Item -LiteralPath $tmp -Force -ErrorAction SilentlyContinue +} diff --git a/settings.gradle b/settings.gradle index 6f0bfae89..5c8e78ef9 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,5 +1,6 @@ pluginManagement { repositories { + mavenLocal() gradlePluginPortal() maven { name = 'Fabric' From 8e7ebac9bf6186f1012ca6ea8f78dbc9bb45a4ee Mon Sep 17 00:00:00 2001 From: afsol Date: Thu, 4 Jun 2026 15:25:18 +0300 Subject: [PATCH 2/3] Stabilize NeoForge 1.21.1 build pipeline --- Common/build.gradle | 23 ++++---- .../src/main/resources/hexplat.accesswidener | 6 +-- Neoforge/build.gradle | 53 +++++++------------ .../hexcasting/forge/ForgeHexInitializer.java | 9 +++- .../forge/xplat/ForgeXplatImpl.java | 44 +++++++++++++-- scripts/fetch-maven-via-ssh.ps1 | 3 +- 6 files changed, 82 insertions(+), 56 deletions(-) diff --git a/Common/build.gradle b/Common/build.gradle index 56aa8336f..a7d17736c 100644 --- a/Common/build.gradle +++ b/Common/build.gradle @@ -10,8 +10,6 @@ repositories { mavenCentral() mavenLocal() - maven { url 'https://maven.blamejared.com' } - maven { // location of the maven that hosts JEI files name = "Progwml6 maven" @@ -24,10 +22,11 @@ repositories { } maven { url "https://maven.shedaniel.me/" } - // accessories - maven { url 'https://maven.wispforest.io/releases' } - // EMI - maven { url = "https://maven.terraformersmc.com/releases/" } +} + +def localM2 = new File(System.getProperty("user.home"), ".m2/repository") +def localM2Jar = { String relPath -> + files(new File(localM2, relPath.replace('/', File.separator))) } dependencies { @@ -35,16 +34,12 @@ dependencies { // We depend on Fabric Loader here to use the Fabric @Environment annotations, // which get remapped to the correct annotations on each platform. // Do NOT use other classes from Fabric Loader. - modImplementation "net.fabricmc:fabric-loader:$rootProject.fabric_loader_version" + modImplementation localM2Jar("net/fabricmc/fabric-loader/${rootProject.fabric_loader_version}/fabric-loader-${rootProject.fabric_loader_version}.jar") modCompileOnly "libs:paucal:$paucalVersion+$minecraftVersion-common" - // i do not know why the xplat and mod jars are in different coordinates - modCompileOnly "vazkii.patchouli:Patchouli-xplat:1.21.1-$patchouliVersion" - modCompileOnly "com.samsthenerd.inline:inline-common:1.21.1-1.2.2-74" - - // === OPTIONAL DEPS === - modCompileOnly "dev.emi:emi-xplat-intermediary:${emiVersion}:api" - modCompileOnly "io.wispforest:accessories-common:$accessoriesVersion" + // Lock flaky BlameJared-hosted artifacts to local Maven copies for reproducible builds. + modCompileOnly localM2Jar("vazkii/patchouli/Patchouli-xplat/1.21.1-${patchouliVersion}/Patchouli-xplat-1.21.1-${patchouliVersion}.jar") + modCompileOnly localM2Jar("com/samsthenerd/inline/inline-common/1.21.1-1.2.2-74/inline-common-1.21.1-1.2.2-74.jar") // === OTHER STUFF === compileOnly "org.jetbrains:annotations:$jetbrainsAnnotationsVersion" diff --git a/Common/src/main/resources/hexplat.accesswidener b/Common/src/main/resources/hexplat.accesswidener index 613c5818a..181ba7db3 100644 --- a/Common/src/main/resources/hexplat.accesswidener +++ b/Common/src/main/resources/hexplat.accesswidener @@ -5,6 +5,6 @@ accessible field net/minecraft/client/renderer/RenderType$CompositeState texture accessible class net/minecraft/client/renderer/RenderStateShard$EmptyTextureStateShard accessible class net/minecraft/world/item/crafting/Ingredient$Value accessible method net/minecraft/world/item/crafting/Ingredient (Ljava/util/stream/Stream;)V -#accessible method net/minecraft/world/item/context/UseOnContext (Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/phys/BlockHitResult;)V -#accessible method net/minecraft/world/damagesource/DamageSources source (Lnet/minecraft/resources/ResourceKey;)Lnet/minecraft/world/damagesource/DamageSource; -#accessible method net/minecraft/world/damagesource/DamageSources source (Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/world/entity/Entity;)Lnet/minecraft/world/damagesource/DamageSource; +accessible method net/minecraft/world/item/context/UseOnContext (Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/phys/BlockHitResult;)V +accessible method net/minecraft/world/damagesource/DamageSources source (Lnet/minecraft/resources/ResourceKey;)Lnet/minecraft/world/damagesource/DamageSource; +accessible method net/minecraft/world/damagesource/DamageSources source (Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/world/entity/Entity;)Lnet/minecraft/world/damagesource/DamageSource; diff --git a/Neoforge/build.gradle b/Neoforge/build.gradle index 1b046b436..cb98ad4bc 100644 --- a/Neoforge/build.gradle +++ b/Neoforge/build.gradle @@ -36,8 +36,6 @@ repositories { } maven { url = "https://maven.neoforged.net/releases/" } - // paucal and patchi - maven { url = 'https://maven.blamejared.com' } maven { name = "Curios" url = uri("https://maven.theillusivec4.top/") @@ -48,8 +46,6 @@ repositories { } // pehkui maven { url = "https://jitpack.io" } - // EMI - maven { url = "https://maven.terraformersmc.com/releases/" } maven { name = 'Kotlin for Forge' @@ -58,52 +54,43 @@ repositories { } maven { url "https://maven.shedaniel.me/" } - // accessories - maven { url 'https://maven.wispforest.io/releases' } - // sinytra connector or something?? accessories needs it - maven { url 'https://maven.su5ed.dev/releases' } +} + +def localM2 = new File(System.getProperty("user.home"), ".m2/repository") +def localM2Jar = { String relPath -> + files(new File(localM2, relPath.replace('/', File.separator))) +} +def testModpackJar = { String jarName -> + files(rootProject.file("test-modpack/Create Aeronautica Create- Aeronautica/mods/${jarName}")) } dependencies { neoForge "net.neoforged:neoforge:${neoforgeVersion}" implementation(project(path: ':Common', configuration: 'namedElements')) { transitive false } shadowBundle(project(path: ':Common', configuration: 'transformProductionNeoForge')) { transitive false } - modImplementation("thedarkcolour:kotlinforforge-neoforge:$kotlinForForgeVersion") { - exclude(group: "net.neoforged.fancymodloader", module: "loader") - } + modImplementation testModpackJar("kotlinforforge-5.11.0-all.jar") // === MANDATORY DEPS === - compileOnly("mezz.jei:jei-$minecraftVersion-neoforge-api:$jeiVersion") - runtimeOnly("mezz.jei:jei-$minecraftVersion-neoforge:$jeiVersion") + compileOnly testModpackJar("jei-1.21.1-neoforge-19.27.0.336.jar") + runtimeOnly testModpackJar("jei-1.21.1-neoforge-19.27.0.336.jar") - compileOnly("top.theillusivec4.curios:curios-neoforge:$curiosVersion+$minecraftVersion:api") - runtimeOnly("top.theillusivec4.curios:curios-neoforge:$curiosVersion+$minecraftVersion") + compileOnly testModpackJar("curios-neoforge-${curiosVersion}+${minecraftVersion}.jar") + runtimeOnly testModpackJar("curios-neoforge-${curiosVersion}+${minecraftVersion}.jar") modImplementation "libs:paucal:$paucalVersion+$minecraftVersion-neoforge" - modImplementation "vazkii.patchouli:Patchouli:1.21.1-$patchouliVersion-NEOFORGE" - modImplementation "com.illusivesoulworks.caelus:caelus-neoforge:$caelusVersion" - modImplementation "com.samsthenerd.inline:inline-neoforge:1.21.1-1.2.2-74" + modImplementation localM2Jar("vazkii/patchouli/Patchouli/1.21.1-${patchouliVersion}-NEOFORGE/Patchouli-1.21.1-${patchouliVersion}-NEOFORGE.jar") + modImplementation localM2Jar("com/illusivesoulworks/caelus/caelus-neoforge/${caelusVersion}/caelus-neoforge-${caelusVersion}.jar") + modImplementation localM2Jar("com/samsthenerd/inline/inline-neoforge/1.21.1-1.2.2-74/inline-neoforge-1.21.1-1.2.2-74.jar") // needed for inline to run - modRuntimeOnly("me.shedaniel.cloth:cloth-config-forge:$clothConfigVersion") - modRuntimeOnly "com.samsthenerd.inline:inline-neoforge:$minecraftVersion-$inlineVersion" - modRuntimeOnly "dev.architectury:architectury-neoforge:$architecturyVersion" + modRuntimeOnly testModpackJar("cloth-config-15.0.140-neoforge.jar") + modRuntimeOnly localM2Jar("com/samsthenerd/inline/inline-neoforge/${minecraftVersion}-${inlineVersion}/inline-neoforge-${minecraftVersion}-${inlineVersion}.jar") + modRuntimeOnly testModpackJar("architectury-13.0.8-neoforge.jar") // === OPTIONAL DEPS === + modRuntimeOnly localM2Jar("com/github/Virtuoel/Pehkui/${pehkuiVersion}/Pehkui-${pehkuiVersion}.jar") - modCompileOnly "dev.emi:emi-neoforge:${emiVersion}:api" - modRuntimeOnly "dev.emi:emi-neoforge:${emiVersion}" - modImplementation "io.wispforest:accessories-neoforge:$accessoriesVersion" - - modApi("com.github.Virtuoel:Pehkui:${pehkuiVersion}-1.21-neoforge") - - // "Required due to issues with JIJ dependency resolving in arch or something" - // https://github.com/wisp-forest/accessories - forgeRuntimeLibrary("io.wispforest:endec:0.1.8") - forgeRuntimeLibrary("io.wispforest.endec:gson:0.1.5") - forgeRuntimeLibrary("io.wispforest.endec:netty:0.1.4") - forgeRuntimeLibrary("io.wispforest.endec:jankson:0.1.5") forgeRuntimeLibrary("org.jetbrains.kotlin:kotlin-reflect:2.1.20") forgeRuntimeLibrary("org.jetbrains.kotlin:kotlin-stdlib:2.1.20") forgeRuntimeLibrary("org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.1.20") diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java index 947625d89..b237685a5 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/ForgeHexInitializer.java @@ -71,14 +71,16 @@ import net.neoforged.neoforge.network.PacketDistributor; import net.neoforged.neoforge.registries.NewRegistryEvent; import net.neoforged.neoforge.registries.RegisterEvent; -import thedarkcolour.kotlinforforge.neoforge.KotlinModLoadingContext; import java.util.function.BiConsumer; import java.util.function.Consumer; @Mod(HexAPI.MOD_ID) public class ForgeHexInitializer { + private static IEventBus modEventBus; + public ForgeHexInitializer(ModContainer modContainer) { + modEventBus = modContainer.getEventBus(); initConfig(modContainer); // workaround for Inline EntTypeCradles not being available on server, related to https://github.com/SamsTheNerd/inline/issues/34 EntTypeCradle.fromTypeId(ResourceLocation.fromNamespaceAndPath("minecraft", "pig")).get().getType(); @@ -294,6 +296,9 @@ private static void initListeners() { // aaaauughhg public static IEventBus getModEventBus() { - return KotlinModLoadingContext.Companion.get().getKEventBus(); + if (modEventBus == null) { + throw new IllegalStateException("Hex mod event bus requested before mod construction"); + } + return modEventBus; } } diff --git a/Neoforge/src/main/java/at/petrak/hexcasting/forge/xplat/ForgeXplatImpl.java b/Neoforge/src/main/java/at/petrak/hexcasting/forge/xplat/ForgeXplatImpl.java index 5acbe02d8..925487af3 100644 --- a/Neoforge/src/main/java/at/petrak/hexcasting/forge/xplat/ForgeXplatImpl.java +++ b/Neoforge/src/main/java/at/petrak/hexcasting/forge/xplat/ForgeXplatImpl.java @@ -89,8 +89,9 @@ import net.neoforged.neoforge.registries.DeferredRegister; import net.neoforged.neoforge.registries.RegistryBuilder; import org.jetbrains.annotations.Nullable; -import virtuoel.pehkui.api.ScaleTypes; +import java.lang.reflect.Field; +import java.lang.reflect.Method; import java.util.List; import java.util.Optional; import java.util.function.BiFunction; @@ -545,18 +546,55 @@ public PehkuiInterop.ApiAbstraction getPehkuiApi() { PEHKUI_API = new PehkuiInterop.ApiAbstraction() { @Override public float getScale(Entity e) { - return ScaleTypes.BASE.getScaleData(e).getScale(); + return invokePehkuiScaleGetter(e); } @Override public void setScale(Entity e, float scale) { - ScaleTypes.BASE.getScaleData(e).setScale(scale); + invokePehkuiScaleSetter(e, scale); } }; } return PEHKUI_API; } + private static float invokePehkuiScaleGetter(Entity entity) { + try { + Object scaleData = getPehkuiScaleData(entity); + Method getScale = scaleData.getClass().getMethod("getScale"); + return ((Number) getScale.invoke(scaleData)).floatValue(); + } catch (ReflectiveOperationException e) { + throw new IllegalStateException("Failed to query Pehkui scale", e); + } + } + + private static void invokePehkuiScaleSetter(Entity entity, float scale) { + try { + Object scaleData = getPehkuiScaleData(entity); + Method setScale = scaleData.getClass().getMethod("setScale", float.class); + setScale.invoke(scaleData, scale); + } catch (ReflectiveOperationException e) { + throw new IllegalStateException("Failed to update Pehkui scale", e); + } + } + + private static Object getPehkuiScaleData(Entity entity) throws ReflectiveOperationException { + Class scaleTypesClass = Class.forName("virtuoel.pehkui.api.ScaleTypes"); + Field baseField = scaleTypesClass.getField("BASE"); + Object baseScaleType = baseField.get(null); + Method getScaleData = findGetScaleDataMethod(baseScaleType.getClass(), entity.getClass()); + return getScaleData.invoke(baseScaleType, entity); + } + + private static Method findGetScaleDataMethod(Class scaleTypeClass, Class entityClass) throws NoSuchMethodException { + for (Method method : scaleTypeClass.getMethods()) { + if (method.getName().equals("getScaleData") && method.getParameterCount() == 1) { + return method; + } + } + throw new NoSuchMethodException("No compatible getScaleData method for " + entityClass.getName()); + } + public static final String TAG_BRAINSWEPT = "hexcasting:brainswept"; public static final String TAG_SENTINEL_EXISTS = "hexcasting:sentinel_exists"; public static final String TAG_SENTINEL_GREATER = "hexcasting:sentinel_extends_range"; diff --git a/scripts/fetch-maven-via-ssh.ps1 b/scripts/fetch-maven-via-ssh.ps1 index 0abf9e6b7..d2d26576e 100644 --- a/scripts/fetch-maven-via-ssh.ps1 +++ b/scripts/fetch-maven-via-ssh.ps1 @@ -327,7 +327,8 @@ def fetch_artifact(group: str, artifact: str, version: str, repo: str, want_jar: artifact = resolve(artifact, {}) or artifact version = resolve(version, {}) or version repo = repo_for(group, repo) - key = (group, artifact, version, want_jar) + classifier_key = tuple(sorted(classifiers or [])) + key = (group, artifact, version, want_jar, classifier_key) if key in seen: return seen.add(key) From 8af818bb80ddcb87b87d7597ae5593ec9a21a156 Mon Sep 17 00:00:00 2001 From: afsol Date: Thu, 4 Jun 2026 16:38:23 +0300 Subject: [PATCH 3/3] Add game language JSON assets --- .../assets/hexcasting/lang/en_us.json | 1335 +++++++++++++++++ .../assets/hexcasting/lang/ru_ru.json | 1317 ++++++++++++++++ .../assets/hexcasting/lang/zh_cn.json | 1330 ++++++++++++++++ 3 files changed, 3982 insertions(+) create mode 100644 Common/src/main/resources/assets/hexcasting/lang/en_us.json create mode 100644 Common/src/main/resources/assets/hexcasting/lang/ru_ru.json create mode 100644 Common/src/main/resources/assets/hexcasting/lang/zh_cn.json diff --git a/Common/src/main/resources/assets/hexcasting/lang/en_us.json b/Common/src/main/resources/assets/hexcasting/lang/en_us.json new file mode 100644 index 000000000..2dac91718 --- /dev/null +++ b/Common/src/main/resources/assets/hexcasting/lang/en_us.json @@ -0,0 +1,1335 @@ +{ + "advancement.hexcasting:big_cast": "... Want Not", + "advancement.hexcasting:big_cast.desc": "Cast a single spell requiring a truly huge amount of media.", + "advancement.hexcasting:creative_unlocker": "UNLIMITED POWAH", + "advancement.hexcasting:creative_unlocker.desc": "Found the creative debug item.", + "advancement.hexcasting:enlightenment": "Achieve Enlightenment", + "advancement.hexcasting:enlightenment.desc": "Shatter a barrier by casting a hex using almost all of your health.", + "advancement.hexcasting:lore": "Hexcasting Lore", + "advancement.hexcasting:lore.desc": "Read a Lore Fragment", + "advancement.hexcasting:lore/.cardamom1": "Cardamom Steles #1", + "advancement.hexcasting:lore/.cardamom1.desc": "Letter from Cardamom Steles to Her Father, #1", + "advancement.hexcasting:lore/.cardamom2": "Cardamom Steles #2", + "advancement.hexcasting:lore/.cardamom2.desc": "Letter from Cardamom Steles to Her Father, #2", + "advancement.hexcasting:lore/.cardamom3": "Cardamom Steles #3", + "advancement.hexcasting:lore/.cardamom3.desc": "Letter from Cardamom Steles to Her Father, #3, 1/2", + "advancement.hexcasting:lore/.cardamom4": "Cardamom Steles #3 pt2", + "advancement.hexcasting:lore/.cardamom4.desc": "Letter from Cardamom Steles to Her Father, #3, 2/2", + "advancement.hexcasting:lore/.cardamom5": "Cardamom Steles #4", + "advancement.hexcasting:lore/.cardamom5.desc": "Letter from Cardamom Steles to Her Father, #4", + "advancement.hexcasting:lore/.experiment1": "Wooleye Instance Notes", + "advancement.hexcasting:lore/.experiment2": "Wooleye Interview Logs", + "advancement.hexcasting:lore/.inventory": "Restoration Log 72", + "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?", + "advancement.hexcasting:root": "Hexcasting Research", + "advancement.hexcasting:root.desc": "Find and mine a concentrated form of media growing deep beneath the earth.", + "advancement.hexcasting:wasteful_cast": "Waste Not...", + "advancement.hexcasting:wasteful_cast.desc": "Waste a large amount of media when casting a hex.", + "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.", + "block.hexcasting.akashic_bookshelf": "Akashic Bookshelf", + "block.hexcasting.akashic_ligature": "Akashic Ligature", + "block.hexcasting.akashic_record": "Akashic Record", + "block.hexcasting.amethyst_bricks": "Amethyst Bricks", + "block.hexcasting.amethyst_bricks_small": "Small Amethyst Bricks", + "block.hexcasting.amethyst_dust_block": "Block of Amethyst Dust", + "block.hexcasting.amethyst_edified_leaves": "Amethyst Edified Leaves", + "block.hexcasting.amethyst_pillar": "Amethyst Pillar", + "block.hexcasting.amethyst_sconce": "Amethyst Sconce", + "block.hexcasting.amethyst_tiles": "Amethyst Tiles", + "block.hexcasting.ancient_scroll_paper": "Ancient Scroll Paper", + "block.hexcasting.ancient_scroll_paper_lantern": "Ancient Paper Lantern", + "block.hexcasting.aventurine_edified_leaves": "Aventurine Edified Leaves", + "block.hexcasting.citrine_edified_leaves": "Citrine Edified Leaves", + "block.hexcasting.conjured_block": "Conjured Block", + "block.hexcasting.conjured_light": "Conjured Light", + "block.hexcasting.directrix.boolean": "Shepherd Directrix", + "block.hexcasting.directrix.empty": "Empty Directrix", + "block.hexcasting.directrix.redstone": "Mason Directrix", + "block.hexcasting.edified_button": "Edified Button", + "block.hexcasting.edified_door": "Edified Door", + "block.hexcasting.edified_fence": "Edified Fence", + "block.hexcasting.edified_fence_gate": "Edified Fence Gate", + "block.hexcasting.edified_log": "Edified Log", + "block.hexcasting.edified_log_amethyst": "Amethyst Edified Log", + "block.hexcasting.edified_log_aventurine": "Aventurine Edified Log", + "block.hexcasting.edified_log_citrine": "Citrine Edified Log", + "block.hexcasting.edified_log_purple": "Purple Edified Log", + "block.hexcasting.edified_panel": "Edified Panel", + "block.hexcasting.edified_planks": "Edified Planks", + "block.hexcasting.edified_pressure_plate": "Edified Pressure Plate", + "block.hexcasting.edified_slab": "Edified Slab", + "block.hexcasting.edified_stairs": "Edified Stairs", + "block.hexcasting.edified_tile": "Edified Tile", + "block.hexcasting.edified_trapdoor": "Edified Trapdoor", + "block.hexcasting.edified_wood": "Edified Wood", + "block.hexcasting.impetus.empty": "Empty Impetus", + "block.hexcasting.impetus.look": "Fletcher Impetus", + "block.hexcasting.impetus.redstone": "Cleric Impetus", + "block.hexcasting.impetus.rightclick": "Toolsmith Impetus", + "block.hexcasting.quenched_allay": "Quenched Allay", + "block.hexcasting.quenched_allay_bricks": "Quenched Allay Bricks", + "block.hexcasting.quenched_allay_bricks_small": "Small Quenched Allay Bricks", + "block.hexcasting.quenched_allay_tiles": "Quenched Allay Tiles", + "block.hexcasting.scroll_paper": "Scroll Paper", + "block.hexcasting.scroll_paper_lantern": "Paper Lantern", + "block.hexcasting.slate": "Slate", + "block.hexcasting.slate_amethyst_bricks": "Slate & Amethyst Bricks", + "block.hexcasting.slate_amethyst_bricks_small": "Small Slate & Amethyst Bricks", + "block.hexcasting.slate_amethyst_pillar": "Slate & Amethyst Pillar", + "block.hexcasting.slate_amethyst_tiles": "Slate & Amethyst Tiles", + "block.hexcasting.slate_block": "Block of Slate", + "block.hexcasting.slate_bricks": "Slate Bricks", + "block.hexcasting.slate_bricks_small": "Small Slate Bricks", + "block.hexcasting.slate_pillar": "Slate Pillar", + "block.hexcasting.slate_tiles": "Slate Tiles", + "block.hexcasting.slate.blank": "Blank Slate", + "block.hexcasting.slate.written": "Patterned Slate", + "block.hexcasting.stripped_edified_log": "Stripped Edified Log", + "block.hexcasting.stripped_edified_wood": "Stripped Edified Wood", + "command.hexcasting.brainsweep": "Brainswept %s", + "command.hexcasting.brainsweep.fail.already": "%s is already empty", + "command.hexcasting.brainsweep.fail.badtype": "%s is not a mob", + "command.hexcasting.pats.all": "Gave all %d scrolls to %s", + "command.hexcasting.pats.listing": "Patterns in this world:", + "command.hexcasting.pats.specific.success": "Gave %s with id %s to %s", + "command.hexcasting.recalc": "Recalculated patterns", + "death.attack.hexcasting.overcast": "%s's mind was subsumed into energy", + "death.attack.hexcasting.overcast.player": "%s's mind was subsumed into energy while fighting %s", + "effect.hexcasting.enlarge_grid": "Clarity", + "effect.hexcasting.shrink_grid": "Clouding", + "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", + "entity.hexcasting.wall_scroll": "Hanging Scroll", + "gui.hexcasting.spellcasting": "Hex Grid", + "hexcasting.action.book.hexcasting:arccos": "Inverse Cosine Prfn.", + "hexcasting.action.book.hexcasting:arcsin": "Inverse Sine Prfn.", + "hexcasting.action.book.hexcasting:arctan": "Inverse Tangent Prfn.", + "hexcasting.action.book.hexcasting:arctan2": "Inverse Tangent Dstl.", + "hexcasting.action.book.hexcasting:bool_to_number": "Numerologist's Prfn.", + "hexcasting.action.book.hexcasting:const/vec/.x": "Vector Rfln. +X/-X", + "hexcasting.action.book.hexcasting:const/vec/.y": "Vector Rfln. +Y/-Y", + "hexcasting.action.book.hexcasting:const/vec/.z": "Vector Rfln. +Z/-Z", + "hexcasting.action.book.hexcasting:div": "Division Dstl.", + "hexcasting.action.book.hexcasting:get_entity_height": "Stadiometer's Prfn.", + "hexcasting.action.book.hexcasting:get_entity/.animal": "Entity Prfn.: Animal", + "hexcasting.action.book.hexcasting:get_entity/.item": "Entity Prfn.: Item", + "hexcasting.action.book.hexcasting:get_entity/.living": "Entity Prfn.: Living", + "hexcasting.action.book.hexcasting:get_entity/.monster": "Entity Prfn.: Monster", + "hexcasting.action.book.hexcasting:get_entity/.player": "Entity Prfn.: Player", + "hexcasting.action.book.hexcasting:mask": "Bookkeeper's Gambit", + "hexcasting.action.book.hexcasting:mul": "Multiplicative Dstl.", + "hexcasting.action.book.hexcasting:number": "Numerical Reflection", + "hexcasting.action.book.hexcasting:read/entity": "Chronicler's Prfn.", + "hexcasting.action.book.hexcasting:zone_entity": "Zone Dstl.: Any", + "hexcasting.action.book.hexcasting:zone_entity/.animal": "Zone Dstl.: Animal", + "hexcasting.action.book.hexcasting:zone_entity/.item": "Zone Dstl.: Item", + "hexcasting.action.book.hexcasting:zone_entity/.living": "Zone Dstl.: Living", + "hexcasting.action.book.hexcasting:zone_entity/.monster": "Zone Dstl.: Monster", + "hexcasting.action.book.hexcasting:zone_entity/.not_animal": "Zone Dstl.: Non-Animal", + "hexcasting.action.book.hexcasting:zone_entity/.not_item": "Zone Dstl.: Non-Item", + "hexcasting.action.book.hexcasting:zone_entity/.not_living": "Zone Dstl.: Non-Living", + "hexcasting.action.book.hexcasting:zone_entity/.not_monster": "Zone Dstl.: Non-Monster", + "hexcasting.action.book.hexcasting:zone_entity/.not_player": "Zone Dstl.: Non-Player", + "hexcasting.action.book.hexcasting:zone_entity/.player": "Zone Dstl.: Player", + "hexcasting.action.hexcasting:2dup": "Dioscuri Gambit", + "hexcasting.action.hexcasting:abs": "Length Purification", + "hexcasting.action.hexcasting:add": "Additive Distillation", + "hexcasting.action.hexcasting:add_motion": "Impulse", + "hexcasting.action.hexcasting:akashic/read": "Akasha's Distillation", + "hexcasting.action.hexcasting:akashic/write": "Akasha's Gambit", + "hexcasting.action.hexcasting:and": "Conjunction Distillation", + "hexcasting.action.hexcasting:append": "Integration Distillation", + "hexcasting.action.hexcasting:arccos": "Inverse Cosine Purification", + "hexcasting.action.hexcasting:arcsin": "Inverse Sine Purification", + "hexcasting.action.hexcasting:arctan": "Inverse Tangent Purification", + "hexcasting.action.hexcasting:arctan2": "Inverse Tangent Distillation", + "hexcasting.action.hexcasting:beep": "Make Note", + "hexcasting.action.hexcasting:blink": "Blink", + "hexcasting.action.hexcasting:bonemeal": "Overgrow", + "hexcasting.action.hexcasting:bool_coerce": "Augur's Purification", + "hexcasting.action.hexcasting:brainsweep": "Flay Mind", + "hexcasting.action.hexcasting:break_block": "Break Block", + "hexcasting.action.hexcasting:ceil": "Ceiling Purification", + "hexcasting.action.hexcasting:circle/.bounds/max": "Greater Fold Reflection", + "hexcasting.action.hexcasting:circle/.bounds/min": "Lesser Fold Reflection", + "hexcasting.action.hexcasting:circle/.impetus_dir": "Lodestone Reflection", + "hexcasting.action.hexcasting:circle/.impetus_pos": "Waystone Reflection", + "hexcasting.action.hexcasting:coerce_axial": "Axial Purification", + "hexcasting.action.hexcasting:colorize": "Internalize Pigment", + "hexcasting.action.hexcasting:conjure_block": "Conjure Block", + "hexcasting.action.hexcasting:conjure_light": "Conjure Light", + "hexcasting.action.hexcasting:const/.double/.e": "Euler's Reflection", + "hexcasting.action.hexcasting:const/.double/.pi": "Arc's Reflection", + "hexcasting.action.hexcasting:const/.double/.tau": "Circle's Reflection", + "hexcasting.action.hexcasting:const/.false": "False Reflection", + "hexcasting.action.hexcasting:const/.null": "Nullary Reflection", + "hexcasting.action.hexcasting:const/.true": "True Reflection", + "hexcasting.action.hexcasting:const/.vec/.0": "Vector Reflection Zero", + "hexcasting.action.hexcasting:const/.vec/.nx": "Vector Reflection -X", + "hexcasting.action.hexcasting:const/.vec/.ny": "Vector Reflection -Y", + "hexcasting.action.hexcasting:const/.vec/.nz": "Vector Reflection -Z", + "hexcasting.action.hexcasting:const/.vec/.px": "Vector Reflection +X", + "hexcasting.action.hexcasting:const/.vec/.py": "Vector Reflection +Y", + "hexcasting.action.hexcasting:const/.vec/.pz": "Vector Reflection +Z", + "hexcasting.action.hexcasting:construct": "Speaker's Distillation", + "hexcasting.action.hexcasting:construct_vec": "Vector Exaltation", + "hexcasting.action.hexcasting:cos": "Cosine Purification", + "hexcasting.action.hexcasting:craft/artifact": "Craft Artifact", + "hexcasting.action.hexcasting:craft/battery": "Craft Phial", + "hexcasting.action.hexcasting:craft/cypher": "Craft Cypher", + "hexcasting.action.hexcasting:craft/trinket": "Craft Trinket", + "hexcasting.action.hexcasting:create_lava": "Create Lava", + "hexcasting.action.hexcasting:create_water": "Create Water", + "hexcasting.action.hexcasting:cycle_variant": "Caster's Glamour", + "hexcasting.action.hexcasting:deconstruct": "Speaker's Decomposition", + "hexcasting.action.hexcasting:deconstruct_vec": "Vector Disintegration", + "hexcasting.action.hexcasting:destroy_water": "Destroy Liquid", + "hexcasting.action.hexcasting:dispel_rain": "Dispel Rain", + "hexcasting.action.hexcasting:div": "Division Distillation", + "hexcasting.action.hexcasting:duplicate": "Gemini Decomposition", + "hexcasting.action.hexcasting:duplicate_n": "Gemini Gambit", + "hexcasting.action.hexcasting:edify": "Edify Sapling", + "hexcasting.action.hexcasting:empty_list": "Vacant Reflection", + "hexcasting.action.hexcasting:entity_pos/eye": "Compass' Purification", + "hexcasting.action.hexcasting:entity_pos/foot": "Compass' Purification II", + "hexcasting.action.hexcasting:equals": "Equality Distillation", + "hexcasting.action.hexcasting:erase": "Erase Item", + "hexcasting.action.hexcasting:eval": "Hermes' Gambit", + "hexcasting.action.hexcasting:eval/cc": "Iris' Gambit", + "hexcasting.action.hexcasting:explode": "Explosion", + "hexcasting.action.hexcasting:explode/fire": "Fireball", + "hexcasting.action.hexcasting:extinguish": "Extinguish Area", + "hexcasting.action.hexcasting:fisherman": "Fisherman's Gambit", + "hexcasting.action.hexcasting:fisherman/copy": "Fisherman's Gambit II", + "hexcasting.action.hexcasting:flight": "Altiora", + "hexcasting.action.hexcasting:flight/can_fly": "Aviator's Purification", + "hexcasting.action.hexcasting:flight/range": "Anchorite's Flight", + "hexcasting.action.hexcasting:flight/time": "Wayfarer's Flight", + "hexcasting.action.hexcasting:floor": "Floor Purification", + "hexcasting.action.hexcasting:for_each": "Thoth's Gambit", + "hexcasting.action.hexcasting:get_caster": "Mind's Reflection", + "hexcasting.action.hexcasting:get_entity": "Entity Purification", + "hexcasting.action.hexcasting:get_entity_height": "Stadiometer's Purification", + "hexcasting.action.hexcasting:get_entity_look": "Alidade's Purification", + "hexcasting.action.hexcasting:get_entity_velocity": "Pace Purification", + "hexcasting.action.hexcasting:get_entity/.animal": "Entity Purification: Animal", + "hexcasting.action.hexcasting:get_entity/.item": "Entity Purification: Item", + "hexcasting.action.hexcasting:get_entity/.living": "Entity Purification: Living", + "hexcasting.action.hexcasting:get_entity/.monster": "Entity Purification: Monster", + "hexcasting.action.hexcasting:get_entity/.player": "Entity Purification: Player", + "hexcasting.action.hexcasting:greater": "Maximus Distillation", + "hexcasting.action.hexcasting:greater_eq": "Maximus Distillation II", + "hexcasting.action.hexcasting:halt": "Charon's Gambit", + "hexcasting.action.hexcasting:if": "Augur's Exaltation", + "hexcasting.action.hexcasting:ignite": "Ignite", + "hexcasting.action.hexcasting:index": "Selection Distillation", + "hexcasting.action.hexcasting:index_of": "Locator's Distillation", + "hexcasting.action.hexcasting:interop/.gravity/.get": "Gravitational Purification", + "hexcasting.action.hexcasting:interop/.gravity/.set": "Alter Gravity", + "hexcasting.action.hexcasting:interop/.pehkui/.get": "Gulliver's Purification", + "hexcasting.action.hexcasting:interop/.pehkui/.set": "Alter Scale", + "hexcasting.action.hexcasting:last_n_list": "Flock's Gambit", + "hexcasting.action.hexcasting:less": "Minimus Distillation", + "hexcasting.action.hexcasting:less_eq": "Minimus Distillation II", + "hexcasting.action.hexcasting:lightning": "Summon Lightning", + "hexcasting.action.hexcasting:logarithm": "Logarithmic Distillation", + "hexcasting.action.hexcasting:modulo": "Modulus Distillation", + "hexcasting.action.hexcasting:mul": "Multiplicative Distillation", + "hexcasting.action.hexcasting:not": "Negation Purification", + "hexcasting.action.hexcasting:not_equals": "Inequality Distillation", + "hexcasting.action.hexcasting:or": "Disjunction Distillation", + "hexcasting.action.hexcasting:over": "Prospector's Gambit", + "hexcasting.action.hexcasting:place_block": "Place Block", + "hexcasting.action.hexcasting:potion/.absorption": "Black Sun's Zenith", + "hexcasting.action.hexcasting:potion/.haste": "Red Sun's Zenith", + "hexcasting.action.hexcasting:potion/.levitation": "Blue Sun's Nadir", + "hexcasting.action.hexcasting:potion/.night_vision": "Blue Sun's Zenith", + "hexcasting.action.hexcasting:potion/.poison": "Red Sun's Nadir", + "hexcasting.action.hexcasting:potion/.regeneration": "White Sun's Zenith", + "hexcasting.action.hexcasting:potion/.slowness": "Green Sun's Nadir", + "hexcasting.action.hexcasting:potion/.strength": "Green Sun's Zenith", + "hexcasting.action.hexcasting:potion/.weakness": "White Sun's Nadir", + "hexcasting.action.hexcasting:potion/.wither": "Black Sun's Nadir", + "hexcasting.action.hexcasting:pow": "Power Distillation", + "hexcasting.action.hexcasting:print": "Reveal", + "hexcasting.action.hexcasting:random": "Entropy Reflection", + "hexcasting.action.hexcasting:raycast": "Archer's Distillation", + "hexcasting.action.hexcasting:raycast/axis": "Architect's Distillation", + "hexcasting.action.hexcasting:raycast/entity": "Scout's Distillation", + "hexcasting.action.hexcasting:read": "Scribe's Reflection", + "hexcasting.action.hexcasting:read/entity": "Chronicler's Purification", + "hexcasting.action.hexcasting:read/local": "Muninn's Reflection", + "hexcasting.action.hexcasting:readable": "Auditor's Reflection", + "hexcasting.action.hexcasting:readable/entity": "Auditor's Purification", + "hexcasting.action.hexcasting:recharge": "Recharge Item", + "hexcasting.action.hexcasting:remove_from": "Excisor's Distillation", + "hexcasting.action.hexcasting:replace": "Surgeon's Exaltation", + "hexcasting.action.hexcasting:reverse": "Retrograde Purification", + "hexcasting.action.hexcasting:rotate": "Rotation Gambit", + "hexcasting.action.hexcasting:rotate_reverse": "Rotation Gambit II", + "hexcasting.action.hexcasting:sentinel/.create": "Summon Sentinel", + "hexcasting.action.hexcasting:sentinel/.create/great": "Summon Greater Sentinel", + "hexcasting.action.hexcasting:sentinel/.destroy": "Banish Sentinel", + "hexcasting.action.hexcasting:sentinel/.get_pos": "Locate Sentinel", + "hexcasting.action.hexcasting:sentinel/.wayfind": "Wayfind Sentinel", + "hexcasting.action.hexcasting:sin": "Sine Purification", + "hexcasting.action.hexcasting:singleton": "Single's Purification", + "hexcasting.action.hexcasting:slice": "Selection Exaltation", + "hexcasting.action.hexcasting:splat": "Flock's Disintegration", + "hexcasting.action.hexcasting:stack_len": "Flock's Reflection", + "hexcasting.action.hexcasting:sub": "Subtractive Distillation", + "hexcasting.action.hexcasting:summon_rain": "Summon Rain", + "hexcasting.action.hexcasting:swap": "Jester's Gambit", + "hexcasting.action.hexcasting:swizzle": "Swindler's Gambit", + "hexcasting.action.hexcasting:tan": "Tangent Purification", + "hexcasting.action.hexcasting:teleport/great": "Greater Teleport", + "hexcasting.action.hexcasting:thanatos": "Thanatos' Reflection", + "hexcasting.action.hexcasting:tuck": "Undertaker's Gambit", + "hexcasting.action.hexcasting:unappend": "Derivation Decomposition", + "hexcasting.action.hexcasting:unique": "Uniqueness Purification", + "hexcasting.action.hexcasting:writable": "Assessor's Reflection", + "hexcasting.action.hexcasting:writable/entity": "Assessor's Purification", + "hexcasting.action.hexcasting:write": "Scribe's Gambit", + "hexcasting.action.hexcasting:write/entity": "Chronicler's Gambit", + "hexcasting.action.hexcasting:write/local": "Huginn's Gambit", + "hexcasting.action.hexcasting:xor": "Exclusion Distillation", + "hexcasting.action.hexcasting:zone_entity": "Zone Distillation: Any", + "hexcasting.action.hexcasting:zone_entity/.animal": "Zone Distillation: Animal", + "hexcasting.action.hexcasting:zone_entity/.item": "Zone Distillation: Item", + "hexcasting.action.hexcasting:zone_entity/.living": "Zone Distillation: Living", + "hexcasting.action.hexcasting:zone_entity/.monster": "Zone Distillation: Monster", + "hexcasting.action.hexcasting:zone_entity/.not_animal": "Zone Distillation: Non-Animal", + "hexcasting.action.hexcasting:zone_entity/.not_item": "Zone Distillation: Non-Item", + "hexcasting.action.hexcasting:zone_entity/.not_living": "Zone Distillation: Non-Living", + "hexcasting.action.hexcasting:zone_entity/.not_monster": "Zone Distillation: Non-Monster", + "hexcasting.action.hexcasting:zone_entity/.not_player": "Zone Distillation: Non-Player", + "hexcasting.action.hexcasting:zone_entity/.player": "Zone Distillation: Player", + "hexcasting.attributes.ambit_radius": "Player Ambit Radius", + "hexcasting.attributes.feeble_mind": "Feeble Mind", + "hexcasting.attributes.grid_zoom": "Casting Grid Size", + "hexcasting.attributes.media_consumption": "Media Consumption", + "hexcasting.attributes.scry_sight": "Scrying Sight", + "hexcasting.attributes.sentinel_radius": "Sentinel Ambit Radius", + "hexcasting.category.basics": "Getting Started", + "hexcasting.category.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.category.casting": "Hex Casting", + "hexcasting.category.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.category.great_spells": "Great Spells", + "hexcasting.category.great_spells.desc": "The spells catalogued here are purported to be of legendary difficulty and power. They seem to have been recorded only $(l:items/scroll)sparsely/$ (for good reason, the texts claim). It's probably just the ramblings of extinct traditionalists, though -- a pattern's a pattern.$(br2) What could possibly go wrong?", + "hexcasting.category.greatwork": "The Great Work", + "hexcasting.category.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.category.interop": "Cross-Mod Compatibility", + "hexcasting.category.interop.desc": "It appears I have installed some mods Hexcasting interoperates with! I've detailed them here.", + "hexcasting.category.items": "Items", + "hexcasting.category.items.desc": "I devote this section to the magical and mysterious items I might encounter in my studies.", + "hexcasting.category.lore": "Lore", + "hexcasting.category.lore.desc": "I have uncovered some letters and text not of direct relevance to my art. But, I think I may be able to divine some of the history of the world from these. Let me see...", + "hexcasting.category.patterns": "Patterns", + "hexcasting.category.patterns.desc": "A list of all the patterns I've discovered, as well as what they do.", + "hexcasting.category.spells": "Spells", + "hexcasting.category.spells.desc": "Patterns and actions that perform a magical effect on the world.", + "hexcasting.circles.many_exits": "The flow of media at %s had too many exits", + "hexcasting.circles.no_exit": "The flow of media at %s could not find an exit", + "hexcasting.debug.all_media": "Entire contents", + "hexcasting.debug.infinite_media": "Infinite", + "hexcasting.debug.media_inserted": "%s - Media inserted: %s", + "hexcasting.debug.media_inserted.with_dust": "%s - Media inserted: %s (%s in dust)", + "hexcasting.debug.media_withdrawn": "%s - Media withdrawn: %s", + "hexcasting.debug.media_withdrawn.with_dust": "%s - Media withdrawn: %s (%s in dust)", + "hexcasting.entry.101": "Hex Casting 101", + "hexcasting.entry.abacus": "Abacus", + "hexcasting.entry.advanced_math": "Advanced Mathematics", + "hexcasting.entry.akashic_patterns": "Akashic Patterns", + "hexcasting.entry.akashiclib": "Akashic Libraries", + "hexcasting.entry.amethyst": "Amethyst", + "hexcasting.entry.ancient_cyphers": "Ancient Cyphers", + "hexcasting.entry.basic_spell": "Basic Spells", + "hexcasting.entry.basics_pattern": "Basic Patterns", + "hexcasting.entry.blockworks": "Block Manipulation", + "hexcasting.entry.brainsweeping": "On The Flaying of Minds", + "hexcasting.entry.circle_patterns": "Spell Circle Patterns", + "hexcasting.entry.consts": "Constants", + "hexcasting.entry.couldnt_cast": "A Frustration", + "hexcasting.entry.creative_items": "Creative-Only Items", + "hexcasting.entry.decoration": "Decorative Blocks", + "hexcasting.entry.directrix": "Directrices", + "hexcasting.entry.edified": "Edified Trees", + "hexcasting.entry.entities": "Entities", + "hexcasting.entry.fanciful_staves": "Fanciful Staves", + "hexcasting.entry.flights": "Flight", + "hexcasting.entry.focus": "Focus", + "hexcasting.entry.geodes": "Geodes", + "hexcasting.entry.hexcasting": "Casting Items", + "hexcasting.entry.hexcasting_spell": "Crafting Casting Items", + "hexcasting.entry.impetus": "Impeti", + "hexcasting.entry.influences": "Influences", + "hexcasting.entry.interop": "Cross-Mod Interations", + "hexcasting.entry.interop.gravity": "Gravity Changer", + "hexcasting.entry.interop.pehkui": "Pehkui", + "hexcasting.entry.itempicking": "Working with Items", + "hexcasting.entry.jeweler_hammer": "Jeweler's Hammer", + "hexcasting.entry.lens": "Scrying Lens", + "hexcasting.entry.lists": "List Manipulation", + "hexcasting.entry.logic": "Logical Operators", + "hexcasting.entry.lore.cardamom1": "Cardamom Steles, #1", + "hexcasting.entry.lore.cardamom2": "Cardamom Steles, #2", + "hexcasting.entry.lore.cardamom3": "Cardamom Steles, #3", + "hexcasting.entry.lore.cardamom4": "Cardamom Steles, #4", + "hexcasting.entry.lore.cardamom5": "Cardamom Steles, #5", + "hexcasting.entry.lore.experiment1": "Wooleye Instance Notes", + "hexcasting.entry.lore.experiment2": "Wooleye Interview Logs", + "hexcasting.entry.lore.inventory": "Restoration Log #72", + "hexcasting.entry.math": "Mathematics", + "hexcasting.entry.media": "Media", + "hexcasting.entry.meta": "Meta-Evaluation", + "hexcasting.entry.mishaps": "Mishaps", + "hexcasting.entry.mishaps2": "Enlightened Mishaps", + "hexcasting.entry.nadirs": "Nadirs", + "hexcasting.entry.naming": "Naming Actions", + "hexcasting.entry.numbers": "Number Literals", + "hexcasting.entry.patterns_as_iotas": "Escaping Patterns", + "hexcasting.entry.phials": "Phials of Media", + "hexcasting.entry.pigments": "Pigments", + "hexcasting.entry.potions": "Hex Potions", + "hexcasting.entry.quenching_allays": "Quenching Allays", + "hexcasting.entry.readers_guide": "How to Read This Section", + "hexcasting.entry.readwrite": "Reading and Writing", + "hexcasting.entry.scroll": "Scrolls", + "hexcasting.entry.sentinels": "Sentinels", + "hexcasting.entry.sets": "Sets", + "hexcasting.entry.slate": "Slates", + "hexcasting.entry.spellbook": "Spellbook", + "hexcasting.entry.spellcircles": "Spell Circles", + "hexcasting.entry.stack": "The Stack", + "hexcasting.entry.stackmanip": "Stack Manipulation", + "hexcasting.entry.staff": "Staves", + "hexcasting.entry.start_to_see": "WHAT DID I SEE", + "hexcasting.entry.the_work": "The Work", + "hexcasting.entry.thought_knot": "Thought-Knot", + "hexcasting.entry.vectors": "A Primer On Vectors", + "hexcasting.entry.weather_manip": "Weather Manipulation", + "hexcasting.entry.zeniths": "Zeniths", + "hexcasting.iota.hexcasting:boolean": "Boolean", + "hexcasting.iota.hexcasting:boolean.desc": "a boolean", + "hexcasting.iota.hexcasting:continution": "Continuation", + "hexcasting.iota.hexcasting:continution.desc": "a jump iota", + "hexcasting.iota.hexcasting:double": "Number", + "hexcasting.iota.hexcasting:double.desc": "a number", + "hexcasting.iota.hexcasting:entity": "Entity", + "hexcasting.iota.hexcasting:entity.desc": "an entity", + "hexcasting.iota.hexcasting:garbage": "Garbage", + "hexcasting.iota.hexcasting:garbage.desc": "garbage", + "hexcasting.iota.hexcasting:list": "List", + "hexcasting.iota.hexcasting:list.desc": "a list", + "hexcasting.iota.hexcasting:null": "Null", + "hexcasting.iota.hexcasting:null.desc": "a null value", + "hexcasting.iota.hexcasting:pattern": "Pattern", + "hexcasting.iota.hexcasting:pattern.desc": "a pattern", + "hexcasting.iota.hexcasting:vec3": "Vector", + "hexcasting.iota.hexcasting:vec3.desc": "a vector", + "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://forum.petra-k.at/index.php)Forum Link/$", + "hexcasting.loot_hex.ascend": "Ascend", + "hexcasting.loot_hex.beckon": "Beckon", + "hexcasting.loot_hex.blastoff": "Blastoff", + "hexcasting.loot_hex.blink": "Blink", + "hexcasting.loot_hex.detonate": "Detonate", + "hexcasting.loot_hex.flight_zone": "Flight Zone", + "hexcasting.loot_hex.growth": "Growth", + "hexcasting.loot_hex.heat_wave": "Heat Wave", + "hexcasting.loot_hex.illuminate": "Illuminate", + "hexcasting.loot_hex.kindle": "Kindle", + "hexcasting.loot_hex.lunge": "Lunge", + "hexcasting.loot_hex.radar": "Radar", + "hexcasting.loot_hex.shatter": "Shatter", + "hexcasting.loot_hex.shockwave": "Shockwave", + "hexcasting.loot_hex.sidestep": "Sidestep", + "hexcasting.loot_hex.wither_wave": "Wither Wave", + "hexcasting.message.cant_great_spell": "The spell failed, somehow... am I not skilled enough?", + "hexcasting.message.cant_overcast": "That Hex needed more media than I had... I should double-check my math.", + "hexcasting.mishap": "%s: %s", + "hexcasting.mishap.already_brainswept": "The mind has already been used", + "hexcasting.mishap.bad_block": "Expected %s at %s, but got %s", + "hexcasting.mishap.bad_block.replaceable": "somewhere to place a block", + "hexcasting.mishap.bad_block.sapling": "a sapling", + "hexcasting.mishap.bad_brainsweep": "The %s rejected the being's mind", + "hexcasting.mishap.bad_caster": "Tried to execute a pattern that requires a greater mind", + "hexcasting.mishap.bad_entity": "needs %s but got %s", + "hexcasting.mishap.bad_item": "needs %s but got %dx %s", + "hexcasting.mishap.bad_item.bottle": "a glass bottle", + "hexcasting.mishap.bad_item.colorizer": "a pigment", + "hexcasting.mishap.bad_item.eraseable": "an eraseable item", + "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.readonly": "a place that will accept %s", + "hexcasting.mishap.bad_item.iota.write": "a place to write iotas to", + "hexcasting.mishap.bad_item.media": "a media-containing item", + "hexcasting.mishap.bad_item.media_for_battery": "a raw media item", + "hexcasting.mishap.bad_item.offhand": "needs %s in the other hand but got %dx %s", + "hexcasting.mishap.bad_item.only_one": "exactly one item", + "hexcasting.mishap.bad_item.rechargable": "a rechargable item", + "hexcasting.mishap.bad_item.variant": "an item with variants", + "hexcasting.mishap.circle.bool_directrix.empty_stack": "the stack was empty at %s", + "hexcasting.mishap.circle.bool_directrix.no_bool": "the iota encountered at %s was %s, not a bool", + "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.disallowed_circle_generic": "That pattern has been disallowed in spell circles by the server admins", + "hexcasting.mishap.disallowed_generic": "That pattern has been disallowed by the server admins", + "hexcasting.mishap.divide_by_zero.cos": "the cosine of %s", + "hexcasting.mishap.divide_by_zero.divide": "Attempted to divide %s by %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.power": "power of %s", + "hexcasting.mishap.divide_by_zero.project": "Attempted to project %s onto %s", + "hexcasting.mishap.divide_by_zero.sin": "the sine of %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.entity_not_found": "%s was not found, either dead or unloaded", + "hexcasting.mishap.entity_too_far": "%s is out of range", + "hexcasting.mishap.eval_too_much": "Evaluated too many patterns", + "hexcasting.mishap.immune_entity": "cannot alter %s", + "hexcasting.mishap.invalid_operator_args.many": "got %d unexpected iotas at indices %d-%d of the stack: %s", + "hexcasting.mishap.invalid_operator_args.one": "got an unexpected iota at index %d of the stack: %s", + "hexcasting.mishap.invalid_pattern": "The pattern %s isn't associated with any action", + "hexcasting.mishap.invalid_pattern_generic": "That pattern isn't associated with any action", + "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.invalid_value": "expected %s at index %s of the stack, but got %s: %s", + "hexcasting.mishap.invalid_value.bool_commute": "a boolean, 0, or 1", + "hexcasting.mishap.invalid_value.class.boolean": "a boolean", + "hexcasting.mishap.invalid_value.class.continuation": "a jump iota", + "hexcasting.mishap.invalid_value.class.double": "a number", + "hexcasting.mishap.invalid_value.class.entity": "an entity", + "hexcasting.mishap.invalid_value.class.entity_or_vector": "an entity or a vector", + "hexcasting.mishap.invalid_value.class.entity.item": "an item entity", + "hexcasting.mishap.invalid_value.class.entity.living": "a living entity", + "hexcasting.mishap.invalid_value.class.entity.mob": "a mob", + "hexcasting.mishap.invalid_value.class.entity.player": "a player", + "hexcasting.mishap.invalid_value.class.garbage": "garbage", + "hexcasting.mishap.invalid_value.class.list": "a list", + "hexcasting.mishap.invalid_value.class.null": "null", + "hexcasting.mishap.invalid_value.class.pattern": "a pattern", + "hexcasting.mishap.invalid_value.class.unknown": "(unknown, uh-oh, this is a bug)", + "hexcasting.mishap.invalid_value.class.vector": "a vector", + "hexcasting.mishap.invalid_value.double.between": "a number between %d and %d", + "hexcasting.mishap.invalid_value.double.positive": "a positive number", + "hexcasting.mishap.invalid_value.double.positive.less": "a positive number less than %d", + "hexcasting.mishap.invalid_value.double.positive.less.equal": "a positive number less than or equal to %d", + "hexcasting.mishap.invalid_value.evaluatable": "something evaluatable", + "hexcasting.mishap.invalid_value.int": "an integer", + "hexcasting.mishap.invalid_value.int.between": "an integer between %d and %d", + "hexcasting.mishap.invalid_value.int.positive": "a positive integer", + "hexcasting.mishap.invalid_value.int.positive.less": "a positive integer less than %d", + "hexcasting.mishap.invalid_value.int.positive.less.equal": "a positive integer less than or equal to %d", + "hexcasting.mishap.invalid_value.list.pattern": "a list of patterns", + "hexcasting.mishap.invalid_value.numlist": "an integer or list", + "hexcasting.mishap.invalid_value.numvec": "a number or vector", + "hexcasting.mishap.location_bad_dimension": "This dimension forbids that action", + "hexcasting.mishap.location_forbidden": "%s is forbidden to you", + "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.location_too_far": "%s is out of range", + "hexcasting.mishap.no_akashic_record": "No Akashic Record at %s", + "hexcasting.mishap.no_args": "expected %s or more arguments but the stack was empty", + "hexcasting.mishap.no_item": "needs %s but got nothing", + "hexcasting.mishap.no_item.offhand": "needs %s in the other hand but got nothing", + "hexcasting.mishap.no_spell_circle": "requires a spell circle", + "hexcasting.mishap.not_enough_args": "expected %s or more arguments but the stack was only %s tall", + "hexcasting.mishap.others_name": "Tried to invade the privacy of %s's soul", + "hexcasting.mishap.others_name.self": "Tried to divulge my Name too recklessly", + "hexcasting.mishap.stack_size": "Exceeded the size limit of the stack", + "hexcasting.mishap.too_many_close_parens": "Did not first use Introspection", + "hexcasting.mishap.unescaped": "Expected to evaluate a pattern, but evaluated %s instead", + "hexcasting.mishap.unknown": "threw an exception (%s). This is a bug in the mod.", + "hexcasting.mishap.wrong_dimension": "cannot see %s from %s", + "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.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.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.$(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": "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.4.header": "An 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:entity_pos/eye)$(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/$. 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;$(li)Booleans or \"bools\" for short, representing an abstract True or False,", + "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.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/thought_knot)$(item)Thought-Knot/$ or $(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 $(k:sprint). If in my off hand, the number will increment or decrement by 0.1, or 0.001 if I am also holding $(k:sprint).$(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.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.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.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.arctan2": "Takes the inverse tangent of a Y and X value, yielding the angle between the X-axis and a line from the origin to that point.", + "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.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.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.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.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/$.", + "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.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.", + "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.altiora.1": "Summon a sheaf of _media about me in the shape of wings, endowed with enough substance to allow gliding.", + "hexcasting.page.altiora.2": "Using them is identical to using $(item)Elytra/$; the target (which must be a player) is lofted into the air, after which pressing $(k:jump) will deploy the wings. The wings are fragile, and break upon touching any surface. Longer flights may benefit from $(l:patterns/spells/basic#hexcasting:add_motion)$(action)Impulse/$ or (for the foolhardy) $(item)Fireworks/$.$(br2)Costs about one $(l:items/amethyst)$(item)Charged Crystal/$.", + "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.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.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.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.ancient_cyphers.1": "While adventuring, I've come across what appear to be $(l:items/hexcasting)$(item)Cyphers/$ created by the Hexcasters of the ancient past. These $(item)Ancient Cyphers/$ work just like the ones I can craft: they can't be recharged, and will break when their reserve of _Media runs out. However, unlike my own $(l:items/hexcasting)$(item)Cyphers/$, their decayed structure allows me to glimpse the _Hex stored within.", + "hexcasting.page.ancient_cyphers.2": "These may be useful for learning new techniques - who better to teach me than ancient masters of the art?$(br2)Alternatively, I could erase the contents of one and store my own _Hex inside, creating a casting item that clearly displays its own function.", + "hexcasting.page.ancient_cyphers.3": "The $(l:items/pigments)$(item)Pigment/$ baked into these relics is a unique blend of purple and orange, matching their copper-and-amethyst appearance. I can replicate it using the above recipe.", + "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.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.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.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.basics_pattern.entity_pos/eye": "Transforms an entity on the stack into the position of its eyes. I should probably use this on myself.", + "hexcasting.page.basics_pattern.entity_pos/foot": "Transforms an entity on the stack into the position it is standing. I should probably use this on other entities.", + "hexcasting.page.basics_pattern.get_caster": "Adds me, the caster, to the stack.", + "hexcasting.page.basics_pattern.get_entity_height": "Transforms an entity on the stack into its height.", + "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_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": "If it doesn't hit anything, the vectors will combine into $(l:casting/influences)$(thing)Null/$.$(br2)A common sequence of patterns, the so-called \"raycast mantra,\" is $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$, $(l:patterns/basics#hexcasting:entity_pos/eye)$(action)Compass' Purification/$, $(l:patterns/basics#hexcasting:get_caster)$(action)Mind's Reflection/$, $(l:patterns/basics#hexcasting:get_entity_look)$(action)Alidade Purification/$, $(l:patterns/basics#hexcasting:raycast)$(action)Archer's Distillation/$. Together, they return the vector position of the block I am looking at.", + "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.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.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 about an eighth of one $(l:items/amethyst)$(item)Amethyst Dust, or a negligible amount if breaking a $(l:patterns/spells/blockworks#hexcasting:conjure_block)$(action)Conjured Block/$ or $(l:patterns/spells/blockworks#hexcasting:conjure_light)$(action)Conjured Light/$.", + "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.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.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.extinguish": "Extinguish blocks in a large area. Costs about six $(l:items/amethyst)$(item)Amethyst Dust/$.", + "hexcasting.page.blockworks.ignite": "Start a fire on top of the given location, as if a $(item)Fire Charge/$ was applied, or set fire to an entity. Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$.", + "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 about an eighth of one $(l:items/amethyst)$(item)Amethyst Dust/$.", + "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.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.page.casting.grid.1": "I will generally provide my patterns to Nature via my $(l:items/staff)$(item)Staff/$. Pressing $(thing)$(k:use)/$ with one in my hand will cause a hexagonal grid of dots to appear in front of me. I can then click, drag from dot to dot, and release to draw patterns.$(br2) Once I submit a pattern, it is executed (see the next chapter).", + "hexcasting.page.casting.grid.2": "Pressing $(thing)$(k:escape)/$ saves and closes the grid; when I next use my staff, all my patterns and iotas will still be there.$(br2) Should I wish to reset my casting state, I can do so by sneaking while opening the grid.", + "hexcasting.page.casting.iotas.1": "The \"nouns\" in Nature's language are called $(thing)iotas/$. At its most basic level, Hexcasting is the art of manipulating iotas.$(br2) Iotas come in many different types: $(li)Numbers (which some legends called \"doubles\"). $(li)Vectors, a collection of three numbers representing a position, movement, or direction. $(li)Booleans or \"bools\" for short, representing an abstract True or False. $(li)Entities, like myself, chickens, and minecarts.", + "hexcasting.page.casting.iotas.2": "$(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/$. $(li)A list of several of the above, gathered into a single iota.", + "hexcasting.page.casting.iotas.3": "Generally, I provide iotas to actions. For example, take $(l:patterns/spells/basic#hexcasting:explode)$(action)Explosion/$. This spell requires a number iota, to indicate the strength, and a vector iota, to indicate the location.$(br2) Or, take $(l:patterns/basic#hexcasting:get_pos)$(action)Compass' Purification/$. This takes an entity iota and transforms it into a vector iota, representing the position of that entity.", + "hexcasting.page.casting.overview.1": "I believe it's good to always start off on the right foot. So, I've compiled the patterns for a _Hex that will cause a modest explosion at the position I am looking at. I believe examining the inner workings of this _Hex will be quite edifying.", + "hexcasting.page.casting.patterns&actions.1": "$(thing)Patterns/$ are paths traced through the grid of _media. I believe the sixfold symmetry of patterns is what gives my art its name.$(br2) $(thing)Actions/$, meanwhile, are what patterns $(italic)do/$.", + "hexcasting.page.casting.patterns&actions.2": "The difference is similar to the difference between $(italic)words/$ and $(italic)meanings/$. Any jumble of letters forms a word, but most of them (like \"xnopyt\") don't mean anything. Similarly, any squiggle yanked through the _media is technically a pattern, but most of them won't do anything.", + "hexcasting.page.casting.patterns&actions.3": "Actions are somewhat like commands to the grand systems rules that govern the universe (which I have seen some texts personify as \"Nature.\"). They tend to do one of a few things: $(li)Gather some information about the world, such as finding the position of a entity. $(li)Manipulate the info gathered, like finding the distance between two positions. $(li)Perform some magical effect on the world, like summoning lightning or an explosion.$(br) These last kinds of actions are called \"spells.\", and are generally what attract people to the art.", + "hexcasting.page.casting.patterns&actions.4": "A _Hex, then, is a sequence of valid patterns presented to Nature in sequence. Nature interprets each of these patterns one-by-one and, if it understands, changes the world to my whims. (Or, what it thinks my whims are.)", + "hexcasting.page.casting.patterns&actions.5": "Although some actions can be performed easily, some require a payment in the form of coalesced _media. I believe the concentrated mental energy is used as a sort of argument to Nature, convincing it that it should indeed do as I ask. Most spells require this kind of payment, but a few non-spell actions do too.$(br2) I've recorded the costs, if any, of each action on their respective pages.", + "hexcasting.page.circle_patterns.circle/bounds/max": "Returns the position of the upper-south-east corner of the bounds of this spell circle.", + "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/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/impetus_pos": "Returns the position of the $(l:greatwork/impetus)$(item)Impetus/$ of this spell circle.", + "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.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.consts.const/.double/.e": "Adds $(italic)e/$, the base of natural logarithms, 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/.tau": "Adds τ, the radial representation of a complete circle, to the stack.", + "hexcasting.page.consts.const/.false": "Adds $(thing)False/$ to the top of the stack.", + "hexcasting.page.consts.const/.null": "Adds the $(l:casting/influences)$(thing)Null/$ influence to the top of the stack.", + "hexcasting.page.consts.const/.true": "Adds $(thing)True/$ to the top of the stack.", + "hexcasting.page.consts.const/.vec/.0": "Adds (0, 0, 0) to the stack.", + "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.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.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.page.creative_items.1": "I have invented some fanciful items that can only be acquired through $(italic)creative/$ means.", + "hexcasting.page.creative_items.2": "Additionally, it seems that by renaming a $(#74b3f2)Media Cube/$ at an Anvil, I should be able to utilize it to test and understand more about my _Hexes. If I have somehow acquired Creative power over the world, I might wish to turn that off before attempting any of the following.", + "hexcasting.page.creative_items.creative_unlocker": "The $(#74b3f2)Media Cube/$ is a near-limitless source of power, acting as an infinite source of _media for whatever _Hexes I wish to cast. It also looks quite tasty. Eating it might perhaps reveal more about the world, possibly delving into spoiler territory...", + "hexcasting.page.creative_items.debug_media.desc": "By renaming the $(#74b3f2)Media Cube/$ to 'debug media', I will be given feedback in the chat window about the amount of media consumed.", + "hexcasting.page.creative_items.debug_media.title": "debug media", + "hexcasting.page.cycle_variant": "Certain items I create seem oddly receptive to the influence of _media. By holding a $(l:items/hexcasting)$(item)Cypher/$, $(l:items/hexcasting)$(item)Trinket/$, $(l:items/hexcasting)$(item)Artifact/$, $(l:items/focus)$(item)Focus/$, or $(l:items/spellbook)$(item)Spellbook/$ in my other hand, I can use this spell to change the appearance of the item. Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$.", + "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.sconce.crafting.desc": "$(l:items/decoration)$(item)Amethyst Sconces/$ emit light and particles, as well as a pleasing chiming sound.", + "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.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.directrix_boolean": "A $(l:greatwork/directrix)$(item)Shepherd Directrix/$ switches output side based on a boolean on the stack. A $(thing)True/$ makes the wave exit from the back, a $(thing)False/$ from the front. Failing to provide a boolean at all will cause a mishap.", + "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.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.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.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/.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/.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.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/.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.zone_entity": "Take a position and maximum distance on the stack, and combine them into a list of all entities near the position.", + "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/.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/.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/.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_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/.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/.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/.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/.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/.player": "Take a position and maximum distance on the stack, and combine them into a list of players near the position.", + "hexcasting.page.fanciful_staves.1": "It is only right as I shed the husk of ignorance I replace my tools, my palm-polished staves. These new constructions of mine have no additional properties -- but they are so glorious, oh so Glorious... They match the radiance winking at the corners of my sight.", + "hexcasting.page.flights.1": "Although it seems that true, limitless flight is out of my grasp, I have nonetheless found some methods of holding one in the sky, each with their respective drawbacks.$(br2)All forms produce a shimmer of excess _media; as the spell gets closer to ending, the sparks are shot through with more red and black.", + "hexcasting.page.flights.2": "Other forms of flight do exist, of course. For example, a combination of $(l:patterns/spells/basic#hexcasting:add_motion)$(action)Impulse/$ and $(l:patterns/spells/nadirs#hexcasting:potion/levitation)$(action)Blue Sun's Nadir/$ has been used since antiquity for a flight of sorts.$(br2)I've also heard tell of a thin membrane worn on the back that allows the ability to glide. From my research, I believe the Great spell $(l:patterns/great_spells/altiora)$(action)Altiora/$ may be used to mimic it.", + "hexcasting.page.flights.can_fly.1": "Returns whether the given player is under the effects of $(l:patterns/spells/flight#hexcasting:flight/range)Anchorite's/$ or $(l:patterns/spells/flight#hexcasting:flight/time)Wayfarer's Flight/$.", + "hexcasting.page.flights.can_fly.2": "Does not detect whether the player can fly by other means.$(br2)It is unclear to me what use this has. But I suppose its utility is in the eye of the beholder.", + "hexcasting.page.flights.range.1": "A flight limited in its range.", + "hexcasting.page.flights.range.2": "The second argument is a horizontal radius, in meters, in which the spell is stable. Moving outside of that radius will end the spell, dropping me out of the sky. As long as I stay inside the safe zone, however, the spell lasts indefinitely. An additional shimmer of _media marks the origin point of the safe zone. $(br2)Costs about 1 $(l:items/amethyst)$(item)Amethyst Dust/$ per meter of safety.", + "hexcasting.page.flights.time.1": "A flight limited in its duration.", + "hexcasting.page.flights.time.2": "The second argument is an amount of time in seconds for which the spell is stable. After that time, the spell ends and I am dropped from the sky. $(br2)It is relatively expensive at about 1 $(l:items/amethyst)$(item)Amethyst Shard/$ per second of flight; I believe it is best suited for travel.", + "hexcasting.page.focus.1": "A $(item)Focus/$ is like a $(l:items/thought_knot)$(item)Thought-Knot/$, in that iota can be written to or read from it. However, the advantage of a focus is that it is $(italic)reusable/$. If I make a mistake in the iota I write to a $(item)Focus/$, I can simply cast $(l:patterns/readwrite#hexcasting:write)$(action)Scribe's Gambit/$ again and write over the iota inside.", + "hexcasting.page.focus.2": "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.$(br2)$(l:patterns/spells/hexcasting#hexcasting:erase)$(action)Erase Item/$ will remove this seal along with the contents.", + "hexcasting.page.focus.3": "Indeed, the only advantage of my $(l:items/thought_knot)$(item)Thought-Knot/$s have over $(item)Foci/$ is that $(item)Foci/$ are more expensive to produce. My research indicates that the early practitioners of the art used exclusively $(item)Foci/$, with the $(l:items/thought_knot)$(item)Thought-Knot/$ being an original creation of mine.$(br2)Whoever those ancient people were, they must have been very prosperous.", + "hexcasting.page.focus.crafting.desc": "$(italic)Poison apples, poison worms./$", + "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.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.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/artifact": "Costs about ten $(l:items/amethyst)$(item)Charged Amethysts/$.", + "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.erase.1": "Clears _Hex-containing or iota-containing items in my other hand. Costs about one $(l:items/amethyst)$(item)Amethyst Dust/$ per item.", + "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.page.hexcasting_spell.recharge.1": "Recharge a _media-containing item in my other hand. Costs about one $(l:items/amethyst)$(item)Amethyst Shard/$ per item.", + "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.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.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_look": "A $(l:greatwork/impetus)$(item)Fletcher Impetus/$ activates when looked at for a short time.", + "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/$ activates when receiving a redstone signal. It may 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.", + "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.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 quartet of influences I've named $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Consideration/$, $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Introspection/$, $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$, and $(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)Evanition/$. 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.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.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 the $(l:patterns/spells/flight)$(action)Flight/$ spells are limited in range or duration, and manipulate 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.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 1 $(item)Amethyst Shard/$.", + "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.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.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.", + "hexcasting.page.lens.crafting.desc": "$(italic)You must learn... to see what you are looking at./$", + "hexcasting.page.lists.abs": "Remove the list at the top of the stack, then push the number of elements in the list to the stack.", + "hexcasting.page.lists.add": "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.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.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.page.lists.empty_list": "Push an empty list to the top of the stack.", + "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.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.last_n_list": "Remove $(italic)num/$ elements from the stack, then add them to a list at the top of the stack.", + "hexcasting.page.lists.remove_from": "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.replace": "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.reverse": "Reverse the list at 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.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.splat": "Remove the list at the top of the stack, then push its contents to the stack.", + "hexcasting.page.lists.unappend": "Remove the iota on the end of the list at the top of the stack, and add it to the top of the stack.", + "hexcasting.page.logic.and": "Returns True if both arguments are true; otherwise returns False.", + "hexcasting.page.logic.bool_coerce": "Convert an argument to a boolean. The number $(thing)0/$, $(l:casting/influences)$(thing)Null/$, False, and the empty list become False; everything else becomes True.", + "hexcasting.page.logic.bool_to_number": "Convert a boolean to a number; True becomes $(thing)1/$, and False becomes $(thing)0/$.", + "hexcasting.page.logic.equals": "If the first argument equals the second (within a small tolerance), return True. Otherwise, return False.", + "hexcasting.page.logic.greater": "If the first argument is greater than the second, return True. Otherwise, return False.", + "hexcasting.page.logic.greater_eq": "If the first argument is greater than or equal to the second, return True. Otherwise, return False.", + "hexcasting.page.logic.if": "If the first argument is True, keeps the second and discards the third; otherwise discards the second and keeps the third.", + "hexcasting.page.logic.less": "If the first argument is less than the second, return True. Otherwise, return False.", + "hexcasting.page.logic.less_eq": "If the first argument is less than or equal to the second, return True. Otherwise, return False.", + "hexcasting.page.logic.not": "If the argument is True, return False; if it is False, return True.", + "hexcasting.page.logic.not_equals": "If the first argument does not equal the second (outside a small tolerance), return True. Otherwise, return False.", + "hexcasting.page.logic.or": "Returns True if at least one of the arguments are True; otherwise returns False.", + "hexcasting.page.logic.xor": "Returns True if exactly one of the arguments is true; otherwise returns False.", + "hexcasting.page.lore.cardamom1.1": "$(italic)Full title: Letter from Cardamom Steles to Her Father, #1/$$(br2)Dear Papa,$(br)Every day it seems I have more reason to thank you for saving up to send me to the Grand Library. The amount I am learning is incredible! I feel I don't have the skill with words needed to express myself fully... it is wonderful to be here.", + "hexcasting.page.lore.cardamom1.2": "I sit in the main dome as I write this. It's maintained by the Hexcasting Corps; they have some sort of peculiar mechanism at the top that captures the stray thought energy as it leaks out from the desks and desks of hard-working students, as I understand it. One of my friends in the dormitory, Amanita, is studying the subject, and oh how she loves to explain it to me at length, although I confess I do not understand it very well.", + "hexcasting.page.lore.cardamom1.3": "The way I understand it, our processes of thought--the intangible mechanisms by which I move my pen and by which you read this letter--are not completely efficient. A small amount of that energy is released into the environment, like how a wagon's axle is hot to the touch after it has been turning for a while. This spare energy is called \"media.\" One person's spare media is trifiling, but the hundreds of thinking people in the main dome have a sort of multiplicative effect, and combined with some sort of ingenious mechanism, it can be solidified into a sort of purple crystal.", + "hexcasting.page.lore.cardamom1.4": "But that's enough about her studies. I returned from my first expedition with the Geology Corps today! My apologies for not sending a letter before I left; the date crept up on me. We ventured into a crack in the earth to the east of the Grand and spent the night camping under the rock and soil. We kept to well-lit and well-traveled areas of the cave, of course, and in all honesty it was likely safer in there than the night surface, but oh how I was scared!", + "hexcasting.page.lore.cardamom1.5": "Fortunately the night passed without mishap, and we proceeded deeper into the cave for our examination of the local veins of ore. We were looking for trace veins of a purple crystal called \"amethyst,\" which supposedly occurs in small amounts deep in the rock. We did not find anything, sadly, and returned to the sunlit surface empty-handed.", + "hexcasting.page.lore.cardamom1.6": "Come to think of it, the description of this \"amethyst\" I now realize closely matches those crystals of media Amanita speaks of. Imagine if these nuggets of thought occurred naturally under the ground! I can't imagine why that might happen, though... ", + "hexcasting.page.lore.cardamom1.7": "As a student, I am entitled to send one letter by Akashic post every three months, free of charge. Unfortunately, you know how thin my moneybags are ... so I am afraid this offer is the only method I may communicate with you. I will of course appreciate immensely if you manage to scrounge together the money to send a letter back, but it seems our communications may be limited. I hate to be cut off from you so, but the skills I gain here will be more than repayment. Imagine, I will be the first member of our family to be anything other than a farmer!", + "hexcasting.page.lore.cardamom1.8": "So, I suppose I will write again in three months' time.$(br2)Yours,$(br)-- Cardamom Steles", + "hexcasting.page.lore.cardamom2.1": "$(italic)Full title: Letter from Cardamom Steles to Her Father, #2/$$(br2)Dear Papa,$(br)... Goodness, what an ordeal it is to try to summarize the last three months into a short letter. Such a cruel task set before me by this miracle I receive entirely for free! Woe is me.", + "hexcasting.page.lore.cardamom2.2": "My studies with the Geology Corps have been progressing smoothly. We have gone on more expeditions, deeper into the earth, to where the smooth gray stone makes way to a hard, flaky slate. It creates such an awful, choking dust under your feet... it's incredible what hostility there is below all of our feet all the time, even disregarding the creatures of the dark. (I have had one or two encounters with them, but I know how you shudder to think of me having to fight for my life, so I will not write of them.)", + "hexcasting.page.lore.cardamom2.3": "We did manage to find some of this amethyst, however. There was a small vein with a few trace crystals on one of our expeditions. We were under strict instructions to keep none of them and turn them in to our Corps prefect immediately. I find the whole affair rather ridiculous; they treat it like some matter of enormous importance and secrecy, and yet have a group of a dozen students, all barely six months at the Grand Library, trying to excavate barely ten drams of the stuff with twelve prospector's picks in a square foot...", + "hexcasting.page.lore.cardamom2.4": "I cannot imagine for what purpose, either. A librarian pointed me to an encyclopedia of gems, and amethyst seems to have next to no purpose; it's used for certain specialty types of glass and lenses, of all things.$(br2)If I were to speculate, I would guess that these amethyst crystals and the media they so resemble are one and the same, as I wrote of last time.", + "hexcasting.page.lore.cardamom2.5": "If this is true, the secrecy, not to mention the prefect's aversion to questioning, may be because this is an original piece of research the Grand Library is not eager to let into the hands of enemy factions.$(br2)However, this theory does not sit quite right with me. The amethyst I handled in the cave and the crystals of media Amanita has shown to me do seem quite similar, but not identical. I would like to see them side-by-side to be sure, but media has a peculiar buzzing or rumbling feel beneath the fingers that amethyst does not.", + "hexcasting.page.lore.cardamom2.6": "It is quite possible I was unable to sense it on the amethyst in the cave due to the stress of being undergound-- my hands were shaking the one time I managed to touch some, and the feeling is very light --but it does not seem the same to me. The light reflects slightly differently.$(br2)I suppose if I ever manage to get my hands on a crystal of amethyst outside of a cave, I will ask Amanita to see if she can cast a spell with it. Every time we meet she seems to have some new fantastic trick.", + "hexcasting.page.lore.cardamom2.7": "Just last week she suspended me in the air supported by nothing at all! It is an immensely strange feeling to have your body tingling and lighter than air with your clothing still the same weight... I am just glad she tugged me over my bed before the effect ran out.$(br2)Yours,$(br)-- Cardamom Steles", + "hexcasting.page.lore.cardamom3.1": "$(italic)Full title: Letter from Cardamom Steles to her father, #3, part 1/2/$$(br2)Dear Papa,$(br)Two very peculiar things have happened since I last wrote.$(br2)Firstly, the professor in charge of the entry-level Hexcasting Corps students has disappeared. Nobody knows where he has gone. His office and living quarters were found locked, but still in their usual state of disarray.", + "hexcasting.page.lore.cardamom3.10": "It was like each breath in erected a friendly signpost in my head promising the way forward, pointing directly down a steep cliff. I shook my head and immersed myself in the work of mining, which seemed to stave off the signposts.$(br2)I did manage, however, to hide a shard of the crystal in my knapsack.$(br2)We spent nearly the whole day mining, excavating most of the crystal by the time the prefects' chronometer said the sun would set soon.", + "hexcasting.page.lore.cardamom3.11": "As we left, I couldn't help but notice that on the surfaces of those dark, scored places we left unmined, there seemed to be the faintest buds of new crystal, like they were somehow growing out of them. Everything I had learned about the geology of crystals said they took thousands of years to grow, but here there was new growth in less than a day. I suppose the prefects' warnings against breaking those spots were warranted, at least.", + "hexcasting.page.lore.cardamom3.12": "Our journey back to the surface was uneventful, and we got back to our tents just as the sun was setting-- My apologies, I am nearly out of paper for this letter. There's only so much you can write on one Akashic letter ... This tale is worth purchasing another letter for. I'll send them both at once, so they should arrive together.$(br2)Yours,$(br)-- Cardamom Steles", + "hexcasting.page.lore.cardamom3.2": "Even more peculiarly, any attempts by the students of the Grand to rouse the administrative portions of the gnarled bureaucracy have been very firmly rejected. Even other professors seem reluctant to talk about him.$(br2)As you might imagine, Amanita is sorely distressed. Whatever replacement professors the Grand managed to dredge up have none of the old professor's tact or skill with beginners.", + "hexcasting.page.lore.cardamom3.3": "But amazingly, that is not the stranger of the two things I have to tell you. The most horrendous thing I hope to ever experience happened on another trip out with the Geology Corps. This time, we were due for an expedition near a village.", + "hexcasting.page.lore.cardamom3.4": "Usually when we do such a thing, there is a long process of communication with the mayor or elder of the village to ensure we have permission and establish boundaries on where we are allowed to go and what we are allowed to do. But on this expedition, there was very little of that; we were notified where we were going by a prefect of the Hexcasting Corps scarcely two days before we left.", + "hexcasting.page.lore.cardamom3.5": "We camped near the village, but in a thick forest, even though the nearby plains would have been much more hospitable. We could barely see the village from where we pitched our tents. As I laid down my bedroll the evening we arrived, the peculiar silence troubled me. Even if we couldn't see the village, we should have been able to hear it. But the whole time we were above-ground, there was next to no sound.", + "hexcasting.page.lore.cardamom3.6": "The few things I did hear all sounded like work: the peal of hammers on anvils and the scrape of hoe on dirt, for example. I never heard a shred of conversation.$(br2)The next morning we readied our lanterns and descended into the earth.", + "hexcasting.page.lore.cardamom3.7": "We weren't told exactly what it was we were spelunking for, but one of the other students had overheard we were looking for more amethyst, which seemed reasonable enough. I had my eyes trained for any specks of purple I might find in the cave walls, but just as the gray stone was making way to black slate, an incredible sight unfolded before me.$(br2)It was an entire chamber made of amethyst, nearly ten times as tall as I am. The inside seemed to glow with purple sparks and lanternlight glint, every surface covered with jagged crystal. There was more amethyst here than our entire group had ever excavated since I came to the Grand.", + "hexcasting.page.lore.cardamom3.8": "Gloves were distributed and we were told to get to mining. One of the prefects along with us had a peculiar lavender box I've seen some of the higher-ups in the Grand using for storage, and the other students and I dutifully got to shattering the glassy crystals off the walls of the cave and putting them in the box. Under the outer layers of brittle crystal there seemed to be two types of denser growth. One of them seemed of similar composition to the loose crystal, but one seemed more ... I struggle to find the word.", + "hexcasting.page.lore.cardamom3.9": "I hesitate to say \"important,\" but that's the best I can think of. It had a certain ... gravitas, like the dark, sunken X in its surface held some sacred meaning. Whatever the reason we were under strict instructions not to touch them. Occasionally a misplaced pickaxe would shatter one, and the student responsible would get quite the earful. Although the labor was hard and took most of my attention, I couldn't help but notice how ... lucid I felt. It was a strange mix of feelings: I felt incredibly clear-headed, but I also felt if I stopped to examine the feeling I might never stop.", + "hexcasting.page.lore.cardamom4.1": "$(italic)Full title: Letter from Cardamom Steles to her father, #3, part 2/2/$$(br2)Dear Papa,$(br)As I was saying, I was running out of paper to write my story, so the rest of it is in this letter. We made it back to camp just as the sun was setting. And that night was the most horrible event of the whole strange outing.", + "hexcasting.page.lore.cardamom4.10": "I know how tight money is for you, and how expensive it is to send a letter all the way back to the Grand, but I beg of you, please send a word of advice back. I am greatly distraught, and reading your words would do me much good.$(br2)Yours,$(br)-- Cardamom Steles", + "hexcasting.page.lore.cardamom4.2": "I had gotten up in the middle of the night to relieve myself. The moon was covered with clouds, and I confess I got lost in the winds of the forest and could not find the way back to the camp. Fearing the monsters of the night, I decided I would find my way to the village and see if I could find a bed there. At the least, I would be protected there.", + "hexcasting.page.lore.cardamom4.3": "The village was easy enough to find, though there was very little sound. Even this late at night I would expect the inn to be, if not bustling, at least not silent. But peeking through the inn door I saw absolutely nobody.$(br2)I knocked on the door of one of the houses to no response. The next two houses, too, seemed completely empty.", + "hexcasting.page.lore.cardamom4.4": "My pulse started to rise, and I resolved to enter the next house. I figured whoever might be inside would be understanding of their rest being disturbed. At the least, hearing another voice would have been reassuring, even if they didn't let me stay the night under their roof.$(br2)The house was very small, barely more than a cartographer's table and a bed. I could see there was someone in the bed, and I tried to reassure myself that everyone in the village was just deeply asleep as I turned to leave.", + "hexcasting.page.lore.cardamom4.5": "But then the clouds shifted, and moonlight glinted across the bed's occupant.$(br2)I screamed, and its eyes snapped open. It was ... distinctly, horrendously not human. It was like some awful de-evolution of a man, its forehead too high, its body stocky and dense. I believe it is appropriate to say \"it,\" at least; the thing before me was obviously not as wise as a human, despite how it resembled us.", + "hexcasting.page.lore.cardamom4.6": "Its eyes trained on me-- oh, its eyes were awful, dull and unintelligent like a sheep's! It opened its mouth but a pained mockery of speech poured out, a shuddering, nasal groan.", + "hexcasting.page.lore.cardamom4.7": "I ran. In the light of the newly-revealed moon I caught glimpses of other townspeople through windows, and they were all warped and simplified as the first $(italic)thing/$ I had seen. I sprinted into the darkness of the forest, away from those terrible, terrible animal eyes in those distorted faces.$(br2)The camp was easier to find now that I could see in the moonlight. No-one seemed to have noticed my prolonged absence, thankfully. I crawled back into my bedroll and did my very best to forget the whole night.", + "hexcasting.page.lore.cardamom4.8": "As you can tell from this letter, I did not do a very good job. That warped visage still haunts my dreams. I shudder to think that it once might have been human.$(br2)After we got back to the Grand I showed the shard of crystal I had smuggled out to Amanita. She confirmed my suspicions: it is definitely a crystal of media. What an enormous geode full of it is doing underground, though, is beyond her.", + "hexcasting.page.lore.cardamom4.9": "She also mentioned something interesting: apparently media can be used in a similar way to true amethyst in those niche glasses I mentioned a few letters ago. The physical manner in which they both crystallise happens to be nearly identical, and it has nothing to do with media's magical properties, or so she says.$(br2)I chose not to tell her of the village full of monsters.", + "hexcasting.page.lore.cardamom5.1": "$(italic)Full title: Letter from Cardamom Steles to her father, #4/$$(br2)Amanita has disappeared.$(br2)I don't know where she has gone, Papa. The last I saw her was over dinner, and she had just spoken to someone about the disappearances, and then--", + "hexcasting.page.lore.cardamom5.2": "then-- then she was gone too. And no one speaks of her, and I am so so scared, Papa, do they all know? Everyone must have a friend who's just $(italic)vanished/$, into thin air, into non-being.$(br2)Where did they $(italic)go/$?", + "hexcasting.page.lore.cardamom5.3": "They keep shutting things down, too-- we haven't been on a trip for the Geology Corps in weeks, all the apparati that collect media in the main dome are gone, the Apothecary Corps haven't been open for months... it's like termites are eating the Grand from the inside, leaving a hollow shell.$(br2)I think they've started scanning the letters, we write too...", + "hexcasting.page.lore.cardamom5.4": "This letter has taken so much courage to write, and I don't have the courage to tell people myself, but if no one here can hold the knowledge I hope and pray you can send the word out... it's a vain hope for this to spread from somewhere as backwater as Brackenfalls, but please, please, do your best. Remember them, Papa... Amanita Libera, Jasmine Ward, Theodore Cha... please, remember them... and please forgive my cowardice, that I foist the responsibility onto you.", + "hexcasting.page.lore.cardamom5.5": "i can no longer write, my hands shake so much, please, rescue us.", + "hexcasting.page.lore.experiment1.1": "$(italic)I only managed to find these five entries from this log./$$(br2)Detonation #26$(li)Location: Carpenter's North$(li)Population: 174$(li)Nodes Formed: 3$(li)Node Distance from Epicenter: 55-80m vertical, 85-156m horizontal$(li)Media Generation: 1320 uθ/min", + "hexcasting.page.lore.experiment1.2": "Detonation #27$(li)Location: Brackenfalls$(li)Population: 79$(li)Nodes Formed: 1$(li)Node Distance from Epicenter: 95m vertical, 67m horizontal$(li)Media Generation: 412 uθ/min", + "hexcasting.page.lore.experiment1.3": "Detonation #28$(li)Location: Greyston$(li)Population: approx. 1000$(li)Nodes Formed: 18$(li)Node Distance from Epicenter: 47-110m vertical, 59-289m horizontal$(li)Media Generation: 8478 uθ/min", + "hexcasting.page.lore.experiment1.4": "Detonation #29$(li)Location: Unnamed; village two days west of Greyston$(li)Population: 35$(li)Nodes Formed: 0$(li)Node Distance from Epicenter: N/A$(li)Media Generation: N/A$(br2)Note: inhabitants still affected in the normal way", + "hexcasting.page.lore.experiment1.5": "Detonation #30$(li)Location: Boiling Brook$(li)Population: 231$(li)Nodes Formed: 4$(li)Node Distance from Epicenter: 61-89m vertical, 78-191m horizontal$(li)Media Generation: 1862 uθ/min", + "hexcasting.page.lore.experiment1.6": "Conclusion: approx 60 needed for one node. Too few consumes them but does not provide enough energy for node formation. Little correlation between input count and breadth/depth.$(br2)Effects on inhabitants still consistently more severe than with single-target testing, especially the physical effects.", + "hexcasting.page.lore.experiment2.1": "$(italic)These documents were heavily redacted. I have copied the readable text from them here./$$(br2)Subject #1 \"A.E.\"$(br)Stopped struggling immediately after procedure. Facial expression and limbs slack, but can stand unassisted. When left unattended, absently pantomimes actions commonly done in previous profession (groundskeeping).", + "hexcasting.page.lore.experiment2.2": "Heartrate high immediately after procedure, but this is inconclusive due to state of fear immediately before. Resulting bud produced 35 uθ/min.$(br)...$(br)Subject #4 \"P.I.\"$(br)Psychological tests run on P.I. Subject has object permanence, spatial awareness, basic numerical reasoning. Difficulty learning new tasks. $(br2) ...", + "hexcasting.page.lore.experiment2.3": "Subject #7 \"T.C.\"$(br)Similar results several hours after the procedure to other subjects: able to stand, perform simple tasks... $(br2)Subject #11 \"R.S.\"$(br)Sedated before procedure...$(br2) ...", + "hexcasting.page.lore.experiment2.4": "Subject #23 \"A.L.\"$(br)Ability to speak retained to a greater degree than most subjects; dwindled to broken sentences, then a single word \"card\" over the course of several hours.$(br2)For further testing: how does the procedure affect previous Hexcasters vs. non-Hexcasters?$(br2) ...", + "hexcasting.page.lore.inventory.1": "Cell 39, Restoration Log #72, Detainment Center Beta$(br2)Prisoner Name: Raphael Barr$(br)Crime: Knowledge of Project Wooleye$(br)Reason for Cell Vacancy: Death$(br)Additional notes: The following letter was scrawled over most of the wall space.", + "hexcasting.page.lore.inventory.10": "with all the media around I tried many times to cast a hex and get me out or at the least snuff out my suffering but the patterns that march through the fields of my mind snicker and dissolve when I try to reach for them. i think i remember being forced to forget them, I remember grand structures of knowledge interlinked getting chipped away and splintering as it fell apart under the weight of forced ignorance but it hurts so much to try to remember forgetting what you remembered you thought you knew", + "hexcasting.page.lore.inventory.11": "maybe I am just in the late late late late stages of overcasting dependency, the patterns papercutting into the space between my eyes and my eyelids I have heard of, the purple edges of my nerves i have heard of. is there any point trying to make myself believe what is true I am not being tortured. I deserve this. if i will never have anyone to discuss it with ever again why try", + "hexcasting.page.lore.inventory.12": "they're going to kill everyone n the whole world aren't they the grand needs to eat just as much as i ... when did i lasst eat$(br2)everyone else has to eat and they cannot do that if all the farmers in the world are empty and all the knowledge of farming is underground or at least someone else is going to Find out and melt their smug faces to wax", + "hexcasting.page.lore.inventory.13": "maybe wake up someday and wonder about all the thngs we left them and wonder why there are million miles of tunnels underground with no one smart enough to mine them$(br2)i can see them reading this . they ... will be too far gone to care", + "hexcasting.page.lore.inventory.2": "I see hexagons when I close my eyes.$(br2)The patterns, they invade the space between my eyes and my eyelids, my mind, my dreams. I sparkle in and out of lucidity, like a crystal dangling from a string, sometimes catching the light, sometimes consumed by it.", + "hexcasting.page.lore.inventory.3": "I am more lucid today. Maybe. I cannot tell anymore. I cannot even say I am tired anymore; at some point the constant companion of exhaustion left me, even as something else came to prick at my eyes. I can't sense the fatigue. But it's there.$(br2)My bones are fragile. My joints are rough and sharp.", + "hexcasting.page.lore.inventory.4": "Sometimes why I am here comes back to me. I remember being too loud about something I knew ... I remember a very bright room where I was told things. I remember my thoughts freezing into glass, shattered, melted and recrystallized over and over and over and over and over with a purpose behind them to make me forget worse than that to keep me alive while killing me, my self, the iota of ME being meaningless because there would be no observer just a body but I tricked them I did it somehow", + "hexcasting.page.lore.inventory.5": "they thought they broke me beyond the point of pulling the wool over my eyes but i was awake enough and am awake enough to feel PAIN$(br2)I do not sleep but when i wake up I cannot rub the crust off of my eyes because it would cut my skin and I do not want to see the purple glints inside", + "hexcasting.page.lore.inventory.6": "They do not kill me, because my husband has my focus, and he would know if I died. But he is no Hexcaster and could not find me with his mediocre skill. i am out of ambit$(br2)it h urts to think. quite literally. the thoughts are so wasteful now the leftover striates directly onto the million microcrystals", + "hexcasting.page.lore.inventory.7": "i remember the doctors in the bright room forcing me to inhale something like sand but sharper and it hurt so much. At first just the physical pain of mucous membranes trying to absorb shatterglass but then they got their fingernails into my stimulus-response and they could do it with a word$(br2)i remember camping out and seeing the corps setting up their circle all around a village and the ground under my feet rumbling", + "hexcasting.page.lore.inventory.8": "drift out of time. Sometimes I believe I see visions of the future, because they seem to make sense but cannot happen now because I know i will be here until forever because the white room men said so. i see myself toppling over and my skull cracking open into halves and inside will be spears of not-amethyst dripping with blood piercing the wrinkled three pounds of fat and meat dreaming that it is a butterfly", + "hexcasting.page.lore.inventory.9": "i hope my students are alright. why do i think that? waste. they told me i'm a waste, they couldn't be content with destroying me they had to make me feel like I deserved it the whole time, too. No sticks or stones to break my bones, just words to hurt me. if they released me no one would believe me because my body is inspectable fully i just look like one more addicted to overcasting$(br2)But they locked me up insted and i dont know if it's a mercy", + "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.math.abs.1": "Compute the absolute value or length.", + "hexcasting.page.math.abs.2": "Replaces a number with its absolute value, or a vector with its length.", + "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.ceil": "\"Ceilings\" a number, raising it to the next integer value if it has a fractional component. If passed a vector, instead ceils each of its components.", + "hexcasting.page.math.coerce_axial": "For a vector, coerce it to its nearest axial direction, a unit vector. For a number, return the sign of the number; 1 if positive, -1 if negative. In both cases, zero is unaffected.", + "hexcasting.page.math.construct_vec": "Combine three numbers at the top of the stack into a vector's X, Y, and Z components (bottom to top).", + "hexcasting.page.math.deconstruct_vec": "Split a vector into its X, Y, and Z components (bottom to top).", + "hexcasting.page.math.div.1": "Perform division or the cross product.", + "hexcasting.page.math.div.2": "As such:$(li)With two numbers, combines them into their quotient.$(li)With a number and a vector, removes the number and divides each element of the vector by it.$(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 second-from-the-top of the stack is divided by the top of the stack.$(p)WARNING: Never divide by zero!", + "hexcasting.page.math.floor": "\"Floors\" a number, cutting off the fractional component and leaving an integer value. If passed a vector, instead floors each of its components.", + "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. When applied on vectors, performs the above operation elementwise.", + "hexcasting.page.math.mul.1": "Perform multiplication or the dot product.", + "hexcasting.page.math.mul.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.numvec": "Many mathematical operations function on both numbers and vectors. Such arguments are written as \"num|vec\".", + "hexcasting.page.math.pow.1": "Perform exponentiation or vector projection.", + "hexcasting.page.math.pow.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.random": "Creates a random number between 0 and 1.", + "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.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.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.eval/cc.1": "Cast a pattern or list of patterns from the stack exactly like $(l:patterns/meta#hexcasting:eval)$(action)Hermes' Gambit/$, except that a unique \"Jump\" iota is pushed to the stack beforehand. ", + "hexcasting.page.meta.eval/cc.2": "When the \"Jump\"-iota is executed, it'll skip the rest of the patterns and jump directly to the end of the pattern list.$(p)While this may seem redundant given $(l:patterns/meta#hexcasting:halt)$(action)Charon's Gambit/$ exists, this allows you to exit $(italic)nested/$ $(l:patterns/meta#hexcasting:eval)$(action)Hermes'/$ invocations in a controlled way, where Charon only allows you to exit one.$(p)The \"Jump\" iota will apparently stay on the stack even after execution is finished... better not think about the implications of that.", + "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.page.meta.thanatos.1": "Adds the number of patterns a _Hex is still capable of evaluating to the stack. This is reduced by one for each pattern cast by the _Hex.", + "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.", + "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.disabled": "I tried to cast an action that has been disallowed by a server administrator.$(br2)Causes black sparks.", + "hexcasting.page.mishaps.disabled.title": "Disallowed Action", + "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.entity_immune.title": "Entity is Immune", + "hexcasting.page.mishaps.entity_not_found": "I attempted to affect an entity that doesn't exist. Two cases for this; one is if the entity is simply dead. The other, and more peculiar to me, is if it is unable to be \"observed\" from afar.$(br2)Causes brown sparks, and causes me to feel sick for a moment, as if I had stood up too fast.", + "hexcasting.page.mishaps.entity_not_found.title": "Entity Not Found", + "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_out_of_range.title": "Entity Out of Ambit", + "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.incorrect_block.title": "Incorrect Block", + "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.incorrect_iota.title": "Incorrect Iota", + "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_item.title": "Incorrect Item", + "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.invalid_pattern.title": "Invalid Pattern", + "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.math_error.title": "Mathematical Error", + "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.not_enough_iotas.title": "Not Enough Iotas", + "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://github.com/gamma-delta/HexMod/issues)Please open a bug report!/$$(br2)Causes black sparks.", + "hexcasting.page.mishaps.other.title": "Catastrophic Failure", + "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.retrospection.title": "Hasty Retrospection", + "hexcasting.page.mishaps.stack_size": "I tried to cast a spell which exceeded the size limit of the stack.$(br2)Causes black sparks, and my entire stack will be replaced with a single $(l:casting/influences)$(action)Garbage/$.", + "hexcasting.page.mishaps.stack_size.title": "Too Many Iotas", + "hexcasting.page.mishaps.too_many_patterns": "I attempted to evaluate too many patterns in one _Hex. Often, this happens because I've accidentally created an infinite loop.$(br2)Causes dark blue sparks, and chokes all the air out of me.", + "hexcasting.page.mishaps.too_many_patterns.title": "Lost in Thought", + "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.true_name.title": "Transgress Other", + "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.vector_out_of_range.title": "Vector Out of Ambit", + "hexcasting.page.mishaps2.1": "I have discovered new and horrifying modes of failure. I must not succumb to them.", + "hexcasting.page.mishaps2.bad_mindflay": "Attempted to flay the mind of something 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 a villager sees that, I doubt they would look on it favorably.", + "hexcasting.page.mishaps2.bad_mindflay.title": "Inert Mindflay", + "hexcasting.page.mishaps2.bad_shepherd": "Tried to activate a $(l:greatwork/directrix)$(item)Shepherd Directrix/$ without a boolean on the top of the stack.$(br2)Causes red and white sparks, and forcibly ejects the Shepherd Directrix from the circle. This doesn't destroy it, thankfully, but I should make sure to go pick it up and replace it where it belongs.", + "hexcasting.page.mishaps2.bad_shepherd.title": "Improper Shepherding", + "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_circle.title": "Lack Spell Circle", + "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.", + "hexcasting.page.mishaps2.no_record.title": "Lack Akashic Record", + "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/levitation": "Inflicts $(thing)levitation/$. Base cost is one $(l:items/amethyst)$(item)Amethyst Dust/$ per 5 seconds.", + "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.page.nadirs.potion/weakness": "Inflicts $(thing)weakness/$. Base cost is one $(l:items/amethyst)$(item)Amethyst Dust/$ per 10 seconds.", + "hexcasting.page.nadirs.potion/wither": "Inflicts $(thing)withering/$. Base cost is one $(l:items/amethyst)$(item)Amethyst Dust/$ per second.", + "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.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.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.page.numbers.example.-32": "This pattern pushes -32: negate 1 + 5 + 10 * 2.", + "hexcasting.page.numbers.example.-32.header": "Example 3", + "hexcasting.page.numbers.example.10": "This pattern pushes 10.", + "hexcasting.page.numbers.example.10.header": "Example 1", + "hexcasting.page.numbers.example.4.5": "This pattern pushes 4.5: 5 / 2 + 1 + 1.", + "hexcasting.page.numbers.example.4.5.header": "Example 4", + "hexcasting.page.numbers.example.7": "This pattern pushes 7: 5 + 1 + 1.", + "hexcasting.page.numbers.example.7.header": "Example 2", + "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.further_notes.1": "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.page.patterns_as_iotas.further_notes.2": "If an iota other than a pattern is present in a list to be executed by $(l:patterns/meta#hexcasting:eval)$(action)Hermes' Gambit/$ or any other meta-evaluation pattern, it will normally result in a mishap. However, this can be avoided using the patterns described in this section.$(br2)Just as with pattern iotas, the patterns described here can be used to \"escape\" $(o)any other$() kind of iota, causing it to be pushed to the stack when something tries to evaluate it instead of causing a mishap.", + "hexcasting.page.patterns_as_iotas.further_notes.3": "This technique may be useful if I want a _Hex to be able to reference a specific iota, such as a complicated vector or an entity reference, without having to construct or obtain it each time.$(br2)The process of getting such an iota into a list of patterns in the first place may be somewhat involved. The simplest method would be to draw a placeholder pattern when assembling the list, and then make use of $(l:patterns/lists#hexcasting:replace)$(action)Surgeon's Exaltation/$ to replace it with my desired iota.", + "hexcasting.page.patterns_as_iotas.further_notes.title": "Further Notes", + "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.undo": "Finally, if I make a mistake while drawing patterns inside $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Intro-/$ and $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Retrospection/$ I can draw $(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)Evanition/$ to remove the last pattern that I drew from the pattern list that is being constructed.", + "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 Distillation/$ 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.page.pigments.1": "The old practitioners of my art sometimes identified themselves by a color, emblematic of them and their _Hexes. Although their names have faded, their colors remain. 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, but I believe I have isolated the formulae for many different colors and blends of pigments. To apply a pigment, I hold it in one hand and cast $(l:patterns/spells/colorize)$(action)Internalize Pigment/$ with the other; this consumes the pigment.$(br2)The pigments seem to affect the color of the sparks of _media emitted when I cast a _Hex and my $(l:patterns/spells/sentinels)$(thing)sentinel/$, but I don't doubt that the color will show up elsewhere.", + "hexcasting.page.pigments.colored.crafting.desc": "Pigments in all the colors of the rainbow.", + "hexcasting.page.pigments.colored.crafting.header": "Chromatic Pigments", + "hexcasting.page.pigments.special": "And finally, a pair of special pigments. $(item)Soulglimmer Pigment/$ shines with colors wholly unique to me, and $(item)Vacant Pigment/$ restores my original amethyst hue.$(br2)$(italic)And all the colors I am inside have not been invented yet./$", + "hexcasting.page.potions.1": "Peering through a $(l:items/lens)$(item)Scrying Lens/$ allows me to fit more patterns onto my casting grid. But what if I want to improve my casting even further? Alchemy has an answer.$(br2)By adding a pinch of Amethyst Dust to an $(item)Awkward Potion/$, I can create a brew that increases the size of my grid in much the same way as the Lens. I can even use both at once for the ultimate grid!", + "hexcasting.page.potions.2": "The Potion of Clarity can be extended, strengthened, and modified like any other potion.$(br2)It can also be corrupted with a $(item)Fermented Spider Eye/$ to produce a variant with the opposite effect. This may be useful for dealing with enemy casters.", + "hexcasting.page.potions.effects.header": "Clarity and Clouding", + "hexcasting.page.quenching_allays.1": "THEY ARE BITS OF MEDIA. How did I not see it sooner? They are -- as I am a heap of flesh with a scrap, blessed with a scrap of thought, an Allay is a self-sustaining quarrel of media pinned to a scrap of flesh. It explains everything -- their propensity for media, their response to music, I SEE NOW, HOW did the ones before NOT?", + "hexcasting.page.quenching_allays.2": "And given this it is only RIGHT I conquer their peculiar minds -- their peculiar selves -- that is all they are, a mind, a self, a coda. Something about their phase speaks to me. I can... I can compress _media with them, overlay two wends of thought in one space, physical and cognitive, all and once.$(br2)Somehow, the process produces _media of its own. How? Perhaps -- perhaps MY work, the process of doing it --", + "hexcasting.page.quenching_allays.3": "It matters not. I matter not. They matter not, all that matters is what it does. And this is it.$(br2)It must hurt so very much.$(br2)Ten $(l:items/amethyst)$(item)Amethyst Dust/$ is the price to enact such a perverse ritual.", + "hexcasting.page.quenching_allays.4": "The product is fragile. Breaking it shatters it into pieces, with $(thing)Fortune/$ increasing the yield... if I wish the block itself I need a silken touch.$(br2)The produced shards are worth thrice an $(l:items/amethyst)$(item)Charged Amethyst Crystal/$ apiece. The block itself is worth four of the shards.", + "hexcasting.page.quenching_allays.5": "They are mercurial, they seem to twist and wink under my fingers, and by giving them a mentor in another form of _media they may be coerced into its shape, in an equivalent exchange of _media.", + "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 \"→\", and the types of iota the action will create.$(p)For example, \"$(n)vector, number/$ → $(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": "\"→ $(n)entity/$\" means it'll just push an entity. \"$(n)entity, vector/$ →\" 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.page.readwrite.1": "This section deals with the storage of $(thing)Iotas/$ in a more permanent medium. Nearly any iota can be stored to a suitable item, such as a $(l:items/focus)$(item)Focus/$ or $(l:items/spellbook)$(item)Spellbook/$, and read back later. Certain items, such as an $(l:items/abacus)$(item)Abacus/$, can only be read from.$(br2)Iotas are usually read and written from the other hand, but it is also possible to read and write with an item when it is sitting on the ground as an item entity, or when in an item frame.", + "hexcasting.page.readwrite.2": "There may be other entities I can interact with in this way. For example, a $(l:items/scroll)$(item)Scroll/$ hung on the wall can have its pattern read off of it.$(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.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.local.title": "The Ravenmind", + "hexcasting.page.readwrite.read": "Copy the iota stored in the item in my other hand and add it to the stack.", + "hexcasting.page.readwrite.read/entity": "Like $(l:patterns/readwrite#hexcasting:read)$(action)Scribe's Reflection/$, but the iota is read out of an entity instead of my other hand.", + "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.page.readwrite.readable": "If the item in my other hand holds an iota I can read, returns True. Otherwise, returns False.", + "hexcasting.page.readwrite.readable/entity": "Like $(l:patterns/readwrite#hexcasting:readable)$(action)Auditor's Reflection/$, but the readability of an entity is checked instead of my other hand.", + "hexcasting.page.readwrite.writable": "If I could save an iota into the item in my other hand, returns True. Otherwise, returns False.", + "hexcasting.page.readwrite.writable/entity": "Like $(l:patterns/readwrite#hexcasting:writable)$(action)Assessor's Reflection/$, but the writability of an entity is checked instead of my other hand.", + "hexcasting.page.readwrite.write": "Remove the top iota from the stack, and save it into the item in my other hand.", + "hexcasting.page.readwrite.write/entity": "Like $(l:patterns/readwrite#hexcasting:read)$(action)Scribe's Gambit/$, but the iota is written to an entity instead of my other hand.$(br2)Interestingly enough, it looks like I cannot write my own Name using this spell. I get a sense that I might be endangered if I could.", + "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.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.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.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.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.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 somewhat similar to $(l:patterns/lists#hexcasting:add)$(action)Additive Distillation/$.", + "hexcasting.page.sets.to_set": "Removes duplicate entries from a 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.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.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.page.slate.crafting.desc": "$(italic)This is the letter \"a.\" Learn it./$", + "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.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 suitable blocks, casting any patterns it finds.$(br2)If there is no way for the wave to return to the $(l:greatwork/impetus)$(item)Impetus/$, the casting will fail immediately. Also, the direction the wave 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/great)$(action)Greater Teleport/$.", + "hexcasting.page.spellcircles.teleport_circle.title": "Teleportation Circle", + "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.page.stackmanip.2dup": "Copy the top two iotas of the stack. [0, 1] becomes [0, 1, 0, 1].", + "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.fisherman": "Grabs the element in the stack indexed by the number and brings it to the top. If the number is negative, instead moves the top element of the stack down that many elements.", + "hexcasting.page.stackmanip.fisherman/copy": "Like $(l:patterns/stackmanip#hexcasting:fisherman)$(action)Fisherman's Gambit/$, but instead of moving the iota, copies it.", + "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.over": "Copy the second-to-last iota of the stack to the top. [0, 1] becomes [0, 1, 0].", + "hexcasting.page.stackmanip.pseudo-novice": "Removes the first iota from the stack.$(br2)This seems to be a special case of $(l:patterns/stackmanip#hexcasting:mask)$(action)Bookkeeper's Gambit/$.", + "hexcasting.page.stackmanip.pseudo-novice.title": "Novice's Gambit", + "hexcasting.page.stackmanip.rotate": "Yanks the iota third from the top of the stack to the top. [0, 1, 2] becomes [1, 2, 0].", + "hexcasting.page.stackmanip.rotate_reverse": "Yanks the top iota to the third position. [0, 1, 2] becomes [2, 0, 1].", + "hexcasting.page.stackmanip.stack_len": "Pushes the size of the stack as a number to the top of the stack. (For example, a stack of [0, 1] will become [0, 1, 2].)", + "hexcasting.page.stackmanip.swap": "Swaps the top two iotas of the stack.", + "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.", + "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.page.stackmanip.tuck": "Copy the top iota of the stack, then put it under the second iota. [0, 1] becomes [1, 0, 1].", + "hexcasting.page.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.desc": "$(italic)Don't fight; flame, light; ignite; burn bright./$", + "hexcasting.page.staff.crafting.header": "Staves", + "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?", + "hexcasting.page.teleport/great.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/great.2": "The entity will be teleported by the given vector. Curiously, this vector seems to be an offset, not an absolute position in the world; for example, if I use $(l:patterns/consts#hexcasting:const/vec/x)$(action)Vector Reflection +X/$, the entity will end up precisely one block east of its original 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.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.page.thought_knot.1": "The forgetful often tie a piece of string about their finger to help them remember something important. I believe this idea might be of use in my art. A specially knotted piece of string should be able to hold a single iota stably, irregardless of my stack.$(br2)I will call my invention a $(item)Thought-Knot/$.", + "hexcasting.page.thought_knot.2": "When I craft it, it stores no iota. Using $(l:patterns/readwrite#hexcasting:write)$(action)Scribe's Gambit/$ while holding a $(item)Thought-Knot/$ in my other hand will remove the top of the stack and save it into the $(item)Thought-Knot/$. Using $(l:patterns/readwrite#hexcasting:read)$(action)Scribe's Reflection/$ will copy whatever iota's in the $(item)Thought-Knot/$ and add it to the stack.$(br2)Once a $(item)Thought-Knot/$ has been written to, the string is indelibly tangled; the iota can be read any number of times, but there is no way to erase or overwrite it. Fortunately, they are not expensive.", + "hexcasting.page.thought_knot.3": "Also, if I store an entity in a $(item)Thought-Knot/$ 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.", + "hexcasting.page.thought_knot.crafting.desc": "$(italic)How would you feel if someone saw you wearing a sign that said, \"I am dashing and handsome?\"/$", + "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.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.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.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/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/night_vision": "Bestows $(thing)night vision/$. Base cost is one $(l:items/amethyst)$(item)Amethyst Dust/$ per 5 seconds.", + "hexcasting.page.zeniths.potion/regeneration": "Bestows $(thing)regeneration/$. Base cost is one $(l:items/amethyst)$(item)Amethyst Dust/$ per second.", + "hexcasting.page.zeniths.potion/strength": "Bestows $(thing)strength/$. Base cost is one $(l:items/amethyst)$(item)Amethyst Dust/$ per 3 seconds.", + "hexcasting.pattern.unknown": "Unknown pattern resource location %s", + "hexcasting.rawhook.hexcasting:close_paren": "Retrospection", + "hexcasting.rawhook.hexcasting:escape": "Consideration", + "hexcasting.rawhook.hexcasting:open_paren": "Introspection", + "hexcasting.rawhook.hexcasting:undo": "Evanition", + "hexcasting.special.hexcasting:mask": "Bookkeeper's Gambit: %s", + "hexcasting.special.hexcasting:number": "Numerical Reflection: %s", + "hexcasting.spelldata.akashic.nopos": "The owning record does not know of any iota here (this is a bug)", + "hexcasting.spelldata.anything": "Anything", + "hexcasting.spelldata.entity.whoknows": "An unknown entity", + "hexcasting.spelldata.onitem": "Contains: %s", + "hexcasting.spelldata.unknown": "A broken iota", + "hexcasting.subtitles.abacus": "Abacus clicks", + "hexcasting.subtitles.abacus.shake": "Abacus shakes", + "hexcasting.subtitles.ambiance": "Hex grid hums", + "hexcasting.subtitles.casting.cast.fail": "Mishap crunches", + "hexcasting.subtitles.casting.cast.hermes": "Hermes' twangs", + "hexcasting.subtitles.casting.cast.normal": "Action hums", + "hexcasting.subtitles.casting.cast.spell": "Spell boinks", + "hexcasting.subtitles.casting.cast.thoth": "Thoth's twangs", + "hexcasting.subtitles.casting.pattern.add_segment": "Adding line", + "hexcasting.subtitles.casting.pattern.start": "Starting pattern", + "hexcasting.subtitles.flight.ambience": "Player flies", + "hexcasting.subtitles.flight.finish": "Flight ends", + "hexcasting.subtitles.impetus.fletcher.tick": "Fletcher Impetus ticks", + "hexcasting.subtitles.impetus.redstone.clear": "Cleric Impetus clears", + "hexcasting.subtitles.impetus.redstone.register": "Cleric Impetus dings", + "hexcasting.subtitles.lore_fragment.read": "Read lore fragment", + "hexcasting.subtitles.scroll.dust": "Scroll covers with dust", + "hexcasting.subtitles.scroll.scribble": "Scroll is scribbled", + "hexcasting.subtitles.spellcircle.add_pattern": "Spell circle crackles", + "hexcasting.subtitles.spellcircle.fail": "Spell circle fizzles out", + "hexcasting.subtitles.staff.reset": "Casting resets", + "hexcasting.tooltip.abacus": "%d", + "hexcasting.tooltip.abacus.reset": "Reset to 0", + "hexcasting.tooltip.abacus.reset.nice": "nice", + "hexcasting.tooltip.boolean_false": "False", + "hexcasting.tooltip.boolean_true": "True", + "hexcasting.tooltip.brainsweep.level": "Level %s", + "hexcasting.tooltip.brainsweep.min_level": "Level %s or higher", + "hexcasting.tooltip.brainsweep.product": "Mindless Body", + "hexcasting.tooltip.circle.many_exits": "The flow of media had too many exits at %s", + "hexcasting.tooltip.circle.no_closure": "The flow of media will not be able to return to the impetus at %s", + "hexcasting.tooltip.circle.no_exit": "The flow of media could not find an exit at %s", + "hexcasting.tooltip.jump_iota": "[Jump]", + "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.lens.impetus.redstone.bound": "Bound to %s", + "hexcasting.tooltip.lens.impetus.redstone.bound.none": "Unbound", + "hexcasting.tooltip.lens.pattern.invalid": "Invalid Pattern", + "hexcasting.tooltip.list_contents": "[%s]", + "hexcasting.tooltip.media": "%d dust", + "hexcasting.tooltip.media_amount": "Contains: %s (%s)", + "hexcasting.tooltip.media_amount.advanced": "Contains: %s/%s (%s)", + "hexcasting.tooltip.null_iota": "Null", + "hexcasting.tooltip.pattern_iota": "HexPattern(%s)", + "hexcasting.tooltip.scroll.needs_purchase": "Purchase to show pattern", + "hexcasting.tooltip.scroll.pattern_not_loaded": "Place in inventory to load pattern", + "hexcasting.tooltip.spellbook.empty": "Empty", + "hexcasting.tooltip.spellbook.empty.sealed": "Empty (%s)", + "hexcasting.tooltip.spellbook.page": "Selected Page %d/%d", + "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.page.sealed": "Selected Page %d/%d (%s)", + "hexcasting.tooltip.spellbook.sealed": "Sealed", + "hexcasting.tooltip.stored_hex": "Hex: ", + "item.hexcasting.abacus": "Abacus", + "item.hexcasting.amethyst_dust": "Amethyst Dust", + "item.hexcasting.ancient_colorizer": "Ancient Pigment", + "item.hexcasting.ancient_cypher": "Ancient Cypher", + "item.hexcasting.ancient_cypher.preset": "Ancient Cypher: %s", + "item.hexcasting.artifact": "Artifact", + "item.hexcasting.battery": "Phial of Media", + "item.hexcasting.book": "Hex Notebook", + "item.hexcasting.charged_amethyst": "Charged Amethyst", + "item.hexcasting.creative_unlocker": "The Media Cube", + "item.hexcasting.creative_unlocker.for_emphasis": "INFINITE MEDIA", + "item.hexcasting.creative_unlocker.mod_name": "Hexcasting", + "item.hexcasting.creative_unlocker.tooltip": "Consume to unlock all %s knowledge.", + "item.hexcasting.cypher": "Cypher", + "item.hexcasting.default_colorizer": "Vacant Pigment", + "item.hexcasting.dye_colorizer_black": "Black Pigment", + "item.hexcasting.dye_colorizer_blue": "Blue Pigment", + "item.hexcasting.dye_colorizer_brown": "Brown Pigment", + "item.hexcasting.dye_colorizer_cyan": "Cyan Pigment", + "item.hexcasting.dye_colorizer_gray": "Gray Pigment", + "item.hexcasting.dye_colorizer_green": "Green Pigment", + "item.hexcasting.dye_colorizer_light_blue": "Light Blue Pigment", + "item.hexcasting.dye_colorizer_light_gray": "Light Gray Pigment", + "item.hexcasting.dye_colorizer_lime": "Lime Pigment", + "item.hexcasting.dye_colorizer_magenta": "Magenta Pigment", + "item.hexcasting.dye_colorizer_orange": "Orange Pigment", + "item.hexcasting.dye_colorizer_pink": "Pink Pigment", + "item.hexcasting.dye_colorizer_purple": "Purple Pigment", + "item.hexcasting.dye_colorizer_red": "Red Pigment", + "item.hexcasting.dye_colorizer_white": "White Pigment", + "item.hexcasting.dye_colorizer_yellow": "Yellow Pigment", + "item.hexcasting.focus": "Focus", + "item.hexcasting.focus.sealed": "Sealed Focus", + "item.hexcasting.jeweler_hammer": "Jeweler's Hammer", + "item.hexcasting.lens": "Scrying Lens", + "item.hexcasting.lore_fragment": "Lore Fragment", + "item.hexcasting.lore_fragment.all": "It seems I have found all the lore this world has to offer.", + "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.quenched_allay_shard": "Shard of Quenched Allay", + "item.hexcasting.scroll": "Large Scroll", + "item.hexcasting.scroll_medium": "Medium Scroll", + "item.hexcasting.scroll_medium.empty": "Empty Medium Scroll", + "item.hexcasting.scroll_medium.of": "How did you get this item of %s", + "item.hexcasting.scroll_small": "Small Scroll", + "item.hexcasting.scroll_small.empty": "Empty Small Scroll", + "item.hexcasting.scroll_small.of": "How did you get this item of %s", + "item.hexcasting.scroll.empty": "Empty Large Scroll", + "item.hexcasting.scroll.of": "Ancient Scroll of %s", + "item.hexcasting.spellbook": "Spellbook", + "item.hexcasting.staff.acacia": "Acacia Staff", + "item.hexcasting.staff.bamboo": "Bamboo Staff", + "item.hexcasting.staff.birch": "Birch Staff", + "item.hexcasting.staff.cherry": "Cherry Staff", + "item.hexcasting.staff.crimson": "Crimson Staff", + "item.hexcasting.staff.dark_oak": "Dark Oak Staff", + "item.hexcasting.staff.edified": "Edified Staff", + "item.hexcasting.staff.jungle": "Jungle Staff", + "item.hexcasting.staff.mangrove": "Mangrove Staff", + "item.hexcasting.staff.mindsplice": "Mindsplice Staff", + "item.hexcasting.staff.oak": "Oak Staff", + "item.hexcasting.staff.quenched": "Quenched Shard Staff", + "item.hexcasting.staff.spruce": "Spruce Staff", + "item.hexcasting.staff.warped": "Warped Staff", + "item.hexcasting.sub_sandwich": "Submarine Sandwich", + "item.hexcasting.thought_knot": "Thought-Knot", + "item.hexcasting.trinket": "Trinket", + "item.hexcasting.uuid_colorizer": "Soulglimmer Pigment", + "item.minecraft.lingering_potion.effect.enlarge_grid": "Lingering Potion of Clarity", + "item.minecraft.lingering_potion.effect.enlarge_grid_long": "Lingering Potion of Clarity", + "item.minecraft.lingering_potion.effect.enlarge_grid_strong": "Lingering Potion of Clarity", + "item.minecraft.lingering_potion.effect.shrink_grid": "Lingering Potion of Clouding", + "item.minecraft.lingering_potion.effect.shrink_grid_long": "Lingering Potion of Clouding", + "item.minecraft.lingering_potion.effect.shrink_grid_strong": "Lingering Potion of Clouding", + "item.minecraft.potion.effect.enlarge_grid": "Potion of Clarity", + "item.minecraft.potion.effect.enlarge_grid_long": "Potion of Clarity", + "item.minecraft.potion.effect.enlarge_grid_strong": "Potion of Clarity", + "item.minecraft.potion.effect.shrink_grid": "Potion of Clouding", + "item.minecraft.potion.effect.shrink_grid_long": "Potion of Clouding", + "item.minecraft.potion.effect.shrink_grid_strong": "Potion of Clouding", + "item.minecraft.splash_potion.effect.enlarge_grid": "Splash Potion of Clarity", + "item.minecraft.splash_potion.effect.enlarge_grid_long": "Splash Potion of Clarity", + "item.minecraft.splash_potion.effect.enlarge_grid_strong": "Splash Potion of Clarity", + "item.minecraft.splash_potion.effect.shrink_grid": "Splash Potion of Clouding", + "item.minecraft.splash_potion.effect.shrink_grid_long": "Splash Potion of Clouding", + "item.minecraft.splash_potion.effect.shrink_grid_strong": "Splash Potion of Clouding", + "item.minecraft.tipped_arrow.effect.enlarge_grid": "Arrow of Clarity", + "item.minecraft.tipped_arrow.effect.enlarge_grid_long": "Arrow of Clarity", + "item.minecraft.tipped_arrow.effect.enlarge_grid_strong": "Arrow of Clarity", + "item.minecraft.tipped_arrow.effect.shrink_grid": "Arrow of Clouding", + "item.minecraft.tipped_arrow.effect.shrink_grid_long": "Arrow of Clouding", + "item.minecraft.tipped_arrow.effect.shrink_grid_strong": "Arrow of Clouding", + "itemGroup.hexcasting.hexcasting": "Hex Casting", + "itemGroup.hexcasting.scrolls": "Hex Casting (Scrolls)", + "matcher.hexcasting.pattern.description": "Visual Hex Casting Patterns", + "matcher.hexcasting.pattern.example": "", + "matcher.hexcasting.pattern.title": "Hex Pattern", + "matcher.hexcasting.pattern.title.styled": "Hex Pattern ", + "stat.hexcasting.media_overcast": "Media Overcast (in dust)", + "stat.hexcasting.media_used": "Media Consumed (in dust)", + "stat.hexcasting.patterns_drawn": "Patterns Drawn", + "stat.hexcasting.spells_cast": "Spells Cast", + "tag.hexcasting.edified_logs": "Edified Logs", + "tag.hexcasting.edified_planks": "Edified Planks", + "tag.hexcasting.phial_base": "Empty Phials", + "tag.hexcasting.staves": "Hex Staves", + "tag.item.hexcasting.brainswept_circle_components": "Brainswept Circle Components", + "tag.item.hexcasting.directrices": "Directrices", + "tag.item.hexcasting.grants_root_advancement": "Grants Rood Advancement", + "tag.item.hexcasting.impeti": "Impeti", + "tag.item.hexcasting.seal_materials": "Seal Materials", + "text.autoconfig.hexcasting.category.client": "Client", + "text.autoconfig.hexcasting.category.common": "Common", + "text.autoconfig.hexcasting.category.server": "Server", + "text.autoconfig.hexcasting.option.client.alwaysShowListCommas": "Always Show List Commas", + "text.autoconfig.hexcasting.option.client.alwaysShowListCommas.@Tooltip": "Whether all iota types should be comma-separated when displayed in lists (by default, pattern iotas do not use commas)", + "text.autoconfig.hexcasting.option.client.clickingTogglesDrawing": "Clicking Toggles Drawing", + "text.autoconfig.hexcasting.option.client.clickingTogglesDrawing.@Tooltip": "Whether you click to start and stop drawing instead of clicking and dragging to draw", + "text.autoconfig.hexcasting.option.client.ctrlTogglesOffStrokeOrder": "Ctrl Toggles Off Stroke Order", + "text.autoconfig.hexcasting.option.client.ctrlTogglesOffStrokeOrder.@Tooltip": "Whether the ctrl key will instead turn *off* the color gradient on patterns", + "text.autoconfig.hexcasting.option.client.gridSnapThreshold": "Grid Snap Threshold", + "text.autoconfig.hexcasting.option.client.gridSnapThreshold.@Tooltip": "When using a staff, the distance from one dot you have to go to snap to the next dot, where 0.5 means 50% of the way (0.5-1)", + "text.autoconfig.hexcasting.option.client.invertAbacusScrollDirection": "Invert Abacus Scroll Direction", + "text.autoconfig.hexcasting.option.client.invertAbacusScrollDirection.@Tooltip": "Whether scrolling up (as opposed to down) will increase the page index of the abacus, and vice versa", + "text.autoconfig.hexcasting.option.client.invertSpellbookScrollDirection": "Invert Spellbook Scroll Direction", + "text.autoconfig.hexcasting.option.client.invertSpellbookScrollDirection.@Tooltip": "Whether scrolling up (as opposed to down) will increase the page index of the spellbook, and vice versa", + "text.autoconfig.hexcasting.option.common.artifactCooldown": "Artifact Cooldown", + "text.autoconfig.hexcasting.option.common.artifactCooldown.@Tooltip": "Cooldown of an artifact in ticks", + "text.autoconfig.hexcasting.option.common.chargedCrystalMediaAmount": "Charged Crystal Media Amount", + "text.autoconfig.hexcasting.option.common.chargedCrystalMediaAmount.@Tooltip": "How much media a single Charged Amethyst Crystal item is worth", + "text.autoconfig.hexcasting.option.common.cypherCooldown": "Cypher Cooldown", + "text.autoconfig.hexcasting.option.common.cypherCooldown.@Tooltip": "Cooldown of a cypher in ticks", + "text.autoconfig.hexcasting.option.common.dustMediaAmount": "Dust Media Amount", + "text.autoconfig.hexcasting.option.common.dustMediaAmount.@Tooltip": "How much media a single Amethyst Dust item is worth", + "text.autoconfig.hexcasting.option.common.mediaToHealthRate": "Media To Health Rate", + "text.autoconfig.hexcasting.option.common.mediaToHealthRate.@Tooltip": "How many points of media a half-heart is worth when casting from HP", + "text.autoconfig.hexcasting.option.common.shardMediaAmount": "Shard Media Amount", + "text.autoconfig.hexcasting.option.common.shardMediaAmount.@Tooltip": "How much media a single Amethyst Shard item is worth", + "text.autoconfig.hexcasting.option.common.trinketCooldown": "Trinket Cooldown", + "text.autoconfig.hexcasting.option.common.trinketCooldown.@Tooltip": "Cooldown of a trinket in ticks", + "text.autoconfig.hexcasting.option.server.actionDenyList": "Action Deny List", + "text.autoconfig.hexcasting.option.server.actionDenyList.@Tooltip": "Resource locations of disallowed actions. Trying to cast one of these will result in a mishap. For example, hexcasting:get_caster will prevent Mind's Reflection", + "text.autoconfig.hexcasting.option.server.amethystShardModification": "Amethyst Shard Drop Rate Change", + "text.autoconfig.hexcasting.option.server.amethystShardModification.@Tooltip": "How much the number of amethyst shards dropped from clusters is increased/decreased.", + "text.autoconfig.hexcasting.option.server.circleActionDenyList": "Circle Action Deny List", + "text.autoconfig.hexcasting.option.server.circleActionDenyList.@Tooltip": "Resource locations of disallowed actions within circles. Trying to cast one of these from a circle will result in a mishap.", + "text.autoconfig.hexcasting.option.server.cypherChance": "Ancient Cypher Chance", + "text.autoconfig.hexcasting.option.server.cypherChance.@Tooltip": "The chance for ancient cyphers to appear in any of the above loot tables.", + "text.autoconfig.hexcasting.option.server.cypherInjectionsRaw": "Ancient Cypher Injection Sites", + "text.autoconfig.hexcasting.option.server.cypherInjectionsRaw.@Tooltip": "Lists the loot tables that ancient cyphers should be added to.", + "text.autoconfig.hexcasting.option.server.doesTrueNameHaveAmbit": "Does True Name Have Ambit", + "text.autoconfig.hexcasting.option.server.doesTrueNameHaveAmbit.@Tooltip": "Whether True Names (ie entity references to a player) should allow targeting the referenced player even outside of normal ambit", + "text.autoconfig.hexcasting.option.server.greaterTeleportSplatsItems": "Greater Teleport Splats Items", + "text.autoconfig.hexcasting.option.server.greaterTeleportSplatsItems.@Tooltip": "Whether items should fly out of the player's inventory when using Greater Teleport", + "text.autoconfig.hexcasting.option.server.loreChance": "Lore Fragment Chance", + "text.autoconfig.hexcasting.option.server.loreChance.@Tooltip": "The chance for lore fragments to appear in any of the above loot tables.", + "text.autoconfig.hexcasting.option.server.loreInjectionsRaw": "Lore Injection Sites", + "text.autoconfig.hexcasting.option.server.loreInjectionsRaw.@Tooltip": "Lists the loot tables that lore fragments should be added to.", + "text.autoconfig.hexcasting.option.server.maxOpCount": "Max Action Count", + "text.autoconfig.hexcasting.option.server.maxOpCount.@Tooltip": "The maximum number of actions that can be executed in one tick, to avoid hanging the server.", + "text.autoconfig.hexcasting.option.server.maxSpellCircleLength": "Max Spell Circle Length", + "text.autoconfig.hexcasting.option.server.maxSpellCircleLength.@Tooltip": "The maximum number of slates in a spell circle", + "text.autoconfig.hexcasting.option.server.opBreakHarvestLevel": "Break Harvest Level", + "text.autoconfig.hexcasting.option.server.opBreakHarvestLevel.@Tooltip": "The harvest level of the Break Block spell.\n0 = wood, 1 = stone, 2 = iron, 3 = diamond, 4 = netherite.", + "text.autoconfig.hexcasting.option.server.scrollInjectionsRaw": "Scroll Injection Weights", + "text.autoconfig.hexcasting.option.server.scrollInjectionsRaw.@Tooltip": "Maps the names of loot tables to the amount of per-world patterns on scrolls should go in them. There's about a 50% chance to get any scrolls in a given chest marked here; once that is met, between 1 and that many scrolls are generated.", + "text.autoconfig.hexcasting.option.server.tpDimDenylist": "Teleport Dimension Deny List", + "text.autoconfig.hexcasting.option.server.tpDimDenylist.@Tooltip": "Resource locations of dimensions where teleportation is not allowed", + "text.autoconfig.hexcasting.option.server.traderScrollChance": "Wandering Trader Scroll Chance", + "text.autoconfig.hexcasting.option.server.traderScrollChance.@Tooltip": "The chance for wandering traders to sell an Ancient Scroll", + "text.autoconfig.hexcasting.option.server.villagersOffendedByMindMurder": "Villagers Offended By Mind Murder", + "text.autoconfig.hexcasting.option.server.villagersOffendedByMindMurder.@Tooltip": "Whether villagers should be angry at the player when other villagers are mindflayed", + "text.autoconfig.hexcasting.title": "Hexcasting Config" +} diff --git a/Common/src/main/resources/assets/hexcasting/lang/ru_ru.json b/Common/src/main/resources/assets/hexcasting/lang/ru_ru.json new file mode 100644 index 000000000..a31c4aa24 --- /dev/null +++ b/Common/src/main/resources/assets/hexcasting/lang/ru_ru.json @@ -0,0 +1,1317 @@ +{ + "advancement.hexcasting:big_cast": "... тот нужду пожнет", + "advancement.hexcasting:big_cast.desc": "Произнесение одного-единственного заклинания требует поистине огромного количества мысли.", + "advancement.hexcasting:creative_unlocker": "БЕЗГРАНИЧНАЯ ВЛАААСТЬ", + "advancement.hexcasting:creative_unlocker.desc": "Найден предмет креативной отладки.", + "advancement.hexcasting:enlightenment": "Просветление", + "advancement.hexcasting:enlightenment.desc": "Разрушьте внутренний барьер, израсходовав почти все свое здоровье за заклинание.", + "advancement.hexcasting:lore": "История рунных заклинаний", + "advancement.hexcasting:lore.desc": "Прочитать фрагмент истории", + "advancement.hexcasting:lore/.cardamom1": "Кардамом Стайлз #1", + "advancement.hexcasting:lore/.cardamom1.desc": "Письмо Кардамон Стайлз своему отцу, #1", + "advancement.hexcasting:lore/.cardamom2": "Кардамом Стайлз #2", + "advancement.hexcasting:lore/.cardamom2.desc": "Письмо Кардамон Стайлз своему отцу, #2", + "advancement.hexcasting:lore/.cardamom3": "Кардамом Стайлз #3", + "advancement.hexcasting:lore/.cardamom3.desc": "Письмо Кардамон Стайлз своему отцу, #3, 1/2", + "advancement.hexcasting:lore/.cardamom4": "Кардамом Стайлз #3 pt2", + "advancement.hexcasting:lore/.cardamom4.desc": "Письмо Кардамон Стайлз своему отцу, #3, 2/2", + "advancement.hexcasting:lore/.cardamom5": "Кардамом Стайлз #4", + "advancement.hexcasting:lore/.cardamom5.desc": "Письмо Кардамон Стайлз своему отцу, #4", + "advancement.hexcasting:lore/.experiment1": "Заметки по инцидентам Wooleye", + "advancement.hexcasting:lore/.experiment2": "Записи интервью Wooleye", + "advancement.hexcasting:lore/.inventory": "Журнал восстановления 72", + "advancement.hexcasting:opened_eyes": "Открытие", + "advancement.hexcasting:opened_eyes.desc": "Пусть природа заберет частичку твоего разума в качестве платы за колдовство. Что может случиться, если ты позволишь ей сделать больше?", + "advancement.hexcasting:root": "Изучение рунных заклинаний", + "advancement.hexcasting:root.desc": "Найдите и добудьте концентрированную форму мыслей, растущих глубоко под землей.", + "advancement.hexcasting:wasteful_cast": "Кто аметистами посорит...", + "advancement.hexcasting:wasteful_cast.desc": "Потратить впустую большое количество мысли при использовании заклинания.", + "advancement.hexcasting:y_u_no_cast_angy": "Первый блин комом", + "advancement.hexcasting:y_u_no_cast_angy.desc": "Попробовать произнести заклинание из свитка, но потерпеть неудачу.", + "block.hexcasting.akashic_bookshelf": "Книжная полка Акаши", + "block.hexcasting.akashic_connector": "Лигатура Акаши", + "block.hexcasting.akashic_record": "Запись Акаши", + "block.hexcasting.amethyst_bricks": "Аметистовые кирпичи", + "block.hexcasting.amethyst_bricks_small": "Маленькие аметистовые кирпичи", + "block.hexcasting.amethyst_dust_block": "Блок аметистовой пыли", + "block.hexcasting.amethyst_edified_leaves": "Аметистовые листья созидания", + "block.hexcasting.amethyst_pillar": "Аметистовая колонна", + "block.hexcasting.amethyst_sconce": "Аметистовый подсвечник", + "block.hexcasting.amethyst_tiles": "Аметистовая плитка", + "block.hexcasting.ancient_scroll_paper": "Древняя бумага для свитков", + "block.hexcasting.ancient_scroll_paper_lantern": "Древний бумажный фонарь", + "block.hexcasting.aventurine_edified_leaves": "Авентюриновые листья созидания", + "block.hexcasting.citrine_edified_leaves": "Цитриновые листья созидания", + "block.hexcasting.conjured_block": "Магический блок", + "block.hexcasting.conjured_light": "Магический свет", + "block.hexcasting.directrix.boolean": "Направитель Пастуха", + "block.hexcasting.directrix.empty": "Пустой Направитель", + "block.hexcasting.directrix.redstone": "Направитель Каменщика", + "block.hexcasting.edified_button": "Кнопка созидания", + "block.hexcasting.edified_door": "Дверь созидания", + "block.hexcasting.edified_fence": "Ограда созидания", + "block.hexcasting.edified_fence_gate": "Ворота созидания", + "block.hexcasting.edified_log": "Бревно созидания", + "block.hexcasting.edified_log_amethyst": "Аметистовое бревно созидания", + "block.hexcasting.edified_log_aventurine": "Авантюриновое бревно созидания", + "block.hexcasting.edified_log_citrine": "Цитриновое бревно созидания", + "block.hexcasting.edified_log_purple": "Фиолетовое бревно созидания", + "block.hexcasting.edified_panel": "Панель созидания", + "block.hexcasting.edified_planks": "Доски созидания", + "block.hexcasting.edified_pressure_plate": "Нажимная плита созидания", + "block.hexcasting.edified_slab": "Плита созидания", + "block.hexcasting.edified_stairs": "Лестница созидания", + "block.hexcasting.edified_tile": "Плитка созидания", + "block.hexcasting.edified_trapdoor": "Люк созидания", + "block.hexcasting.edified_wood": "Древесина созидания", + "block.hexcasting.impetus.empty": "Пустой инициатор", + "block.hexcasting.impetus.look": "Инициатор Лучника", + "block.hexcasting.impetus.redstone": "Инициатор Священника", + "block.hexcasting.impetus.rightclick": "Инициатор Инструментальщика", + "block.hexcasting.quenched_allay": "Погашенный сплав", + "block.hexcasting.quenched_allay_bricks": "Кирпичи из погашенного сплава", + "block.hexcasting.quenched_allay_bricks_small": "Малые кирпичи из погашенного сплава", + "block.hexcasting.quenched_allay_tiles": "Плитка из погашенного сплава", + "block.hexcasting.scroll_paper": "Бумага для свитков", + "block.hexcasting.scroll_paper_lantern": "Бумажный фонарь", + "block.hexcasting.slate": "Скрижаль", + "block.hexcasting.slate_amethyst_bricks": "Сланцево-аметистовые кирпичи", + "block.hexcasting.slate_amethyst_bricks_small": "Малые сланцево-аметистовые кирпичи", + "block.hexcasting.slate_amethyst_pillar": "Сланцево-аметистовая колонна", + "block.hexcasting.slate_amethyst_tiles": "Сланцево-аметистовые плитки", + "block.hexcasting.slate_block": "Блок скрижалей", + "block.hexcasting.slate_bricks": "Кирпичи из скрижалей", + "block.hexcasting.slate_bricks_small": "Маленькие кирпичи из скрижалей", + "block.hexcasting.slate_pillar": "Колонна из скрижалей", + "block.hexcasting.slate_tiles": "Плитка из скражалей", + "block.hexcasting.slate.blank": "Пустая скрижаль", + "block.hexcasting.slate.written": "Начертанная скрижаль", + "block.hexcasting.stripped_edified_log": "Обтесанное бревно созидания", + "block.hexcasting.stripped_edified_wood": "Обтесанная древесина созидания", + "command.hexcasting.brainsweep": "Лоботомизировал %s", + "command.hexcasting.brainsweep.fail.already": "%s уже пуст", + "command.hexcasting.brainsweep.fail.badtype": "%s это не моб", + "command.hexcasting.pats.all": "Отдал все %d свитки в %s", + "command.hexcasting.pats.listing": "Руны в этом мире:", + "command.hexcasting.pats.specific.success": "Отдал %s с id %s за %s", + "command.hexcasting.recalc": "Руны пересчитаны", + "death.attack.hexcasting.overcast": "Разум %s был полностью поглощён как оплата заклинания", + "death.attack.hexcasting.overcast.player": "Разум %s был полностью поглощён как оплата заклинания, пока тот боролся с %s", + "effect.hexcasting.enlarge_grid": "Ясность", + "effect.hexcasting.shrink_grid": "Туманность", + "emi.category.hexcasting.brainsweep": "Кража разума", + "emi.category.hexcasting.craft.battery": "Создать пузырь мыслей", + "emi.category.hexcasting.edify": "Саженец созидания", + "emi.category.hexcasting.villager_leveling": "Уровень торговли", + "emi.category.hexcasting.villager_profession": "Профессия жителя", + "entity.hexcasting.wall_scroll": "Висящий свиток", + "gui.hexcasting.spellcasting": "Сетка Заговора", + "hexcasting.action.book.hexcasting:arccos": "Обратный косинус", + "hexcasting.action.book.hexcasting:arcsin": "Обратный синус", + "hexcasting.action.book.hexcasting:arctan": "Обратный тангенс", + "hexcasting.action.book.hexcasting:arctan2": "Обратный тангенс II", + "hexcasting.action.book.hexcasting:bool_to_number": "Нумерологист", + "hexcasting.action.book.hexcasting:const/vec/.x": "Отражение Вектора +X/-X", + "hexcasting.action.book.hexcasting:const/vec/.y": "Отражение Вектора +Y/-Y", + "hexcasting.action.book.hexcasting:const/vec/.z": "Отражение Вектора +Z/-Z", + "hexcasting.action.book.hexcasting:div": "Деление", + "hexcasting.action.book.hexcasting:get_entity_height": "Высот Преобр.", + "hexcasting.action.book.hexcasting:get_entity/.animal": "Преобр Сущн.: Животное", + "hexcasting.action.book.hexcasting:get_entity/.item": "Преобр Сущн.: Предмет", + "hexcasting.action.book.hexcasting:get_entity/.living": "Преобр Сущн.: Живое", + "hexcasting.action.book.hexcasting:get_entity/.monster": "Преобр Сущн.: Монстр", + "hexcasting.action.book.hexcasting:get_entity/.player": "Преобр Сущн.: Игрок", + "hexcasting.action.book.hexcasting:mask": "Гамбит Библиотекаря", + "hexcasting.action.book.hexcasting:mul": "Умножение", + "hexcasting.action.book.hexcasting:number": "Численное Отражение", + "hexcasting.action.book.hexcasting:read/entity": "Преображение Летописца", + "hexcasting.action.book.hexcasting:zone_entity": "Объед. Обл.: Any", + "hexcasting.action.book.hexcasting:zone_entity/.animal": "Объед. Обл.: Животное", + "hexcasting.action.book.hexcasting:zone_entity/.item": "Объед. Обл.: Предмет", + "hexcasting.action.book.hexcasting:zone_entity/.living": "Объед. Обл.: Живое", + "hexcasting.action.book.hexcasting:zone_entity/.monster": "Объед. Обл.: Монстр", + "hexcasting.action.book.hexcasting:zone_entity/.not_animal": "Объед. Обл.: Не Животное", + "hexcasting.action.book.hexcasting:zone_entity/.not_item": "Объед. Обл.: Не Предмет", + "hexcasting.action.book.hexcasting:zone_entity/.not_living": "Объед. Обл.: Не Живое", + "hexcasting.action.book.hexcasting:zone_entity/.not_monster": "Объед. Обл.: Не Монстр", + "hexcasting.action.book.hexcasting:zone_entity/.not_player": "Объед. Обл.: Не Игрок", + "hexcasting.action.book.hexcasting:zone_entity/.player": "Объед. Обл.: Игрок", + "hexcasting.action.hexcasting:2dup": "Гамбит Дубля", + "hexcasting.action.hexcasting:abs": "Преображение к Абсолюту", + "hexcasting.action.hexcasting:add": "Суммирующее Объединение", + "hexcasting.action.hexcasting:add_motion": "Импульс", + "hexcasting.action.hexcasting:akashic/read": "Объединение Акаши", + "hexcasting.action.hexcasting:akashic/write": "Гамбит Акаши", + "hexcasting.action.hexcasting:and": "Объединение Совпадения", + "hexcasting.action.hexcasting:append": "Объединение Вступления", + "hexcasting.action.hexcasting:arccos": "Преображение к Арккосинусу", + "hexcasting.action.hexcasting:arcsin": " Преображение к Арксинусу", + "hexcasting.action.hexcasting:arctan": "Преображение к Арктангенсу", + "hexcasting.action.hexcasting:arctan2": "Преображение к Арктангенсу II", + "hexcasting.action.hexcasting:beep": "Издать Ноту", + "hexcasting.action.hexcasting:blink": "Перенос", + "hexcasting.action.hexcasting:bonemeal": "Ускорить Рост", + "hexcasting.action.hexcasting:bool_coerce": "Преображение Прорицателя", + "hexcasting.action.hexcasting:brainsweep": "Кража Разума", + "hexcasting.action.hexcasting:break_block": "Сломать Блок", + "hexcasting.action.hexcasting:ceil": "Преображение к потолку", + "hexcasting.action.hexcasting:circle/.bounds/max": "Отражение большей стопки", + "hexcasting.action.hexcasting:circle/.bounds/min": "Отражение меньшей стопки", + "hexcasting.action.hexcasting:circle/.impetus_dir": "Взгляд Путевого Камня", + "hexcasting.action.hexcasting:circle/.impetus_pos": "Отражение Путевого Камня", + "hexcasting.action.hexcasting:coerce_axial": "Преображение к Стороне", + "hexcasting.action.hexcasting:colorize": "Использовать Пигмент", + "hexcasting.action.hexcasting:conjure_block": "Магический Барьер", + "hexcasting.action.hexcasting:conjure_light": "Магический Свет", + "hexcasting.action.hexcasting:const/.double/.e": "Отражение Эйлера", + "hexcasting.action.hexcasting:const/.double/.pi": "Отражение арки", + "hexcasting.action.hexcasting:const/.double/.tau": "Отражение круга", + "hexcasting.action.hexcasting:const/.false": "Отражение лжи", + "hexcasting.action.hexcasting:const/.null": "Отражение пустоты", + "hexcasting.action.hexcasting:const/.true": "Отражение истины", + "hexcasting.action.hexcasting:const/.vec/.0": "Отражение Вектора 0", + "hexcasting.action.hexcasting:const/.vec/.nx": "Отражение Вектора -X", + "hexcasting.action.hexcasting:const/.vec/.ny": "Отражение Вектора -Y", + "hexcasting.action.hexcasting:const/.vec/.nz": "Отражение Вектора -Z", + "hexcasting.action.hexcasting:const/.vec/.px": "Отражение Вектора +X", + "hexcasting.action.hexcasting:const/.vec/.py": "Отражение Вектора +Y", + "hexcasting.action.hexcasting:const/.vec/.pz": "Отражение Вектора +Z", + "hexcasting.action.hexcasting:construct": "Объединение Динамика", + "hexcasting.action.hexcasting:construct_vec": "Векторное Возвышение", + "hexcasting.action.hexcasting:cos": "Преображение к Косинусу", + "hexcasting.action.hexcasting:craft/artifact": "Создать Артефакт", + "hexcasting.action.hexcasting:craft/battery": "Создать Сосуд Мыслей", + "hexcasting.action.hexcasting:craft/cypher": "Создать Побрякушку", + "hexcasting.action.hexcasting:craft/trinket": "Создать Штуковину", + "hexcasting.action.hexcasting:create_lava": "Создать лаву", + "hexcasting.action.hexcasting:create_water": "Создать Воду", + "hexcasting.action.hexcasting:cycle_variant": "Гламур Заклинателя", + "hexcasting.action.hexcasting:deconstruct": "Распад Динамика", + "hexcasting.action.hexcasting:deconstruct_vec": "Векторный Распад", + "hexcasting.action.hexcasting:destroy_water": "Испарить Жидкость", + "hexcasting.action.hexcasting:dispel_rain": "Прогнать дождь", + "hexcasting.action.hexcasting:div": "Делящее Объединение", + "hexcasting.action.hexcasting:duplicate": "Разбор Близнецов", + "hexcasting.action.hexcasting:duplicate_n": "Гамбит Близнецов", + "hexcasting.action.hexcasting:edify": "Созидание Саженеца", + "hexcasting.action.hexcasting:empty_list": "Отражение Чистоты", + "hexcasting.action.hexcasting:entity_pos/eye": "Преображение глаз", + "hexcasting.action.hexcasting:entity_pos/foot": "Преображение ног", + "hexcasting.action.hexcasting:equals": "Объединение Равенства", + "hexcasting.action.hexcasting:erase": "Очистить Предмет", + "hexcasting.action.hexcasting:eval": "Гамбит Гермеса", + "hexcasting.action.hexcasting:eval/cc": "Гамбит Ириса", + "hexcasting.action.hexcasting:explode": "Взрыв", + "hexcasting.action.hexcasting:explode/fire": "Огненный шар", + "hexcasting.action.hexcasting:extinguish": "Потушить Область", + "hexcasting.action.hexcasting:fisherman": "Гамбит Рыбака", + "hexcasting.action.hexcasting:fisherman/copy": "Гамбит Рыбака II", + "hexcasting.action.hexcasting:flight": "Альтиора", + "hexcasting.action.hexcasting:flight/can_fly": "Возможность Полёта", + "hexcasting.action.hexcasting:flight/range": "Радиусный Полет", + "hexcasting.action.hexcasting:flight/time": "Временный Полет", + "hexcasting.action.hexcasting:floor": "Преображение к полу", + "hexcasting.action.hexcasting:for_each": "Гамбит Тота", + "hexcasting.action.hexcasting:get_caster": "Отражение Нарцисса", + "hexcasting.action.hexcasting:get_entity": "Сущностное Преображение", + "hexcasting.action.hexcasting:get_entity_height": "Преображение Высот", + "hexcasting.action.hexcasting:get_entity_look": "Преображение Взгляда", + "hexcasting.action.hexcasting:get_entity_velocity": "Преображение Скорости", + "hexcasting.action.hexcasting:get_entity/.animal": "Сущностное Преображение: Животное", + "hexcasting.action.hexcasting:get_entity/.item": "Сущностное Преображение: Предмет", + "hexcasting.action.hexcasting:get_entity/.living": "Сущностное Преображение: Живое", + "hexcasting.action.hexcasting:get_entity/.monster": "Сущностное Преображение: Монстр", + "hexcasting.action.hexcasting:get_entity/.player": "Сущностное Преображение: Игрок", + "hexcasting.action.hexcasting:greater": "Объединение Максимум", + "hexcasting.action.hexcasting:greater_eq": "Объединение Максимум II", + "hexcasting.action.hexcasting:halt": "Гамбит Харона", + "hexcasting.action.hexcasting:if": "Возвышение Прорицателя", + "hexcasting.action.hexcasting:ignite": "Поджечь Блок", + "hexcasting.action.hexcasting:index": "Объединение Выборки", + "hexcasting.action.hexcasting:index_of": "Объединение Искателя", + "hexcasting.action.hexcasting:interop/.gravity/.get": "Отражение Гравитации", + "hexcasting.action.hexcasting:interop/.gravity/.set": "Изменить Гравитацию", + "hexcasting.action.hexcasting:interop/.pehkui/.get": "Отражение Гуливера", + "hexcasting.action.hexcasting:interop/.pehkui/.set": "Изменить Размер", + "hexcasting.action.hexcasting:last_n_list": "Гамбит Группы", + "hexcasting.action.hexcasting:less": "Объединение Минимум", + "hexcasting.action.hexcasting:less_eq": "Объединение Минимум II", + "hexcasting.action.hexcasting:lightning": "Громовержец", + "hexcasting.action.hexcasting:logarithm": "Логаритмическое Объединение", + "hexcasting.action.hexcasting:modulo": "Модульное Объединение", + "hexcasting.action.hexcasting:mul": "Умножающее Объединение", + "hexcasting.action.hexcasting:not": "Объединение Отрицания", + "hexcasting.action.hexcasting:not_equals": "Объединение Неравенства", + "hexcasting.action.hexcasting:or": "Объединение Дизъюнкции", + "hexcasting.action.hexcasting:over": "Гамбит Старателя", + "hexcasting.action.hexcasting:place_block": "Поставить Блок", + "hexcasting.action.hexcasting:potion/.absorption": "Зенит Черного Солнца", + "hexcasting.action.hexcasting:potion/.haste": "Зенит Красного Солнца", + "hexcasting.action.hexcasting:potion/.levitation": "Надир Синего Солнца", + "hexcasting.action.hexcasting:potion/.night_vision": "Зенит Синего Солнца", + "hexcasting.action.hexcasting:potion/.poison": "Надир Красного Солнца", + "hexcasting.action.hexcasting:potion/.regeneration": "Зенит Белого Солнца", + "hexcasting.action.hexcasting:potion/.slowness": "Надир Зеленого Солнца", + "hexcasting.action.hexcasting:potion/.strength": "Зенит Зеленого Солнца", + "hexcasting.action.hexcasting:potion/.weakness": "Надир Белого Солнца", + "hexcasting.action.hexcasting:potion/.wither": "Надир Черного Солнца", + "hexcasting.action.hexcasting:pow": "Объединение Экспоненты", + "hexcasting.action.hexcasting:print": "Раскрытие", + "hexcasting.action.hexcasting:random": "Отражение Случая", + "hexcasting.action.hexcasting:raycast": "Объединение Луча", + "hexcasting.action.hexcasting:raycast/axis": "Объединение Стороны", + "hexcasting.action.hexcasting:raycast/entity": "Объединение Сущности", + "hexcasting.action.hexcasting:read": "Отражение Писаря", + "hexcasting.action.hexcasting:read/entity": "Преображение Летописца", + "hexcasting.action.hexcasting:read/local": "Отражение Мунин", + "hexcasting.action.hexcasting:readable": "Отражение Ревизора", + "hexcasting.action.hexcasting:readable/entity": "Преображение Ревизора", + "hexcasting.action.hexcasting:recharge": "Зарядить Предмет", + "hexcasting.action.hexcasting:remove_from": "Возвышение Удаления", + "hexcasting.action.hexcasting:replace": "Возвышение Хирурга", + "hexcasting.action.hexcasting:reverse": "Обратное Преображение", + "hexcasting.action.hexcasting:rotate": "Гамбит Поворота", + "hexcasting.action.hexcasting:rotate_reverse": "Гамбит Поворота II", + "hexcasting.action.hexcasting:sentinel/.create": "Призвать Часового", + "hexcasting.action.hexcasting:sentinel/.create/great": "Призвать Великого Часового", + "hexcasting.action.hexcasting:sentinel/.destroy": "Уничтожить Часового", + "hexcasting.action.hexcasting:sentinel/.get_pos": "Место Часового", + "hexcasting.action.hexcasting:sentinel/.wayfind": "Путь к Часовому", + "hexcasting.action.hexcasting:sin": "Преображение к Синусу", + "hexcasting.action.hexcasting:singleton": "Одиночное Преображение", + "hexcasting.action.hexcasting:slice": "Возвышение Выборки", + "hexcasting.action.hexcasting:splat": "Распад Группы", + "hexcasting.action.hexcasting:stack_len": "Отражение Группы", + "hexcasting.action.hexcasting:sub": "Вычитающее Объединение", + "hexcasting.action.hexcasting:summon_rain": "Призвать дождь", + "hexcasting.action.hexcasting:swap": "Гамбит Шута", + "hexcasting.action.hexcasting:swizzle": "Гамбит Мошенника", + "hexcasting.action.hexcasting:tan": "Преображение к Тангенсу", + "hexcasting.action.hexcasting:teleport/great": "Великое Перемещение", + "hexcasting.action.hexcasting:thanatos": "Отражение Танатоса", + "hexcasting.action.hexcasting:tuck": "Гамбит Гробовщика", + "hexcasting.action.hexcasting:unappend": "Объединение Вывода", + "hexcasting.action.hexcasting:unique": "Преображение Уникальности", + "hexcasting.action.hexcasting:writable": "Отражение Заседателя", + "hexcasting.action.hexcasting:writable/entity": "Преображение Заседателя", + "hexcasting.action.hexcasting:write": "Гамбит Писаря", + "hexcasting.action.hexcasting:write/entity": "Гамбит Летописца", + "hexcasting.action.hexcasting:write/local": "Гамбит Хугин", + "hexcasting.action.hexcasting:xor": "Объединение Исключения", + "hexcasting.action.hexcasting:zone_entity": "Объединение Области: Любое", + "hexcasting.action.hexcasting:zone_entity/.animal": "Объединение Области: Животное", + "hexcasting.action.hexcasting:zone_entity/.item": "Объединение Области: Предмет", + "hexcasting.action.hexcasting:zone_entity/.living": "Объединение Области: Живое", + "hexcasting.action.hexcasting:zone_entity/.monster": "Объединение Области: Монстр", + "hexcasting.action.hexcasting:zone_entity/.not_animal": "Объединение Области: Не-Животное", + "hexcasting.action.hexcasting:zone_entity/.not_item": "Объединение Области: Не-Предмет", + "hexcasting.action.hexcasting:zone_entity/.not_living": "Объединение Области: Не-Живое", + "hexcasting.action.hexcasting:zone_entity/.not_monster": "Объединение Области: Не-Монстр", + "hexcasting.action.hexcasting:zone_entity/.not_player": "Объединение Области: Не-Игрок", + "hexcasting.action.hexcasting:zone_entity/.player": "Объединение Области: Игрок", + "hexcasting.attributes.ambit_radius": "Радиус действия игрока", + "hexcasting.attributes.feeble_mind": "Слабоумие", + "hexcasting.attributes.grid_zoom": "Размер сетки заклинания", + "hexcasting.attributes.media_consumption": "Потребление мысли", + "hexcasting.attributes.scry_sight": "Магический взгляд", + "hexcasting.attributes.sentinel_radius": "Радиус действия часового", + "hexcasting.category.basics": "Приступая к работе", + "hexcasting.category.basics.desc": "Практикующие это искусство исполняли свои $(#b38ef3)Заговоры/$, чертя странные руны в воздухе с помощью $(l:items/staff)$(item)посохов/$ -- или создавая $(l:items/hexcasting)$(item)могущественные магические предметы/$, что бы исполнять руны с их помощью. Как бы я мог сделать то же самое?", + "hexcasting.category.casting": "Hex Casting", + "hexcasting.category.casting.desc": "Я начал понимать, как старые мастера создавали свои Заклинания! Это немного сложно, но я уверен, что смогу с этим разобраться. Давайте посмотрим...", + "hexcasting.category.great_spells": "Великие Руны", + "hexcasting.category.great_spells.desc": "Руны, перечисленные здесь, предположительно обладают легендарной сложностью и силой. Похоже, что они использовались очень редко (как утверждается в текстах, на то есть веские причины). Хотя, возможно, это просто бредни давно умерших стариков.$(br2) Что может пойти не так?", + "hexcasting.category.greatwork": "Великая работа", + "hexcasting.category.greatwork.desc": "Я видел... так много. У меня есть... пережил... аннигиляцию, деконструкцию и реконструкцию. Я видел, как атомы мира кричали, когда их переворачивали, ниспровергали и превращали в энергию. Я видел, я видел, я видел с$(k)get stick bugged lmao/$", + "hexcasting.category.interop": "Совместимость с различными модами", + "hexcasting.category.interop.desc": "Похоже, я установил несколько модов, с которыми взаимодействует Hex casting! Я подробно описал их здесь.", + "hexcasting.category.items": "Предметы", + "hexcasting.category.items.desc": "Я посвящаю этот раздел магическим и таинственным предметам, с которыми я могу столкнуться в ходе своих исследований.", + "hexcasting.category.lore": "История", + "hexcasting.category.lore.desc": "Я обнаружил несколько писем и текстов, не имеющих прямого отношения к моему искусству. Но я думаю, что, возможно, смогу по ним угадать кое-что из истории мира. Дай-ка посмотрю...", + "hexcasting.category.patterns": "Руны", + "hexcasting.category.patterns.desc": "Список всех обнаруженных мною рун, а также то, что они делают.", + "hexcasting.category.spells": "Продвинутые Руны", + "hexcasting.category.spells.desc": "Руны, которые оказывают магическое воздействие на окружающий мир.", + "hexcasting.circles.many_exits": "Поток мысли в %s имел слишком много выходов", + "hexcasting.circles.no_exit": "Поток мысли в %s не смог найти выход", + "hexcasting.debug.all_media": "Полное содержимое", + "hexcasting.debug.infinite_media": "Бесконечный", + "hexcasting.debug.media_inserted": "%s - Добавлено мысли: %s", + "hexcasting.debug.media_inserted.with_dust": "%s - Добавлено мысли: %s (%s в пыли)", + "hexcasting.debug.media_withdrawn": "%s - Поглощено мысли: %s", + "hexcasting.debug.media_withdrawn.with_dust": "%s - Поглощено мысли: %s (%s в пыли)", + "hexcasting.entry.101": "Рунные заклинания: начало", + "hexcasting.entry.abacus": "Cчеты", + "hexcasting.entry.advanced_math": "Продвинутая математика", + "hexcasting.entry.akashic_patterns": "Руны Акаши", + "hexcasting.entry.akashiclib": "Библиотеки Акаши", + "hexcasting.entry.amethyst": "Аметист", + "hexcasting.entry.ancient_cyphers": "Древние Побрякушки", + "hexcasting.entry.basic_spell": "Базовые заклинания", + "hexcasting.entry.basics_pattern": "Базовые руны", + "hexcasting.entry.blockworks": "Манипулирование блоками", + "hexcasting.entry.brainsweeping": "О краже разума", + "hexcasting.entry.circle_patterns": "Руны для кругов заклинаний", + "hexcasting.entry.consts": "Константы", + "hexcasting.entry.couldnt_cast": "Разочарование", + "hexcasting.entry.creative_items": "Креативные предметы", + "hexcasting.entry.decoration": "Декоративные блоки", + "hexcasting.entry.directrix": "Направитель", + "hexcasting.entry.edified": "Деревья созидания", + "hexcasting.entry.entities": "Сущности", + "hexcasting.entry.fanciful_staves": "Красивые посохи", + "hexcasting.entry.flights": "Полет", + "hexcasting.entry.focus": "Талисман", + "hexcasting.entry.geodes": "Жеоды", + "hexcasting.entry.hexcasting": "Предметы для заклинаний", + "hexcasting.entry.hexcasting_spell": "Создание магических предметов", + "hexcasting.entry.impetus": "Инициатор", + "hexcasting.entry.influences": "Абстракции", + "hexcasting.entry.interop": "Межмодовые взаимодействия", + "hexcasting.entry.interop.gravity": "Gravity Changer", + "hexcasting.entry.interop.pehkui": "Pehkui", + "hexcasting.entry.itempicking": "Работа с предметами", + "hexcasting.entry.jeweler_hammer": "Ювелирный молоток", + "hexcasting.entry.lens": "Линза прозрения", + "hexcasting.entry.lists": "Манипулирование списками", + "hexcasting.entry.logic": "Логические операторы", + "hexcasting.entry.lore.cardamom1": "Кардамом Стайлз, #1", + "hexcasting.entry.lore.cardamom2": "Кардамом Стайлз, #2", + "hexcasting.entry.lore.cardamom3": "Кардамом Стайлз, #3", + "hexcasting.entry.lore.cardamom4": "Кардамом Стайлз, #4", + "hexcasting.entry.lore.cardamom5": "Кардамом Стайлз, #5", + "hexcasting.entry.lore.experiment1": "Заметки по инцидентам Wooleye", + "hexcasting.entry.lore.experiment2": "Записи интервью Wooleye", + "hexcasting.entry.lore.inventory": "Журнал восстановления #72", + "hexcasting.entry.math": "Математика", + "hexcasting.entry.media": "Мысли", + "hexcasting.entry.meta": "Мета-исполнение", + "hexcasting.entry.mishaps": "Провалы", + "hexcasting.entry.mishaps2": "Просвещённые провалы", + "hexcasting.entry.nadirs": "Надир", + "hexcasting.entry.naming": "Наименование", + "hexcasting.entry.numbers": "Числа в рунах", + "hexcasting.entry.patterns_as_iotas": "Экранирующие руны", + "hexcasting.entry.phials": "Сосуд мысли", + "hexcasting.entry.pigments": "Пигмент", + "hexcasting.entry.potions": "Заговорённые зелья", + "hexcasting.entry.quenching_allays": "Погашенные тихони", + "hexcasting.entry.readers_guide": "Как читать этот раздел", + "hexcasting.entry.readwrite": "Чтение и запись", + "hexcasting.entry.scroll": "Свитки", + "hexcasting.entry.sentinels": "Часовые", + "hexcasting.entry.sets": "Множества", + "hexcasting.entry.slate": "Плитки", + "hexcasting.entry.spellbook": "Книга Заклинаний", + "hexcasting.entry.spellcircles": "Круги заклинаний", + "hexcasting.entry.stack": "Стек", + "hexcasting.entry.stackmanip": "Манипулирование стеком", + "hexcasting.entry.staff": "Посох", + "hexcasting.entry.start_to_see": "ЧТО Я ВИДЕЛ!", + "hexcasting.entry.the_work": "Работа", + "hexcasting.entry.thought_knot": "Узел мысли", + "hexcasting.entry.vectors": "Учебник по векторам", + "hexcasting.entry.weather_manip": "Манипуляция погодой", + "hexcasting.entry.zeniths": "Зенит", + "hexcasting.iota.hexcasting:boolean": "Истина/Ложь", + "hexcasting.iota.hexcasting:double": "Число", + "hexcasting.iota.hexcasting:entity": "Сущность", + "hexcasting.iota.hexcasting:garbage": "Мусор", + "hexcasting.iota.hexcasting:list": "Список", + "hexcasting.iota.hexcasting:null": "Ничто", + "hexcasting.iota.hexcasting:pattern": "Руна", + "hexcasting.iota.hexcasting:vec3": "Вектор", + "hexcasting.landing": "Кажется, я открыл новый метод магических искусств, при котором человек чертит странные и дикие руны на шестиугольной сетке. Это меня восхищает. Я решил начать вести дневник своих мыслей и открытий. $(br2)$(l:https://forum.petra-k.at/index.php)Ссылка на форум/$", + "hexcasting.loot_hex.ascend": "Возвышение", + "hexcasting.loot_hex.beckon": "Приманка", + "hexcasting.loot_hex.blastoff": "Взрыв", + "hexcasting.loot_hex.blink": "Перенос", + "hexcasting.loot_hex.detonate": "Подрыв", + "hexcasting.loot_hex.flight_zone": "Зона полёта", + "hexcasting.loot_hex.growth": "Рост", + "hexcasting.loot_hex.heat_wave": "Тепловая волна", + "hexcasting.loot_hex.illuminate": "Свет", + "hexcasting.loot_hex.kindle": "Розжиг", + "hexcasting.loot_hex.lunge": "Выпад", + "hexcasting.loot_hex.radar": "Радар", + "hexcasting.loot_hex.shatter": "Крушение", + "hexcasting.loot_hex.shockwave": "Шоковая волна", + "hexcasting.loot_hex.sidestep": "Боковой шаг", + "hexcasting.loot_hex.wither_wave": "Иссушающая волна", + "hexcasting.message.cant_great_spell": "Заклинание каким-то образом не сработало... неужели у меня не хватает знаний?", + "hexcasting.message.cant_overcast": "Для этого заклинания требовалось больше мысли, чем у меня было... Мне следует еще раз проверить свои расчеты.", + "hexcasting.mishap": "%s: %s", + "hexcasting.mishap.already_brainswept": "Разум уже был использован", + "hexcasting.mishap.bad_block": "Ожидал %s при %s, но получил %s", + "hexcasting.mishap.bad_block.replaceable": "куда-нибудь поместить блок", + "hexcasting.mishap.bad_block.sapling": "саженец", + "hexcasting.mishap.bad_brainsweep": "%s отверг разум существа", + "hexcasting.mishap.bad_caster": "Попытка исполнить руну, требующую более продвинутого разума", + "hexcasting.mishap.bad_entity": "нуждается в %s, но получил %s", + "hexcasting.mishap.bad_item": "нужен %s, но получил %dx %s", + "hexcasting.mishap.bad_item.bottle": "стеклянная бутылочка", + "hexcasting.mishap.bad_item.colorizer": "Пигмент", + "hexcasting.mishap.bad_item.eraseable": "предмет, поддающийся стиранию", + "hexcasting.mishap.bad_item.iota": "место для хранения йоты", + "hexcasting.mishap.bad_item.iota.read": "место, откуда можно читать йоты", + "hexcasting.mishap.bad_item.iota.readonly": "место, которое будет принимать %s", + "hexcasting.mishap.bad_item.iota.write": "место, куда можно записывать йоты", + "hexcasting.mishap.bad_item.media": "предмет, содержащий мысли", + "hexcasting.mishap.bad_item.media_for_battery": "необработанный мысли предмет", + "hexcasting.mishap.bad_item.offhand": "нужен %s в другой руке но получил %dx %s", + "hexcasting.mishap.bad_item.only_one": "ровно один предмет", + "hexcasting.mishap.bad_item.rechargable": "перезаряжаемый предмет", + "hexcasting.mishap.bad_item.variant": "предмет с вариантами", + "hexcasting.mishap.circle.bool_directrix.empty_stack": "стек был пуст в момент %s", + "hexcasting.mishap.circle.bool_directrix.no_bool": "значение йоты, обнаруженное в %s, было %s, а не bool", + "hexcasting.mishap.disallowed": "был запрещен администраторами сервера", + "hexcasting.mishap.disallowed_circle": "был запрещен в кругах заклинаний администраторами сервера", + "hexcasting.mishap.divide_by_zero.cos": "косинус %s", + "hexcasting.mishap.divide_by_zero.divide": "Попытался разделить %s на %s", + "hexcasting.mishap.divide_by_zero.exponent": "Попытался возвести %s в степень %s", + "hexcasting.mishap.divide_by_zero.logarithm": "Попытался получить логарифм %s в виде базового значения %s", + "hexcasting.mishap.divide_by_zero.power": "сила %s", + "hexcasting.mishap.divide_by_zero.project": "Попытался спроецировать %s на %s", + "hexcasting.mishap.divide_by_zero.sin": "синус %s", + "hexcasting.mishap.divide_by_zero.zero": "ноль", + "hexcasting.mishap.divide_by_zero.zero.power": "нулевая сила", + "hexcasting.mishap.divide_by_zero.zero.vec": "нулевой вектор", + "hexcasting.mishap.entity_too_far": "%s находится вне диапазона", + "hexcasting.mishap.eval_too_much": "Рекурсивные вычисления слишком глубокие", + "hexcasting.mishap.immune_entity": "невозможно изменить %s", + "hexcasting.mishap.invalid_operator_args.many": "%d непредвиденных йот по индексам %d-%d на стеке: %s", + "hexcasting.mishap.invalid_operator_args.one": "непредвиденная йота по индексу %d на стеке: %s", + "hexcasting.mishap.invalid_pattern": "Эта руна не связана ни с каким действием", + "hexcasting.mishap.invalid_spell_datum_type": "Пытался использовать значение недопустимого типа в качестве параметра для написания: %s (класс %s). Это ошибка в настройках.", + "hexcasting.mishap.invalid_value": "ожидал %s по индексу %s стека, но получил %s", + "hexcasting.mishap.invalid_value.bool_commute": "Логика - 0 или 1", + "hexcasting.mishap.invalid_value.class.boolean": "логика", + "hexcasting.mishap.invalid_value.class.double": "число", + "hexcasting.mishap.invalid_value.class.entity": "сущность", + "hexcasting.mishap.invalid_value.class.entity_or_vector": "сущность или вектор", + "hexcasting.mishap.invalid_value.class.entity.item": "предмет-сущность", + "hexcasting.mishap.invalid_value.class.entity.living": "живая сущность", + "hexcasting.mishap.invalid_value.class.entity.player": "игрок", + "hexcasting.mishap.invalid_value.class.entity.villager": "житель", + "hexcasting.mishap.invalid_value.class.list": "список", + "hexcasting.mishap.invalid_value.class.pattern": "руна", + "hexcasting.mishap.invalid_value.class.unknown": "(неизвестно, это ошибка)", + "hexcasting.mishap.invalid_value.class.vector": "вектор", + "hexcasting.mishap.invalid_value.class.widget": "действие", + "hexcasting.mishap.invalid_value.double.between": "число между %d и %d", + "hexcasting.mishap.invalid_value.double.positive": "положительное число", + "hexcasting.mishap.invalid_value.double.positive.less": "положительное число меньше %d", + "hexcasting.mishap.invalid_value.double.positive.less.equal": "положительное число, меньшее или равное %d", + "hexcasting.mishap.invalid_value.evaluatable": "нечто исполняемое", + "hexcasting.mishap.invalid_value.int": "целое число", + "hexcasting.mishap.invalid_value.int.between": "целое число между %d и %d", + "hexcasting.mishap.invalid_value.int.positive": "положительное целое число", + "hexcasting.mishap.invalid_value.int.positive.less": "положительное целое число, меньшее, чем %d", + "hexcasting.mishap.invalid_value.int.positive.less.equal": "целое положительное число, меньшее или равное %d", + "hexcasting.mishap.invalid_value.list.pattern": "список рун", + "hexcasting.mishap.invalid_value.numlist": "целое число или список", + "hexcasting.mishap.invalid_value.numvec": "число или вектор", + "hexcasting.mishap.location_bad_dimension": "Это измерение запрещает такое действие", + "hexcasting.mishap.location_forbidden": "%s для вас запрещено", + "hexcasting.mishap.location_out_of_world": "%s находится за пределами этого мира", + "hexcasting.mishap.location_too_close_to_out": "%s находится слишком близко к границе мира", + "hexcasting.mishap.location_too_far": "%s находится вне диапазона", + "hexcasting.mishap.no_akashic_record": "Нет Записи Акаши на %s", + "hexcasting.mishap.no_args": "ожидалось %s или больше аргументов, но стек был пуст", + "hexcasting.mishap.no_item": "нуждается в %s, но ничего не получает", + "hexcasting.mishap.no_item.offhand": "нуждается в %s в другой руке, но ничего не получил", + "hexcasting.mishap.no_spell_circle": "%s требует круг заклинаний", + "hexcasting.mishap.not_enough_args": "ожидалось %s или больше аргументов, но высота стека была всего %s", + "hexcasting.mishap.others_name": "Пытался вторгнуться в частную жизнь - %s", + "hexcasting.mishap.others_name.self": "Ты слишком опрометчиво пытался разгласить мое имя", + "hexcasting.mishap.stack_size": "Лимит стека превышен", + "hexcasting.mishap.too_many_close_parens": "Руна Ретроспекция начертана без соответствующей руны Интроспекции", + "hexcasting.mishap.unescaped": "Ожидалась руна для исполнения, но вместо этого нашлось%s", + "hexcasting.mishap.unknown": "возникло исключение (%s). Это ошибка в моде.", + "hexcasting.mishap.wrong_dimension": "не удается увидеть %s из %s", + "hexcasting.page.101.1": "Исполнение $(#b38ef3)Заговора/$ - немного сложный процесс-- неудивительно, что это искусство было забыто. Мне придется внимательно перечитать свои записи.$(br2)Я могу начать создание $(#b38ef3)Заговора/$ нажав $(k:use), держа в руке $(l:items/staff)$(item)Посох/$ - это приведет к появлению передо мной шестиугольной сетки из точек. Затем я могу щелкать и перетаскивать от точки к точке, чтобы начертить руны на сетке; окончив начертание руны я моментально призываю Природу исполнить соответствующее ей действе (подробнее об этом позже).", + "hexcasting.page.101.10": "Помимо этого, кажется, что никто не проводил серьезных исследований о том, насколько $(italic)много/$ стоит конкретный кусок $(l:items/amethyst)$(item)аметиста/$. По моим лучшим оценкам, $(l:items/amethyst)$(item)Осколок Аметиста/$ стоит примерно пять кусков $(l:items/amethyst)$(item)Аметистовой Пыли/$, а $(l:items/amethyst)$(item)Заряженный Кристалл Аметиста/$ - примерно десять.$(br2)Странно, что, кажется, никакая другая форма $(l:items/amethyst)$(item)аметиста/$ не подходит для использования при создании Рунных заклинаний. Я подозреваю, что целые блоки или кристаллы слишком прочны, чтобы легко распутываться в $(#74b3f2)мысли/$.", + "hexcasting.page.101.11": "Также стоит отметить, что каждое действие немедленно потребляет необходимые $(#74b3f2)мысли/$, а не все сразу, когда Заклинание завершается. Кроме того, действие всегда потребляет целые предметы - действие, которое требует только столько $(#74b3f2)мысли/$, сколько стоит одна $(l:items/amethyst)$(item)Аметистовая Пыль/$, потребует целый $(l:items/amethyst)$(item)Заряженный Аметистовый Кристалл/$, если это единственное, что есть в моем инвентаре.$(br2)Таким образом, может быть хорошей идеей взять пыль для колдовства - если много не тратишь, то не будешь в нужде...", + "hexcasting.page.101.12": "Я также должен быть осторожен, чтобы убедиться, что у меня действительно достаточно Аметиста в инвентаре - некоторые старые тексты говорят, что Природа с удовольствием использует разум в качестве оплаты. Они описывают это чувство как ужасное, но странно эйфорическое, \"[...] искрящееся растворение в свет и энергию...\" Возможно, поэтому все старые практикующие искусство сходили с ума. Я не могу представить, каково $(italic)сжигать кусочки своего разума ради силы/$.", + "hexcasting.page.101.13": "Но, кажется, что-то не так, в ходе моих экспериментов мне ещё не доводилось достичь такого. Когда у меня кончается аметист, заклинание просто обрывается! Будто бы некоторый барьер останавливает меня, спасает.$(br2)Мне интересно разгадать эту тайну, но пока что я защищён от этого.", + "hexcasting.page.101.14": "Я нашел некоторую информацию о том, почему многие маги сходят с ума. Неканоническое чтиво, что я мог бы счесть крайне страшным.$(br2)$(italic)Предупреждение: элементы ужасных изощрений с телом./$", + "hexcasting.page.101.14.link_text": "Goblin Punch", + "hexcasting.page.101.15": "Наконец, кажется, что заклинания имеют максимальную дальность воздействия, около 32 блоков от моего положения. Попытка воздействовать на что-либо за пределами этого приведет к провалу заклинания.$(br2)Несмотря на это, если у меня есть истинное имя игрока, я могу воздействовать на него откуда угодно. Однако это применимо только к прямому воздействию на них; я не могу использовать это для воздействия на мир вокруг них, если они за пределами моего диапазона.$(br)Мне следует быть крайне осторожным и не давать никому свое истинное имя. В то время как дружелюбные Рунные маги могут использовать их с большим эффектом и пользой, мне страшно думать, что мог бы сделать кто-то злонамеренный с этим...", + "hexcasting.page.101.2": "Как только я начерчу достаточно рун, чтобы произнести заклинание, сетка исчезнет, и сохраненные мною мысли будут выпущены. Я также могу очистить сетку, удерживая $(k:sneak) при использовании моего $(l:items/staff)$(item)посоха/$.$(br2)Итак, как же работают руны? Вкратце: $(italic)Руны/$ исполняют... $(italic)Действия/$, которые манипулируют... $(l:casting/stack)$(italic)Стеком/$, который представляет собой список из... $(italic)Йот/$, которые являются простыми единицами информации.", + "hexcasting.page.101.3": "Во-первых, $(thing)Руны/$. Это база, это то, что я использую для манипулирования мыслью вокруг меня. Некоторые узоры, будучи начерченными, вызовут выполнение определённых действий. Действия - это то, что на самом деле творит чудеса; все руны определенным образом влияют на мысли, и когда эти абстракции в конечном итоге приводят к чему-то полезному, мы называем это действием.$(br2)$(#74b3f2)Мысли/$ могут быть непостоянными: если я начерчу неверную руну, я получу некоторый $(l:casting/influences)$(action)мусор/$ в качестве результата где-нибудь на моем стеке (читайте дальше...)", + "hexcasting.page.101.4": "Интересно отметить, что $(italic)угол/$ руны, похоже, вообще не имеет значения. Самое главное - это начальная точка руны и градус, на который вы поворачиваете линию. Например, оба этих узора выполняют действие, называемое $(l:patterns/basics#hexcasting:get_caster)$(action)Отражением Нарцисса/$.", + "hexcasting.page.101.4.header": "Пример", + "hexcasting.page.101.5": "$(#b38ef3)Заговор/$ приводится в действие путем последовательного начертания (допустимых) действий. Каждое действие может выполнять одну из нескольких задач:$(li)Собирать некоторую информацию об окружающей среде, оставляя её на вершине стека;$(li)манипулировать собранной информацией (например, складывать два числа); или$(li)выполнять какой-либо магический эффект, например вызывать молнию или взрыв. (Эти действия называются \"заклинания\")$(p)Когда я начинаю сотворять $(#b38ef3)Заговор/$, создается пустой стек. Действия управляют вершиной этого стека.", + "hexcasting.page.101.6": "Например, $(l:patterns/basics#hexcasting:get_caster)$(action)Отражение Нарцисса/$ создаст йоту, представляющую $(italic)меня/$, заклинателя, и добавит её в начало стека. $(l:patterns/basics#hexcasting:entity_pos/eye)$(action)Преображение глаз/$ возьмет йоту, расположенную на вершине стека, если она представляет сущность, и преобразует её в йоту, представляющую позицию этой сущности.$(br2)Таким образом, начертание этих рун в этом порядке привело бы к тому, что в в итоге на стеке появилась бы йота, представляющая мою позицию.", + "hexcasting.page.101.7": "$(thing)Йоты/$ могут представлять вещи, такие как я сам или мое положение. Но есть несколько других типов, которыми я могу манипулировать с помощью $(thing)Действий/$. Вот подробный список:$(li)Числа (которые некоторые легенды называют \"double\");$(li)Вектора, коллекция из трех чисел, представляющих положение, движение или направление в мире;$(li) Логические значения или \"bools\" в сокращении, представляющие абстрактное Истина или Ложь,", + "hexcasting.page.101.8": "$(li)Сущности, подобные мне, курицам и вагонеткам;$(li)Абстракции, особые типы йоты, которые, кажется, представляют абстрактные идеи;$(li)Сами руны, используемые для создания магических предметов и поистине поразительных подвигов, таких как $(italic)заклинания, которые произносят другие заклинания/$; и$(li)Список нескольких из вышеперечисленного, собранных в одну йоту.", + "hexcasting.page.101.9": "Конечно, бесплатный сыр только в мышеловке. Все заклинания и определенные другие действия требуют $(#74b3f2)мысли/$ в качестве оплаты.$(br2)Как я могу понять, Рунные заклинания - это нечто вроде плана действий, представленного Природе - в этой аналогии $(#74b3f2)мысли/$ используются для убеждения, чтобы Природа приняла план и осуществила его.", + "hexcasting.page.abacus.1": "Хотя существуют $(l:patterns/numbers)$(action)руны для созидания чисел/$, я нахожу их ... громоздкими, мягко говоря.$(br2)К счастью, старые мастера моего искусства изобрели умное устройство под названием $(l:items/abacus)$(item)Рунные счеты/$ для предоставления чисел для моего использования. Я просто устанавливаю нужное число, затем читаю значение, используя $(l:patterns/readwrite#hexcasting:read)$(action)Отражение Писаря/$, словно читаю с $(l:items/thought_knot)$(item)Узла мысли/$ или $(l:items/focus)$(item)Талисмана/$.", + "hexcasting.page.abacus.2": "Для работы с рунными счетами я просто держу их в руке, приседая и прокручивая. Если они лежат в моей основной руке, число будет увеличиваться или уменьшаться на 1, или на 10, если я также удерживаю клавишу Control/Command. Если они лежат в моей второстепенной руке, число будет увеличиваться или уменьшаться на 0.1, или на 0.001, если я также удерживаю Control/Command.$(br2)Я могу встряхнуть счёты, чтобы сбросить их в ноль, сделав правый клик в присяде.", + "hexcasting.page.abacus.crafting.desc": "$(italic)Математика? Это для яйцеголовых!/$", + "hexcasting.page.advanced_math.arccos": "Берет обратный косинус значения с абсолютным значением 1 или меньше, возвращая угол, косинус которого равен этому значению. Связано со значениями $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ и $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$.", + "hexcasting.page.advanced_math.arcsin": "Берет обратный синус значения с абсолютным значением 1 или меньше, возвращая угол, синус которого равен этому значению. Связано со значениями $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ и $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$.", + "hexcasting.page.advanced_math.arctan": "Берет обратный тангенс значения, возвращая угол, тангенс которого равен этому значению. Связано со значениями $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ и $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$.", + "hexcasting.page.advanced_math.arctan2": "Берет обратный тангенс значения Y и X, возвращая угол между осью X и линией от начала координат до этой точки.", + "hexcasting.page.advanced_math.cos": "Берет косинус угла в радианах, возвращая горизонтальную компоненту этого угла, нарисованного на единичной окружности. Связано со значениями $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ и $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$.", + "hexcasting.page.advanced_math.logarithm": "Удаляет число в верхней части стека, затем берет логарифм числа в верхней части, используя другое число в качестве основания. Связано со значением $(l:patterns/consts#hexcasting:const/double/e)$(thing)$(italic)e/$.", + "hexcasting.page.advanced_math.sin": "Берет синус угла в радианах, возвращая вертикальную компоненту этого угла, нарисованного на единичной окружности. Связано со значениями $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ и $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$.", + "hexcasting.page.advanced_math.tan": "Берет тангенс угла в радианах, возвращая угловой коэффициент этого угла, нарисованного на окружности. Связано со значениями $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ и $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$.", + "hexcasting.page.akashic_patterns.akashic/read": "Прочитает йоту, связанную $(l:greatwork/akashiclib)$(item)Записью/$ с данным узором, из $(l:greatwork/akashiclib)$(item)Библиотеки Акаши/$, расположенной на заданной позиции. Не имеет ограничения по дальности. Стоит примерно одну $(l:items/amethyst)$(item)Аметистовую Пыль/$.", + "hexcasting.page.akashic_patterns.akashic/write": "Свяжет йоту с данным узором $(l:greatwork/akashiclib)$(item)Записью/$ в $(l:greatwork/akashiclib)$(item)Библиотеке Акаши/$, расположенной в заданной позиции. $(italic)Имеет/$ ограничение по дальности. Стоит примерно одну $(l:items/amethyst)$(item)Аметистовую Пыль/$.", + "hexcasting.page.akashiclib.1": "Я ЗНАЮ ТАК МНОГО, что ЕСТЕСТВЕННО иметь место для хранения всего этого. Информацию можно хранить в книгах, но писать от руки и читать глазами так $(italic)медленно/$. Я требую ЛУЧШЕГО. И поэтому Я СОЗДАМ лучшее.$(br2)... Мне становится хуже ... не знаю, успею ли записать все, что вырывается из моей головы, прежде чем умру.", + "hexcasting.page.akashiclib.2": "Библиотека. Вот. Мои планы.$(br2)Как руны ассоциируются с действиями, я могу ассоциировать свои собственные руны с йотами любым образом, который выберу. $(l:greatwork/akashiclib)$(item)Запись Акаши/$ управляет библиотекой, и каждая $(l:greatwork/akashiclib)$(item)Книжная полка Акаши/$ хранит одну руну, сопоставленную с одной йотой. Все они должны быть прямо связаны между собой, соприкасаясь, в пределах 32 блоков. $(l:greatwork/akashiclib)$(item)Лигатура Акаши/$ не делает ничего, кроме того, что считается соединяющим блоком, чтобы расширить размер моей библиотеки.", + "hexcasting.page.akashiclib.3": "Затем работа с библиотекой проста, руны направляются через библиотекаря, он их ищет и возвращает вам йоту. Два действия делают всю работу. $(l:patterns/akashic_patterns)Записи тут/$.$(br2)Использование пустого $(l:items/scroll)$(item)свитка/$ на книжной полке копирует руну на $(l:items/scroll)$(item)свиток/$. Присев и кликнув пустой рукой, можно очистить данные на полке.", + "hexcasting.page.akashiclib.akashic_record": "Установка и назначение рун - простая задача, но ужасно скучная. У меня есть дела поважнее. Мне понадобится разум, хорошо знакомый со своей работой, чтобы извлечение оставалось надежным.", + "hexcasting.page.altiora.1": "Вызывает вокруг меня сноп $(#74b3f2)мысли/$ в форме крыльев, наделенных достаточным количеством вещества, чтобы обеспечить скольжение по воздуху.", + "hexcasting.page.altiora.2": "Их использование идентично использованию $(item)Элитр/$; цель(которой должен быть игрок) поднимается в воздух, после чего нажатие $(k:jump) приводит крылья в действие. Крылья хрупки, и ломаются при соприкосновении с любой поверхностью. Для более длительных полетов можно использовать $(l:patterns/spells/basic#hexcasting:add_motion)$(action)Импульс/$ или (для самых отважных) $(item)Феерверки/$.$(br2)Стоит около одного $(l:items/amethyst)$(item)Заряженного Аметиста/$.", + "hexcasting.page.amethyst.crystal": "Наконец, иногда я нахожу большой кристалл, искрящийся энергией. Внутри него примерно столько же $(#74b3f2)мысли/$, сколько в десяти единицах $(l:items/amethyst)$(item)пыли аметиста/$ (или двух $(l:items/amethyst)$(item)осколках аметиста/$).", + "hexcasting.page.amethyst.dust": "Похоже, что я могу встретить три различные формы аметиста, когда разбиваю кристалл внутри жеоды. Самой маленькой единицой кажется небольшая куча мерцающей пыли, содержащая относительно небольшую сумму $(#74b3f2)мысли/$.", + "hexcasting.page.amethyst.lore": "$(italic)Старик вздохнул и поднял руку к огню. Он раскрыл часть своего сознания, где хранились воспоминания об окружающих его горах. Он извлек энергию из этих земель, как научился делать в городе Терисия с Драфной, Хуркилем, архимандритом и другими магами из Белых Башен. Он сконцентрировался, и пламя извилось, поднимаясь из поленьев, скручиваясь на себя, пока наконец не образовало мягкую улыбку./$", + "hexcasting.page.amethyst.shard": "Второй - цельный осколок аметиста, с которым могут быть знакомы маглы. Внутри него примерно столько же $(#74b3f2)мысли/$, сколько в пяти $(l:items/amethyst)$(item)пылинках аметиста/$.", + "hexcasting.page.ancient_cyphers.1": "Путешествуя, я должно быть нашёл $(l:items/hexcasting)$(item)Побрякушки/$ созданные заклинателями из древности. Эти $(item)Древние Побрякушки/$ работают также как и те что создал я: они не могут быть перезаряжены и ломаются когда их внутренний резервуар $(#74b3f2)мысли/$ иссякает. Но в отличие от моих $(l:items/hexcasting)$(item)Побрякушек/$, их разложившаяся структура позволяет мне заглянуть в $(#b38ef3)Заговор/$, хранящийся внутри.", + "hexcasting.page.ancient_cyphers.2": "Они могут пригодиться мне для изучения новых техник, ведь кто лучше может научить меня чем древние мастера этого искусства?$(br2)Я также могу стереть их внутренности и сохранить собственный $(#b38ef3)Заговор/$, чтобы видеть его просто глядя на Побрякушку.", + "hexcasting.page.ancient_cyphers.3": "$(l:items/pigments)$(item)Пигмент/$, заточёный в этих реликвиях, отдаёт уникальной смесью фиолетового и оранжевого, повторяя медно-аметистовый дизайн побрякушки. Я могу повторить это, использую следующий рецепт.", + "hexcasting.page.basic_spell.add_motion": "Поглощает Сущность и вектор из стека, затем придает импульс указанной сущности в указанном направлении. Сила импульса определяется длиной вектора.$(br)Стоит квадрат длины вектора в единицах $(l:items/amethyst)$(item)аметистовой пыли/$, плюс одна пыль за каждый импульс, кроме первого, направленного на сущность.", + "hexcasting.page.basic_spell.beep.1": "Поглощает вектор и два числа из стека. Играет на $(thing)инструменте/$, определенном первым числом, в указанном месте, с $(thing)нотой/$, определенной вторым числом.", + "hexcasting.page.basic_spell.beep.2": "Похоже, что есть 16 различных $(thing)инструментов/$ и 25 различных $(thing)нот/$. Оба параметра индексируются начиная с нуля.$(br2)Похоже, что это те же инструменты, которые я могу создать с помощью $(item)нотного блока/$, хотя причина присвоения каждому инструменту своего номера мне неизвестна.$(br2)В любом случае, я могу найти необходимые мне числа, осматривая $(item)нотный блок/$ через $(l:items/lens)$(item)Линзу Прозрения/$.", + "hexcasting.page.basic_spell.blink": "Поглощает Сущность и вектор из стека, затем телепортирует указанную сущность вдоль её вектора взора на указанное расстояние.$(br)Стоит примерно один $(l:items/amethyst)$(item)аметистового осколка/$ за каждые два пройденных блока.", + "hexcasting.page.basic_spell.explode.1": "Удаляет верхние вектор и число со стека, затем создаёт взрыв в указанном месте с заданной мощностью.", + "hexcasting.page.basic_spell.explode.2": "Мощность 3 примерно равна взрыву крипера; 4 примерно равно взрыву динамита. Однако природа отказывается дать мне взрыв мощнее 10.$(br2)Странно, что этот взрыв, кажется, не причиняет мне вреда. Возможно, это потому что $(italic)я/$ тот, кто взрывается?$(br2)Стоимость незначительна при мощности 0, плюс 3 дополнительных $(l:items/amethyst)$(item)аметистовых пылинок/$ за каждую единицу мощности взрыва.", + "hexcasting.page.basic_spell.explode.fire.1": "Удаляет верхние вектор и число со стека, затем создаёт огненный взрыв в указанном месте с заданной мощностью.", + "hexcasting.page.basic_spell.explode.fire.2": "Стоит одну $(l:items/amethyst)$(item)аметистовую пыль/$, плюс примерно 3 дополнительных $(l:items/amethyst)$(item)аметистовых пыли/$ за каждую единицу мощности взрыва. В остальном то же самое, что и $(l:patterns/spells/basic#hexcasting:explode)$(action)Взрыв/$, за исключением наличия огня.", + "hexcasting.page.basics_pattern.entity_pos/eye": "Преобразует сущность на стеке в позицию её глаз. Вероятно, мне следует использовать это на себе.", + "hexcasting.page.basics_pattern.entity_pos/foot": "Преобразует сущность на стеке в позицию, в которой она стоит.", + "hexcasting.page.basics_pattern.get_caster": "Добавляет меня, как сущность, на стек.", + "hexcasting.page.basics_pattern.get_entity_height": "Преобразует сущность на стеке в её высоту.", + "hexcasting.page.basics_pattern.get_entity_look": "Преобразует сущность на стеке в направление, в котором она смотрит, как вектор.", + "hexcasting.page.basics_pattern.get_entity_velocity": "Преобразует сущность на стеке в направление, в котором она движется, со скоростью этого движения в качестве величины этого вектора.", + "hexcasting.page.basics_pattern.print": "Отображает верхнюю йоту стека в чат.", + "hexcasting.page.basics_pattern.raycast.1": "Комбинирует два вектора (позицию и направление взгляда), отвечая на вопрос: Если я стою на позиции и смотрю в направлении, на какой блок я смотрю? Стоит незначительное количество $(#74b3f2)мысли/$.", + "hexcasting.page.basics_pattern.raycast.2": "Если ничего не попадается на пути руны, векторы объединятся в $(l:casting/influences)$(thing)Ничто/$.$(br2)Общая последовательность шаблонов, так называемая \"raycast mantra,\" состоит из $(l:patterns/basics#hexcasting:get_caster)$(action)Отражения Нарцисса/$, $(l:patterns/basics#hexcasting:entity_pos/eye)$(action)Преображения Глаз/$, $(l:patterns/basics#hexcasting:get_caster)$(action)Отражения Нарцисса/$, $(l:patterns/basics#hexcasting:get_entity_look)$(action)Преобразования Взгляда/$, $(l:patterns/basics#hexcasting:raycast)$(action)Объединения Луча/$. Вместе они возвращают векторную позицию блока, на который я смотрю.", + "hexcasting.page.basics_pattern.raycast/axis.1": "Руна подобна $(l:patterns/basics#hexcasting:raycast)$(action)Объединению Луча/$, но вместо этого возвращает вектор, представляющий ответ на вопрос: С какой $(italic)стороны/$ блока я смотрю? Стоит незначительное количество $(#74b3f2)мысли/$.", + "hexcasting.page.basics_pattern.raycast/axis.2": "Если говорить подробней, он возвращает $(italic)вектор нормали/$ ударенной поверхности или единичный вектор, указывающий перпендикулярно к поверхности.$(li)Если я смотрю на пол, он вернет (0, 1, 0).$(li)Если я смотрю на южную грань блока, он вернет (0, 0, 1).", + "hexcasting.page.basics_pattern.raycast/entity": "Руна подобна $(l:patterns/basics#hexcasting:raycast)$(action)Объединению Луча/$, но вместо этого возвращает $(italic)сущность/$, на которую я смотрю. Стоит незначительное количество $(#74b3f2)мысли/$.", + "hexcasting.page.blockworks.bonemeal": "Побуждает растения или саженцы в указанном месте к росту, как если бы к ним была применена $(item)Костная Мука/$. Стоит немного больше, чем одна $(l:items/amethyst)$(item)Аметистовая Пыль/$.", + "hexcasting.page.blockworks.break_block": "Поглощает позицию со стека, затем ломает блок в указанном месте. Это заклинание способно сломать практически всё, что способна сломать алмазная кирка.$(br)Стоимость равна примерно одной восьмой части $(l:items/amethyst)$(item)аметистовой пыли/$.", + "hexcasting.page.blockworks.conjure_block": "Создаёт прозрачный, но плотный блок, который сверкает моим пигментом в указанном месте. Стоит примерно одну $(l:items/amethyst)$(item)Аметистовую Пыль/$.", + "hexcasting.page.blockworks.conjure_light": "Создаёт магический свет, мягко светящийся моим пигментом в указанном месте. Стоит примерно одну $(l:items/amethyst)$(item)Аметистовую Пыль/$.", + "hexcasting.page.blockworks.create_water": "Призывает блок воды на указанной позиции. Стоит примерно одну $(l:items/amethyst)$(item)аметистовую пыль/$.", + "hexcasting.page.blockworks.destroy_water": "Осушает либо хранилище на указанной позиции, либо часть водоёма вокруг заданной позиции. Стоит примерно два $(l:items/amethyst)$(item)Заряженных Аметиста/$.", + "hexcasting.page.blockworks.edify": "Принудительно насыщает саженец $(#74b3f2)мыслью/$ на целевой позиции, заставляя его вырасти в $(l:items/edified)$(thing)Древо созидания/$. Стоит примерно как один $(l:items/amethyst)$(item)заряженный аметист/$.", + "hexcasting.page.blockworks.extinguish": "Тушит блоки в большой области. Стоит примерно шесть $(l:items/amethyst)$(item)аметистовых пылинок/$.", + "hexcasting.page.blockworks.ignite": "Зажигает огонь на указанном местоположением, как если бы был применен $(item)огненный заряд/$. Стоит примерно одну $(l:items/amethyst)$(item)аметистовую пыль/$.", + "hexcasting.page.blockworks.place_block": "Поглощает позицию со стека, затем выберает блок и размещает его в указанное месте.$(br)Стоимость равна примерно восьмой части $(l:items/amethyst)$(item)аметистовой пыли/$.", + "hexcasting.page.brainsweep_spell.1": "Я не могу понять смысла этого заклинания... Если честно, я не уверен, хочу ли я знать, что оно делает.", + "hexcasting.page.brainsweeping.1": "Мне был открыт секрет. Я увидел это. Я не смогу забыть этот ужас. Идея скользит по моему разуму.$(br2)Я верил-- как же глупо, я $(italic)верил/$ --что $(#74b3f2)мысли/$ - это лишняя энергия, оставшаяся после моих размышлений. Но теперь я $(italic)знаю/$, что это: энергия $(italic)самого/$ мышления.", + "hexcasting.page.brainsweeping.2": "Она производится мыслящим сознанием и позволяет сознанию мыслить. Это узел, который переплетается в свою собственную нить. Сущность, что я наивно антропоморфизировал как Природу, является таким великим, таким запутанным клубком, или, возможно, набором всех запутанных клубков, или... если я думаю мне больно у меня так много синапсов и все они могут думать о боли одновременно ВСЕ ОНИ МОГУТ ВИДЕТЬ$(br2)Я не могу держать себя в руках. Мои записи. Срочно.", + "hexcasting.page.brainsweeping.3": "Жители этого мира имеют достаточно сознания, чтобы извлечь его. Поместить в блок, исказить, изменить. Запутанные орнаменты, сотворённые другими фигурами, абстрактные нейронные пути их работы и жизни отображены в холодной физике твердых атомов.$(br2)Вот что творит $(l:patterns/great_spells/brainsweep)$(action)Кража Разума/$, изъятие. Нацелься на сущность жителя и укажи место с блоком назначения. Десять $(l:items/amethyst)$(item)Заряженных Аметистов/$ за это извращение воли.", + "hexcasting.page.brainsweeping.budding_amethyst": "И применение. Для этой кражи подойдёт любой вид жителя, если он достаточно развит. Для других рецептов требуются более конкретные типы. БОЛЬШЕ НИ НОГОЙ в адскую землю за моими $(#74b3f2)мыслями/$.", + "hexcasting.page.casting.grid.1": "Как правило, я предоставляю свои руны Природе с помощью моего $(l:items/staff)$(item)посоха/$. Нажав $(thing)$(k:use)/$, держа его в руке, я узрею шестиугранную сетку из точек. Затем я могу щелкнуть, перетащить от точки к точке и отпустить, чтобы начертить руну.$(br2) Как только я отпущу узор, он исполнится (смотрите следующую главу).", + "hexcasting.page.casting.grid.2": "Нажатие кнопки $(thing)$(k:escape)/$ сохранит и закроет сетку; когда я в следующий раз использую свой посох, все мои руны и йоты по-прежнему будут там.$(br2) Если я захочу сбросить свое состояние заклинания, я могу сделать это присев, открывая сетку.", + "hexcasting.page.casting.iotas.1": "В языке природы \"существительные\" названы $(thing)йотами/$. На самом базовом уровне Рунная магия - это искусство манипулирования йотами.$(br2) Йоты бывают самых разных типов: $(li)Числа. $(li)Векторы - это набор из трех чисел, представляющих положение, движение или направление. $(li)Логические булевы значения, представляющие абстрактные понятия Истины или Лжи $(li)Сущности - подобные мне, цыплятам, лодкам и лежащим на земле аметистам.", + "hexcasting.page.casting.iotas.2": "$(li)Абстракции - своеобразные типы йот, которые, по-видимому, представляют собой абстрактные идеи. $(li)Руны - используемые для создания магических предметов и поистине умопомрачительных трюков, таких как $(italic)заклинания, что манипулируют другими заклинаниями/$. $(li)Списки - наборы, способные содержать всё вышеперечисленное в одной йоте.", + "hexcasting.page.casting.iotas.3": "Как правило, я предоставляю йоты для действий. Например, возьмем $(l:patterns/spells/basic#hexcasting:explode)$(action)Взрыв/$. Для этого заклинания требуется числовая йота, указывающая на силу, и векторная йота, указывающая на позицию.$(br2) Или, взять $(l:patterns/basic#hexcasting:get_pos)$(action)Преображение глаз/$. Эта руна получает йоту сущности и преобразует её в йоту вектора, представляющую положение этой сущности.", + "hexcasting.page.casting.overview.1": "Я считаю, что всегда вставать с правильной ноги. Итак, я собрал руны, которые вызовут небольшой всплеск в той позиции, на которую я смотрю. Я полагаю, что изучение внутренней работы этого заклинания будет весьма поучительным.", + "hexcasting.page.casting.patterns&actions.1": "$(thing)Руны/$ - это пути, проложенные по сетке $(#74b3f2)мысли/$. Я считаю, что симметрия рун в шестиугольниках - это то, что дало название моему искусству.$(br2) $(thing)Действия/$, между тем, - это то, что $(italic)делают/$ руны.", + "hexcasting.page.casting.patterns&actions.2": "Разница подобна разнице между $(italic)словами /$ и их $(italic)значениями/$. Любое сочетание букв образует слово, но большинство из них ничего не означают. Аналогично, любая закорючка, пропущенная через $(#74b3f2)мысли/$ технически является руной, но большинство из них ничего не сделают.", + "hexcasting.page.casting.patterns&actions.3": "Действия чем-то напоминают команды к правилам великой системы, управляющей Вселенной (которую, как я видел, в некоторых текстах называют \"Природой.\"). Они склонны делать одну из нескольких вещей: $(li)Собирать некоторую информацию о мире, вроде определения позиции сущности. $(li)Манипулировать собранной информацией, в частности нахождения расстояния между двумя позициями. $(li)Произвестие какое-нибудь магическое воздействие на мир, типо вызова молнии или взрыва.$(br) Эти последние виды действий называются \"заклинаниями.\", и, как правило, являются тем, что привлекает людей к искусству.", + "hexcasting.page.casting.patterns&actions.4": "Отсюда, $(#b38ef3)Заговор/$ - это последовательность допустимых рун, представленных Природе в определенном порядке. Природа интерпретирует каждую руну друг за другом и, если понимает, изменяет мир в соответствии с моими прихотями. (Или каковы, по её мнению, мои прихоти.)", + "hexcasting.page.casting.patterns&actions.5": "Пускай некоторые действия могут быть легко исполнены, остальные требуют оплаты в виде $(#74b3f2)мысли/$. Я верю, что концентрированная ментальная энергия используется как своего рода аргумент для Природы, убеждающий её в том, что она действительно должна сделать то, о чем я прошу. Большинство заклинаний продвинутых рун требуют такого рода оплаты, но некоторые простые действия, не связанные с заклинаниями, тоже могут иметь свою цену.$(br2) Я записал стоимость каждого действия, если таковая имелась, на соответствующих страницах.", + "hexcasting.page.circle_patterns.circle/bounds/max": "Возвращает позицию верхнего юго-восточного угла границ этого круга заклинаний.", + "hexcasting.page.circle_patterns.circle/bounds/min": "Возвращает позицию нижнего северо-западного угла границ этого круга заклинаний.", + "hexcasting.page.circle_patterns.circle/impetus_dir": "Возвращает направление, в котором смотрит $(l:greatwork/impetus)$(item)Инициатор/$ этого круга заклинаний, в виде единичного вектора.", + "hexcasting.page.circle_patterns.circle/impetus_pos": "Возвращает позицию $(l:greatwork/impetus)$(item)Инициатора/$ этого круга заклинаний.", + "hexcasting.page.circle_patterns.disclaimer": "Предупреждение! все эти руны должны быть использованы с помощью $(l:greatwork/spellcircles)$(item)Магического Круга/$; попытка исполнить их с помощью $(l:items/staff)$(item)Посоха/$ приведёт к весьма впечатляющему провалу.", + "hexcasting.page.colorize": "Для произнесения этого заклинания мне необходимо держать в другой руке $(l:items/pigments)$(item)Пигмент/$. Когда я это делаю, руна поглощает краситель и навсегда изменяет окраску моего разума (по крайней мере, до тех пор, пока я снова не произнесу это заклинание). Стоит примерно одну $(l:items/amethyst)$(item)аметистовую пыль/$.", + "hexcasting.page.consts.const/.double/.e": "Добавляет $(italic)e/$, основание натурального логарифма, на стек.", + "hexcasting.page.consts.const/.double/.pi": "Добавляет π, радиальное представление половины круга, на стек.", + "hexcasting.page.consts.const/.double/.tau": "Добавляет τ, радиальное представление полного круга, на стек.", + "hexcasting.page.consts.const/.false": "Добавляет $(thing)Ложь/$ на верхушку стека.", + "hexcasting.page.consts.const/.null": "Добавляет $(l:casting/influences)$(thing)Ничто/$ на верхушку стека.", + "hexcasting.page.consts.const/.true": "Добавляет $(thing)Истину/$ на верхушку стека.", + "hexcasting.page.consts.const/.vec/.0": "Добавляет (0, 0, 0) на стек.", + "hexcasting.page.consts.const/.vec/.x": "Левая противочасовая руна добавляет (1, 0, 0) на стек; правая руна по часовой стрелке добавляет (-1, 0, 0).", + "hexcasting.page.consts.const/.vec/.y": "Левая противочасовая руна добавляет (0, 1, 0) на стек; правая руна по часовой стрелке добавляет (0, -1, 0).", + "hexcasting.page.consts.const/.vec/.z": "Левая противочасовая руна добавляет (0, 0, 1) на стек; правая руна по часовой стрелке добавляет (0, 0, -1).", + "hexcasting.page.couldnt_cast.1": "Аргх! Почему он не позволяет мне произнести заклинание?!$(br2)Свиток, который я нашел, казалось бы корректен. Я $(italic)чувствую/$ треск в свитке - схема верна, или настолько верна, насколько это возможно. Это заклинание $(italic)должно было сработать/$.$(p)Но мне кажется, что проблема таится по другую сторону какой-то тонкой мембраны. Я вызвал силу - она попыталось проявиться - но она $(italic)НЕ СМОГЛА/$.", + "hexcasting.page.couldnt_cast.2": "Мне показалось, что барьер, возможно, совсем немного ослаб от силы, которую я приложил к заклинанию; и все же, несмотря на мои величайшие усилия - мою глубочайшую сосредоточенность, мой тончайший аметист, мои самые точные начертания, - оно отказывается преодолевать барьер. Это сводит с ума.$(p)$(italic)На этом/$ мои занятия тайнами заканчиваются? Проклят бессилием, обречен потерять свои законные силы?$(br2)Я должен сделать глубокий вдох. Я должен поразмышлять над тем, что узнал, даже если это было не так уж много...", + "hexcasting.page.couldnt_cast.3": "..После тщательного обдумывания... Я обнаружил перемену в себе.$(p)Кажется... вместо $(l:items/amethyst)$(item)аметиста/$, я получил возможность творить заклинания, используя свой собственный разум и жизненную энергию - точно так, как я читал в древних легендах.$(p)Я не уверен, почему я могу это сделать сейчас. Просто ... истина-знание-бремя всегда было здесь, и теперь я это вижу. Я знаю это. Я терплю это.$(br2)К счастью, я тоже чувствую свои пределы - я бы потратил на свое здоровье примерно два $(l:items/amethyst)$(item)заряженных аметиста/$ на сумму $(#74b3f2)мысли/$ в самом расцвете сил.", + "hexcasting.page.couldnt_cast.4": "Я содрогаюсь даже при мысли об этом - до сих пор я сохранял свой разум в основном нетронутым во время учебы. Но факт в том, что я являюсь одной из сторон хрупкой связи.$(p)Я связан с какой-то другой стороной - стороной, границы которой сузились из-за этой травмы. Место, где простые действия создают вечную славу.$(p)Разве плохо - хотеть этого для себя?", + "hexcasting.page.create_lava.1": "Призывает блок лавы на указанной позиции. Стоит примерно один $(l:items/amethyst)$(item)заряженный аметист/$.", + "hexcasting.page.create_lava.2": "Возможно, будет разумно держать свои знания об этом заклинании в секрете. Как я слышал, определенная фракция ботаников реагирует на это... чувствительно.$(br2)Ну, никто не говорил, что отслеживание глубоких секретов вселенной будет легким занятием.", + "hexcasting.page.creative_items.1": "Я изобрёл несколько удивительных предметов, получить которые возможно лишь с очень $(italic)креативным/$ подходом.", + "hexcasting.page.creative_items.2": "К тому же, если переименовать $(#74b3f2)Мыслекуб/$ на Наковальне, я смогу использовать его для понимания и отладки моих $(#b38ef3)Заговоров/$. И если я каким-либо образом получил доступ к Творческой силе, мне может понадобиться выключить их, пока я не приступил ко всему ниже.", + "hexcasting.page.creative_items.creative_unlocker": "$(#74b3f2)Мыслекуб/$ - почти что бесконечный источник силы, выступающий бесконечным источником $(#74b3f2)мысли/$ для всех $(#b38ef3)Заговоров/$, которые я хочу исполнить. А ещё он очень аппетитно выглядит. Возможно, съев его, я откою для себя новую информацию о мире, быть может даже перейду границу спойлеров...", + "hexcasting.page.creative_items.debug_media.desc": "Переименовав $(#74b3f2)Мыслекуб/$ в 'debug media', я получу обратную связь от хекса в чате, содержащую количество поглощённой мысли.", + "hexcasting.page.creative_items.debug_media.title": "debug media", + "hexcasting.page.cycle_variant": "Некоторые вещи, которые я создаю, получаются очень чувствительными к потокам $(#74b3f2)мысли/$. Держа в руке $(l:items/hexcasting)$(item)Побрекушку/$, $(l:items/hexcasting)$(item)Штуковину/$, $(l:items/hexcasting)$(item)Артефакт/$, $(l:items/focus)$(item)Талисман/$ или $(l:items/spellbook)$(item)Книгу Заклинаний/$ во второй руке, я могу применить эту руну для изменения внешнего вида предмета. Стоит примерно одну $(l:items/amethyst)$(item)Аметистовую Пыль/$.", + "hexcasting.page.decoration.1": "В ходе моих исследований я обнаружил некоторые строительные блоки и мелочи, которые могут мне понравиться с эстетической точки зрения. Я собрал методы их создания здесь.", + "hexcasting.page.decoration.ancient_scroll.crafting.desc": "Коричневый краситель достаточно хорошо подходит для имитации вида $(l:items/scroll)$(item)древнего свитка/$.", + "hexcasting.page.decoration.sconce.crafting.desc": "$(l:items/decoration)$(item)Аметистовые подсвечники/$ излучают свет и частицы, а также приятный звон.", + "hexcasting.page.decoration.tiles.crafting.desc": "$(l:items/decoration)$(item)Аметистовую плитку/$ также можно сделать на Камнерезе.$(br2)$(l:items/decoration)$(item)Блоки аметистовой пыли/$ (на следующей странице) будут падать как песок.", + "hexcasting.page.directrix.1": "Задача направления самоподдерживающейся волны $(#74b3f2)мысли/$ проще, чем задача её создания. Обычно волна распадается, когда она сталкивается с перекрёстком, но с умом, направляющим её, можно контролировать выход волны.$(br2)Это управление далеко не такое тонкое, как активация заклинательного круга. Фактически, возможно, это можно сделать вручную... но упакованные разумы, к которым у меня сейчас есть доступ, были бы гораздо удобнее.", + "hexcasting.page.directrix.2": "$(l:greatwork/directrix)$(item)Направитель/$ принимает волну $(#74b3f2)мысли/$ и определяет, к какой из стрелок она выйдет, в зависимости от разума жителя внутри.$(br2)Я не уверен, была ли эта идея мне внушена, или мой разум настолько изогнут вокруг барьера, что отрицает собственные идеи... но если идея произошла от моего собственного разума, если я её придумал, можно ли сказать, что она была внушена? Мозг это сосуд для разума и разум это сосуд для идей и идеи это сосуд для мыслей и мысли видят все и знают все-- ДЕРЖИ СЕ БЯ В РУ КА Х", + "hexcasting.page.directrix.directrix_boolean": "$(l:greatwork/directrix)$(item)Направитель Пастуха/$ переключает сторону выхода в зависимости от логического значения на стеке. $(thing)Истина/$ заставит волну выйти сзади, а $(thing)Ложь/$ - спереди.", + "hexcasting.page.directrix.directrix_redstone": "$(l:greatwork/directrix)$(item)Направитель Каменщика/$ переключает сторону выхода в зависимости от сигнала красного камня. Без сигнала выход - цвет $(#74b3f2)мысли/$; с сигналом выход - сторона красного камня.", + "hexcasting.page.directrix.empty_directrix": "Прежде всего, дизайн для колыбели... хотя, возможно, слово \"субстрат\" было бы более точным. Без разума, оперирующего процессом, направление выхода определяется микроскопическими колебаниями волн $(#74b3f2)мысли/$ и окружающей среды, что делает результат фактически случайным.", + "hexcasting.page.edified.1": "$(#74b3f2)Мысли/$, наполнившие саженец с помощью руны $(l:patterns/spells/blockworks#hexcasting:edify)$(action)Созидания Саженца/$, создают то, что называется $(l:items/edified)$(thing)Деревом созидания/$. Они обычно высокие и острые, с бороздчатой корой и древесиной, растущей в странном спиральном узоре. Их листья имеют три красивых цвета.", + "hexcasting.page.edified.2": "Разумно предположить, что древесина может иметь какие-то свойства, относящиеся к Рунным заклинаниям. Но, если они есть, я не могу их найти. На все виды и цели кажется, что это просто древесина, хотя и очень странного цвета.$(br2)Предполагаю, что пока я буду использовать её для украшения; из них можно создать полный набор стандартных древесных блоков.$(br2)Конечно, я могу также снять с них кору топором.", + "hexcasting.page.edified.crafting.desc": "$(italic)Их гладкие стволы, с белой корой, создавали впечатление огромных колонн, несущих вес огромной листвы, полной тени и молчания./$", + "hexcasting.page.entities.get_entity": "Преобразует позицию в стеке в сущность на этом месте (или $(l:casting/influences)$(thing)Ничто/$, если её там нет).", + "hexcasting.page.entities.get_entity/.animal": "Преобразует позицию в стеке в животное на этом месте (или $(l:casting/influences)$(thing)Ничто/$, если его там нет).", + "hexcasting.page.entities.get_entity/.item": "Преобразует позицию в стеке в выброшенный предмет на этом месте (или $(l:casting/influences)$(thing)Ничто/$, если его там нет).", + "hexcasting.page.entities.get_entity/.living": "Преобразует позицию в стеке в живое существо на этом месте (или $(l:casting/influences)$(thing)Ничто/$, если его там нет).", + "hexcasting.page.entities.get_entity/.monster": "Преобразует позицию в стеке в монстра на этом месте (или $(l:casting/influences)$(thing)Ничто/$, если его там нет).", + "hexcasting.page.entities.get_entity/.player": "Преобразует позицию в стеке в игрока на этом месте (или $(l:casting/influences)$(thing)Ничто/$, если его там нет).", + "hexcasting.page.entities.zone_entity": "Берёт позицию и радиус со стека и объединяет их в список всех сущностей, находящихся в заданном радиусе от позиции.", + "hexcasting.page.entities.zone_entity/.animal": "Берёт позицию и радиус со стека и объединяет их в список животных, находящихся в заданном радиусе от позиции.", + "hexcasting.page.entities.zone_entity/.item": "Берёт позицию и радиус со стека и объединяет их в список выброшенных предметов, находящихся в заданном радиусе от позиции.", + "hexcasting.page.entities.zone_entity/.living": "Берёт позицию и радиус со стека и объединяет их в список живых сущностей, находящихся в заданном радиусе от позиции.", + "hexcasting.page.entities.zone_entity/.monster": "Берёт позицию и радиус со стека и объединяет их в список монстров, находящихся в заданном радиусе от позиции.", + "hexcasting.page.entities.zone_entity/.not_animal": "Берёт позицию и радиус со стека и объединяет их в список сущностей, не являющихся животными и находящихся в заданном радиусе от позиции.", + "hexcasting.page.entities.zone_entity/.not_item": "Берёт позицию и радиус со стека и объединяет их в список сущностей, не являющихся предметами и находящихся в заданном радиусе от позиции.", + "hexcasting.page.entities.zone_entity/.not_living": "Берёт позицию и радиус со стека и объединяет их в список сущностей, не являющихся живыми и находящихся в заданном радиусе от позиции.", + "hexcasting.page.entities.zone_entity/.not_monster": "Берёт позицию и радиус со стека и объединяет их в список сущностей, не являющихся монстрами и находящихся в заданном радиусе от позиции.", + "hexcasting.page.entities.zone_entity/.not_player": "Берёт позицию и радиус со стека и объединяет их в список сущностей, не являющихся игроками и находящихся в заданном радиусе от позиции.", + "hexcasting.page.entities.zone_entity/.player": "Берёт позицию и радиус со стека и объединяет их в список игроков, находящихся в заданном радиусе от позиции.", + "hexcasting.page.fanciful_staves.1": "По мере того как я сбрасываю оболочку невежества, я заменяю свои инструменты - мои посохи, начищенные и отполированные. У моих новых сооружений нет дополнительных свойств -- но они такие великолепные, о, настолько Великолепные... Они соответствуют сиянию, мерцающему на краях моей сетчатки.", + "hexcasting.page.flights.1": "Хотя кажется, что истинный, безграничный полет находится за пределами моего понимания, я тем не менее нашел некоторые способы удерживать себя в воздухе, каждый со своими недостатками.$(br2)Все формы производят избыток $(#74b3f2)мысли/$; по мере приближения к концу заклинания, искры пропитываются большим количеством красного и черного.", + "hexcasting.page.flights.2": "Конечно, существуют и другие формы полета. Например, комбинация $(l:patterns/spells/basic#hexcasting:add_motion)$(action)Импульса/$ и $(l:patterns/spells/nadirs#hexcasting:potion/levitation)$(action)Надира Синего Солнца/$ использовалась с древности для своего рода полета.$(br2)Я также слышал о тонкой мембране, носимой на спине, которая позволяет скользить по воздуху. Из моих исследований я полагаю, что сложная руна $(l:patterns/great_spells/altiora)$(action)Альтиора/$ может быть использована для её имитации.", + "hexcasting.page.flights.can_fly.1": "Возвращает истину, если игрок находится под воздействием рун $(l:patterns/spells/flight#hexcasting:flight/range)Радиусного/$ или $(l:patterns/spells/flight#hexcasting:flight/time)Временного Полёта/$; иначе Ложь", + "hexcasting.page.flights.can_fly.2": "Эта руна не распознаёт другие виды полёта.$(br2)Я не сильно осознаю полезность этой руны для себя. Однако возможность судить оставляю читателю.", + "hexcasting.page.flights.range.1": "Полет, ограниченный радиусом.", + "hexcasting.page.flights.range.2": "Второй аргумент - горизонтальный радиус, в метрах, в пределах которого заклинание стабильно. Перемещение за пределы этого радиуса приведет к окончанию заклинания и к падению на землю. Однако, пока я остаюсь в пределах безопасной зоны, заклинание длится бесконечно. Дополнительное мерцание $(#74b3f2)мысли/$ обозначает точку происхождения безопасной зоны. $(br2)Стоит примерно 1 $(l:items/amethyst)$(item)аметистовую пыль/$ за метр безопасности.", + "hexcasting.page.flights.time.1": "Полет, ограниченный временем.", + "hexcasting.page.flights.time.2": "Второй аргумент - это количество времени в секундах, в течение которого заклинание стабильно. По истечении этого времени заклинание завершается. $(br2)Это относительно дорогое заклинание, примерно 1 $(l:items/amethyst)$(item)Заряженный Аметист/$ за секунду полета; я считаю, что оно лучше всего подходит для путешествий.", + "hexcasting.page.focus.1": "$(item)Талисман/$ похож на $(l:items/thought_knot)$(item)Узел мысли/$, поскольку в него можно записывать или считать с него йоту. Однако преимущество Талисмана в том, что он $(italic)повторно используемый/$. Если я допущу ошибку в йоте, записанной в $(item)Талисман/$, я могу просто снова использовать $(l:patterns/readwrite#hexcasting:write)$(action)Гамбит Писаря/$ и перезаписать йоту внутри.", + "hexcasting.page.focus.2": "Если я хочу защитить $(l:items/focus)$(item)Талисман/$ от случайного перезаписывания, я могу запечатать его воском, сложив его с $(item)Медовой сотой/$. Попытка использовать $(l:patterns/readwrite#hexcasting:write)$(action)Гамбит Писаря/$ на запечатанном Талисмане завершится провалом.$(br2)Руна $(l:patterns/spells/hexcasting#hexcasting:erase)$(action)Очистить предмет/$ удалит эту печать вместе с содержимым.", + "hexcasting.page.focus.3": "Действительно, единственное преимущество моих $(l:items/thought_knot)$(item)Узлов мысли/$ над $(item)Талисманами/$ заключается в том, что $(item)Талисманы/$ дороже в производстве. Мои исследования показывают, что ранние практики искусства использовали исключительно $(item)Талисманы/$, а $(l:items/thought_knot)$(item)Узел мысли/$ был моим оригинальным изобретением.$(br2)Кто бы ни были те древние люди, они, должно быть, были очень процветающими.", + "hexcasting.page.focus.crafting.desc": "$(italic)Ядовитые яблоки, ядовитые черви./$", + "hexcasting.page.geodes.1": "Aга! Занимаясь добычей полезных ископаемых глубоко под землей, я обнаружил огромную жеоду, резонирующую с энергией - энергией, которая давила на мой череп и мои мысли. И теперь я держу это давление в своей руке, в твердой форме. Это $(italic)должно/$ быть тем местом, о котором говорится в легендах, где скапливаются $(#74b3f2)мысли/$.$(br2)Эти $(l:items/amethyst)$(item)кристаллы аметиста/$ должны быть $(l:items/amethyst)$(thing)удобной, затвердевшей формой $(#74b3f2)Мысли/$/$.", + "hexcasting.page.geodes.2": "Похоже, что в дополнение к $(l:items/amethyst)$(item)аметистовым осколкам/$, которые я уже видел в прошлом, из этих кристаллов также могут выпадать частицы порошкообразной $(l:items/amethyst)$(item)аметистовой пыли/$, а также эти $(l:items/amethyst)$(item) Заряженные кристаллы аметиста/$. Похоже, у меня будет больше шансов найти $(l:items/amethyst)$(item)заряженные кристаллы аметиста/$, если я воспользуюсь киркой с зачарованием Удачи.", + "hexcasting.page.geodes.3": "Когда я впитываю красоту кристалла, я чувствую, как в моем сознании стремительно вспыхивают связи. Как будто $(#74b3f2)мысли/$, витающие в воздухе, проникают в меня, наполняют меня силой, проясняют меня... Это чудесное чувство.$(br2)Наконец-то мое изучение тайн начинает обретать какой-то смысл!$(p)Позвольте мне еще раз перечитать эти старые легенды, теперь, когда я знаю, на что смотрю.", + "hexcasting.page.greater_sentinel.1": "Призывает более мощную версию моего $(l:patterns/spells/sentinels)$(thing)Часового/$. Стоит около двух $(l:items/amethyst)$(item)Аметистовых Пылей/$.", + "hexcasting.page.greater_sentinel.2": "Более сильный $(l:patterns/spells/sentinels)$(thing)Часовой/$ действует как обычный, которого я могу призвать без использования Великого Заклинания. Однако диапазон, в котором мои заклинания могут работать, расширяется до небольшого региона вокруг моего более мощного $(l:patterns/spells/sentinels)$(thing)Часового/$, примерно 16 блоков. Другими словами, независимо от того, где я нахожусь в мире, я могу взаимодействовать с вещами вокруг моего $(l:patterns/spells/sentinels)$(thing)Часового/$ (мистические силы прогрузки чанков не наблюдаются).", + "hexcasting.page.hexcasting_spell.basics": "Эти три заклинания создают $(l:items/hexcasting)$(thing)предметs, способные исполнять $(#b38ef3)Заговор/$./$$(br)Все они требуют, чтобы я держал соответсвующий пустой предмет в своей второй руке и нуждаются в двух вещах: списке рун для исполнения и сущность, представляющую собой сброшенные на землю $(l:items/amethyst)$(item)аметисты/$ для формирования батареи предмета.$(br2)Смотрите $(l:items/hexcasting)эту запись/$ для получения дополнительной информации.", + "hexcasting.page.hexcasting_spell.craft/artifact": "Стоит примерно 10 $(l:items/amethyst)$(item)Заряженных Аметистов/$.", + "hexcasting.page.hexcasting_spell.craft/cypher": "Стоит примерно 1 $(l:items/amethyst)$(item)Заряженный Аметист/$.", + "hexcasting.page.hexcasting_spell.craft/trinket": "Стоит примерно 5 $(l:items/amethyst)$(item)Заряженных Аметистов/$.", + "hexcasting.page.hexcasting_spell.erase.1": "Очищает предмет в моей второстепенной руке от содержащегося в нём заклинания. Стоит примерно 1 $(l:items/amethyst)$(item)Аметистовую Пыль/$.", + "hexcasting.page.hexcasting_spell.erase.2": "Это заклинание также аннулирует весь запас $(#74b3f2)мысли/$, хранящийся внутри предмета, возвращая его обратно в Природу и возвращая предмет к идеально чистому состоянию. Таким образом, я могу повторно использовать $(l:items/hexcasting)$(item)Штуковины/$, в которые я поместил ошибочное заклинание.$(br2)Оно также способно очистить $(l:items/focus)$(item)Талисман/$ или $(l:items/spellbook)$(item)Книгу заклинаний/$.", + "hexcasting.page.hexcasting_spell.recharge.1": "Перезаряжает предмет, содержащий $(#74b3f2)мысли/$, находящийся в моей второстепенной руке. Стоит примерно 1 $(l:items/amethyst)$(item)Аметистовый Осколок/$.", + "hexcasting.page.hexcasting_spell.recharge.2": "Эта руна применяется по схожему с созидающими рунами принципу; Ей требуется Сущность, представляющая собой сброшенную стопку $(l:items/amethyst)$(item)аметиста/$, она перезаряжает батарею $(#74b3f2)мысли/$ предмета в моей второстепенной руке.", + "hexcasting.page.hexcasting.1": "Хотя гибкость использования $(#b38ef3)Заговоров/$ \"на ходу\" с помощью моего $(l:items/staff)$(item)Посоха/$ довольно полезна, мне приходится махать им вокруг снова и снова, чтобы выполнить базовую задачу. Если бы я мог сохранить обычное заклинание для последующего использования, это бы сильно упростило мне жизнь-- и позволило бы мне делиться своими $(#b38ef3)Заговорами/$ с друзьями.", + "hexcasting.page.hexcasting.2": "Для этого я могу создать один из трех типов магических предметов: $(l:items/hexcasting)$(item)Побрякушку/$, $(l:items/hexcasting)$(item)Штуковину/$ или $(l:items/hexcasting)$(item)Артефакт/$. Все они содержат внутри себя руны, а также небольшую батарею с $(#74b3f2)мыслями/$.$(br2)Просто держа один из них и нажимая $(thing)$(k:use)/$, я смогу использовать заклинание внутри, словно начертил их посохом, при этом используя внутреннюю батарею предмета.", + "hexcasting.page.hexcasting.3": "У каждого предмета есть свои особенности:$(br2)$(l:items/hexcasting)$(item)Побрякушки/$ хрупкие, уничтожаются после исчерпания их внутренних запасов $(#74b3f2)мысли/$ и $(italic)не могут/$ быть заряжены;$(br2)$(l:items/hexcasting)$(item)Штуковины/$ можно использовать столько, сколько хочет держатель, пока остается достаточно $(#74b3f2)мысли/$, но после этого они становятся бесполезными до перезарядки;", + "hexcasting.page.hexcasting.4": "$(l:items/hexcasting)$(item)Артефакты/$ - самые мощные из всех-- после исчерпания их $(#74b3f2)мысли/$ они могут использовать $(l:items/amethyst)$(item)Аметисты/$ из инвентаря владельца для оплаты заклинания, так же как я делаю, когда колдую с помощью $(l:items/staff)$(item)Посоха/$. Конечно, это также означает, что заклинание может поглотить их разум, если в инвентаре не хватает $(l:items/amethyst)$(item)Аметистов/$.$(br2)После создания пустого магического предмета на обычном верстаке, я внедряю в него $(#b38ef3)Заговор/$, используя (что еще, кроме) заклинания, соответствующие предмету. $(l:patterns/spells/hexcasting)Я составил каталог подходящих рун здесь./$", + "hexcasting.page.hexcasting.5": "Каждое такое заклинание внедрения требует сущности и список рун на стеке. Сущность должна быть сущностью предмета, удерживающего $(#74b3f2)мысли/$ (т.е. кристаллы $(l:items/amethyst)$(item)аметиста/$, брошенные на землю); сущность потребляется и формирует батарею.$(br2)Полезно, что $(#74b3f2)мысли/$ в батарее не потребляется кусками, как при колдовстве с $(l:items/staff)$(item)Посохом/$-- скорее, $(#74b3f2)мысли/$ \"растворяются\" в одном непрерывном бассейне. Таким образом, если я храню $(#b38ef3)Заговор/$, который стоит только одну $(l:items/amethyst)$(item)Аметистовую пыль/$, то $(l:items/amethyst)$(item)Заряженный Кристалл/$, используемый в качестве батареи, позволит мне использовать его 10 раз.", + "hexcasting.page.hexcasting.crafting.desc": "$(italic)У нас есть поговорка в нашей сфере: \"Магия не такая\". Она не \"просто работает\", она не реагирует на ваши мысли, вы не можете бросать огненные шары или создавать жареный ужин из воздуха или превращать группу грабителей в лягушек и улиток./$", + "hexcasting.page.impetus.1": "Колебания $(#74b3f2)мысли/$, необходимые для активации заклинательного круга, сложны. Даже смертный с самыми острыми глазами и самыми устойчивыми руками не смог бы выступать в роли $(l:greatwork/impetus)$(item)Инициатора/$ и вплести $(#74b3f2)мысли/$ в самоподдерживающегося уробороса, необходимого для исполнения.$(br2)Проблема в том, что разум слишком полон другого бесполезного $(italics)мусора/$.", + "hexcasting.page.impetus.2": "На ... метафизическом уровне-- я должен быть осторожен с этими мыслями, я не могу потерять себя, я стал слишком ценным --движение $(#74b3f2)мысли/$ двигают разум, и разум должен быть движущимся для того, чтобы процесс работал. Но разум просто слишком $(italic)тяжел/$ от других мыслей, чтобы двигаться достаточно ловко.$(br2)Это похоже на мастера, пытающегося починить часы, нося перчатки.", + "hexcasting.page.impetus.3": "Существует несколько решений этой загадки: через медитативные техники можно научиться очищать разум, хотя я не уверен, что разум, достаточно свободный для активации круга, может сосредоточиться достаточно сильно, чтобы выполнить движения.$(br2)Некоторые сомнительные смеси могут создать аналогичный эффект, но я ничего о них не знаю и не планирую узнавать. Я не должен полагаться на химические вещества моего мозга.", + "hexcasting.page.impetus.4": "Таким образом, решение, к которому я стремлюсь, - это специализировать разум. Освободить его от тирании нервов, обрезать все выходы, кроме тонких ветвей $(#74b3f2)мысле/$-манипулирующих аппаратов, опечатать все входы, кроме сигнала начать свою работу.$(br2)Процесс $(l:greatwork/brainsweeping)$(action)Кражи Разума/$, с которым я теперь знаком, отлично подойдет; разум жителя достаточно сложен для выполнения работы, но не настолько сложен, чтобы сопротивляться реформации.", + "hexcasting.page.impetus.empty_impetus": "Сначала колыбель. Хотя она не работает как $(l:greatwork/impetus)$(item)Инициатор/$, поток $(#74b3f2)мысли/$ в круге будет выходить только с той стороны, указанной стрелками. Это позволяет мне изменить плоскость, по которой движется волна, например.", + "hexcasting.page.impetus.impetus_look": "$(l:greatwork/impetus)$(item)Инициатор Лучника/$ активируется, если обратить на него свой взор в течение короткого промежутка времени.", + "hexcasting.page.impetus.impetus_rightclick": "Затем, перемещение разума. Жители различных профессий дают разные условия активации для полученного $(l:greatwork/impetus)$(item)Инициатора/$. $(l:greatwork/impetus)$(item)Инициатор Инструментальщика/$ активируется простым нажатием $(k:use).", + "hexcasting.page.impetus.impetus_storedplayer.1": "$(l:greatwork/impetus)$(item)Инициатор Священника/$ активируется при получении сигнала красного камня. Он может быть привязан к игроку, используя предмет с ссылкой на этого игрока, вроде $(l:items/focus)$(item)Талисмана/$.", + "hexcasting.page.impetus.impetus_storedplayer.2": "Особенность этого $(l:greatwork/impetus)$(item)Инициатора/$ заключается в том, что привязанный игрок, а также небольшой регион вокруг него, всегда доступны для заклинательного круга. Как будто они стоят в пределах круга, независимо от того, насколько далеко они реально находятся.$(br2)Привязанный игрок отображается при просмотре $(l:greatwork/impetus)$(item)Инициатора Священника/$ через $(l:items/lens)$(item)Линзу Прозрения/$.", + "hexcasting.page.influences.1": "Абстракции ... странные, как минимум. В то время как большинство йот, кажется, представляют что-то о мире - абстракции представляют что-то более... необъятное и безформенное.$(br2)Например, одна из абстракций, которую я назвал $(l:casting/influences)$(thing)Ничто/$, кажется, не представляет ничего вообще. Оно создается, когда нет подходящего ответа на заданный вопрос. Например, при вызове $(l:patterns/basics#hexcasting:raycast)$(action)Столкновение: блок/$, обращенного в небо.", + "hexcasting.page.influences.2": "Кроме того, я обнаружил любопытные абстракции, которые я назвал $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Рассмотрение/$, $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Интроспекция/$, $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Ретроспекция/$ и $(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)Исчезновение/$. Вроде они обладают свойствами как рун, так и других абстракций, но ведут себя очень по-разному. Я могу использовать их, чтобы добавлять $(italic)сами руны/$ в качестве йот на мой стек, вместо их моментального исполнения. $(l:patterns/patterns_as_iotas)Мои заметки по этому вопросу здесь/$.", + "hexcasting.page.influences.3": "Наконец, кажется, существует бесконечное семейство абстракций, которые просто кажутся запутанным клубком $(#74b3f2)мыслей/$. Я назвал их $(l:casting/influences)$(action)Мусором/$, так как они совершенно бесполезны. Вроде бы они появляются на моем стеке в различных местах в ответ на $(l:casting/mishaps)$(thing)ошибки/$ и ощущаются мною как бессмысленная каша.", + "hexcasting.page.interop.1": "Искусство написания рун универсально. Если я обнаружу, что мой мир был $(italic)изменен/$ другими определенными силами, возможно, я смогу использовать руны в гармонии и сочетании с ними.", + "hexcasting.page.interop.2": "Я должен помнить, однако, что Природа, кажется, уделила меньше внимания при создании этих аспектов моего искусства; можно ожидать странное поведение и ошибки. Я уверен, что разработчик мода сделает все возможное, чтобы их исправить, но я должен помнить, что это для нее менее важное занятие.$(br2)Мне также может показаться, что есть явные нарушения баланса в затратах и эффектах взаимодействующих сил. В таком случае, предполагаю, мне придется быть ответственным и воздерживаться от их использования.", + "hexcasting.page.interop.3": "Наконец, если я обнаружу, что меня заинтересовали легенды и истории этого мира, я не думаю, что какие-либо заметки, составленные во время изучения этих взаимодействий, следует рассматривать как что-то более серьезное, чем легкие пустяки.", + "hexcasting.page.interop.gravity.1": "Я обнаружил действия для получения и установки гравитации сущности. Мне они кажутся интересными, хотя и немного вызывают тошноту.$(br2)Интересно, хотя $(l:patterns/great_spells/flight)$(action)Flight/$ является великим заклинанием и также манипулирует гравитацией, эти действия не таковы. Это меня смущает... Возможно, разработчик мода хотел, чтобы игроки развлекались, хотя бы на время.", + "hexcasting.page.interop.gravity.get": "Получите основное направление, в котором гравитация тянет данную сущность, как единичный вектор. Для большинства сущностей это будет вниз, <0, -1, 0>.", + "hexcasting.page.interop.gravity.set": "Установите основное направление, в котором гравитация тянет данную сущность. Указанный вектор будет приведен к ближайшей оси, согласно $(l:patterns/math#hexcasting:coerce_axial)$(action)Преображение Стороны/$. Стоимость около одного $(l:items/amethyst)$(item)Заряженного Аметиста/$.", + "hexcasting.page.interop.pehkui.1": "Я обнаружил способы изменения размера сущностей и запроса, насколько они больше или меньше обычного.", + "hexcasting.page.interop.pehkui.get": "Получает масштаб сущности как отношение к её нормальному размеру. Для большинства сущностей это будет 1.", + "hexcasting.page.interop.pehkui.set": "Устанавливает масштаб сущности, передавая пропорцию её нормального размера. Стоимость около 1 $(item)Осколка Аметиста/$.", + "hexcasting.page.itempicking.1": "Определенные заклинания, такие как $(l:patterns/spells/blockworks#hexcasting:place_block)$(action)Поставить Блок/$, будут потреблять предметы из моего инвентаря. Когда это происходит, заклинание сначала ищет предмет для использования, а затем берёт предметы из инвенторя.$(br2)Этот процесс называется \"выбор предмета\"", + "hexcasting.page.itempicking.2": "Более конкретно:$(li)Во-первых, заклинание будет искать первый подходящий предмет на моей горячей панели справа от $(l:items/staff)$(item)посоха/$, огибая её с правой стороны и начиная с первого слота, если $(l:items/staff)$(item)посох/$ находится в моей второстепенной руке.$(li)Во-вторых, заклинание извлечет этот предмет из как можно более $(italic)дальнего места в моем инвентаре/$, отдавая приоритет основному инвентарю, а не горячей панели.", + "hexcasting.page.itempicking.3": "Так я могу сам задать \"шаблонный\" предмет на своей горячей панели, чтобы указать заклинанию, что нужно использовать. Остальной инвентарь можно будет забить под завязку, чтобы у заклинания был запас.", + "hexcasting.page.jeweler_hammer.1": "После того, как я слишком много раз был небрежен с источниками $(#74b3f2)мысли/$, я разработал инструмент, чтобы обойти мою неуклюжесть.$(br2)Используя хрупкость кристаллизованной $(#74b3f2)мысли/$ в качестве основы для кирки, я могу создать $(l:items/jeweler_hammer)$(item)Ювелирный молоток/$. Он ведёт себя как $(item)Железная кирка/$, но не может сломать ничего, что занимает пространство целого блока.", + "hexcasting.page.jeweler_hammer.crafting.desc": "$(italic)*Не подходит для реальных ювелирных работ./$", + "hexcasting.page.lens.1": "$(#74b3f2)Мысли/$ могут оказывать странные эффекты на любой тип информации при определенных обстоятельствах. Покрытие стекла тонким слоем мысли может привести к ... просветляющим идеям.$(br2)Удерживая $(l:items/lens)$(item)Линзу прозрения/$ в руке, я увижу дополнительную информацию о некоторых блоках.", + "hexcasting.page.lens.2": "Например, глядя на разбросанную пыль $(item)красного камня/$, я смогу узреть силу её сигнала. Я подозреваю, что могу обнаружить и другие блоки с дополнительной информацией по мере продвижения моих исследований в этом искусстве.$(br2)Кроме того, удерживая линзу во время использования $(l:items/staff)$(item)Посоха/$, я уменьшу расстояние между точками, что позволит мне разместить больше рун на моей сетке.$(br2)Я также могу носить её на голове как странную разновидность монокля.", + "hexcasting.page.lens.crafting.desc": "$(italic)Вы видите больше, чем обычно./$", + "hexcasting.page.lists.abs": "Удаляет список с вершины стека, затем помещает количество элементов в списке на стек.", + "hexcasting.page.lists.add": "Удаляет список на вершине стека, затем добавляет все его элементы в конец списка идущего за ним.", + "hexcasting.page.lists.append": "Удаляет верхний элемент стека, затем добавляет его в конец списка находящегося вершине стека.", + "hexcasting.page.lists.construct": "Удаляет верхнюю йоту, а затем добавляет её в качестве первого элемента в список на вершине стека.", + "hexcasting.page.lists.deconstruct": "Удаляет первую йоту из списка на вершине стека, а затем перемещает эту йоту на верхушку стека.", + "hexcasting.page.lists.empty_list": "Помещает пустой список на вершину стека.", + "hexcasting.page.lists.index": "Удаляет число в верхней части стека, затем заменяет список на верхушке n-м элементом этого списка (где n - индекс, который вы передали). Заменяет список на $(l:casting/influences)$(thing)Ничто/$, если число выходит за границы.", + "hexcasting.page.lists.index_of": "Удаляет элемент на вершине стека, затем заменяет список на вершине на индекс этого элемента в списке (начиная с 0). Заменяет список на -1, если элемента в списке не нашлось.", + "hexcasting.page.lists.last_n_list": "Удаляет число со стека, затем удаляет $(italic)число/$ элементов со стека, затем добавляет список на вершину стека, состоящий из удалённых элементов.", + "hexcasting.page.lists.remove_from": "Удаляет число на верхушке стека, затем удаляет n-й элемент списка в верхней части стека (где n - число, которое вы передали).", + "hexcasting.page.lists.replace": "Удаляет верхнюю йоту и число со стека, затем заменяет n-й элемент списка на вершине стека на эту йоту (где n - число, которое вы передали).", + "hexcasting.page.lists.reverse": "Переворачивает список на верхушке стека.", + "hexcasting.page.lists.singleton": "Удаляет вершину стека, а затем помещает на стек список, содержащий только удалённую йоту.", + "hexcasting.page.lists.slice": "Удаляет два числа на вершине стека, затем возвращает подсписок списка на вершине стека между этими индексами, включая нижнюю границу и исключая верхнюю. Например, подсписок 0, 2 из [0, 1, 2, 3, 4] будет [0, 1].", + "hexcasting.page.lists.splat": "Удаляет список с верхушки стека, а затем перемещает его содержимое на стек.", + "hexcasting.page.lists.unappend": "Перемещает элемент из конца списка на верхушку стека.", + "hexcasting.page.logic.and": "Возвращает Истину, если оба аргумента равны Истине; в противном случае возвращает Ложь.", + "hexcasting.page.logic.bool_coerce": "Преобразует аргумент в логическое значение. Число $(thing)0/$, $(l:casting/influences)$(thing)Ничто/$ и пустой список становятся Ложью; всё остальное становится Истиной.", + "hexcasting.page.logic.bool_to_number": "Преобразует логическое значение в число; Истина становится $(thing)1/$, а Ложь становится $(thing)0/$.", + "hexcasting.page.logic.equals": "Если первый аргумент равен второму (с небольшим допуском), возвращает Истину. В противном случае возвращает Ложь.", + "hexcasting.page.logic.greater": "Если первый аргумент больше второго, возвращает Истину. В противном случае возвращает Ложь.", + "hexcasting.page.logic.greater_eq": "Если первый аргумент больше или равен второму, возвращает Истину. В противном случае возвращает Ложь.", + "hexcasting.page.logic.if": "Если первый аргумент равен Истине, сохраняет второй и отбрасывает третий; в противном случае отбрасывает второй и сохраняет третий.", + "hexcasting.page.logic.less": "Если первый аргумент меньше второго, возвращает Истину. В противном случае возвращает Ложь.", + "hexcasting.page.logic.less_eq": "Если первый аргумент меньше или равен второму, возвращает Истину. В противном случае возвращает Ложь.", + "hexcasting.page.logic.not": "Если аргумент равен Истине, вернёт Ложь; если он равен Лжи, вернёт Истину.", + "hexcasting.page.logic.not_equals": "Если первый аргумент не равен второму (с учетом небольшого допуска), возвращает Истину. В противном случае возвращает Ложь.", + "hexcasting.page.logic.or": "Возвращает Истину, если хотя бы один из аргументов равен Истине; в противном случае возвращает Ложь.", + "hexcasting.page.logic.xor": "Возвращает Истину, если ровно один из аргументов равен Истине; в противном случае возвращает Ложь.", + "hexcasting.page.lore.cardamom1.1": "$(italic)Письмо Кардамом Стайлз её Отцу, #1/$$(br2)Дорогой папа,$(br)каждый день я нахожу новые причины поблагодарить тебя за отправление меня в Великую Библиотеку. Невероятно то, сколько нового я узнаю! Мне кажется, что нет таких слов, чтобы описать то, как я себя чувствую... здесь прекрасно!", + "hexcasting.page.lore.cardamom1.2": "Я пишу это, находясь в основном куполе. Он поддерживается Рунной Службой; у них есть некоторый механизм на верху, который захватывает мимолетную энергию мысли, которая вылетает с учебных мест трудящихся студентов, как я понимаю. Моя подруга Аманита изучает эту тему, и она очень любит объяснять мне всё что может, но честно признаться - я сама не до конца понимаю что она говорит.", + "hexcasting.page.lore.cardamom1.3": "Как я понимаю, наши процессы мышления - нематериальные механизмы, с помощью которых я двигаю своим пером, а ты читаешь это письмо - не совершенно эффективны. Небольшое количество этой энергии высвобождается в окружающую среду, подобно тому, как ось повозки нагревается на ощупь после того, как она крутится некоторое время. Эта лишняя энергия называется \"Мыслью\". Лишние Мысли одного человека ничтожны, но сотни размышляющих людей в главном куполе имеют своего рода накопительный эффект, и в сочетании с каким-то изобретательным механизмом, она может быть превращена в своего рода фиолетовый кристалл.", + "hexcasting.page.lore.cardamom1.4": "Но достаточно об учебе. Сегодня я вернулась с моей первой экспедиции с Геологическим корпусом! Прошу прощения, что не отправила письмо перед отъездом; день подкрался ко мне незаметно. Мы отправились в трещину на востоке от Гранда и провели ночь в походе под скалой и почвой. Конечно, мы держались в хорошо освещенных и обхоженных участках пещеры, и, честно говоря, скорее всего, там было безопаснее, чем на поверхности ночью, но как же мне было страшно!", + "hexcasting.page.lore.cardamom1.5": "К счастью, ночь прошла без происшествий, и мы продолжили двигаться глубже в пещеру для изучения местных жил руды. Мы искали следы жил фиолетового кристалла по имени \"аметист\", который, как говорят, встречается в небольших количествах глубоко в скале. К сожалению, мы ничего не нашли и вернулись на освещенную солнцем поверхность с пустыми руками.", + "hexcasting.page.lore.cardamom1.6": "Думая об этом сейчас, я нахожу описание этого \"аметиста\" очень схожим с теми кристаллами среды, о которых говорит Аманита. Представь, если бы эти кусочки мысли возникали естественным образом под землей! Я не могу представить, почему это могло бы произойти, однако...", + "hexcasting.page.lore.cardamom1.7": "Как студент, у меня есть право отправить одно письмо по почте Акаши каждые три месяца бесплатно. К сожалению, ты знаешь, насколько пусты мои кошельки ... поэтому, боюсь, что это предложение - единственный способ связаться с тобой. Конечно, я буду невероятно благодарна, если ты сможешь наскребсти денежек, чтобы отправить ответное письмо, но, кажется, наши переписки могут быть ограничены. Мне жаль, что нам придется быть оторванными друг от друга, но навыки, которые я здесь приобрету, более чем окупят это. Представьте, я буду первым членом нашей семьи, который станет кем-то, кроме фермера!", + "hexcasting.page.lore.cardamom1.8": "Так что, предполагаю, я напишу снова через три месяца.$(br2)Твоя,$(br)-- Кардамом Стайлз", + "hexcasting.page.lore.cardamom2.1": "$(italic)Письмо Кардамом Стайлз её Отцу, #2/$$(br2)Дорогой Папа,$(br)... Божечки, как же тяжко будет описать всё произошедшее за три месяца в таком коротком письме. Такая сложная задача встала передо мной из-за этого чуда, что я получила абсолютно бесплатно! Горе мне.", + "hexcasting.page.lore.cardamom2.2": "Моё обучение в Геологическом Корпусе продвигалось без происшествий. Мы сходили на ещё несколько экспедиций, глубже в землю, где серый камень переходит в твёрдый, слоистый сланец. Он обазует такую мерзкую, удушающую пыль под ногами... Враждебность, вечно скрытая под нашими ногами, поражает, и это даже не говоря о тварях из тьмы. (Я успела повстречать одну или две таких, но я прекрасно понимаю, как сильно ты переживаешь обо мне, так что не стану описывать эти стычки.)", + "hexcasting.page.lore.cardamom2.3": "Мы всё же смогли найти немного этого аметиста. На одной из наших экспедиций обнаружилась небольшая жила с несколькими кристаллами. Нам строго-настрого запретили забирать их себе и указали передать их в Корпус немедленно. Я нахожу эту ситуацию довольно глупой; они ведут себя так, словно это дело неимеворной важности и секретности, и при этом отправляют туда группу из десятков студентов, каждый из которых только-только добил шестой месяц в Великой Библиотеке, и которым нужно было выкопать чуть меньше десяти драм этой штуки двенадцатью разведовательными кирками...", + "hexcasting.page.lore.cardamom2.4": "И я не могу понять, зачем. Библиотекарь указал мне на энциклопедию драгоценных камней, и исходя из неё, аметист почти не обладает полезными свойствами; разве что его используют для всяких линз и стекла.$(br2)Но если порассуждать, то эти аметисты и мысли, на которые они так похожи, являются одним и тем же, как я уже писала в предыдущем письме.", + "hexcasting.page.lore.cardamom2.5": "Если это правда, то вся секретность, не говоря уже об избегающем вопросов начальнике, может исходить из того, что это и есть главная часть исследования Великой Библиотеки, нежелающей передать информацию в враждебные фракции.$(br2)Однако, эта теория меня не устраивает. Аметисты, с которыми я работала в пещере, и кристаллы мысли, которые мне показывала Аманита схожи, но не идентичны. Я бы хотела их рассмотреть бок о бок для убеждения, но мысли имеют характерное жужжание и вибрацию, которую чувствуешь под кончиками пальцев, и которой у аметистов не было.", + "hexcasting.page.lore.cardamom2.6": "Вполне возможно, что я не почувствовала всё это в аметисте из-за стресса нахождения под землёй-- мои руки тряслись во время единственного раза, когда я их коснулась, и ощущение было очень лёгким --но оно не показалось мне таким же. Свет отражался слегка по-другому.$(br2)Если мне когда-нибудь удастся заполучить в свои руки аметист вне пещеры, я попрошу Аманиту исполнить заклинание с ним. С каждой нашей встречей у неё появляется новый фокус.", + "hexcasting.page.lore.cardamom2.7": "На прошлой неделе она смогла удержать меня в воздухе без какой-либо опоры! Это очень странное ощущение, всё моё тело покалывало и ощущалось легче воздуха, хотя одежда весила столько же... Я лишь рада, что она перетащила меня над мою кровать прежде, чем заклинание иссякло.$(br2)Твоя,$(br)-- Кардамом Стайлз", + "hexcasting.page.lore.cardamom3.1": "$(italic)Письмо Кардамом Стайлз её Отцу, #3, часть 1/2/$$(br2)Дорогой Папа,$(br)Две очень странные вещи успели произойти с момента написания прошлого письма.$(br2)Во-первых, профессор, отвечающий за начальные группы Рунного Корпуса, пропал. Никто не знает, куда он делся. Его офис и жилое помещенеи были заперты, но находились в стандартном беспорядке.", + "hexcasting.page.lore.cardamom3.10": "Будто бы каждый мой вдох вызывал дружелюбный знак в моей голове, обещавший светлое будущее, при этом ведущий меня прямиком вниз с обрыва. Я отбросила эти мысли и погрузилась в раскопки, что помогло отогнать странные идеи.$(br2)Однако я смогла стащить осколок кристалла в свою сумку.$(br2)Мы потратили почти весь день на раскопки, добыв почти все кристаллы к моменту, когда часы руководителя указали на закат.", + "hexcasting.page.lore.cardamom3.11": "Когда мы уходили, я не могла не обратить внимание, как на этих тёмных, перечёркнутых поверхностях, которые мы оставили нетронутыми, появились почти что незаметные зачатки новых кристаллов, будто бы они каким-то образом отрастали вновь. Всё, что я изучила о геологии кристаллов, говорит о том, что их образование занимает тысячи лет, но здесь появились наросты спустя лишь день. Похоже, что запрет руководителя на вскапывание этой породы имел смысл.", + "hexcasting.page.lore.cardamom3.12": "Наше путешествие на поверхность было без передряг, и мы вернулись в палатки к заходу солнца-- Извини меня, у меня почти закончилось место на бумаге. Я не могу уместить всё на одном письме Акаши ... Эта история стоит покупки ещё одного письма. Я отправлю их вместе, так что они придут одновременно.$(br2)Твоя,$(br)-- Кардамом Стайлз", + "hexcasting.page.lore.cardamom3.2": "Что ещё более странно, любые попытки студентов Библиотеки обратиться к административным участкам гнарлавской бюрократии были быстро отвергнуты. Даже другие профессора не изъявляли желания говорить о нём.$(br2)Как можешь понимать, Аманита очень волнуется по этому поводу. Любые замены, которые назначит Библиотека, не будут обладать тактом или способностями обращаться с новичками.", + "hexcasting.page.lore.cardamom3.3": "Но, на удивление, это не самая странная вещь, о которой я хочу тебе рассказать. Самая страшная вещь, которую, как я надеюсь, мне когда-либо предстояло испытать, случилась на очередной вылазке с Геологическим Корпусом. В этот раз, мы отправились в поход недалеко от деревни.", + "hexcasting.page.lore.cardamom3.4": "Обычно, когда мы отправляемся в такие вылазки, мы проходим через длинный процесс договора с мэром или старшим деревни, чтобы убедиться, что мы имеем разрешение и понимаем рамки доступной для исследования территории. Но на этой экспедиции, этого общения почти не было; нас уведомил о месте посещения начальник Рунного Корпуса за два дня перед отправлением.", + "hexcasting.page.lore.cardamom3.5": "Мы разбили лагерь недалеко от деревни, в густом лесу, хотя близлежащие полянки были бы гораздо приятнее. Мы почти не видели деревню с места нашего лагеря. Когда я улеглась вечером дня нашего прибытия, меня удивила непривычная тишина. Даже если мы и не могли видеть деревню, звук от неё должен был доходить. Но за всё время, проведённое на поверхности, почти никаких звуков мы не заметили.", + "hexcasting.page.lore.cardamom3.6": "Всё что я уловила - редкие звуки работы: звон молотов, бьющих о наковальни, вспахивания земли мотыгами. Я ни разу не услашала речь.$(br2)На следующее утро мы подготовили наши фонари и отправились в землю.", + "hexcasting.page.lore.cardamom3.7": "Нам не сказали, ради чего конкретно мы сюда отправились, но один из студентов где-то услышал, что мы ищем больше аметистов, что мне показалось вполне разумным. Я натренировала свои глаза, чтобы зацепиться за слабое фиолетовое сияние, но как только серый камень начал перетекать в грубый сланец, предо мной открылась невероятная картинка.$(br2)Это была целая камера, сотканная из аметиста, почти в десять раз больше меня самой. Её внутренности светились фиолетовыми искрами и переливались тёплым блеском, вся поверхность была покрыта зазубренными кристаллами. Там было больше аметиста, чем выкопала вся наша группа с момента, как я поступила в Библиотеку.", + "hexcasting.page.lore.cardamom3.8": "Нам раздали перчатки, и сказали приступать к раскопкам. Один из наших руководителей имел при себе необычную лавандовую коробку, которую я уже видела у некоторых вышестоящих в Библиотеке; её используют в качестве хранилища. Я и другие студенты с потом на лбах приступили к раскалыванию стеклянных кристаллов со стен пещеры, складывая их в коробку. Под внешними слоями хрупкого кристалла находились два типа более твёрдой породы. Одна из них на вид состояла из такого же рыхлого кристалла, а вторая ... Мне сложно подобрать подходящее слово.", + "hexcasting.page.lore.cardamom3.9": "Я стесняюсь говорить \"важная,\" но это лучшее, что приходит в голову. В ней была какая-то ... монументальность, словно тёмный, утопающий в её поверхности Х имел скрытый смысл. Видимо, связанный с строгим запретом на прикосновение к нему. Иногда криво поставленная кирка раскалывала эту породу, и тогда студенту очень сильно прилетало от руководителей. И хотя физический труд и занимал всё моё внимание, я не могла не заметить как ... нереально я себя ощутила. Это была странная мешанина из чувств: Я ощущала свой разум очищенным, но при этом ловила себя на мысли, что если перестану отслеживать своё состояние - никогда не смогу прийти в себя.", + "hexcasting.page.lore.cardamom4.1": "$(italic)Письмо Кардамом Стайлз её Отцу, #3, часть 2/2/$$(br2)Дорогой Папа,$(br)Как я уже говорила, у меня закончилась бумага для моего письма, так что здесь описано продолжение моей истории. Мы вернулись обратно в лагерь с закатом солнца. И эта ночь стала самым ужасным событием всей этой вылазки.", + "hexcasting.page.lore.cardamom4.10": "Я понимаю, как сложна твоя ситуация с деньгами, и как дорого отсылать письма в Библиотеку, но я прошу тебя, пожалуйста, отправь мне свой совет. Я очень волнуюсь, и твои слова очень бы помогли мне.$(br2)Твоя,$(br)-- Кардамом Стайлз", + "hexcasting.page.lore.cardamom4.2": "Я проснулась ночью по нужде. Луна была скрыта за облаками, и, признаюсь честно, я потерялась в тропинках леса и не смогла найти дорогу обратно. Опасаясь монстров ночи, я решила отправитьсяв деревню, чтобы найти там ночлег. Там, хотя бы, было бы безопасно.", + "hexcasting.page.lore.cardamom4.3": "Отыскать деревню было не сложно, хотя она и не издавала звуков. Даже в такую позднюю ночь я ожидала, что гостиница если и не будет греметь, то будет издавать хоть какие-то звуки. Но, подглядев одним глазком в дверь гостинницы, я никого не увидела.$(br2)Я постучала в дверь одного из жилых домов, не получив ответа. Следующие два дома тоже были пусты.", + "hexcasting.page.lore.cardamom4.4": "Мой пульс начал учащаться, и я решила войти в следующий дом. Я подумала, что люди внутри войдут в моё положение. Как минимум, я хотела услышать чужой голос для успокоения, даже если мне бы не позволили остаться на ночь.$(br2)Дом был очень мал, интерьер составляли лишь стол картографа и кровать. Я увидела кого-то в кровати, и попыталась себя успокоить, мол, все в деревне просто крепко спят. Я начала выходить из дома.", + "hexcasting.page.lore.cardamom4.5": "Но тут облака сдвинулись, и лунный свет упал на на владельца кровати.$(br2)Я закричала, и его глаза открылись. Оно было ... определённо, отвратительно далеко от человека. Будто бы какая-то жуткая деградация человека, его лоб был слишком огромен, тело коренастое и твёрдое. По крайне мере я думаю, это его можно назвать \"оно\"; существо передо мной явно было не так сообразительно, как человек, несмотря на внешнюю схожесть.", + "hexcasting.page.lore.cardamom4.6": "Его глаза пялились на меня-- ох, эти глаза были отвратны, пустой и безрассудный взгляд, прямо как у барана! Оно открыло свой рот, но лишь жалкая попытка речи вышла из него - содрагающийся, гортанный стон.", + "hexcasting.page.lore.cardamom4.7": "Я убежала. В свету раскрытой луны я уловила тени других обитателей в окнах, и все они были искажены и упрощены как и первая $(italic)штука/$, которую я видела. Я бежала в тьму леса, подальше от этих жутких, жутких животных глаз на этих уродливых лицах.$(br2)Лагерь отыскать теперь было проще, в свете луны. Никто не заметил моего длительного отсутствия, и слава богу. Я заползла обратно в свой спальный мешок и попыталась сделать всё что было в моих силах, чтобы забыть об этой ночи.", + "hexcasting.page.lore.cardamom4.8": "Как ты можешь понять из этого письма, я не справилась. Это искажённое видение всё ещё посещает меня в кошмарах. Я трясусь от мысли, что раньше они могли быть людьми.$(br2)Когда мы вернулись в Библиотеку, я показала украденный осколок кристалла Аманите. Она подтвердила мои догадки: это точно кристалл мысли. Что же гигантская жеода, забитая такими кристаллами, делала под землёй - она не знала.", + "hexcasting.page.lore.cardamom4.9": "Но она упомянула кое-что интересное: похоже, мысль можно использовать как и реальный аметист для тех стекляшек, что я упоминала раньше. Мысль и аметисты кристаллизуются почти идентично, и это никак не связано с магическими свойствами мысли - по крайней мере Аманита так сказала.$(br2)Я решила не говорить ей о деревне чудовищ.", + "hexcasting.page.lore.cardamom5.1": "$(italic)Письмо Кардамом Стайлз её Отцу, #4/$$(br2)Аманита пропала.$(br2)Я не знаю, куда она делась, Папа. В последний раз я видела её на ужине, и она как раз говорила с кем-то о пропажах, а потом--", + "hexcasting.page.lore.cardamom5.2": "потом-- потом она тоже исчезла. И никто о ней не говорит, и я так напугана, Папа, они все всё знают? Наверное уже у каждого есть друг, который просто $(italic)пропал/$, провалился сквозь землю, вникуда.$(br2)Куда они все $(italic)делись/$?", + "hexcasting.page.lore.cardamom5.3": "И они продолжают закрывать всё подряд-- мы не ходили в походы с Геологическим Корпусом неделями, и все аппараты, собирающие мысль в главном куполе, пропали, и Аптекарьский Корпус не открывался месяцами... будто бы термиты пожирают Библиотеку изнутри, оставляя пустую оболочку.$(br2)Мне даже кажется, что они стали проверять наши письма...", + "hexcasting.page.lore.cardamom5.4": "Я очень сильно боялась писать это письмо, и я не могу осмелиться сказать людям сама, но если никто здесь не сможет передать слово я молюсь и надеюсь что ты сможешь всем рассказать... тщетно надеяться, что это распространится из такого захолустья, как Бракенфоллс, но пожалуйста, пожалуйста, постарайся. Помни их, Папа... Аманита Либера, Жасмин Вард, Теодор Ча... пожалуйста, помни их... и пожалуйста, прости мою трусость, что я скидываю на тебя такую ответственность.", + "hexcasting.page.lore.cardamom5.5": "я больше не могу писать, мои руки так сильно трясутся, пожалуйста, спасите нас.", + "hexcasting.page.lore.experiment1.1": "$(italic)Я смог найти только эти пять записей./$$(br2)Детонация #26$(li)Локация: Север Плотников$(li)Население: 174$(li)Узлов Сформировано: 3$(li)Расстояние Узлов от Эпицентра: 55-80м вертикально, 85-156м горизонтально$(li)Мысли Сгенерировано: 1320 един*θ/мин", + "hexcasting.page.lore.experiment1.2": "Детонация #27$(li)Локация: Бракенфоллс$(li)Население: 79$(li)Узлов Сформировано: 1$(li)Расстояние Узлов от Эпицентра: 95м вертикально, 67м горизонтально$(li)Мысли Сгенерировано: 412 един*θ/мин", + "hexcasting.page.lore.experiment1.3": "Детонация #28$(li)Локация: Грейстон$(li)Население: прим. 1000$(li)Узлов Сформировано: 18$(li)Расстояние Узлов от Эпицентра: 47-110м вертикально, 59-289м горизонтально$(li)Мысли Сгенерировано: 8478 един*θ/мин", + "hexcasting.page.lore.experiment1.4": "Детонация #29$(li)Локация: Безымянная; деревня в двух днях на запад от Грейстона$(li)Население: 35$(li)Узлов Сформировано: 0$(li)Расстояние Узлов от Эпицентра: Н/Д$(li)Мысли Сгенерировано: Н/Д$(br2)Заметка: воздействие на обитателей всё ещё такое же", + "hexcasting.page.lore.experiment1.5": "Детонация #30$(li)Локация: Боилинг Брук$(li)Население: 231$(li)Узлов Сформировано: 4$(li)Расстояние Узлов от Эпицентра: 61-89м вертикально, 78-191м горизонтально$(li)Мысли Сгенерировано: 1862 един*θ/мин", + "hexcasting.page.lore.experiment1.6": "Заключение: примерно 60 требуется для одного узла. При нехватке материал будет поглощён, но его не хватит для создания узла. Связи между входными данными и разбросом/глубиной не обнаружено.$(br2)Влияние на обитателей всё так же гораздо более серьёзное, чем при тестировании на единственной цели, особенно заметны различия на физическом уровне.", + "hexcasting.page.lore.experiment2.1": "$(italic)Эти документы очень сильно отредактированы. Я скопировал читабельную часть текста сюда./$$(br2)Субъект #1 \"А.Э.\"$(br)Прекратил сопротивляться сразу после окончания процедуры. Выражение лица и конечности обмякли, но субъект может стоять самостоятельно. Если оставить без внимания, рассеянно изображает действия, которые обычно выполнялись в предыдущей профессии (уход за землей).", + "hexcasting.page.lore.experiment2.2": "Пульс повышенный сразу после процедуры, но это неубедительно из-за состояния страха непосредственно перед процедурой. Итоговый пучок сгенерировал 35 един*θ/мин.$(br)...$(br)Субъект #4 \"П.И.\"$(br)Проведены психологические тестирования П.И. Субъект владеет постоянством объекта, пространственным восприятием, основами численного мышления. Трудности в освоении новых задач. $(br2) ...", + "hexcasting.page.lore.experiment2.3": "Субъект #7 \"Т.Ч.\"$(br)Результаты спустя несколько часов после процедуры совпадают с другими субъектами: способность стоять, исполнять простые задачи... $(br2)Субъект #11 \"Р.С.\"$(br)Усыплён перед проведением процедуры...$(br2) ...", + "hexcasting.page.lore.experiment2.4": "Субъект #23 \"А.Л.\"$(br)Способность говорить сохранилась в лучшей степени относительно других субъектов; сокращение до обрывков фраз, после единственное слово \"карточка\" спустя несколько часов.$(br2)Для дальнейшего тестирования: как процедура влияет на бывших Заклинателей в противовес не-Заклинателям?$(br2) ...", + "hexcasting.page.lore.inventory.1": "Камера 39, Журнал восстановления #72, Центр Задержания Бета$(br2)Имя Заключённого: Рафаэль Барр$(br)Преступление: Знание о Проекте Wooleye$(br)Причина Вакансии Камеры: Смерть$(br)Дополнительная информация: Следующий текст был начерчен на поверхности стены.", + "hexcasting.page.lore.inventory.10": "со всей этой мыслью вокруг я много раз пытался сотворить хекс чтобы выбраться или хотя бы погасить мои страдания но руны что маршируют сквозь поля моего разума хихикают и растворяются, когда я пытаюсь дотянуться до них. мне кажется, я помню, как меня заставили забыть о них, я помню грандиозные структуры знаний, взаимосвязи которых отрывали по кусочкам и откалывали, пока они распадались под весом навязанного невежества, но мне так больно пытаться вспомнить забывать что ты помнил и думал что знал", + "hexcasting.page.lore.inventory.11": "может быть я в самой самой самой самой поздей стадии зависимости от заклинания, я слышал о рунах, рвущих пространство между глазами и веками, слышал о фиолетовых краях своих нервов. есть ли смысл пытаться заставить себя верить что меня не пытают. я заслужил это. если я никогда не смогу ни с кем это обсудить, то какой смысл пытаться", + "hexcasting.page.lore.inventory.12": "они собираются убить всех во всём мире да библиотека хочет есть так же как и я ... когда я в посследнний раз елл?$(br2)все остальные должны питаться но они не смогут если все фермеры опустеют и все знания о фермерстве останутся под землёй или может быть хоть кто-то Поймёт и расплавит их мерзкие улыбки в воске", + "hexcasting.page.lore.inventory.13": "может кто-то из них проснётся однажды и задумается о вещах что мы им оставили и почему под землёй миллионы миль туннелей без кого-либо способного их добыть$(br2)я вижу как они читают это . они ... зайдут слишком далеко, чтобы обратить внимание", + "hexcasting.page.lore.inventory.2": "Я вижу шестигранники, когда закрываю глаза.$(br2)Руны, они пролезают между веко и глазом, в мой разум, в мои сны. Я выхожу из бреда и вхожу вновь, болтаясь, словно кристалл на ниточке, иногда ловя на себе свет, а иногда поглащаясь им полностью.", + "hexcasting.page.lore.inventory.3": "Сегодня я в более ясном уме. Вроде бы. Я уже не вижу разницы. Я даже не могу сказать, что устал; в какой-то момент вечная компания усталости покинула меня, когда нечто иное пришло за моими глазами. Я не могу чувствовать усталость. Но она есть.$(br2)Мои кости хрупки. Мои связки грубы и резки.", + "hexcasting.page.lore.inventory.4": "Иногда причина моего бытия здесь возвращается ко мне. Я вспоминаю, что слишком много болтал о чём-то, что знал ... Я помню очень яркую комнату, где мне что-то объясняли. Я помню, как мои мысли застыли в стекле, разбились, расплавились и кристаллизировались вновь и вновь и вновь и вновь и вновь с целью заставить меня забыть хуже этого держать меня в живых, убив меня, моё сознание, сделать йоту МЕНЯ бессмысленной, чтобы осталось лишь тело без наблюдателя, но я обманул их я как-то умудрился", + "hexcasting.page.lore.inventory.5": "они думали что сломали меня сильнее чем позволяет запудривание но я был достаточно осознан и сейчас достаточно осознан чтобы чувствовать БОЛЬ$(br2)Я не сплю, но когда я просыпаюсь я не могу стереть с глаз корку потому что это сорвёт мою кожу и я не хочу видеть фиолетовый отблеск внутри", + "hexcasting.page.lore.inventory.6": "Они меня не убивают, потому что мой муж хранит мой талисман, и узнает, если я умру. Но он не заклинатель и не сможет найти меня с его посредственными способностями. у меня нет влияния$(br2)мне больно думать. буквально. размышления так затратны что лишние мысли оседают полосами миллионов микрокристаллов", + "hexcasting.page.lore.inventory.7": "я помню как врачи говорили в светлой комнате, заставляли меня вдохнуть что-то вроде песка но острее и это было так больно. Сначала физическая боль слизистой в попытке поглотить стеклянные осколки, но потом они просунули свои ногти в мою реакцию на стимулы и смогли сделать это одним словом$(br2)я помню лагерь снаружи и как корпуса ставили свои круги вокруг деревни и как земля под ногами задрожала", + "hexcasting.page.lore.inventory.8": "выпал из времени. Иногда мне кажется, что я вижу будущее, потому что видения выглядят правдоподобно но не могут случиться сейчас ведь я знаю я буду здесь навечно потому что мужчина из белой комнаты так сказал. я вижу себя опрокинутым и мой череп крошится с треском на части и внутренности вылетят копьями не-аметистов капая кровью протыкая морщинистый трёхфутовый кусок жира и мяса мечтающий стать бабочкой", + "hexcasting.page.lore.inventory.9": "я надеюсь мои студенты в порядке. почему я так думаю? какая трата. они сказали мне что я трата, они не могли быть довольны уничтожением меня они обязаны были заставить меня чувствовать что я это заслужил. Без палок и камней для ломания моих костей, они ранили меня лишь словами. если они отпустят меня никто мне не поверит потому что мое тело можно полностью осмотреть я выгляжу как очередной зависимый от заклинаний$(br2)Но вместо этого они заперли меня, и я не знаю, можно ли считать это милосердием", + "hexcasting.page.make_battery.1": "Наполняет бутыль $(#74b3f2)мыслью/$ для получения $(l:items/phials)$(item)Сосуда Мысли/$.", + "hexcasting.page.make_battery.2": "Подобно заклинаниям для $(l:patterns/spells/hexcasting)$(action)Создания Магических Предметов/$, мне нужно держать $(item)Стеклянную Бутылку/$ в другой руке и предоставить заклинанию выброшенную охапку $(l:items/amethyst)$(item)аметистов/$. Посмотрите $(l:items/phials)эту страницу/$ для получения дополнительной информации.$(br2)Стоит около одного $(l:items/amethyst)$(item)Заряженного Аметиста/$.", + "hexcasting.page.math.abs.1": "Вычислить абсолютное значение или длину.", + "hexcasting.page.math.abs.2": "Заменяет число его абсолютным значением или вектор его длиной.", + "hexcasting.page.math.add.1": "Сложение.", + "hexcasting.page.math.add.2": "Как следует:$(li)С двумя числами в верхней части стека - объединяет их в их сумму.$(li)С числом и вектором - удаляет число со стека и добавляет его к каждому элементу вектора.$(li)С двумя векторами - объединяет их, складывая соответствующие компоненты в новый вектор (т.е. (1, 2, 3) + (0, 4, -1) = (1, 6, 2)).", + "hexcasting.page.math.ceil": "\"Округляет вверх\" число, округляя его до следующего целого значения, если присутствует дробная часть. Если передаётся вектор, вместо этого округляет вверх каждую его компоненту.", + "hexcasting.page.math.coerce_axial": "Для вектора - приводит его к ближайшему осевому направлению, единичному вектору. Для числа - возвращает знак числа; 1, если положительное, -1, если отрицательное. В обоих случаях ноль не затрагивается.", + "hexcasting.page.math.construct_vec": "Объединяет три числа верхушки стека в вектор.", + "hexcasting.page.math.deconstruct_vec": "Разбивает вектор на его компоненты X, Y и Z (снизу вверх).", + "hexcasting.page.math.div.1": "Деление или векторное произведение.", + "hexcasting.page.math.div.2": "Как следует:$(li)С двумя числами - объединяет их в частное.$(li)С числом и вектором - удаляет число и делит на него каждый элемент вектора.$(li)С двумя векторами - объединяет их в их $(l:https://ru.wikipedia.org/wiki/Векторное_произведение)векторное произведение/$.$(br2)В первом и втором случае, вторая с верху йота делится на верхнюю йоту.$(p)ПРЕДУПРЕЖДЕНИЕ: Никогда не делите на ноль!", + "hexcasting.page.math.floor": "\"Округляет\" число, отбрасывая дробную часть и оставляя целочисленное значение. Если передается вектор, вместо этого округляет каждую его компоненту.", + "hexcasting.page.math.modulo": "Берет остаток от деления двух чисел. Это число, $(italics)оставшееся/$ после деления - например, 5 %% 2 равно 1, а 5 %% 3 равно 2. При применении к векторам выполняет указанную операцию поэлементно.", + "hexcasting.page.math.mul.1": "Умножение или скалярное произведение.", + "hexcasting.page.math.mul.2": "Как следует:$(li)С двумя числами - объединяет их в произведение.$(li)С числом и вектором - удаляет число со стека и умножает каждую компоненту вектора на это число.$(li)С двумя векторами - объединяет их в их скалярное произведение/$.", + "hexcasting.page.math.numvec": "Многие математические операции выполняются как над числами, так и над векторами. Такие аргументы записываются как \"num|vec\".", + "hexcasting.page.math.pow.1": "Выполнить возведение в степень или векторную проекцию.", + "hexcasting.page.math.pow.2": "С двумя числами - объединяет их, возводя первое в степень второго.$(li)С числом и вектором - удаляет число и возводит каждую компоненту вектора в степень числа.$(li)С двумя векторами - объединяет их в $(l:https://en.wikipedia.org/wiki/Vector_projection)векторную проекцию/$ верхней части стека на вторую сверху.$(br2)В первом и втором случаях первый аргумент или его компоненты являются основанием, а второй аргумент или его компоненты - показателем степени.", + "hexcasting.page.math.random": "Создает случайное число между 0 и 1.", + "hexcasting.page.math.sub.1": "Вычитание.", + "hexcasting.page.math.sub.2": "Как следует:$(li)С двумя числами в верхней части стека - вычисляет их разность.$(li)С числом и вектором - удаляет число со стека и вычитает его из каждого элемента вектора.$(li)С двумя векторами - вычисляет их, вычитая каждую компоненту.$(br2)Во всех случаях верхушка стека или её компоненты вычитаются $(italic)из/$ второго сверху элемента.", + "hexcasting.page.media.1": "$(#74b3f2)Мысли/$ - это форма психической энергии, внешняя по отношению к разуму. Все живые существа, думая о чем-либо, вырабатывают незначительное количество $(#74b3f2)мысли/$; после того, как процесс размышления окончен, мысли попадают в окружающую среду.$(br2)Исскуство Рунных Заклинаний заключается в манипуляции $(#74b3f2)мыслями/$, чтобы они выполняли ваши требования.", + "hexcasting.page.media.2": "$(#74b3f2)Мысли/$ могут оказывать влияние на другие мысли-- силой и типом влияния можно манипулировать, используя $(#74b3f2)мысли/$ в виде рун.$(p)Знатоки искусства использовали концентрированный сгусток $(#74b3f2)мысли/$ на конце палочки: размахивая им в воздухе в определенных конфигурациях, они могли манипулировать достаточным количеством $(#74b3f2)мысли/$ с достаточной точностью, чтобы влиять на сам мир в форме Рун.", + "hexcasting.page.media.3": "К сожалению, даже полностью разумное существо (предположительно, такое, как я) может генерировать лишь незначительное количество $(#74b3f2)мысли/$. Было бы совершенно непрактично пытаться использовать свои собственные силы для использования Рун.$(br2)Но легенда гласит, что существуют подземные отложения, где $(#74b3f2)мысли/$ медленно накапливаются, превращаясь в кристаллические формы.$(p)Если бы я только мог найти что-нибудь из этого...", + "hexcasting.page.meta.eval.1": "Убирает руну или список рун со стека, затем исполняет их, как если бы я сам их начертил с помощью моего $(l:items/staff)$(item)Посоха/$ (пока не встретится $(l:patterns/meta#hexcasting:halt)$(action)Гамбит Харона/$). Если йота была выведена с помощью $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Рассмотрения/$ или $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Интроспекции/$, она будет перемещена в стек. В противном случае не-руны будут провалены.", + "hexcasting.page.meta.eval.2": "Это может быть $(italic)очень/$ мощным инструментом в сочетании с $(l:items/focus)$(item)Талисманами/$.$(br2)Это также делает бюрократию Природы \"Тьюринг-Полной\" системой, согласно одному эзотерическому свитку, который я нашел.$(br2)Однако, кажется, есть ограничение на количество раз, которое $(#b38ef3)Заговор/$ может сам себя использовать - Природа неблагосклонно относится к беглым заклинаниям!$(br2)Кроме того, с энергией рун, происходящей без моего управления, любой провал приведет к тому, что оставшиеся руны станут слишком нестабильными и немедленно развалятся.", + "hexcasting.page.meta.eval/cc.1": "Исполняют руну или список рун из стека точно так же, как Гамбит Гермеса, за исключением того, что в стек предварительно помещается уникальная йота \"Jump\".", + "hexcasting.page.meta.eval/cc.2": "Когда \"Jump\"-йота выполняется, она пропускает остальные паттерны и переходит непосредственно к концу списка паттернов. $(p)Хотя это может показаться излишним, учитывая существование $(l:patterns/meta#hexcasting:halt)$(action)Гамбит Харона/$, это позволяет вам выходить из $(italic)вложенных/$ $(l:patterns/meta#hexcasting:eval)$(action)Гермесовых/$ вызовов контролируемым образом, тогда как Харон позволяет вам выйти только из одного.$(p)\"Jump\"-йота, очевидно, останется в стеке даже после завершения выполнения... лучше не думать о последствиях этого.", + "hexcasting.page.meta.for_each.1": "Извлекает из стека список рун и список, а затем применяет к каждому элементу второго списка заданный список рун.", + "hexcasting.page.meta.for_each.2": "Более конкретно, для каждого элемента во втором списке произойдёт следующее:$(li) Создастся новый стек со всем, что есть на текущем стеке, плюс этот элемент$(li) На стек добавятся все руны из первого списка$(li) Все йоты, оставшиеся на стеке, сохранятся в результирующий список$(br) Затем, после полного завершения, результирующий список сохраненных йот поместится на основной стек.$(br2) Неудивительно, что все практикующие этого искусства сходят с ума.", + "hexcasting.page.meta.halt.1": "Эта руна принудительно останавливает заклинание. Сама по себе она практически бесполезна, так как я могу просто перестать писать руны или опустить посох.", + "hexcasting.page.meta.halt.2": "Но когда я сочетаю её с $(l:patterns/meta#hexcasting:eval)$(action)Гамбитом Гермеса/$ или $(l:patterns/meta#hexcasting:for_each)$(action)Гамбит Тота/$, она становится $(italics)гораздо/$ более интересной. Эти руны служат для 'изоляции' исполнения, и вместо того, чтобы завершить весь $(#b38ef3)Заговор/$, закончатся лишь эти гамбиты. Это можно использовать, чтобы заставить $(l:patterns/meta#hexcasting:for_each)$(action)Гамбит Тота/$ не действовать на каждую йоту, которая ему дана. Побег от безумия, так сказать.", + "hexcasting.page.meta.thanatos.1": "Добавляет количество рун, которое $(#b38ef3)Заговор/$ ещё может исполнить на стеке. Это значение уменьшается с исполнением каждой руны из $(#b38ef3)Заговора/$.", + "hexcasting.page.mishaps.1": "К сожалению, я не совершенное существо (пока что). Иногда я допускаю ошибки в своих исследованиях и сотворении $(#b38ef3)Заговоров/$; например, я неправильно черчу руны или иногда пытаюсь вызвать действие с неправильными йотами. И Природа обычно не смотрит на мои ошибки благосклонно-- вызывая то, что называется $(italic)провалом/$.", + "hexcasting.page.mishaps.2": "Некорректная руна будет светиться красным на моей сетке. В зависимости от типа ошибки, я также могу ожидать определенного вредного эффекта и обильного разбрызгивания красного и разноцветных искр, поскольку неправильно обработанные $(#74b3f2)мысли/$ сворачиваются в свет определенного цвета.", + "hexcasting.page.mishaps.3": "К счастью, хотя плохие последствия провалов, безусловно, $(italic)раздражают/$, ни одно из них не является особенно разрушительным в долгосрочной перспективе. Нужно лишь отряхнуть с себя грязь и попробовать снова... Но я все равно должен стремиться к лучшему.$(br2)Ниже приведён список провалов, который я составил.", + "hexcasting.page.mishaps.disabled": "Я попытался выполнить действие, которое было запрещено администратором сервера.$(br2)Вызывает черные искры.", + "hexcasting.page.mishaps.disabled.title": "Запрещенное действие", + "hexcasting.page.mishaps.entity_immune": "Действие пыталось повлиять на существо, которое не может быть изменено таким образом.$(br2)Вызывает синие искры, и предметы в моих руках будут вырваны и брошены в направлении нарушающего существа.", + "hexcasting.page.mishaps.entity_immune.title": "Существо неизменяемо", + "hexcasting.page.mishaps.entity_out_of_range": "Действие пыталось повлиять на существо, находящееся за пределами моего радиуса действия.$(br2)Вызывает розовые искры, и предметы в моих руках будут вырваны и брошены в направлении нарушающего существа.", + "hexcasting.page.mishaps.entity_out_of_range.title": "Сущность далеко", + "hexcasting.page.mishaps.incorrect_block": "Действие требует наличия определенного блока в указанном месте, но предоставленный блок не подходит.$(br2)Вызывает яркие зеленые искры и создает мимолетный взрыв в указанном месте. Однако этот взрыв, кажется, не наносит вреда ни мне, ни миру, ни чему-либо еще; просто пугалка.", + "hexcasting.page.mishaps.incorrect_block.title": "Неправильный блок", + "hexcasting.page.mishaps.incorrect_iota": "Выполненное действие ожидало йоту определенного типа в качестве аргумента, но получило что-то недопустимое. Если несколько йот недопустимы, сообщение об ошибке будет указывать только на ошибку на самом глубоком уровне стека.$(br2)Вызывает темно-серые искры, и недопустимая йота будет заменена на $(l:casting/influences)$(action)Мусор/$.", + "hexcasting.page.mishaps.incorrect_iota.title": "Неверный тип йоты", + "hexcasting.page.mishaps.incorrect_item": "Действие требует какого-то предмета, но предоставленный мной предмет не подходит.$(br2)Вызывает коричневые искры. Если нарушающий предмет был в моей руке, он будет брошен на пол. Если это было существо, оно будет брошено в воздух.", + "hexcasting.page.mishaps.incorrect_item.title": "Неправильный предмет", + "hexcasting.page.mishaps.invalid_pattern": "Руна не связана ни с одним действием.$(br2)Вызывает желтые искры, и $(l:casting/influences)$(action)Мусор/$ будет помещен на верхушку моего стека.", + "hexcasting.page.mishaps.invalid_pattern.title": "Некорректная руна", + "hexcasting.page.mishaps.math_error": "Действие совершило что-то оскорбительное для законов математики, например, деление на ноль.$(br2)Вызывает красные искры, добавляет $(l:casting/influences)$(action)Мусор/$ в мой стек, и мой разум будет истощен, украв половину оставшейся у меня энергии. Похоже, что Природа возмущается подобными операциями и делит $(italic)меня/$ в ответ.", + "hexcasting.page.mishaps.math_error.title": "Математический парадокс", + "hexcasting.page.mishaps.not_enough_iotas": "Для действия требовалось больше йот, чем было в стеке.$(br2)Вызывает светло-серые искры, и столько $(l:casting/influences)$(action)Мусора/$, сколько потребовалось бы для заполнения количества аргументов, будет добавлено.", + "hexcasting.page.mishaps.not_enough_iotas.title": "Недостаточно йот", + "hexcasting.page.mishaps.other": "Ошибка в моде сотворила йоту недопустимого типа или иным образом привела к сбою заклинания. $(l:https://github.com/gamma-delta/HexMod/issues)Пожалуйста, откройте отчет об ошибке!/$$(br2)Вызывает черные искры.", + "hexcasting.page.mishaps.other.title": "Катастрофическая ошибка", + "hexcasting.page.mishaps.retrospection": "Я попытался начертить $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Ретроспекцию/$ без предварительного начертания $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Интроспекции/$.$(br2)Вызывает оранжевые искры и помещает руну для $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Ретроспекции/$ на стек как руническую йоту.", + "hexcasting.page.mishaps.retrospection.title": "Поспешная Ретроспекция", + "hexcasting.page.mishaps.stack_size": "Я попытался исполнить заклинание, содержащее слишком много рун - их количество превысило размер стека.$(br2)Вызывает чёрные частицы, и весь мой стек превращается в единый $(l:casting/influences)$(action)Мусор/$.", + "hexcasting.page.mishaps.stack_size.title": "Слишком много йот", + "hexcasting.page.mishaps.too_many_patterns": "Исполнено слишком много рун с метаоценкой от одного заклинания.$(br2)Вызывает темно-синие искры и лишает меня всего воздуха.", + "hexcasting.page.mishaps.too_many_patterns.title": "Слишком глубоко", + "hexcasting.page.mishaps.true_name": "Я попытался $(l:patterns/readwrite#hexcasting:write)$(action)сохранить истинное имя/$ другого игрока на постоянный носитель.$(br2)Вызывает черные искры и лишает меня зрения примерно на одну минуту.", + "hexcasting.page.mishaps.true_name.title": "Нарушение личных границ", + "hexcasting.page.mishaps.vector_out_of_range": "Действие пыталось повлиять на мир в точке, находящейся за пределами моего радиуса действия.$(br2)Вызывает пурпурные искры, и предметы в моих руках будут вырваны и брошены в направлении нарушающего места.", + "hexcasting.page.mishaps.vector_out_of_range.title": "Дальняя позиция", + "hexcasting.page.mishaps2.1": "Я обнаружил новые и ужасные результаты провалов. Я не должен поддаваться им.", + "hexcasting.page.mishaps2.bad_mindflay": "Попытка украсть разум у того, чей разум я уже украл, или у существа, не подходящего для указанного блока.$(br2)Вызывает темно-зеленые искры и убивает сущность. Если кто-то из деревенских увидит это, я сомневаюсь, что они отнесутся к этому благосклонно.", + "hexcasting.page.mishaps2.bad_mindflay.title": "Ошибка кражи разума", + "hexcasting.page.mishaps2.bad_shepherd": "Попытка активировать $(l:greatwork/directrix)$(item)направитель пастуха/$ без булевого значения на верхушке стека.$(br2)Вызывает красные и белые искры, насильно выбрасивая направитель пастуха из круга. К счастью, провал не уничтожит направитель, но я обязательно должен подобрать и вернуть его на законное место.", + "hexcasting.page.mishaps2.bad_shepherd.title": "Неподобающий Пастух", + "hexcasting.page.mishaps2.no_circle": "Попытка использовать руну, треубующую круг заклинаний, вручную.$(br2)Вызывает светло-синие искры и выбрасывает мой инвентарь на землю.", + "hexcasting.page.mishaps2.no_circle.title": "Отсутствие круга заклинаний", + "hexcasting.page.mishaps2.no_record": "Попытка получить доступ к $(l:greatwork/akashiclib)$(item)Записи Акаши/$ в месте, где её нет.$(br2)Вызывает фиолетовые искры и уносит часть моего опыта.", + "hexcasting.page.mishaps2.no_record.title": "Отсутствие Записи Акаши", + "hexcasting.page.nadirs.1": "Вся эта группа заклинаний накладывает отрицательный эффект зелья на сущность. Все они принимают сущность - получателя, и одно или два числа: первое - это длительность, а второе, если присутствует, - это сила (начиная с 1).$(br2)У каждого из них есть \"базовая стоимость\"; фактическая стоимость равна этой базовой стоимости, умноженной на квадрат силы.", + "hexcasting.page.nadirs.2": "Согласно некоторым легендам, эти заклинания и их собратья, $(l:patterns/great_spells/zeniths)$(action)Зениты/$, были \"[...] вдохновлены миром, близким к этому, где могущественные волшебники собирали магию из земли и устраивали дуэли насмерть. К сожалению, многое было потеряно в переводе...\"$(br2)Возможно, в этом и причина их странных названий.", + "hexcasting.page.nadirs.potion/levitation": "Накладывает $(thing)Левитацию/$. Базовая стоимость - одна $(l:items/amethyst)$(item)аметистовая пыль/$ за 5 секунд.", + "hexcasting.page.nadirs.potion/poison": "Накладывает $(thing)Отравление/$. Базовая стоимость - одна $(l:items/amethyst)$(item)аметистовая пыль/$ за 3 секунды.", + "hexcasting.page.nadirs.potion/slowness": "Накладывает $(thing)Замедление/$. Базовая стоимость - одна $(l:items/amethyst)$(item)аметистовая пыль/$ за 5 секунд.", + "hexcasting.page.nadirs.potion/weakness": "Накладывает $(thing)Слабость/$. Базовая стоимость - одна $(l:items/amethyst)$(item)аметистовая пыль/$ за 10 секунд.", + "hexcasting.page.nadirs.potion/wither": "Накладывает $(thing)Истощение/$. Базовая стоимость - одна $(l:items/amethyst)$(item)аметистовая пыль/$ в секунду.", + "hexcasting.page.naming.1": "Названия, данные действиям и рунам древними, были, безусловно, странными, но я думаю, что в них есть определенная логика.$(br2)Кажется, есть определенные группы действий с общими названиями, названными по числу йот, которые они удаляют со стека и добавляют на стек.", + "hexcasting.page.naming.2": "$(li) $(thing)Отражения/$ ничего не удаляют и добавляет одну йоту.$(li) $(thing)Преображения/$ удаляют одну йоту и добавляет одну йоту.$(li) $(thing)Объединения/$ удаляют две и добавляет одну.$(li) $(thing)Возвышения/$ удаляют три или более и добавляет одну.$(li) $(thing)Разборы/$ удаляют один аргумент и добавляют два.$(li) $(thing)Распады/$ удаляют один и добавляют три или более.$(li) Наконец, $(thing)Гамбит/$ добавляет или удаляет разнообразное количество (или перестраивает стек другим образом).", + "hexcasting.page.naming.3": "Похоже, что заклинания освобождены от этой номенклатуры и в основном названы по тому, что они делают - в конце концов, зачем называть его $(action)Гамбит Демона/$, когда можно просто сказать $(l:patterns/spells/basic#hexcasting:explode)$(action)Взрыв/$?", + "hexcasting.page.numbers.1": "Досадно, что нет простого способа начертить числа. Вот метод, который природа предоставила нам.", + "hexcasting.page.numbers.2": "Сначала я черчу одну из двух форм, показанных на другой странице. Затем $(italic)углы/$, следующие за этим, будут изменять текущий счет, начиная с 0.$(li)Вперед: Добавить 1$(li)Влево: Добавить 5$(li)Вправо: Добавить 10$(li)Резкое влево: Умножить на 2$(li)Резкое вправо: Разделить на 2.$(br)Версия руны, начертанная по часовой стрелке справа на предыдущей странице, отрицает значение в самом конце. (Левая версия против часовой стрелки сохраняет число положительным).$(p)После завершения руны число помещается на верхушку стека.", + "hexcasting.page.numbers.3": "В некоторых случаях разумнее просто использовать $(l:items/abacus)$(item)Счёты/$. Но всегда полезно знать \"правильный\" способ записывать числа.", + "hexcasting.page.numbers.example.-32": "Эта руна добавляет -32: отрицание 1 + 5 + 10 * 2.", + "hexcasting.page.numbers.example.-32.header": "Пример 3", + "hexcasting.page.numbers.example.10": "Эта руна добавляет 10.", + "hexcasting.page.numbers.example.10.header": "Пример 1", + "hexcasting.page.numbers.example.4.5": "Эта руна добавляет 4.5: 5 / 2 + 1 + 1.", + "hexcasting.page.numbers.example.4.5.header": "Пример 4", + "hexcasting.page.numbers.example.7": "Эта руна добавляет 7: 5 + 1 + 1.", + "hexcasting.page.numbers.example.7.header": "Пример 2", + "hexcasting.page.patterns_as_iotas.1": "Одной из многих особенностей этого искусства является то, что $(italic)сами по себе руны/$ могут действовать как йоты - я могу даже поместить их на стек при выполнении заклинания.$(br2)Это порождает довольно очевидный вопрос: как их выразить? Если я просто начерчу руну, это вряд ли скажет Природе добавить её на мой стек - скорее всего, она просто будет сопоставлена с действием.", + "hexcasting.page.patterns_as_iotas.2": "К счастью, Природа предоставила мне набор $(l:casting/influences)абстракций/$, которые я могу использовать для работы с рунами напрямую.$(br2)Кратко говоря, $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Рассмотрение/$ позволяет мне добавить одну руну на стек, а $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Интроспекция/$ и $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Ретроспекция/$ позволяют мне добавить целый список.", + "hexcasting.page.patterns_as_iotas.escape.1": "Чтобы использовать $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Рассмотрение/$, я черчу сначала её руну, затем другой произвольный узор. Этот второй узор добавляется на стек в качестве йоты.", + "hexcasting.page.patterns_as_iotas.escape.2": "Можно рассматривать это как \"экранирование\" руны на стек.$(br2)Обычно это используется для копирование рун на $(l:items/scroll)$(item)Свиток/$ или $(l:items/slate)$(item)Скрижаль/$ с помощью $(l:patterns/readwrite#hexcasting:write)$(action)Гамбита Писаря/$, а затем, возможно, для декорирования ими чего-либо.", + "hexcasting.page.patterns_as_iotas.further_notes.1": "я могу избежать специального поведения $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Интро-/$ и $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Ретроспекций/$, начертив $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Рассмотрение/$ перед ними, что просто добавит их в список, не влияя на количество $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Ретроспекций/$, необходимых для возвращения к заклинанию.$(br2)Если я начерчу две руны $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Рассмотрения/$ подряд во время $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Интроспекции/$, это добавит одно $(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)Рассмотрение/$ в список.", + "hexcasting.page.patterns_as_iotas.further_notes.2": "Если йота, не являющаяся руной, присутствует в списке на исполнение руной $(l:patterns/meta#hexcasting:eval)$(action)гамбита Гермеса/$ (или любой другой мета-руной исполнения), то произойдёт оишбка. Но я могу избежать этого, используя руны, описаные ниже.$(br2)Прямо как с йотами рун, руны ниже позволяют \"экранировать\" $(o)любые$() йоты, заставляя их пропихнуться на стек при исполнении вместо ошибки.", + "hexcasting.page.patterns_as_iotas.further_notes.3": "Эта техника пригодится, если я захочу сослаться на специфичную йоту в своём $(#b38ef3)Заговоре/$, вроде сложного вектора или ссылки на сущность, без нужды создавать их с нуля при каждом исполнении.$(br2)Нужно не забыть о том, как именно я внесу такую йоту в список рун для исполнения. Простейшим способом будет сначала начертить \"заглушку\" при создании списка, а потом заменить её на нужную йоту с помощью руны $(l:patterns/lists#hexcasting:replace)$(action)Возвышения Хирурга/$.", + "hexcasting.page.patterns_as_iotas.further_notes.title": "Дополнительные записи", + "hexcasting.page.patterns_as_iotas.parens.1": "Начертив $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Интроспекцию/$, мои начертания рун начинают вести себя по-другому на какое-то время. Пока я не начерчу $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Ретроспекцию/$, начертанные мною руны сохраняются в уме. Затем, когда я начерчу $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Ретроспекцию/$, они добавляются на стек как список йот.", + "hexcasting.page.patterns_as_iotas.parens.2": "Если я начерчу ещё одну $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Интроспекцию/$, она все равно будет сохранена в списке, но затем мне придется начертить $(italic)две/$ $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Ретроспекции/$, чтобы вернуться к обычному заклинанию.", + "hexcasting.page.patterns_as_iotas.undo": "Наконец, если я допущу ошибку при начертании рун внутри $(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)Интро-/$ и $(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)Ретроспекций/$, можно начертить $(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)Исчезновение/$, чтобы удалить последний начерченный мною узор из списка рун.", + "hexcasting.page.phials.1": "Меня сильно ... раздражает, как Природа отказывается давать мне сдачу за мою работу. Если у меня под рукой только $(l:items/amethyst)$(item)Заряженный Аметист/$, даже самое маленькое $(l:patterns/basics#hexcasting:raycast)$(action)Преображение Луча/$ потребует весь кристалл, растрачивая неиспользованные $(#74b3f2)мысли/$ в пустую.$(br2)К счастью, кажется, я нашел способ отчасти смягчить эту проблему.", + "hexcasting.page.phials.2": "Я нашел старые свитки, описывающие $(item)Стеклянную Бутылку/$, пропитанную $(#74b3f2)мыслью/$. При применении $(#b38ef3)Заговора/$, мои заклинания могли бы черпать $(#74b3f2)мысли/$ из флакона. Жидкая форма $(#74b3f2)мысли/$ позволяла бы мне брать сдачу, так сказать; ничего не было бы потеряно. Это очень схоже с внутренней батареей $(l:items/hexcasting)$(item)Талисмана/$, или типо того; я даже могу $(l:patterns/spells/hexcasting#hexcasting:recharge)$(action)Перезарядить/$ флаконы тем же способом.", + "hexcasting.page.phials.3": "К сожалению, искусство фактического $(italic)созидания/$ этих флаконов, кажется, было утрачено со временем. Я нашел $(l:patterns/great_spells/make_battery#hexcasting:craft/battery)$(thing)намек на существование руны для его создания/$, но техника упорно ускользает, и мне не удается добиться успеха. Я подозреваю, что разберусь с этим при дальнейшем обучении и практике. Пока что я просто буду терпеть траты $(#74b3f2)мысли/$...$(br2)Но я не стану с этим мириться навечно.", + "hexcasting.page.phials.desc": "$(italic)Выпей молоко./$", + "hexcasting.page.pigments.1": "Старые практикующие моё искусство иногда идентифицировали себя цветом, символичным для них. Пускай их имена и утрачены, но цвета остались. Кажется, особый вид пигмента, предложенный Природе правильным образом, мог бы \"[...] окрапить мысли так, что Природа возрадуется, порождая чудесное изменение в личном цвете.\"", + "hexcasting.page.pigments.2": "Я не уверен в деталях, но, по-моему, я выделил формулы для множества различных цветов и смесей пигментов. Чтобы применить пигмент, я должен держать его в одной руке и применить руну $(l:patterns/spells/colorize)$(action)Использования Пигмента/$ другой рукой; это поглощает пигмент.$(br2)Пигменты, кажется, влияют на цвет искр $(#74b3f2)мысли/$, излучаемых, когда я использую заклинания и моих $(l:patterns/spells/sentinels)$(thing)Часовых/$, но я не сомневаюсь, что цвет проявится и в других местах.", + "hexcasting.page.pigments.colored.crafting.desc": "Пигменты во всех цветах радуги.", + "hexcasting.page.pigments.colored.crafting.header": "Хроматические Пигменты", + "hexcasting.page.pigments.special": "И, наконец, пара специальных пигментов. $(item)Пигмент души/$ сияет цветами, совершенно уникальными для меня, и $(item)Чистый пигмент/$ восстанавливает мой первоначальный пурпурно-оранжевый оттенок.$(br2)$(italic)И все цвета внутри меня, еще не придуманные./$", + "hexcasting.page.potions.1": "Смотря сквозь $(l:items/lens)$(item)Линзу Прорицания/$, я способен вместить в свою сеть хекса гораздо больше рун. Но что, если мне захочется ещё сильнее развить свои способности? Алхимия стала ответом.$(br2)Добавив щепотку Аметистовой Пыли к $(item)Заурядному Зелью/$, я могу сварить настой, увеличивающий мою сетку, словно линза. Я даже могу использовать их вместе, чтобы получить ультимативную сеть!", + "hexcasting.page.potions.2": "Зелье Ясности может быть продлено, усилено и модифицировано, как и любое другое.$(br2)Его также можно обратить, добавив $(item)Маринованный Паучий Глаз/$. Может быть полезно при борьбе с другими заклинателями.", + "hexcasting.page.potions.effects.header": "Ясность и Туманность", + "hexcasting.page.quenching_allays.1": "ОНИ СДЕЛАНЫ ИЗ МЫСЛЕЙ. Как я не заметил этого раньше? Они - как и я - куча плоти с обрывком, благословленным обрывком мысли, Тихоня - это самоподдерживающаяся кучка $(#74b3f2)мысли/$, прикрепленная к обрывку плоти. Это объясняет все - их склонность к мысли, их реакцию на музыку, как можно было это не заметить?", + "hexcasting.page.quenching_allays.2": "И учитывая это БЫЛО БЫ ЕСТЕСТВЕННО если бы я покорил их своеобразные умы - их своеобразные \"я\" - это все, чем они являются, умом, \"сознанием\". Что-то в них говорит со мной. Я могу... Я могу сжать $(#74b3f2)мысли/$ с ними, наложить две ветви мысли на одно пространство, физическое и когнитивное, все и сразу. Каким-то образом процесс сам генерирует $(#74b3f2)мысли/$. Как? Возможно -- возможно, МОЯ работа, процесс её выполнения --", + "hexcasting.page.quenching_allays.3": "Это не имеет значения. Я не имею значения. Они не имеют значения, важен лишь результат. И вот он.$(br2)Это должно быть так болезненно.$(br2)Десять единиц $(l:items/amethyst)$(item)аметистовой пыли/$ за такой извращенный ритуал.", + "hexcasting.page.quenching_allays.4": "Продукт хрупок. При разрушении он разлетается на осколки, и $(thing)зачарование Удачи/$ увеличивает выход... если я хочу сам блок, мне нужно шёлковое касание.$(br2)Полученные осколки стоят втрое дороже $(l:items/amethyst)$(item)Заряженного Аметистового Кристалла/$ за штуку. Сам блок стоит четыре осколка.", + "hexcasting.page.quenching_allays.5": "Они непостоянны, кажется, что они изгибаются и мигают под моими пальцами, и, дав им пример в другой форме $(#74b3f2)мысли/$, их можно заставить принять его форму, в эквивалентном обмене $(#74b3f2)мысли/$.", + "hexcasting.page.readers_guide.1": "Я разделил все найденные мною действительные руны на разделы в зависимости от их функций. Я также записал порядок черчения рун, если мне удалось найти его в своих исследованиях, с началом узора в отмеченной красной точке.$(br2)Если действие исполняется несколькими рунами, как это бывает в некоторых случаях, я буду писать их все рядом.", + "hexcasting.page.readers_guide.2": "Однако, для некоторых рун я $(italic)не смог/$ найти порядок черчения, только форму. Я предполагаю, что порядок начертания их где-то существует, спрятанный в древних библиотеках и подземельях мира.$(br2)В таких случаях я просто черчу руну без информации о порядке её начертания.", + "hexcasting.page.readers_guide.3": "Я также указываю типы йот, которые действие потребляет или изменяет, символ \"→\", и типы йот, которые действие создает.$(p)Например, \"$(n)вектор, число/$ → $(n)вектор/$\" означает, что действие удалит вектор и число из верхней части стека, а затем добавит вектор; или, другими словами, удалит число со стека, а затем изменит вектор в верхней части стека. (Число должно быть на верхушке стека, с вектором прямо под ним.)", + "hexcasting.page.readers_guide.4": "\"→ $(n)сущность/$\" означает, что руна просто добавит сущность. \"$(n)сущность, вектор/$ →\" означает, что она удалит сущность и вектор, и ничего не добавит.$(br2)Наконец, если я нахожу, что маленькая точка, обозначающая порядок черчения, слишком медленная или запутанная, я могу нажать $(thing)Control/Command/$, чтобы отобразить градиент, где начало руны самое темное, а конец - самый светлый. Это также работает на свитках и при сотворении заклинаний!", + "hexcasting.page.readwrite.1": "Этот раздел касается хранения $(thing)йот/$ в более постоянной среде. Почти любую йоту можно сохранить на подходящем предмете, вроде $(l:items/focus)$(item)Талисмана/$ или $(l:items/spellbook)$(item)Книги заклинаний/$), и позже снова прочитать. Некоторые предметы, такие как $(l:items/abacus)$(item)Счеты/$, могут быть только прочитаны.$(br2)Йоты обычно читаются и записываются с второстепенной руки, но также возможно читать и писать с помощью предмета, когда он находится на земле как предмет-сущность или в рамке.", + "hexcasting.page.readwrite.2": "Возможно, есть и другие сущности, с которыми я могу взаимодействовать подобным образом. Например, со $(l:items/scroll)$(item)Свитка/$, висящего на стене, можно считывать его руну.$(br2)Однако, похоже, я не могу сохранить ссылку на другого игрока, только на себя. Я полагаю, что ссылка на сущность похожа на идею Истинного Имени; возможно, Природа помогает сохранить наши Имена от рук наших врагов. Если я хочу, чтобы у друга было мое Имя, я могу сделать для него $(l:items/focus)$(item)Талисман/$ и самостоятельно записать туда своё Имя.", + "hexcasting.page.readwrite.local": "Предметы - не единственное место, где я могу хранить информацию. Я также могу хранить эту информацию в $(#74b3f2)мысли/$, подобно стеку, но отдельно. В текстах это именуется $(l:patterns/readwrite#hexcasting:local)$(thing)Вороньим Гнездом/$. Оно содержит одну йоту, подобно $(l:items/focus)$(item)Талисману/$, и при этом сохраняется между итерациями $(l:patterns/meta#hexcasting:for_each)$(action)Гамбита Тота/$, но существует только до тех пор, пока действует заклинание, частью которого оно является. Как только я прекращу писать руны, йота будет потеряна.", + "hexcasting.page.readwrite.local.title": "Воронье Гнездо", + "hexcasting.page.readwrite.read": "Копирует йоту, хранящуюся в предмете в моей второстепенной руке, и добавляет её на стек.", + "hexcasting.page.readwrite.read/entity": "Подобна $(l:patterns/readwrite#hexcasting:read)$(action)Отражению Писаря/$, но йота считывается из сущности, а не из моей руки.", + "hexcasting.page.readwrite.read/local": "Копирует йоту из моего $(l:patterns/readwrite#hexcasting:local)$(thing)Вороньего Гнезда/$, которую я только что записал туда с помощью $(l:patterns/readwrite#hexcasting:write/local)$(action)Гамбита Хугина/$.", + "hexcasting.page.readwrite.readable": "Если предмет в моей другой руке содержит йоту, которую я могу прочитать, возвращается Истина. В противном случае возвращается Ложь.", + "hexcasting.page.readwrite.readable/entity": "Подобна $(l:patterns/readwrite#hexcasting:readable)$(action)Отражению Ревизора/$, но проверяется читаемость сущности, а не моя вторая рука.", + "hexcasting.page.readwrite.writable": "Если я могу сохранить йоту в предмете, который держу в другой руке, возвращается Истина. В противном случае возвращается Ложь.", + "hexcasting.page.readwrite.writable/entity": "Подобна $(l:patterns/readwrite#hexcasting:writable)$(action)Отражению Заседателя/$, но проверяется возможность записи на сущность.", + "hexcasting.page.readwrite.write": "Извлекает верхнюю йоту из стека и помещает её в предмет в второстепенной руке.", + "hexcasting.page.readwrite.write/entity": "Подобна $(l:patterns/readwrite#hexcasting:read)$(action)Гамбиту Писаря/$, но йота записывается на сущность, а не в предмет в руке.$(br2)Интересно, кажется, что я не могу записать свое собственное Имя с помощью этого заклинания. Я чувствую, что могу оказаться в опасности, если бы мог это сделать.", + "hexcasting.page.readwrite.write/local": "Удаляет верхнюю йоту из стека и сохраняет её в моё $(l:patterns/readwrite#hexcasting:local)$(thing)Воронье Гнездо/$, храня её там до тех пор, пока я не прекращу заклинание.", + "hexcasting.page.scroll.1": "$(l:items/scroll)$(item)Свиток/$ - удобный способ делиться руной с другими. Я могу скопировать на него руну с помощью $(l:patterns/readwrite#hexcasting:write)$(action)Гамбита Писаря/$, после чего свиток будет отображать её в подсказке.$(br2)Я также могу разместить свитки на стене в качестве украшения или поучения, как картину, в размерах от 1x1 до 3x3 блоков. Использование $(l:items/amethyst)$(item)пыли аметиста/$ на таком свитке заставит его отображать порядок линий.", + "hexcasting.page.scroll.2": "Кроме того, я также могу найти так называемые $(l:items/scroll)$(item)Древние свитки/$ в подземельях и крепостях мира. Они содержат порядок линий $(thing)Великих Рун/$, могущественных заклинаний, о которых ходят слухи, будто они слишком мощны для рук и умов смертных...$(br2)Если эти \"смертные\" не могли их произносить, я не уверен, что они заслуживали их знать.", + "hexcasting.page.scroll.crafting.desc": "$(italic)Я пишу на чистом белом пергаменте острым пером и кровью моих учеников, гадая их секреты./$", + "hexcasting.page.sentinels.1": "$(italic)Отсюда, прочь! Всё будет хорошо с тобой,$(br)От нас в отчужденье стоит Часовой./$$(br2)$(l:patterns/spells/sentinels)$(thing)Часовые/$ - это таинственная сила, которую я могу призвать для помощи в исполнении $(#b38ef3)Заговоров/$, подобно фамильяру или ангелу-хранителю. Для меня он выглядит как вращающаяся геометрическая форма, но он невидим для всех остальных.", + "hexcasting.page.sentinels.2": "У него несколько интересных свойств:$(li)По-видимому, он не является осязаемым; никто не может его коснуться.$(li)Только мои $(#b38ef3)Заговоры/$ могут взаимодействовать с ним.$(li)После призыва он остается на месте до изгнания.$(li)Я всегда могу его видеть, если достаточно близок, даже сквозь твёрдые блоки.", + "hexcasting.page.sentinels.sentinel/create": "Призывает моего $(l:patterns/spells/sentinels)$(thing)Часового/$ на указанной позиции. Стоит примерно 1 $(l:items/amethyst)$(item)аметистовую пыль/$.", + "hexcasting.page.sentinels.sentinel/destroy": "Изгоняет моего $(l:patterns/spells/sentinels)$(thing)Часового/$ из мира. Стоимость незначительна в $(#74b3f2)мысли/$.", + "hexcasting.page.sentinels.sentinel/get_pos": "Добавляет позицию моего $(l:patterns/spells/sentinels)$(thing)Часового/$ на стек, или $(l:casting/influences)$(thing)Ничто/$, если он не призван. Стоимость незначительна в $(#74b3f2)мысли/$.", + "hexcasting.page.sentinels.sentinel/wayfind": "Преобразует позицию на вершине стека в единичный вектор, равный сдвигу от этой позиции к позиции моего $(l:patterns/spells/sentinels)$(thing)Часового/$, или $(l:casting/influences)$(thing)Ничто/$, если он не призван. Стоимость незначительна в $(#74b3f2)мысли/$.", + "hexcasting.page.sets.and.1": "Находит пересечение двух множеств.", + "hexcasting.page.sets.and.2": "Как следует:$(li)С двумя числами в верхней части стека - объединяет их в битовый набор, содержащий каждый \"on\" бит, присутствующий в $(italics)обоих/$ битовых наборах.$(li)С двумя списками - создает список каждого элемента из первого списка, который также присутствует во втором списке.", + "hexcasting.page.sets.not": "Берет инверсию битового набора, меняя все \"on\" биты на \"off\" и наоборот. На мой взгляд, это будет представлено числом, инвертированным и уменьшенным на единицу. Например, 0 станет -1, а -100 станет 99.", + "hexcasting.page.sets.numlist": "Операции с множествами странны тем, что некоторые из них могут принимать два числа или два списка, но не их комбинацию. Такие аргументы записываются как \"(num, num)|(list, list)\".$(br2)Когда числа используются в этих операциях, они используются как так называемые двоичные \"биты\", списки из 1 и 0, true и false, \"on\" и \"off\".", + "hexcasting.page.sets.or.1": "Объединяет два набора.", + "hexcasting.page.sets.or.2": "Как следует:$(li)С двумя числами в верхней части стека - объединяет их в битовый набор, содержащий каждый \"on\" бит из обоих битовых наборов.$(li)С двумя списками - создает список, содержащий все элементы первого, плюс каждый элемент из второго списка, который отсутствует в первом списке. Это похоже на $(l:patterns/lists#hexcasting:add)$(action)Объединение/$.", + "hexcasting.page.sets.to_set": "Удаляет дублирующиеся записи из списка.", + "hexcasting.page.sets.xor.1": "Находит исключающее ИЛИ двух множеств.", + "hexcasting.page.sets.xor.2": "Как следует:$(li)С двумя числами в верхней части стека - объединяет их в битовый набор, содержащий каждый \"on\" бит, присутствующий $(italics)ровно в одном/$ из битовых наборов.$(li)С двумя списками - создает список каждого элемента из обоих списков, где каждый элемент присутствует $(italics)лишь в одном/$ из списков.", + "hexcasting.page.slate.1": "$(l:items/slate)$(item)Скрижали/$ похожи на $(l:items/scroll)$(item)Свитки/$; Я могу скопировать на них руну и разместить их в мире, чтобы её отобразить.$(br2)Однако я читал смутные рассказы о великих собраниях $(l:items/slate)$(item)Скрижалей/$, используемых для создания $(l:greatwork/spellcircles)$(thing)ритуалов/$ более мощных, чем может сотворить $(l:items/staff)$(item)Посох/$.", + "hexcasting.page.slate.2": "Возможно, эти знания будут раскрыты мне со временем. Но пока, я полагаю, что они служат живописным элементом декора.$(br2)По крайней мере, их можно разместить на любой стороне блока, в отличие от $(l:items/scroll)$(item)Свитков/$.", + "hexcasting.page.slate.3": "Я также знаю о других типах $(l:items/slate)$(item)Скрижалей/$, скрижалях, которые не содержат рун, но кажется, что они инкрустированы другими... странными... странностями. Мне больно думать о них, словно мои мысли изгибаются вокруг их структуры, следуя их путям, изгибаясь и переплетаясь сквозь их лабиринтные глубины, проходящие сквозь и сквозь и проходя сквозь и проникая и обрабатываемые и--$(br2)... Я чуть не потерял себя. Может быть, стоит отложить их исследование.", + "hexcasting.page.slate.crafting.desc": "$(italic)Это буква \"а.\" Выучи её./$", + "hexcasting.page.spellbook.1": "$(l:items/spellbook)$(item)Книга заклинаний/$ - это вершина моего искусства-- она действует как целая библиотека $(l:items/focus)$(item)Талисманов/$. Аж до $(thing)шестидесяти четырех/$, если быть точным.$(br2)Каждая страница может содержать одну йоту, и я могу выбрать активную страницу (страницу, на которую сейчас сохраняются и откуда копируются йоты), держа её в руке в присяде и прокручивая, или просто удерживая её во второй руке и прокручивая во время сотворения $(#b38ef3)Заговора/$.", + "hexcasting.page.spellbook.2": "Как и $(l:items/focus)$(item)Талисман/$, существует простой способ предотвратить случайное перезаписывание. Сложив книгу с $(item)Медовой сотой/$, я запечатаю активную страницу, предотвращая $(l:patterns/readwrite#hexcasting:write)$(action)Гамбит Писаря/$ от изменения её содержимого. Также как и $(l:items/focus)$(item)Талисман/$, использование $(l:patterns/spells/hexcasting#hexcasting:erase)$(action)Очистить предмет/$ удалит лак и содержимое страницы.$(br2)Я также могу дать каждой странице индивидуальное имя на наковальне. Это изменит только название выбранной в данный момент страницы для удобного просмотра.", + "hexcasting.page.spellbook.crafting.desc": "$(italic)Волшебники любят слова. Большинство из них много читают, и действительно одним из сильных признаков потенциального волшебника является неспособность заснуть без предварительного прочтения чего-либо.", + "hexcasting.page.spellcircles.1": "Я ЗНАЮ зачем нужны $(l:items/slate)$(item)скрижали/$. Великие собрания, утраченные временем. Руны, вырезанные на них, могут быть активированы последовательно, автоматически. Мысль и сила отскакивают через них, один за другим, один за другим, сквозь и сквозь и СКВОЗЬ И -- мне нельзя мне нельзя я должен держать себя в руках.", + "hexcasting.page.spellcircles.2": "Для начала ритуала мне нужен $(l:greatwork/impetus)$(item)Инициатор/$, чтобы создать самоподдерживающуюся волну $(#74b3f2)мысли/$. Эта волна движется по дорожке из $(l:items/slate)$(item)скрижалей/$ или других блоков, подходящих для энергий, один за другим, собирая все руны, которые находит. Когда волна возвращается к $(l:greatwork/impetus)$(item)Инициатору/$, все встреченные руны произносятся по порядку.$(br2)Направление выхода $(#74b3f2)мысли/$ из любого блока ДОЛЖНО быть однозначным, иначе сотворение не удастся. Поток $(#74b3f2)мысли/$ должен иметь лишь один путь.", + "hexcasting.page.spellcircles.3": "В результате контур \"круга\" заклинания может быть любой закрытой формы, вогнутой или выпуклой, и может быть направлен в любом направлении. Фактически, с применением других определенных блоков можно создать заклинательный круг, охватывающий все три измерения. Я сомневаюсь, что такая странность имеет много применения, но мне нужно дать немного свободы, чтобы побудить мой грубый разум продолжать мою работу.", + "hexcasting.page.spellcircles.4": "Чудо чудес, круг не извлекает $(#74b3f2)мысли/$ ни из моего инвентаря, ни из моего разума. Вместо этого кристаллизованные осколки $(#74b3f2)мысли/$ должны быть предоставлены $(l:greatwork/impetus)$(item)Инициатору/$ через воронку или любым други образом.$(br2)Применение $(l:items/lens)$(item)Линзы Прозрения/$ покажет, сколько $(#74b3f2)мысли/$ находится в $(l:greatwork/impetus)$(item)Инициаторе/$, в единицах пыли.", + "hexcasting.page.spellcircles.5": "Однако заклинание, произнесенное из круга, имеет одно крупное ограничение: оно не способно воздействовать на что-либо за пределами границ круга. То есть оно не может взаимодействовать с чем-либо за пределами кубоида минимального размера, включающего каждый блок, составляющий его (поэтому вогнутый заклинательный круг все равно может воздействовать на вещи в области вогнутости).", + "hexcasting.page.spellcircles.6": "Существует также ограничение на количество блоков, через которые может пройти волна, прежде чем она распадется, но оно достаточно большое, и я сомневаюсь, что у меня возникнут проблемы.$(br2)С другой стороны, есть действия, которые могут быть произнесены только из круга. К счастью, ни одно из них не является заклинанием; все они, кажется, имеют дело с компонентами самого круга. Мои заметки на эту тему $(l:patterns/circle)здесь/$.", + "hexcasting.page.spellcircles.7": "Я также нашел набросок заклинательного круга, использованного древними, зарытый в моих заметках. На этой странице мои (признаюсь, плохие) копии.$(br2)Руны там должны были быть выполнены против часовой стрелки, начиная с $(l:patterns/basics#hexcasting:get_caster)$(action)Отражение Нарцисса/$ и заканчивая $(l:patterns/great_spells/teleport#hexcasting:teleport/great)$(action)Великим Перемещением/$.", + "hexcasting.page.spellcircles.teleport_circle.title": "Круг Телепортации", + "hexcasting.page.stack.1": "$(thing)стек/$, также известный как \"LIFO\" (last in first out), является концепцией, заимствованной из информатики. Вкратце, это коллекция вещей, спроектированная так, что вы можете взаимодействовать только с последней использованной вещью.$(br2)Представьте стопку тарелок, где новые тарелки добавляются сверху: если вы хотите взаимодействовать с тарелкой посередине стопки, вам придется удалить тарелки сверху, чтобы добраться до нее.", + "hexcasting.page.stack.2": "Поскольку стек настолько прост, есть только несколько вещей, которые вы можете с ним сделать:$(li)$(italic)Добавление чего-то на него/$, формально известное как push,$(li)$(italic)Удаление последнего добавленного элемента/$, известное как pop, или$(li)$(italic)Изучение или изменение последнего добавленного элемента/$, известное как peek.$(br)Мы называем последний добавленный элемент \"вершиной\" стека, в соответствии с аналогией обеденной тарелки.$(p)В качестве примера, если мы добавим 1 на стек, затем добавим 2, затем выполним pop, вершина стека станет равна 1.", + "hexcasting.page.stack.3": "Действия (в большинстве случаев) ограничены взаимодействием со стеком указанными выше способами. Они будут извлекать некоторые йоты, которые их интересуют (известные как \"аргументы\" или \"параметры\"), обрабатывать их и затем добавлять некоторое количество результатов.$(br2)Конечно, некоторые действия (например, $(l:patterns/basics#hexcasting:get_caster)$(action)Отражение Нарцисса/$) могут не извлекать аргументы, и некоторые действия (особенно заклинания) могут ничего не добавлять после исполнения.", + "hexcasting.page.stack.4": "Еще более сложные действия могут быть выражены в терминах добавления, удаления и просмотра. Например, $(l:patterns/stackmanip#hexcasting:swap)$(action)Гамбит Шута/$ меняет местами два верхних элемента стека. Это можно рассматривать как извлечение двух элементов и добавление их в обратном порядке. Для другого примера, $(l:patterns/stackmanip#hexcasting:duplicate)$(action)Разбор Близнецов/$ дублирует вершину стека - другими словами, она просматривает стек и добавляет копию найденного элемента.", + "hexcasting.page.stackmanip.2dup": "Копирует две верхних йоты из стека. [0, 1] становится [0, 1, 0, 1].", + "hexcasting.page.stackmanip.duplicate": "Дублирует верхнюю йоту на стеке.", + "hexcasting.page.stackmanip.duplicate_n": "Удаляет число в верхней части стека, затем копирует верхнюю йоту указанное число раз. (При значении 2 на стеке будет две йоты, а не три.)", + "hexcasting.page.stackmanip.fisherman": "Берет элемент в стеке с указанным индексом и перемещает его наверх. Если число отрицательное, то перемещает верхний элемент стека на указанное количество позиций вниз.", + "hexcasting.page.stackmanip.fisherman/copy": "Подобно $(l:patterns/stackmanip#hexcasting:fisherman)$(action)Гамбиту Рыбака/$, но вместо перемещения йоты - копирует её.", + "hexcasting.page.stackmanip.mask.1": "Бесконечное семейство рун, которые сохраняют или удаляют элементы на вершине стека, основываясь на последовательности погружений и линий.", + "hexcasting.page.stackmanip.mask.2": "Предполагая, что я черчу руну Гамбита Библиотекаря слева направо, количество йот, необходимых для срабатывания действия, определяется горизонтальным расстоянием, пройденным руной. От самой глубокой йоты в стеке до самой верхней - плоская линия сохранит йоту, в то время как треугольник, опускающийся вниз, удалит её.$(br2)Если мой стек содержит $(italic)0, 1, 2/$ со дна до верху, начертание первой руны в противоположную сторону даст мне $(italic)1/$, второй даст $(italic)0/$, а третьей даст $(italic)0, 2/$ (нуль внизу остается нетронутым).", + "hexcasting.page.stackmanip.over": "Копирует вторую с конца йоту из стека наверх. [0, 1] становится [0, 1, 0].", + "hexcasting.page.stackmanip.pseudo-novice": "Удаляет йоту с верхушки стека.$(br2)Это кажется особым случаем $(l:patterns/stackmanip#hexcasting:mask)$(action)Гамбита Библиотекаря/$.", + "hexcasting.page.stackmanip.pseudo-novice.title": "Гамбит Новичка", + "hexcasting.page.stackmanip.rotate": "Вытаскивает третью йоту сверху стека и перемещает её наверх. [0, 1, 2] становится [1, 2, 0].", + "hexcasting.page.stackmanip.rotate_reverse": "Перемещает верхнюю йоту на третью позицию. [0, 1, 2] становится [2, 0, 1].", + "hexcasting.page.stackmanip.stack_len": "Помещает размер стека в виде числа наверху стека. (Например, стек [0, 1] станет [0, 1, 2].)", + "hexcasting.page.stackmanip.swap": "Меняет местами две верхние йоты на стеке.", + "hexcasting.page.stackmanip.swizzle.1": "Переставляет верхние элементы стека в соответствии с указанным числовым кодом, являющимся индексом требуемого переставления.", + "hexcasting.page.stackmanip.swizzle.2": "Хотя я не претендую на знание математики, лежащей в основе расчета этого кода перестановки, мне удалось найти обширную таблицу этих кодов, перечисляющую все перестановки до шести элементов.$(br2)Если я хочу провести дальнейшее исследование, ключевым словом является \"Код Лемера\".", + "hexcasting.page.stackmanip.swizzle.link": "Таблица кодов", + "hexcasting.page.stackmanip.tuck": "Копирует верхнюю йоту из стека, затем помещает её под второй йотой. [0, 1] становится [1, 0, 1].", + "hexcasting.page.staff.1": "$(l:items/staff)$(item)Посох/$ - моя точка входа для создания $(#b38ef3)Заговоров/$, крупных и мелких. Держа его в руках и нажав $(thing)$(k:use)/$, я начну творить $(#b38ef3)Заговор/$; я могу зажать и тащить, чтобы чертить руны.$(br2)Это не просто кусочек $(#74b3f2)мысли/$ на конце палки; это всё, что мне требуется.", + "hexcasting.page.staff.crafting.desc": "$(italic)Не боритесь; горите, светитесь; зажгитесь./$", + "hexcasting.page.staff.crafting.header": "Посохи", + "hexcasting.page.start_to_see.1": "Тексты не лгали. Природа взяла свое.", + "hexcasting.page.start_to_see.2": "Это... это было... $(p)...это была одна из $(italic)худших/$ вещей, с которыми я $(italic)когда-либо/$ сталкивался. Я предложил свой план Природе и получил в ответ искреннюю улыбку и разрывающее чувство - частичка меня откололась, как аметистовая пыль под дождем.$(p)Мне повезло, что у меня $(italic)сохранился/$, не говоря уже о том, что у меня хватило ума написать это - я должен объявить вопрос закрытым, перепроверить свои математические выкладки, прежде чем исполнять еще какие-либо Заклинания, и никогда больше не допускать подобной ошибки.", + "hexcasting.page.start_to_see.3": "..Но.$(br2)Но на краткий миг эта часть меня... она $(italic)увидела/$... $(l:greatwork/the_work)$(thing)что-то/$. Какое-то место-- или схему? (Такие различия, казалось, не имели значения перед лицом... этого.)$(p)И... и мембранно-барьерно-кожаную границу, отделяющая меня от царства необузданных мыслей-потоков-света-энергии. Я помню - я видел - думал- вспоминал - чувствовал - барьер расплывался по краям, совсем чуть-чуть.$(p)Я хотел $(italic)пройти./$", + "hexcasting.page.start_to_see.4": "Мне нельзя. Я $(italic)знаю/$, что мне нельзя. Это опасно. Это слишком опасно. Потребовалась бы сила... Мне пришлось бы $(italic)одним ударом оказаться на волосок от смерти/$.$(br2)Но я... Я. Так. $(italic)Близко/$.$(p)$(italic)Это/$ кульминация моего творчества. Это и есть $(#54398a)Просветление/$ которого я так долго добивался. $(br2)Я хочу ещё. Мне нужно увидеть это снова. Я $(italic)увижу/$ это.$(p)Что значит мой смертный разум против бессмертной славы?", + "hexcasting.page.teleport/great.1": "Будучи гораздо мощнее, чем $(l:patterns/spells/basic#hexcasting:blink)$(action)Перенос/$, это заклинание позволяет мне телепортироваться практически в любое место в мире! Похоже, что есть ограничение, но оно $(italic)гораздо/$ больше, чем обычный радиус, к которому я привык.", + "hexcasting.page.teleport/great.2": "Сущность будет телепортирована по заданному вектору, который является смещением от его текущего положения. Независимо от расстояния, это всегда стоит около десяти $(l:items/amethyst)$(item)Заряженных Аметистов/$.$(br2)Перенос не идеален, и кажется, что при телепортации чего-то такого сложного, как игрок, их инвентарь не $(italic)всегда/$ остается прикрепленным и склонен разлетаться повсюду на месте назначения. Кроме того, цель будет насильственно удалена от всего неживого, на чем они едут или сидят... но я прочитал кое-какие обрывки, которые предполагают, что животные могут пойти вместе в путь, так сказать.", + "hexcasting.page.the_work.1": "Я видел так много вещей. Невыразимые вещи. Бесчисленные вещи. Я мог бы написать три слова и вывернуть свой разум наизнанку, размазать мои мозги по затененным стенам моего черепа, чтобы они разложились в пух и ничто.", + "hexcasting.page.the_work.2": "Я узрел игло-протыкающие руны и кислотно-выжженные схемы, вписанные внутрь моих век. Они тлеют там-- они танцуют, они насмехаются, они $(italic)болят/$. Меня одержимо охватывает интенсивное $(italic)желание/$ начертить их, создать их. Дать им форму. Освободить их от клейких оков моего смертного разума - представить их во всей их Славе миру, чтобы все видели.$(p)Все должны увидеть.$(p)Все увидят.", + "hexcasting.page.thought_knot.1": "Забывчивые часто завязывают кусок нити вокруг пальца, чтобы не забыть о чём-то важном. Я верю, что эта идея могла бы пригодиться в моём искусстве. Завязанный особым образом кусок нити должен быть способен устойчиво удерживать одну йоту, независимо от моего стека.$(br2)Я назову свое изобретение $(item)Узлом мысли/$.", + "hexcasting.page.thought_knot.2": "При создании он не хранит никакой йоты. Используя руну $(l:patterns/readwrite#hexcasting:write)$(action)Гамбит Писаря/$, и удерживая $(item)Узел мысли/$ во второй руке, я перенесу йоту с верхушки моего стека в $(item)Узел мысли/$. Использование $(l:patterns/readwrite#hexcasting:read)$(action)Отражения Писаря/$ скопирует любую йоту из $(item)Узла мысли/$ и добавит её на стек.$(br2)Как только $(item)Узел мысли/$ будет записан, нить неразрывно запутывается; иоту можно прочитать любое количество раз, но нет способа стереть или перезаписать её. К счастью, узлы не дорогие.", + "hexcasting.page.thought_knot.3": "Кроме того, если я сохраню сущность в $(item)Узел мысли/$ и попытаюсь вспомнить её после того, как указанная сущность умерла или исчезла, $(l:patterns/readwrite#hexcasting:read)$(action)Отражение Писаря/$ добавит $(l:casting/influences)$(thing)Ничто/$ на стек вместо нее.", + "hexcasting.page.thought_knot.crafting.desc": "$(italic)Как бы вы почувствовали, если бы кто-то увидел вас с табличкой, на которой написано: \"Я красив и привлекателен\"?/$", + "hexcasting.page.vectors.1": "Похоже, мне придется быть искусным с векторами, если я собираюсь добиться успеха в своих исследованиях. Я собрал здесь некоторые ресурсы по векторам, если обнаружу, что не знаю, как с ними работать.$(br2)Прежде всего, просветительское видео по этой теме.", + "hexcasting.page.vectors.1.link_text": "3blue1brown", + "hexcasting.page.vectors.2": "Кроме того, кажется, что маги, которые манипулировали $(thing)Псиэнергией/$ (так называемые \"мастера заклинаний\"), несмотря на их плохой вкус в названиях, имели некоторые довольно эффективные уроки по векторам для своих последователей. Я позволил себе разместить ссылку на один из их текстов на следующей странице.$(br2)Похоже, что они использовали другой язык для своего колдовства:$(li)\"Spell Piece\" было их название для действия;$(li)\"Trick\" было их название для заклинания; и$(li)\"Operator\" было их название для не-заклинательного действия.", + "hexcasting.page.vectors.3": "Ссылка Сдесь.", + "hexcasting.page.vectors.3.link_text": "Psi Codex", + "hexcasting.page.weather_manip.dispel_rain": "Аналог вызывания дождя. Это заклинание развеет дождь по всему миру, на который я его наложил. Стоит около одного $(l:items/amethyst)$(item)Осколка Аметиста/$.", + "hexcasting.page.weather_manip.lightning": "Я повелеваю небесам! Это заклинание призовет молнию, чтобы ударить землю там, куда я направлю её. Стоит примерно 3 $(l:items/amethyst)$(item)Аметистовых Осколка/$.", + "hexcasting.page.weather_manip.summon_rain": "Я управляю облаками! Это заклинание вызовет дождь во всем мире, на который я его наложу. Стоит около одного $(l:items/amethyst)$(item)Заряженого Аметиста/$.", + "hexcasting.page.zeniths.1": "Это семейство заклинаний наделяют существо положительными эффектами, оно схоже с $(l:patterns/spells/nadirs)$(action)Надиром/$. Однако их затраты на $(#74b3f2)мысли/$ увеличиваются с $(italic)кубом/$ мощности.", + "hexcasting.page.zeniths.potion/absorption": "Дарует $(thing)Поглощение/$. Базовая стоимость - одна $(l:items/amethyst)$(item)Аметистовая Пыль/$ в секунду.", + "hexcasting.page.zeniths.potion/haste": "Дарует $(thing)Спешку/$. Базовая стоимость - одна $(l:items/amethyst)$(item)Аметистовая Пыль/$ за каждые 3 секунды.", + "hexcasting.page.zeniths.potion/night_vision": "Дарует $(thing)Ночное Зрение/$. Базовая стоимость - одна $(l:items/amethyst)$(item)Аметистовая пыль/$ за каждые 5 секунд.", + "hexcasting.page.zeniths.potion/regeneration": "Дарует $(thing)Регенерацию/$. Базовая стоимость - одна $(l:items/amethyst)$(item)Аметистовая Пыль/$ в секунду.", + "hexcasting.page.zeniths.potion/strength": "Дарует $(thing)Силу/$. Базовая стоимость - одна $(l:items/amethyst)$(item)Аметистовая Пыль/$ за каждые 3 секунды.", + "hexcasting.pattern.unknown": "Неизвестная руна %s", + "hexcasting.rawhook.hexcasting:close_paren": "Ретроспекция", + "hexcasting.rawhook.hexcasting:escape": "Рассмотрение", + "hexcasting.rawhook.hexcasting:open_paren": "Интроспекция", + "hexcasting.rawhook.hexcasting:undo": "Исчезновение", + "hexcasting.special.hexcasting:mask": "Гамбит Библиотекаря: %s", + "hexcasting.special.hexcasting:number": "Численное Отражение: %s", + "hexcasting.spelldata.akashic.nopos": "Владелец записи не знает ни о каких йота здесь (это ошибка)", + "hexcasting.spelldata.anything": "Что-либо", + "hexcasting.spelldata.entity.whoknows": "Неизвестная сущность", + "hexcasting.spelldata.onitem": "Содержит: %s", + "hexcasting.spelldata.unknown": "Сломанная йота", + "hexcasting.subtitles.abacus": "Счеты щелкают", + "hexcasting.subtitles.abacus.shake": "Счеты трещат", + "hexcasting.subtitles.ambiance": "Hex grid hums", + "hexcasting.subtitles.casting.cast.fail": "Треск провала", + "hexcasting.subtitles.casting.cast.hermes": "Гермес стрекочит", + "hexcasting.subtitles.casting.cast.normal": "Действие жужжит", + "hexcasting.subtitles.casting.cast.spell": "Заклинание гремит", + "hexcasting.subtitles.casting.cast.thoth": "Тот стрекочит", + "hexcasting.subtitles.casting.pattern.add_segment": "Добавление строки", + "hexcasting.subtitles.casting.pattern.start": "Начальная руна", + "hexcasting.subtitles.flight.ambience": "Игрок летит", + "hexcasting.subtitles.flight.finish": "Полет окончился", + "hexcasting.subtitles.impetus.fletcher.tick": "Инициатор Лучника кликает", + "hexcasting.subtitles.impetus.redstone.clear": "Инициатор Священника очищается", + "hexcasting.subtitles.impetus.redstone.register": "Инициатор Священника звенит", + "hexcasting.subtitles.lore_fragment.read": "Прочтен фрагмент истории", + "hexcasting.subtitles.scroll.dust": "Свиток покрывается аметистовой пылью", + "hexcasting.subtitles.scroll.scribble": "Свиток расписан", + "hexcasting.subtitles.spellcircle.add_pattern": "Заклинание круга трещит", + "hexcasting.subtitles.spellcircle.fail": "Заклинание круга громко трещит", + "hexcasting.subtitles.staff.reset": "Сброс заклинания", + "hexcasting.tooltip.abacus": "%d", + "hexcasting.tooltip.abacus.reset": "Сбросить до 0", + "hexcasting.tooltip.abacus.reset.nice": "хороший", + "hexcasting.tooltip.boolean_false": "Ложь", + "hexcasting.tooltip.boolean_true": "Истина", + "hexcasting.tooltip.brainsweep.level": "Уровень %s", + "hexcasting.tooltip.brainsweep.min_level": "Уровень %s или выше", + "hexcasting.tooltip.brainsweep.product": "Лишенное разума Тело", + "hexcasting.tooltip.circle.many_exits": "У потока мысли было слишком много выходов в %s", + "hexcasting.tooltip.circle.no_closure": "Поток мысли не сможет вернуться к прежнему Инициатору на %s", + "hexcasting.tooltip.circle.no_exit": "Поток мысли не смог найти выхода в %s", + "hexcasting.tooltip.jump_iota": "[Прыжок]", + "hexcasting.tooltip.lens.akashic.bookshelf.location": "Запись на %s", + "hexcasting.tooltip.lens.akashic.record.count": "%s йоты хранящиеся", + "hexcasting.tooltip.lens.akashic.record.count.single": "%s йота хранящаяся", + "hexcasting.tooltip.lens.bee": "%s пчёл", + "hexcasting.tooltip.lens.bee.single": "%s пчела", + "hexcasting.tooltip.lens.impetus.redstone.bound": "Связанный с %s", + "hexcasting.tooltip.lens.impetus.redstone.bound.none": "Несвязан", + "hexcasting.tooltip.lens.pattern.invalid": "Неизвестная руна", + "hexcasting.tooltip.list_contents": "[%s]", + "hexcasting.tooltip.media": "%d пыли", + "hexcasting.tooltip.media_amount": "Содержит: %s (%s)", + "hexcasting.tooltip.media_amount.advanced": "Содержит: %s/%s (%s)", + "hexcasting.tooltip.null_iota": "Ничто", + "hexcasting.tooltip.pattern_iota": "Руна(%s)", + "hexcasting.tooltip.scroll.needs_purchase": "Купите, чтобы увидеть руны", + "hexcasting.tooltip.scroll.pattern_not_loaded": "Поместите в инвентарь, чтобы загрузить руны", + "hexcasting.tooltip.spellbook.empty": "Пустой", + "hexcasting.tooltip.spellbook.empty.sealed": "Пустой (%s)", + "hexcasting.tooltip.spellbook.page": "Выбрана страница %d/%d", + "hexcasting.tooltip.spellbook.page_with_name": "Выбрана страница %d/%d (\"%s\")", + "hexcasting.tooltip.spellbook.page_with_name.sealed": "Выбрана страница %d/%d (\"%s\") (%s)", + "hexcasting.tooltip.spellbook.page.sealed": "Выбрана страница %d/%d (%s)", + "hexcasting.tooltip.spellbook.sealed": "Запечатанный", + "hexcasting.tooltip.stored_hex": "Заговор:", + "item.hexcasting.abacus": "Рунные счеты", + "item.hexcasting.amethyst_dust": "Аметистовая пыль", + "item.hexcasting.ancient_colorizer": "Древний пигмент", + "item.hexcasting.ancient_cypher": "Древняя побрякушка", + "item.hexcasting.ancient_cypher.preset": "Древняя побрякушка: %s", + "item.hexcasting.artifact": "Артефакт", + "item.hexcasting.battery": "Сосуд мысли", + "item.hexcasting.book": "Рунный блокнот", + "item.hexcasting.charged_amethyst": "Заряженный аметист", + "item.hexcasting.creative_unlocker": "Мыслекуб", + "item.hexcasting.creative_unlocker.for_emphasis": "Безграничные мысли", + "item.hexcasting.creative_unlocker.mod_name": "Hexcasting", + "item.hexcasting.creative_unlocker.tooltip": "Употребите, чтобы разблокировать все знания %s.", + "item.hexcasting.cypher": "Побрякушка", + "item.hexcasting.default_colorizer": "Чистый пигмент", + "item.hexcasting.dye_colorizer_black": "Черный пигмент", + "item.hexcasting.dye_colorizer_blue": "Синий пигмент", + "item.hexcasting.dye_colorizer_brown": "Коричневый пигмент", + "item.hexcasting.dye_colorizer_cyan": "Циановый пигмент", + "item.hexcasting.dye_colorizer_gray": "Серый пигмент", + "item.hexcasting.dye_colorizer_green": "Зелёный пигмент", + "item.hexcasting.dye_colorizer_light_blue": "Светло-голубой пигмент", + "item.hexcasting.dye_colorizer_light_gray": "Светло-Серый пигмент", + "item.hexcasting.dye_colorizer_lime": "Лаймовый пигмент", + "item.hexcasting.dye_colorizer_magenta": "Пурпурный пигмент", + "item.hexcasting.dye_colorizer_orange": "Оранжевый пигмент", + "item.hexcasting.dye_colorizer_pink": "Розовый пигмент", + "item.hexcasting.dye_colorizer_purple": "Фиолетовый пигмент", + "item.hexcasting.dye_colorizer_red": "Красный пигмент", + "item.hexcasting.dye_colorizer_white": "Белый пигмент", + "item.hexcasting.dye_colorizer_yellow": "Желтый пигмент", + "item.hexcasting.focus": "Талисман", + "item.hexcasting.focus.sealed": "Запечатанный талисман", + "item.hexcasting.jeweler_hammer": "Ювелирный молоток", + "item.hexcasting.lens": "Линза прозрения", + "item.hexcasting.lore_fragment": "Фрагмент истории", + "item.hexcasting.lore_fragment.all": "Кажется, я постиг все, что может предложить этот мир.", + "item.hexcasting.pride_colorizer_agender": "Agender пигмент", + "item.hexcasting.pride_colorizer_aroace": "Aroace пигмент", + "item.hexcasting.pride_colorizer_aromantic": "Aromantic пигмент", + "item.hexcasting.pride_colorizer_asexual": "Asexual пигмент", + "item.hexcasting.pride_colorizer_bisexual": "Bisexual пигмент", + "item.hexcasting.pride_colorizer_demiboy": "Demiboy пигмент", + "item.hexcasting.pride_colorizer_demigirl": "Demigirl пигмент", + "item.hexcasting.pride_colorizer_gay": "Gay пигмент", + "item.hexcasting.pride_colorizer_genderfluid": "Genderfluid пигмент", + "item.hexcasting.pride_colorizer_genderqueer": "Genderqueer пигмент", + "item.hexcasting.pride_colorizer_intersex": "Intersex пигмент", + "item.hexcasting.pride_colorizer_lesbian": "Lesbian пигмент", + "item.hexcasting.pride_colorizer_nonbinary": "Non-Binary пигмент", + "item.hexcasting.pride_colorizer_pansexual": "Pansexual пигмент", + "item.hexcasting.pride_colorizer_plural": "Plural пигмент", + "item.hexcasting.pride_colorizer_transgender": "Transgender пигмент", + "item.hexcasting.quenched_allay_shard": "Осколок погашенного сплава", + "item.hexcasting.scroll": "Большой свиток", + "item.hexcasting.scroll_medium": "Свиток", + "item.hexcasting.scroll_medium.empty": "Пустой свиток", + "item.hexcasting.scroll_medium.of": "Как вы получили этот свиток %s", + "item.hexcasting.scroll_small": "Малый свиток", + "item.hexcasting.scroll_small.empty": "Пустой малый свиток", + "item.hexcasting.scroll_small.of": "Как вы получили этот свиток %s", + "item.hexcasting.scroll.empty": "Пустой большой свиток", + "item.hexcasting.scroll.of": "Древний свиток %s", + "item.hexcasting.spellbook": "Книга заклинаний", + "item.hexcasting.staff.acacia": "Посох из акации", + "item.hexcasting.staff.bamboo": "Бамбуковый посох", + "item.hexcasting.staff.birch": "Посох из берёзы", + "item.hexcasting.staff.cherry": "Вишнёвый посох", + "item.hexcasting.staff.crimson": "Багровый посох", + "item.hexcasting.staff.dark_oak": "Посох из тёмного дуба", + "item.hexcasting.staff.edified": "Посох созидания", + "item.hexcasting.staff.jungle": "Посох из тропического дерева", + "item.hexcasting.staff.mangrove": "Посох из мангровых зарослей", + "item.hexcasting.staff.mindsplice": "Посох разума", + "item.hexcasting.staff.oak": "Дубовый посох", + "item.hexcasting.staff.quenched": "Погашенный посох", + "item.hexcasting.staff.spruce": "Еловый посох", + "item.hexcasting.staff.warped": "Искаженный посох", + "item.hexcasting.sub_sandwich": "ЗубоДробительный бутерброд", + "item.hexcasting.thought_knot": "Узел мысли", + "item.hexcasting.trinket": "Штуковина", + "item.hexcasting.uuid_colorizer": "Пигмент души", + "item.minecraft.lingering_potion.effect.enlarge_grid": "Оседающее зелье ясности", + "item.minecraft.lingering_potion.effect.enlarge_grid_long": "Оседающее зелье ясности", + "item.minecraft.lingering_potion.effect.enlarge_grid_strong": "Оседающее зелье ясности", + "item.minecraft.lingering_potion.effect.shrink_grid": "Оседающее зелье туманности", + "item.minecraft.lingering_potion.effect.shrink_grid_long": "Оседающее зелье туманности", + "item.minecraft.lingering_potion.effect.shrink_grid_strong": "Оседающее зелье туманности", + "item.minecraft.potion.effect.enlarge_grid": "Зелье ясности", + "item.minecraft.potion.effect.enlarge_grid_long": "Зелье ясности", + "item.minecraft.potion.effect.enlarge_grid_strong": "Зелье ясности", + "item.minecraft.potion.effect.shrink_grid": "Зелье туманности", + "item.minecraft.potion.effect.shrink_grid_long": "Зелье туманности", + "item.minecraft.potion.effect.shrink_grid_strong": "Зелье туманности", + "item.minecraft.splash_potion.effect.enlarge_grid": "Взрывное зелье ясности", + "item.minecraft.splash_potion.effect.enlarge_grid_long": "Взрывное зелье ясности", + "item.minecraft.splash_potion.effect.enlarge_grid_strong": "Взрывное зелье ясности", + "item.minecraft.splash_potion.effect.shrink_grid": "Взрывное зелье туманности", + "item.minecraft.splash_potion.effect.shrink_grid_long": "Взрывное зелье туманности", + "item.minecraft.splash_potion.effect.shrink_grid_strong": "Взрывное зелье туманности", + "item.minecraft.tipped_arrow.effect.enlarge_grid": "Стрела ясности", + "item.minecraft.tipped_arrow.effect.enlarge_grid_long": "Стрела ясности", + "item.minecraft.tipped_arrow.effect.enlarge_grid_strong": "Стрела ясности", + "item.minecraft.tipped_arrow.effect.shrink_grid": "Стрела туманности", + "item.minecraft.tipped_arrow.effect.shrink_grid_long": "Стрела туманности", + "item.minecraft.tipped_arrow.effect.shrink_grid_strong": "Стрела туманности", + "itemGroup.hexcasting.hexcasting": "Hex Casting", + "itemGroup.hexcasting.scrolls": "Hex Casting (Свитки)", + "matcher.hexcasting.pattern.description": "Визуализация Hex Casting Рун", + "matcher.hexcasting.pattern.example": "", + "matcher.hexcasting.pattern.title": "Хекс Руна", + "matcher.hexcasting.pattern.title.styled": "Хекс Руна ", + "stat.hexcasting.media_overcast": "Переиспользовано мысли (в виде пыли)", + "stat.hexcasting.media_used": "Потреблено мысли (в виде пыли)", + "stat.hexcasting.patterns_drawn": "Рун начертано", + "stat.hexcasting.spells_cast": "Заклинаний использовано", + "tag.hexcasting.edified_logs": "Брёвна созидания", + "tag.hexcasting.edified_planks": "Доски созидания", + "tag.hexcasting.phial_base": "Пустой сосуд", + "tag.hexcasting.staves": "Посохи", + "tag.item.hexcasting.brainswept_circle_components": "Компоненты круга очистки разума", + "tag.item.hexcasting.directrices": "Направители", + "tag.item.hexcasting.grants_root_advancement": "Засчитывает основное достижение", + "tag.item.hexcasting.impeti": "Инициаторы", + "tag.item.hexcasting.seal_materials": "Запечатанные материалы", + "text.autoconfig.hexcasting.category.client": "Client", + "text.autoconfig.hexcasting.category.common": "Common", + "text.autoconfig.hexcasting.category.server": "Server", + "text.autoconfig.hexcasting.option.client.alwaysShowListCommas": "Всегда показывать запятые списка", + "text.autoconfig.hexcasting.option.client.alwaysShowListCommas.@Tooltip": "Будут ли все типы йот разделяться запятой внутри списков (по стандарту, йоты рун не используют запятые)", + "text.autoconfig.hexcasting.option.client.clickingTogglesDrawing": "Черчение по нажатию", + "text.autoconfig.hexcasting.option.client.clickingTogglesDrawing.@Tooltip": "Позволяет кликнуть один раз для старта и остановки черчения вместо зажатия кнопки", + "text.autoconfig.hexcasting.option.client.ctrlTogglesOffStrokeOrder": "Ctrl Выключает Порядок Начертания", + "text.autoconfig.hexcasting.option.client.ctrlTogglesOffStrokeOrder.@Tooltip": "Будет ли клавиша ctrl *выключать* цветовой градиент начертания рун", + "text.autoconfig.hexcasting.option.client.gridSnapThreshold": "Порог Схватывания Сетки", + "text.autoconfig.hexcasting.option.client.gridSnapThreshold.@Tooltip": "При использовании посоха, устаналивает дистанцию, которую вам нужно протянуть от выбранной вами точки в сетке до следующей, чтобы их сцепить. Значение 0.5 означает 50% дистанции (0.5-1)", + "text.autoconfig.hexcasting.option.client.invertAbacusScrollDirection": "Инвертировать Направление Прокрутки Рунных Счетов", + "text.autoconfig.hexcasting.option.client.invertAbacusScrollDirection.@Tooltip": "Будет ли прокрутка вверх (вместо прокрутки вниз) увеличивать номер рунных счетов, и наоборот", + "text.autoconfig.hexcasting.option.client.invertSpellbookScrollDirection": "Инвертировать Направление Прокрутки Книги Заклинаний", + "text.autoconfig.hexcasting.option.client.invertSpellbookScrollDirection.@Tooltip": "Будет ли прокрутка вверх (вместо прокрутки вниз) увеличивать номер страницы книги заклинаний, и наоборот", + "text.autoconfig.hexcasting.option.common.artifactCooldown": "Время восстановления Артефакта", + "text.autoconfig.hexcasting.option.common.artifactCooldown.@Tooltip": "Время восстановления Артефакта в тиках", + "text.autoconfig.hexcasting.option.common.chargedCrystalMediaAmount": "Количество Мысли в Заряженном Кристалле Аметиста", + "text.autoconfig.hexcasting.option.common.chargedCrystalMediaAmount.@Tooltip": "Сколько Media стоит один заряженный кристалл аметиста", + "text.autoconfig.hexcasting.option.common.cypherCooldown": "Время восстановления Побрякушки", + "text.autoconfig.hexcasting.option.common.cypherCooldown.@Tooltip": "Время восстановления Побрякушки в тиках", + "text.autoconfig.hexcasting.option.common.dustMediaAmount": "Количество Мысли в Пыли", + "text.autoconfig.hexcasting.option.common.dustMediaAmount.@Tooltip": "Сколько мысли вмещает предмет из Аметистовой пыли.", + "text.autoconfig.hexcasting.option.common.mediaToHealthRate": "Влияние Мысли на уровень Здоровья", + "text.autoconfig.hexcasting.option.common.mediaToHealthRate.@Tooltip": "Сколько мысли стоит половинка сердца при использовании магии за жизни", + "text.autoconfig.hexcasting.option.common.shardMediaAmount": "Количество Мысли в Осколке", + "text.autoconfig.hexcasting.option.common.shardMediaAmount.@Tooltip": "Сколько мысли вмещает осколок аметиста", + "text.autoconfig.hexcasting.option.common.trinketCooldown": "Время восстановления Штуковины", + "text.autoconfig.hexcasting.option.common.trinketCooldown.@Tooltip": "Время восстановления Штуковины в тиках", + "text.autoconfig.hexcasting.option.server.actionDenyList": "Чёрный Список Рун", + "text.autoconfig.hexcasting.option.server.actionDenyList.@Tooltip": "Расположение идентификаторов запрещённых рун. Попытка исполнить одну из этих рун вызовет провал. Например, hexcasting:get_caster запретит использовать Mind's Reflection", + "text.autoconfig.hexcasting.option.server.amethystShardModification": "Изменение Шанса Выпадения Осколков Аметиста", + "text.autoconfig.hexcasting.option.server.amethystShardModification.@Tooltip": "Насколько количество выпадаемых осколков аметиста увеличено/уменьшено.", + "text.autoconfig.hexcasting.option.server.circleActionDenyList": "Чёрный Список Рун Круга Заклинаний", + "text.autoconfig.hexcasting.option.server.circleActionDenyList.@Tooltip": "Расположение идентификаторов запрещённых рун для круга заклинаний. Попытка исполнить одну из этих рун внутри круга вызовет провал.", + "text.autoconfig.hexcasting.option.server.cypherChance": "Шанс на древние побрякушки", + "text.autoconfig.hexcasting.option.server.cypherChance.@Tooltip": "Шанс появления древних побрякушек в вышеуказанных таблицах.", + "text.autoconfig.hexcasting.option.server.cypherInjectionsRaw": "Список таблиц с Древними побрякушками", + "text.autoconfig.hexcasting.option.server.cypherInjectionsRaw.@Tooltip": "Перечисляет все таблицы добычи где будут появляться древние побрякушки.", + "text.autoconfig.hexcasting.option.server.doesTrueNameHaveAmbit": "Радиус действия Истинного имени", + "text.autoconfig.hexcasting.option.server.doesTrueNameHaveAmbit.@Tooltip": "Разрешает ли Истинное имя (т.е. ссылка на сущность игрока) взаимодействовать с указанным игроком вне обычного радиуса действия", + "text.autoconfig.hexcasting.option.server.greaterTeleportSplatsItems": "Великий Телепорт разбрасывает предметы", + "text.autoconfig.hexcasting.option.server.greaterTeleportSplatsItems.@Tooltip": "Должны ли выпадать предметы из инвентаря игрока когда используется Великий Телепорт", + "text.autoconfig.hexcasting.option.server.loreChance": "Шанс на фрагменты истории", + "text.autoconfig.hexcasting.option.server.loreChance.@Tooltip": "Шанс появления фрагментов истории в вышеуказанных таблицах.", + "text.autoconfig.hexcasting.option.server.loreInjectionsRaw": "Список таблиц с Историей", + "text.autoconfig.hexcasting.option.server.loreInjectionsRaw.@Tooltip": "Перечисляет все таблицы добычи где будут появляться фрагменты истории.", + "text.autoconfig.hexcasting.option.server.maxOpCount": "Максимальное Число Рун", + "text.autoconfig.hexcasting.option.server.maxOpCount.@Tooltip": "Максимальное число рун, которые можно исполнить за один тик. Позволяет избежать зависания сервера.", + "text.autoconfig.hexcasting.option.server.maxSpellCircleLength": "Максимальная Длина Круга Заклинаний", + "text.autoconfig.hexcasting.option.server.maxSpellCircleLength.@Tooltip": "Максимальное число скрижалей в круге заклинаний", + "text.autoconfig.hexcasting.option.server.opBreakHarvestLevel": "Уровень Добычи Рун", + "text.autoconfig.hexcasting.option.server.opBreakHarvestLevel.@Tooltip": "Уровень добычи руны Break Block spell.\n0 = дерево, 1 = камень, 2 = железо, 3 = алмаз, 4 = незерит.", + "text.autoconfig.hexcasting.option.server.scrollInjectionsRaw": "Веса Вставки Свитков", + "text.autoconfig.hexcasting.option.server.scrollInjectionsRaw.@Tooltip": "Сопоставляет названия таблиц добычи с количествами рунных свитков (от мира к миру). Существует 50% шанс получить любой свиток в указанном здесь сундуке; если шанс сработал, сгенерируется от 1 до указанного здесь числа свитков.", + "text.autoconfig.hexcasting.option.server.tpDimDenylist": "Список измерений с запретом на телепортацию", + "text.autoconfig.hexcasting.option.server.tpDimDenylist.@Tooltip": "Место для записи измерений, где запрещена телепортация", + "text.autoconfig.hexcasting.option.server.traderScrollChance": "Шанс Свитка у Странствующего Торговца", + "text.autoconfig.hexcasting.option.server.traderScrollChance.@Tooltip": "Шанс того что странствующий торговец продает Древний Свиток", + "text.autoconfig.hexcasting.option.server.villagersOffendedByMindMurder": "Жители Обижаются На Лоботомию", + "text.autoconfig.hexcasting.option.server.villagersOffendedByMindMurder.@Tooltip": "Будут ли жители обижаться на игрока, если он использует на других жителях руну кражи разума", + "text.autoconfig.hexcasting.title": "Hexcasting Config" +} diff --git a/Common/src/main/resources/assets/hexcasting/lang/zh_cn.json b/Common/src/main/resources/assets/hexcasting/lang/zh_cn.json new file mode 100644 index 000000000..79f6b9da5 --- /dev/null +++ b/Common/src/main/resources/assets/hexcasting/lang/zh_cn.json @@ -0,0 +1,1330 @@ +{ + "advancement.hexcasting:big_cast": "……吃穿不缺", + "advancement.hexcasting:big_cast.desc": "耗费巨量媒质以施放一个咒术", + "advancement.hexcasting:creative_unlocker": "无尽能量!", + "advancement.hexcasting:creative_unlocker.desc": "找到创造调试物品。", + "advancement.hexcasting:enlightenment": "获得启迪", + "advancement.hexcasting:enlightenment.desc": "施放咒术至生命将尽来击碎屏障", + "advancement.hexcasting:lore": "咒法学故事", + "advancement.hexcasting:lore.desc": "阅读一份故事残卷", + "advancement.hexcasting:lore/.cardamom1": "卡达蒙·斯蒂勒斯 #1", + "advancement.hexcasting:lore/.cardamom1.desc": "卡达蒙·斯蒂勒斯寄给她父亲的信,#1", + "advancement.hexcasting:lore/.cardamom2": "卡达蒙·斯蒂勒斯 #2", + "advancement.hexcasting:lore/.cardamom2.desc": "卡达蒙·斯蒂勒斯寄给她父亲的信,#2", + "advancement.hexcasting:lore/.cardamom3": "卡达蒙·斯蒂勒斯 #3", + "advancement.hexcasting:lore/.cardamom3.desc": "卡达蒙·斯蒂勒斯寄给她父亲的信,#3,第一部分", + "advancement.hexcasting:lore/.cardamom4": "卡达蒙·斯蒂勒斯 #3,第二部分", + "advancement.hexcasting:lore/.cardamom4.desc": "卡达蒙·斯蒂勒斯寄给她父亲的信,#3,第二部分", + "advancement.hexcasting:lore/.cardamom5": "卡达蒙·斯蒂勒斯 #4", + "advancement.hexcasting:lore/.cardamom5.desc": "卡达蒙·斯蒂勒斯寄给她父亲的信,#4", + "advancement.hexcasting:lore/.experiment1": "“毡障”实例笔记", + "advancement.hexcasting:lore/.experiment2": "“毡障”测试日志", + "advancement.hexcasting:lore/.inventory": "回收日志 #72", + "advancement.hexcasting:opened_eyes": "恍然大悟", + "advancement.hexcasting:opened_eyes.desc": "用你的一部分意识向自然换取一个咒术。让自然再拿些又会怎样呢?", + "advancement.hexcasting:root": "咒法学研究", + "advancement.hexcasting:root.desc": "在地底深处找到并采集不断生长着的、凝聚的媒质", + "advancement.hexcasting:wasteful_cast": "勤俭节约……", + "advancement.hexcasting:wasteful_cast.desc": "施放咒术时浪费巨量媒质", + "advancement.hexcasting:y_u_no_cast_angy": "盲目绘制", + "advancement.hexcasting:y_u_no_cast_angy.desc": "尝试根据卷轴施放法术,然后失败", + "block.hexcasting.akashic_bookshelf": "阿卡夏书架", + "block.hexcasting.akashic_connector": "阿卡夏桥接块", + "block.hexcasting.akashic_record": "阿卡夏记录", + "block.hexcasting.amethyst_bricks": "紫水晶砖", + "block.hexcasting.amethyst_bricks_small": "紫水晶小型砖", + "block.hexcasting.amethyst_dust_block": "紫水晶粉块", + "block.hexcasting.amethyst_edified_leaves": "晶紫启迪树叶", + "block.hexcasting.amethyst_pillar": "紫水晶柱", + "block.hexcasting.amethyst_sconce": "紫水晶灯台", + "block.hexcasting.amethyst_tiles": "紫水晶瓦", + "block.hexcasting.ancient_scroll_paper": "远古纸卷轴", + "block.hexcasting.ancient_scroll_paper_lantern": "远古纸灯笼", + "block.hexcasting.aventurine_edified_leaves": "砂蓝启迪树叶", + "block.hexcasting.citrine_edified_leaves": "晶黄启迪树叶", + "block.hexcasting.conjured_block": "构筑的方块", + "block.hexcasting.conjured_light": "构筑的光源", + "block.hexcasting.directrix.boolean": "牧羊人导向石", + "block.hexcasting.directrix.empty": "空白导向石", + "block.hexcasting.directrix.redstone": "石匠导向石", + "block.hexcasting.edified_button": "启迪木按钮", + "block.hexcasting.edified_door": "启迪木门", + "block.hexcasting.edified_fence": "启迪木栅栏", + "block.hexcasting.edified_fence_gate": "启迪木栅栏门", + "block.hexcasting.edified_log": "启迪原木", + "block.hexcasting.edified_log_amethyst": "晶紫启迪原木", + "block.hexcasting.edified_log_aventurine": "砂蓝启迪原木", + "block.hexcasting.edified_log_citrine": "晶黄启迪原木", + "block.hexcasting.edified_log_purple": "紫色启迪原木", + "block.hexcasting.edified_panel": "启迪木块", + "block.hexcasting.edified_planks": "启迪木板", + "block.hexcasting.edified_pressure_plate": "启迪木压力板", + "block.hexcasting.edified_slab": "启迪木台阶", + "block.hexcasting.edified_stairs": "启迪木楼梯", + "block.hexcasting.edified_tile": "启迪木方砖", + "block.hexcasting.edified_trapdoor": "启迪木活板门", + "block.hexcasting.edified_wood": "启迪木", + "block.hexcasting.impetus.empty": "空白促动石", + "block.hexcasting.impetus.look": "制箭师促动石", + "block.hexcasting.impetus.redstone": "牧师促动石", + "block.hexcasting.impetus.rightclick": "工具匠促动石", + "block.hexcasting.quenched_allay": "淬灵晶块", + "block.hexcasting.quenched_allay_bricks": "淬灵晶砖", + "block.hexcasting.quenched_allay_bricks_small": "淬灵晶小型砖", + "block.hexcasting.quenched_allay_tiles": "淬灵晶瓦", + "block.hexcasting.scroll_paper": "纸卷轴", + "block.hexcasting.scroll_paper_lantern": "纸灯笼", + "block.hexcasting.slate": "石板", + "block.hexcasting.slate_amethyst_bricks": "板岩紫晶砖", + "block.hexcasting.slate_amethyst_bricks_small": "板岩紫晶小型砖", + "block.hexcasting.slate_amethyst_pillar": "板岩紫晶柱", + "block.hexcasting.slate_amethyst_tiles": "板岩紫晶瓦", + "block.hexcasting.slate_block": "板岩块", + "block.hexcasting.slate_bricks": "板岩砖", + "block.hexcasting.slate_bricks_small": "板岩小型砖", + "block.hexcasting.slate_pillar": "板岩柱", + "block.hexcasting.slate_tiles": "板岩瓦", + "block.hexcasting.slate.blank": "空白石板", + "block.hexcasting.slate.written": "有图案的石板", + "block.hexcasting.stripped_edified_log": "去皮启迪原木", + "block.hexcasting.stripped_edified_wood": "去皮启迪木", + "command.hexcasting.brainsweep": "已清除%s的意识", + "command.hexcasting.brainsweep.fail.already": "%s早已没有了意识", + "command.hexcasting.brainsweep.fail.badtype": "%s不是生物", + "command.hexcasting.pats.all": "给予%2$s所有%1$d张卷轴", + "command.hexcasting.pats.listing": "此世界特有的图案:", + "command.hexcasting.pats.specific.success": "给予%3$sID为%2$s的%1$s", + "command.hexcasting.recalc": "已重生成此世界特有图案", + "death.attack.hexcasting.overcast": "%s的意识消散为了能量", + "death.attack.hexcasting.overcast.player": "在与%2$s战斗时,%1$s的意识消散为了能量", + "effect.hexcasting.enlarge_grid": "明晰", + "effect.hexcasting.shrink_grid": "蒙翳", + "emi.category.hexcasting.brainsweep": "剥离意识", + "emi.category.hexcasting.craft.battery": "制作试剂瓶", + "emi.category.hexcasting.edify": "启迪树苗", + "emi.category.hexcasting.villager_leveling": "职业等级", + "emi.category.hexcasting.villager_profession": "村民职业", + "entity.hexcasting.wall_scroll": "壁挂卷轴", + "gui.hexcasting.spellcasting": "咒术网格", + "hexcasting.action.book.hexcasting:arccos": "反余弦之纯化", + "hexcasting.action.book.hexcasting:arcsin": "反正弦之纯化", + "hexcasting.action.book.hexcasting:arctan": "反正切之纯化", + "hexcasting.action.book.hexcasting:arctan2": "反正切之馏化", + "hexcasting.action.book.hexcasting:bool_to_number": "数秘术师之纯化", + "hexcasting.action.book.hexcasting:const/vec/.x": "向量之精思,+X/-X型", + "hexcasting.action.book.hexcasting:const/vec/.y": "向量之精思,+Y/-Y型", + "hexcasting.action.book.hexcasting:const/vec/.z": "向量之精思,+Z/-Z型", + "hexcasting.action.book.hexcasting:div": "除法之馏化", + "hexcasting.action.book.hexcasting:get_entity_height": "测高仪之纯化", + "hexcasting.action.book.hexcasting:get_entity/.animal": "实体之纯化:动物", + "hexcasting.action.book.hexcasting:get_entity/.item": "实体之纯化:物品", + "hexcasting.action.book.hexcasting:get_entity/.living": "实体之纯化:生物", + "hexcasting.action.book.hexcasting:get_entity/.monster": "实体之纯化:怪物", + "hexcasting.action.book.hexcasting:get_entity/.player": "实体之纯化:玩家", + "hexcasting.action.book.hexcasting:mask": "簿记员之策略", + "hexcasting.action.book.hexcasting:mul": "乘法之馏化", + "hexcasting.action.book.hexcasting:number": "数字之精思", + "hexcasting.action.book.hexcasting:read/entity": "编年史家之纯化", + "hexcasting.action.book.hexcasting:zone_entity": "区域之馏化:任意", + "hexcasting.action.book.hexcasting:zone_entity/.animal": "区域之馏化:动物", + "hexcasting.action.book.hexcasting:zone_entity/.item": "区域之馏化:物品", + "hexcasting.action.book.hexcasting:zone_entity/.living": "区域之馏化:生物", + "hexcasting.action.book.hexcasting:zone_entity/.monster": "区域之馏化:怪物", + "hexcasting.action.book.hexcasting:zone_entity/.not_animal": "区域之馏化:非动物", + "hexcasting.action.book.hexcasting:zone_entity/.not_item": "区域之馏化:非物品", + "hexcasting.action.book.hexcasting:zone_entity/.not_living": "区域之馏化:非生物", + "hexcasting.action.book.hexcasting:zone_entity/.not_monster": "区域之馏化:非怪物", + "hexcasting.action.book.hexcasting:zone_entity/.not_player": "区域之馏化:非玩家", + "hexcasting.action.book.hexcasting:zone_entity/.player": "区域之馏化:玩家", + "hexcasting.action.hexcasting:2dup": "狄俄斯库里之策略", + "hexcasting.action.hexcasting:abs": "长度之纯化", + "hexcasting.action.hexcasting:add": "加法之馏化", + "hexcasting.action.hexcasting:add_motion": "驱动", + "hexcasting.action.hexcasting:akashic/read": "阿卡夏之馏化", + "hexcasting.action.hexcasting:akashic/write": "阿卡夏之策略", + "hexcasting.action.hexcasting:and": "合取之馏化", + "hexcasting.action.hexcasting:append": "整合之馏化", + "hexcasting.action.hexcasting:arccos": "反余弦之纯化", + "hexcasting.action.hexcasting:arcsin": "反正弦之纯化", + "hexcasting.action.hexcasting:arctan": "反正切之纯化", + "hexcasting.action.hexcasting:arctan2": "反正切之馏化", + "hexcasting.action.hexcasting:beep": "弹奏音符", + "hexcasting.action.hexcasting:blink": "闪现", + "hexcasting.action.hexcasting:bonemeal": "催生", + "hexcasting.action.hexcasting:bool_coerce": "占卜师之纯化", + "hexcasting.action.hexcasting:brainsweep": "剥离意识", + "hexcasting.action.hexcasting:break_block": "破坏方块", + "hexcasting.action.hexcasting:ceil": "取顶之纯化", + "hexcasting.action.hexcasting:circle/.bounds/max": "主要折角之精思", + "hexcasting.action.hexcasting:circle/.bounds/min": "次要折角之精思", + "hexcasting.action.hexcasting:circle/.impetus_dir": "磁石之精思", + "hexcasting.action.hexcasting:circle/.impetus_pos": "指路石之精思", + "hexcasting.action.hexcasting:coerce_axial": "轴向之纯化", + "hexcasting.action.hexcasting:colorize": "内化染色剂", + "hexcasting.action.hexcasting:conjure_block": "构筑方块", + "hexcasting.action.hexcasting:conjure_light": "构筑光源", + "hexcasting.action.hexcasting:const/.double/.e": "欧拉之精思", + "hexcasting.action.hexcasting:const/.double/.pi": "弧之精思", + "hexcasting.action.hexcasting:const/.double/.tau": "圆之精思", + "hexcasting.action.hexcasting:const/.false": "假之精思", + "hexcasting.action.hexcasting:const/.null": "空元之精思", + "hexcasting.action.hexcasting:const/.true": "真之精思", + "hexcasting.action.hexcasting:const/.vec/.0": "向量之精思,零型", + "hexcasting.action.hexcasting:const/.vec/.nx": "向量之精思,-X型", + "hexcasting.action.hexcasting:const/.vec/.ny": "向量之精思,-Y型", + "hexcasting.action.hexcasting:const/.vec/.nz": "向量之精思,-Z型", + "hexcasting.action.hexcasting:const/.vec/.px": "向量之精思,+X型", + "hexcasting.action.hexcasting:const/.vec/.py": "向量之精思,+Y型", + "hexcasting.action.hexcasting:const/.vec/.pz": "向量之精思,+Z型", + "hexcasting.action.hexcasting:construct": "演讲者之馏化", + "hexcasting.action.hexcasting:construct_vec": "向量之提整", + "hexcasting.action.hexcasting:cos": "余弦之纯化", + "hexcasting.action.hexcasting:craft/artifact": "制作造物", + "hexcasting.action.hexcasting:craft/battery": "制作试剂瓶", + "hexcasting.action.hexcasting:craft/cypher": "制作杂件", + "hexcasting.action.hexcasting:craft/trinket": "制作缀品", + "hexcasting.action.hexcasting:create_lava": "制造熔岩", + "hexcasting.action.hexcasting:create_water": "制造水源", + "hexcasting.action.hexcasting:cycle_variant": "施法者之魅力", + "hexcasting.action.hexcasting:deconstruct": "演讲者之分解", + "hexcasting.action.hexcasting:deconstruct_vec": "向量之拆解", + "hexcasting.action.hexcasting:destroy_water": "清除流体", + "hexcasting.action.hexcasting:dispel_rain": "驱雨", + "hexcasting.action.hexcasting:div": "除法之馏化", + "hexcasting.action.hexcasting:duplicate": "双子之分解", + "hexcasting.action.hexcasting:duplicate_n": "双子之策略", + "hexcasting.action.hexcasting:edify": "启迪树苗", + "hexcasting.action.hexcasting:empty_list": "空无之精思", + "hexcasting.action.hexcasting:entity_pos/eye": "指南针之纯化", + "hexcasting.action.hexcasting:entity_pos/foot": "指南针之纯化,第二型", + "hexcasting.action.hexcasting:equals": "相等之馏化", + "hexcasting.action.hexcasting:erase": "清除物品", + "hexcasting.action.hexcasting:eval": "赫尔墨斯之策略", + "hexcasting.action.hexcasting:eval/cc": "伊里斯之策略", + "hexcasting.action.hexcasting:explode": "爆炸", + "hexcasting.action.hexcasting:explode/fire": "火球", + "hexcasting.action.hexcasting:extinguish": "广域熄灭", + "hexcasting.action.hexcasting:fisherman": "渔夫之策略", + "hexcasting.action.hexcasting:fisherman/copy": "渔夫之策略,第二型", + "hexcasting.action.hexcasting:flight": "翱翔", + "hexcasting.action.hexcasting:flight/can_fly": "飞行员之纯化", + "hexcasting.action.hexcasting:flight/range": "隐士之飞行", + "hexcasting.action.hexcasting:flight/time": "旅者之飞行", + "hexcasting.action.hexcasting:floor": "取底之纯化", + "hexcasting.action.hexcasting:for_each": "托特之策略", + "hexcasting.action.hexcasting:get_caster": "意识之精思", + "hexcasting.action.hexcasting:get_entity": "实体之纯化", + "hexcasting.action.hexcasting:get_entity_height": "测高仪之纯化", + "hexcasting.action.hexcasting:get_entity_look": "照准仪之纯化", + "hexcasting.action.hexcasting:get_entity_velocity": "步伐之纯化", + "hexcasting.action.hexcasting:get_entity/.animal": "实体之纯化:动物", + "hexcasting.action.hexcasting:get_entity/.item": "实体之纯化:物品", + "hexcasting.action.hexcasting:get_entity/.living": "实体之纯化:生物", + "hexcasting.action.hexcasting:get_entity/.monster": "实体之纯化:怪物", + "hexcasting.action.hexcasting:get_entity/.player": "实体之纯化:玩家", + "hexcasting.action.hexcasting:greater": "至大之馏化", + "hexcasting.action.hexcasting:greater_eq": "至大之馏化,第二型", + "hexcasting.action.hexcasting:halt": "卡戎之策略", + "hexcasting.action.hexcasting:if": "占卜师之提整", + "hexcasting.action.hexcasting:ignite": "点燃", + "hexcasting.action.hexcasting:index": "选择之馏化", + "hexcasting.action.hexcasting:index_of": "定位器之馏化", + "hexcasting.action.hexcasting:interop/.gravity/.get": "引力之纯化", + "hexcasting.action.hexcasting:interop/.gravity/.set": "改变引力", + "hexcasting.action.hexcasting:interop/.pehkui/.get": "格列佛之纯化", + "hexcasting.action.hexcasting:interop/.pehkui/.set": "改变大小", + "hexcasting.action.hexcasting:last_n_list": "群体之策略", + "hexcasting.action.hexcasting:less": "至小之馏化", + "hexcasting.action.hexcasting:less_eq": "至小之馏化,第二型", + "hexcasting.action.hexcasting:lightning": "召雷", + "hexcasting.action.hexcasting:logarithm": "对数之馏化", + "hexcasting.action.hexcasting:modulo": "余数之馏化", + "hexcasting.action.hexcasting:mul": "乘法之馏化", + "hexcasting.action.hexcasting:not": "取非之纯化", + "hexcasting.action.hexcasting:not_equals": "不等之馏化", + "hexcasting.action.hexcasting:or": "析取之馏化", + "hexcasting.action.hexcasting:over": "勘探者之策略", + "hexcasting.action.hexcasting:place_block": "放置方块", + "hexcasting.action.hexcasting:potion/.absorption": "黑阳当空", + "hexcasting.action.hexcasting:potion/.haste": "红阳当空", + "hexcasting.action.hexcasting:potion/.levitation": "蓝阳西沉", + "hexcasting.action.hexcasting:potion/.night_vision": "蓝阳当空", + "hexcasting.action.hexcasting:potion/.poison": "红阳西沉", + "hexcasting.action.hexcasting:potion/.regeneration": "白阳当空", + "hexcasting.action.hexcasting:potion/.slowness": "绿阳西沉", + "hexcasting.action.hexcasting:potion/.strength": "绿阳当空", + "hexcasting.action.hexcasting:potion/.weakness": "白阳西沉", + "hexcasting.action.hexcasting:potion/.wither": "黑阳西沉", + "hexcasting.action.hexcasting:pow": "乘方之馏化", + "hexcasting.action.hexcasting:print": "揭示", + "hexcasting.action.hexcasting:random": "熵之精思", + "hexcasting.action.hexcasting:raycast": "弓箭手之馏化", + "hexcasting.action.hexcasting:raycast/axis": "建筑师之馏化", + "hexcasting.action.hexcasting:raycast/entity": "侦查员之馏化", + "hexcasting.action.hexcasting:read": "书吏之精思", + "hexcasting.action.hexcasting:read/entity": "编年史家之纯化", + "hexcasting.action.hexcasting:read/local": "雾尼之精思", + "hexcasting.action.hexcasting:readable": "审计员之精思", + "hexcasting.action.hexcasting:readable/entity": "审计员之纯化", + "hexcasting.action.hexcasting:recharge": "重新充能", + "hexcasting.action.hexcasting:remove_from": "切除器之馏化", + "hexcasting.action.hexcasting:replace": "外科医师之提整", + "hexcasting.action.hexcasting:reverse": "逆行之纯化", + "hexcasting.action.hexcasting:rotate": "轮换之策略", + "hexcasting.action.hexcasting:rotate_reverse": "轮换之策略,第二型", + "hexcasting.action.hexcasting:sentinel/.create": "召唤哨卫", + "hexcasting.action.hexcasting:sentinel/.create/great": "召唤卓越哨卫", + "hexcasting.action.hexcasting:sentinel/.destroy": "驱除哨卫", + "hexcasting.action.hexcasting:sentinel/.get_pos": "定位哨卫", + "hexcasting.action.hexcasting:sentinel/.wayfind": "寻路至哨卫", + "hexcasting.action.hexcasting:sin": "正弦之纯化", + "hexcasting.action.hexcasting:singleton": "单体之纯化", + "hexcasting.action.hexcasting:slice": "选择之提整", + "hexcasting.action.hexcasting:splat": "群体之拆解", + "hexcasting.action.hexcasting:stack_len": "群体之精思", + "hexcasting.action.hexcasting:sub": "减法之馏化", + "hexcasting.action.hexcasting:summon_rain": "召雨", + "hexcasting.action.hexcasting:swap": "弄臣之策略", + "hexcasting.action.hexcasting:swizzle": "骗徒之策略", + "hexcasting.action.hexcasting:tan": "正切之纯化", + "hexcasting.action.hexcasting:teleport/great": "卓越传送", + "hexcasting.action.hexcasting:thanatos": "塔纳托斯之精思", + "hexcasting.action.hexcasting:tuck": "送葬者之策略", + "hexcasting.action.hexcasting:unappend": "派生之分解", + "hexcasting.action.hexcasting:unique": "唯一之纯化", + "hexcasting.action.hexcasting:writable": "估价员之精思", + "hexcasting.action.hexcasting:writable/entity": "估价员之纯化", + "hexcasting.action.hexcasting:write": "书吏之策略", + "hexcasting.action.hexcasting:write/entity": "编年史家之策略", + "hexcasting.action.hexcasting:write/local": "福金之策略", + "hexcasting.action.hexcasting:xor": "互斥之馏化", + "hexcasting.action.hexcasting:zone_entity": "区域之馏化:任意", + "hexcasting.action.hexcasting:zone_entity/.animal": "区域之馏化:动物", + "hexcasting.action.hexcasting:zone_entity/.item": "区域之馏化:物品", + "hexcasting.action.hexcasting:zone_entity/.living": "区域之馏化:生物", + "hexcasting.action.hexcasting:zone_entity/.monster": "区域之馏化:怪物", + "hexcasting.action.hexcasting:zone_entity/.not_animal": "区域之馏化:非动物", + "hexcasting.action.hexcasting:zone_entity/.not_item": "区域之馏化:非物品", + "hexcasting.action.hexcasting:zone_entity/.not_living": "区域之馏化:非生物", + "hexcasting.action.hexcasting:zone_entity/.not_monster": "区域之馏化:非怪物", + "hexcasting.action.hexcasting:zone_entity/.not_player": "区域之馏化:非玩家", + "hexcasting.action.hexcasting:zone_entity/.player": "区域之馏化:玩家", + "hexcasting.attributes.ambit_radius": "玩家影响范围半径", + "hexcasting.attributes.feeble_mind": "孱弱意识", + "hexcasting.attributes.grid_zoom": "咒术网格大小", + "hexcasting.attributes.media_consumption": "媒质消耗", + "hexcasting.attributes.scry_sight": "探知视觉", + "hexcasting.attributes.sentinel_radius": "哨卫影响范围半径", + "hexcasting.category.basics": "初入咒法", + "hexcasting.category.basics.desc": "研究这种魔法的人士会用$(l:items/staff)$(item)法杖/$在空中绘制奇异的图案来施放他们口中的“$(hex)咒术/$”, 他们也会让$(l:items/hexcasting)$(item)强大的魔法物品/$替他们施法。 我要如何复现呢?", + "hexcasting.category.casting": "咒法学", + "hexcasting.category.casting.desc": "我好像已经开始理解以前的咒法师们是如何施放$(hex)咒术/$的了!虽然有些复杂, 但我坚信我能理清其中脉络。继续研究吧……", + "hexcasting.category.great_spells": "卓越法术", + "hexcasting.category.great_spells.desc": "这类法术据信极难施放,但也极为强力。 记载它们的文献极为$(l:items/scroll)少见/$(据称理由充分)。 这也许只是某些消亡的老古董口中的胡言乱语,不过——它们只是简单的图案罢了。$(br2) 试试看又能出什么错呢?", + "hexcasting.category.greatwork": "卓伟之作", + "hexcasting.category.greatwork.desc": "我所见……甚多。我已……经历……湮灭与解构与重构。 我已听闻世上的原子在被翻转而后被搅乱而后消散为能量时的尖啸。 我已见我已见我已冂$(k)get stick bugged lmao/$", + "hexcasting.category.interop": "模组联动", + "hexcasting.category.interop.desc": "好像我装了某些能和咒法学联动的模组!详情如下。", + "hexcasting.category.items": "物品", + "hexcasting.category.items.desc": "这部分主要介绍我在研究过程中可能要用到的魔法物品和各类神秘物品。", + "hexcasting.category.lore": "故事", + "hexcasting.category.lore.desc": "我发现了些与我所研究的学问没有直接关系的信件和文本。 但是,其中也许记载了某些历史上发生过的事。还是需要好好读读……", + "hexcasting.category.patterns": "图案", + "hexcasting.category.patterns.desc": "我所发现的各式图案,和它们的功用。", + "hexcasting.category.spells": "法术", + "hexcasting.category.spells.desc": "能以魔法影响到世界的图案和操作。", + "hexcasting.circles.many_exits": "%s处的媒质流的可选去路过多", + "hexcasting.circles.no_exit": "%s处的媒质流无法找到出口", + "hexcasting.debug.all_media": "所有媒质", + "hexcasting.debug.infinite_media": "无限", + "hexcasting.debug.media_inserted": "%s - 存入的媒质:%s", + "hexcasting.debug.media_inserted.with_dust": "%s - 存入的媒质:%s(计%s个紫水晶粉)", + "hexcasting.debug.media_withdrawn": "%s - 取出的媒质:%s", + "hexcasting.debug.media_withdrawn.with_dust": "%s - 取出的媒质:%s(计%s个紫水晶粉)", + "hexcasting.entry.101": "咒术 101", + "hexcasting.entry.abacus": "算盘", + "hexcasting.entry.advanced_math": "高阶数学", + "hexcasting.entry.akashic_patterns": "阿卡夏图案", + "hexcasting.entry.akashiclib": "阿卡夏图书馆", + "hexcasting.entry.amethyst": "紫水晶", + "hexcasting.entry.ancient_cyphers": "远古杂件", + "hexcasting.entry.basic_spell": "基础法术", + "hexcasting.entry.basics_pattern": "基础图案", + "hexcasting.entry.blockworks": "方块工程", + "hexcasting.entry.brainsweeping": "关于意识的剥离", + "hexcasting.entry.circle_patterns": "法术环图案", + "hexcasting.entry.consts": "常量", + "hexcasting.entry.couldnt_cast": "挫折", + "hexcasting.entry.creative_items": "仅创造物品", + "hexcasting.entry.decoration": "装饰性方块", + "hexcasting.entry.directrix": "导向石", + "hexcasting.entry.edified": "启迪树", + "hexcasting.entry.entities": "实体", + "hexcasting.entry.fanciful_staves": "华丽法杖", + "hexcasting.entry.flights": "飞行", + "hexcasting.entry.focus": "核心", + "hexcasting.entry.geodes": "晶洞", + "hexcasting.entry.hexcasting": "施法物品", + "hexcasting.entry.hexcasting_spell": "制作施法物品", + "hexcasting.entry.impetus": "促动石", + "hexcasting.entry.influences": "虚指", + "hexcasting.entry.interop": "模组联动", + "hexcasting.entry.interop.gravity": "Gravity Changer", + "hexcasting.entry.interop.pehkui": "Pehkui", + "hexcasting.entry.itempicking": "处理物品", + "hexcasting.entry.jeweler_hammer": "珠宝匠锤", + "hexcasting.entry.lens": "探知透镜", + "hexcasting.entry.lists": "列表操作", + "hexcasting.entry.logic": "逻辑运算", + "hexcasting.entry.lore.cardamom1": "卡达蒙的信,#1", + "hexcasting.entry.lore.cardamom2": "卡达蒙的信,#2", + "hexcasting.entry.lore.cardamom3": "卡达蒙的信,#3", + "hexcasting.entry.lore.cardamom4": "卡达蒙的信,#4", + "hexcasting.entry.lore.cardamom5": "卡达蒙的信,#5", + "hexcasting.entry.lore.experiment1": "“毡障”实例笔记", + "hexcasting.entry.lore.experiment2": "“毡障”测试日志", + "hexcasting.entry.lore.inventory": "回收日志 #72", + "hexcasting.entry.math": "数学", + "hexcasting.entry.media": "媒质", + "hexcasting.entry.meta": "元运行", + "hexcasting.entry.mishaps": "事故", + "hexcasting.entry.mishaps2": "启迪后事故", + "hexcasting.entry.nadirs": "天底法术", + "hexcasting.entry.naming": "操作命名法", + "hexcasting.entry.numbers": "数字常量", + "hexcasting.entry.patterns_as_iotas": "将图案用作 Iota", + "hexcasting.entry.phials": "媒质之瓶", + "hexcasting.entry.pigments": "染色剂", + "hexcasting.entry.potions": "咒术药水", + "hexcasting.entry.quenching_allays": "淬炼悦灵", + "hexcasting.entry.readers_guide": "如何阅读这一章节", + "hexcasting.entry.readwrite": "读取与写入", + "hexcasting.entry.scroll": "卷轴", + "hexcasting.entry.sentinels": "哨卫", + "hexcasting.entry.sets": "集合", + "hexcasting.entry.slate": "石板", + "hexcasting.entry.spellbook": "法术书", + "hexcasting.entry.spellcircles": "法术环", + "hexcasting.entry.stack": "栈", + "hexcasting.entry.stackmanip": "栈操作", + "hexcasting.entry.staff": "法杖", + "hexcasting.entry.start_to_see": "我看到了什么?", + "hexcasting.entry.the_work": "卓伟之作", + "hexcasting.entry.thought_knot": "结念绳", + "hexcasting.entry.vectors": "向量入门", + "hexcasting.entry.weather_manip": "天气操控", + "hexcasting.entry.zeniths": "天顶法术", + "hexcasting.iota.hexcasting:boolean": "布尔值", + "hexcasting.iota.hexcasting:boolean.desc": "一个布尔值", + "hexcasting.iota.hexcasting:continution": "续体", + "hexcasting.iota.hexcasting:continution.desc": "一个跳转iota", + "hexcasting.iota.hexcasting:double": "数", + "hexcasting.iota.hexcasting:double.desc": "一个数", + "hexcasting.iota.hexcasting:entity": "实体", + "hexcasting.iota.hexcasting:entity.desc": "一个实体", + "hexcasting.iota.hexcasting:garbage": "垃圾", + "hexcasting.iota.hexcasting:garbage.desc": "垃圾", + "hexcasting.iota.hexcasting:list": "列表", + "hexcasting.iota.hexcasting:list.desc": "一个列表", + "hexcasting.iota.hexcasting:null": "Null", + "hexcasting.iota.hexcasting:null.desc": "一个空值", + "hexcasting.iota.hexcasting:pattern": "图案", + "hexcasting.iota.hexcasting:pattern.desc": "一个图案", + "hexcasting.iota.hexcasting:vec3": "向量", + "hexcasting.iota.hexcasting:vec3.desc": "一个向量", + "hexcasting.landing": "我似乎发现了一种全新的魔法,一种在六边形网格上画各式奇诡图案的魔法。 它深深地迷住了我。我决定着手撰写一本笔记,以此记述我的想法和研究成果。 $(br2)$(l:https://forum.petra-k.at/index.php)论坛链接/$", + "hexcasting.loot_hex.ascend": "升空", + "hexcasting.loot_hex.beckon": "召来", + "hexcasting.loot_hex.blastoff": "起飞", + "hexcasting.loot_hex.blink": "闪现", + "hexcasting.loot_hex.detonate": "引爆", + "hexcasting.loot_hex.flight_zone": "飞行区", + "hexcasting.loot_hex.growth": "生长", + "hexcasting.loot_hex.heat_wave": "热浪", + "hexcasting.loot_hex.illuminate": "耀明", + "hexcasting.loot_hex.kindle": "燃焰", + "hexcasting.loot_hex.lunge": "猛冲", + "hexcasting.loot_hex.radar": "雷达", + "hexcasting.loot_hex.shatter": "粉碎", + "hexcasting.loot_hex.shockwave": "冲击波", + "hexcasting.loot_hex.sidestep": "侧闪", + "hexcasting.loot_hex.wither_wave": "凋零波纹", + "hexcasting.message.cant_great_spell": "奇怪,法术没起效……也许我还不够熟练?", + "hexcasting.message.cant_overcast": "这个咒术需求的媒质量比我有的还多……我应该再算几遍。", + "hexcasting.mishap": "%s:%s", + "hexcasting.mishap.already_brainswept": "此意识已被使用", + "hexcasting.mishap.bad_block": "本应在%2$s处接受%1$s,而实际接受了%3$s", + "hexcasting.mishap.bad_block.replaceable": "一个可放置方块的地方", + "hexcasting.mishap.bad_block.sapling": "一个树苗", + "hexcasting.mishap.bad_brainsweep": "%s排斥此生物的意识", + "hexcasting.mishap.bad_caster": "试图运行的图案需要强大的意识才能承受", + "hexcasting.mishap.bad_entity": "需要%s,而实际接受了%s", + "hexcasting.mishap.bad_item": "需要%s,而实际持有%d个%s", + "hexcasting.mishap.bad_item.bottle": "一个玻璃瓶", + "hexcasting.mishap.bad_item.colorizer": "一个染色剂", + "hexcasting.mishap.bad_item.eraseable": "一个可清除的物品", + "hexcasting.mishap.bad_item.iota": "一个可以存储iota的地方", + "hexcasting.mishap.bad_item.iota.read": "一个可以读出iota的地方", + "hexcasting.mishap.bad_item.iota.readonly": "一个能够接受%s的地方", + "hexcasting.mishap.bad_item.iota.write": "一个可以写入iota的地方", + "hexcasting.mishap.bad_item.media": "含有媒质的物品", + "hexcasting.mishap.bad_item.media_for_battery": "天然含有媒质的物品", + "hexcasting.mishap.bad_item.offhand": "需要在另一只手里持有%s,而实际持有%d个%s", + "hexcasting.mishap.bad_item.only_one": "仅一个物品", + "hexcasting.mishap.bad_item.rechargable": "一个可重新充能的物品", + "hexcasting.mishap.bad_item.variant": "一个有变种的物品", + "hexcasting.mishap.circle.bool_directrix.empty_stack": "%s处的栈为空栈", + "hexcasting.mishap.circle.bool_directrix.no_bool": "%s处的iota实际为%s,而非布尔值", + "hexcasting.mishap.disallowed": "已被服务器管理员禁用于施法", + "hexcasting.mishap.disallowed_circle": "已被服务器管理员禁用于法术环", + "hexcasting.mishap.divide_by_zero.cos": "%s的余弦", + "hexcasting.mishap.divide_by_zero.divide": "试图用%2$s除%1$s", + "hexcasting.mishap.divide_by_zero.exponent": "试图计算%s的%s", + "hexcasting.mishap.divide_by_zero.logarithm": "试图计算%s以%s为底的对数", + "hexcasting.mishap.divide_by_zero.power": "%s次幂", + "hexcasting.mishap.divide_by_zero.project": "试图将%s投影至%s", + "hexcasting.mishap.divide_by_zero.sin": "%s的正弦", + "hexcasting.mishap.divide_by_zero.zero": "零", + "hexcasting.mishap.divide_by_zero.zero.power": "零次幂", + "hexcasting.mishap.divide_by_zero.zero.vec": "零向量", + "hexcasting.mishap.entity_too_far": "%s超出影响范围", + "hexcasting.mishap.eval_too_much": "运行了过多图案", + "hexcasting.mishap.immune_entity": "无法影响到%s", + "hexcasting.mishap.invalid_operator_args.many": "在栈下标为%2$d到%3$d处获取到%1$s个意外iota:%4$s", + "hexcasting.mishap.invalid_operator_args.one": "在栈下标为%d处获取到意外iota:%s", + "hexcasting.mishap.invalid_pattern": "图案%s不对应任何操作", + "hexcasting.mishap.invalid_pattern_generic": "该图案不对应任何操作", + "hexcasting.mishap.invalid_spell_datum_type": "尝试将某无效类型的值用作SpellDatum:%s(class %s)。这是模组中的漏洞。", + "hexcasting.mishap.invalid_value": "本应在栈下标为%2$s处接受%1$s,而实际接受了%3$s:%4$s", + "hexcasting.mishap.invalid_value.bool_commute": "一个布尔值、0或1", + "hexcasting.mishap.invalid_value.class.boolean": "一个布尔值", + "hexcasting.mishap.invalid_value.class.continuation": "一个跳转iota", + "hexcasting.mishap.invalid_value.class.double": "一个数", + "hexcasting.mishap.invalid_value.class.entity": "一个实体", + "hexcasting.mishap.invalid_value.class.entity_or_vector": "一个实体或向量", + "hexcasting.mishap.invalid_value.class.entity.item": "一个物品实体", + "hexcasting.mishap.invalid_value.class.entity.living": "一个生物实体", + "hexcasting.mishap.invalid_value.class.entity.mob": "一个生物", + "hexcasting.mishap.invalid_value.class.entity.player": "一个玩家", + "hexcasting.mishap.invalid_value.class.garbage": "垃圾", + "hexcasting.mishap.invalid_value.class.list": "一个列表", + "hexcasting.mishap.invalid_value.class.null": "Null", + "hexcasting.mishap.invalid_value.class.pattern": "一个图案", + "hexcasting.mishap.invalid_value.class.unknown": "(未知,这是个漏洞)", + "hexcasting.mishap.invalid_value.class.vector": "一个向量", + "hexcasting.mishap.invalid_value.double.between": "一个介于%d和%d之间的数", + "hexcasting.mishap.invalid_value.double.positive": "一个正数", + "hexcasting.mishap.invalid_value.double.positive.less": "一个小于%d的正数", + "hexcasting.mishap.invalid_value.double.positive.less.equal": "一个小于等于%d的正数", + "hexcasting.mishap.invalid_value.evaluatable": "可运行的事物", + "hexcasting.mishap.invalid_value.int": "一个整数", + "hexcasting.mishap.invalid_value.int.between": "一个介于%d和%d之间的整数", + "hexcasting.mishap.invalid_value.int.positive": "一个正整数", + "hexcasting.mishap.invalid_value.int.positive.less": "一个小于%d的正整数", + "hexcasting.mishap.invalid_value.int.positive.less.equal": "一个小于等于%d的正整数", + "hexcasting.mishap.invalid_value.list.pattern": "一个由图案组成的列表", + "hexcasting.mishap.invalid_value.numlist": "一个整数或列表", + "hexcasting.mishap.invalid_value.numvec": "一个数或向量", + "hexcasting.mishap.location_bad_dimension": "无法在此维度内执行此操作", + "hexcasting.mishap.location_forbidden": "%s并未对你开放", + "hexcasting.mishap.location_out_of_world": "%s不在此世界内", + "hexcasting.mishap.location_too_close_to_out": "%s离世界边界太近了", + "hexcasting.mishap.location_too_far": "%s超出影响范围", + "hexcasting.mishap.no_akashic_record": "%s处无阿卡夏记录", + "hexcasting.mishap.no_args": "本应接受大于等于%s个参数,而实际为空栈", + "hexcasting.mishap.no_item": "需要%s,而实际无对应物品", + "hexcasting.mishap.no_item.offhand": "需要在另一只手里持有%s,而实际无对应物品", + "hexcasting.mishap.no_spell_circle": "需在法术环上执行", + "hexcasting.mishap.not_enough_args": "本应接受大于等于%s个参数,而实际栈高度为%s", + "hexcasting.mishap.others_name": "试图侵犯%s的灵魂的隐私", + "hexcasting.mishap.others_name.self": "试图随意泄露我自己真名的秘密", + "hexcasting.mishap.stack_size": "超出了栈的大小上限", + "hexcasting.mishap.too_many_close_parens": "在绘制反思前未先绘制内省", + "hexcasting.mishap.unescaped": "本应运行一个图案,而实际运行了%s", + "hexcasting.mishap.unknown": "抛出异常(%s)。这是模组中的漏洞。", + "hexcasting.mishap.wrong_dimension": "无法在%2$s中影响到%1$s", + "hexcasting.page.101.1": "施放$(hex)咒术/$难度颇高,也难怪这门学问早已遗落!我必须要仔细回看我的笔记。$(br2)我可以手持$(l:items/staff)$(item)法杖/$按下$(k:use)来施放$(hex)咒术/$,而后就会浮现一个按六边形网格排列的点阵。然后便可在点阵上单击并拖动以在网格的$(media)媒质/$中绘制图案。绘制完一个图案就会立刻执行其对应的操作(详情见后)。", + "hexcasting.page.101.10": "除此之外,似乎没人研究过每块$(l:items/amethyst)$(item)紫水晶/$到底含有$(italic)多少/$媒质。我只能得出,一个$(l:items/amethyst)$(item)紫水晶碎片/$大概和五个$(l:items/amethyst)$(item)紫水晶粉/$相当,而一个$(l:items/amethyst)$(item)充能紫水晶/$大概与十个相当。$(br2)而且奇怪之处在于$(l:items/amethyst)$(item)紫水晶/$的其余形态均不适于施放$(hex)咒术/$。推测是因为紫水晶块和晶簇固化程度过高,导致其无法被轻易拆散为$(media)媒质/$。", + "hexcasting.page.101.11": "还需格外注意的是每次操作会在执行时立刻消耗其所需的$(media)媒质/$,而非在整个咒术结束时消耗。而且,一次操作会消耗一个物品,如只需要一个$(l:items/amethyst)$(item)紫水晶粉/$量的$(media)媒质/$的操作也会消耗一个$(l:items/amethyst)$(item)充能紫水晶/$,前提是物品栏里只有充能紫水晶。$(br2)因此,将紫水晶粉碎是个不错的点子。勤俭节约,吃穿不缺。", + "hexcasting.page.101.12": "还要注意物品栏内一定要有足够的紫水晶。一些古代文献提及,自然也会将施法者的意识用作媒质。文献也有提到那种感觉很糟糕但又奇怪地让人兴奋,“……热烈地溶解入光与能量中……”。也许这就是为何先前的研究者最终都疯了。我完全不觉得为力量而放弃部分意识会对身体有任何$(italic)好处/$。", + "hexcasting.page.101.13": "但也许确实有东西和文献所记述的有所不同了。在我的实验中,我从没遇到过文献中提到的情况。如果$(media)媒质/$不够了,法术只是单纯地施放不了,就好像有什么屏障在防止我被伤到一样。$(br2)对此刨根问底肯定能得出些有意思的结论,但现在就暂时认为它会保护我吧。", + "hexcasting.page.101.14": "我还发现了一则趣闻,主要讲述为何许多魔法研究者都近乎疯癫,是不错的休闲趣味读物,虽然对不上我这里的世界观。$(br2)$(italic)内容警告:部分肉体恐怖与暗示类材料。/$", + "hexcasting.page.101.14.link_text": "Goblin Punch", + "hexcasting.page.101.15": "最后,法术的影响是有距离限制的,最远大约是距离我 32 格处。若试图影响该范围外的事物,法术便不会生效。$(br2)尽管如此,我可以凭借代表玩家的 iota 在任何地方影响他们。当然影响仅限于玩家本身,若玩家周围的环境超出我的影响范围,那些位置便不受影响。$(br)必须谨慎考虑要不要给别人代表我的 iota。友善的$(hex)咒术师/$可凭此助你行事,但那些心怀鬼胎的就不好说了。", + "hexcasting.page.101.2": "当我绘制的图案足以施法时,网格就会消失,而累积起来的$(media)媒质/$也会被释放。按住$(k:sneak)时使用$(l:items/staff)$(item)法杖/$也能清空网格。$(br2)所以图案是如何起效的呢?简而言之:$(li)$(italic)图案/$会执行……$(li)$(italic)操作/$,其会操控……$(li)$(l:casting/stack)$(italic)栈/$,也即一列表的……$(li)$(italic)Iota/$,就是以单位计的信息。", + "hexcasting.page.101.3": "首先,$(thing)图案/$。它们是咒术的必需物,可用它们来操控周围的$(media)媒质/$。部分图案在被绘制时,会执行$(thing)操作/$。操作是$(italic)实际产生/$魔法效果的事物。所有图案都会以某种方式影响$(media)媒质/$,而当这些影响实际有用时,我们就称其为操作。$(br2)$(media)媒质/$是易变的,如果我绘制了无效的图案,栈上某处就会出现$(l:casting/influences)$(action)垃圾/$(详情见后)。", + "hexcasting.page.101.4": "有意思的是,图案整体的$(italic)方向/$完全不影响图案的功用。例如,上图中的两个图案都会执行名为$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$的操作。", + "hexcasting.page.101.4.header": "示例", + "hexcasting.page.101.5": "$(hex)咒术/$是通过按顺序绘制(有效的)图案施放的。每个操作都能完成如下几件事中的一件:$(li)获取有关环境的信息,然后将其置于栈顶。$(li)操控获取到的信息(例如加和两个数)。或者$(li)产生魔法效果,例如召唤闪电或产生爆炸。(这些操作被称为“法术”。)$(p)在开始施放$(hex)咒术/$时会自动创建一个空栈。操作会影响栈顶的若干元素。", + "hexcasting.page.101.6": "例如,$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$会创建一个代表$(italic)我/$,即施法者的 iota,并将其置于栈顶。$(l:patterns/basics#hexcasting:entity_pos/eye)$(action)指南针之纯化/$会接受栈顶的 iota(前提是该 iota 代表一个实体),并将其转换为代表该实体位置的 iota。$(br2)所以,依序绘制上述图案就会在栈顶创建一个代表我的位置的 iota。", + "hexcasting.page.101.7": "$(thing)Iota/$ 可以代表诸如我、我的位置等具体事物,也可以代表其他几种能用$(thing)操作/$进行操控的事物。如下是一份全面介绍:$(li)数(某些文献称之为“双精度浮点数”)。$(li)向量,一种可代表世界中位置、运动或方向的,由三个数组成的集合。$(li)布尔值(简称“布尔”),一种代表真和假的抽象概念的 iota。", + "hexcasting.page.101.8": "$(li)实体,如我自己、鸡、矿车等。$(li)虚指,一种代表抽象概念的奇怪的 iota。$(li)图案,用于制作魔法物品,也用在某些烧脑的咒术中,如$(italic)能施放其他法术的法术/$。还有$(li)列表,可由上述任意类型的 iota 构成的列表,其本身相当于一个 iota。", + "hexcasting.page.101.9": "当然,天上不会掉馅饼。一部分操作、还有所有法术都会消耗$(media)媒质/$。$(br2)我个人认为,$(hex)咒术/$有点像呈现给自然的、对各类操作的规划。要这么类比的话,$(media)媒质/$便是用来为这个规划提供各式参数和运行支持的能源,而自然会接受你的规划并付诸实践。", + "hexcasting.page.abacus.1": "虽然有$(l:patterns/numbers)$(action)对应数的图案/$,但它们确实……过于复杂。$(br2)幸运的是,从前研究这门学问的大师们发明了一个名为“$(l:items/abacus)$(item)算盘/$”的天才般的装置,它们能极为方便地表示数。只需要在其上设定好,然后用$(l:patterns/readwrite#hexcasting:read)$(action)书吏之精思/$把值读出即可,就和读出$(l:items/focus)$(item)核心/$中 iota 的操作一样。", + "hexcasting.page.abacus.2": "操作方法是潜行时手持算盘滚动滚轮。如果是主手持算盘,则其数值会以 1 增加或减少,按住 $(k:sprint) 时则以 10。若是副手持算盘,则其数值会以 0.1 增加或减少,按住 $(k:sprint) 时则以 0.01。$(br2)也可以在潜行时手持算盘右击以重设为 0。", + "hexcasting.page.abacus.crafting.desc": "$(italic)数学?那是给聪明人用的!/$", + "hexcasting.page.advanced_math.arccos": "计算所给数(绝对值小于 1)的反余弦,也即余弦为该值的角。与 $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ 和 $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$ 的值有关。", + "hexcasting.page.advanced_math.arcsin": "计算所给数(绝对值小于 1)的反正弦,也即正弦为该值的角。与 $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ 和 $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$ 的值有关。", + "hexcasting.page.advanced_math.arctan": "计算所给数的反正切,也即正切为该值的角。与 $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ 和 $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$ 的值有关。", + "hexcasting.page.advanced_math.arctan2": "计算所给纵坐标与横坐标的反正切,也即计算 X 轴正向,与原点至所给坐标的射线间的夹角。", + "hexcasting.page.advanced_math.cos": "计算所给角(弧度制)的余弦,也即该角在单位圆上的横坐标。与 $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ 和 $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$ 的值有关。", + "hexcasting.page.advanced_math.logarithm": "计算以栈顶元素为底的,栈顶往下第二元素为真数的对数。与 $(l:patterns/consts#hexcasting:const/double/e)$(thing)$(italic)e/$ 的值有关。", + "hexcasting.page.advanced_math.sin": "计算所给角(弧度制)的正弦,也即该角在单位圆上的纵坐标。与 $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ 和 $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$ 的值有关。", + "hexcasting.page.advanced_math.tan": "计算所给角(弧度制)的正切,也即该角在单位圆上的斜率。与 $(l:patterns/consts#hexcasting:const/double/pi)$(thing)π/$ 和 $(l:patterns/consts#hexcasting:const/double/tau)$(thing)τ/$ 的值有关。", + "hexcasting.page.akashic_patterns.akashic/read": "在$(l:greatwork/akashiclib)$(item)阿卡夏记录/$处从$(l:greatwork/akashiclib)$(item)阿卡夏图书馆/$中读出所给图案对应的 iota。没有读取距离限制。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.akashic_patterns.akashic/write": "在$(l:greatwork/akashiclib)$(item)阿卡夏图书馆/$的$(l:greatwork/akashiclib)$(item)记录/$处将 iota 和所给图案对应起来。$(italic)有/$存储距离限制。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.akashiclib.1": "我所知甚多,将所知存于某处是唯一正途。信息能用书本存储但徒手书写以眼阅读非常非常非常非常$(italic)缓慢/$。我需要更好的方法。并且我必将找到。$(br2)……我的意识每况愈下……不知道我还有没有时间赶在满溢头脑的知识消散之前记下它们。", + "hexcasting.page.akashiclib.2": "一座图书馆。我的计划,如下。$(br2)就和图案与操作的对应关系一样,我能以我自己的方式将自创的图案与 iota 对应起来。$(l:greatwork/akashiclib)$(item)阿卡夏记录/$是图书馆的控制核心,而每个$(l:greatwork/akashiclib)$(item)阿卡夏书架/$存储一个映射。它们必须互相连接,直接贴在一起,不超过 32 格。$(l:greatwork/akashiclib)$(item)阿卡夏桥接块/$没有存储功能但被视为连接方块,从而增加图书馆的大小。", + "hexcasting.page.akashiclib.3": "图书馆的使用方法很简单,交给图书管理员一个图案,然后他把对应的 iota 交给你。共有两个相关图案,$(l:patterns/akashic_patterns)笔记在此/$。$(br2)对书架使用一张空白的$(l:items/scroll)$(item)卷轴/$就能将图案复制到$(l:items/scroll)$(item)卷轴/$上。潜行时右击书架就能清除其中数据。", + "hexcasting.page.akashiclib.akashic_record": "存储和分配图案非常简单但太过磨人,我还有更要紧的事要做。剥离一个精于此道的意识能省很多麻烦。", + "hexcasting.page.altiora.1": "此法术会将一束$(media)媒质/$在我身旁塑成翅膀状,并赋予其足够物质性,从而允许施法者滑翔。", + "hexcasting.page.altiora.2": "这对翅膀的操作方式与$(item)鞘翅/$完全一致。目标(必须是玩家)会被弹起而升空,此时按下$(k:jump)就能张开翅膀。这些翅膀十分脆弱,会在触碰到任意表面时破碎消失。长距飞行则可能需要$(l:patterns/spells/basic#hexcasting:add_motion)$(action)驱动/$或者$(item)烟花火箭/$(可能稍显鲁莽)的协助。$(br2)消耗大约 1 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.amethyst.crystal": "最后,偶尔能发现充盈着能量的大型水晶。它们含有大约 10 个$(l:items/amethyst)$(item)紫水晶粉/$(也即两个$(l:items/amethyst)$(item)紫水晶碎片/$)量的$(media)媒质/$。", + "hexcasting.page.amethyst.dust": "破坏晶洞里的紫水晶会产生三种形态的紫水晶。紫水晶量最少的物品是一堆闪着光的粉末,含有较少量的$(media)媒质/$。", + "hexcasting.page.amethyst.lore": "$(italic)老人叹了口气,对着火炉伸出了一只手。他回想起自己对周边山脉的记忆,从那些土地中汲取能量——就像他在泰瑞西亚城从札夫拿、河鼓、主教还有象牙塔中的其它法师身上学到的那样。他集中精神,从柴薪中升起的火焰摇摆扭动,最终形成了一抹温柔的微笑。/$", + "hexcasting.page.amethyst.shard": "第二种是紫水晶的碎片,也就是不是$(hex)咒术师/$的人们最为熟悉的。这种碎片大约含有 5 个$(l:items/amethyst)$(item)紫水晶粉/$量的$(media)媒质/$。", + "hexcasting.page.ancient_cyphers.1": "在四处探险的过程中,我找到了一些$(l:items/hexcasting)$(item)杂件/$,似乎是古代的咒术师们制造后残存至今的。这些$(item)远古杂件/$的功能和我自己制作的基本一致:都不可再充能,其中$(media)媒质/$耗尽后也都会碎掉。两者间的不同点则在于:搜刮到的$(l:items/hexcasting)$(item)杂件/$的结构已经残破,我可以借此窥探其中的$(hex)咒术/$。", + "hexcasting.page.ancient_cyphers.2": "这些物件大概很适合用来学新技巧——若要在授业解惑方面将古代的大师们排第二,就没人能称第一了。$(br2)此外,还可清除其中的$(hex)咒术/$换成我自己写的,如此就得到了能显示自身功能的施法物品。", + "hexcasting.page.ancient_cyphers.3": "这些古物用到的$(l:items/pigments)$(item)染色剂/$是独特的紫橙混色,和它们由铜还有紫水晶构成的外在表现很搭。可用上方的配方再现这种染色剂。", + "hexcasting.page.basic_spell.add_motion": "移除栈顶的实体和表示方向的向量,然后将所给实体沿所给方向推动出去。驱动力的强度由向量的模长决定。$(br)消耗向量模长的平方个$(l:items/amethyst)$(item)紫水晶粉/$。除对某实体第一次使用外,其他情况额外消耗 1 个。", + "hexcasting.page.basic_spell.beep.1": "移除栈顶的一个向量和两个数。在指定位置以指定$(thing)乐器/$(由第一个数决定)弹奏$(thing)一个音/$(由第二个数决定)。消耗极少量$(media)媒质/$。", + "hexcasting.page.basic_spell.beep.2": "共有 16 种$(thing)乐器/$和 25 种$(thing)音高/$。两者的下标均从 0 开始。$(br2)这些乐器似乎就是$(item)音符盒/$对应的各种乐器,尽管其具体对应关系不得而知。$(br2)不管怎么说,用$(l:items/lens)$(item)探知透镜/$观察$(item)音符盒/$就能得知其乐器对应的数字。", + "hexcasting.page.basic_spell.blink": "移除栈顶的实体和表示长度的数,然后将所给实体沿其视线方向向前传送所给长度格。$(br)每传送两格消耗大约 1 个$(l:items/amethyst)$(item)紫水晶碎片/$。", + "hexcasting.page.basic_spell.explode.1": "移除栈顶的数和向量,并在所给位置产生一次强度为所给数的爆炸。", + "hexcasting.page.basic_spell.explode.2": "强度为 3 的爆炸与苦力怕的爆炸相当,4 则与 TNT 的相当。自然倒是不让我产生强度大于 10 的爆炸。$(br2)奇怪的是,这种爆炸伤不到我。也许是因为这爆炸是$(italic)我/$引起的?$(br2)强度为 0 时消耗极少量媒质,每加一级强度多消耗 3 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.basic_spell.explode.fire.1": "移除栈顶的数和向量,并在所给位置产生一次强度为所给数的带火焰的爆炸。", + "hexcasting.page.basic_spell.explode.fire.2": "消耗 1 个$(l:items/amethyst)$(item)紫水晶粉/$,每加一级强度多消耗 3 个$(l:items/amethyst)$(item)紫水晶粉/$。就和$(l:patterns/spells/basic#hexcasting:explode)$(action)爆炸/$一模一样,除了带点火。", + "hexcasting.page.basics_pattern.entity_pos/eye": "将栈顶的实体变为其眼部位置。这个图案比较适用于我自己。", + "hexcasting.page.basics_pattern.entity_pos/foot": "将栈顶的实体变为其所站位置。这个图案比较适用于其他实体。", + "hexcasting.page.basics_pattern.get_caster": "返回我,也就是施法者。", + "hexcasting.page.basics_pattern.get_entity_height": "将栈顶的实体变为其高度。", + "hexcasting.page.basics_pattern.get_entity_look": "将栈顶的实体变为其视线方向上的单位向量。", + "hexcasting.page.basics_pattern.get_entity_velocity": "将栈顶的实体变为其移动方向上的向量,其模长为实体的移动速度。", + "hexcasting.page.basics_pattern.print": "向我展示栈顶的 iota。", + "hexcasting.page.basics_pattern.raycast.1": "将两个向量组合(分别表示位置和方向)并返回如下问题的答案:若我站在该位置并看向该方向,我会看到什么方块?消耗极少量$(media)媒质/$。", + "hexcasting.page.basics_pattern.raycast.2": "如果视线并未击中任何事物,所提供的向量会变为 $(l:casting/influences)$(thing)Null/$。$(br2)有一套常用的图案序列(常称“射线追踪曼怛罗”),由$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$、$(l:patterns/basics#hexcasting:entity_pos/eye)$(action)指南针之纯化/$、$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$、$(l:patterns/basics#hexcasting:get_entity_look)$(action)照准仪之纯化/$、$(l:patterns/basics#hexcasting:raycast)$(action)弓箭手之馏化/$组成。依次绘制就能返回我所看的方块的位置向量。", + "hexcasting.page.basics_pattern.raycast/axis.1": "与$(l:patterns/basics#hexcasting:raycast)$(action)弓箭手之馏化/$类似,但会返回如下问题的答案:我看着的是方块的$(italic)哪一面/$?消耗极少量$(media)媒质/$。", + "hexcasting.page.basics_pattern.raycast/axis.2": "更确切地说,它会返回所看面的$(italic)法向量/$,也即垂直于该面的单位向量。$(li)如果我看着地面,它会返回 (0, 1, 0)。$(li)如果我看着某方块面向南方的侧面,它会返回 (0, 0, 1)。", + "hexcasting.page.basics_pattern.raycast/entity": "与$(l:patterns/basics#hexcasting:raycast)$(action)弓箭手之馏化/$类似,但会返回我所看的$(italic)实体/$。消耗极少量$(media)媒质/$。", + "hexcasting.page.blockworks.bonemeal": "使目标位置的植物或树苗更快成长,就像对其施以$(item)骨粉/$一样。消耗略多于 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.blockworks.break_block": "移除一个位置向量,然后破坏给定位置的方块。此法术能破坏几乎所有钻石镐能破坏的方块。$(br)消耗大约 1/8 个$(l:items/amethyst)$(item)紫水晶粉/$。破坏$(l:patterns/spells/blockworks#hexcasting:conjure_block)$(action)构筑的方块/$或$(l:patterns/spells/blockworks#hexcasting:conjure_light)$(action)构筑的光源/$时仅消耗极少量媒质。", + "hexcasting.page.blockworks.conjure_block": "在给定位置构筑一个空灵缥缈却坚硬可触的,闪着光的方块。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.blockworks.conjure_light": "在给定位置构筑一个发着我染色剂颜色的光的魔法光源。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.blockworks.create_water": "在给定位置生成一格水(或给流体容器注入至多一桶水)。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.blockworks.destroy_water": "清空给定位置的流体容器,或是清除给定位置周围的液体。消耗大约 2 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.blockworks.edify": "将$(media)媒质/$强制注入目标位置的树苗,使其长为$(l:items/edified)$(thing)启迪树/$。消耗大约 1 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.blockworks.extinguish": "熄灭周围较大区域内的火焰。消耗大约 6 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.blockworks.ignite": "在给定位置上方生火,或点燃给定实体,就像对其使用$(item)火焰弹/$一样。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.blockworks.place_block": "移除一个位置向量,然后挑选一个方块并放在给定位置。$(br)消耗大约 1/8 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.brainsweep_spell.1": "我搞不懂这个法术……说实话,我也不清楚我到底想不想搞懂。", + "hexcasting.page.brainsweeping.1": "我解开了一个秘密。我得知了真相。我也无法忘记真相带来的恐惧。这种想法掠过我的脑海。$(br2)我曾相信——我曾愚蠢地$(italic)相信/$——$(media)媒质/$只是思维遗留下的剩余能量。但我现在$(italic)知道/$它究竟是什么了:它是思维$(italic)含有的/$能量。", + "hexcasting.page.brainsweeping.2": "媒质是在具有思维能力的生物思考时产生的,它的存在也使这些生物能够思考,就像是回环的绳结。我先前天真地拟人化为“自然”的实体实际上就是一个卓伟的媒质回环,又或许是所有回环的结合体,或者是……我思考它就会痛我有很多突触它们都能思考同时痛它们都能看见它们都能看见$(br2)我撑不住了。记笔记。赶快。", + "hexcasting.page.brainsweeping.3": "这个世界中的村民还留有能被提取的感知力。将这种感知力放在方块中,扭曲它,改变它。由不同的思维模式造就的精密图案,关于他们工作和生活的抽象神经通路,都被投射到无生气的固态物质的原子中。$(br2)这就是$(l:patterns/great_spells/brainsweep)$(action)剥离意识/$的用途,那个提取过程。需将村民实体和目标方块放在栈中。扭曲意识则要消耗 10 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.brainsweeping.budding_amethyst": "如下是一种实际用途。这个剥离过程接受任何职业的村民,前提是他们足够熟练。其他配方则有更具体的要求。我再也不必为$(media)媒质/$亲身沉入地狱了。", + "hexcasting.page.casting.grid.1": "我通常会使用$(l:items/staff)$(item)法杖/$为自然提供图案。 在手中持有时按下$(thing)$(k:use)/$就会在我面前产生一个六边形格点。 之后点击并在点间拖拽,再释放就可绘制图案。$(br2) 在我提交图案的同时,其就会被运行(见下一章节)。", + "hexcasting.page.casting.grid.2": "按下$(thing)$(k:escape)/$会保存并关闭网格,下一次使用法杖时,原有的图案和 iota 都会保留。$(br2) 如果需要重设施法状态,在潜行时打开网格即可。", + "hexcasting.page.casting.iotas.1": "自然的语言中的“名词”称作 $(thing)iota/$。 从其最为基础的层面而言,咒法学便是操纵 iota 的技艺。$(br2) Iota 有许多不同类型: $(li)数(某些文献称之为“双精度浮点数”)。 $(li)向量,一种可代表世界中位置、运动或方向的,由三个数组成的集合。 $(li)布尔值(简称“布尔”),一种代表真和假的抽象概念的 iota。 $(li)实体,如我自己、鸡、矿车等。", + "hexcasting.page.casting.iotas.2": "$(li)虚指,一种代表抽象概念的奇怪的 iota。 $(li)图案,用于制作魔法物品,也用在某些烧脑的咒术中,如$(italic)能施放其他法术的法术/$。 $(li)由上述若干种组成的列表,相当于一个 iota。", + "hexcasting.page.casting.iotas.3": "通常情况下,我会给操作提供 iota。 例如$(l:patterns/spells/basic#hexcasting:explode)$(action)爆炸/$。 此法术需要一个表示强度的数 iota,和一个表示位置的向量 iota。$(br2) 或者再看$(l:patterns/basic#hexcasting:get_pos)$(action)指南针之纯化/$。 它会将一个实体 iota 转换为一个表示该实体位置的向量 iota。", + "hexcasting.page.casting.overview.1": "我坚信正确的起步方向非常重要。因此,我编写了一个能在我所看的位置产生中小型爆炸的$(hex)咒术/$。相信研究其内部机理会相当有启迪性。", + "hexcasting.page.casting.patterns&actions.1": "$(thing)图案/$是沿$(media)媒质/$网格行进的路径。我相信图案的六次对称性就是这种技艺名称的由来。(译注:hex:六;咒术)$(br2) $(thing)操作/$则是图案所$(italic)做/$的事情。", + "hexcasting.page.casting.patterns&actions.2": "两者的区别可类比为$(italic)词语/$和$(italic)意义/$的区别。 任意的字母组合都是词语,但其中大部分(例如“xnopyt”)毫无意义。 相似地,沿$(media)媒质/$随意画出的任何东西都可称作图案,但其中大部分什么都做不了。", + "hexcasting.page.casting.patterns&actions.3": "操作有点类似统领宇宙的卓伟系统规则的命令。(我曾看过有些文本将这些规则拟人化为“自然”。) 它们通常会执行如下其一: $(li)收集有关世界的某些信息,例如获取实体的位置。 $(li)操纵收集到的信息,例如计算两位置间的距离。 $(li)在世界上产生某些魔法效果,例如召唤闪电和爆炸。$(br) 其中最后一种操作又称“法术”,也通常是吸引人们研习这门技艺的原因。", + "hexcasting.page.casting.patterns&actions.4": "$(hex)咒术/$则是依次提供给自然的有效图案序列。 自然会依次理解这些图案,如果它能够理解,则会根据我的奇想改变世界。 (或者说,根据它印象中我奇想的意义。)", + "hexcasting.page.casting.patterns&actions.5": "尽管某些操作可轻松执行,但某些则需要一种凝结形态的$(media)媒质/$。 我相信这种浓缩的意识能量是对自然的某种论据,作为说服其应当依照我的请求做事的报偿。 大部分的法术都需要这种报偿,若干非法术操作也需要。$(br2) 我已在各操作的介绍页记录了其消耗(若有)。", + "hexcasting.page.circle_patterns.circle/bounds/max": "返回该法术环影响范围的东南靠上转角的位置。", + "hexcasting.page.circle_patterns.circle/bounds/min": "返回该法术环影响范围的西北靠下转角的位置。", + "hexcasting.page.circle_patterns.circle/impetus_dir": "以单位向量返回该法术环的$(l:greatwork/impetus)$(item)促动石/$的面朝方向。", + "hexcasting.page.circle_patterns.circle/impetus_pos": "返回该法术环的$(l:greatwork/impetus)$(item)促动石/$的位置。", + "hexcasting.page.circle_patterns.disclaimer": "这些图案只能在$(l:greatwork/spellcircles)$(item)法术环/$上运行。尝试用$(l:items/staff)$(item)法杖/$绘制它们会招致可怖的事故。", + "hexcasting.page.colorize": "施法时需要在另一只手中持有$(l:items/pigments)$(item)染色剂/$。施法后,染色剂将被消耗,而我意识的颜色也将永久改变(至少是在再次施法前)。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.consts.const/.double/.e": "返回 $(italic)e/$,也即自然对数的底。", + "hexcasting.page.consts.const/.double/.pi": "返回 π,也即半圆的弧度。", + "hexcasting.page.consts.const/.double/.tau": "返回 τ,也即圆的弧度。", + "hexcasting.page.consts.const/.false": "返回 $(thing)False/$。", + "hexcasting.page.consts.const/.null": "返回 $(l:casting/influences)$(thing)Null/$ 这一虚指。", + "hexcasting.page.consts.const/.true": "返回 $(thing)True/$。", + "hexcasting.page.consts.const/.vec/.0": "返回 (0, 0, 0)。", + "hexcasting.page.consts.const/.vec/.x": "左图(逆时针绘制)返回 (1, 0, 0);右图(顺时针绘制)返回 (-1, 0, 0)。", + "hexcasting.page.consts.const/.vec/.y": "左图(逆时针绘制)返回 (0, 1, 0);右图(顺时针绘制)返回 (0, -1, 0)。", + "hexcasting.page.consts.const/.vec/.z": "左图(逆时针绘制)返回 (0, 0, 1);右图(顺时针绘制)返回 (0, 0, -1)。", + "hexcasting.page.couldnt_cast.1": "为什么我就是施不了这个法术?!$(br2)我找到的卷轴货真价实。我能$(italic)感受/$到卷轴的嗡鸣——图案是真的,真的不能再真了。法术$(italic)就在里面/$。$(p)但感觉起来它好像处在某种薄膜的另一侧。我试过召唤它——它也想要起效——但它$(italic)做不到/$。", + "hexcasting.page.couldnt_cast.2": "好像那层屏障会因我施法时用的魔力而被缓慢地削弱。但就算我用尽全力——最大程度地专注,最精致的紫水晶,最精确的图案——它$(italic)就是不肯/$跨过那个屏障。真是惹人上火。难道我对魔法的研究就$(p)$(italic)止步于此/$了吗?就因为我无力施法,我就要放弃那些力量了吗?$(br2)深呼吸。我应该仔细回顾我曾学到的知识,就算可能加起来也没多少……", + "hexcasting.page.couldnt_cast.3": "……经过仔细回顾……我发现我自己发生了改变。$(p)似乎……拜$(l:items/amethyst)$(item)紫水晶/$所赐,我能仅凭我自身的意识和生命能量来施放法术,就和传说中说的一样。$(p)我不清楚我为什么做得到。只是……获得真知的代价就在那里,而我现在知道了那个代价是什么。我要去承受它。$(br2)幸运的是,我也清楚我的极限在哪里——我的生命力最旺盛时大概就相当于两个$(l:items/amethyst)$(item)充能紫水晶/$中的$(media)媒质/$。", + "hexcasting.page.couldnt_cast.4": "只是想想都让我打颤——直到现在,我都在研究中保持了自身意识的大体完整。但这样做的结果就是,我只建立了单向而脆弱的连接。$(p)我与屏障的另一侧是相连的,其间的屏障已因我的努力而受了削弱。而在屏障的另一侧,仅是简单的操作,就能带来永恒的荣耀。$(p)我想要拥有那份力量,是否就大错特错?", + "hexcasting.page.create_lava.1": "在给定位置生成一格熔岩(或给流体容器注入至多一桶熔岩)。消耗大约 1 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.create_lava.2": "建议不要声张自己知道这个法术。某些植物学家对此……比较敏感,至少我听说是这样。$(br2)也罢,确实没人说过探究宇宙最深层的秘密是什么好干的活。", + "hexcasting.page.creative_items.1": "我发明了些奇妙的物品,只能用极具$(italic)创造/$力的方式获得。", + "hexcasting.page.creative_items.2": "而且,在铁砧中为$(#74b3f2)媒质立方/$重命名,似乎就能用来测试$(hex)咒术/$,以此加深理解。假使真有一天,我得到了创造的力量,在按照后页所说内容操作之前,最好还是先把它禁用掉。", + "hexcasting.page.creative_items.creative_unlocker": "$(#74b3f2)媒质立方/$是近乎无尽的媒质源,能为所有$(hex)咒术/$无限提供$(media)媒质/$。它看上去也挺好吃的。食用后也许会揭示世界的更多秘密,亦有可能触碰到剧透内容……", + "hexcasting.page.creative_items.debug_media.desc": "将$(#74b3f2)媒质立方/$重命名为“debug media”,聊天栏中即会出现所消耗媒质量的反馈信息。", + "hexcasting.page.creative_items.debug_media.title": "debug media", + "hexcasting.page.cycle_variant": "我制造的一些物品极易受$(media)媒质/$的影响。另一只手持有$(l:items/hexcasting)$(item)杂件/$、$(l:items/hexcasting)$(item)缀品/$、$(l:items/hexcasting)$(item)造物/$、$(l:items/focus)$(item)核心/$、$(l:items/spellbook)$(item)法术书/$时,可以使用此法术更改它们的外表。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.decoration.1": "我在研究过程中发现了些挺美观的建筑方块的其他装饰品。制作方法整理如下。", + "hexcasting.page.decoration.ancient_scroll.crafting.desc": "棕色染料在仿制$(l:items/scroll)$(item)远古卷轴/$这方面表现非常出色。", + "hexcasting.page.decoration.sconce.crafting.desc": "$(l:items/decoration)$(item)紫水晶灯台/$会发出光和粒子,并会产生悦耳的“叮铃”声。", + "hexcasting.page.decoration.tiles.crafting.desc": "$(l:items/decoration)$(item)紫水晶瓦/$也可在切石机内制作。$(br2)$(l:items/decoration)$(item)紫水晶粉块/$(见后页)受重力影响。", + "hexcasting.page.directrix.1": "引导$(media)媒质/$比产生一个自我维持的媒质波简单许多。一般来说媒质波会在分叉处消散,但如果有一个用来指引的意识,媒质的流向就能被操控了。$(br2)这种操控所需的精度完全不比启动法术环的精度,我自己上都行……但封进一个意识实在是太方便了。", + "hexcasting.page.directrix.2": "$(l:greatwork/directrix)$(item)导向石/$会接受一个$(media)媒质/$波并决定它的流向,具体如何操控主要看其中的村民意识。$(br2)我不清楚是这个想法先找到我的,还是我的意识先产生这种想法的……如果这种想法是我的意识产生的,是我自己想出来的,那还能说是想法找到我吗?大脑是意识的容器意识是想法的容器想法思维容器思维全知思维全知——停,下。", + "hexcasting.page.directrix.directrix_boolean": "$(l:greatwork/directrix)$(item)牧羊人导向石/$会根据栈中的布尔值改变输出方向。为 $(thing)True/$ 时,媒质自后方流出;为 $(thing)False/$ 时,媒质自前方流出。未能获取到布尔值则会招致事故。", + "hexcasting.page.directrix.directrix_redstone": "$(l:greatwork/directrix)$(item)石匠导向石/$会根据红石信号改变输出方向。没有信号的话,出口是$(media)媒质/$色的一端;有信号的话,出口是红石色的一端。", + "hexcasting.page.directrix.empty_directrix": "第一步,基床……用“基底”这个名字会准确些。倘若没有意识引导,媒质的流向是由$(media)媒质/$波的微观涨落和环境决定的,换句话说,随机的。", + "hexcasting.page.edified.1": "用$(l:patterns/spells/blockworks#hexcasting:edify)$(action)启迪树苗/$就能将部分$(media)媒质/$注入树苗,从而造出$(l:items/edified)$(thing)启迪树/$。它们又高又尖,树皮上有特殊纹理。树叶则有三种不同颜色。", + "hexcasting.page.edified.2": "我觉得这种木材与$(hex)咒法学/$有着紧密的联系。但就算真有,我也完全找不到这联系在哪。它和普通木头如出一辙,不同只在于颜色不一样。$(br2)就现在而言,它们是很好的装饰用方块。$(br2)当然,也可用斧来去皮。", + "hexcasting.page.edified.crafting.desc": "$(italic)它们那周身洁白的巨大而光滑的树干,仅凭自己支撑起了茂密的树冠,投下绿荫与静谧。/$", + "hexcasting.page.entities.get_entity": "将栈顶位置向量变为该处实体(若无则返回 $(l:casting/influences)$(thing)Null/$)。", + "hexcasting.page.entities.get_entity/.animal": "将栈顶位置向量变为该处动物(若无则返回 $(l:casting/influences)$(thing)Null/$)。", + "hexcasting.page.entities.get_entity/.item": "将栈顶位置向量变为该处物品实体(若无则返回 $(l:casting/influences)$(thing)Null/$)。", + "hexcasting.page.entities.get_entity/.living": "将栈顶位置向量变为该处生物(若无则返回 $(l:casting/influences)$(thing)Null/$)。", + "hexcasting.page.entities.get_entity/.monster": "将栈顶位置向量变为该处怪物(若无则返回 $(l:casting/influences)$(thing)Null/$)。", + "hexcasting.page.entities.get_entity/.player": "将栈顶位置向量变为该处玩家(若无则返回 $(l:casting/influences)$(thing)Null/$)。", + "hexcasting.page.entities.zone_entity": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有实体的列表。", + "hexcasting.page.entities.zone_entity/.animal": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有动物的列表。", + "hexcasting.page.entities.zone_entity/.item": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有掉落的物品的列表。", + "hexcasting.page.entities.zone_entity/.living": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有生物的列表。", + "hexcasting.page.entities.zone_entity/.monster": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有怪物的列表。", + "hexcasting.page.entities.zone_entity/.not_animal": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有非动物实体的列表。", + "hexcasting.page.entities.zone_entity/.not_item": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有非物品实体的列表。", + "hexcasting.page.entities.zone_entity/.not_living": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有非生物实体的列表。", + "hexcasting.page.entities.zone_entity/.not_monster": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有非怪物实体的列表。", + "hexcasting.page.entities.zone_entity/.not_player": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有非玩家实体的列表。", + "hexcasting.page.entities.zone_entity/.player": "从栈顶获取位置及最大距离,返回该位置给定距离范围内所有玩家的列表。", + "hexcasting.page.fanciful_staves.1": "卸去无知的外壳后,更换工具——那些我亲手打磨的法杖——更是理所应当。这些全新的设计并非拥有额外属性——但它们光彩万分,光耀夺目……它们一如我视线边缘的闪烁与光耀。", + "hexcasting.page.flights.1": "尽管无法掌握自由飞行的力量,我还是找到了若干能将物体滞空的方法,但各种方法各有缺陷。$(br2)所有种类的飞行法术都会产生微量多余$(media)媒质/$。在法术效果将要结束时,其会产生越来越多红色和黑色的火花。", + "hexcasting.page.flights.2": "当然,也有其他种类的飞行法术。例如,将$(l:patterns/spells/basic#hexcasting:add_motion)$(action)驱动/$和$(l:patterns/spells/nadirs#hexcasting:potion/levitation)$(action)蓝阳西沉/$结合使用的类飞行技术自古代起就多有运用。$(br2)我还听说过一种能给予滑翔能力的,可以穿在背上的薄透翼膜。研究表明,被称为“$(l:patterns/great_spells/altiora)$(action)翱翔/$”的卓越法术也许能模仿这种翼膜的功用。", + "hexcasting.page.flights.can_fly.1": "检查玩家是否处于$(l:patterns/spells/flight#hexcasting:flight/range)隐士之飞行/$或$(l:patterns/spells/flight#hexcasting:flight/time)旅者之飞行/$的影响之下。", + "hexcasting.page.flights.can_fly.2": "不会检查玩家是否能以其他方式飞行。$(br2)我不太清楚这个图案有什么用途,但我相信,愿意用它的人自会清楚。", + "hexcasting.page.flights.range.1": "受范围限制的飞行法术。", + "hexcasting.page.flights.range.2": "第二参数代表水平方向上的半径(以米计),在此范围内,法术能保持稳定。走出该范围就会结束该法术,滞空的物体会直接坠向地面。但只要一直待在这个范围内,法术的效果便会无限持续。此法术还会额外产生微量$(media)媒质/$用以标记安全区域中心点。$(br2)每米安全范围消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.flights.time.1": "受时间限制的飞行法术。", + "hexcasting.page.flights.time.2": "第二参数代表持续时间(以秒计),在此限制内,法术能保持稳定。持续时间超过限制就会结束该法术,滞空的物体会直接坠向地面。$(br2)此法术相对较昂贵,每秒持续时间消耗大约 1 个$(l:items/amethyst)$(item)紫水晶碎片/$。我觉得它极其适合长途旅行。", + "hexcasting.page.focus.1": "$(l:items/focus)$(item)核心/$能存储一个 iota。$(br2)合成核心时,其默认存有 $(l:casting/influences)$(thing)Null/$ 这一虚指。在另一只手持有$(l:items/focus)$(item)核心/$时,可以用$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$将栈顶元素弹出栈并写入其中。而使用$(l:patterns/readwrite#hexcasting:read)$(action)书吏之精思/$就会将$(l:items/focus)$(item)核心/$中的 iota 复制出来并压入栈中。", + "hexcasting.page.focus.2": "我突然想到,我可以在$(l:items/focus)$(item)核心/$中写入一个由图案组成的列表,将它们复制出来后用$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$运行就行了。这样就有了施放复杂法术和施放某法术其中一部分的简单方法,不用再在每次使用时全部重画一遍图案了。$(br2)它可以用作一个简易版$(l:items/hexcasting#artifact)$(item)造物/$,但我觉得将某些常用图案“组合”存到$(l:items/focus)$(item)核心/$中更方便,比如返回我在看哪里的图案组合。", + "hexcasting.page.focus.3": "另外,如果我在$(l:items/focus)$(item)核心/$中写入一个实体,然后在该实体死亡或消失后尝试复制,则$(l:patterns/readwrite#hexcasting:read)$(action)书吏之精思/$会压入一个 $(l:casting/influences)$(thing)Null/$。$(br2)最后,如果不希望$(l:items/focus)$(item)核心/$被覆写,可以将其与$(item)蜜脾/$合成来蜡封,这时对其使用$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$就会失败。$(l:patterns/spells/hexcasting#hexcasting:erase)$(action)清除物品/$则会将蜡封和其内容物一并清除。", + "hexcasting.page.focus.crafting.desc": "$(italic)毒苹果,毒虫子。/$", + "hexcasting.page.geodes.1": "啊哈!在地下挖矿时,我找到了一个巨大的、满溢着能量的晶洞。那些能量压迫着我的颅骨和思维。而现在,我手里就有一块那种压迫的来源,一块固体。传说是真的。这块固体$(italic)一定/$就是传说中$(media)媒质/$累积的产物。$(br2)这些$(l:items/amethyst)$(item)紫水晶/$肯定就是$(l:items/amethyst)$(thing)一种便于使用的、固态的$(media)媒质/$。", + "hexcasting.page.geodes.2": "似乎除了我往常碰到的$(l:items/amethyst)$(item)紫水晶碎片/$,这些水晶还会掉落些许粉末状的$(l:items/amethyst)$(item)紫水晶粉/$,也有可能掉落$(l:items/amethyst)$(item)充能紫水晶/$。而且好像附有时运的镐子挖出$(l:items/amethyst)$(item)充能紫水晶/$的概率更大。", + "hexcasting.page.geodes.3": "而在欣赏这些水晶的美时,我能感受到某种连接迅速闪过我的意识。就好像空气中的$(media)媒质/$正在流入我的脑海,正给予我更强的力量,正为我启迪全新知识……这种感觉真不错。$(br2)我总算是入门了!$(p)我要再读几遍那些古老的传说,我总算能理解我在读什么了。", + "hexcasting.page.greater_sentinel.1": "召唤一个比普通$(l:patterns/spells/sentinels)$(thing)哨卫/$要强大的哨卫。消耗大约 2 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.greater_sentinel.2": "卓越$(l:patterns/spells/sentinels)$(thing)哨卫/$除了看上去更奇特外和不用卓越法术召唤的哨卫一样。然而,我法术的生效范围会扩展到卓越$(l:patterns/spells/sentinels)$(thing)哨卫/$周围小范围处,大概是哨卫周围 16 格内。换句话说,不管我在世界上何处,我都能与卓越$(l:patterns/spells/sentinels)$(thing)哨卫/$周围的方块交互(尽管仍会受到“区块加载”这一神秘力量的影响)。", + "hexcasting.page.hexcasting_spell.basics": "这三个法术都能制作$(l:items/hexcasting)$(thing)用于施放$(hex)咒术/$的物品/$。$(br)它们都要求我在另一只手上手持对应的基础物品,并且需提供两个参数:需运行的图案和一个用作储库的$(l:items/amethyst)$(item)紫水晶/$物品实体。$(br2)详情参见$(l:items/hexcasting)此条目/$。", + "hexcasting.page.hexcasting_spell.craft/artifact": "消耗大约 10 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.hexcasting_spell.craft/cypher": "消耗大约 1 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.hexcasting_spell.craft/trinket": "消耗大约 5 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.hexcasting_spell.erase.1": "清除另一只手中写有$(hex)咒术/$或存有 iota 的物品。每个物品消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.hexcasting_spell.erase.2": "此法术也会清除物品内存储的$(media)媒质/$,将其释放给自然并将物品恢复到其初始状态。如此就能回收利用容易出错的$(l:items/hexcasting)$(item)缀品/$了。$(br2)此法术也能清除$(l:items/focus)$(item)核心/$和$(l:items/spellbook)$(item)法术书/$书页内容,同时去除其上密封。", + "hexcasting.page.hexcasting_spell.recharge.1": "给另一只手中能装$(media)媒质/$的物品重新充能。每个物品消耗大约 1 个$(l:items/amethyst)$(item)紫水晶碎片/$。", + "hexcasting.page.hexcasting_spell.recharge.2": "此法术的施放方式和制作施法物品所用法术的类似。提供一个$(l:items/amethyst)$(item)紫水晶/$物品实体,就能给另一只手中物品的$(media)媒质/$储库重新充能。$(br2)此法术$(italic)不能/$充入超过储库大小的媒质。", + "hexcasting.page.hexcasting.1": "虽然用$(l:items/staff)$(item)法杖/$直接施放$(hex)咒术/$确实足够灵活易用,但仅凭法杖重复施放同一种咒术就很烦人了。如果能将某些常用法术存储起来后续直接使用,就再方便不过了,同时也方便我与朋友分享这些$(hex)咒术/$。", + "hexcasting.page.hexcasting.2": "以下三种魔法物品就能做到这点:$(l:items/hexcasting)$(item)杂件/$,$(l:items/hexcasting)$(item)缀品/$和$(l:items/hexcasting)$(item)造物/$。所有三种物品都能存储$(hex)咒术/$对应的所有图案,且都有一个用来存储$(media)媒质/$的小储库。$(br2)手持时按下$(thing)$(k:use)/$就会消耗其内含的媒质像用法杖施法那样运行其中图案。", + "hexcasting.page.hexcasting.3": "每种物品都有自己的特点:$(br2)$(l:items/hexcasting)$(item)杂件/$很脆弱,在耗尽其内含的$(media)媒质/$后就会损坏,$(italic)不可/$重新充能。$(br2)$(l:items/hexcasting)$(item)缀品/$则只要还有剩余的$(media)媒质/$就能一直施法,但媒质耗尽后若不重新充能就无法使用。", + "hexcasting.page.hexcasting.4": "$(l:items/hexcasting)$(item)造物/$是三者之中最强力的——其内含的$(media)媒质/$耗尽后,它们还能消耗持有者物品栏内的$(l:items/amethyst)$(item)紫水晶/$来施放$(hex)咒术/$,就和用$(l:items/staff)$(item)法杖/$施法一样。不过这也意味着,一旦$(l:items/amethyst)$(item)紫水晶/$不够,继续施法可能会消耗施法者的意识。$(br2)而在工作台中合成魔法物品后,必须将$(hex)咒术/$以适合对应物品的法术写入其中。(也没什么其他办法。)$(l:patterns/spells/hexcasting)对应的图案详情见此。/$", + "hexcasting.page.hexcasting.5": "每次写入都需要栈上有一个实体和一个由图案构成的列表。这个实体必须是一个含有$(media)媒质/$的物品实体(也即掉落在地上的$(l:items/amethyst)$(item)紫水晶/$)。该实体会变成该魔法物品的内部储库。$(br2)似乎储库中的$(media)媒质/$不会像用$(l:items/staff)$(item)法杖/$施法那样以物品组为单位消耗。其中的$(media)媒质/$实际上会“溶解”入一个连续的能量池。因此,当物品中存有会消耗 1 个$(l:items/amethyst)$(item)紫水晶粉/$中媒质来施放的$(hex)咒术/$时,含有相当于 1 个$(l:items/amethyst)$(item)充能紫水晶/$中媒质的储库能支持施放该咒术 10 次。", + "hexcasting.page.hexcasting.crafting.desc": "$(italic)我们常说一句话,“魔法从不……”。它从不“就是行得通”,它不会随你操控。你不能光靠所谓魔法扔个火球,烧顿晚饭,或是把一帮劫匪变成青蛙和蜗牛。/$", + "hexcasting.page.impetus.1": "启动法术环需要复杂的$(media)媒质/$波动。就算是眼神最好的、手最稳的的凡人也比不上能将$(media)媒质/$编织为自我维持的衔尾蛇的$(l:greatwork/impetus)$(item)促动石/$那般厉害。$(br2)问题就在于意识里有太多无用的$(italic)垃圾/$。", + "hexcasting.page.impetus.2": "从……形而上学层面上讲——我不能再有这种想法了,我不能让自己的思维被搅乱,我的思维非常重要——流动的$(media)媒质/$会推动意识,意识也必须被推动以使这一过程启动。但是,意识中的许多思维让意识变得十分$(italic)笨重/$,没法灵活行动。$(br2)就和让工匠戴着连指手套去修手表一样。", + "hexcasting.page.impetus.3": "这个难题有许多种解决方案。可以通过冥想或类似手段放空意识,尽管我不清楚放空到能启动法术环的意识还有没有足够的力量去执行那些操作。$(br2)某些不光彩的化合物也能产生类似效果,但我不了解它们也不想了解它们。我绝不能沉沦于给大脑喂化学品。", + "hexcasting.page.impetus.4": "我选择的解决方案,是特种化一个意识。将其从神经的暴政中释放,剪去除$(media)媒质/$操控装置外的一切功用件,烙封除启动信号口外的一切接收端口。$(br2)我现在已较为熟练掌握的$(l:greatwork/brainsweeping)$(action)剥离意识/$过程就能很好地做到这些。村民的意识复杂到足以启动法术环,但也还没复杂到能抵御扭曲。", + "hexcasting.page.impetus.empty_impetus": "第一步,基床。虽然和纯粹的$(l:greatwork/impetus)$(item)促动石/$不大一样,但它能让$(media)媒质/$从箭头所指方向流出。这就提供了一种改变媒质波所在平面的方法。", + "hexcasting.page.impetus.impetus_look": "$(l:greatwork/impetus)$(item)制箭师促动石/$会在被注视一段时间后启动。", + "hexcasting.page.impetus.impetus_rightclick": "第二步,转移意识。村民职业的不同意味着$(l:greatwork/impetus)$(item)促动石/$激活条件的不同。$(l:greatwork/impetus)$(item)工具匠促动石/$会在对其按下$(k:use)时启动。", + "hexcasting.page.impetus.impetus_storedplayer.1": "$(l:greatwork/impetus)$(item)牧师促动石/$会在接收到红石信号时启动。也可将其绑定至某一玩家,对其使用存有代表玩家的 iota 的物品(例如$(l:items/focus)$(item)核心/$)即可。", + "hexcasting.page.impetus.impetus_storedplayer.2": "这种$(l:greatwork/impetus)$(item)促动石/$也使得被绑定的玩家和他们周围一小块区域会一直受法术环影响。不管该玩家离法术环多远都会和站在法术环里一样。$(br2)用$(l:items/lens)$(item)探知透镜/$观察$(l:greatwork/impetus)$(item)牧师促动石/$就会显示被绑定的玩家。", + "hexcasting.page.influences.1": "虚指非常……奇怪,至少能这么说。大部分 iota 都代表着世界中的某个实际事物,而虚指则代表着某些更为……抽象或无形的事物。$(br2)例如,我将一种虚指命名为 $(l:casting/influences)$(thing)Null/$,它似乎代表着“无”这种状态。当一个问题没有确切的答案时就会出现一个 Null,比如对着天空执行$(l:patterns/basics#hexcasting:raycast)$(action)弓箭手之馏化/$。", + "hexcasting.page.influences.2": "此外,我还发现了一组四个奇特的虚指,命名为$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$、$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$、$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$和$(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)消解/$。它们似乎同时有着图案和虚指的性质,但实际作用却和这两者都不一样。我能用它们把图案作为 iota 加到栈中,而非执行图案对应的操作。$(l:patterns/patterns_as_iotas)相关笔记在此/$。", + "hexcasting.page.influences.3": "最后,似乎还有一组无限个虚指,它们都代表着一团紊乱的$(media)媒质/$。我称其为$(l:casting/influences)$(action)垃圾/$,因为它们毫无用处。它们似乎会因$(l:casting/mishaps)$(thing)事故/$而在栈中任意位置出现,呈现出来的则是一团乱麻。", + "hexcasting.page.interop.1": "$(hex)咒法学/$是一门多用途的学问。如果世界能被某些其他力量$(italic)改变/$,那么有可能$(hex)咒法学/$可以和它们和谐相处,协同使用。", + "hexcasting.page.interop.2": "应当谨记,自然似乎在这些方面耗费的精力较少,可能会出现奇怪的现象和漏洞。我相信模组制作者们会尽他们所能来纠正这些错误,但也必须理解这只是他们的业余爱好。$(br2)也许我会发现某些协同力量带来的法术在平衡性上表现不佳。我想我应该有足够的自控力不去滥用。", + "hexcasting.page.interop.3": "最后,如果对剧情和故事感兴趣,就应理解试验这些协同力量时所做的笔记只会是些琐事。", + "hexcasting.page.interop.gravity.1": "我发现了获取与改变实体所受引力的操作。挺有趣,也挺让人头晕。$(br2)有趣的是,虽然$(l:patterns/spells/flight)$(action)飞行/$的范围和持续时间有限,且也能操控引力,但这些法术的操控方式似乎有所区别。我不能理解……也许模组制作者们只是想让玩家们玩得开心。", + "hexcasting.page.interop.gravity.get": "获取所给实体的所受引力的主方向上的单位向量。对大多数实体而言,此向量会是向下的:(0, -1, 0)。", + "hexcasting.page.interop.gravity.set": "设置所给实体所受引力的主方向。所给向量会被转换为与其夹角最小的轴向单位向量,如同$(l:patterns/math#hexcasting:coerce_axial)$(action)轴向之纯化/$那样。消耗大约 1 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.interop.pehkui.1": "我发现了改变实体大小,和得知它们相较原本究竟变了多少的方法。", + "hexcasting.page.interop.pehkui.get": "获取实体的大小倍数,也即当前大小和原本大小的比值。对大多数实体而言,此值为 1。", + "hexcasting.page.interop.pehkui.set": "设置实体的大小倍数,需传入一个与其原本大小的比值。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶碎片/$。", + "hexcasting.page.itempicking.1": "某些法术,例如$(l:patterns/spells/blockworks#hexcasting:place_block)$(action)放置方块/$,会消耗物品栏内的其他物品。在这种情况下,法术会先检索要用哪个物品,然后就会消耗物品栏内所有同种物品。$(br2)这一过程被称为“挑选物品”。", + "hexcasting.page.itempicking.2": "更具体地说:$(li)首先,法术会在快捷栏内$(l:items/staff)$(item)法杖所处位置的右侧/$依次搜索可用物品,搜到最右侧后便会从最左侧开始向右搜寻。若$(l:items/staff)$(item)法杖/$在副手,则会从快捷栏一号位开始搜索。$(li)然后,法术会从$(italic)物品栏内最靠后的位置/$开始消耗同种物品,且物品栏优先于快捷栏。", + "hexcasting.page.itempicking.3": "如此,我可以在快捷栏里放一些“选择器”用来告诉法术要用哪种方块,并在物品栏内放些同种方块防止供给不足。", + "hexcasting.page.jeweler_hammer.1": "在无数次摧毁$(media)媒质/$来源的惨痛经历后,我设计了一把用于防止手滑的工具。$(br2)将脆弱的晶态$(media)媒质/$用作镐的固定结,就得到了$(l:items/jeweler_hammer)$(item)珠宝匠锤/$。它和$(item)铁镐/$在许多方面完全一致,但珠宝匠锤不会破坏任何完整方块。", + "hexcasting.page.jeweler_hammer.crafting.desc": "$(italic)她小心翼翼地敲开那半块红宝石,让其中的灵体逸散而出。/$", + "hexcasting.page.lens.1": "$(media)媒质/$在某些特殊情况下能和任何信息作用而产生奇异效果。而若是在玻璃上覆上薄薄一层媒质,就能……生出些独特的见地。$(br2)手持$(l:items/lens)$(item)探知透镜/$观察某些方块,就能给出一些额外信息。", + "hexcasting.page.lens.2": "例如,看向$(item)红石粉/$会给出其信号强度。我猜测随着研究的深入,还能发现新的额外信息。$(br2)此外,用$(l:items/staff)$(item)法杖/$施法时,在另一只手持有探知透镜就能缩短点与点的间距,从而能在网格上绘制更多图案。$(br2)我还可以把它当单片眼镜戴在头上。这样做能显示额外信息,但不会缩小网格。但没关系,总有两全其美的办法……", + "hexcasting.page.lens.crafting.desc": "$(italic)你必须学会……探知你所看到的事物。/$", + "hexcasting.page.lists.abs": "移除栈顶列表,而后返回该列表中元素的个数。", + "hexcasting.page.lists.add": "移除栈顶列表,将其中元素加到当前栈顶列表的末尾。", + "hexcasting.page.lists.append": "移除栈顶元素,将其加到栈顶列表的末尾。", + "hexcasting.page.lists.construct": "移除栈顶元素,将其加到栈顶列表的开头。", + "hexcasting.page.lists.deconstruct": "移除栈顶列表中的第一个元素,并将该元素压入栈顶。", + "hexcasting.page.lists.empty_list": "压入一个空列表。", + "hexcasting.page.lists.index": "移除栈顶的数,将栈顶的列表变为其中下标为该数(就是被移除的那个数)的元素。若该数越界,则将列表换为 $(l:casting/influences)$(thing)Null/$。", + "hexcasting.page.lists.index_of": "移除栈顶元素,并将栈顶列表变为该元素在其中第一次出现的位置(从 0 开始)。若没有出现过则返回 -1。", + "hexcasting.page.lists.last_n_list": "移除$(italic)所给数/$个元素,将这些元素加入列表,并将所得列表压入栈顶。", + "hexcasting.page.lists.remove_from": "移除栈顶的数,而后移除栈顶列表中下标为该数(就是被移除的那个数)的元素。", + "hexcasting.page.lists.replace": "移除栈顶元素和栈顶的数,而后将栈顶列表中下标为该数(就是被移除的那个数)的位置变为原栈顶元素。数越界则不进行操作。", + "hexcasting.page.lists.reverse": "倒置栈顶列表。", + "hexcasting.page.lists.singleton": "移除栈顶元素,而后返回一个仅包含该元素的列表。", + "hexcasting.page.lists.slice": "移除栈顶的两个数,将栈顶的列表变为其中下标在两个数之间元素的子列表,包含下标下界,不含下标上界。例如,[0, 1, 2, 3, 4] 的 0, 2 子列表是 [0, 1]。", + "hexcasting.page.lists.splat": "移除栈顶列表,而后将其中元素全部压入栈顶。", + "hexcasting.page.lists.unappend": "移除栈顶列表末尾的元素,将其加到栈顶。", + "hexcasting.page.logic.and": "如果两个参数都是 True,返回 True。否则返回 False。", + "hexcasting.page.logic.bool_coerce": "将参数变换为布尔值。数 $(thing)0/$、$(l:casting/influences)$(thing)Null/$、False,以及空列表会变为 False。其余所有则变为 True。", + "hexcasting.page.logic.bool_to_number": "将布尔值变换为数。True 变为 $(thing)1/$, False 变为 $(thing)0/$。", + "hexcasting.page.logic.equals": "如果第一个参数等于第二个(允许较小误差),返回 True。否则返回 False。", + "hexcasting.page.logic.greater": "如果第一个参数大于第二个,返回 True。否则返回 False。", + "hexcasting.page.logic.greater_eq": "如果第一个参数大于或等于第二个,返回 True。否则返回 False。", + "hexcasting.page.logic.if": "如果第一个参数是 True,保留第二个参数并移除第三个。否则保留第三个参数并移除第二个。", + "hexcasting.page.logic.less": "如果第一个参数小于第二个,返回 True。否则返回 False。", + "hexcasting.page.logic.less_eq": "如果第一个参数小于或等于第二个,返回 True。否则返回 False。", + "hexcasting.page.logic.not": "如果参数是 True,返回 False;如果参数是 False,返回 True。", + "hexcasting.page.logic.not_equals": "如果第一个参数不等于第二个(允许较小误差),返回 True。否则返回 False。", + "hexcasting.page.logic.or": "如果至少有一个参数是 True,返回 True。否则返回 False。", + "hexcasting.page.logic.xor": "如果参数中仅一个是 True,返回 True。否则返回 False。", + "hexcasting.page.lore.cardamom1.1": "$(italic)完整标题:卡达蒙·斯蒂勒斯寄给她父亲的信,#1/$$(br2)亲爱的爸爸,$(br)我对你攒钱送我来大图书馆的感激之情与日俱增。在这里学到的知识真是不可思议!我实在没法把我所见所想全部描述出来……能来这里真是太棒了。", + "hexcasting.page.lore.cardamom1.2": "我写这封信时正坐在主穹顶下,它是由咒法学学生联合会维护和保养的。他们在穹顶顶部装设了某种奇特的装置,由此就能捕获从勤奋苦攻的学生的课桌中逸散出来的散在思维能量,至少我了解到的是这样。我的舍友阿曼妮塔就在钻研这门学问,她也非常愿意滔滔不绝地为我解释其中原理,尽管我得承认我听不大懂。", + "hexcasting.page.lore.cardamom1.3": "就我的理解而言,我们思考的过程——也就是驱动我写这封信和你读这封信的无形机制——并不那么有效。一小部分能量会逸散到环境中,就和马车的车轴在长途跋涉后摸起来会有点烫一样。这些散在能量叫做“媒质”。一个人的散在媒质微不足道,但主穹顶下成百上千位思考者加在一起就不得了了,说不定会按几何级数增长呢!再配上某些绝妙的装置,这些媒质就能被固化为某种紫色的水晶。", + "hexcasting.page.lore.cardamom1.4": "有关她所研究的学问就讲这么多了。我今天和地质学学生联合会进行的第一次勘探告一段落啦!出发前没能写封信对不起啦,时间过得太快了。我们去了大图书馆东边的一道裂谷里冒险,还在层层岩石和土壤底下扎营过了夜。当然,我们只探索了洞穴里光照良好且勘探完全的地方。我觉得,在洞穴里过夜比在地表要安全得多,尽管我还是被狠狠地吓到了!", + "hexcasting.page.lore.cardamom1.5": "还好夜里没发生什么坏事,之后我们就往更深的地方去勘探本地矿脉了。我们在找的是一种稀有的紫色水晶矿脉,称作“紫水晶”,它们只以痕量出现在地层中。可惜的是,我们什么都没找到,只能两手空空地返回地表。", + "hexcasting.page.lore.cardamom1.6": "现在再想,这种“紫水晶”的外观描述貌似和阿曼妮塔所讲的媒质水晶极为类似。它们要是会自然形成于地底该怎么样,光是想想都兴奋!不过想来也是不大可能的吧……", + "hexcasting.page.lore.cardamom1.7": "作为一名学生,我每三个月能在阿卡夏邮局免费送一封信。但你也知道,我们并不富裕……恐怕这是唯一一种能和你说上话的方式了。你攒钱回信我再感激不过,但我们之间的联系机会恐怕不会很多。不过我认为,我在这能学到的知识可能远超贷款上写的数字的价值。我大概会是家族中第一个不当农民的人吧!", + "hexcasting.page.lore.cardamom1.8": "我三个月后会再写封信的。$(br2)你亲爱的,$(br)卡达蒙·斯蒂勒斯", + "hexcasting.page.lore.cardamom2.1": "$(italic)完整标题:卡达蒙·斯蒂勒斯寄给她父亲的信,#2/$$(br2)亲爱的爸爸,$(br)……天哪,把过去三个月的经历全写进信里真是件难事。这么难办的事居然是我免费得来的奇迹赐予的!我还真是辛苦。", + "hexcasting.page.lore.cardamom2.2": "我在地质学联合会的研究正稳步推进。我们又进行了一次实地考察,这次范围更深,深达灰色的岩石隐去而硬质的片状板岩出现的地方。那里的岩石会在脚下碎成呛人的粉末……脚下的危险已经需要打起十二分精神,更不用说对付那些藏身于黑暗的生物了。(我之前曾遇到过这种生物一两次,但我知道你会为我经受生死考验而坐立难安,所以就不提了。)", + "hexcasting.page.lore.cardamom2.3": "不过,我们确实发现了一些之前所说的紫水晶。在某次小型勘探中我们发现了个只有丁点水晶的小矿脉。我们需要严格遵守勘探规章,所以找到的紫水晶需全部取走并立刻上交给联合会中的学长。这整条规定不管怎么看都很荒诞。他们把这当做重要至极而绝密的事件,但又把考察交给来这总共还不到六个月的新生去做,还就在那么几巴掌大的地方用足足十二把探矿镐开采总共十克都不到的东西……", + "hexcasting.page.lore.cardamom2.4": "我完全想不明白为什么要这么做。一位图书管理员给我推荐了本宝石百科,其中提到紫水晶的用途接近于零。它主要用于制作某些特种玻璃和镜片,也基本算是没什么用了。$(br2)要是我猜,我会觉得紫水晶和他们口中的媒质是一种东西,就和我上次说的一样。", + "hexcasting.page.lore.cardamom2.5": "假如我的猜想属实,那那些严格的保密措施和学长们对质疑的排斥,也许就是因为这是大图书馆的原创性研究成果,而且不能让某些竞争对手知道。$(br2)然而,这个理论还是有点站不住脚。矿洞中发现的紫水晶和阿曼妮塔给我看的那些媒质水晶确实很相像,但并不完全一致。也许只有把两者放在一起才能看出端倪,不过媒质明显有种奇特的嗡鸣感和振动感,而紫水晶没有。", + "hexcasting.page.lore.cardamom2.6": "也许感受不到紫水晶的嗡鸣和振动只不过是身处地下的心理压力。我唯一一次摸到紫水晶时手一直在抖,而且触感确实很轻盈,不过对我而言两者的触感并不完全一致。两者的折射率也略有不同。$(br2)如果有机会在矿洞外碰见紫水晶,我一定要问下阿曼妮塔她能不能用紫水晶施咒。而且似乎每次我们碰面,她都新学到了些奇妙的技艺。", + "hexcasting.page.lore.cardamom2.7": "就在上周,她把我悬到了空中,而且完全没用支撑物!轻微的刺痛感,体感比空气还轻盈,但衣服又还是原本的重量……这种感觉非常奇怪。不过我确实很庆幸她在效果结束前把我拉到了床的正上方。$(br2)你亲爱的,$(br)卡达蒙·斯蒂勒斯", + "hexcasting.page.lore.cardamom3.1": "$(italic)完整标题:卡达蒙·斯蒂勒斯寄给她父亲的信,#3,第一部分/$$(br2)亲爱的爸爸,$(br)自从上次写信以来发生了两桩怪事。$(br2)第一件,负责管理入门等级咒法学联合会学生的教授失踪了。没人知道他去了哪里。他的办公室和住所都被上了锁,但里面还是那副乱糟糟的样子。", + "hexcasting.page.lore.cardamom3.10": "就好像每次吸气,我脑袋里就竖起一个路标,我能感受到它正坚定地为我指示正确的道路,然而实际上指向的却是一座陡崖。我甩了甩头又继续开采,甩头似乎有助于无视那些路标。$(br2)不过我成功偷藏了一小块水晶碎片。$(br2)我们采矿采了快一整天,到学长的时间计指示太阳快落山时我们几乎把剩下的水晶都挖完了。", + "hexcasting.page.lore.cardamom3.11": "就在我们要离开的时候,我又留意到先前禁止我们开采的那些水晶,它们暗色的深槽里似乎新出现了晶芽,就好像它们从中长出来了一样。我所知的地质学中有关水晶的所有知识都表明,这些水晶需要成千上万年才能长成,但仅在一天之内,新水晶就在我的眼前凭空出现了。学长们的开采禁令确实有道理,大概吧。", + "hexcasting.page.lore.cardamom3.12": "回到地表的路程中没发生什么事,我们也正好在太阳落山的时候回到了营地。非常抱歉,信纸快用完了。阿卡夏信笺只够写这些字但这故事值得两封信一起寄应该能同时到$(br2)你亲爱的,$(br)卡达蒙·斯蒂勒斯", + "hexcasting.page.lore.cardamom3.2": "更奇怪的是,不管大图书馆的学生怎么激那帮冗杂官僚里管行政的人员,送去的信件都还被一一打回。连其他教授都不愿谈及他。$(br2)也正如你可能在担心的,阿曼妮塔十分沮丧。无论大图书馆派来哪位教授接任,都不如原先的教授那样善解人意和乐于助人。", + "hexcasting.page.lore.cardamom3.3": "但是,这还不是最怪的那件事。这件事——我很希望之后不要再碰到比这还骇人的事了——发生在我和地质学联合会的又一次考察中,我们计划前去某个村庄附近。", + "hexcasting.page.lore.cardamom3.4": "通常去居民点附近考察时,我们要与村庄的村长或长老进行长时间的磋商,以确定我们的行为是被允许的,并划定我们能去的地方和能做的事。但这次不一样,这次没有磋商。出发前两天我们才被告知这次要跟着咒法学联合会的一位学长去。", + "hexcasting.page.lore.cardamom3.5": "我们在村庄附近的密林中扎营,不知道为什么不选附近的平原。支帐篷的地方几乎看不到村庄。在刚到那天的晚上,我铺开睡袋时,周围是死一般的寂静。就算我们看不见村庄,我们也应该能听到村庄里的声音。但是在地表待着的整段时间里,我却几乎什么都听不见。", + "hexcasting.page.lore.cardamom3.6": "我听到的为数不多的声音都像是劳作时发出的那种,比如锤子砸到铁砧上的响声和锄头翻土的噪声。我完全没听到说话声。$(br2)第二天早晨我们就备好灯笼进入了地下。", + "hexcasting.page.lore.cardamom3.7": "我们没被告知到底要找什么,但有学生听说我们是来找紫水晶的,这貌似说得通。我早已练出能在矿洞壁上瞄中任何一小点紫色闪光的绝技,但就在灰色岩石和黑色板岩的交界处,我面前却赫然出现了一座奇观。$(br2)那是一整个紫水晶晶洞,快有十个我那么高,并随着灯光闪着紫色光芒,洞壁的每一面都被尖锐的紫色水晶覆盖。那些紫水晶比我来大图书馆之后整个探险组挖到的所有加起来还多。", + "hexcasting.page.lore.cardamom3.8": "我们每人被发了一副手套并被告知加紧开采。和我们同行的一位学长拿出了一个奇特的淡紫色盒子,高层人员会拿这种盒子来装东西,我和其他学生则兢兢业业地把那些玻璃质水晶从墙上砸下,然后放到盒子里去。外层脆性水晶的基座后方似乎有两种更为致密的构造。一种和外层水晶类似,但另一种更为……我词穷了。", + "hexcasting.page.lore.cardamom3.9": "“重要”这词也不合适,但这是我能想到的最贴切的形容词了。它有一种特殊的……庄重感,就好像它上面的 X 形暗色深槽有某种神圣的意味。但出于某种理由,我们被严令禁止触摸它们。偶尔某名学生会不小心敲碎一块,那样的话那名学生就会被严厉责骂。尽管我全身心投入了繁复的开采工作,我还是感觉……格外的清醒。这种感受很混杂:我的思维非常清晰,但同时我感受到,如果我放下手头工作去探究那种感受的话,可能就再也探究不完了。", + "hexcasting.page.lore.cardamom4.1": "$(italic)完整标题:卡达蒙·斯蒂勒斯寄给她父亲的信,#3,第二部分/$$(br2)亲爱的爸爸,$(br)正如我所说,信纸不够了,故事剩余部分就放在这份信里了。我们正好在太阳落山时回到了营地。而那天晚上的经历是整个奇怪考察中最为骇人的。", + "hexcasting.page.lore.cardamom4.10": "我知道我们家生活拮据,也知道从家里送一封信过来有多贵,但我求你,求你能给我一句忠告。我自从那时起一直心慌意乱,能读到你的信就是莫大的安慰。$(br2)你亲爱的,$(br)卡达蒙·斯蒂勒斯", + "hexcasting.page.lore.cardamom4.2": "我半夜醒来想去方便一下。那时云层完全把月亮遮住了,我在森林中迷了路,找不回营地。但我又害怕夜晚的那些怪物,于是就决定去村庄里找个地方睡觉。至少那里是安全的。", + "hexcasting.page.lore.cardamom4.3": "村庄倒是很好找,尽管村庄里没有哪怕一点声音。就算这么晚了,旅店不说人来人往,也绝不会悄无声息。但无论怎么看旅馆的门缝,我都没能发现任何人的踪影。$(br2)我敲了敲一间房子的门,没有回应。再敲旁边的两间,也都没有回应,甚至感觉就像是房子从来就空着一样。", + "hexcasting.page.lore.cardamom4.4": "我的心跳得越来越快,但又铆足勇气进下一间房里看看。我想不管房里住着什么人,他都会理解的。至少,能听见另一个人的声音,我就安心了,就算他们不让我在房里过夜,起码也能安心。$(br2)房子很小,只够挤下一张床和一个制图台。我看见床上躺了人,就试着安慰我自己村子里的人不过是睡得很熟罢了。然后我转头就要离开。", + "hexcasting.page.lore.cardamom4.5": "但就在这时云层散开了,月光洒到了床上的生物上。$(br2)我忍不住叫了出来,它的眼睛也应声睁开。它……长得很怪异,很明显不是人类,反倒像是某种人类的退化产物。它的额头拔得很高,它的身体矮胖而笨拙,我想拿“它”这个字形容比较合适。那个生物明显没有人类的智慧,虽然它看起来像是人类。", + "hexcasting.page.lore.cardamom4.6": "它的视线直接对准了我——它的眼睛暗淡、了无智慧,就和绵羊的一样!它开了口,但发出的声音仅是对言语的无情亵渎——是一声令人颤栗的哼叫。", + "hexcasting.page.lore.cardamom4.7": "我落荒而逃。在月光的照耀下,我透过道旁的窗户瞥见了其他镇民,他们都已被扭曲到……长得和我先前所见的那个$(italic)怪物/$一模一样。我迅速跑回森林里,一心只想逃离那些扭曲的脸孔和那恐怖的动物般的眼睛。$(br2)多亏有月光,营地好找多了。不过好像没人注意到我失踪了一段时间,还好还好。我躺回了我的睡袋,整晚一直在想方设法忘记那段经历。", + "hexcasting.page.lore.cardamom4.8": "但从这封信里也能看出,我并没能忘掉。那个扭曲的身影仍萦绕在我的梦境里。我只要想到那东西曾经可能是个人类就脊背发凉。$(br2)一回到大图书馆,我就给阿曼妮塔看了偷带回来的水晶碎片。她肯定了我的猜想:这是一块媒质水晶。但她完全无法想象地下居然有满是这种水晶的巨大晶洞。", + "hexcasting.page.lore.cardamom4.9": "她还提到了某些有意思的事情:媒质水晶和真正的紫水晶都能用于制造先前我提过的特种玻璃。媒质水晶和紫水晶的晶体构造和物理性质几乎完全一致,而这和媒质的魔法性质没有关系,她是这么说的。$(br2)我最后没把遭遇满村怪物的经历告诉她。", + "hexcasting.page.lore.cardamom5.1": "$(italic)完整标题:卡达蒙·斯蒂勒斯寄给她父亲的信,#4/$$(br2)阿曼妮塔消失了。$(br2)我完全不知道她去了哪里,爸爸。最后一次看到她是在晚饭时,她还在和其他人讨论学生失踪的情况,但那之后——", + "hexcasting.page.lore.cardamom5.2": "之后——之后她也不见了。但没人谈起她。我太害怕了,爸爸,他们是都知道些什么吗?每个人都会有个朋友突然$(italic)消失/$,消失得无影无踪。$(br2)他们都去$(italic)哪里/$了?", + "hexcasting.page.lore.cardamom5.3": "他们还一直在叫停设施和活动——我有好几周没和地质学联合会去考察了,穹顶上所有收集媒质的装置也不见了,药剂学联合会几个月没出现了……就好像大图书馆被白蚁啃到只剩了副空壳。$(br2)我觉得他们也开始审查我们写的信了……", + "hexcasting.page.lore.cardamom5.4": "写下这封信需要很大勇气,但我已没有勇气和其他人说这件事。假如学院里没人能出去的话,我希望你能把消息传出去……传到偏僻如布雷肯法尔的地方只是我的痴心妄想,但求求你了,爸爸,求求你尽你所能。爸爸,一定要记住他们……阿曼妮塔·黎博拉(Amanita Libera)、贾思敏·沃德(Jasmine Ward)、西奥多·查……(Theodore Cha...)求求你了,一定要记住他们……我把责任强加于你,只求你能原谅我的懦弱。", + "hexcasting.page.lore.cardamom5.5": "我写不了字了,手一直在抖,求你救救我们吧。", + "hexcasting.page.lore.experiment1.1": "$(italic)我只从这份日志中找到了如下五份记录。/$$(br2)质震 #26$(li)位置:北卡彭特镇$(li)人口:174$(li)形成节点数:3$(li)节点距质源距离:垂直距离 55-80 m,水平距离 85-156 m$(li)媒质生成速率:1320 uθ/min", + "hexcasting.page.lore.experiment1.2": "质震 #27$(li)位置:布雷肯法尔$(li)人口:79$(li)形成节点数:1$(li)节点距质源距离:垂直距离 95 m,水平距离 67 m$(li)媒质生成速率:412 uθ/min", + "hexcasting.page.lore.experiment1.3": "质震 #28$(li)位置:格雷斯顿$(li)人口:大约 1000$(li)形成节点数:18$(li)节点距质源距离:垂直距离 47-110 m,水平距离 59-289 m$(li)媒质生成速率:8478 uθ/min", + "hexcasting.page.lore.experiment1.4": "质震 #29$(li)位置:无名村庄,格雷斯顿以西两天路程$(li)人口:35$(li)形成节点数:0$(li)节点距质源距离:N/A$(li)媒质生成速率:N/A$(br2)注:居民仍以正常形式被影响", + "hexcasting.page.lore.experiment1.5": "质震 #30$(li)位置:沸溪镇$(li)人口:231$(li)形成节点数:4$(li)节点距质源距离:垂直距离 61-89 m,水平距离 78-191 m$(li)媒质生成速率:1862 uθ/min", + "hexcasting.page.lore.experiment1.6": "总结:一个节点需要大约 60 单位。数量过少时其仍将被消耗,但不会生成足以形成节点的能量。输入个数与垂直水平距离之间相关性很小。$(br2)对群体居民的影响效果(身体机能尤甚)仍比单目标测试时的强,一如往常。", + "hexcasting.page.lore.experiment2.1": "$(italic)这些文件中许多内容都已被编辑。剩余可读文本如下。/$$(br2)对象 #1 “A.E.”$(br)执行程序后立刻停止挣扎。面部与四肢松弛,但可不受协助站立。当不受看管时,对象会出神地做其先前职业(场地管理员)中常做的动作。", + "hexcasting.page.lore.experiment2.2": "实验程序执行后较短时间内心率极高,但由于对象在此之前处于极度恐慌状态,该现象是非决定性的。所得晶芽生成速率为 35 uθ/min。$(br)……$(br)对象 #4 “P.I.”$(br)对 P.I. 进行心理测试。对象理解物体恒存性,具有空间感知力,有基础数学逻辑推理能力。难以完成全新任务。$(br2)……", + "hexcasting.page.lore.experiment2.3": "对象 #7 “T.C.”$(br)对象同意对其执行程序。程序执行几小时后结果与其他对象类似:能站立,能执行简单任务。$(br2)……$(br2)对象 #11 “R.S.”$(br)执行程序前接受镇定,其剂量控制为能使对象在执行程序时醒来……$(br2)……", + "hexcasting.page.lore.experiment2.4": "对象 #23 “A.L.”$(br)相较其他对象,其保有更强的语言能力。在几小时内,其语言能力退化至只能组织混乱的句子,而后则至仅能说出“卡”这一个字。$(br2)待进一步测试:实验程序分别如何影响咒术师和非咒术师?$(br2)……", + "hexcasting.page.lore.inventory.1": "39 号牢房,回收日志 #72,监禁中心 β 座$(br2)囚犯名称:拉斐尔·巴尔$(br)罪行:知晓“毡障”计划$(br)牢房空置原因:死亡$(br)备注:牢房墙壁上大片区域涂写有如下文字。", + "hexcasting.page.lore.inventory.10": "周围这么多媒质我试过好多次施法逃出去或是至少减轻痛苦但那些扫过我的意识的图案在我试着绘制时不停窃笑溶解。我似乎记得我被迫忘记它们,我记得卓伟的互相连接的知识体系被凿空并在刻意忽视的重压下碎裂但回忆起忘记你曾记得你学过的东西再痛苦不过", + "hexcasting.page.lore.inventory.11": "也许我已在过度施法依赖症的晚期中的晚期了,我听见图案裁进我眼睛和眼睑间的空间,我神经的紫色边缘。强迫自己相信什么是真实的和我没在受折磨有意义吗。我该受折磨。如果我再也不能和其他人谈这件事为什么还要尝试呢", + "hexcasting.page.lore.inventory.12": "他们要吧世界上所有人都杀了不是吗大图书馆要吃东西和我一……我上次乞东西是什么时候$(br2)所有人都要吃东西但他们做不到如果所有农夫都死了并且所有农耕知识都被埋到地底下去他们就做不到也许有人能发现真相并把那窝人沾沾自喜的破脸熔成蜡油", + "hexcasting.page.lore.inventory.13": "也许某天醒来会疑惑我们留给他们的冬西会疑惑为何地底有无数洞穴隧道但没人聪明到去开采$(br2)我能看见他们在读这些东西 。他们 …… 会不屑一顾", + "hexcasting.page.lore.inventory.2": "我闭眼时能看见六边形。$(br2)那些图案,它们侵入我的眼睑、我的意识、我的梦境。我的意识在清醒和混乱中反复,就像挂在绳上摇晃的水晶,有时随光闪烁,有时被光吞噬。", + "hexcasting.page.lore.inventory.3": "我今天更清醒了。也许。我不知道。我都不知道我还算不算累。长时间的疲劳早已使我麻木,甚至有东西来刺我眼睛我都感觉不到了。我感受不到疲劳。但疲劳是真实的。$(br2)我的骨头脆弱易折。我的关节粗糙而尖锐。", + "hexcasting.page.lore.inventory.4": "有时我能想起我来这的原因。我记得我对某些我所知的过于张扬了……我记得我在某间很亮的房间中被告知了些什么。我记得我的思维被凝成玻璃,被粉碎,被融化,又重新结晶,然后重复重复重复重复重复就像有人想让我忘记比那还糟是想让我活着同时杀死我,我的自我,我的 iota 没了意义因为没有观察者只有躯体但我瞒过了他们我居然做到了", + "hexcasting.page.lore.inventory.5": "他们觉得他们把我摧毁得能用毛毡盖眼哄骗我但我是清醒的清醒到能感到痛苦$(br2)我不睡觉但我醒来时我不敢把硬壳从我眼睛上搓掉不然会割破皮而且我不想看见紫色闪光", + "hexcasting.page.lore.inventory.6": "他们没杀我,因为我丈夫有我的核心,我死了他会知道。但他不是咒术师所以他没法凭他自己找到我。我走投无$(br2)思考很甬苦。真的很痛苦。思维是累赘累赘印在无数细小水晶上", + "hexcasting.page.lore.inventory.7": "我记得那个明亮房间里的医生强迫我吸入某种类似沙子的东西,但更锐利还非常痛。一开始只是黏膜试图吸住玻璃渣的物理性创伤但之后他们把指甲插到我的刺激反应里他们说几句话就能做到$(br2)我记得去露营时看到联合会成员围着一个村庄铺设法术环然后地面就开始震动", + "hexcasting.page.lore.inventory.8": "没了时间观念。有时我觉得我能看到未来,因为那些场景好像说得通但现在不可能发生因为我知道我余生就待在这了因为亮房里的人这么说了。我能看到我整个人倒了过来我的颅骨裂成两半里面都是长矛样的淌着血的不是紫水晶的东西扎穿一块满是皱纹还幻想自己是蝴蝶的三磅重的脂肪和肉", + "hexcasting.page.lore.inventory.9": "我希望我的学生们还好。我为什么会这么想?累赘。他们告诉我我是累赘,他们不满足于摧毁我,他们还想让我觉得这是我应得的。不用棍棒摧毁身体,而以言语击垮精神。就算他们把我放出去也没人会信我因为我看起来就像一个沉溺于过度施法的瘾君子$(br2)但他们还是把我琐着我不知道这算不算仁慈", + "hexcasting.page.make_battery.1": "将$(media)媒质/$注入一个玻璃瓶,从而制成$(l:items/phials)$(item)试剂瓶/$。", + "hexcasting.page.make_battery.2": "和用于$(l:patterns/spells/hexcasting)$(action)制作施法物品/$的法术类似,我需要在另一只手中拿着一个$(item)玻璃瓶/$,并提供一个$(l:items/amethyst)$(item)紫水晶/$物品实体作为参数。更多信息参见$(l:items/phials)此页/$。$(br2)消耗大约 1 个$(l:items/amethyst)$(item)充能紫水晶/$。", + "hexcasting.page.math.abs.1": "计算绝对值或模长。", + "hexcasting.page.math.abs.2": "将一个数变为其绝对值,将一个向量变为其模长。", + "hexcasting.page.math.add.1": "执行加法。", + "hexcasting.page.math.add.2": "操作如下:$(li)若栈顶为两个数,返回其和。$(li)若为一个数和一个向量,移除该数并将向量的每个分量与其相加。$(li)若为两个向量,将对应分量相加(也即 (1, 2, 3) + (0, 4, -1) = (1, 6, 2))。", + "hexcasting.page.math.ceil": "对一个数取顶,也即将小数部分不为零的数换为大于其的最小整数。或对向量的每个分量取顶。", + "hexcasting.page.math.coerce_axial": "若栈顶为向量,则返回与其夹角最小的轴向单位向量;零向量不受影响。若栈顶为数,则返回该数的符号;所给数为正则返回 1,为负则返回 -1,0 不受影响。", + "hexcasting.page.math.construct_vec": "将三个数作为向量的 X,Y,Z 分量组合(自底向上排列)。", + "hexcasting.page.math.deconstruct_vec": "将一个向量拆分为其 X,Y,Z 分量(自底向上排列)。", + "hexcasting.page.math.div.1": "执行除法或叉积。", + "hexcasting.page.math.div.2": "操作如下:$(li)若栈顶为两个数,返回其商。$(li)若为一个数和一个向量,移除该数并将向量的每个分量与其相除。$(li)若为两个向量,计算其$(l:https://www.mathsisfun.com/algebra/vectors-cross-product.html)叉积/$。$(br2)第一第二种情况下,栈顶元素或其分量为除数,栈顶往下第二元素或其分量为被除数。$(p)警告:绝对不可除以零!", + "hexcasting.page.math.floor": "对一个数取底,也即去掉小数部分取整。或对向量的每个分量取底。", + "hexcasting.page.math.modulo": "取两数除法的余数。也即执行除法后$(italic)剩余/$的数。例如,5 %% 2 得 1,5 %% 3 得 2。或对向量的每个分量执行上述操作。", + "hexcasting.page.math.mul.1": "执行乘法或点积。", + "hexcasting.page.math.mul.2": "操作如下:$(li)若栈顶为两个数,返回其积。$(li)若为一个数和一个向量,移除该数并将向量的每个分量与其相乘。$(li)若为两个向量,计算其$(l:https://www.mathsisfun.com/algebra/vectors-dot-product.html)点积/$。", + "hexcasting.page.math.numvec": "许多数学操作对数和向量都有效。这类参数记为“num vec”。", + "hexcasting.page.math.pow.1": "执行乘方或向量射影。", + "hexcasting.page.math.pow.2": "若栈顶为两个数,返回两数的幂。$(li)若为一个数和一个向量,移除该数并计算向量的每个分量与该数的幂。$(li)若为两个向量,计算栈顶向量对栈顶往下第二向量的$(l:https://en.wikipedia.org/wiki/Vector_projection)向量射影/$。$(br2)第一第二种情况下,栈顶元素或其分量为指数,栈顶往下第二元素或其分量为底数。", + "hexcasting.page.math.random": "返回一个 0 与 1 之间的随机数。", + "hexcasting.page.math.sub.1": "执行减法。", + "hexcasting.page.math.sub.2": "操作如下:$(li)若栈顶为两个数,返回其差。$(li)若为一个数和一个向量,移除该数并将向量的每个分量与其相减。$(li)若为两个向量,将对应分量相减。$(br2)栈顶元素或其分量为减数,栈顶往下第二元素或其分量为被减数。", + "hexcasting.page.media.1": "$(media)媒质/$是一种独立于意识的思维能量。所有生物都会在思考时产生痕量的$(media)媒质/$,而在这一思考过程结束后,产生的媒质就会被释放至环境中。$(br2)所谓施放$(hex)咒术/$,就是操纵$(media)媒质/$以产生有效影响的过程。", + "hexcasting.page.media.2": "$(media)媒质/$可以影响其他媒质,而这种影响的强度和种类都可通过将$(media)媒质/$绘制为各式图案来进行控制。$(p)研究这种魔法的学者则会使用接在木棍一端的浓缩的$(media)媒质/$。只要在空中按特定模式挥舞,学者们就能以足够的精度操控足量的$(media)媒质/$来影响世界,也即“$(hex)咒术/$”。", + "hexcasting.page.media.3": "遗憾的是,就算是感知能力较强的生物(也许我自己也算)也只能产生微量的$(media)媒质/$。只凭自己的大脑来施放咒术不太现实。$(br2)但传说地下有种特殊的矿床,$(media)媒质/$会在其中缓慢累积,并生长为晶体。$(p)真希望我能找到一处……", + "hexcasting.page.meta.eval.1": "移除栈顶的图案列表,然后就像我用$(l:items/staff)$(item)法杖/$施法一样依次运行(直到碰到$(l:patterns/meta#hexcasting:halt)$(action)卡戎之策略/$)。如果一个 iota 已用$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$或$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)类似手段/$作为图案加入栈中,那么该 iota 将在运行时被加到栈中。否则其将在非图案元素运行失败。", + "hexcasting.page.meta.eval.2": "若与$(l:items/focus)$(item)核心/$同时使用,它将提供$(italic)极为/$强大的操控能力。$(br2)据我找到的一张奇特卷轴所称,它还将自然的咒法体系变为了一个“图灵完备”的系统。$(br2)然而,$(hex)咒术/$能重复执行自身的次数是有限的——自然不会对失控的法术手软的!$(br2)此外,由于这些图案产生的能量缺乏我的引导,任何失误都会导致后续操作变得极不稳定,以至于立即瓦解。", + "hexcasting.page.meta.eval/cc.1": "此图案和$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$类似,也能运行图案或依次运行图案列表,但会在开始之前将一独特的“跳转” iota 压入栈中。", + "hexcasting.page.meta.eval/cc.2": "当执行至“跳转” iota 时,法术会直接跳过图案列表中剩余的图案至列表尾部。$(p)当然因为已经有了$(l:patterns/meta#hexcasting:halt)$(action)卡戎之策略/$,这种性质难免显得有些冗余。不过它能以可控方式退出$(italic)多层嵌套/$调用的$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$,而卡戎之策略只能退出一层。$(p)“跳转”iota 甚至会在所有策略都执行完毕后还留在栈上……真是细思恐极。", + "hexcasting.page.meta.for_each.1": "移除栈中的一个图案列表和一个列表,然后对后一列表中的每个元素运行前一图案列表中的图案。", + "hexcasting.page.meta.for_each.2": "更确切地说,对应后一列表中的每个元素,它将:$(li)创建一个新栈,其中包括当前栈中的所有元素和后一列表中的一个元素。$(li)绘制前一列表中的所有图案。$(li)将该栈中剩余的所有元素存进一个列表。$(br)在所有元素都运行一遍后,将该列表压入原本的栈中。$(br2)也难怪精通此操作的人都疯了。", + "hexcasting.page.meta.halt.1": "这个图案将强制停止$(hex)咒术/$的施放。它独自出现可能没什么用,我只要不绘制图案或是放下法杖就行了。", + "hexcasting.page.meta.halt.2": "但当与$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$或$(l:patterns/meta#hexcasting:for_each)$(action)托特之策略/$一起使用时,它就将发挥$(italic)大/$用。那些图案会碰到这个休止符,但$(hex)咒术/$本身不会停止,停止运行的是那些策略。它可以用来防止$(l:patterns/meta#hexcasting:for_each)$(action)托特之策略/$将每个 iota 都运行一遍。这便是逃离疯狂的秘道。", + "hexcasting.page.meta.thanatos.1": "将$(hex)咒术/$仍能运行的图案数压入列表。每运行一个图案,所得数即减少 1。", + "hexcasting.page.mishaps.1": "不幸的是,我(还)不是一个完美的生物。我经常会在研究中和施放$(hex)咒术/$时犯错。比如说,绘制错图案,或是对错误的 iota 进行操作。而自然一般不会宽容我的错误,从而导致$(italic)事故/$。", + "hexcasting.page.mishaps.2": "导致事故的图案会在网格中发红光。根据事故的类型,我能大致推断出其造成的有害后果。同时会有一簇红色与各色混合的火花四散开去,这主要是处理不当的$(media)媒质/$凝结为某种颜色的光所致。", + "hexcasting.page.mishaps.3": "而幸运的是,虽然所有事故导致的有害效果都$(italic)很烦人/$,但也都不会导致长期毁灭性后果。在哪里跌倒,就要在哪里站起来,然后继续前进……当然也可以换一条更好走的路。$(br2)我整理的所有事故如下所述。", + "hexcasting.page.mishaps.disabled": "试图执行被服务器管理员禁用的操作。$(br2)产生黑色火花。", + "hexcasting.page.mishaps.disabled.title": "禁用操作", + "hexcasting.page.mishaps.entity_immune": "该操作试图影响某不会受其影响的实体。$(br2)产生蓝色火花,我手中的物品将会掉落并飞向对应实体。", + "hexcasting.page.mishaps.entity_immune.title": "实体免疫", + "hexcasting.page.mishaps.entity_out_of_range": "该操作试图影响在我影响范围之外的某一实体。$(br2)产生粉红色火花,我手中的物品将会掉落并飞向对应实体。", + "hexcasting.page.mishaps.entity_out_of_range.title": "实体越界", + "hexcasting.page.mishaps.incorrect_block": "该操作需在目标位置存在某种方块,而该位置实际存在的方块不合适。$(br2)产生亮绿色火花,并在对应位置产生一次爆炸。这种爆炸似乎不会伤害到我、世界或是任何其他事物。就是挺吓人的。", + "hexcasting.page.mishaps.incorrect_block.title": "方块错误", + "hexcasting.page.mishaps.incorrect_iota": "该操作需要一种特定类型的 iota 作为参数,而实际 iota 无效。如果有多个 iota 无效,错误信息只会提示最靠近栈底的错误。$(br2)产生深灰色火花,无效的 iota 会被替换为$(l:casting/influences)$(action)垃圾/$。", + "hexcasting.page.mishaps.incorrect_iota.title": "Iota 错误", + "hexcasting.page.mishaps.incorrect_item": "该操作需要某种物品,而我提供的物品不合适。$(br2)产生棕色火花。如果在手中持有对应物品,则该物品会掉落在地。如果对应物品以实体形式存在,则其会被击飞。", + "hexcasting.page.mishaps.incorrect_item.title": "物品错误", + "hexcasting.page.mishaps.invalid_pattern": "绘制的图案不对应任何操作。$(br2)产生黄色火花,并向栈顶压入一个$(l:casting/influences)$(action)垃圾/$。", + "hexcasting.page.mishaps.invalid_pattern.title": "无效图案", + "hexcasting.page.mishaps.math_error": "该操作违背了数学规律,例如试图除以零。$(br2)产生红色火花,压入一个$(l:casting/influences)$(action)垃圾/$,并销蚀我的意识,扣去我当时生命力的一半。自然似乎对这种举动深感冒犯,而后便会报复性地惩罚$(italic)我/$。", + "hexcasting.page.mishaps.math_error.title": "数学错误", + "hexcasting.page.mishaps.not_enough_iotas": "该操作需要比当前栈中元素数还多的 iota。$(br2)产生淡灰色火花,并向栈顶压入缺少的参数的数量个$(l:casting/influences)$(action)垃圾/$。", + "hexcasting.page.mishaps.not_enough_iotas.title": "Iota 过少", + "hexcasting.page.mishaps.other": "模组中的漏洞产生的无效类型的 iota 或是其他错误导致法术失效。$(l:https://github.com/gamma-delta/HexMod/issues)请报告该漏洞!/$$(br2)产生黑色火花。", + "hexcasting.page.mishaps.other.title": "灾难性故障", + "hexcasting.page.mishaps.retrospection": "试图在绘制$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$前绘制$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$。$(br2)产生橙色火花,并压入一个$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$对应的图案。", + "hexcasting.page.mishaps.retrospection.title": "反思过急", + "hexcasting.page.mishaps.stack_size": "试图施放超出栈大小限制的法术。$(br2)产生黑色火花,我的整个栈变为仅含有单个$(l:casting/influences)$(action)垃圾/$。", + "hexcasting.page.mishaps.stack_size.title": "Iota 过多", + "hexcasting.page.mishaps.too_many_patterns": "试图在单个$(hex)咒术/$内运行过多图案,通常是因为不小心制造了死循环。$(br2)产生暗蓝色火花,并使我窒息。", + "hexcasting.page.mishaps.too_many_patterns.title": "陷入沉思", + "hexcasting.page.mishaps.true_name": "试图在某种永久性媒介中$(l:patterns/readwrite#hexcasting:write)$(action)存储/$代表另一位玩家的 iota。$(br2)产生黑色火花,并致盲大约一分钟。", + "hexcasting.page.mishaps.true_name.title": "违犯他人", + "hexcasting.page.mishaps.vector_out_of_range": "该操作试图影响在我影响范围之外的某一位置。$(br2)产生品红色火花,我手中的物品将会掉落并飞向对应位置。", + "hexcasting.page.mishaps.vector_out_of_range.title": "向量越界", + "hexcasting.page.mishaps2.1": "我发现了若干骇人的新事故。我绝不能向它们屈服。", + "hexcasting.page.mishaps2.bad_mindflay": "试图剥离已被剥除意识的生物的意识,或是试图剥离不适用于目标方块的生物的意识。$(br2)产生暗绿色火花,并杀死对应生物。倘若被村民看到了,他们应该不会对此有什么好评价。", + "hexcasting.page.mishaps2.bad_mindflay.title": "惰性剥离", + "hexcasting.page.mishaps2.bad_shepherd": "试图在栈顶无布尔值时激活$(l:greatwork/directrix)$(item)牧羊人导向石/$。$(br2)产生红色和白色火花,并将牧羊人导向石抛出环外。只能说,还好不会伤到它,但这之后需要把它带回到原来的位置。", + "hexcasting.page.mishaps2.bad_shepherd.title": "不当牧羊", + "hexcasting.page.mishaps2.no_circle": "试图直接执行只能在法术环内执行的操作。$(br2)产生淡蓝色火花,并将我物品栏中所有物品散落在地。", + "hexcasting.page.mishaps2.no_circle.title": "缺失法术环", + "hexcasting.page.mishaps2.no_record": "试图在无对应方块处访问$(l:greatwork/akashiclib)$(item)阿卡夏记录/$。$(br2)产生紫色火花,并消耗部分经验。", + "hexcasting.page.mishaps2.no_record.title": "缺失阿卡夏记录", + "hexcasting.page.nadirs.1": "此类法术会给予某一实体一个负面药水效果。它们都接受一个实体作为效果受体,和一两个数。其中第一个数是持续时间,第二个数(若有)是效果强度(以 1 起始)。$(br2)每种法术都有一个“基础消耗”,实际消耗为基础消耗乘以效果强度的平方。", + "hexcasting.page.nadirs.2": "据某些传说所言,这些法术和它们的姊妹法术——$(l:patterns/great_spells/zeniths)$(action)天顶法术/$,都是“……由另一个世界的魔法启发的。在那个世界里,强大的魔法师会从四处收集魔法并决斗至死。不幸的是,许多信息都没翻译过来……”$(br2)也许这就是它们名字怪异的原因。", + "hexcasting.page.nadirs.potion/levitation": "给予$(thing)飘浮/$。每 5 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.nadirs.potion/poison": "给予$(thing)中毒/$。每 3 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.nadirs.potion/slowness": "给予$(thing)缓慢/$。每 5 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.nadirs.potion/weakness": "给予$(thing)虚弱/$。每 10 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.nadirs.potion/wither": "给予$(thing)凋零/$。每 1 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.naming.1": "古人给各类操作命的名确实很奇特,但我认为其中总有某种命名逻辑。$(br2)似乎各式操作均被分入了若干组,组内的操作命名方式类似——以其要移除和加入的 iota 个数命名。", + "hexcasting.page.naming.2": "$(li)$(thing)精思/$不出栈,入栈一个 iota。$(li)$(thing)纯化/$出栈一个,入栈一个。$(li)$(thing)馏化/$出栈两个,入栈一个。$(li)$(thing)提整/$出栈三个或更多,入栈一个。$(li)$(thing)分解/$出栈一个,入栈两个。$(li)$(thing)拆解/$出栈一个,入栈三个或更多。$(li)$(thing)策略/$则对应其余出栈入栈操作(或会以某种方式重新排列栈的操作)。", + "hexcasting.page.naming.3": "法术不受此命名法约束,而是以其效用命名。毕竟,能叫它$(l:patterns/spells/basic#hexcasting:explode)$(action)爆炸/$,为何还要起个像是“$(action)爆破兵之策略/$”的名字呢?", + "hexcasting.page.numbers.1": "没有绘制数字的简单方法,这点挺烦人的。自然屈尊为我们创造的方法如下。", + "hexcasting.page.numbers.2": "首先,绘制左页两图案中的一种,默认数值为 0。然后,每一画的$(italic)方向/$会以对应方式修改该数值。$(li)前方:加 1$(li)左前方:加 5$(li)右前方:加 10$(li)左后方:乘 2$(li)右后方:除以 2$(br)顺时针绘制,也即左页右图,会在绘制完成后取相反数(如左图逆时针绘制则不取)。$(p)绘制完成后会返回对应数。", + "hexcasting.page.numbers.3": "某些情况下用$(l:items/abacus)$(item)算盘/$会更方便。但数字的“正确”画法也要了然于心。", + "hexcasting.page.numbers.example.-32": "该图案会返回 -32:(1 + 5 + 10) * 2 的相反数。", + "hexcasting.page.numbers.example.-32.header": "例图三", + "hexcasting.page.numbers.example.10": "该图案会返回 10。", + "hexcasting.page.numbers.example.10.header": "例图一", + "hexcasting.page.numbers.example.4.5": "该图案会返回 4.5:5 / 2 + 1 + 1。", + "hexcasting.page.numbers.example.4.5.header": "例图四", + "hexcasting.page.numbers.example.7": "该图案会返回 7:5 + 1 + 1。", + "hexcasting.page.numbers.example.7.header": "例图二", + "hexcasting.page.patterns_as_iotas.1": "咒法学中的一个怪异之处就是$(italic)图案本身/$也可被视为 iota——其甚至能在施法时被压到栈中。$(br2)这就产生了一个问题:我怎么把图案用作 iota 呢?如果就只是画一遍,自然大概不会将其理解为“把它加到栈里”,而只会将其与操作对应起来。", + "hexcasting.page.patterns_as_iotas.2": "幸运的是,自然提供了一组专用于此道的$(l:casting/influences)虚指/$。$(br2)简而言之,$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$使我能将一个图案加到栈中,$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$则能加入一整个列表。", + "hexcasting.page.patterns_as_iotas.escape.1": "要使用$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$,先绘制它,然后绘制任意图案。第二个图案就会被加到栈中。", + "hexcasting.page.patterns_as_iotas.escape.2": "如果对计算机科学有足够了解的话,你可能能将其与“转义”/“escape”操作联系起来。$(br2)考察的一大用途是将某一图案复制到$(l:items/scroll)$(item)卷轴/$或$(l:items/slate)$(item)石板/$上,且要和$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$配合使用。这之后卷轴和石板就能拿来装饰了。", + "hexcasting.page.patterns_as_iotas.further_notes.1": "在绘制$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$前绘制一个$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$,就能绕过它们的特殊功能,并将它们作为普通图案加到栈中,且不会影响返回正常施法模式前要绘制的$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$个数。$(br2)如果在$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省中/$连续绘制两个$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$,只有第一个$(l:patterns/patterns_as_iotas#hexcasting:escape)$(action)考察/$会被加到栈中。", + "hexcasting.page.patterns_as_iotas.further_notes.2": "如果$(l:patterns/meta#hexcasting:eval)$(action)赫尔墨斯之策略/$或者其他元运行图案运行的列表中出现了图案之外的 iota,那么通常来说会招致事故。但是,这种事故也可用本节中写到的图案规避。$(br2)本节中的图案可以“转义”图案 iota,也一样能“转义”$(o)任意一种 iota$()。运行到这些 iota 时,它们只会被压入栈中,而不会招致事故。", + "hexcasting.page.patterns_as_iotas.further_notes.3": "我要是想让$(hex)咒术/$直接引用特定的 iota——比如复杂向量、对实体的引用等——而不在每次运行时都从头开始构造或获取,这一技术会很有用。$(br2)把这类 iota 加入列表的过程可能会比较复杂。最简单的方法是在组装列表时绘制占位图案,然后用$(l:patterns/lists#hexcasting:replace)$(action)外科医师之提整/$替换成所需的 iota。", + "hexcasting.page.patterns_as_iotas.further_notes.title": "更多笔记", + "hexcasting.page.patterns_as_iotas.parens.1": "绘制$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$会让这之后绘制的图案不再与操作联系。而在绘制$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)反思/$后,之前绘制的图案就会作为一个列表加到栈中。", + "hexcasting.page.patterns_as_iotas.parens.2": "如果绘制内省后再绘制一个$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)内省/$,则它也将被加到列表中,而且需绘制$(italic)两次/$$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$才能回到正常施法模式。", + "hexcasting.page.patterns_as_iotas.undo": "最后,若在$(l:patterns/patterns_as_iotas#hexcasting:open_paren)$(action)内省/$和$(l:patterns/patterns_as_iotas#hexcasting:close_paren)$(action)反思/$之间有图案绘制错误,则可绘制$(l:patterns/patterns_as_iotas#hexcasting:undo)$(action)消解/$以移除图案列表中的最后绘制的图案。", + "hexcasting.page.phials.1": "我觉得……自然不愿意给我的研究留些余量的做法,令人非常不快。如果我手头只有$(l:items/amethyst)$(item)充能紫水晶/$,就算是最为基础的$(l:patterns/basics#hexcasting:raycast)$(action)弓箭手之馏化/$也会消耗一整块水晶,没利用的$(media)媒质/$就被浪费了。$(br2)幸运的是,我找到了一种解决问题的方法。", + "hexcasting.page.phials.2": "我找到了记载着一种注入了$(media)媒质/$的$(item)玻璃瓶/$的卷轴。施放$(hex)咒术/$时,法术会从这种试剂瓶中汲取$(media)媒质/$。液态的$(media)媒质/$便于按量使用,不会有媒质被浪费。它就和$(l:items/hexcasting)$(item)缀品/$的内部储库差不多,也一样可以用$(l:patterns/spells/hexcasting#hexcasting:recharge)$(action)重新充能/$补充媒质。", + "hexcasting.page.phials.3": "而不幸的是,用于$(italic)制作/$这种试剂瓶的技艺已经散佚了。我确实发现了$(l:patterns/great_spells/make_battery#hexcasting:craft/battery)$(thing)对应图案画法的提示/$,但具体绘制方法难以捉摸,怎么都画不对。不过我想只要勤学苦练就能修得真功。现在的话,浪费$(media)媒质/$是没法避免了……$(br2)但我不会一直囿于此处的。", + "hexcasting.page.phials.desc": "$(italic)玉液琼浆。/$", + "hexcasting.page.pigments.1": "咒法学的古代研究者们偶尔会用一种颜色来象征自己和自己的$(hex)咒术/$。他们的名字已不可考,但那些颜色留存至今。倘若直接向自然呈上一种特殊的染色剂,就能“……以自然乐见的方式为某人的思维涂上颜色,并使个人代表色产生奇妙的变化。”", + "hexcasting.page.pigments.2": "我不懂它们的具体原理,但我相信我已琢磨出制造不同颜色染色剂的配方了。若要使用染色剂,可手持之并以另一只手施放$(l:patterns/spells/colorize)$(action)内化染色剂/$,染色剂则会被消耗。$(br2)染色剂似乎会影响我施放$(hex)咒术/$时的$(media)媒质/$火花以及我的$(l:patterns/spells/sentinels)$(thing)哨卫/$的颜色,但影响到其他地方也完全是正常现象。", + "hexcasting.page.pigments.colored.crafting.desc": "五彩缤纷的染色剂。", + "hexcasting.page.pigments.colored.crafting.header": "色彩染色剂", + "hexcasting.page.pigments.special": "最后还有两种特殊的染色剂。$(item)灵魂闪光染色剂/$的颜色为我所独有,而$(item)空无染色剂/$则会重置为初始状态的紫水晶色。$(br2)$(italic)以及许多还没被研究出来的内在颜色。/$", + "hexcasting.page.potions.1": "透过$(l:items/lens)$(item)探知透镜/$观察,就能在咒术网格里塞进更多图案。想让施法变得更紧凑?我想炼金术可能有方法。$(br2)向$(item)粗制的药水/$里放进一撮紫水晶粉,酿成的药水便能像透镜那样增大我的咒术网格。甚至还能两者一起使用,将网格推向极致!", + "hexcasting.page.potions.2": "明晰效果可延长,可增强,也可如同其他药水那样精制。$(br2)还可用$(item)发酵蛛眼/$腐化,以产生效果相反的药水。那些不怀好意的咒术师可以尝尝它的威力。", + "hexcasting.page.potions.effects.header": "明晰与蒙翳", + "hexcasting.page.quenching_allays.1": "$(l)它们就是小块媒质。/$我怎么没早点发现呢?它们——我是一堆血肉再加上一小点……是被赐予了一小点的思维,但悦灵是能维持自稳的媒质集群,再被按到一小点血肉上去。所有东西就都说得通了——它们对媒质的趋向性,它们对音乐的种种反应,$(l)我现在理解了/$,$(l)但/$为何前人$(l)没有/$?", + "hexcasting.page.quenching_allays.2": "理解这点后,唯一$(l)正确/$的选择就是去征服它们奇异的意识——它们奇异的自我——也是它们的全部、一个意识、一个自我、一段尾声。它们的性状似乎揭示了某些东西。我能……我能使用它们压缩$(media)媒质/$,将两束思维叠放在一起,形体与认知,多与一。$(br2)这个过程不知怎么的会自行产生$(media)媒质/$。这是怎么回事?也许——也许是$(l)我/$的缘故,是完成这项任务的过程——", + "hexcasting.page.quenching_allays.3": "它不重要。我不重要。它们不重要,重要的只有功用。这就是了。$(br2)这肯定相当痛苦。$(br2)十份$(l:items/amethyst)$(item)紫水晶粉/$,就是启动如此恶劣仪式的代价。", + "hexcasting.page.quenching_allays.4": "所得的产物十分脆弱。直接破坏会将其打碎成碎片,$(thing)时运/$则能增加产量……如果需要获得方块本身,那要有精准采集才行。$(br2)产生的碎片相当于 3 个$(l:items/amethyst)$(item)充能紫水晶/$拼在一起。方块则相当于 4 个这种碎片。", + "hexcasting.page.quenching_allays.5": "它们变幻莫测,好像会在我的手中不断变形闪烁,若是给予它们来自另一种$(media)媒质/$形态的引导,它们便会变成对应的形态,且$(media)媒质/$总量前后不变。", + "hexcasting.page.readers_guide.1": "我将我找到的所有图案根据作用分为了几类。我也记下了它们的笔画顺序,前提是我在研究中发现了确切顺序。绘制起点标记为一个稍大的红点。$(br2)如果某个操作需要绘制多个图案才能执行,我会将那些图案排在一起。", + "hexcasting.page.readers_guide.2": "我$(italic)没法确定/$某些图案的笔顺,不过它们的形状是确定的。我猜测它们的画法就藏在某些古代的图书馆和地牢里。$(br2)我只会记录这类图案的外形,笔顺不记。", + "hexcasting.page.readers_guide.3": "我也会记下操作接受或修改的 iota 的类型,后接一个“→”,再后接这些操作产生的 iota 的类型。$(p)例如,“$(n)vector, number/$ → $(n)vector/$” 意味着该操作会从栈顶移除一个向量和一个数,然后压入一个向量;或者说,移除一个数,然后修改栈顶的向量。(数需在栈顶,向量则需直接处于数下方。)", + "hexcasting.page.readers_guide.4": "“→ $(n)entity/$”意味着该操作只会压入一个实体。“$(n)entity, vector/$ →”意味着该操作会弹出一个实体和一个向量,而不压入任何 iota。$(br2)再提一句,如果觉得标记笔顺的小点太慢或太难看清楚,可以按下 $(thing)Control 或 Command/$ 以渐变显示图案,起始点最深,结束点最浅。卷轴和咒术网格也能这样!", + "hexcasting.page.readwrite.1": "这一章节主要记述有关将 $(thing)iota/$ 写入永久性介质中的知识。几乎所有 iota 都可被写入合适的物品中,例如$(l:items/focus)$(item)核心/$和$(l:items/spellbook)$(item)法术书/$,而后可以将它们读出来。而某些物品,例如$(l:items/abacus)$(item)算盘/$,则只能被读取。$(br2)一般可从另一只手中的物品中读取或写入 iota。但若将物品丢出为物品实体,或是放在物品展示框中,则也可读取或写入。", + "hexcasting.page.readwrite.2": "我还能对其他实体执行上述两种操作。例如,可从一张壁挂$(l:items/scroll)$(item)卷轴/$中读出图案。$(br2)然而,貌似写入代表其他玩家的 iota 是不被允许的,只有我自己的能写入。我认为这和“真名”类似。也许是自然在阻止我们的真名落入敌手。如果我想把我的真名交给朋友,做个$(l:items/focus)$(item)核心/$给他们就好了。", + "hexcasting.page.readwrite.local": "物品不是唯一一个能写入信息的地方,我也可以将其存到$(hex)咒术/$自身的$(media)媒质/$里,就和栈差不多。文献将其称为$(l:patterns/readwrite#hexcasting:local)$(thing)渡鸦之思/$。它能存有一个 iota,默认为 $(l:casting/influences)$(thing)Null/$,和$(l:items/focus)$(item)核心/$差不多。它在每次使用$(l:patterns/meta#hexcasting:for_each)$(action)托特之策略/$后保持不变,但也只能撑到$(hex)咒术/$结束。一旦施法结束,其值就会被清除。", + "hexcasting.page.readwrite.local.title": "渡鸦之思", + "hexcasting.page.readwrite.read": "复制另一只手所持物品中 iota,并将其压入栈顶。", + "hexcasting.page.readwrite.read/entity": "与$(l:patterns/readwrite#hexcasting:read)$(action)书吏之精思/$类似,但会将 iota 从某实体中读出,而非手中物品。", + "hexcasting.page.readwrite.read/local": "将$(l:patterns/readwrite#hexcasting:local)$(thing)渡鸦之思/$中的 iota 复制出来。(也许刚刚才用$(l:patterns/readwrite#hexcasting:write/local)$(action)福金之策略/$写进去。)", + "hexcasting.page.readwrite.readable": "如果另一只手中物品存有可被读取的 iota,返回 True。否则返回 False。", + "hexcasting.page.readwrite.readable/entity": "与$(l:patterns/readwrite#hexcasting:readable)$(action)审计员之精思/$类似,但会检测实体可读性,而非手中物品。", + "hexcasting.page.readwrite.writable": "如果能将 iota 写入另一只手中的物品,返回 True。否则返回 False。", + "hexcasting.page.readwrite.writable/entity": "与$(l:patterns/readwrite#hexcasting:writable)$(action)估价员之精思/$类似,但会检测实体可写性,而非手中物品。", + "hexcasting.page.readwrite.write": "移除栈顶 iota,并将其写入另一只手中的物品中。", + "hexcasting.page.readwrite.write/entity": "与$(l:patterns/readwrite#hexcasting:read)$(action)书吏之策略/$类似,但会将 iota 写入某实体,而非手中物品。$(br2)有意思的是,我似乎没法以这种手段写入我自己的真名。但我总感觉要是真这么做了我的安全就会受到严重威胁。", + "hexcasting.page.readwrite.write/local": "移除栈顶 iota,并将其写入$(l:patterns/readwrite#hexcasting:local)$(thing)渡鸦之思/$,在施放$(hex)咒术/$的整个过程结束之前一直存在那里。", + "hexcasting.page.scroll.1": "$(l:items/scroll)$(item)卷轴/$能让分享图案画法变得十分方便。可用$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$将图案复制上去,然后该图案就会出现在物品提示栏内。$(br2)也可以将其放在墙上用作装饰或用于教学。就和画一样,卷轴也分大小,从 1x1 到 3x3 都有。对挂在墙上的卷轴使用$(l:items/amethyst)$(item)紫水晶粉/$能显示绘制的笔画顺序。", + "hexcasting.page.scroll.2": "此外,我还在地牢和要塞里发现了所谓$(l:items/scroll)$(item)远古卷轴/$。它们记载了一些特殊法术的笔画顺序——$(thing)卓越法术/$,传闻是强大到凡人的意识无法承受的法术……$(br2)但如果那些“凡人”施放不了,那我觉得他们就不应该知道这些法术的存在。", + "hexcasting.page.scroll.crafting.desc": "$(italic)我用锐利的笔和学生的鲜血在洁白的纸上书写,探知着他们的秘密。/$", + "hexcasting.page.sentinels.1": "$(italic)去吧!现在一切都已完成,$(br)只须留着一个人作哨卫。/$$(br2)$(l:patterns/spells/sentinels)$(thing)哨卫/$是一种能被$(hex)咒术/$召唤出的神秘力量,就和亲人或是侍卫一样。对我而言,它是一个旋转着的几何体,而其他人看不见它。", + "hexcasting.page.sentinels.2": "它有些有趣的性质:$(li)它似乎不可被触摸,没人摸得到它。$(li)只有我的$(hex)咒术/$才能与之交互。$(li)一旦召唤,在被驱除前它都将留在原位。$(li)只要我离它足够近,我就能透过方块看见它。", + "hexcasting.page.sentinels.sentinel/create": "在给定位置召唤$(l:patterns/spells/sentinels)$(thing)哨卫/$。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.sentinels.sentinel/destroy": "将我的$(l:patterns/spells/sentinels)$(thing)哨卫/$从世界中驱除出去。消耗极少量$(media)媒质/$。", + "hexcasting.page.sentinels.sentinel/get_pos": "将我的$(l:patterns/spells/sentinels)$(thing)哨卫/$的位置加到栈中,若并未召唤则加入一个 $(l:casting/influences)$(thing)Null/$。消耗极少量$(media)媒质/$。", + "hexcasting.page.sentinels.sentinel/wayfind": "将栈顶的位置向量变为从我的位置指向$(l:patterns/spells/sentinels)$(thing)哨卫/$的单位向量,若并未召唤则变为 $(l:casting/influences)$(thing)Null/$。消耗极少量$(media)媒质/$。", + "hexcasting.page.sets.and.1": "取两集合的交集。", + "hexcasting.page.sets.and.2": "操作如下:$(li)若栈顶为两个数,那么只有在两个位组中$(italic)均/$为 1 的位置,所得位组为 1。$(li)若栈顶为两个列表,则创建一个由第一个和第二个列表共有的元素组成的列表。", + "hexcasting.page.sets.not": "对位组执行位非操作,将所有为 1 的比特换为 0,反之亦然。就我经验而言,这会使一个数变为其相反数,然后减 1。例如,0 会变成 -1,而 -100 会变成 99。", + "hexcasting.page.sets.numlist": "集合操作比较奇怪,部分操作只能接受两个数或两个列表,一个数一个列表就不行。这类参数记为“(num, num) (list, list)”。$(br2)当接受的是数时,它们将被视为所谓二进制的“位组”,也就是由 1 和 0、真和假、“开”和“关”组成的列表。", + "hexcasting.page.sets.or.1": "取两集合的并集。", + "hexcasting.page.sets.or.2": "操作如下:$(li)若栈顶为两个数,那么在两个位组中至少有一个为 1 的位置,所得位组也为 1。$(li)若栈顶为两个列表,则创建一个由第一个列表中所有元素和第二个列表独有的元素组成的列表。和$(l:patterns/lists#hexcasting:add)$(action)加法之馏化/$有些类似。", + "hexcasting.page.sets.to_set": "去除列表内重复的元素。", + "hexcasting.page.sets.xor.1": "取两集合中每个集合独有的元素集合。", + "hexcasting.page.sets.xor.2": "操作如下:$(li)若栈顶为两个数,那么只有在两个位组中$(italic)仅一个/$为 1 的位置,所得位组为 1。$(li)若栈顶为两个列表,则创建一个在两个列表中$(italic)仅出现一次/$的元素组成的列表。", + "hexcasting.page.slate.1": "$(l:items/slate)$(item)石板/$和$(l:items/scroll)$(item)卷轴/$类似,可以将图案复制上去并放置在世界中以展示该图案。$(br2)然而,我曾读到过某些粗略的故事,它们记述了一种用$(l:items/slate)$(item)石板/$组成的伟大结构,用来施放$(l:items/staff)$(item)法杖/$无法施放的$(l:greatwork/spellcircles)$(thing)伟大仪式/$。", + "hexcasting.page.slate.2": "也许我将来就会碰到这些知识。但就现在而言,我觉得它们非常适合装饰。$(br2)至少它们可以放在方块的任何一面,这点和$(l:items/scroll)$(item)卷轴/$不同。", + "hexcasting.page.slate.3": "我还发现了其他类型的$(l:items/slate)$(item)石板/$,它们并未刻有图案,但似乎内嵌有某种……奇怪的……异常构造。单单思考它们就让我头脑胀痛,就好像我的思维被它们的结构折弯,随着它们的回路流动,迷失在它们迷宫般的深渊中,迷失在迷失在迷失在导向到处理为——$(br2)……我的思维差点就被搅乱了。还是之后再做相关研究吧。", + "hexcasting.page.slate.crafting.desc": "$(italic)这就是横竖撇捺了。要记牢。/$", + "hexcasting.page.spellbook.1": "$(l:items/spellbook)$(item)法术书/$是我研究成果的结晶。它像是一座满是$(l:items/focus)$(item)核心/$的图书馆。准确的说是最多能存放 $(thing)64/$ 个。$(br2)每一页都能存储一个 iota。手持法术书时,可在潜行时用滚轮自由选择当前活动页(存储和复制 iota 的目标页),也可在施放$(hex)咒术/$时副手手持,并直接用滚轮改变活动页。", + "hexcasting.page.spellbook.2": "就像$(l:items/focus)$(item)核心/$一样,法术书也有防覆写机制。将其和$(item)蜜脾/$合成就能给当前页上漆,从而防止$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$改变其内容。而清除也和$(l:items/focus)$(item)核心/$一样,使用$(l:patterns/spells/hexcasting#hexcasting:erase)$(action)清除物品/$就能同时去除漆封和当前页的内容。$(br2)也可在铁砧上改变当前书页的名字,方便查找。", + "hexcasting.page.spellbook.crafting.desc": "$(italic)巫师们喜欢阅读。大多数巫师经常阅读,而且睡前一定要读些什么确实是判断一个人是不是巫师的有效方法。/$", + "hexcasting.page.spellcircles.1": "我终于知道$(l:items/slate)$(item)石板/$的用途了。早已遗落的卓伟结构。镌刻其上的图案会按顺序自动运行。思维和能量在其中穿梭,一个接一个接一个接一个接一个穿梭穿梭穿梭——我不能我不能我不能跟着它的思维应该去理解。", + "hexcasting.page.spellcircles.2": "我需要$(l:greatwork/impetus)$(item)促动石/$作为一种自我维持的$(media)媒质/$波源来启动仪式。产生的波会随着$(l:items/slate)$(item)石板/$或是其他合适的方块穿梭,运行它碰到的图案。$(br2)如果波无法回到$(l:greatwork/impetus)$(item)促动石/$处,施法会立即失败。而且,波流出任何方块的方向必须唯一而确定,否则法术环会在分叉处失效。", + "hexcasting.page.spellcircles.3": "因此,法术“环”必须是一个封闭的图形,凹多边形和凸多边形均可,方向也随意。实际上,借助某些其他方块,法术环可在所有三个维度上随意排布。这种性质可能没什么大用,但我必须给大脑一点刺激,好让研究继续下去。", + "hexcasting.page.spellcircles.4": "真是精妙。法术环不会从我的物品栏或我的意识中汲取$(media)媒质/$,而是要通过漏斗(或类似装置)向$(l:greatwork/impetus)$(item)促动石/$提供晶态的$(media)媒质/$。$(br2)$(l:items/lens)$(item)探知透镜/$能以紫水晶粉为单位显示$(l:greatwork/impetus)$(item)促动石/$中的$(media)媒质/$量。", + "hexcasting.page.spellcircles.5": "然而,用法术环施放的法术有一个限制:它无法影响环外的事物。也即,它无法影响到能将整个法术环包起的最小长方体外的事物(有凹进部分的法术环仍能影响凹进部分内的事物)。", + "hexcasting.page.spellcircles.6": "在媒质波减弱前它只能通过有限个方块,但这个值很大,实际不大可能超过这个值。$(br2)相反地,有部分操作只能在法术环上执行,不过它们没有一个是法术。它们似乎都是处理法术环本身性质的操作。相关笔记$(l:patterns/circle)见此/$。", + "hexcasting.page.spellcircles.7": "我还在笔记中找到了一份草稿,是一个古代研究者使用的法术环。另一页上就是它的重绘图(挺抽象的)。$(br2)其中的图案会按逆时针运行,以$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$开始并以$(l:patterns/great_spells/teleport#hexcasting:teleport/great)$(action)卓越传送/$结束。", + "hexcasting.page.spellcircles.teleport_circle.title": "传送环", + "hexcasting.page.stack.1": "$(thing)栈/$,又被称为“后进先出表(LIFO)”,是计算机科学中的概念。简而言之,栈是一种只能与最近交互过的事物交互的事物的集合。$(br2)想象一摞盘子,新盘子会被放在其顶部。若想要与放在这摞盘子中间的某个盘子交互,你就必须先将它上面的所有盘子拿开才行。", + "hexcasting.page.stack.2": "因为栈非常简单,所以可用的交互种类屈指可数:$(li)$(italic)向其中加入事物/$,称为“入栈”/“push”。$(li)$(italic)移除最后加入的元素/$,称为“出栈”/“pop”。$(li)$(italic)校验或修改最后加入的元素/$,称为“检视”/“peek”。$(br)我们将最后加入的元素称为“栈顶元素”,就和盘子的类比差不多。$(p)举个例子,如果向栈压入 1 号元素,然后压入 2 号元素,然后弹出一个元素,这时栈顶元素便是 1 号元素。", + "hexcasting.page.stack.3": "操作(大致)都只能与栈以如上几种方式交互。它们会弹出部分它们所期望的 iota(称为“参数”或“实参”或“形参”),对它们进行处理,然后压入一定数目的结果。$(br2)当然,某些操作(例如$(l:patterns/basics#hexcasting:get_caster)$(action)意识之精思/$)可能不会弹出任何元素,而某些操作(尤其是法术)可能不会压入任何元素。", + "hexcasting.page.stack.4": "更复杂的操作都可用若干次入栈、出栈或检视操作实现。例如,$(l:patterns/stackmanip#hexcasting:swap)$(action)弄臣之策略/$交换栈顶两个元素的顺序。这可认为是弹出两个 iota 并以相反顺序重新压入。又例如,$(l:patterns/stackmanip#hexcasting:duplicate)$(action)双子之分解/$会复制栈顶元素,也即其检视栈顶并压入一个一样的元素。", + "hexcasting.page.stackmanip.2dup": "复制栈顶的两个 iota。[0, 1] 变为 [0, 1, 0, 1]。", + "hexcasting.page.stackmanip.duplicate": "复制栈顶的 iota。", + "hexcasting.page.stackmanip.duplicate_n": "移除栈顶的数,然后将移除后的栈顶元素复制该数次。(若所给数为 2,则栈顶会有两个同一元素,不是三个。)", + "hexcasting.page.stackmanip.fisherman": "提出下标为所给数的元素并将其置于栈顶。", + "hexcasting.page.stackmanip.fisherman/copy": "与$(l:patterns/stackmanip#hexcasting:fisherman)$(action)渔夫之策略/$类似,但会复制 iota 而非将其提出。", + "hexcasting.page.stackmanip.mask.1": "一组无限个根据凹槽和横线的顺序来移除或保留栈中元素的操作。", + "hexcasting.page.stackmanip.mask.2": "假如从左到右绘制书吏之策略,此操作操控的 iota 个数由其横向长度决定。从靠近栈底的位置开始往栈顶计入,一条横线代表保留该处元素,一个凹槽代表移除该处元素。$(br2)如果栈从靠近栈底处起形如 $(italic)0, 1, 2/$ ,绘制左页例图一,则栈变为 $(italic)1/$;例图二会将栈变为 $(italic)0/$;例图三会将栈变为 $(italic)0, 2/$(栈底方向的 0 不受影响)。", + "hexcasting.page.stackmanip.over": "将栈顶往下第二元素复制至栈顶。[0, 1] 变为 [0, 1, 0]。", + "hexcasting.page.stackmanip.pseudo-novice": "移除栈顶的 iota。$(br2)这似乎是$(l:patterns/stackmanip#hexcasting:mask)$(action)簿记员之策略/$的一种特殊形式。", + "hexcasting.page.stackmanip.pseudo-novice.title": "初学者之策略", + "hexcasting.page.stackmanip.rotate": "将栈顶往下第三元素拉至栈顶。[0, 1, 2] 变为 [1, 2, 0]。", + "hexcasting.page.stackmanip.rotate_reverse": "将栈顶元素沉至栈顶往下第三位处。[0, 1, 2] 变为 [2, 0, 1]。", + "hexcasting.page.stackmanip.stack_len": "以数的形式压入栈中元素的个数。(例如,一个形如 [0, 1] 的栈会变为 [0, 1, 2]。)", + "hexcasting.page.stackmanip.swap": "交换栈顶两个 iota 的位置。", + "hexcasting.page.stackmanip.swizzle.1": "根据所给数字代码重排栈顶若干元素。", + "hexcasting.page.stackmanip.swizzle.2": "我确实不知道数字代码和重排操作的完整对应关系,但我整理了一份对应表格,其中整理了最多六个元素的重排的编码。$(br2)如果要找延伸阅读资料,可以搜索“Lehmer Code”。", + "hexcasting.page.stackmanip.swizzle.link": "编码列表", + "hexcasting.page.stackmanip.tuck": "将栈底元素复制至栈顶往下第二元素下方。[0, 1] 变为 [1, 0, 1]。", + "hexcasting.page.staff.1": "$(l:items/staff)$(item)法杖/$是我尝试施放各类$(hex)咒术/$的起点。手持时按下$(thing)$(k:use)/$,就算开始了施放$(hex)咒术/$的过程。然后单击拖动绘制图案就可以了。$(br2)它还是和单纯把一小块$(media)媒质/$放在木棍的一端有所不同,但不管怎么说,能用就行。", + "hexcasting.page.staff.crafting.desc": "$(italic)施法不规范,自己两行泪。/$", + "hexcasting.page.staff.crafting.header": "法杖", + "hexcasting.page.start_to_see.1": "文献没有说错。自然出手了。", + "hexcasting.page.start_to_see.2": "那……那是……$(p)……那是我所经历过的$(italic)最糟糕/$的事了。我向自然呈现了我的规划,得来的是一个坚定的笑容和一种被撕裂的感受——我的一部分破碎了,就好像雨中四散的紫水晶粉。$(p)只是$(italic)存活/$下来都是极大的幸事,更不用说有精力写下这些了。这件事该到此为止,我应该在施放$(hex)咒术/$时多算几遍,绝不能再犯这样的错误。", + "hexcasting.page.start_to_see.3": "……但是。$(br2)但是在那最为神圣的一刻,我破碎的那一部分……它$(italic)看见了/$……$(l:greatwork/the_work)$(thing)一些东西/$。一个地方——也许是一件作品?(这种定义对……那种事物来说不值一提)$(p)和一张……一个薄膜-屏障-薄层-界限,将我和单纯的思维-能流-光-能量的领域隔绝开来。我记得——我看见-想到-回忆起-感受到——那个屏障的边缘变得模糊了,略微模糊了。$(p)我想要$(italic)穿过它/$。", + "hexcasting.page.start_to_see.4": "但我不应该。我也$(italic)清楚/$我不应该。那很危险。非常非常危险。跨越屏障需要的力量……我必须仅凭$(italic)一次施法/$就让我自己濒临死亡。$(br2)但我,就是,$(italic)不甘心/$。$(p)$(italic)这/$就是我魔法的集大成之作。这就是我所追求的$(#54398a)启迪/$。$(br2)我还想知道更多。我要再看到那场景。我$(italic)必将/$再见。$(p)我脆弱的意识和永恒的荣耀相比,又算得上什么呢?", + "hexcasting.page.teleport/great.1": "比$(l:patterns/spells/basic#hexcasting:blink)$(action)闪现/$更为强大,此法术能让我传送到世界上几乎任何一处!当然它也有极限,但可比我熟悉的施法距离要远得$(italic)多/$。", + "hexcasting.page.teleport/great.2": "实体会被移动至所给向量处。奇怪的是,这个向量似乎代表了偏差值,而非世界中的绝对位置;比如,使用$(l:patterns/consts#hexcasting:const/vec/x)$(action)向量之精思,+X 型/$时,目标实体会被传送到原有位置恰好 1 格以东处。它似乎一直会消耗大约 10 个$(l:items/amethyst)$(item)充能紫水晶/$,不论传送距离。$(br2)当然这种传送也不是尽善尽美的,在传送如玩家般复杂的实体时,实体身上的物品就不会$(italic)非常/$安稳了,它们可能会散落在目的地周围。还有,传送的实体将会被强制从其所乘坐的无生命载具中卸下……但我曾读到过动物可以一起被传送,大概吧。", + "hexcasting.page.the_work.1": "我所见甚多。不可言之物。不可数之物。仅三词就能将我的意识从里翻到外然后把我的大脑抹在头颅黑暗的内壁然后腐朽为混沌和虚无。", + "hexcasting.page.the_work.2": "我已见断续的图案与酸蚀的设计图刻入我的眼睑。它们阴燃,它们舞蹈,它们嘲弄,它们$(italic)隐隐作痛/$。我突然有种强烈的$(italic)冲动/$,去绘制它们,创造它们,写就它们。将它们从我脆弱意识的黏糊桎梏中释放,让它们在世上再度闪耀荣光。$(p)众将见。$(p)众必将见。", + "hexcasting.page.thought_knot.1": "健忘者常在手指上缠绕丝线以助记忆。我也坚信我的咒法技艺能活用这种做法。以特定方式绑出的绳结应该能稳定存储一个 iota,且能独立于栈存在。$(br2)我将其称为“$(item)结念绳/$”。", + "hexcasting.page.thought_knot.2": "在初合成时,它的存储空间内没有 iota。在另一只手持有$(item)结念绳/$时,绘制$(l:patterns/readwrite#hexcasting:write)$(action)书吏之策略/$就会将栈顶 iota 移除并存入$(item)结念绳/$。绘制$(l:patterns/readwrite#hexcasting:read)$(action)书吏之精思/$则会将$(item)结念绳/$中 iota 复制出来并压入栈顶。$(br2)一旦将 iota 写入$(item)结念绳/$,绳结本身便不再能解开。其中 iota 可被随意读取,但不可被清除或覆写。不过还好,这些绳结十分易得。", + "hexcasting.page.thought_knot.3": "另外,如果我在$(item)结念绳/$中写入一个实体,然后在该实体死亡或消失后尝试复制,则$(l:patterns/readwrite#hexcasting:read)$(action)书吏之精思/$会压入一个 $(l:casting/influences)$(thing)Null/$。", + "hexcasting.page.thought_knot.crafting.desc": "$(italic)别人要是看到你带着块牌子,上面写着“本人风度翩翩,品貌非凡”,你又会作何感想?/$", + "hexcasting.page.vectors.1": "如果要深入研究,就要对向量相关的知识足够熟悉。我整理了些讲解向量知识的资料,以备不理解时之需。$(br2)首先,来一段富有启发性的视频。(译注:此为 B 站官方账号$(l:https://www.bilibili.com/video/BV1ys411472E)网址/$)", + "hexcasting.page.vectors.1.link_text": "3blue1brown", + "hexcasting.page.vectors.2": "此外,似乎操控 $(thing)Psi 能量/$的魔法师们(又称“术式师”)有一些对学徒理解向量大有裨益的课程,虽然他们命名能力不强。我会在后页冒昧地提供前往他们课程的链接。$(br2)他们使用了另一套术语:$(li)“功能块”对应“操作”。$(li)“启动式”对应“法术”。$(li)“运算符”则对应不是法术的操作。", + "hexcasting.page.vectors.3": "链接在此。", + "hexcasting.page.vectors.3.link_text": "Psi Codex", + "hexcasting.page.weather_manip.dispel_rain": "召雨的反面。此法术会将我所处世界的雨水驱离。消耗大约 1 个$(l:items/amethyst)$(item)紫水晶碎片/$。若未在下雨就无效。", + "hexcasting.page.weather_manip.lightning": "我能命令苍穹!此法术会在我所想之处召唤一道落雷。消耗大约 3 个$(l:items/amethyst)$(item)紫水晶碎片/$。", + "hexcasting.page.weather_manip.summon_rain": "我能控制云彩!此法术会在我所处世界各处召来雨水。消耗大约 1 个$(l:items/amethyst)$(item)充能紫水晶/$。若已在下雨就无效。", + "hexcasting.page.zeniths.1": "此类法术会给予某一实体一个正面药水效果,与$(l:patterns/spells/nadirs)$(action)天底法术/$类似。然而,它们的$(media)媒质/$消耗会按效果强度的$(italic)立方/$计算。", + "hexcasting.page.zeniths.potion/absorption": "给予$(thing)伤害吸收/$。每 1 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.zeniths.potion/haste": "给予$(thing)急迫/$。每 3 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.zeniths.potion/night_vision": "给予$(thing)夜视/$。每 5 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.zeniths.potion/regeneration": "给予$(thing)生命恢复/$。每 1 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.page.zeniths.potion/strength": "给予$(thing)力量/$。每 3 秒持续时间的基础消耗为 1 个$(l:items/amethyst)$(item)紫水晶粉/$。", + "hexcasting.pattern.unknown": "未知图案资源 %s", + "hexcasting.rawhook.hexcasting:close_paren": "反思", + "hexcasting.rawhook.hexcasting:escape": "考察", + "hexcasting.rawhook.hexcasting:open_paren": "内省", + "hexcasting.rawhook.hexcasting:undo": "消解", + "hexcasting.special.hexcasting:mask": "簿记员之策略:%s", + "hexcasting.special.hexcasting:number": "数字之精思:%s", + "hexcasting.spelldata.akashic.nopos": "阿卡夏记录无法获取到此处的iota(这是个漏洞)", + "hexcasting.spelldata.anything": "任意", + "hexcasting.spelldata.entity.whoknows": "未知实体", + "hexcasting.spelldata.onitem": "存有:%s", + "hexcasting.spelldata.unknown": "损坏的iota", + "hexcasting.subtitles.abacus": "算盘:咔哒", + "hexcasting.subtitles.abacus.shake": "算盘:摇晃", + "hexcasting.subtitles.ambiance": "咒术网格:嗡鸣", + "hexcasting.subtitles.casting.cast.fail": "事故:轰鸣", + "hexcasting.subtitles.casting.cast.hermes": "赫尔墨斯之策略:鸣响", + "hexcasting.subtitles.casting.cast.normal": "操作:嗡鸣", + "hexcasting.subtitles.casting.cast.spell": "法术:施放", + "hexcasting.subtitles.casting.cast.thoth": "托特之策略:鸣响", + "hexcasting.subtitles.casting.pattern.add_segment": "绘制线段", + "hexcasting.subtitles.casting.pattern.start": "开始绘制", + "hexcasting.subtitles.flight.ambience": "玩家:飞翔", + "hexcasting.subtitles.flight.finish": "飞翔结束", + "hexcasting.subtitles.impetus.fletcher.tick": "制箭师促动石:咔哒", + "hexcasting.subtitles.impetus.redstone.clear": "牧师促动石:清空", + "hexcasting.subtitles.impetus.redstone.register": "牧师促动石:叮~", + "hexcasting.subtitles.lore_fragment.read": "故事残卷:被阅读", + "hexcasting.subtitles.scroll.dust": "卷轴:被施粉", + "hexcasting.subtitles.scroll.scribble": "卷轴:被涂写", + "hexcasting.subtitles.spellcircle.add_pattern": "法术环:噼啪作响", + "hexcasting.subtitles.spellcircle.fail": "法术环:失效", + "hexcasting.subtitles.staff.reset": "重置咒术", + "hexcasting.tooltip.abacus": "%d", + "hexcasting.tooltip.abacus.reset": "重置为0", + "hexcasting.tooltip.abacus.reset.nice": "nice", + "hexcasting.tooltip.boolean_false": "False", + "hexcasting.tooltip.boolean_true": "True", + "hexcasting.tooltip.brainsweep.level": "%s级", + "hexcasting.tooltip.brainsweep.min_level": "%s级或以上", + "hexcasting.tooltip.brainsweep.product": "无意识的躯体", + "hexcasting.tooltip.circle.many_exits": "%s处的媒质流的可选去路过多", + "hexcasting.tooltip.circle.no_closure": "%s处的媒质流无法返回促动石", + "hexcasting.tooltip.circle.no_exit": "%s处的媒质流无法找到出口", + "hexcasting.tooltip.jump_iota": "[Jump]", + "hexcasting.tooltip.lens.akashic.bookshelf.location": "记录于%s", + "hexcasting.tooltip.lens.akashic.record.count": "存有%s个iota", + "hexcasting.tooltip.lens.akashic.record.count.single": "存有%s个iota", + "hexcasting.tooltip.lens.bee": "%s只蜜蜂", + "hexcasting.tooltip.lens.bee.single": "%s只蜜蜂", + "hexcasting.tooltip.lens.impetus.redstone.bound": "与%s绑定", + "hexcasting.tooltip.lens.impetus.redstone.bound.none": "未绑定", + "hexcasting.tooltip.lens.pattern.invalid": "无效图案", + "hexcasting.tooltip.list_contents": "[%s]", + "hexcasting.tooltip.media": "%d 紫水晶粉", + "hexcasting.tooltip.media_amount": "含有:%s(%s)", + "hexcasting.tooltip.media_amount.advanced": "含有:%s/%s(%s)", + "hexcasting.tooltip.null_iota": "Null", + "hexcasting.tooltip.pattern_iota": "HexPattern(%s)", + "hexcasting.tooltip.scroll.needs_purchase": "购买以显示图案", + "hexcasting.tooltip.scroll.pattern_not_loaded": "放入物品栏以加载图案", + "hexcasting.tooltip.spellbook.empty": "空白", + "hexcasting.tooltip.spellbook.empty.sealed": "空白(%s)", + "hexcasting.tooltip.spellbook.page": "所选书页 %d/%d", + "hexcasting.tooltip.spellbook.page_with_name": "所选书页 %d/%d(“%s”)", + "hexcasting.tooltip.spellbook.page_with_name.sealed": "所选书页 %d/%d(“%s”)(%s)", + "hexcasting.tooltip.spellbook.page.sealed": "所选书页 %d/%d(%s)", + "hexcasting.tooltip.spellbook.sealed": "已密封", + "hexcasting.tooltip.stored_hex": "咒术:", + "item.hexcasting.abacus": "算盘", + "item.hexcasting.amethyst_dust": "紫水晶粉", + "item.hexcasting.ancient_colorizer": "远古染色剂", + "item.hexcasting.ancient_cypher": "远古杂件", + "item.hexcasting.ancient_cypher.preset": "远古杂件:%s", + "item.hexcasting.artifact": "造物", + "item.hexcasting.battery": "媒质之瓶", + "item.hexcasting.book": "咒术笔记", + "item.hexcasting.charged_amethyst": "充能紫水晶", + "item.hexcasting.creative_unlocker": "媒质立方", + "item.hexcasting.creative_unlocker.for_emphasis": "无限媒质", + "item.hexcasting.creative_unlocker.mod_name": "咒法学", + "item.hexcasting.creative_unlocker.tooltip": "食用以解锁所有有关%s的知识。", + "item.hexcasting.cypher": "杂件", + "item.hexcasting.default_colorizer": "空无染色剂", + "item.hexcasting.dye_colorizer_black": "黑色染色剂", + "item.hexcasting.dye_colorizer_blue": "蓝色染色剂", + "item.hexcasting.dye_colorizer_brown": "棕色染色剂", + "item.hexcasting.dye_colorizer_cyan": "青色染色剂", + "item.hexcasting.dye_colorizer_gray": "灰色染色剂", + "item.hexcasting.dye_colorizer_green": "绿色染色剂", + "item.hexcasting.dye_colorizer_light_blue": "淡蓝色染色剂", + "item.hexcasting.dye_colorizer_light_gray": "淡灰色染色剂", + "item.hexcasting.dye_colorizer_lime": "黄绿色染色剂", + "item.hexcasting.dye_colorizer_magenta": "品红色染色剂", + "item.hexcasting.dye_colorizer_orange": "橙色染色剂", + "item.hexcasting.dye_colorizer_pink": "粉红色染色剂", + "item.hexcasting.dye_colorizer_purple": "紫色染色剂", + "item.hexcasting.dye_colorizer_red": "红色染色剂", + "item.hexcasting.dye_colorizer_white": "白色染色剂", + "item.hexcasting.dye_colorizer_yellow": "黄色染色剂", + "item.hexcasting.focus": "核心", + "item.hexcasting.focus.sealed": "密封核心", + "item.hexcasting.jeweler_hammer": "珠宝匠锤", + "item.hexcasting.lens": "探知透镜", + "item.hexcasting.lore_fragment": "故事残卷", + "item.hexcasting.lore_fragment.all": "似乎我已找齐了此世界上的所有故事。", + "item.hexcasting.pride_colorizer_agender": "无性别染色剂", + "item.hexcasting.pride_colorizer_aroace": "无浪漫倾向无性恋染色剂", + "item.hexcasting.pride_colorizer_aromantic": "无浪漫倾向染色剂", + "item.hexcasting.pride_colorizer_asexual": "无性恋染色剂", + "item.hexcasting.pride_colorizer_bisexual": "双性恋染色剂", + "item.hexcasting.pride_colorizer_demiboy": "部分男性染色剂", + "item.hexcasting.pride_colorizer_demigirl": "部分女性染色剂", + "item.hexcasting.pride_colorizer_gay": "男同性恋染色剂", + "item.hexcasting.pride_colorizer_genderfluid": "性别流体染色剂", + "item.hexcasting.pride_colorizer_genderqueer": "性别酷儿染色剂", + "item.hexcasting.pride_colorizer_intersex": "双性人染色剂", + "item.hexcasting.pride_colorizer_lesbian": "女同性恋染色剂", + "item.hexcasting.pride_colorizer_nonbinary": "非二元性别染色剂", + "item.hexcasting.pride_colorizer_pansexual": "泛性恋染色剂", + "item.hexcasting.pride_colorizer_plural": "多重人格染色剂", + "item.hexcasting.pride_colorizer_transgender": "跨性别染色剂", + "item.hexcasting.quenched_allay_shard": "淬灵晶碎片", + "item.hexcasting.scroll": "大型卷轴", + "item.hexcasting.scroll_medium": "中型卷轴", + "item.hexcasting.scroll_medium.empty": "空白中型卷轴", + "item.hexcasting.scroll_medium.of": "是如何拿到此%s卷轴的", + "item.hexcasting.scroll_small": "小型卷轴", + "item.hexcasting.scroll_small.empty": "空白小型卷轴", + "item.hexcasting.scroll_small.of": "是如何拿到此%s卷轴的", + "item.hexcasting.scroll.empty": "空白大型卷轴", + "item.hexcasting.scroll.of": "%s之远古卷轴", + "item.hexcasting.spellbook": "法术书", + "item.hexcasting.staff.acacia": "金合欢木法杖", + "item.hexcasting.staff.bamboo": "竹法杖", + "item.hexcasting.staff.birch": "白桦木法杖", + "item.hexcasting.staff.cherry": "樱花木法杖", + "item.hexcasting.staff.crimson": "绯红木法杖", + "item.hexcasting.staff.dark_oak": "深色橡木法杖", + "item.hexcasting.staff.edified": "启迪木法杖", + "item.hexcasting.staff.jungle": "丛林木法杖", + "item.hexcasting.staff.mangrove": "红树木法杖", + "item.hexcasting.staff.mindsplice": "制念法杖", + "item.hexcasting.staff.oak": "橡木法杖", + "item.hexcasting.staff.quenched": "淬灵晶法杖", + "item.hexcasting.staff.spruce": "云杉木法杖", + "item.hexcasting.staff.warped": "诡异木法杖", + "item.hexcasting.sub_sandwich": "潜艇三明治", + "item.hexcasting.thought_knot": "结念绳", + "item.hexcasting.trinket": "缀品", + "item.hexcasting.uuid_colorizer": "灵魂闪光染色剂", + "item.minecraft.lingering_potion.effect.enlarge_grid": "滞留型明晰药水", + "item.minecraft.lingering_potion.effect.enlarge_grid_long": "滞留型明晰药水", + "item.minecraft.lingering_potion.effect.enlarge_grid_strong": "滞留型明晰药水", + "item.minecraft.lingering_potion.effect.shrink_grid": "滞留型蒙翳药水", + "item.minecraft.lingering_potion.effect.shrink_grid_long": "滞留型蒙翳药水", + "item.minecraft.lingering_potion.effect.shrink_grid_strong": "滞留型蒙翳药水", + "item.minecraft.potion.effect.enlarge_grid": "明晰药水", + "item.minecraft.potion.effect.enlarge_grid_long": "明晰药水", + "item.minecraft.potion.effect.enlarge_grid_strong": "明晰药水", + "item.minecraft.potion.effect.shrink_grid": "蒙翳药水", + "item.minecraft.potion.effect.shrink_grid_long": "蒙翳药水", + "item.minecraft.potion.effect.shrink_grid_strong": "蒙翳药水", + "item.minecraft.splash_potion.effect.enlarge_grid": "喷溅型明晰药水", + "item.minecraft.splash_potion.effect.enlarge_grid_long": "喷溅型明晰药水", + "item.minecraft.splash_potion.effect.enlarge_grid_strong": "喷溅型明晰药水", + "item.minecraft.splash_potion.effect.shrink_grid": "喷溅型蒙翳药水", + "item.minecraft.splash_potion.effect.shrink_grid_long": "喷溅型蒙翳药水", + "item.minecraft.splash_potion.effect.shrink_grid_strong": "喷溅型蒙翳药水", + "item.minecraft.tipped_arrow.effect.enlarge_grid": "明晰之箭", + "item.minecraft.tipped_arrow.effect.enlarge_grid_long": "明晰之箭", + "item.minecraft.tipped_arrow.effect.enlarge_grid_strong": "明晰之箭", + "item.minecraft.tipped_arrow.effect.shrink_grid": "蒙翳之箭", + "item.minecraft.tipped_arrow.effect.shrink_grid_long": "蒙翳之箭", + "item.minecraft.tipped_arrow.effect.shrink_grid_strong": "蒙翳之箭", + "itemGroup.hexcasting.hexcasting": "咒法学", + "itemGroup.hexcasting.scrolls": "咒法学丨卷轴", + "matcher.hexcasting.pattern.description": "咒法学图案可视化", + "matcher.hexcasting.pattern.example": "", + "matcher.hexcasting.pattern.title": "咒术图案", + "matcher.hexcasting.pattern.title.styled": "咒术图案", + "stat.hexcasting.media_overcast": "过度施法消耗媒质量(以紫水晶粉计)", + "stat.hexcasting.media_used": "消耗媒质量(以紫水晶粉计)", + "stat.hexcasting.patterns_drawn": "绘制图案次数", + "stat.hexcasting.spells_cast": "施放法术次数", + "tag.hexcasting.edified_logs": "启迪木", + "tag.hexcasting.edified_planks": "启迪木板", + "tag.hexcasting.phial_base": "空试剂瓶", + "tag.hexcasting.staves": "咒术法杖", + "tag.item.hexcasting.brainswept_circle_components": "剥离意识所得法术环组件", + "tag.item.hexcasting.directrices": "导向石", + "tag.item.hexcasting.grants_root_advancement": "给予根进度", + "tag.item.hexcasting.impeti": "促动石", + "tag.item.hexcasting.seal_materials": "密封材料", + "text.autoconfig.hexcasting.category.client": "客户端", + "text.autoconfig.hexcasting.category.common": "通用", + "text.autoconfig.hexcasting.category.server": "服务端", + "text.autoconfig.hexcasting.option.client.alwaysShowListCommas": "在所有情况下都显示列表逗号", + "text.autoconfig.hexcasting.option.client.alwaysShowListCommas.@Tooltip": "是否用逗号分隔列表中各种类型的iota(默认情况下,图案iota不会使用逗号分隔)", + "text.autoconfig.hexcasting.option.client.clickingTogglesDrawing": "单击切换绘制与否", + "text.autoconfig.hexcasting.option.client.clickingTogglesDrawing.@Tooltip": "单击即可开始或结束绘制,无需按住拖动", + "text.autoconfig.hexcasting.option.client.ctrlTogglesOffStrokeOrder": "Ctrl关闭笔顺显示", + "text.autoconfig.hexcasting.option.client.ctrlTogglesOffStrokeOrder.@Tooltip": "按下Ctrl键时*关闭*图案渐变显示,而非按下时打开", + "text.autoconfig.hexcasting.option.client.gridSnapThreshold": "咒术网格吸附阈值", + "text.autoconfig.hexcasting.option.client.gridSnapThreshold.@Tooltip": "使用法杖时,吸附至另一点所需划过的距离,0.5意味着需划过50%(取值0.5~1)", + "text.autoconfig.hexcasting.option.client.invertAbacusScrollDirection": "反转算盘滚轮方向", + "text.autoconfig.hexcasting.option.client.invertAbacusScrollDirection.@Tooltip": "向上滚动滚轮(而非向下)增加算盘计数,反之亦然", + "text.autoconfig.hexcasting.option.client.invertSpellbookScrollDirection": "反转法术书滚轮方向", + "text.autoconfig.hexcasting.option.client.invertSpellbookScrollDirection.@Tooltip": "向上滚动滚轮(而非向下)增加法术书当前页页码,反之亦然", + "text.autoconfig.hexcasting.option.common.artifactCooldown": "造物使用冷却", + "text.autoconfig.hexcasting.option.common.artifactCooldown.@Tooltip": "造物使用冷却刻(tick)数", + "text.autoconfig.hexcasting.option.common.chargedCrystalMediaAmount": "充能紫水晶媒质含量", + "text.autoconfig.hexcasting.option.common.chargedCrystalMediaAmount.@Tooltip": "单个充能紫水晶所含媒质量", + "text.autoconfig.hexcasting.option.common.cypherCooldown": "杂件使用冷却", + "text.autoconfig.hexcasting.option.common.cypherCooldown.@Tooltip": "杂件使用冷却刻(tick)数", + "text.autoconfig.hexcasting.option.common.dustMediaAmount": "紫水晶粉媒质含量", + "text.autoconfig.hexcasting.option.common.dustMediaAmount.@Tooltip": "单个紫水晶粉所含媒质量", + "text.autoconfig.hexcasting.option.common.mediaToHealthRate": "媒质与生命值交换比率", + "text.autoconfig.hexcasting.option.common.mediaToHealthRate.@Tooltip": "1点生命值可在施法时换算的媒质量", + "text.autoconfig.hexcasting.option.common.shardMediaAmount": "紫水晶碎片媒质含量", + "text.autoconfig.hexcasting.option.common.shardMediaAmount.@Tooltip": "单个紫水晶碎片所含媒质量", + "text.autoconfig.hexcasting.option.common.trinketCooldown": "缀品使用冷却", + "text.autoconfig.hexcasting.option.common.trinketCooldown.@Tooltip": "缀品使用冷却刻(tick)数", + "text.autoconfig.hexcasting.option.server.actionDenyList": "禁用操作列表", + "text.autoconfig.hexcasting.option.server.actionDenyList.@Tooltip": "被禁用操作的资源位置;试图执行此类操作会导致事故。例如,“hexcasting:get_caster”会禁用意识之精思。", + "text.autoconfig.hexcasting.option.server.amethystShardModification": "紫水晶碎片掉落率变化量", + "text.autoconfig.hexcasting.option.server.amethystShardModification.@Tooltip": "采掘紫水晶簇时紫水晶碎片掉落数量相较原版的改变量", + "text.autoconfig.hexcasting.option.server.circleActionDenyList": "法术环禁用操作列表", + "text.autoconfig.hexcasting.option.server.circleActionDenyList.@Tooltip": "法术环中被禁用操作的资源位置;试图执行此类操作会导致事故", + "text.autoconfig.hexcasting.option.server.cypherChance": "远古杂件出现概率", + "text.autoconfig.hexcasting.option.server.cypherChance.@Tooltip": "上述战利品表中远古杂件出现的概率。", + "text.autoconfig.hexcasting.option.server.cypherInjectionsRaw": "远古杂件战利品位置", + "text.autoconfig.hexcasting.option.server.cypherInjectionsRaw.@Tooltip": "应加入远古杂件的战利品表列表。", + "text.autoconfig.hexcasting.option.server.doesTrueNameHaveAmbit": "真名是否受影响范围限制", + "text.autoconfig.hexcasting.option.server.doesTrueNameHaveAmbit.@Tooltip": "真名(即对玩家的实体引用)是否可指向在正常影响范围之外的玩家", + "text.autoconfig.hexcasting.option.server.greaterTeleportSplatsItems": "卓越传送散落物品", + "text.autoconfig.hexcasting.option.server.greaterTeleportSplatsItems.@Tooltip": "使用卓越传送时,玩家物品栏中的物品是否会飞出", + "text.autoconfig.hexcasting.option.server.loreChance": "故事残卷出现概率", + "text.autoconfig.hexcasting.option.server.loreChance.@Tooltip": "上述战利品表中故事残卷出现的概率。", + "text.autoconfig.hexcasting.option.server.loreInjectionsRaw": "故事残卷战利品位置", + "text.autoconfig.hexcasting.option.server.loreInjectionsRaw.@Tooltip": "应加入故事残卷的战利品表列表。", + "text.autoconfig.hexcasting.option.server.maxOpCount": "最大操作数", + "text.autoconfig.hexcasting.option.server.maxOpCount.@Tooltip": "一刻(tick)内能执行的最大操作数,用于避免服务器卡顿", + "text.autoconfig.hexcasting.option.server.maxSpellCircleLength": "法术环最大长度", + "text.autoconfig.hexcasting.option.server.maxSpellCircleLength.@Tooltip": "法术环所允许含有石板的最大个数", + "text.autoconfig.hexcasting.option.server.opBreakHarvestLevel": "破坏方块挖掘等级", + "text.autoconfig.hexcasting.option.server.opBreakHarvestLevel.@Tooltip": "破坏方块法术的挖掘等级\n0 = 木,1 = 石,2 = 铁,3 = 钻石,4 = 下界合金", + "text.autoconfig.hexcasting.option.server.scrollInjectionsRaw": "卷轴战利品权重", + "text.autoconfig.hexcasting.option.server.scrollInjectionsRaw.@Tooltip": "将战利品表名与卷轴生成数量期望一一对应并罗列。在下列所有战利品表中生成卷轴的概率约50%,生成时会放入1到对应期望个数的卷轴。", + "text.autoconfig.hexcasting.option.server.tpDimDenylist": "传送维度黑名单", + "text.autoconfig.hexcasting.option.server.tpDimDenylist.@Tooltip": "禁止传送的维度的资源位置", + "text.autoconfig.hexcasting.option.server.traderScrollChance": "流浪商人交易卷轴概率", + "text.autoconfig.hexcasting.option.server.traderScrollChance.@Tooltip": "流浪商人出售远古卷轴的概率", + "text.autoconfig.hexcasting.option.server.villagersOffendedByMindMurder": "村民会被意识剥除冒犯", + "text.autoconfig.hexcasting.option.server.villagersOffendedByMindMurder.@Tooltip": "村民是否会在其他村民被剥离意识时感到气愤", + "text.autoconfig.hexcasting.title": "咒法学(Hexcasting)配置" +}