diff --git a/build.properties b/build.properties index f844cf01..f16ca60b 100644 --- a/build.properties +++ b/build.properties @@ -1,13 +1,13 @@ # -#Mon Apr 20 14:42:19 EDT 2015 +#Sat May 02 16:08:45 EDT 2015 mod_name=BloodMagic forge_version=10.13.3.1374-1.7.10 ccc_version=1.0.4.29 nei_version=1.0.3.64 //=Dependency Information +guideapi_version=1.0-14 package_group=com.wayoftime.bloodmagic mod_version=1.3.2aBeta minetweaker_version=Dev-1.7.10-3.0.9B -guideapi_version=1.0-13 mc_version=1.7.10 -build_number=3 +build_number=5 diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/sacrifice/IIncense.java b/src/main/java/WayofTime/alchemicalWizardry/api/sacrifice/IIncense.java index 5e6f62ca..34c8aac5 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/api/sacrifice/IIncense.java +++ b/src/main/java/WayofTime/alchemicalWizardry/api/sacrifice/IIncense.java @@ -17,4 +17,5 @@ public interface IIncense public float getRedColour(ItemStack stack); public float getGreenColour(ItemStack stack); public float getBlueColour(ItemStack stack); + float getTickRate(ItemStack stack); } diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/sacrifice/PlayerSacrificeHandler.java b/src/main/java/WayofTime/alchemicalWizardry/api/sacrifice/PlayerSacrificeHandler.java index 5e84e14d..1bff133d 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/api/sacrifice/PlayerSacrificeHandler.java +++ b/src/main/java/WayofTime/alchemicalWizardry/api/sacrifice/PlayerSacrificeHandler.java @@ -12,19 +12,19 @@ public class PlayerSacrificeHandler { public static float scalingOfSacrifice = 0.0025f; public static int soulFrayDuration = 400; - public static int getPlayerIncense(EntityPlayer player) + public static float getPlayerIncense(EntityPlayer player) { return APISpellHelper.getCurrentIncense(player); } - public static void setPlayerIncense(EntityPlayer player, int amount) + public static void setPlayerIncense(EntityPlayer player, float amount) { APISpellHelper.setCurrentIncense(player, amount); } - public static boolean incrementIncense(EntityPlayer player, int min, int max) + public static boolean incrementIncense(EntityPlayer player, float min, float max) { - int amount = getPlayerIncense(player); + float amount = getPlayerIncense(player); if(amount < min || amount >= max) { return false; @@ -43,7 +43,7 @@ public class PlayerSacrificeHandler return false; } - int amount = getPlayerIncense(player); + float amount = getPlayerIncense(player); if(amount >= 0) { @@ -68,9 +68,9 @@ public class PlayerSacrificeHandler return false; } - public static float getModifier(int incense) + public static float getModifier(float amount) { - return 1 + incense*scalingOfSacrifice; + return 1 + amount*scalingOfSacrifice; } public static boolean findAndFillAltar(World world, EntityPlayer player, int amount) diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/soulNetwork/SoulNetworkHandler.java b/src/main/java/WayofTime/alchemicalWizardry/api/soulNetwork/SoulNetworkHandler.java index a2060b4f..6bab0503 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/api/soulNetwork/SoulNetworkHandler.java +++ b/src/main/java/WayofTime/alchemicalWizardry/api/soulNetwork/SoulNetworkHandler.java @@ -157,7 +157,7 @@ public class SoulNetworkHandler * * @param ist Owned itemStack * @param player Player using the item - * @param damageToBeDone + * @param drain * @return True if the action should be executed and false if it should not. Always returns false if client-sided. */ public static boolean syphonAndDamageFromNetwork(ItemStack ist, EntityPlayer player, int drain) diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/spell/APISpellHelper.java b/src/main/java/WayofTime/alchemicalWizardry/api/spell/APISpellHelper.java index 78a94eea..5c5935e5 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/api/spell/APISpellHelper.java +++ b/src/main/java/WayofTime/alchemicalWizardry/api/spell/APISpellHelper.java @@ -42,21 +42,21 @@ public class APISpellHelper return beaconData; } - public static int getCurrentIncense(EntityPlayer player) + public static float getCurrentIncense(EntityPlayer player) { NBTTagCompound data = player.getEntityData(); if(data.hasKey("BM:CurrentIncense")) { - return data.getInteger("BM:CurrentIncense"); + return data.getFloat("BM:CurrentIncense"); } return 0; } - public static void setCurrentIncense(EntityPlayer player, int amount) + public static void setCurrentIncense(EntityPlayer player, float amount) { NBTTagCompound data = player.getEntityData(); - data.setInteger("BM:CurrentIncense", amount); + data.setFloat("BM:CurrentIncense", amount); } public static int getPlayerLPTag(EntityPlayer player) diff --git a/src/main/java/WayofTime/alchemicalWizardry/client/renderer/ColourThreshold.java b/src/main/java/WayofTime/alchemicalWizardry/client/renderer/ColourThreshold.java index 833f6b3b..1719b4f6 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/client/renderer/ColourThreshold.java +++ b/src/main/java/WayofTime/alchemicalWizardry/client/renderer/ColourThreshold.java @@ -36,7 +36,7 @@ public class ColourThreshold implements Comparable /** * Returns the colorCode attached to the first threshold in the list that is - * >= value. Expects that the list has been sorted by threshold ascending. + * greater than or equal to the value. Expects that the list has been sorted by threshold ascending. */ public static String getColorCode(List colorList, int value) { diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/book/BloodMagicGuide.java b/src/main/java/WayofTime/alchemicalWizardry/common/book/BloodMagicGuide.java index 4d2d52f1..623dfa5f 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/book/BloodMagicGuide.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/book/BloodMagicGuide.java @@ -7,6 +7,7 @@ import java.util.List; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.ModItems; import WayofTime.alchemicalWizardry.api.guide.PageAltarRecipe; import WayofTime.alchemicalWizardry.api.guide.PageOrbRecipe; @@ -165,6 +166,126 @@ public class BloodMagicGuide magicianOrbPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.magicianOrb"))); entries.add(new EntryUniText(magicianOrbPages, "guide.BloodMagic.entryName.architect.magicianOrb")); + ArrayList newRunePages = new ArrayList(); + newRunePages.add(new PageOrbRecipe(RecipeHolder.capacityRuneRecipe)); + newRunePages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.newRune.1"))); + newRunePages.add(new PageOrbRecipe(RecipeHolder.dislocationRuneRecipe)); + newRunePages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.newRune.2"))); + entries.add(new EntryUniText(newRunePages, "guide.BloodMagic.entryName.architect.newRune")); + + ArrayList magnetismPages = new ArrayList(); + magnetismPages.add(new PageOrbRecipe(RecipeHolder.magnetismSigilRecipe)); + magnetismPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.magnetism"))); + entries.add(new EntryUniText(magnetismPages, "guide.BloodMagic.entryName.architect.magnetism")); + + ArrayList phantomBridgePages = new ArrayList(); + phantomBridgePages.add(new PageOrbRecipe(RecipeHolder.phantomBridgeRecipe)); + phantomBridgePages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.phantomBridge"))); + entries.add(new EntryUniText(phantomBridgePages, "guide.BloodMagic.entryName.architect.phantomBridge")); + + ArrayList holdingPages = new ArrayList(); + holdingPages.add(new PageOrbRecipe(RecipeHolder.holdingSigilRecipe)); + holdingPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.holding"))); + entries.add(new EntryUniText(holdingPages, "guide.BloodMagic.entryName.architect.holding")); + + ArrayList elementalAffinityPages = new ArrayList(); + elementalAffinityPages.add(new PageOrbRecipe(RecipeHolder.affinitySigilRecipe)); + elementalAffinityPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.elementalAffinity"))); + entries.add(new EntryUniText(elementalAffinityPages, "guide.BloodMagic.entryName.architect.elementalAffinity")); + + ArrayList ritualStonesPages = new ArrayList(); + ritualStonesPages.add(new PageOrbRecipe(RecipeHolder.ritualStoneRecipe)); + ritualStonesPages.add(new PageOrbRecipe(RecipeHolder.masterStoneRecipe)); + ritualStonesPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.ritualStones"))); + entries.add(new EntryUniText(ritualStonesPages, "guide.BloodMagic.entryName.architect.ritualStones")); + + ArrayList bloodLampPages = new ArrayList(); + bloodLampPages.add(new PageOrbRecipe(RecipeHolder.bloodLampRecipe)); + bloodLampPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.bloodLamp"))); + entries.add(new EntryUniText(bloodLampPages, "guide.BloodMagic.entryName.architect.bloodLamp")); + + ArrayList boundArmourPages = new ArrayList(); + boundArmourPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.boundArmour.1"))); + boundArmourPages.add(new PageIRecipe(RecipeHolder.emptySocketRecipe)); + boundArmourPages.add(new PageAltarRecipe(RecipeHolder.filledSocketRecipe)); + boundArmourPages.add(new PageOrbRecipe(RecipeHolder.soulForgeRecipe)); + boundArmourPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.boundArmour.2"))); + entries.add(new EntryUniText(boundArmourPages, "guide.BloodMagic.entryName.architect.boundArmour")); + + if(AlchemicalWizardry.isThaumcraftLoaded) + { + ArrayList sanguineArmourPages = new ArrayList(); + sanguineArmourPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.sanguineArmour"), new ItemStack(ModItems.sanguineRobe))); + entries.add(new EntryUniText(sanguineArmourPages, "guide.BloodMagic.entryName.architect.sanguineArmour")); + } + + ArrayList soulSuppressPages = new ArrayList(); + soulSuppressPages.add(new PageIRecipe(RecipeHolder.inhibitorRecipe)); + soulSuppressPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.soulSuppress"))); + entries.add(new EntryUniText(soulSuppressPages, "guide.BloodMagic.entryName.architect.soulSuppress")); + + ArrayList ritualDivinerPages = new ArrayList(); + ritualDivinerPages.add(new PageIRecipe(RecipeHolder.ritualDiviner1Recipe)); + ritualDivinerPages.add(new PageIRecipe(RecipeHolder.ritualDiviner2Recipe)); + ritualDivinerPages.add(new PageIRecipe(RecipeHolder.ritualDiviner3Recipe)); + ritualDivinerPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.ritualDiviner"))); + entries.add(new EntryUniText(ritualDivinerPages, "guide.BloodMagic.entryName.architect.ritualDiviner")); + + ArrayList bloodShardPages = new ArrayList(); + bloodShardPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.bloodShard"), new ItemStack(ModItems.weakBloodShard))); + entries.add(new EntryUniText(bloodShardPages, "guide.BloodMagic.entryName.architect.bloodShard")); + + ArrayList tier4AltarPages = new ArrayList(); + tier4AltarPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.tier4Altar.1"))); + tier4AltarPages.add(new PageUnlocImage("", new ResourceLocation("alchemicalwizardry:textures/misc/screenshots/altars/T4.png"), true)); + tier4AltarPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.tier4Altar.2"))); + entries.add(new EntryUniText(tier4AltarPages, "guide.BloodMagic.entryName.architect.tier4Altar")); + + ArrayList masterOrbPages = new ArrayList(); + masterOrbPages.add(new PageAltarRecipe(RecipeHolder.masterBloodOrbRecipe)); + masterOrbPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.masterOrb"))); + entries.add(new EntryUniText(masterOrbPages, "guide.BloodMagic.entryName.architect.masterOrb")); + + ArrayList whirlwindPages = new ArrayList(); + whirlwindPages.add(new PageOrbRecipe(RecipeHolder.whirlwindSigilRecipe)); + whirlwindPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.whirlwind"))); + entries.add(new EntryUniText(whirlwindPages, "guide.BloodMagic.entryName.architect.whirlwind")); + + ArrayList compressionPages = new ArrayList(); + compressionPages.add(new PageOrbRecipe(RecipeHolder.compressionSigilRecipe)); + compressionPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.compression"))); + entries.add(new EntryUniText(compressionPages, "guide.BloodMagic.entryName.architect.compression")); + + ArrayList severancePages = new ArrayList(); + severancePages.add(new PageOrbRecipe(RecipeHolder.enderSeveranceSigilRecipe)); + severancePages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.severance"))); + entries.add(new EntryUniText(severancePages, "guide.BloodMagic.entryName.architect.severance")); + + ArrayList teleposerPages = new ArrayList(); + teleposerPages.add(new PageAltarRecipe(RecipeHolder.teleposerFocusRecipe1)); + teleposerPages.add(new PageIRecipe(RecipeHolder.teleposerRecipe)); + teleposerPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.teleposer"))); + entries.add(new EntryUniText(teleposerPages, "guide.BloodMagic.entryName.architect.teleposer")); + + ArrayList suppressionPages = new ArrayList(); + suppressionPages.add(new PageOrbRecipe(RecipeHolder.suppressionSigilRecipe)); + suppressionPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.suppression"))); + entries.add(new EntryUniText(suppressionPages, "guide.BloodMagic.entryName.architect.suppression")); + + ArrayList superiorCapacityPages = new ArrayList(); + superiorCapacityPages.add(new PageOrbRecipe(RecipeHolder.superiorCapacityRecipe)); + superiorCapacityPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.superiorCapacity"))); + entries.add(new EntryUniText(superiorCapacityPages, "guide.BloodMagic.entryName.architect.superiorCapacity")); + + ArrayList orbRunePages = new ArrayList(); + orbRunePages.add(new PageOrbRecipe(RecipeHolder.orbRuneRecipe)); + orbRunePages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.orbRune"))); + entries.add(new EntryUniText(orbRunePages, "guide.BloodMagic.entryName.architect.orbRune")); + + ArrayList fieldTripPages = new ArrayList(); + fieldTripPages.addAll(PageHelper.pagesForLongText(StatCollector.translateToLocal("aw.entries.architect.fieldTrip"))); + entries.add(new EntryUniText(fieldTripPages, "guide.BloodMagic.entryName.architect.fieldTrip")); + categories.add(new CategoryItemStack(entries, "guide.BloodMagic.category.architect", new ItemStack(ModItems.divinationSigil))); } } diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/guide/RecipeHolder.java b/src/main/java/WayofTime/alchemicalWizardry/common/guide/RecipeHolder.java index 181c07f6..c5172919 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/guide/RecipeHolder.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/guide/RecipeHolder.java @@ -75,7 +75,7 @@ public class RecipeHolder public static AltarRecipe daggerRecipe; public static AltarRecipe weakActivationRecipe; public static AltarRecipe filledSocketRecipe; - + public static AltarRecipe teleposerFocusRecipe1; public static void init() { @@ -141,6 +141,7 @@ public class RecipeHolder daggerRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.daggerOfSacrifice)); weakActivationRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.activationCrystal, 1, 0)); filledSocketRecipe = getAltarRecipeForItemStack(new ItemStack(ModBlocks.bloodSocket)); + teleposerFocusRecipe1 = getAltarRecipeForItemStack(new ItemStack(ModItems.telepositionFocus)); } private static IRecipe getRecipeForItemStack(ItemStack stack) diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemIncense.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemIncense.java index 399a07b4..7883a489 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemIncense.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemIncense.java @@ -94,6 +94,12 @@ public class ItemIncense extends Item implements IIncense { return 200; } + + @Override + public float getTickRate(ItemStack stack) + { + return 1.0f; + } @Override public float getRedColour(ItemStack stack) diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java index 91e7d8f7..8f9fedaf 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java @@ -401,6 +401,7 @@ public class ItemRitualDiviner extends EnergyItems implements IRitualDiviner public void rotateRituals(World world, EntityPlayer player, ItemStack stack, boolean next) { + this.voidStoredLocation(stack); int maxRitualID = Rituals.getNumberOfRituals(); String currentRitualID = this.getCurrentRitual(stack); @@ -487,6 +488,7 @@ public class ItemRitualDiviner extends EnergyItems implements IRitualDiviner @Override public int cycleDirection(ItemStack itemStack) { + this.voidStoredLocation(itemStack); int direction = this.getDirection(itemStack); if(direction < 4) diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java b/src/main/java/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java index 08a402b4..d87d812e 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java @@ -91,11 +91,11 @@ public class SacrificialDagger extends Item @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - if (this.canUseForSacrifice(stack)) - { - player.setItemInUse(stack, this.getMaxItemUseDuration(stack)); - return stack; - } +// if (this.canUseForSacrifice(stack)) +// { +// player.setItemInUse(stack, this.getMaxItemUseDuration(stack)); +// return stack; +// } if (!player.capabilities.isCreativeMode) { diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectEllipsoid.java b/src/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectEllipsoid.java index ca2ccfcd..8fe1ca25 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectEllipsoid.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectEllipsoid.java @@ -1,22 +1,24 @@ package WayofTime.alchemicalWizardry.common.rituals; +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.api.Int3; import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; import WayofTime.alchemicalWizardry.api.rituals.RitualComponent; import WayofTime.alchemicalWizardry.api.rituals.RitualEffect; import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler; import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; -import WayofTime.alchemicalWizardry.common.tileEntity.TESpectralBlock; -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -import java.util.ArrayList; -import java.util.List; public class RitualEffectEllipsoid extends RitualEffect { @@ -60,42 +62,131 @@ public class RitualEffectEllipsoid extends RitualEffect entityOwner.addPotionEffect(new PotionEffect(Potion.confusion.id, 80)); } else { - int refresh = 1000; - int j = (int) (world.getWorldTime() % (ySize * 2 + 1)) - ySize; - for (int i = -xSize; i <= xSize; i++) + tile = world.getTileEntity(x, y-1, z); + if(!(tile instanceof IInventory)) + { + return; + } + + ItemBlock placedBlock = null; + ItemStack stack = null; + int slot = 0; + IInventory inv = (IInventory)tile; + + while(slot < inv.getSizeInventory()) + { + stack = inv.getStackInSlot(slot); + if(stack == null) + { + slot++; + continue; + } + + if(stack.getItem() instanceof ItemBlock) + { + placedBlock = (ItemBlock)stack.getItem(); + break; + } + + slot++; + } + + if(placedBlock == null || stack == null || slot >= inv.getSizeInventory()) + { + return; + } + + int count = 10; + + Int3 lastPos = this.getLastPosition(ritualStone.getCustomRitualTag()); + + int i = -xSize; + int j = -ySize; + int k = -zSize; + + if(lastPos != null) + { + i = Math.min(xSize, Math.max(-xSize, lastPos.xCoord)); + j = Math.min(ySize, Math.max(-ySize, lastPos.yCoord)); + k = Math.min(zSize, Math.max(-zSize, lastPos.zCoord)); + } + + boolean incrementNext = false; + + while(j <= ySize) { + if(y + j < 0) + { + j++; + continue; + } + while(i <= xSize) { - for (int k = -zSize; k <= zSize; k++) + while(k <= zSize) { if (Math.pow(i * (ySize - 0.50f) * (zSize - 0.50f), 2) + Math.pow(j * (xSize - 0.50f) * (zSize - 0.50f), 2) + Math.pow(k * (xSize - 0.50f) * (ySize - 0.50f), 2) <= Math.pow((xSize - 1 + 0.50f) * (ySize - 1 + 0.50f) * (zSize - 1 + 0.50f), 2)) { + k++; continue; } if (Math.pow(i * (ySize + 0.50f) * (zSize + 0.50f), 2) + Math.pow(j * (xSize + 0.50f) * (zSize + 0.50f), 2) + Math.pow(k * (xSize + 0.50f) * (ySize + 0.50f), 2) >= Math.pow((xSize + 0.50f) * (ySize + 0.50f) * (zSize + 0.50f), 2)) { + k++; continue; } + + if(incrementNext || count <= 0) + { + this.setLastPosition(ritualStone.getCustomRitualTag(), new Int3(i, j, k)); + return; + } + + count--; Block block = world.getBlock(x + i, y + j, z + k); - - if (block.isAir(world, x + i, y + j, z + k)) + + if (!block.isAir(world, x + i, y + j, z + k)) { - TESpectralBlock.createSpectralBlockAtLocation(world, x + i, y + j, z + k, refresh); + k++; + continue; } else { - TileEntity tile1 = world.getTileEntity(x + i, y + j, z + k); - if (tile instanceof TESpectralBlock) + //This is pulled from the ItemBlock's placing calls + int i1 = placedBlock.getMetadata(stack.getItemDamage()); + int j1 = placedBlock.field_150939_a.onBlockPlaced(world, x + i, y + j, z + k, 0, 0, 0, 0, i1); + + if (placedBlock.placeBlockAt(stack, null, world, x + i, y + j, z + k, 0, 0, 0, 0, j1)) { - ((TESpectralBlock) tile1).resetDuration(refresh); + world.playSoundEffect((double)(x + i + 0.5F), (double)(y + j + 0.5F), (double)(z + k + 0.5F), placedBlock.field_150939_a.stepSound.func_150496_b(), (placedBlock.field_150939_a.stepSound.getVolume() + 1.0F) / 2.0F, placedBlock.field_150939_a.stepSound.getPitch() * 0.8F); + --stack.stackSize; + if(stack.stackSize <= 0) + { + inv.setInventorySlotContents(slot, null); + } + + this.setLastPosition(ritualStone.getCustomRitualTag(), new Int3(i, j, k)); + + incrementNext = true; + SoulNetworkHandler.syphonFromNetwork(owner, cost); + } - } + +// world.setBlock(x + i, y + j, z + k, Blocks.stone); + + k++; + } } + k = -zSize; + i++; } + i = -xSize; + j++; + this.setLastPosition(ritualStone.getCustomRitualTag(), new Int3(i, j, k)); + return; } - - - SoulNetworkHandler.syphonFromNetwork(owner, cost); + + this.setLastPosition(ritualStone.getCustomRitualTag(), new Int3(-xSize, -ySize, -zSize)); } } @@ -153,4 +244,23 @@ public class RitualEffectEllipsoid extends RitualEffect return ellipsoidRitual; } + + public Int3 getLastPosition(NBTTagCompound tag) + { + if(tag != null && tag.getBoolean("hasWorked")) + { + return Int3.readFromNBT(tag); + } + + return null; + } + + public void setLastPosition(NBTTagCompound tag, Int3 pos) + { + if(tag != null) + { + pos.writeToNBT(tag); + tag.setBoolean("hasWorked", true); + } + } } diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java b/src/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java index cb221efb..3c61449c 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/spell/complex/effect/SpellHelper.java @@ -816,7 +816,7 @@ public class SpellHelper } //Adapated from Enhanced Portals 3 code - public static Entity teleportEntityToDim(World oldWorld, int newWorldID, int x, int y, int z, Entity entity) + public static Entity teleportEntityToDim(World oldWorld, int newWorldID, double d, double e, double f, Entity entity) { if (entity != null) { @@ -838,11 +838,11 @@ public class SpellHelper player.playerNetServerHandler.sendPacket(new S07PacketRespawn(player.dimension, player.worldObj.difficultySetting, newWorldServer.getWorldInfo().getTerrainType(), player.theItemInWorldManager.getGameType())); oldWorldServer.removeEntity(player); player.isDead = false; - player.setLocationAndAngles(x, y, z, player.rotationYaw, player.rotationPitch); + player.setLocationAndAngles(d, e, f, player.rotationYaw, player.rotationPitch); newWorldServer.spawnEntityInWorld(player); player.setWorld(newWorldServer); config.func_72375_a(player, oldWorldServer); - player.playerNetServerHandler.setPlayerLocation(x, y, z, entity.rotationYaw, entity.rotationPitch); + player.playerNetServerHandler.setPlayerLocation(d, e, f, entity.rotationYaw, entity.rotationPitch); player.theItemInWorldManager.setWorld(newWorldServer); config.updateTimeAndWeatherForPlayer(player, newWorldServer); config.syncPlayerInventory(player); @@ -859,7 +859,7 @@ public class SpellHelper player.timeUntilPortal = 150; } player.worldObj.theProfiler.endSection(); - newWorldServer.playSoundEffect(x, y, z, "mob.endermen.portal", 1.0F, 1.0F); + newWorldServer.playSoundEffect(d, e, f, "mob.endermen.portal", 1.0F, 1.0F); return player; } else { @@ -870,7 +870,7 @@ public class SpellHelper Entity teleportedEntity = EntityList.createEntityFromNBT(tag, newWorldServer); if (teleportedEntity != null) { - teleportedEntity.setLocationAndAngles(x, y, z, entity.rotationYaw, entity.rotationPitch); + teleportedEntity.setLocationAndAngles(d, e, f, entity.rotationYaw, entity.rotationPitch); teleportedEntity.forceSpawn = true; newWorldServer.spawnEntityInWorld(teleportedEntity); teleportedEntity.setWorld(newWorldServer); @@ -878,7 +878,7 @@ public class SpellHelper } oldWorldServer.resetUpdateEntityTick(); newWorldServer.resetUpdateEntityTick(); - newWorldServer.playSoundEffect(x, y, z, "mob.endermen.portal", 1.0F, 1.0F); + newWorldServer.playSoundEffect(d, e, f, "mob.endermen.portal", 1.0F, 1.0F); return teleportedEntity; } } @@ -896,11 +896,11 @@ public class SpellHelper */ public static float applyPotionDamageCalculations(EntityLivingBase entity, DamageSource p_70672_1_, float p_70672_2_) { - if (p_70672_1_.isDamageAbsolute()) - { - return p_70672_2_; - } - else +// if (p_70672_1_.isDamageAbsolute()) +// { +// return p_70672_2_; +// } +// else { if (entity instanceof EntityZombie) { diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TETeleposer.java b/src/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TETeleposer.java index 8043a587..1aacdfc5 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TETeleposer.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TETeleposer.java @@ -14,6 +14,7 @@ import WayofTime.alchemicalWizardry.common.NewPacketHandler; import WayofTime.alchemicalWizardry.common.block.BlockTeleposer; import WayofTime.alchemicalWizardry.common.items.EnergyItems; import WayofTime.alchemicalWizardry.common.items.TelepositionFocus; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; public class TETeleposer extends TEInventory { @@ -166,6 +167,26 @@ public class TETeleposer extends TEInventory entityplayer2.worldObj = worldF; entityplayer2.setPositionAndUpdate(entityplayer2.posX + this.xCoord - xf, entityplayer2.posY + this.yCoord - yf, entityplayer2.posZ + this.zCoord - zf); } + }else + { + iterator1 = list1.iterator(); + iterator2 = list2.iterator(); + + while (iterator1.hasNext()) + { + entityplayer1 = (EntityLivingBase) iterator1.next(); + SpellHelper.teleportEntityToDim(worldObj, worldF.provider.dimensionId, entityplayer1.posX - this.xCoord + xf, entityplayer1.posY - this.yCoord + yf, entityplayer1.posZ - this.zCoord + zf, entityplayer1); +// entityplayer1.worldObj = worldF; +// entityplayer1.setPositionAndUpdate(entityplayer1.posX - this.xCoord + xf, entityplayer1.posY - this.yCoord + yf, entityplayer1.posZ - this.zCoord + zf); + } + + while (iterator2.hasNext()) + { + entityplayer2 = (EntityLivingBase) iterator2.next(); + SpellHelper.teleportEntityToDim(worldF, worldObj.provider.dimensionId, entityplayer2.posX + this.xCoord - xf, entityplayer2.posY + this.yCoord - yf, entityplayer2.posZ + this.zCoord - zf, entityplayer2); +// entityplayer2.worldObj = worldF; +// entityplayer2.setPositionAndUpdate(entityplayer2.posX + this.xCoord - xf, entityplayer2.posY + this.yCoord - yf, entityplayer2.posZ + this.zCoord - zf); + } } } } diff --git a/src/main/resources/assets/alchemicalwizardryBooks/lang/en_US.lang b/src/main/resources/assets/alchemicalwizardryBooks/lang/en_US.lang index 764a2205..82bda37d 100644 --- a/src/main/resources/assets/alchemicalwizardryBooks/lang/en_US.lang +++ b/src/main/resources/assets/alchemicalwizardryBooks/lang/en_US.lang @@ -28,6 +28,32 @@ aw.entries.architect.bloodPack=It's so simple! I've discovered a way of obtainin aw.entries.architect.fivePeople=Or not, as it seems Fate has other far more interesting plans for us. Today we had a knock on our door while I was making the last of the runes, and after opening it was greeted by three apparent orphans. The two boys in the front looked like they were brothers, or at least close relatives. The girl hiding behind them on the other hand had a very different hair and eye color, so relation was unlikely at best. All of them were covered in dirt, clothing ripped, torn, and patched with various levels of skill. The one on the left had an old sword with a chipped blade on his side, was slightly thinner and taller then the his brother, had a few deep scars that looked recent, long and messy dark brown hair, and was looking at me with a kind poker face. The brother looked more muscled, and was staring at me with a very analytical eyes and a similar poker face, his hair was slightly shorter and lighter then his brother. From what I could see of the girl, she had a simple dress on that was almost caked in dirt and dried mud. The fabric near her elbows was becoming thread bare, and a large rip near the bottom of the dress exposed some of her right leg. Her hair was a light blond, almost pale white color, but the most shocking feature was her eyes... I haven't seen haunted eyes like that in years, and last time it was in a mirror. From the looks of them, all of them hadn't ate anything in days and seemed to have everything they own on their bodies or in the simple packs on their backs. I asked them if there was anything they needed, to which the elder brother said they were looking for master Magus. I called Magus to the door, visitors being a rare thing as it stands with ones who ask for him by name and not clearly mages being rarer still. Five minutes later we all sat in the main room, eating simple sandwiches I had prepared for us all at the request of Magus. Needless to say, this day was not going as expected. Magus spent the next few minutes practically interrogating the elder brother , asking questions on both of our minds. As it turns out the two brothers, Vlad and Demier, use to be caravan traders, eldest a alchemist with basic knowledge of potion brewing, younger with enough mana and training already to cast basic spells. The girl on the other hand had a story all her own. From what the brothers had managed to gather, her village was raided like my own was and she was evidently the sole survivor. What shocked me was when they said she was found wandering the ashs, demons having left hours before without so much as a scratch on her body. Vlad was with the traders when they found her, and he was forced to leave them if he wanted to help the girl named Bella. Their story seemed to win Magus over, as he told them he would try to do what he can for them.. Not long after that, Magus asked me to help him do some shopping for our new guests. On the way to the village, Magus asked me what I thought of the three. "I can't say I believe all their story, but I also don't think their lying. Did you notice the girls eyes? Haven't see a look like that since...". Magus finished for me with "Your own?". I nodded at the dark memories of that time. We continued going over the details of their story, but we agreed that just leaving them in the cold wasn't an option worth considering. We decided to at least try to keep our recent endeavors into blood magic a secret from them, but when push comes to shove I think we might have to let them in on the secret. Magus let out a long sigh. "It's been years since I had to juggle this many apprentices at once. I'm going to need your help training them. But something tell me that we're going to be learning as much from them as they will from us..." I asked him why he felt that way, and he said it was just a gut feeling. I must say I had a similar feeling. Things like this don't happen without reason, and of all mages to come to they stopped at our door, something far easier said then done. An hour later we returned home, both our arms heavy with fabrics, food, and other necessities that we will need to take care of the new apprentices. I watched in amazement as the three ate, trying to make up for days with little food all at once. After that, Magus and I laid the three on various chairs and couches to rest, the strain of travel catching up with them. While Magus dug around looking for a few of his old things that we'd soon need, I started creating some new clothing from enchanted fabric for the three to replace their current worn and ratty clothing. Now that that is done, I should try to get some sleep. Something is telling me tomorrow is going to be quite busy. The Early this morning Magus and I started carving out the earth for the three new bedrooms, since the old ones Magus use to have had since been converted into a storage closet, a alchemy lab, and small study. It didn't take nearly as long as I expected with Magus using a few spells to clear away earth while I went behind using an equal trade foci to transmute it into stone brick before gravity caught on. Once that was done, Magus raised a few walls to separate the space into three rooms and a hallway. Only after that was done did I notice the three children had awoken, and were watching us as we worked. Magus told them that he had some spare furniture in some storerooms they could use, but sadly only knew of one bed. It didn't take long for them to decide Bella got the bed, the brothers would make do with a pillow and a blanket on the floor. After that we spent the rest of the day hunting for then moving furniture to their rooms, building little work areas and libraries for each of them. The following day was more of the same, with the evening filled with helping them find books to read from the grand library. Vlad grabbed as many alchemy books as possible, Demir took a few books on spell casting, and Bella took a Lexica botanica to read through. Later this evening, after the three had retired to their rooms, I sat in the main room with Magus, arms and legs aching from the heavy lifting of the last two days. I told Magus how I thought their rooms should be almost finished, and how I spent the last hour before they retired just answering seemingly endless questions. "I'm sure. I've gone through the same more then once, when I have apprentices new to magic. You were the same, I recall." I opened my mouth to protest, but closed it as I thought back to those days. I decided I probably was as bad as them, and left it at that. It's been just over a week, and the three have settled in nicely. They join Magus and I in morning exorcising, have started studying like true scholars, and have calmed the hungry nodes in their stomachs(Well, Vlad and Bella have. Demir on the other hand is another matter, but I feel he will always be like that.) Unfortunately, like true scholars and mages they've stumbled into places we didn't want them to go. Vlad has created a chemistry set that uses life essence from a blood orb as a fuel source, Demir has turned an old table into a way to use life essence to cast powerful spells, and Bella... She's left me questioning what I know about demons, after taming one and using a blood orb to bind it to her. All three of them have stumbled blindly into blood magic, and now I don't think we'll be able to stop them. Magus and I have agreed to give them a choice in whether they are blood mages or not, but I've seen the light in their eyes... I can't imagine any of them saying no. To seal their dedication to the art, we will have them make blood orbs of their own to use. aw.entries.architect.tier3=Even with all the chaos of the last week I've managed to finish the altar construction, and it has been more successful then I predicted. With full access to twenty eight runes, each heart is now worth over seven hundred LP. I've already started prepping to try again with the gold block, having a few instant healing potions at hand. I got a brief glimpse with my sigil of sight, and this transmutation will take twenty five thousand LP to finish, over double what the altar can hold! Writing this down does give me an idea, however.... I'll need to look into it further once I have finished making this. aw.entries.architect.magicianOrb=It was close, but I finished the orb today. I was down to the last of my three potions and barely had the strength left to hold the knife, but I pulled through and finished my shiny new blood orb! I've already used it to craft a few things I had made before, and extra lava and air sigil, and it handles it all with such ease! Now that this is finished, I have a small list of ideas to go through... To start off the process, I want a stronger slate. As it stands the reinforced type is cracking under the strain I'm starting to place on it. Well, I got a new slate type when I last upgraded the altar... Let's see if it works again. It does! A reinforced slate in a tier three altar with around five thousand LP makes a new slate... I'll call it an imbued slate for now, and come up with a better name later. +aw.entries.architect.newRune.1=First up to the drawing board: Rune of Capacity. The basic idea is simply to add more room to the altar, so a greater amount of LP can be stored at once to make bulk crafting or difficult crafts easier. Each rune adds 1.5K to the altar's main tank capacity, but what is interesting is that the "Buffer" tanks expend as well to a lesser degree. From a few trial tests(My back is starting to hurt from moving runes all day), the buffer tanks are always ten percent of the main tanks size. This will be something to keep in mind later. After helping patch a hole in the wall caused by Demir accidentally unleashing a spell, then helping Vlad dispose of a few failed alchemical "Experiments", I finally have an hour to myself to work on my ideas for runes. After the success of the last documented attempt, I've been on a bit of a failure streak. I've have runes fail to do anything, crumble to dust, blow up, and one attempt turned into cheese(I asked Magus about this, and said this isn't the first time he's seen that happen to a magical experiment. However he is just as stumped as I am over why it is always cheese, of all things). Thankfully, I finally found something that doesn't need a blast shield to use or starts growing mold after a while. +aw.entries.architect.newRune.2=Named the dislocation rune, it's only function is to increase the rate the life essence flows into and out of the buffers. Each rune increased the transfer rate by twenty percent per rune, and this effect stack manipulatively. That sounds great, until you realize the first rune only raises the transfer rate by four LP a second. Needless to say, your going to need around a dozen of these runes before you have any noticeable impact on the transfer rate. While these runes make it possible to automate the creation of slates by storing the life essence outside the altar, you're going to be sacrificing speed, capacity, and generation efficiency for this. +aw.entries.architect.magnetism=It's been a few weeks since I last made any headway with my blood magic research, needing to help with the tutoring of Vlad, Demir and Bella along with my normal duties as a mage. I've had to leave twice this month in order to sort out some mess or another, whether is be a helping with a pack of wild wolves or a bad harvest. Today, however, I managed to get some inspiration for a new sigil. When I was in the market buy more food, I noticed two children playing with a rock that was slightly magnetic. They were just running around, seeing what it would stick to and cheering when it did, or seeing how close they could push it to something before it pulled itself closer... That is what sparked my idea: A sigil that acts as a magnet, pulling items off the ground closer to you. In theory I could rig the magic on it to apply a similar effect to all items and not just metallic ones... Three hours later, and my sigil is finished. It needs a great deal of mass in the form of four iron blocks, along with the classic gold plating infused into an imbued slate(Drat, I never did work on a better name). This sigil needs to be toggled to activate, and while active will draw all nearby items to the user if they have room for it. Simple, but very effective.... +aw.entries.architect.phantomBridge=I've been asked to visit a small town to settle a few complaints that have been voiced lately by them, and am currently surprised that a closer bridge isn't one of them. I've had to walk three miles to cross this river, and now must walk another two tomorrow to reach them. If only I didn't need a bridge, or had thought to grab my air sigil(I still have a bruise from the last landing I had with it, so I wasn't keen on using it again so soon.) Wait... If if I had a bridge that went with me? Better yet, what if I had a bridge that formed under my feet as I walked? Yes, that would be amazing... I'm back home after dealing with a feud over who really owned a cow(Answer: Neither of them, it wondered into town and they both thought it was one of their own), and have set out my work station to try and capitalize on my idea. I'd want the sigil to place blocks that are phantasmal, only there temporarily before fading into nothing after I leave. For that I'd need a special material... Soul sand might work... Add in a little stone for structuring around an imbued state, then use the orb... Done! Now then, for a test run... Drat, I left the auto-writing quill running again. It works better then I hoped! The sigil creates a small five by five platform under me, staying at the same elevation as I walk through the air. Not only that, but I've tweaked it so that holding shift lowers the platform by one under you, and the blocks it makes can be easily broken for a quick decent. Not only that, but it will only spawn the blocks if you are on the ground, jumping or flying will not cause the bridge to reform until you touch solid ground, unless you hold shift forcing it to form under you. And for one final convenience touch, right clicking a phantom block with a block replaces it with that block, making roofs and platforms far easier to build. That should be enough for one night, I'll dub this sigil "The Phantom Bridge" and call it a night. +aw.entries.architect.holding=Vlad asked me to help him today, requesting my assistance learning the sigils. Part way through he asked if it was ever burdensome having so many on me at once... And I told him it was. Now with a little of his help I've created the sigil of holding, and it... Well, it holds other sigils. Shift right clicking with it while another sigil is in your inventory will cause it to absorb that sigil, taking all of it's powers and allowing you to swap between them with a shift right click. Unfortunately, it can't hold that many sigils(Only four) and not every sigil wants be become a part of it. Also, I had to ask Master Magus for help removing sigils from it as it refused to let them go. For this task he created the ritual of unbinding, a rather grand looking ritual for such a simple task I must say. +aw.entries.architect.elementalAffinity=Demir hurt himself again today with a fire spell that backfired(Well, it worked perfectly if setting the ground around him on fire was the intention). In hopes of stopping further injuries, I have infused the powers of the water, lava, and air sigil into an imbued slate. This seems let the sigil act as protective aura around the user, shielding them from drowning, burning, or falling damage at a high over time LP cost. Since I asked Demir to use it he hasn't burned or bruised himself, but did pass out once from a lack of LP to fuel it. Sometimes solving one problem only makes more... But he has been learning, and I've been amazed at what his spells could do. Recently he made a long range teleportation spell and a flight spell not unlike the air sigil, but far faster. +aw.entries.architect.ritualStones=After a few days of nothing, I turned my attention to the construction of Master Magus's ritual stones. Looking them over, I might be able to replicate their usage and features using reinforced slates and obsidian... Master stone, more complicated then the average ritual stone might be possible if I use my magician's blood orb and four ritual stones to handle the complex nature of it, along with a little more obsidian... Yes, yes it should be possible to recreate them without sacrificing any usage of them. After asking him how he originally made the elemental scribing tools, I believe I can also replicate the manufacturing of them in the blood altar... But it looks like the dusk inks are too complex for this altar to handle, creating an ink closer to dark gray then midnight black... Perhaps I'll have the power to form them later, for now these four will work. +aw.entries.architect.bloodLamp=I had a flash of inspiration today (Quite literally, as watching a few town guards light a replacement torch nearly blinded me from the sudden light). They spend so much on coal and charcoal to fuel those things... What if I had a simple replacement? A near invisible light source that never goes out, can be made almost endlessly, and can easily be carried on your person? Never again would you need to place a torch to light a room, and they can ruin a rooms look(Not to mention the fire hazard they pose, ruining the look even more. "Charred mess" is never in style.). Harnessing the power of glowstone by running a "Current" of LP through it, I can create a sigil that fires a projectile that upon landing forms a stable light source par with that of torch. The only sign of its existence is the light it gives off and faint red particles. While it uses a small amount of LP, the advantage over carrying stacks of torches is enough to justify it. +aw.entries.architect.boundArmour.1=Today Magus gave us a lecture on armors, going over the practical applications(Protection from large pointy sticks shoved in your direction and holding magic to improve the abilities of the wearer), typical construction of armor, and notable armors through the ages (And the very fatal flaws that their owners eventually discovered, much to their short lived dismay). Seeing and reading all this, I feel it is time I take my own try at this art using blood magic. Testing a wide array of materials and structures, I discovered a process to make an almost indestructible metal using a casing filled with life essence with glass hardened with diamonds and reinforced with bright red blood shards(More on their properties later) Magus showed me a while back (Making the prototypes of this armor took longer then you would believe). The process needs the soul of a demon bound to it, but this seems to be a small price to pay. +aw.entries.architect.boundArmour.2=To start, you need to make a "Soul armor forge". This block summons the demon soul and controls the transformation of the "Socket" blocks into proper armor. By placing the filled socket blocks around the soul armor forge in roughly the shape of the armor piece you want with the forge in a gap, you set what it makes. Right clicking the forge will then finish the process, creating the armor piece and binding the demon to the shards inside the armor. You will need to bind the armor to yourself, allowing the armor to drain your network to repair any damage it takes(Another benefit of using blood shards in the creation). After donning the armor(Making a few adjustments, still refining the creation process), I asked Magus to help test just how resistant this armor really is. Several nasty bruises later, we have decided this armor shields the wearer from ninety percent of damage from mundane damage sources. What is interesting is that it also blocks roughly eighty percent of magical damage, meaning many armor piercing methods are far weaker. The metal also doesn't seem to hold enchantments, and the demons inside reacts quite negatively to our attempts to do so. Using the ritual of unbinding, we are able to deconstruct the armor back into the component sockets and anything that was inside them. I mention this because we seem to be able to "Augment" the armor before creation by adding a combination of sigils, blood shard, and an orb. The sigil added to the armor piece(You can add anything to the socket by right clicking with the item in hand) determines the effect, and adds a passive cost to wearing the armor piece. The blood shard lets you add an upgrade, the weak shards we have at our disposal only allow one upgrade but in theory a stronger shard should allow more to be added. Finally, the orb seems to lower the cost of the upgrade. Every sigil seems to have something to do with the normal effect of the sigil, either giving you a passive bonus or having the effect of the sigil happen automatically around you. A few examples are a water sigil making you immune to drowning, the fast miner always active, and a green grove sigil acts around you. +aw.entries.architect.sanguineArmour=I've managed to use my new found knowledge of armors and experience making bound armor to try and improve thaumium armor using blood magic. By throwing goggles of reviling or thumium chestplate, leggings, or boots the ritual transform the armor into a "Sanguine" version, with a small vis discount and protection par that of pure diamond. What is really interesting is that this armor can be augmented with runic shielding, and then socketed into bound armor in the same fashion as a sigil to pass on the runic shielding, with the bonus that adding the sanguine helm to the bound helm well allow the wearer to see things like aura nodes as if you had goggles on. I should note that you can only socket a sanguine armor piece into a same armor type(Helm in the helm, boots in the boots...), and that any vis discount is lost when you do this. +aw.entries.architect.soulSuppress=Having the armors special effects all the time has become a little bothersome. To deal with this I have managed to create an "Armor Inhibitor" to repress the special effects it offers in the cases they are more bothersome then helpful. Unfortunately, it is a bit all or nothing in this regard. +aw.entries.architect.ritualDiviner=It's coming up to the three year anniversary of Magus taking my on as an apprentice. Time seems to have flown by while I've been engrossed in research on applications of blood magic and working with Magus... I should make a gift for Magus to as a thank you for these last few years. Considering the complex nature of his rituals, an aid to building them might just be the perfect gift... Ugh... Making a way to build rituals easier proved to be quite the task(And it reminds me of the rule of conservation of effort...), but I finally have it ready in time for the anniversary. While it isn't cheap to craft(Costing the four elemental inks, four diamonds and an emerald), I've gone to pains to make it easy to use. Shift right clicking will cycle through a preset list of rituals, and shift right clicking on a block with also rotate the direction the ritual will face(For anything like the ritual of speed, where that matters). Shift left clicking will go through this list in reverse, for those times you accidentally go past the one you want. By normal right clicking on a master ritual stone the diviner will take stones out of your inventory, place then in the world and ink them to build the set ritual. To make it clear it is working, it emits green particle effects whenever it places a block successfully. However, it can only place a block in an empty space. Anything at all in the way will stop the process until the obstruction has been removed. It is a small annoyance, but nothing major enough to risk breaking the diviner(Again). Magus adores his gift, having rituals faster and easier to build is the one thing he could actually use(That he doesn't already have). The fact it makes anyone who uses rituals lives easier is a just a bonus at this point. As it turns out, he got me a gift as well: A pair of ichorium wand caps, the one thing I had been dreaming about for a long time... +aw.entries.architect.bloodShard=Reading through my older entries for inspiration on things to do with our current power(I believe we have started reaching the limit, struggling to stretch what we have as far as it will go) I noticed that I "Might" have forgotten about covering the blood shards like I said I would a few months ago... I'd best start from the top. Blood shards, as Magus has likely stated already, are fragments left behind after vanquishing a hostile mob with a demonic weapon(The Bound sword or Energy Blaster). Upon close inspection, I see small strands that looks shockingly like that of our soul networks... Well, in theory anything with a "Soul" could have a network, but this is a surprise nonetheless. Because of this, the small shards contain a vast pool of energy that our magics should be able to tap into. A rather unfortunate first experiment involving stone showed that this energy can be wielded to create or transform matter(I believe several others have come across similar principles to convert energy into matter using science). I say unfortunate because I was stuck inside the lab's supply closet for a few hours to hide from the rapidly expanding stone as the released energy of the shard grew the stone to thirty two times it's former size, filling the rooms and pushing out the open door and into the hallway. (Further crafting of blood stone was done outside after that...) But regardless, the blood shards potential energy and connection to the soul network is how we manged to form bound armor so easily. Thinking about it... Blood shards might be the answer to our power problems. The last time we needed an upgrade, we used something related to the altar... Perhaps using something related to the soul network is the next step? +aw.entries.architect.tier4Altar.1=Once more I must make a progress update, as daily life as taken up most of my time these last few weeks. Magus has started offloading some of his work onto us, dealing with small problems and formal matters, bandits and demons, and general mage work. I have been able to do a little work on the altar or blood magic in general over the last few months because of this. Thankfully, we've burned though most of the grunt work that has piled up and I now have some time to conduct our research. Magus and I have spent the last week doing the calculations for upgrading the altar, determining that bloodstone should work for the capstone, and now it is just a matter of seeing how many runes we can get away with adding without nasty side effects or it all just blowing up(The other three have placed bets on this, I believe). +aw.entries.architect.tier4Altar.2=After another few weeks of testing, balancing, and error we have finished the altar upgrade. This new tier adds twenty eight more runes to the altar's structure(Seven on each side, for a grand total of fifty six), and four pillars capped with large bloodstone brick(This was the best material we could find that doesn't expire or fall apart. Or, in one memorable case, actively try to kill us). With these additional runes we are projected to be making roughly one thousand three hundred LP for every heart sacrificed, a hefty improvement from our seven hundred from before. Unfortunately more work has come in for us, so once we have the altar built it will be some time before we can focus on the hunt for the material for the orb. Current plan is to start with precious materials like before, and work from there. Ah, innovation... Ten percent work, fifteen percent knowledge, five percent patience, seventy percent trying random things to see what happens. More work then expected flooded in at once, and we have been struggling to keep up with it all. Vlad has been acting as a healer and doctor trying to deal with a plague that has going around (Caused by a witch-in-training using the wrong vial in a love potion), and has managed to keep it from running wild. Demir has been clearing out known bandit camps, and has enjoyed a chance to test out the spells we've helped him build(Only in the mage guild are bandits considered an endangered species. This is in part due to the average intelligence level of said bandits, and thinking that an area where there are people who, sometimes quite literally, shoot fire out of their hands, mouths, and other places(Mostly the apprentice mages, as a joke or party trick that has often gone very wrong) is a great place to set up shop.). Bella meanwhile has been dealing with the demons that have been wondering in, the mage guild acting as a sort of beacon to them due to the thinness of the fabric of space here caused by countless magical experiments, both successful and not. Magus and I have been going through a huge pile of letters(Seriously, where are they all coming from, and how do I not notice the pile building up until it flows off the table?) from local villages and mages, ranging from simple questions about an issue or problem to requests for assistance in matters ranging from theft to flooding. We've been coordinating these issues, mapping out journeys to deal with as many as possible on one trip. As a reference point for how long it has taken us to deal with it all, dust has gathered on this book since the last time I wrote. Thankfully we've sorted out the letters and referenced the villagers to mages who are closer to them(Much to said mages chagrin), so it should be a while until this is an issue again... Thankfully all this time has left me with a few ideas for future projects. +aw.entries.architect.masterOrb=The others have tried countless gems and metals trying to create a new blood orb, all of them either did nothing or created a flawed orb(Cracked or chipped, extremely fragile or incomplete). But last night I had an idea from a dream... The weak blood shards were once part of a soul network, so what would happen if we tried to reforge it into a whole orb? It is better then any other idea we've had, so I might as well try... Success! While we did burn through several instant health flasks, we now have half a dozen new blood orbs. While we haven't named them yet, they are a true master piece... A Master blood orb, that name has a nice ring to it... I'm getting side tracked again, but I must remember to suggest this name to the others(It at least is better then the temporary name of "Shiny yellow blood orb"). With this new found power, I might be able to bring to life some of the ideas that have been just out of reach up to this point. The first interesting property of these new orbs has been shown in our bound armor. While lesser orbs simply lower the cost, this orb is able to negate it entirely! A simple upgrade, but a very useful one... Another altar tier, another slate tier. Dubbed "Demonic" after the insignia that has formed on it's surface, we should be able to put this to some good use... I've also noticed that a demonic slate can be used with a weak blood shard and master orb to "Grow" the shard making four more. Going over my earlier successful experiments, I might be able to tweak a few concepts used to achieve a new result. I'm starting with the fast miner, and if boosting my arms was this useful then what would happen if I augment my legs? Using cookies, sugar, and some of the normal materials I have created a new sigil. Time for a test run... Two hours(And two very sore legs) later, I've concluded the tests. The "Sigil of Haste" boosts the users leg muscles, allowing you to both run faster and jump higher then normal. The best part? It seems to stack with the effect of jump boost and speed(Which Vlad was kind enough to brew a potion for testing). Now then, I need a rest after all this... +aw.entries.architect.whirlwind=Continuing with my thought process of "Reworking the old", I have used a master orb, demonic slate, two ghast tears, and feathers to reform an air sigil. The "Whirlwind sigil" changes the core property of the air sigil to have the winds not effect the user by propelling them, but instead creates a bubble of wind around them pushing away many forms of projectiles. I should note that not all forms of projectiles can be pushed back by the winds, and it has a tendency to effect your own shots. It isn't perfect, but it is useful enough to have around in a pinch. +aw.entries.architect.compression=After hearing the local miners complain about always having to stop work because they've run out of space in their packs, I've built "The Sigil of "Compression". While active, the sigil will check your inventory for anything that can be compressed into a "Storage" block(A two by two or three by three recipe of that item that can then be crafted back into the item. An example is redstone into redstone block.) and squeezes it together for you. Simple, but extremely effective... I should note I added a few special cases to the sigil, such as glowstone dust to glowstone and a restriction to only compress cobblestone if you have more then a stack. +aw.entries.architect.severance=Bloody endermen... Magus sent me out to try and stock up on ender pearls, but the pests keep warping away from me only to pop up later(And almost always when I don't want them too). It is just after dawn, and I've only managed to bring back six pearls... But maybe that is enough. I recall seeing some research notes on endermen and how they are able to teleport somewhere in the library. It is only an idea, but it might be perfect for this task... Eureka! After reading through the notes, I worked out how endermen connect to The End as a power source for their teleportation. Using a few ender pearls and eyes of ender, I've completed a sigil that acts as a sort of "Signal blocker". In layman's terms, it disrupts the connection to The End and renders them incapable of any teleportation. Not only that, but it also prevents many forms of magic that relay in similar methods, such as Demir's spells and the barbaric(But nevertheless effective) act of throwing an ender pearl. From the light, I'd say it is almost sunset. Time for some well deserved payback... +aw.entries.architect.teleposer=After my research into the basics of teleportation, a thought struck me: As it stands we don't have an established transportation network for mages to use, instead using the long and winding roads or other means of land travel. Sure, a witch might have a few way stones or a broom and a spell caster has a convenient recall spell, but we don't have a dedicated transportation system. Considering how much Magus and I travel to deal with small matters, and how often mages visit each other it is a surprise no-one has built something like this sooner! After talking with Magus about this, it turns out something like this has been tried before. The main failing point each time was the limited number of people able to use the method established. (A thaumaturge rarely knows how a waystone works and so on.) This has prompted me to create a means of teleportation that, once properly set up, almost anyone can use if they know how to push a button. Further research into ender pearls is required... After close analysis, I've decided that my first priority should be the improvement of the base ender pearl. As it stands, they are a little too fragile and random for reliable long term transportation. By placing a pearl inside a T4 altar I have been able to refine it into a focus, stronger and more predictable then the base pearl. I am currently in the middle of creating a mechanism to hold and operate the more complicated bits of the process. My materials for this is mainly gold(A metal that hasn't shown any side effects to the ender energies used), two ender pearls(One input, one output), and the focus itself to handle the conversion. I've managed to finish building two of the "Transportation of matter across two relative positions devices", or teleposers for short. How they work is simple(-ish): To perform a teleport you need two teleporsers. Next, bind a teleposistion focus to one of them by right clicking on the teleposer, bind it to yourself by right clicking on anything else, then slot it into the second teleposer and apply a redstone signal. If the focus is bound to teleposer A and placed in B, then teleposer B is triggered with redstone, everything above A will move to B, and everything above B will move to A(I hope this is clear enough description, it is hard to put into word the process. If you try it yourself, it should be clearer.). This means that if you want a two way transport, you can have two foci(One in each teleposer) and trigger the one you stand on, one have one focus and always trigger the same teleposer. In theory, we could build a "Transport Nexus" by having an array of teleposers bound to the same one(One A, multiple B's, triggering the B's to do the transport). What is great about these teleposers is that they don't just transport people, but any mobs or blocks in range as well. It even functions on complex blocks like furnaces and chests! With a little redstone logic, amazing things should be possible with this simple(-ish) system! With the completion of the final prototype, I should get some sleep... A new day, a new idea! The basic teleposition focus only transports a one meter cubed area above it, but if I improve the focus a bit in the altar it will be able to handle a three meter area! Not only that, but it can be further boosted by adding a weak blood shard so it works in a five meter area, then these new demonic shards that Bella has been gathering for a final upgrade to seven by seven by seven area. I should mention that the cost of each transport is based on how much is moved, and how far it is moved. It also has the quirk of being unable to transport people or mobs across dimentions. +aw.entries.architect.suppression=After a recent flood where Magus built a ritual right in the middle of the village to save a huge chunk of it, I've decided to try and replicate the effect on a smaller, and much more portable, scale. Thus, I've made the first version of the "Sigil of Suppression". What it does, in layman terms(You don't wont me to get into the back end details involving temporary storage in a pocket dimension) is create a bubble around you that removes any liquids, replacing it all as you leave. Using this sigil, I was able to take a leisurely stroll under the nearby lake. I am glad I remembered to bring my elemental affinity sigil however, as the early prototype fail on the way back, so I had a very soggy trip home... I "Think" I found the cause of the issue, and have patched it. +aw.entries.architect.superiorCapacity=Taking a break from the sigils I've been making over the last few months(How time flies...), I have shifted my attention to improving the runes we have available for our altar. After going over the design of the capacity rune, I have found room for "improvement". I have that in quotation marks because it only becomes greater then normal capacity runes if you have more then fourteen of them. You see, the "Rune of superior capacity" adds ten percent to the altars capacity, and this effect stacks multiplicatively(Layman terms: The more of the rune you have, the stronger the next rune will be) instead of the normal capacity runes static rate. Powerful, if a niche rune. +aw.entries.architect.orbRune=Considering the amount of LP we burn through on a daily basis running our sigils, powering our spells, fueling the rituals, and feeding our tools and armor, it is a miracle we don't run out of LP more often then we do. Even with our soul network topped off with a master orb, we're tapped dry within a week. Just upgrading our orbs has served us so far, but that has shown to be too unreliable and a huge investment with the altar... Wait, we're always using our orbs to make runes to improve the altar, so why can't we make runes that let the altar improve the orb? It can't be a one way road, can it? Yes, if we tweak this here and shift pressure here... I'm rambling again, I must talk with the others about this! Yes, it works! By focusing the power of three blood orbs and using two demonic slates, we've created "The Rune of the Orb". This boost the altars ability to feed an orb(Think of it like pressurizing air, more of it in the same amount of space), letting it add an additional two percent per rune(Additive rate, so more runes won't change how much it adds). With our master orbs, one rune is an additional twenty thousand LP. While that doesn't sound like much(To think, I use to be limited to only five thousand...), consider the number of orb runes one altar can have... +aw.entries.architect.fieldTrip=After hearing the demands of the younger apprentices, we are leaving tomorrow for a quick tour of the magelands, and expect to be back by the end of this month. Talking with Magus, I agree that we've been pushing ourselves hard lately with work and research. A little rest during a vacation might be just the thing I need to gather ideas for future projects... It will also give me a chance to talk with other mages about setting up a teleposer network. It is a vacation, so a little work on side projects you normally don't have time for is normal right? Talking with Magus during the long hours on the road, a few details about the mage guild were covered on this horseback lecture. Largest of the "Nations", most of the tech focused nations won't touch this area due to the high levels of magic in the land, air, and water causing technology to become a bit more unpredictable(Read: Unstable and often highly explosive), and have instead left it in control of the mages. As a result of this, thousands of kilometers of land filled with river valleys, harsh deserts, frost and snow covered forests, fertile plains and countless other biomes have been untouched for us to expand into. To this day there are people who venture out into these untamed lands hunting fame and fortune clawing over mountains and through the ancient ruins that litter the area. However, the vast majority of settlements are close to the borders with the other nations, thriving off trade(Their gadgets might not function here, but the results are another mater. Most of the mining towns send out the harvested ores across the borders for processing). The last tally was done roughly five years ago, with the number of total settlements at around three hundred scattered thin across the mage guild. Of this, we have roughly seventy active mages and thirty classified as "Apprentices" to manage village needs and deal with problems as they arise. Generally one mage would managed half a dozen of the closest villages and any apprentices they take on comes from this area however, it was not uncommon for mages to offload work onto other local mages if they have not the time or expertise in the field and for them to take on students who seek them out as tutor. That's enough for tonight, my watch is almost over and I feel sleep calling me. I'll write down any more interesting details I learn tomorrow. Magus said we should reach another village tomorrow, and he knows an inn there that should take us in for the night(Just in time as well, I don't trust those clouds on the horizon). Today's trip was more of the same, ridding through a dense oak forest while Magus went over anything and everything about the area around us and the Mage guild in general. Mages seems to have a list of unwritten rules governing how to act, what to do, what to say... For example, it is recommend to live at least a mile and a half from the closest village. Far enough away that people won't bother you with trivial things and you keep a mysterious reputation with the people, but close enough to be convenient for buying what you need. Another example pertains to marriage: A mage is free to wed whoever they like(Even other mages), but the spouse is entitled to most decisions and any compromises favor the spouse. Being wed to a mage often causes problems for the spouse, often with relatives and friends, and is typically a huge adjustment. Doing anything to try and make it up to them is common, as the mage feels themselves a burden and cause for their loved one's strife. From what I've gathered and how Magus speaks about the topic, these are more general outcomes and human reaction to the same events that Magus has seen happen time and again instead of rules or traditions passed down from master to student. One final interesting fact is that most mages send their children to learn the art(If the child so chooses to take on magic, and the have the talent for it) with another mage, preferably one they have rarely or never met as to prevent any bias and favor. I was right about those clouds, and we have reached the small town of Salis soaked to the bone. We're all currently sitting by a fire in the Mundes inn letting our robes dry and bodies warm from the chilling rain(From the clinking outside, now hail). I plan on acquiring another books tomorrow, and writing any more facts I learn from this trip with Magus in it instead of spending the pages of this book(Already longer then I ever dreamed it would be). According to Magus, we should be able to meet another mage in two days time, a woman by the name of Athis who is skilled in botany and herbs(Any medicine made by her always trades for a fair few coins). On another note, what Magus said about about people being wary of mages is holding true. The common room has been divided into two parts since we got here: The side where we are, and everyone else who have gone a table or two away from us and keep glancing at us as if to make sure we don't do anything without giving them a chance to run. The owners of the inn, a small family known as the Eldritches, seem to be the only ones who don't seem to mind us. Their daughter, or at least someone the right age and look to be their daughter, happily walks up to us asking if we needed anything other then rooms while we rested. Vlad and Demir order food for us all, Magus inquired to the drinks available, while I have asked if she knew if the general store had any writing journals for sale. And now I'm at the point of writing things as they happen... I needs some sleep in a nice bed after all this riding(But it looks like Demir is more saddle sore then I am), and the inn keepers have giving us cheap logging in the attic with a few decent, if old mattresses in a warm room with a roof over our heads. We left the next morning after a short trip to the market(Where I managed to get a good deal on a fairly nice journal, and have already filled out a few pages on my watch last night), and now are almost at Athis's residence. We currently are taking a short rest to eat and have the horses cool off after a long trip before riding the last leg of the journey after dusk has set. I'll detail anything interesting that happens. Talking with Athis, who I have already detailed in the other book along with most of our conversation, I managed to steer the conversation to how often she needs to travel for herbs, and if she has ever been in a situation where she can't get access to anything she needs but another mage might have an abundance of. As a response, she handed me a list of everything she buys when ever possible because of how rare it is here and the versatility or uses of it. The list was ten centimeters thick. Seeing a chance to get another mage's opinion, I mentioned a recent discovery in the field of magical transportation see might be interested in seeing. At this point, she gave me a wary eye and said she still has a bag of purple chalk and a stack of waystones from the last person who said that. Inviting her outside for a demonstration using a few of the teleposers I had packed, I showed step by step the process and how simple it was to use.(It took her a moment to recover from the initial shock of teleporting, but now she takes it in her stride.) Going over a few more details inside with hot tea, I asked if she would be interested in us setting up a link in the area nearby for her to use as a means of transport. Frankly, I was nerves enough at this point that I thought see would just laugh at my new goal. Instead, she was almost begging me to set a few up around a few locations several hundred kilometers apart. At this point I felt comfortable to tell her about my grand plan for setting up one of these near every mage in the guild and at some important points, so the days of needing to travel day and night to reach another mage would be over. Not only was she on board with the idea, she even offered to help us set them up if it meant that it would be ready faster! We spent the next few hours talking about this late into the night, covering little details and about enlisting the help of other mages to set it up. +aw.entries.architect.bindingKey=Well, this has been an interesting trip... We've been visiting every mage we pass, talking and showing off the boons of our blood magic. Most of them have been extremely accepting of our arts, and the ones that haven't been at least aren't opposed enough to get violent about the subject(However, all of them are still welcome to the idea of a transport network). We have noticed one problem on our trip, however: We can't easily give people the things we've been working on, as they need LP to run it and it takes time to reach a point of being able to support the usage of them. We've gotten around this somewhat by binding the items we gave them to ourselves, but anything they make once we've left will be near worthless to them... THAT'S IT! I could make a device that mimics the binding of an item, copying a thread of our soul network to another device, so anyone can craft something new and have us power it. I can use a weak blood shard to hold the soul network thread that it uses to pass on the link... Yes, I should be able to make this easily. I really should have slept after getting home, instead of going straight to building something... It took me three hours to think of using gold for the "Key of Binding". Regardless, it has been finished. All you need to do is right click with it to set the original owner, then hand it off to the person you wish to use it. Then they right click with it, and it will bind the first thing it finds in their inventory without an owner to the person the key belongs to. While it's uses are limited, it is something you want to have around in case you ever need it. aw.entries.architect.= aw.entries.architect.= aw.entries.architect.= @@ -37,7 +63,6 @@ aw.entries.architect.= - guide.BloodMagic.entryName.architect.intro=A Classic Tragic Back-story guide.BloodMagic.entryName.architect.bloodAltar=The Blood Altar guide.BloodMagic.entryName.architect.soulNetwork=The Soul Network @@ -62,7 +87,30 @@ guide.BloodMagic.entryName.architect.sacrifice=Runes of Sacrifice guide.BloodMagic.entryName.architect.bloodPack=The Blood Letter's Pack guide.BloodMagic.entryName.architect.fivePeople=And Then there was Five guide.BloodMagic.entryName.architect.tier3=The Next Step: Tier 3 -guide.BloodMagic.entryName.architect.magicianOrb= +guide.BloodMagic.entryName.architect.magicianOrb=The Magician's Blood Orb +guide.BloodMagic.entryName.architect.newRune=New Runes +guide.BloodMagic.entryName.architect.magnetism=Sigil of Magnetism +guide.BloodMagic.entryName.architect.phantomBridge=The Phantom Bridge +guide.BloodMagic.entryName.architect.holding=Sigil of Holding +guide.BloodMagic.entryName.architect.elementalAffinity=Sigil of Elemental Affinity +guide.BloodMagic.entryName.architect.ritualStones=Recreating Ritual Stones +guide.BloodMagic.entryName.architect.bloodLamp=Shining a Blood Lamp +guide.BloodMagic.entryName.architect.boundArmour=Bound Armour +guide.BloodMagic.entryName.architect.sanguineArmour=Sanguine Robes +guide.BloodMagic.entryName.architect.soulSuppress=Suppressing the Soul +guide.BloodMagic.entryName.architect.ritualDiviner=The Ritual Diviner +guide.BloodMagic.entryName.architect.bloodShard=Blood Shards +guide.BloodMagic.entryName.architect.tier4Altar=The Life of a Mage - Tier 4 +guide.BloodMagic.entryName.architect.masterOrb=The Masters of the Tier 4 Altar +guide.BloodMagic.entryName.architect.whirlwind=Sigil of the Whirlwind +guide.BloodMagic.entryName.architect.compression=Sigil of Compression +guide.BloodMagic.entryName.architect.severance=Sigil of Ender Severance +guide.BloodMagic.entryName.architect.teleposer=The Teleposer +guide.BloodMagic.entryName.architect.suppression=Sigil of Suppression +guide.BloodMagic.entryName.architect.superiorCapacity=Rune of Superior Capacity +guide.BloodMagic.entryName.architect.orbRune=Rune of the Orb +guide.BloodMagic.entryName.architect.fieldTrip=A Field Trip +guide.BloodMagic.entryName.architect.bindingKey=The Key of Binding guide.BloodMagic.entryName.architect. guide.BloodMagic.entryName.architect. guide.BloodMagic.entryName.architect.